만족은 하되 안주하지는 말자

기록해야 기억한다

분류 전체보기 168

[intelliJ] Google Style guide intelliJ 적용법

코드 스타일 모든 개발자들이 진행하는 프로젝트들은 각자의 코드 스타일이 존재한다. 변수명은 camelCase 로 해야한다던지... PascalCase 로 해야한다던지... 들여쓰기 간격은 4회여야한다. 2회여야한다 등등 여러 사람이 협업하는 프로젝트에서 코드의 스타일 규칙은 중요하다. 이런 규칙을 만드는 사람이 일일이 정하긴 힘드니 주로 사용하는 것이 바로 'Google Style Guide' 이다. (https://github.com/google/styleguide) 구글이 정해놓은 스타일 가이드라인대로 개발을 하면 여러 명이 하나의 프로젝트를 개발하더라도 일관성있고 가시성이 좋은 코드의 모습이 나올 수 있을 거다. 내로라하는 똑똑한 분들이 정해놓은 규칙이니까. 적용법 그럼 이런 코드 스타일의 규약들을..

[Java] 문자열 붙이기에 반드시 StringBuilder 를 안해도 된다

서론 개발을 하다가 멘토님께 알게 된 사실을 정리한다. 사실 나는 문자열 붙이기를 할 때, '+' 를 활용하면 메모리 낭비가 너무 커질 수 있어 지양해야한다는 생각을 가지고 코드를 작성해왔다. 이 주제는 상당히 오래전부터 자바를 공부하는 우리 컴공생들에게 (면접질문 등으로) 자주 논의되던 이야기였다. 문자열 붙이기에 '+' 를 이용하지말아야한다는 근거 String 객체는 불변 객체이다. 즉 한번 객체가 생성되면 그 객체 내용을 변경하는건 불가능하다. 그래서 우리가 한 문자열을 다른 문자열과 합치게 되면 기존 문자열의 내용이 변하는게 아니라 새로운 문자열이 생성된다. 그리고 이제 참조되지않는 (아래 그림의 경우 "Hello") 문자열은 더이상 어느 코드에서도 참조되지않으므로 GC(Garbage Collec..

[OOP] 객체지향 설계 5원칙 : SOLID 디자인 원칙

로버트 C. 마틴의 '클린소프트웨어: 애자일 원칙과 패턴 그리고 실천 방법' 에서 소개됨. SRP 단일 책임 원칙 한 클래스는 변경에 대한 이유를 하나만 가져야 한다. 여기서 말하는 책임 은 변경을 위한 이유 즉 클래스를 변경할 때 클래스를 변경하기 위한 다른 이유를 생각할 수 있다면 이 클래스는 SRP 위반 다른 해석으로는 책임이 변경의 축이라는 것. 예시로 클래스를 토론방이라고 하자면, 한 방에서 축구,스키,하이킹,야구 등을 이야기하고 있는데 갑자기 누군가가 영화에 대해 이야기 하면서 주제가 '사람들이 좋아하는 영화, 영화 캐릭터, 명장면에 대한 토론' 을 시작한다면 이 토론방은 2개로 나누는 것이 낫다. (취미 / 영화) 즉 여기서 취미 가 변경의 축이다. 변경의 축은 변경이 일어날 때만 변경의 축..

[Spring] J2EE란?, EJB란?, Spring framework 의 탄생 배경

J2EE (자바 to 플랫폼 엔터프라이즈 에디션) client 단에 J2EE 는 순수 HTML 지원. HTML, 다른 포맷 data 를 만들어 제공하기 위해서는 JSP, servlet code 가 필요 EJB 는 플랫폼의 로직이 저장되는 별도 레이어를 제공. EJB 서버는 스레딩, 동시성제어, 보안, 메모리 관리 등을 지원하는 함수들 제공 JDBC(자바 데이터베이스 연결성) 을 제공. 자바 데이터베이스를 위한 표준 인터페이스다. GUI (그래픽 사용자 인터페이스) 를 요구하는 일 없이 개발자들에게 일관성을 향상시켜주는 자바 서블릿 API 제공 스프링이랑 J2EE는 다른거야? 스프링 프레임워크 또한 J2EE application 이다. 스프링은 J2EE를 대체할 수 없다. 다만 스프링은 J2EE를 만족한다..

[Java] Java Servlet Cookie 생성 및 관리

쿠키 쿠키는 작은 데이터 조각입니다. 이 데이터 조각은 클라이언트 - 서버 간 통신에서 클라이언트가 저장하고 있는 데이터로, 서버가 클라이언트의 요청 정보에서 확인할 수 있습니다. 이걸 통해 서버는 클라이언트가 누군지를 확인할 수 있습니다. 또 어떤 servlet 에서 다른 servlet 으로 어떤 데이터를 전달할때도 쓰입니다. 쿠키를 사용할 때 중요한 것은 임시 데이터라는 것입니다. 쿠키는 특정 시간이 지나면 자동으로 만료 되며 사용자가 언제든지 삭제하거나 차단할 수 있습니다. 또한 기본적으로 쿠키는 기본적으로 암호화되지 않고 전송되기 때문에 비밀번호 같은 민감한 데이터는 담아선 안됩니다. 쿠키 생성법 java11, spring-boot-web-starter 에서 진행해보겠습니다. Cookie 클래스는..

[Java] custom Object 리스트를 Map 리스트로 변환하기 (object to map using stream)

목표 객체의 field 와 value 를 꺼내서 Map 객체에 담아 변형하자. key는 필드변수명, value 는 해당 필드 변수의 값이다. 만약 [Person={id:1,name:"choi",height:180},Person={id:1,name:"kim",height:170}] 이라는 배열이 있다면, [{id:1,name:"choi",height:180},{id:1,name:"kim",height:170}] 의 형태로 바꾸고 싶은 것이다. 샘플 클래스 public class streamPractice { public static class Person { private int id; private String name; private int height; private Person(int id, Str..

[Java] Optional 에 대해 알아보자 - 2

2021.03.29 - [프로그래밍/JAVA] - [Java] Optional 에 대해 알아보자 - 1 [Java] Optional 에 대해 알아보자 - 1 Optinal class 는 자바 8에서 도입된 주요 기술 중 하나입니다. 이 클래스의 목적은 null 대신에 optional한 (있거나 없을 수 있는) 값을 표현하기 위한 해결책을 제공하는 것입니다. 기본 Optional 객체 생 choichumji.tistory.com filter() 를 활용한 조건부 리턴 Optional 의 filter 메서드를 활용하면, null check 와 함께 복잡한 조건문을 하나의 라인으로 축약하기 쉽다. 예를 들어, 사람마다 키를 재서 120cm ~ 190cm 인 경우에 롤러코스터를 탈 수 있는지 없는지를 판단하는 ..