
자료를 관리 할때 배열이나 리스트를 자주 사용하게 된다. 자주 사용하는 만큼 배열과 리스트의 특징과 차이에 대해 알아보고자 한다. 배열(Array) 이란? 배열은 정적 자료구조이며, 배열을 만들기 위해서는 미리 크기를 정해 놓아야 한다. 그렇게 되면 해당 크기만큼의 연속된 메모리 주소를 할당 받게 된다. 연속된 메모리 주소를 할당 받고 있기 때문에 데이터가 인덱스(index)라는 것을 갖게 된다. 일반적으로 array[0] 같은 식으로 배열에 접근할 때 대괄호([]) 안에 숫자가 index이다. index를 갖게 된다는 것은 즉 임의 접근이 가능하다는 장점이 있어 접근과 탐색에 용이합니다. 하지만 크기를 미리 정해놓았기 때문에 수정하는 것이 불가능하며 이미 크기를 정해 놓은 터라 해당 배열 크기 이상의 ..

DFS / BFS 알고리즘 DFS 와 BFS 알고리즘은 대표적인 그래프 탐색 알고리즘이다. 여기서 탐색이란 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정을 의미한다. 이제 이 두 알고리즘의 특징을 알아보도록 하자. 깊이 우선 탐색, DFS(Depth - First Search) 깊이 우선 탐색(DFS)은 그래프의 시작 노드에서 출발하여 탐색할 한 쪽 분기를 정하여 최대 깊이까지 탐색을 마친 후 다른 쪽 분기로 이동하여 다시 탐색을 수행하는 알고리즘 이다. 깊이 우선 탐색(DFS)은 실제 구현 시 재귀함수를 이용하므로 스택 오버플로에 유의해야한다. 코드로 DFS 구현 예시 public static void DFS(int item){ if(!visited[item]){ visited[item] = tr..

SOLID 란? SOLID란 객체 지향 프로그래밍을 하면서 지켜야하는 5대 원칙으로 각각 SRP(단일 책임 원칙), OCP(개방-폐쇄 원칙), LSP(리스코프 치환 원칙), DIP(의존 역전 원칙), ISP(인터페이스 분리 원칙)의 앞글자를 따서 만들어졌다. SOLID 원칙을 철저히 지키면 시간이 지나도 변경이 용이하고, 유지보수와 확장이 쉬운 소프트웨어를 개발하는데 도움이 되는 것으로 알려져있다. 참고로 SOLID는 어떠한 특정 프로그래밍 언어 혹은 프레임워크를 위해 만든 원칙이 아니다. SOLID는 프레임워크도 라이브러리의 패턴도 아니며, 특정 기술에 국한되지 않는다. 그래서 TypeScript 또는 Java 와 같은 선호하는 프로그래밍 언어나 프레임워크에 원칙을 자유롭게 적용할 수도 있다. (왠만한..

테스트 코드를 작성하면서 TDD, BDD 라는 용어를 한번씩 들어봤을 것이다. 둘다 모두 테스트 코드 작성과 관련있는 용어이며, 이것이 어떤 의미를 가지며 어떤 차이가 있는지 알아보고자 한다. TDD (Test Driven Development) TDD란 말 그대로 테스트 주도로 개발을 이끌어 나가는 것이다. TDD는 매우 짧은 개발 서클의 반복에 의존하는 소프트웨어 개발 프로세스이다. 즉, 테스트를 먼저 작성하고 나서, 테스트가 정상적으로 돌아갈 때 까지 테스트를 하면서 코드를 작성하는 작업이라고 볼 수 있다. 원하는 작업이 제대로 돌아갈 때까지 테스트와 코드 작성을 무한대로 반복하며 개발을 하면 된다. * 장단점 - 개발하다 꼬여도 테스팅을 돌려봄으로써 안심하고 진행할 수 있음 - 보다 객체지향적이고..

▪️ String, StringBuilder, StringBuffer 란? 자바에서는 대표적으로 문자열을 다루는 자료형 클래스로 String, StringBuffer, StringBuilder 라는 3가지 자료형을 지원한다. 위 3가지 클래스 자료형은 모두 문자열을 다루는데 있어 공통적으로 사용되지만, 사용 목적에 따라 쓰임새가 많이 달라지게 된다. 1️⃣ String 기본적으로 자바에서는 String 객체의 값은 변경할 수 없다. 이는 한번 할당된 공간이 변하지 않는다고 해서 '불변(immutable)' 자료형 이라고 불리운다. 그래서 초기공간과 다른 값에 대한 연산에서 많은 시간과 자원을 사용하게 된다는 특징이 있다. String str = "hello"; str = str + " world"; Sy..

OSI 7 계층이란? OSI 7 계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말하며, 국제표준화기구(ISO, International Organization for Standardization)에서 네트워크 간의 호환을 위해 OSI 7 계층이라는 표준 네트워크 모델을 만들었다. OSI 7단계로 정의한 이유는 통신이 일어나는 과정을 단계별로 파악하기 위함과 통신 과정 중에 특정한 곳에 이상이 생길 경우에 다른 단계의 장비 및 소프트웨어 등을 건드리지 않고 통신 장애를 일으킨 단계에서 해결할 수 있기 때문이다. OSI 7 계층 구조 1️⃣ 1계층 - 물리계층(Physical Layer) 실제 장치를 연결하기 위한 전기적 및 물리적 세부 사항을 정의한 계층이다. 인터넷 케이블, 라우터 스위치..

오버로딩(Overloading) 이란? 자바의 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있다. 오버로딩의 조건 메소드의 이름이 일치해야 함 메소드 매개변수의 개수 또는 타입이 달라야 함 (개수가 같다면 타입, 타입이 같다면 개수를 다르게 해야함) 메소드의 return 타입이 달라야 함 class Car{ int modelNum; String modelName; public int setModel(int modelNum){ this.modelNum = modelNum; return this.modelNum; } public String setModel(int modelNum, String mod..

JWT(JSON Web Token)란? 일반적으로 클라이언트와 서버 사이에서 통신할 때 권한을 위해 사용하는 토큰이다. 웹 상에서 정보를 Json형태로 주고 받기 위해 표준규약에 따라 생성한 암호화된 토큰으로 복잡하고 읽을 수 없는 string 형태로 저장되어있다. JWT 구조 JWT는 Header, Payload, Signature의 3 부분으로 이루어지며, Json 형태인 각 부분은 Base64Url로 인코딩 되어 표현된다. 또한 각각의 부분을 이어 주기 위해 . 구분자를 사용하여 구분한다. 추가로 Base64Url는 암호화된 문자열이 아니고, 같은 문자열에 대해 항상 같은 인코딩 문자열을 반환한다. 1️⃣ 헤더 (Header) 토큰의 헤더는 typ과 alg 두 가지 정보로 구성된다. alg는 헤더(..

TCP (Transmission Control Protocol) 란? ▪️ 서버와 클라이언트간에 데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜이다. ▪️ 데이터를 전송하기 전에 데이터 전송을 위한 연결을 만드는 연결지향 프로토콜이다. ▪️ 데이터는 네트워크선로를 통해 전달되는 과정에서 손실되거나 순서가 뒤바뀌어서 전달될 수 있는데, TCP는 손실을 검색해내서,이를 교정하고 순서를 재조합할수 있도록 해준다. TCP 의 역할 ▪️ 받을 대상 노드 (호스트)가 서비스 기능 (연결 기능) 상태인지 확인 및 연결을 수립하는 역할 ▪️ 전송을 제어해주는 정보를 패킷에 추가해주는 역할 TCP 연결 성립 과정 TCP 는 신뢰성을 확보 할 때 '3 way handshake' 라는 작업을 진행 한다. 1️⃣ SYN..

Java 8 에 추가 된 내용 람다식(Lambda expressions) 함수형 인터페이스 (Functional Interface) 디폴트 메서드 (Default Method) JVM의 변화 병렬 배열 정렬(Parallel Array Sorting) 컬렉션을 위한 대용량 데이터 처리 ( 스트림 ) Optional Base64 인코딩과 디코딩을 위한 표준 API 새로운 날짜, 시간 API (Date & Time API) 이 중에서 bold 로 된 항목에 대해서 간략하게 정리하고자 한다. 1️⃣ Lambda expressions 람다는 함수를 하나의 식(expression)으로 표현한 것이다. 함수를 람다식으로 표현하면 메소드의 이름이 필요 없기 때문에, 람다식은 익명 함수(Anonymous Function..
- Total
- Today
- Yesterday
- 코테준비
- 코테공부
- 개발자 면접 준비
- 제로베이스 백준 장학금
- 백엔드 개발자 기술 면접 준비
- 코테 준비
- 개발자 취준
- 프로그래머스 카카오
- 프로그래머스 자바
- 자바
- 취준
- 프로그래머스
- java
- 자바공부
- 주니어 개발자 취업 준비
- 개발자 취업 준비
- 코딩테스트공부
- 제로베이스 백엔드 스쿨
- 기술 면접 준비
- 코딩테스트 공부
- 취업준비
- 코딩테스트 준비
- 알고리즘 공부
- 백엔드 개발자
- 알고리즘공부
- 백엔드 개발자 취업 준비
- 취업 준비
- 코딩테스트
- 알고리즘
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |