일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- IAC
- JavaScript
- 연산자
- Java
- Fluent-bit
- datastructure
- programmers
- lambda
- C++
- ansible
- MergeSort
- Kotlin
- redis
- 자료형
- datatype
- Spring Security
- zgc
- jvm
- If
- SpringBoot Initializr
- While
- Sprint Security
- g1gc
- JPA
- 기초
- quicksort
- Algorithm
- UserDetails
- For
- Class
- Today
- Total
목록전체 글 (78)
뭐라도 끄적이는 BLOG
리스트는 자료를 순서대로 저장하는 자료구조를 말한다. 여기서 '순서'는 '한 줄로 서기'에서 '한 줄'을 말한다. 즉, 여러 개의 자료가 일직선으로 서로 연결된(Sequential) '선형 구조'를 의미한다. 여기서 C언어에서 제공하는 배열을 떠올릴 수도 있다. 실제로 배열이 리스트를 구현하는 가장 직관적이고 단순한 방법이며 이를 ArrayList라고 부른다. 그리고 포인터를 이용한 방법이 있다. 포인터를 이용한 방법은 Node라는 특별한 자료구조를 이용하여 저장할 Data와 다음 Node를 가리키는 Link를 가지며 LinkedList라고 부른다. ArrayList ArrayList는 배열로 List를 구현한 형태를 말한다. 배열에서 리스트 자료구조를 구현할 때 몇 가지 고려해야 할 사항이 있다. 예를..
배열(Array)은 같은 자료형의 데이터를 메모리상에서 연속적으로 저장하는 자료형을 말한다. 이러한 연속된 각각의 값을 배열의 원소(Element)라고 한다. 위 그림은 int 자료형 원소가 4개 연속해 이어져 있는 1차원 배열을 나타내고 있다. int 자료형이기 때문에 자료 1개당 크기는 4바이트이다. 이제 이러한 배열의 이름을 key라고 하였을 때 C소스로 정의하면 다음과 같다. int key[4]; 위 C소스는 key라는 이름을 가지며 4개의 int자료형 원소를 가지는 배열을 정의하는 소스이다. 배열의 위치 인덱스는 0부터 시작이 되며 차례대로 key[0], key[1], key[2], key[3]이 된다. 배열의 원소의 개수가 4개이면 마지막 인덱스는 3이 되어 마지막 원소가 key[3]이다. 위..
컴퓨터 프로그램은 크게 2가지 공통점이 있다. 1. 컴퓨터에 의해서 실행되는 명령어들의 집합이다. 2. 명령을 수행하기 위해 내부적으로 여러 자료(Data, 데이터)를 저장한다. 즉, 프로그램은 내부적으로 자료(데이터)를 저장하고 이를 처리하기 위한 명령어들의 집합을 가지고 있다. 자료구조 자료구조는 컴퓨터에 자료(데이터)를 효율적으로 저장하는 방식을 말한다. 효율적인 자료구조는 컴퓨터메모리를 절약(Space Complexity)할 뿐아니라, 프로그램 수행 시간을 최소화(Time Complexity) 할 수 있다. 컴퓨터 명령 자체의 효율성을 증가시키기 위한 절차를 알고리즘이라고 하는데 효율적인 알고리즘이 가능하기 위해서는 먼저 효율적인 자료구조가 선행되어야한다. 자료구조의 설계는 보통 프로그램이 어떻게..
2계층의 역할은 노드와 노드사이에 데이터 전송을 담당하는 역할을 한다. 즉 가까이 있는 컴퓨터끼리 어떻게 데이터를 주고 받는지에 대한 계층이다. 우리 주변에서 Star형으로 연결된 공유기로 이루어진 LAN에서 같은 네트워크 상에 존재하는 여러 장비들 중에서 어떤 장비가 어떤 장비에게 데이터를 전달할 때 사용된다. 2계층은 전기 신호를 모아 데이터 형태로 처리하므로 데이터에 대한 에러를 탐지하거나 고치는 역할을 수행할 수 있다. 과거에는 탐지하고 고치거나 재전송 했지만 현대는 물리계층의 신뢰도가 어느정도 안정적이여서 에러를 탐지하는 역할만 수행하는 경우가 많다. 대표적으로 Ethernet의 checksum 부분 주소체계가 생긴다는 것은 한 명과 통신하는 것이 아니라 동시에 여러명과 통신할 수 있다는 것이므..
Network 각각의 노드들이 데이터를 공유할 수 있게 하는 디지털 전기통신망의 하나이다. 네트워크는 분산되어 있는 컴퓨터를 통신망으로 연결하는 것을 말한다. 노드 : 네트워크에 속한 컴퓨터 또는 통신 장비 단순히 단어로 분석해 본다면 work(일)할 수 있는 기기를 net(망)구조로 연결해놓은것을 말한다. Internet, Intranet, Extranet Internet은 Inter + network로 network들이 inter(연결)된 것을 말한다. Intranet은 Intra + network로 개인이나 단체에서 intra(내부)적으로 사용하는 network를 말한다. Extranet은 Intranet에서 조금 확장해서 회사 내부 관계자 뿐만아니라 협력회사 또는 고객에게 사용할 수 있도록 한 n..
1단계 Boot loader (First-stage boot loader) 컴퓨팅에서 부팅은 전원 버튼 같은 하드웨어 또는 소프트웨어 명령을 통해 컴퓨터를 시작하는 프로세스입니다. 처음 부팅을 시작하게 되면 Power Supply는 들어온 전압을 현재 시스템에서 사용할 수 있는 전압으로 변환하여 연결된 부품들 사이에 전원을 공급합니다. 이 전기적 흐름은 CPU로도 전달되어 CPU가 가지고 있는 이전 값들을 지우고 CPU레지스터 중 하나인 Program Counter(PC)를 초기화시킵니다. Reset vector - Wikipedia In computing, the reset vector is the default location a central processing unit will go to find..
Mock객체 만들기 MemberService와 StudyRepository를 이용해서 StudyRepository를 생성해야 하는것을 가정으로 하겠습니다. Mockito.mock()메소드로 만드는 방법 @Test void createStudyServiceForMockMethod() { MemberService memberService = mock(MemberService.class); StudyRepository repository = mock(StudyRepository.class); StudyService studyService = new StudyService(memberService, repository); assertNotNull(studyService); } @Mock Annotaiton @E..
Mockito는 Mock을 지원하는 툴입니다. 여기서 Mock은 진짜 객체와 비슷하게 동작하지만 프로그래머가 직접 그 객체의 행동을 관리하는 객체입니다. Mock 객체를 쉽게 만들고 관리하고 검증할 수 있는 방법을 제공하는 것이 Mockito입니다. 대체제로 EasyMock, JMock등이 있습니다. JUnit만으로는 Database를 사용한다던지 외부의 API를 사용한다고 했을때 외부 API가 어떻게 동작해야하는지 항상 테스트해보면서 사용할 수 없습니다. 그렇기 때문에 어떻게 동작해야하는 예측을 해서 Mock을 만든뒤 사용하게 됩니다. 그리고 어느정도 규약이 정해졌으나 그 서비스가 아직 구현이 안됬음에도 해당 서비스를 이용하는 다른 서비스를 구현해야 할 때 Mock을 사용할 수 있습니다. Unit te..
테스트를 진행하다보면 특정 조건에 맞도록 테스트하는 과정도 필요합니다. 환경변수에 따라 실행되어야 하는 테스트가 있을 수 있고 properties에 설정된 값에 맞도록 실행되어야 하는 테스트 그리고 OS나 JRE 버전에따라 진행되어야 하는 테스트가 모두 따로 있을 수 있습니다. 이러한 조건에 맞도록 테스트 하는 방법을 살펴보도록 하겠습니다. Assumptions Assumptions는 특정한 조건에 따라 테스를 실행하고자 할때 사용하는 클래스입니다. 조건을 설정하는 여러메소드중 주요한 몇가지만 살펴보도록 하겠습니다. assumeTrue 조건이 참이면 아래 테스트가 진행됩니다. @Value("${test.env}") private String testEnv; @Test @DisplayName("test.e..
Assertions은 우리가 실제 테스트에서 검증하고자 하는 내용을 확인하는 메소드들을 모아놓은 클래스 입니다. 주로 import static으로 가지고와 메소드 들을 사용하게 됩니다. assertEqulas(expected, actual) 실제 값이 기대한 값과 같은지 확인 assertNotNull(actual) 값이 null이 아닌지 확인 assertTrue(boolean) 조건이 참(true)인지 확인 assertAll(executables...) 모든 확은 구문 확인 assertThrows(expectedType, executable) 예외 발생 확인 assertTimeout(duration, executable) 특정 시간 안에 실행이 완료되는지 확인 이모든 메소드들은 Supplier messa..