전체 글 46

Process와 Thread

정의 Process 실행중인 프로그램을 말한다. 운영체제로부터 시스템 자원을 할당 받는 작업의 단위를 말한다. 프로그램을 실행하면 OS로 부터 메모리를 할당받아 프로세스가 된다. 정리 : 운영체제에서 자원을 할당받아 실행중인 프로그램이다. Thread 프로세스 내에서 실행되는 흐름의 단위. 할당 받은 자원을 이용하는 실행의 단위. 프로세스 안에서 여러개가 생길 수 있다. 프로세스의 자원을 이용해서 실제로 작업을 수행하는것을 쓰레드라고 말할 수 있다. 경량 프로세스라고 불리기도 한다. 정리 : 쓰레드는 프로세스 안에서 실제로 작업을 수행하는 실행단위이다. Multi Process 하나의 응용프로그램을 여러개의 프로세스로 구성하여 하나의 작업을 처리하게 하는것이다. Multi thread 하나의 응용프로그램..

Server 2022.04.04

Cookie / Session - sticky session / session clustering

정의 HTTP프로토콜의 비연결성과 무상태성을 보완하기 위하여 사용하는 기록정보 파일을 말한다. 쿠키 클라이언트가 어떤 웹사이트를 방문할 경우 그 사이트의 서버를 통해 클라이언트 브라우저에 저장되는 기록정보 파일을 말한다. 세션 클라이언트가 어떤 웹사이트를 방문할 경우 그 사이트의 서버에 저장되고 관리하는 기록정보파일을 말한다. 구조/특징 쿠키 key-value형식으로 저장된다. HttpServletResponse: Status = 200 Headers = [Set-Cookie:"userName=ssg", "password=ssg123"] 서버에서 클라이언트로 Response객체를 보낼때 응답헤더의 Set-Cookie에 담아 전송한다. HttpServletRequest: HTTP Method = GET R..

Server 2022.02.12

kafka 실행시 명령 줄이 너무 깁니다

rem Classpath addition for release for %%i in ("%BASE_DIR%\libs\*") do ( call :concat "%%i" ) 윈도우 환경에 kafka를 설치해서 실행시킬 일이 있었다 cmd창에서 kafka-server-start.bat ../../config/server.properties 명령어로 실행시켰고 다음과 같은 문구가 출력되었다. 입력 줄이 너무 깁니다. 명령 구문이 올바르지 않습니다. 확인해보니 kafka-server-start.bat실행시 같은 폴더 안에 있는 kafka-run-class.bat를 참조하여 같이 실행시키는데 여기서 너무 많은 classpath를 호출하여 문제가 생기는 것이였다고한다... 윈도우 cmd는 명령줄에 8192글자까지 제한..

kafka 2021.09.29

@ManyToOne 양방향 맵핑시 stackoverflowError - lombok @Data를 사용할 경우

@Entity @Data @Table(name= "test_a") public class testA { @Id @Column private String id; @OneToMany(mappedBy = "testA"} private List testBList; } @Entity @Data @Table(name= "test_b") public class testB{ @Id @Column private String id; @Column(name = "test_a_id") private String testAId; @ManyToOne @JoinColumn(name = "reference_design_id", referencedColumnName = "id") private testA testA; } 다음과 같이 ..

JPA 2021.09.09

spring security + jwt loadUserByUsername에서 엉뚱한 값을 받는다

개인기록용 spring security+jwt토큰 활용하여 api서버구성하였음. 프론트는 리액트에서 인터셉터에 JWT토큰값 따로 가지고 있다가 API서버로 요청보낼때마다 토큰보내는 상황. 초기로그인시에는 loadUserByUsername메소드 호출시 입력한 유저ID값으로 정상적으로 동작했는데 그 이후에 뭐 요청할때마다 loadUserByUsername에 유저ID값을 받는게 아니라 DB의 ID값을 받아서 제대로 동작을 안했음 OncePerRequestFilter를 상속받아 doFilterInternal메소드를 거칠때 다음과같이 Claims객체로 jwt토큰을 이용해서 사용자 고유값을 받아오는 과정이 있는데 Jwts.parser().setSigningKey(secret).parseClaimsJws(token)..

spring 2021.08.26

CrudRepository로 save()를 사용하면 select가 먼저 실행됨

CrudRepository를 사용하여 save()를 실행시키면 종종 insert가 아닌 update가 일어나는걸 볼 수 있었는데 /* * (non-Javadoc) * @see org.springframework.data.repository.CrudRepository#save(java.lang.Object) */ @Transactional public S save(S entity) { if (entityInformation.isNew(entity)) { em.persist(entity); return entity; } else { return em.merge(entity); } } save()처리시 파라미터로 받은 엔티티를 isNew로 분기처리하여 persist나 merge를 시킨다. 엔티티에서 id값이 ..

JPA 2021.08.18