[도서/자바의 신] #25 쓰레드는 개발자라면 알아두는 것이 좋아요
·
Book/자바의 신
✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. 쓰레드가 도대체 뭘까? JVM이 시작되면 자바 프로세스가 시작하는데 이 프로세스 안에서 여러개의 쓰레드라는 것이 수행될 수 있다. java 명령어를 사용하여 클래스를 실행시키는 순간 자바 프로세스가 시작되고, main() 메소드가 수행되면서 하나의 쓰레드가 시작되는 것이다. 만약 많은 쓰레드가 필요하다면 main() 메소드에서 쓰레드를 생성해주면 된다. 자바로 웹을 제공할 때 WAS를 사용하는데 이 WAS도 main 메소드에서 생성한 쓰레드들이 수행되는 것이다. 프로세스가 하나 시작하려면 많은 자원이 필요한데 하나의 작업을 동시에 수행하려고 여러 프로세스를 띄워서 수행하면 각각 메모리를 할당해줘야 해서 성능적으로 좋지 않다. 반..
[도서/자바의 신] #24 자바랭 다음으로 많이 쓰는 애들은 컬렉션 - Part 3(Map)
·
Book/자바의 신
✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. Map이란? Map은 key-value 쌍으로 이루어져 있어 중복되지 않는 key 값으로 데이터를 구분한다. key값은 다른데 value는 같아도 다른 것으로 간주한다. value 없이 key값만 저장할 수도 있지만, key 값 없이 value만 저장할 수는 없다. value 값은 중복되어도 상관없다. Map의 주요 메소드 put(K key, V value ) : key-value 값을 갖는 데이터를 저장 putAll(Map
[도서/자바의 신] #23 자바랭 다음으로 많이 쓰는 애들은 컬렉션 - Part 2(Set과 Queue)
·
Book/자바의 신
✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. Set이 왜 필요하지? Set은 순서에 상관없이, 어떤 데이터가 중복없이 존재하는지를 확인하기 위한 용도로 사용된다. Set 인터페이스를 구현한 주요 클래스 HashSet : 순서가 필요 없는 데이터를 해시 테이블에 저장. Set 중 성능이 가장 좋음 TreeSet : 저장된 데이터의 값에 따라 정렬됨. red-black이라는 트리 타입으로 값이 저장되며, HashSet보다 조금 느림 LinkedHashSet : 연결된 목록 타입으로 구현된 해시 테이블에 데이터를 저장. 저장된 순서에 따라 값이 정렬되지만 성능이 가장 안좋음 데이터 정렬 작업을 거치는 클래스가 성능이 안좋다. HashSet에 대해서 파헤쳐 보자 HashSet 클..
[도서/자바의 신] #22 자바랭 다음으로 많이 쓰는 애들은 컬렉션 - Part1(List)
·
Book/자바의 신
✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. 자바 컬렉션 자바에서 컬렉션이란 목록성 데이터를 처리하는 자료구조를 통칭한다. 자료구조는 여러 데이터를 담을 때 사용하는 것으로 배열이 가장 기본적인 자료구조이다. 배열은 크기가 정해져있을 때 성능상이나 메모리 효율면에서 가장 좋지만 크기를 모르는 경우엔 효율적이지 않다. 자료 구조 순서가 있는 목록(List) 형 순서가 중요하지 않은 셋(Set) 형 먼저 들어온 것이 먼저 나가는 큐(Queue)형 키-값(key-value)으로 저장되는 맵(Map)형 목록, 셋, 큐는 Collection이라는 인터페이스를 구현하고, 맵만 별도의 인터페이스로 구현되어 있다. Collection 인터페이스 public interface Collec..
[도서/자바의 신] #21 실수를 방지하기 위한 제네릭이라는 것도 있어요
·
Book/자바의 신
✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. 실수를 방지할 수 있도록 도와주는 제네릭 실행시 발생하는 예외에 대비하기 위해서 테스트를 잘 해야 한다. 메소드 개발과 함께 JUnit과 같은 테스트 코드를 작성하는 것이 좋다. JUnit은 메소드나 클래스 같은 작은 단위를 쉽게 테스트할 수 있도록 도와주는 프레임웍이다. 형변환시 발생하는 예외를 방지하기 위해 instanceof로 하나씩 점검해야하는 단점을 보완하기 위해 Java 5부터 제네릭이라는 것이 추가되었다. 제네릭이 뭐지? 제네릭(Generic)은 타입 형 변환에서 발생할 수 있는 문제점을 컴파일시에 점검하기 위해서 만들어진 것으로 데이터타입을 일반화해준다. 클래스를 제네릭으로 선언하려면 클래스 이름 뒤에 꺾쇠 기호(..
[도서/자바의 신] #20 가장 많이 쓰는 패키지는 자바랭
·
Book/자바의 신
✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. java.lang 패키지는 특별하죠 java.lang은 import를 안해도 그 안의 클래스들을 사용할 수 있는 유일한 패키지로 자바에 꼭 필요한 여러 기능을 제공한다. java.lang에서 제공하는 인터페이스, 클래스, 예외 클래스등은 다음과 같이 나눠볼 수 있다. 언어 관련 기본 : Comparable, Class, Enum, ArrayOutOfBoundsException... 문자열 관련 : CharSequence, String, StringBuffer, StringBuilder, .... 기본 자료형 및 숫자 관련 : Boolean, Byte, Character, Double, Float, .... 쓰레드 관련 : Run..
[도서/자바의 신] #19 이쯤에서 자바의 역사와 JVM에 대해서 알아보자
·
Book/자바의 신
✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. 자바의 역사 자바는 1991년에 "Green" 프로젝트가 생기면서 모태가 탄생해 "Oak"라는 이름에서 1995년 "Java"라고 바뀌면서 Write Once, Run Anywhere(WORA)를 목표로 1996년에 JDK 1.0을 출시했다. 1998년 J2SE라는 이름으로 자바의 기본 버전 명칭이 바뀌고 2006년 Java SE 6가 출시되었다. JDK의 플랫폼에 따른 차이 각 운영체제에 최적화된 JDK가 있어 어떤 OS에서 개발하든지 JDK의 버전만 맞으면 적용할 다른 OS에서 컴파일해서 프로그램을 구동시킬 수 있다. 즉, Orcale JDK로 개발하고 IBM의 JDK에서 컴파일해도 된다는 의미이다. OpenJDK는 라이선스..
[일상] 개발자가 커뮤니케이션 능력이 좋다는 것은?
·
ETC
개발자가 커뮤니케이션 능력이 좋다는 것은? 나는 University Makeus Challenge(UMC)라는 동아리에서 개발 팀을 모아 어플 개발을 진행해본 적이 있다. 개발 공부를 하는 기간이 끝나면 아이디어톤에서 나온 기획안에 지원을 하면 팀이 만들어져 개발을 진행하던 방식이었는데 다들 개발을 해본적도, Git으로 협업을 해본적도 없다보니 많은 어려움을 겪었다. 그나마 "소통"은 쉬울 줄 알았는데 그것도 아니였던 것 같다... 스터디 과제이기도 하고 진짜 개발자가 커뮤니케이션 능력이 좋다는 건 정확히 어떤 걸 의미하는지 알아보고자 한다. 개발자의 생명은 커뮤니케이션 능력 한 전문가의 칼럼에서 내가 궁금한 내용을 다루었다. 이 칼럼의 필자는 프로그래머(programmer)와 개발자(developer)..
[CS/Network] TCP의 3&4-way handshake
·
CS/Network
3-way handshake TCP는 장치들 사잉에서 논리적인 접속을 성립하기 위하여 3-way handshake를 사용한다. 3-way handshake는 TCP/IP 프로토콜을 이용해 데이터를 전송하기 전에 수행되는 Setup 과정을 의미한다. 이 과정으로 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터 전달이 시작되기 전에 한쪽이 다른 쪽이 준비되었다는 것을 알 수 있도록 해준다. Setup 과정 서버는 먼저 실행돼서 요청 대기 SYN을 통해 연결 요청 (SYN = 1) SYN + ACK로 연결 허락 후 연결 요청 ( SYN = 1, ACK = 1) 받은 여결 요청에 대한 응답으로 ACK을 보냄 (ACK = 1) SYN은 synchronize sequence number의 ..
[공부/Java] Java와 Kotlin
·
Develop/Java
자바 객체 지향 방법론을 사용하며 여러 운영체제에서 실행될 수 있는 언어 자바의 특징 멀티 플랫폼 : JVM만 설치되어 있으면 어떤 운영체제에서도 애플리케이션을 작동시킬 수 있음 메모리 관리 : GC가 사용하지 않는 자원을 자동으로 반환 OOP : 객체 지향 방법론을 사용해 객체라는 단위로 나누고 객체들끼리 상호작용하는 방식 멀티 스레드 : Thread 클래스와 Runnable 인터페이스를 이용해 멀티 스레드를 구현 동적 로딩 : 필요한 시점에 구현한 클래스를 로딩할 수 있음 코틀린 개발자의 편의성, 간결하고 효율적인 코드 작성, 객체지향 프로그래밍과 함수형 프로그래밍의 장점을 절묘하게 조화시킨 언어 코틀린이 생겨난 배경 JetBrains라는 회사에서 만든 제품들이 70%이상 자바로 작성되어 있었는데, ..