전체 글

나는 실시간으로 강해지고 있는 백엔드 개발자.
· 코딩/DB
개요 MySQL에서 시간을 출력하는 방법으로 아래 네 가지가 있다. SYSDATE() NOW() CURRENT_TIMESTAMP() CURRENT_DATE() 이 중, NOW()와 CURRENT_TIMESTAMP()는 같다. (YYYY-MM-DD HH:MM:SS) CURRENT_DATE()는 날짜까지만 가져온다. 그렇다면 SYSDATE()가 NOW()와 뭐가 다른지만 보면 된다. SYSDATE()와 NOW() SYSDATE()는 쿼리가 끝난 후 현재 시각이고, NOW()는 쿼리가 시작한 순간의 시각이다. SELECT SYSDATE(), NOW(), CURRENT_TIMESTAMP(), CURRENT_DATE(), SLEEP(5), SYSDATE(), NOW(), CURRENT_TIMESTAMP(), CU..
· 코딩/Java
Arrays.asList(), List.of() 자바는 Array를 List로 변환하기 위해 Arrays.asList( array )를 사용한다. Java 9 부터는 List.of( array )라는 새로운 팩토리 메서드가 도입됐다. 차이점에 대해 알라bo자~ 변경 가능 여부 Arrays.asList()로 반환된 List는 변경이 가능하다. (Mutable) ArrayList를 반환하기 때문에 set이 구현돼있다. (java.util.ArrayList가 아닌 Arrays의 내부 클래스로, add와 remove는 없기 때문에, 크기는 변하지 않는다.) 하지만 List.of()로 반환된 메서드는 변경이 불가능하다. (Immutable) ListN이라는 타입을 반환하고, 이는 불변 객체이다. List list..
· 코딩/Java
SOLID 원칙 객체지향 설계원칙 hckcksrl.medium.com 개요 SOLID는 객체지향 설계 5대 원칙으로, SRP(단일 책임 원칙) OCP(개방-폐쇄 원칙) LSP(리스코프 치환 원칙) ISP(인터페이스 분리 원칙) DIP(의존 역전 원칙) 을 말한다. 1. SRP - 단일 책임 원칙 (Single Responsibility Principle) 모든 클래스는 각각 하나의 책임만 가져야 한다. 클래스는 그 책임을 완전히 캡슐화해야 함을 말한다. 2. OCP - 개방-폐쇄 원칙 (Open Closed Principle) 확장에는 열려있고 수정에는 닫혀있어야한다. 기존의 코드를 변경하지 않으면서(Closed), 기능을 추가할 수 있도록(Open) 설계가 되어야 한다는 원칙을 말한다. 구현에 의존하기..
0. 서론 식스펙 HTTP 요청 메서드 - HTTP | MDN HTTP는 요청 메서드를 정의하여, 주어진 리소스에 수행하길 원하는 행동을 나타냅니다. 간혹 요청 메서드를 "HTTP 동사"라고 부르기도 합니다. 각각의 메서드는 서로 다른 의미를 구현하지만, 일부 developer.mozilla.org 1. 본론 우선 각 요청에 대해 공통적으로 평가할 기준, Safe 와 Idempotent, Cacheable에 대해 간단히 보za Idempotent는 앞선 포스팅들에서 언급한 바 있다. 멱등성이다. 동일 요청을 한 번 보내는 것과 여러번 보내는 것이 결과가 같고, 서버의 상태를 변화시키지 않는다면 멱등성을 갖는 것이다. Safe, 안전함은, 멱등성의 상위 개념이다. (안전하면 멱등성을 갖지만, 멱등성을 갖는..
HTTP Method의 멱등성 HTTP 메서드의 멱등성(Idempotent)에 대해 알아보자 velog.io 0. 서론 RESTFul한 API를 설계하기 위해 포스팅을 한 적이 있는데 https://seungnong.tistory.com/entry/RESTFul%ED%95%9C-API-%EC%84%A4%EA%B3%84 사실 그냥 URI 규칙만 정리한거지, 실제 적용은 어려운 포스팅인 것 같다. (직접 해보니까 할수록 질문만 생긴다) 앞 포스팅에서 멱등성이 나왔는데, 이번엔 HTTP Method들의 멱등성에 대해 더 알아보ja ja ja ja 1. 멱등성 멱등성(Idempotent)는 수학이나 전산학에서 연산을 여러 번 적용해도 결과가 달라지지 않는 성질을 의미한다. f( f(x) ) = f(x) 와 같이..
0. 서론 HTTP Method를 다루게 된 계기: RESTFul한 API 설계를 하기 위해 프로젝트를 리팩토링하는 과정에서... 요청의 행위를 표현하기 위해 HTTP Method를 잘 활용해야 한다는 점에 주목했다. 때문에 GET, POST, PUT, DELETE를 썼는데, 내용적으로 PUT보다 PATCH가 맞을 것 같다는 피드백이 있어서 이에 대해 조사해보았다. 1. PUT과 PATCH PUT 정의: HTTP PUT 메서드는 요청 페이로드를 사용해 새로운 리소스를 생성하거나, 대상 리소스를 나타내는 데이터를 대체한다. PATCH 정의: HTTP PATCH 메서드는 리소스의 부분적인 수정을 할 때 사용된다. 정의만으로 내가 알던 것과 다르고, 차이점도 드러나는 것 같다. 그래도 더 부연하자면, PUT은..
· 코딩/Java
1. Atomic ... 클래스 Long 과 AtomicLong은 어떤 차이가 있을까? 개요 프로젝트를 진행하면서 HashMap을 이용해 Key-Value 형태로 된 InMemory DB를 직접 구현하던 도중, 유저의 정보를 저장할 때 Long Type으로 선언된 유저의 ID값을 증가시켜줘야 하는 경우가 생겼습니 simgee.tistory.com 앞서 멀티스레드 환경에서 동시성 이슈가 발생할 수 있기 때문에 synchronized, volatile 등을 쓴다고 언급한 바 있다. 그리고 AtomicLong이 약간 갑자기 등장한 감이 있는데 이에 대해 요점만 정리해보자. 자바에서는 AtomicInteger, AtomicLong, AtomicBoolean, AtomicReference 클래스를 제공한다. 이 ..
· 코딩/Java
논 블로킹 알고리즘(Non-blocking Algorithms) 이 글은 원 저자 Jakob Jenkov의 허가로 포스팅된 번역물이다.원문 URL : http://tutorials.jenkov.com/java-concurrency/non-blocking-algorithms.html 동시성에서의 논 블로킹 알고리즘이란 쓰레드간의 공유된 상태(자원) parkcheolu.tistory.com 0. (1/2)에서의 낙관적 락에 대해... 앞서 언급한 컴페어 스왑을 통한 낙관적 락은 공유 자료구조에 알맞게 동작한다. 이 공유 자료구조는 단일 컴페어 스왑 연산에서 전체 자료구조가 새로운 자료구조로 교체될 수 있는 (swappable) 성질을 가진다. 그러나 전체 자료구조를 변경된 복제본으로 교체하는 일이 언제나 가..
· 코딩/Java
논 블로킹 알고리즘(Non-blocking Algorithms) 이 글은 원 저자 Jakob Jenkov의 허가로 포스팅된 번역물이다.원문 URL : http://tutorials.jenkov.com/java-concurrency/non-blocking-algorithms.html 동시성에서의 논 블로킹 알고리즘이란 쓰레드간의 공유된 상태(자원) parkcheolu.tistory.com 동시성에서 스레드간 공유 상태(자원)로의 접근이 발생할 때... 블로킹과 논블로킹 알고리즘이 어떻게 동작하는지 알아보자. 1. 블로킹 동시성 알고리즘 Thread B가 lock한 데이터에 Thread A가 접근하면 blocked되어 대기한다. Thread B가 unlock을 해주면 대기 중이던 Thread A가 다시 lo..
· 코딩/Java
1. synchronized, volatile 1-1. synchronized 자바에서 멀티스레드로 인해 동기화를 제어해야하는 경우가 있는데, 가장 흔히 아는 Synchronized 키워드에 대해 먼저 알아보자. Java의 동기화 Synchronized 개념 정리#1 Java의 동기화 -Synchronized 키워드의 사용Java를 프로그래밍 하다면 multi-thread로 인하여 동기화를 제어해야하는 경우가 생깁니다.그래서 흔히 Synchronized 키워드를 사용하는데요그냥 multi-thread로 동시 tourspace.tistory.com 이 블로그에 잘 나와있는데... 마지막 예시를 내 마음대로 수정해서 적용해보았다. public class SyncBlock { private Map map1 =..
승농
개발자국의 승농