본문 바로가기
728x90

공부155

[이펙티브 자바]item3.private 생성자나 열거 타입으로 싱글턴임을 보장하라 싱글톤은 만드는 방식은 많다.DCL 방식의 싱글톤 또는 enum 싱글톤을 이용하자. 물론 싱글톤의 단점도 존재한다. 테스트보기가 힘들다. mock 객체를 사용하려면 해당 객체가 인터페이스를 구현하고 있어야 함. 자바 싱글톤과 스프링의 싱글톤은 다르다. 자바는 클래스로더에 의해서 만들어지고, 스프링은 스프링 컨테이너 (applicationContext)에 의해서 구현된다 역직렬화 할때 직렬화 == 역직렬화 비교를하면 false 일텐데, 이를 true 로 나오게끔 하고싶으면 override 는 아니지만,,그렇다고 override 가 아니라고 말하기도 뭐한 코드를 넣어야한다 아래코드는 @override 가 아님.하지만 역직렬화 할때 사용은 함. private Object readResolve() { retur.. 2023. 1. 11.
[이펙티브 자바]item2.생성자에 매개변수가 많다면 빌더를 고려하라 자바를 쓰면 롬복은 필수로 쓰는데, 롬복으로 @Builder 로 쓰면서 알고 있던 것을 다시한번 확인하는 경험. 순수 빌더 패턴 클래스 안 정적 내부 클래스 선언)ex Builder 내부 생성자와 build 메서드 호출시 return new **class 에 this 를 넘겨 return 함. 아무래도 생성자가 많다면, 아무래도 자바는 빌더패턴을 사용해서 반환하는게 더 낫지않나 생각함. Objects.requireNonNull() 를 잘 사용안하는데, 나중에 써봐야지. 오버라이드 목록을 보니, 익셉션 메세지를 넣을 수 있는 부분이 있네. 비슷한 Optional.of 도 참고해서 입맛에 맞게 사용하자~ https://emgc.tistory.com/124 단점1.@Builder 적용시 모든 파라미터를 받는 .. 2023. 1. 11.
[이펙티브 자바]item1.생성자 대신 정적 팩터리 메서드를 고려하라. 장점 이름을 가질 수 있다. 생성자로 호출하는게 아니라, 메서드 호출이라 좀 더 명확한 네이밍이 가능함. 호출될 때마다 인스턴스를 새로 생성하지 않아도 된다. 싱글톤 처럼 만들어서 반환하면 생성비용을 좀더 아낀다. ex)Integer.valueof 반환 타입의 하위 타입 객체를 반화할 수 있는 능력이 있다. 디자인패턴처럼 인터페이스를 상속받아 반환.생성자를 사용한다면 해당 클래스만 반환할 수 있지.. 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환할 수 있다. 오잉 이거 팩토리패턴 아닌가.파라미터로 받은 값으로 분기처리 후 return 정적 팩터리 메서드를 작성하는 시점에는 반환할 객체의 클래스가 존재하지 않아도 된다. https://www.youtube.com/watch?v=8uryCPDcoqI&.. 2023. 1. 11.
세계 최고의 인재들은 어떤 루틴으로 일할까? # 세계 최고의 인재들은 어떤 루틴으로 일할까? * 회의에 참석할 때는 자신의 입장을 분명히 밝힌다. * 참석자는 각자의 의견이 옳든 그르든 일단 자신의 의견을 뚜렷하게 밝혀야 한다. * 발언할 떄, 근거는 필수 * 결론부터 말한다. 결론과 함께 반드시 근거를 말해야 한다. ('Because') 논리적으로 사고하려면 결론과 근거의 관계를 명확하게 밝혀야 한다는 것. -> 결론과 근거를 화살펴로 연결했을 때 부자연스럽지 않은지 확인해 보자 * 상대와 의견이 다를 때는 근거에 주목한다. * 반론을 펼칠 때는 상대를 배려하기 위해 영어의 '완충표현' 을 꼭 사용한다 * ex)정말 흥미로운 관점이네요. 그런데 저도 한 가지 아이디어가 있는데요. * ex)음, 잠시 생각좀 해볼께요. 전 완전히 동의하기는 좀 어렵.. 2021. 12. 2.
백준 2562 자바 - 궁금증 for, for향상문.. int intArray[] = {3, 29, 38, 12, 57, 74, 40, 85, 61}; int maxV = 0; int maxIndex = 0; int index = 0; for(int v : intArray){ if(maxV < v){ maxV = v; maxIndex = index; } index++; } System.out.println(maxV); System.out.println(maxIndex); index를 쓸려니 거시기해서..찾아봤다 foreach loop를 굳이 써야하는지~ 결론 : ArrayList, Array는 for문을 사용하고(별차이는없다 사실).. LinkedList 는 forEach loof를 사용하자..차이가 크다. foreach는 내부적으로 iterator를 사용하.. 2021. 10. 19.
개발자 면접 질문 대답 준비(자바 및 객체지향 등) 앞선 글에 따라 자바 편을 준비해봤다.. 못 보셨으면 -> 개발자 면접 질문 대답 준비(시작에 앞서) 계속 업데이트될 예정이다..(생각나면.. 한 번에 많은 질문을 올리기는 너무 힘들다..) 자바만 다루기에는 객체지향이 섭섭해서 같이 공부하기를 추천!! 꼬리를 무는 질문이 생길 수 있습니다. 대답을 너무 길게 하면 어려워질 수 있고 부족한 내용은 찾으면서 공부하길 추천한다! ㅎㅎ --- 자바란 무엇인가? 위키백과에 정의된 자바란? 1955년 '썬 마이크로시스템즈'(제임스고슬링 외 연구원들)에서 개발한 객체지향 언어입니다. 특징으로는 멀티쓰레드를지원하며, 동적 로딩 지원, 운영체제에 독립적이며, 자동 메모리 관리(gc) 등이 있습니다. (특징을 살펴보고 싶으면 해당 글로 이동하자 자바 언어의 특징을 간략히.. 2021. 8. 25.
멀티 쓰레드와 멀티 프로세스의 차이를 간략히 알아보자. 자바는 멀티 쓰레드를 지원합니다. 간혹 저를 포함한 개발자분들에게 멀티 쓰레드와 멀티 프로세스의 차이를 묻는다면 알듯말듯한 느낌!! 간질간질한 느낌!! 을 느끼시는 개발자 분들도 있으실 거에요. 그래서 간략히 한번 정리해 봤습니다. 용어 정리부터 간략히 해볼게요. 멀티 쓰레드 프로그램 실행단위, 프로세스 내 주소공간 및 자원 공유 즉 여러 스레드를 동시에 실행시키는 응용프로그램을 작성하는 기법입니다. 하나의 프로그램에 동시에 여러가지 일을 수행할 수 있도록 해주는 것 정도로 이해하면 좋겠습니다. 멀티 프로세스 프로세스란 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말하는데요 (참고-위키백과 - 프로세스) 좀더 깊게 보고 싶은분은 해당 블로그를 보시면 좋겠네용 하나의 프로그램에서 여러개의 프로세스.. 2021. 8. 25.
객체지향 설계의 5원칙을 간략히 알아보자.(SOLID) 위키백과에서 정의하는 객체 지향 설계(SOLID) 클린 코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리한 것으로. 많은 개발자들이 많이 들어본!! 앞글자들을 따서 만든 SOLID로 불려지는!! 그것이다!!(그것?) 이제 한번 간략히 알아보자(츄릅) 5원칙을 읽기 전에 객체지향의 4대 특성을 모른다면 간략히 정리한 해당 글을 읽고 오자 객체지향 언어의 4대 특성을 간략히 알아보자. --- SRP - 단일 책임 원칙 (Single responsibility principle) 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 말이 좀 모호하긴 한데, 변경이 있을 때 파급 효과가 적다면 원칙을 잘 따른 것 OCP - 개방-폐쇄 원칙 (Open/closed principle) 소.. 2021. 8. 25.
객체지향 언어의 4대 특성을 간략히 알아보자. 객체지향 언어의 4대 특성을 간략히 알아보자. 마음속으로는 뭔가 알겠는데 이것들을 표현할려니 어렵네요. 이펙티브 자바에서인가 4대 특성이 아니라 원래는 3대특성이였다는...상속은 아니라는..말이 있는데..좀 공감함..상속 별로 안 좋아함 ㅎ 캡슐화 접근제어자를 사용하여 객체 외부에서 내부 데이터의 접근을 통제합니다. 참고 public : 모든 객체에서 접근 가능하다. protected : 동일한 패키지 안에서 사용가능, 다른 패키지라도 상속받은 클래스에서는 접근 가능 default : 접근제어자가 없는 형태로 동일한 패키지 안에서만 접근이 가능 private : 동일한 클래스 안에서 사용가능, this를 사용하는 것들은 외부에서 접근 불가능, 상속도 안된다. 상속 부모 클래스의 메소드와 필드를 자식 클래.. 2021. 8. 25.
728x90