JSCODE 자바 면접 스터디 참여 회고
·
카테고리 없음
나는 JSCODE 네트워크 스터디를 1년전에 참여했었다. 그때의 멘토님은 이번 스터디를 하고 나면 공부하는 방식을 알게되고, 꾸준히 할 수 있을 거라고 말씀해주셨다.하지만 나는 워홀에서 돌아오고 방황하는 동안 공부하는 모든 방법을 까먹고 있었다. 다시 공부를 시작하고 취업하고 싶었지만 끊임없는 무기력과 우울로 인해 아무것도 시작할 수 없었는데,같이 스터디를 하자고 한 사람이 있어서 스터디를 찾아보다가 때마침 JSCODE 면접 스터디 공지가 올라와서 시작할 수 있게 됐다.한 달동안 스터디를 하며 다시 개발에 대한 욕심과 재미가 올라오기 시작했고, 포트폴리오도 재밌게 만들고 있다. 내가 이 스터디를 참여하며 성공적이었다고 생각하는 것은 위에 말했다싶이 개발 공부에 대한 의지나 욕심, 재미가 올라오기 시작했고..
JVM과 GC ~~
·
자바
모르면 머리아프지만 공부하니까 나름 재미있는 영역같다.어려운 부분일수록 그리면서 하는게 머리에 잘 들어와서 오늘은 정리한 내용을 사진으로도 첨부한다
자바 동시성
·
자바
자바에서 동시성을 다루다 보면 값이 서로 다르게 보이거나 예상치 못한 타이밍에 변경되는 문제가 자주 발생한다.단순히 스레드를 여러 개 돌린다고 해결되지 않으며, CPU 캐시 구조와 자바 메모리 모델이 실제 실행 흐름에 영향을 준다.동시성을 제대로 이해하려면 가시성, 원자성, 락 경쟁 같은 개념을 먼저 정리해야 한다. 가시성 문제는 한 스레드가 값을 바꾸어도 다른 스레드가 캐시에 남은 이전 값을 읽어 발생한다.스레드가 항상 같은 CPU 캐시를 사용하는 것이 아니고, 재정렬까지 있기 때문에 메모리 동기화를 명시적으로 보장해야 한다. synchronized는 진입과 종료 시 메모리를 동기화하고 원자성을 보장하지만, 모든 스레드를 한 락 아래에서 대기시키기 때문에 병렬성을 떨어뜨린다.또한 블로킹 방식이라 유연성..
자바 컬렉션 프레임워크
·
카테고리 없음
자바 컬렉션은 데이터를 다루는 거의 모든 작업에서 기본처럼 쓰이는 구조이다. 그래서 먼저 JCF(Java Collection Framework)가 뭔지부터 이해하면 전체 흐름이 훨씬 정리된다. JCF는 쉽게 말하면 자바가 기본으로 제공하는 자료구조 표준 세트이다. 여기에는 List, Set, Queue, Map 같은 인터페이스가 있고, 그걸 구현하는 ArrayList, HashSet, HashMap 같은 클래스들이 있다. 컬렉션 중에서 가장 많이 쓰는 구조가 List이다. List는 순서가 있고 중복을 허용하는 자료구조이다. 구현체는 ArrayList, LinkedList, Vector 같은 것들이 있다.ArrayList는 내부가 배열 기반이라 조회 속도가 빠르다. 대신 중간에서 요소를 삽입하거나 제거할..
자바의 에러, 예외처리
·
자바
Throwable├── Exception│ ├── RuntimeException│ └── Checked Exception들└── Error 에러와 예외(Exception)에 대해서 비교를 먼저 해보자!에러는 진짜 큰일 난 자바 프로그램이 회복 불가능한 문제이고, JVM 자체의 메모리 부족 또는 스택 오버플로우 같은 문제가 대부분이다.예외는 프로그램 실행 중에 발생하는 예상이 가능한 코드 레벨의 오류이다. 예를 들어 데이터가 없는데 불러온다던가 하는 NPE같은 문제인데 try-catch 예외처리로 대처가 가능하다. Exception은 크게 Unchecked Exception과 checked exception으로 나뉜다. 1. Unchecked Exception RuntimeExceptio..
자바 문자열
·
자바
문자열을 알아보기 전에 "버퍼"라는 개념부터 잡고 가겠다!버퍼는 임시로 데이터를 담아두는 공간 == 메모리 공간이다.좀 더 정확히는 데이터를 처리하는 속도가 서로 다른 두 시스템 사이에서 데이터를 임시로 저장해주는 메모리 공간이다. CPU는 속도가 매우 빠르고 네트워크, 디스크 등은 매우 느려서 빠른 쪽에서 느린쪽으로 데이터를 보낼 때 데이터 손실이 일어날 수 있는데 그 사이에 껴서 잠깐 담아주는 상자 역할을 하는 것이 버퍼이다. 빠른쪽은 데이터를 버퍼에 계속 담고, 느린쪽은 천천히 버퍼에서 퍼가면 된다.그래서 I/O와 같은 작업을 CPU에서 요청하면 1000번 할때마다 기다려야 하는데 대신, 버퍼에 담아두고 한 번만 I/O 하면 끝! 성능이 짱 좋아지는 것이다. ---이제 자바 문자열을 진짜 알아보자..
Java의 간략한 특징!
·
자바
자바의 특징- 자바는 객체 지향 언어 -> 유지보수 및 확장성에 좋음- JVM을 통해 실행되어서 운영체제에 독립적이다- 안정적이다. c와 같은 언어의 pointer가 없어서 메모리를 직접 제어할 수 없지만 이를 GC가 대신 해주기 때문에 훨씬 안정적이고, 효율적이다.- 오픈소스이고, 자바를 활용한 오픈 소스가 이미 많이 개발되어있어 풍부한 기능을 빠르게 만들 수 있다.- 자바 표준은 오라클에서 관리하지만 JDK는 여러곳에서 제품이 만들어져서 출시된다. - Oracle JDK vs Open JDK- 오라클은 기업 유료/개인 무료, 오픈은 전부 무료이다. - Aamazon에서 제공하는 jdk는 AWS에서 잘 작동되게 최적화 되어있는 등의 개성이 있다. 자바의 실행 과정자바는 고수준 언어로 컴퓨터가 알아듣을..
soft delete와 unique제약
·
개발
1) 개요 - 회원가입 시 이메일, 닉네임과 같은 속성에 unique 제약을 주어 중복값이 들어올 수 없도록 하고싶었음- 회원, 팀, 멤버 등을 삭제할 때는 soft delete를 하고싶었음 2) 문제 - soft delete로 처리한 엔티티의 속성과 같은 값으로 엔티티를 만들 때 unique 제약에 걸려 오류가 발생할 수 있음을 인지함 3) 해결방법 - 활성 행만 unique로 강제하는 방법이 있다고 함 (MySQL 기준) 1. unique 제약조건은 한 개만 묶을 수도 있고 다른 컬럼과 같이 묶어서 그 행이 유일하게 처리하도록 한다. 2. 예를 들어 name 컬럼 하나만 unique 제약조건을 걸어놓으면 다른 컬럼들이 어떤 값이던 같은 name 값은 절대 들어올 수 없다. 3. 하..