분류 전체보기

Effective Java

[아이템 13] clone 재정의는 주의해서 진행하라

clone은 객체를 복사한다. Cloneable 구현 예시 public class TestCloneDto implements Cloneable { private String name; private String email; public String toString () { return " name : " + name + " email : " + email; } public TestCloneDto(String name, String email) { this.name = name; this.email = email; } @Override protected TestCloneDto clone() throws CloneNotSupportedException { return (TestCloneDto) super.c..

Effective Java

[ 아이템 12 ] toString

업무 중에 습관적으로 toString을 쓰곤 했다. 객체의 값을 확인하거나. 아무생각없이 리스트의 목록을 값을 확인해볼때에도, 디버깅 할때에도 로그를 toString으로 쓰면서 디버깅 해본적도 꽤많았다. Object 의 기본 toString 메서드는 상당히 불편하다. 리액트로 개발을 할 때에는 자바스크립트에서 대충 console.log를 찍으며, 디버깅을 해도 값을 모두 확인해서 나름 편리하다? 라고 생각하며 개발을 했었기에, 다시 자바로 돌아와 개발 할 때에는 불편함을 더 많이 느꼈다. 앞 장인 equals 와 hashCode 아이템만큼의 중요성은 없지만 스스로 아무 생각없이 쓰던 함수이기에 정리해본다. 새로이 알게 된 내용은 다음과 같다. 사용자가 직접 호출하지 않더라도 java 어딘가에서 상당히 많..

JAVA/SPRING

[Spring] Spring / Spring boot 특징 간단 정리.

JDK 17 을 서포트하는 spring 6.0대 버전이 등장했고, Spring Boot 3.0 도 java 17을 최소 버전으로 요구하기 시작했다. LTS 버전이 java 11 이후 17 버전으로 확장 되었다. Java 17에서는 많은 기능이 추가되고 향상되었지만, 현재 쓰는 11버전 이후에 추가된 (개인적으로 써보고 싶은) 기능들은 다음과 같다. 텍스트 블록 기능. 향상된 Switch 문 및 패턴 매칭 기능. Record 불변 객체 타입 ( Lombok 의 value) 프로퍼티 포함 생성자 private final 적용 getter 메소드 생성 toString, equals, hashcode method 생성 annotation울 붙이도록 허용. Sealed class 허용된 (permits) 클래스 ..

ALGORITHM

백준 1012 유기농 배추

https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.StringTokenizer; public class 백준1012유기농배추 { static int[][] baecho; static int M; s..

JAVA

[JAVA] Gabage Collection

→ 가비지 컬렉터(GC) 애플리케이션의 동적 메모리 할당 요청을 자동으로 관리한다. 운영 체제에서 메모리를 할당하고 반환. 애플리케이션이 요청할 때 해당 메모리를 애플리케이션에 전달. 응용 프로그램에서 아직 사용 중인 메모리 부분을 확인. 애플리케이션에서 재사용할 수 있도록 사용하지 않은 메모리를 회수. JAVA는 프로그램 코드에서 메모리를 지정하거나 해제하지 않는다. 객체를 Null로 지정하는 것은 상관없지만, System.gc()메서드를 호출하는 것은 시스템의 성능에 매우 큰 영향을 끼친다. * System.gc() 메서드는 가비지를 탐색 및 정리하는 작업이고 상당히 무거운 작업이다. 공식 문서에 따르면 대부분의 VM 종료시까지 유지되는 초기화 시 할당된 객체 외에는 위의 그림과 같은 그래프에 해당한..

SERVER

[SERVER] docker / centos 8 / oracle cloud

😢 oracle cloud의 centos 8 에 docker를 설치해서 spring boot 프로젝트를 구동해본다. 도커 : 가상의 공간을 이미지로 만듦. 하나의 이미지를 통해 여러개의 컨테이너를 만들 수도 있음. 이러한 과정이 완전히 독립된 가상의 공간에서 실행된다. 그냥 호스트의 포트를 컨테이너의 포트로 연결하기만 하면 된다. 도커 이미지는 Dockerfile이라는 파일로 관리하고, 컨테이너 실행 시, docker-compose 파일을 이용한다. VMware 같은 가상머신과 달리 host OS 위에 또다른 OS를 띄우는 것이 아닌 같은 OS에서 프로세스를 격리 시켜 실행하기 때문에 실행 속도가 빠르고, CPU , memory , network 성능 저하가 거의 없다. docker 설치 이전에 yum-..

SERVER

[SERVER] GitLab CI CD / oracle cloud / docker

The One DevOps Platform From planning to production, bring teams together in one application. Ship secure code more efficiently to deliver value faster. about.gitlab.com GitLab : 중앙 서버에서 Git 저장소를 관리하며, CI / CD 를 통해 DevOps 환경을 구축할 수 있게 도와준다. CI / CD 는 지속적 통합, 지속적 서비스 제공, 지속적 배포를 말한다. 😒 개발팀에서는 보통 메인 리포지토리에 주기적으로 머지 또는 push 한다. CI 원칙을 통한 MERGE → 자동으로 팀에서 만든 CI 스크립트를 통해 빌드 및 유닛 테스트 및 기타 등등을 스크립트등을 통..

SERVER

[Server] Session 과 JWT

🥕 Http 프로토콜에서는 클라이언트와 서버의 통신이 끝나자마자 상태정보를 잊어버린다 (Stateless) 따라서 통신을 할 때마다, 클라이언트의 정보를 요구한다. 이를 해결하기 위한 방법으로 인증을 하게된다. 로그인을 통해 사용자에게 권한을 부여하고, 인증을 통해 사용자의 권한을 확인하고, 반복되는 리소스 낭비를 피하게 된다. 인증에 자주 쓰이는 세션과 토큰을 비교한다. 😢 Session : 유저 인증 성공 이후 서버에 세션 저장. 저장 후 response를 통해 유저의 쿠키에 세션 ID 가 저장되도록 한다. 유저 측에서 http를 요청할 떄에는 Session id 가 포함된 쿠키가 헤더에 포함되며, 서버는 Session id 및 Session Storage에서의 정보를 대조 후, 유저 및 로그인 정보..

ALGORITHM

[피보나치 수열] 재귀호출, 배열

🤢 1 ~ 45 번째 항으로 구한 피보나치 수열은 다음과 같다. 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 433494437 701408733 1134903170 메모이제이션을 사용한 재귀 호출로 구현 할 경우 : package com.org.jmc; import java.util.Scanner; public class 피보나치..

ALGORITHM

[이진 탐색] Binary Search Algorithm

오름차순 정렬이 필수인 알고리즘이다. 특정한 값의 위치를 찾으려 할 때, 중간값을 선택하고 찾고자 하는 값의 크고 작음을 비교한다. O(log n) 의 시간복잡도를 가진다. 하지만 최악의 경우에는 한쪽으로 편향된 트리가 될 수 있다. 이러한 케이스에는 시간복잡도가 O(n) 이 된다. public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = Integer.parseInt(sc.next()); int m = Integer.parseInt(sc.next()); int[] array = new int[n]; for (int i=0; i< n; i++) { array[i] = Integer.parseInt(sc.nex..

girin_dev
'분류 전체보기' 카테고리의 글 목록 (6 Page)