본문 바로가기

반응형

분류 전체보기

(482)
[java-기초-13] 제네릭 왜 제네릭을 사용하는가? java 5부터 제네릭 타입이 새로 추가되었고 제네릭 타입을 이용해 잘못된 타입이 사용될 수 있는 문제를 컴파일 과정에서 제거할 수 있다. 제네릭은 널리 사용된다. 컬렉션, 람다식, 스트림, NIC java API docs 클래스, 인터페이스, 메서드를 정의할 때 타입을 파라미터로 사용 제네릭의 특징 컴파일 시 강한 타입 체크를 할 수 있다. 타입 변환을 제거 한다. List list = new ArrayList(); list.add("hello"); String str = (String) list.get(0); List list2 = new ArrayList(); list.add("hello"); String str2 = list2.get(0); 제네릭 타입 : class, I..
이펙티브 자바 요약(아이템1~90) 2장 객체 생성과 파괴 아이템 1 : 생성자 대신 정적 팩터리 메서드를 고려하라 전통적으로 public 생성자를 사용하고 더 나아가 정적 팩터리 메서드를 제공할 수 있다. 무조건 public 생성자를 만들기보다 정적 팩터리를 사용하는게 유리한 경우가 많으니 잘 고려해보자. 아이템 2 : 생성자에 매개변수가 많다면 빌더를 고려하라 API는 시간이 지날수록 매개변수가 많아지는 경향이 있으니 애초에 빌더로 시작하는게 나을때가 많다. 아이템 3 : private 생성자나 열거 타입으로 싱글턴임을 보증하라 싱글턴은 함수와 같은 무상태 객체나 설계상 유일해야 하는 시스템 컴포넌트를 들 수 있다. 하지만 클래스를 싱글턴으로 만들면 이를 사용하는 클라이언트를 테스트하기가 어려워질 수 있다. 타입을 인터페이스로 정의하고..
이펙티브 자바 - 12장 : 직렬화 직렬화 객체 직렬화란 자바가 객체를 바이트 스트림으로 인코딩하고(직렬화) 그 바이트 스트림으로부터 다시 객체를 재구성하는(역직렬화) 메커니즘이다. 아이템 85 : 자바 직렬화의 대안을 찾으라 자바 직렬화는 취약점들로 인해 공격을 받는데 직렬화의 근본적인 문제는 공격 범위가 넓고 지속적으로 넓어져 방어하기가 어렵다. ObjectStream의 readObject 메서드를 호출하면서 객체 그래프가 역질렬화되기 때문이다. 공격자와 보안 전문가들은 자바 라이브러리와 널리 쓰이는 서드파티 라이브러리에서 직렬화 기능 타입들을 연구하여 역직렬화 과정에서 호출되어 잠재적으로 위험한 동작을 수행하는 메서드들으 찾아보았고 이런 메서드를 가젯 메서드라고 부른다. 역직렬화에 시간이 오래 걸리는 짦은 스트림을 역질렬화하는 것만으..
영문 표기법 / 한글을 영어로 표기 개발하다보면, 생활하다보면 한글을 영어로 표기하는 경우가 생기는데 매번 찾아보기 어려워 정리했다. ㄱ ㅅ ㅊ ga 가 sa 사 cha 차 gak 각 sak 삭 chak 착 gan 간 san 산 chan 찬 gal 갈 sal 살 chal 찰 gam 감 sam 삼 cham 참 gap 갑 sap 삽 chang 창 gat 갓 sang 상 chae 채 gang 강 sat 샅 chaek 책 gae 개 sae 새 cheo 처 gaek 객 saek 색 cheok 척 geo 거 saeng 생 cheon 천 geon 건 seo 서 cheol 철 geol 걸 seok 석 cheom 첨 geom 검 seon 선 cheop 첩 geop 겁 seol 설 cheong 청 ge 게 seom 섬 che 체 gyeo 겨 seop 섭 c..
완벽한 공부하는 법 완벽한 공부하는 법 믿음 내가 할 수 있다는 믿음과 자세가 나를 만든다. 작은 일부터 성공하는 시작하자. 일방적인 칭찬보다 노력을 칭찬한 아이들이 어려운 수학문제에 대한 도전 한 것처럼 자신이 할 수 있다는 믿음이 중요하다. 고정형 사고방식과 성장형 사고방식 고정형 사고방식 : 정체되어 비판 받으면 나를 욕보인다고 생각한다. 성장형 사고방식 : 비판도 자신이 성장하는 발판이라고 생각한다. 몸은 늙어가되 뇌는 늙지 않는다. 매타 인지(매타 기억, 매타 이해) 나를 알아야 한다. 나의 한계는 어디인가. 나의 기억을 과대평가 하지는 않는가, 나의 이해를 과대평가 하지는 않는가. 기억하고 이해하고 과정을 인지하여 문제를 해결한 것인가, 해결한 것처럼 보이는 것 인가 빠르게 생각하는 시스템(감정, 인지, 생활 등..
이펙티브 자바 - 11장 : 동시성 동시성 스레드는 여러 활동을 동시에 수행할 수 있게 해주지만 단일 스레드 프로그래밍보다 동시성 프로그래밍이 어렵고 잘못될 수 있는 일이 늘어나고 문제를 재현하기도 어려워진다. 하지만 오늘날 어디서나 쓰이는 멀티코어 프로세서의 힘을 제대로 활용하려면 반드시 내 것으로 만들어야 하는 기술이다. 아이템 78 : 공유 중인 가변 데이터는 동기화해 사용하라 동기화는 배타적 실행뿐 아니라 스레드 사이의 안정적인 통신에 꼭 필요하다. synchronized 키워드를 이용하면 매서드나 블록을 한번에 한 스레드씩 수행하도록 보장한다. 객체를 하나의 일관된 상태에서 다른 일관된 상태로 변화시키고 동기화를 제대로 사용하면 어떤 메서드도 해당 객체가 일관되지 않은 순간을 볼 수 없을 것이다. 동기화는 일관성이 깨진 상태를 볼..
DB 버전를 관리 코드로 하는 방법 - LIQUIBASE 소스 형상 관리는 git이나 svn으로 하고 ppt나 보고서도 버전을 관리를 합니다. DB에 대한 형상관리를 하는 방법이 없는지 고민하다가 프로젝트를 하면서 접하게 된 LIQUIBASE입니다. 리퀴베이스는 DB 스키마 변경을 버전별로 관리 할 수 있는 oepn source 입니다. - 주의 사항 - 리퀴베이스를 적용한 프로젝트의 데이터베이스 스키마를 직접 수정하는 일은 절대 없어야 합니다. 특징 데이터베이스 변경 문서 생성 기존 데이터베이스에서 시작할 수 있는 change log 생성 기능 데이터베이스끼리 비교 기능 데이터베이스에 반영한 update를 rollback 기능 자동 업데이트 또는 DBA가 직접 적용할 수 있는 sql 스크립트 생성 안전한 클러스터 데이터베이스 업데이트 운영 데이터와 다양한 테..
로모 그래피 심플 유즈 필름 구매 이유와 사용 후기 필름 카메라! 스마트폰으로 찍고 DSLR로 찍는 디지털 카메라에서 필름 카메라를 쓰고 싶은 계기가 있었어요. 아는 동생이 30만원정도 하는 필름 카메라를 구매했는데 같이 사진 찍으러 가자고 해서 낙산공원을 갔어요. 묵직한게 파워풀해 보이기도 했고 바로 확인할 수 없다는 기다림에 초조와 여유가 공존하는 기분이었어요. 그러다가 제주도를 가게 되었는데 이때다 싶어서 일회용 카메라를 들고 찍고 다녔더니 다들 아빠같다고 하고 찍는 저도 즐거웠어요 ㅎㅎㅎ 나중에 뽑아서 보니까 필름감성이 돋더라구요 그래서 다회용 필름 카메라를 구매하기로 했어요. 로모 그래피 심플 유즈 필름 구매 이유 다회용으로 여러번 필름을 교체해서 찍을 수 있었으면 했어요. 3만원 미만으로 구매할 수 있으면 했어요. 일회용 카메라와 비슷한 크기였..

반응형