본문 바로가기
반응형

Delvelopment60

[JAVA] 데이터 타입, 리터럴이란 , 변수의 Scope(범위) LifeTime(수명) 자바의 데이터 타입 자바의 데이터 타입은 크게 기본 타입(Primitive type)과 참조 타입(Reference type)으로 구성된다. 기본 타입 (Primitive type) 정수 byte (1 byte) char (2 byte) short (2 byte) int (4 byte) long (8 byte) 실수 float (4 byte) double (8 byte) 논리 boolean (1 byte) 참조 타입 (Reference type) 배열 타입 열거 타입 클래스 인터페이스 데이터 타입에 대해 제대로 이해하고 있어야 메모리에 어떻게 적재되는냐도 생각 할 수있다. 기본타입 (Primitive type) Java의 기본 타입은 정수, 실수, 문자, 논리 리터럴을 직접 저장하는 타입을 말한다. 메모.. 2022. 1. 3.
[JAVA] JVM의 구성요소 및 동작원리 JVM이란? Java Virtual Machine? JVM(Java Virtual Machine)은 몇가지 특징을 가지고 있다. 플랫폼(windows, Mac OS, Linux, etc)에 독립적이다. OS에 구애받지 않고 사용이 가능하다. 프로그램이 실행되는 도중에도 동적으로 OS로부터 메모리 할당받아 스스로 관리한다 (GC, Garbage Collection) 바이트 코드란 바이트 코드란 JVM이 이해할 수 있는 언어이다.Java는 OS에 독립적이기 때문에 JVM이 이해할 수 있는 언어로 제공해야하며, Java 컴파일러를 통해 바이트코드로 컴파일한다. JVM의 구성요소 및 동작 JVM의 구성요소는 Memory 관리, Class Loader, Execution Engine 등으로 구성되어 있다. JVM.. 2021. 12. 26.
[Spring, Java] SLF4J Logger 올바른 사용법. (log4j2, logback) 새로운 직장으로 회사를 옮기면서 레거시 시스템을 보는일이 생기게 되었고, Logger를 세가지 방법으로 사용하는 것을 보고 공유가 필요하다고 느꼇다. (정확히 레거시의 개발자는 누군지 모르겠다. 많은 사람들의 손을 탄거 같다.) 우선, Spring 에서 Logger를 세가지를 쓸 수 있다, Log4j2, log4j, logback 이다. 세개의 차이는 " " 에서 확인해 보면된다. 이 글은 어떤 라이브러리를 쓰든 공통으로 지켜야할 약속이라고 생각한다. (성능적으로 가독성 측면으로) Log의 발생이 성능적으로 큰 이슈가 될 수 있음을 경험해 봤는데, 스트레스 테스트를 10만 건을 진행했을때 Logger를 어느정도 사용했냐 안했냐에 따라 성능적인 지표가 크게 차이났기 때문이다. 보통의 개발자는 신경쓰지 않지.. 2021. 11. 20.
[REDIS] Sorted Set 명령어 정리 이번에 Redis 자료형 중 Sorted Set 을 사용하여 관련 명령어를 정리하고자 한다. Sorted Set - Set과 Hash가 혼합된 타입이다. - 하나의 Key에 Socre와 Value로 구성이된다. - Socre 기준으로 정렬이 가능한 형태이다. (Score : floating point value) - Value는 Score로 Sort되며 Score가 같으면 Value로 Sort 된다. [ZADD] Key에 Value, Score를 추가 redis> ZADD myzset 1 "one" (integer) 1 redis> ZADD myzset 1 "uno" (integer) 1 redis> ZADD myzset 2 "two" 3 "three" (integer) 2 redis> ZRANGE my.. 2021. 8. 6.
[Java] String, StringBuilder, StringBuffer 차이, 사용하기. 알고쓰자! 시간적 여유가 있어. 정리를 다시 해볼까한다. 대부분의 개발자들은 String, StringBuffer, StringBuilder의 알고리즘적인 특징을 알아야 한다고 생각하며, 왜 쓰이는지에 대해서 써볼까한다. 연산속도는 String이 StringBuffer, StringBuilder 보다 느리고 메모리 관점으로 바라봐도 비효율적인 측면을 가지고있다. 즉, 단일 스레드 환경에서는 StringBuilder를 사용하고 멀티 스레드 환경에서는 StringBuffer가 적합하다. (Thread-safe) 하지만, 속도적인 측면에서는 비동기에 적합한 StringBuilder 가 적합하고 볼 수 있다. String이 StringBuffer, StringBuilder 보다 연산속도가 느린이유는 String 클래스는 .. 2021. 6. 25.
[Spring] 트랜잭션 설정 propagation (전파속성) @Transactional 종류 / propagation 전파속성 Spring framework 환경하에서 개발하다보면 필요한 Transaction에 대한 기본적인 설정들이다. 간혹 설정을 제대로 안해놔서 rollback이 되버리는 case도 존재하기도 했었다. REQUIRED와 REQUIRES_NEW를 보통 사용했는데, 다른 격리수준도 확인차 정리한다. REQUIRED(기본값) 부모 트랜잭션이 없다면 새로운 트랜잭션 생성.해당 메써드가 호출한 곳와 별도의 쓰레드라면 어떤 동작이 일어날까? 답은 전파 레벨과 상관 없이 무조건 별도의 트랜잭션을 생성하여 해당 메써드를 실행한다. Spirng은 내부적으로 트랜잭션 정보를 ThreadLocal 변수에 저장하기 때문에 다른 쓰레드로 트랜잭션이 전파되지 않는다 중.. 2021. 3. 19.
반응형