728x90

백엔드개발자 10

[Java]Virtual Thread란 ?

2023년 9월에 릴리즈 예정인 Java 21은 Java 8 이후 세번째 LTS 버전 입니다. LTS는 Long Term Support 의 약자인데 보통 장기 지원 버전. 즉, 일반경우보다 장기간에 걸쳐 지원하도록 고안된 버전을 의미합니다. ※ 현재까지 출시된 LTS은 Java 8, 11, 17 이다. LTS를 사용하게 되면, 사용하는 소프트웨어의 버전 업그레이드에 대한 부담을 줄이고 안정성을 높힐 수 있게 되죠. 새롭게 출시되는 Java 21에는 가상 스레드(Virtual Thread) 라는 기능이 추가 될 예정 입니다. 이 기능을 한번 성능 테스트 해보겠습니다. 해당 글은 https://findstar.pe.kr/2023/04/17/java-virtual-threads-1/ Virtual Thread..

JAVA 2023.05.12

[회고] 이탈리아 가이드 출신 개발자의 2022년 회고

2022년이라는 한해가 금방 지나갔다. 개발일을 하면서 가장 빠르게 지나간 한해이지 않을까싶다. 2022년초 미래를 위해 고민을 했었고, 그러한 고민의 결과로 이직을 하였으며, 이직 이후 진행한 프로젝트 및 자사 솔루션 기능들을 개발하다보니 시간이 순식간에 지나갔다. 사진 찍는걸 좋아하는 나지만 앨범에는 그 어느때보다 사진이 적은걸 보니, 올 한해는 꽤나 열심히 살았다는것을 느끼게 되었다. 지난 한해를 돌아보며, 난 어떤것을 이루었고, 또 어떤것이 미흡했는지 조금씩 알아보고자 한다. Tech Blog 총 54개의 글을 작성했다. 정확히 말하자면, 이직을 하기전에는 꾸준히 작성을 했지만, 이직을 하고 난 뒤에는 글이 올라오는 갯수가 현저하게 줄었다. 바쁘다라는 핑계는 하고싶진 않다. 회사의 분위기는 오히려..

생각정리 2022.12.26

[회고] 이탈리아 가이드 출신 개발자의 2022년 10월 월간회고

10월 한달 정리 Tech Blog localStorage와 sessionStorage 차이점 업무를 하다가 localStorage와 sessionStorage를 번갈아 쓰는일이 생겼는데, 간단하게 메모를 하였다. Storage에서 무조건 쓴다는게 중요한게 아니라, 상황에 맞게 바로바로 지워줘야하는경우도 있고, 유지를 해줘야하는 경우도 있는지라, local과 session을 구분해서 사용해야한다. localStorage 경우에는 세션이 바껴도 데이터가 유지 될 경우 주로 사용하게 된다. Study 바쁜 프로젝트로 인하여 잠시 멈춰있었던 Spring과 JPA 공부를 다시 시작했다. 기초부터 보고있지만 아직은 어색어색 그 자체라 명확하게 이해되진 않는다. 주기적으로 계속 봐줘야할듯? 회사 솔루션 제품도 공부..

생각정리 2022.10.29

[회고] 이탈리아 가이드 출신 개발자의 2022년 9월 월간회고

9월 정리.. Tech Blog 회사의 솔루션 제품을 연구하고 익히느라 따로 블로그에 공부한 내용을 작성하지 못했다. Study 기록할만한 공부를 하지 못함.. Company 힘들었던 9월...상식이 통하지 않는 말 같지도 않은 사람때문에 너무 힘들었다. 급작스런 주말 출근을 2번이나 하게됬고, 아무런 결함이 없는데도 사소한거 하나하나 꼬투리를 잡으면서, 오류라고 우기며 우리에게 뒤짚어씌우려고하는게 너무나도 괘씸했다. 개발도 모르는 사람이 도대체 뭘 보고 단순 복사 + 붙여넣기 수준이라고 말을 하는건지 이해가 안됬네. 그따구로 일을 해야 20년동안 이 회사에서 살아남을수가 있는건가?! 진짜 말 안통하는 사람이랑 일해서 너무나 힘들었다.. 주말에 출근하니 에너지가 회복되는 느낌도 받지 못했고.. 진짜 개발..

생각정리 2022.09.30

[Server] Cache(캐시) 란?

1. 캐시(Cache)란? Cache란 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킴. 아래와 같은 저장공간 계층 구조에서 확인할 수 있듯이, 캐시는 저장 공간이 작고 비용이 비싼 대신 빠른 성능을 제공. Cache는 아래와 같은 경우에 사용을 고려하면 좋다. 접근 시간에 비히 원래 데이터를 접근하는 시간이 오래 걸리는 경우(서버의 균일한 API 데이터) 반복적으로 동일한 결과를 돌려주는 경우(이미지나 썸네일 등) Cache에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다. 결국 Cache란 반복적으로 데이터를 불러오는 경우에, 지속적으로 DBMS 혹은 서버에 요청하는 것이 아니라 Memory에 데이터를 저장하였다가 불러다 쓰는 것을 의..

[Java] 동시성 문제

CPU가 어떤 작업을 처리하기 위해 데이터가 필요할 때, CPU는 RAM의 일부분을 고속의 저장 장치인 CPU Cache Memory로 읽어들인다. 이 읽어들인 데이터로 명령을 수행하고 이 데이터를 다시 RAM에 저장하기 위해서는 데이터를 읽어들일 때의 과정을 역순으로 밟는다. 즉, 적절한 시점에 CPU Cache Memory에서 RAM으로 쓰기 작업을 하게 된다. 그러나 CPU가 캐시에 쓰기 작업을 수행했다고 해서 바로 RAM으로 쓰기 작업을 수행하지 않는다. 반대의 과정인 읽기 작업도 마찬가지이다. 동시성 프로그래밍에서는 CPU와 RAM의 중간에 위치하는 CPU Cache Memory와 병렬성이라는 특징 때문에 다수의 스레드가 공유 자원에 접근할 때 2가지의 문제가 발생 될 수 있다. 가시성 문제 가..

JAVA 2022.03.28

[JPA] JPA 기본 시작

persistence.xml 통해 필요한 설정 정보를 관리 package jpabook.start; import javax.persistence.*; import java.util.List; /** * @author holyeye */ public class JpaMain { public static void main(String[] args) { //엔티티 매니저 팩토리 생성 EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabook"); EntityManager em = emf.createEntityManager(); //엔티티 매니저 생성 EntityTransaction tx = em.getTransaction(); //트랜..

JAVA 2021.12.21

[Node.js] #3 http 모듈로 서버 만들기(1)

1. 요청과 응답 이해하기 서버는 클라이언트가 있기에 동작하며, 클라이언트에서 서버로 요청(request)을 보내고, 서버에서는 요청의 내용을 읽고 처리한 뒤 클라이언트에 응답(response)을 보낸다. 요청과 응답을 바로 이벤트 방식이라고 표현한다. 클라이언트로부터 요청이 왔을 때 어떤 작업을 수행할지 이벤트 리스너를 미리 등록해야함. 아래는 가장 기본적인 서버의 요청과 응답 const http = require('http'); http.createServer((req, res) => { res.writeHead(200, { 'Content-Type' : 'text.html; charset=utf-8' }); res.write('Hello Node!'); res.end('Hello Server!');..

node.js 2021.11.12

[Node.js] #2노드의 기능

1. REPL 사용하기 자바스크립트는 스크립트 언어이므로 미리 컴파일을 하지 않아도 즉석에서 코드를 실행 할 수 있음. 노드도 비슷한 콘솔을 제공하는데, 입력한 코드를 읽고(Read), 해석하고(Eval), 결과물을 반환하고(Print), 종료할 때까지 반복한다(Loop) 라고해서 REPL라고 부름(Read Eval Print Loop). 읽고, 해석한 뒤 바로 결과물을 출력했다. REPL은 한 두줄짜리를 테스트하기엔 좋지만 여러줄을 실행하기에는 불편함. 2. JS 파일 실행하기 코드가 길 경우에는 코드자체를 자바스크립트 파일로 작성하여 파일을 통쨰로 실행하는 것이 좋다. ex) node [자바스크립트 파일 경로] 3. 모듈로 만들기 모듈 : 특정한 기능을 하는 함수나 변수들의 집합. 모듈은 하나의 프로..

node.js 2021.11.11

[Node.js] #1 node.js 첫 시작. 노드(node.js) 란?

Node.js 란? : Chrome V8 JavaScript 엔진으로 빌드된 Javascript 런타임. 서버 : 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램을 말함 노드는 자바스크립트 프로그램이 서버로서 기능하기 위한 도구를 제공하므로 서버 역할을 수행 할 수 있음. 노드의 특성 1. 자바스크립트 런타임 쉽게 말하면 자바스크립트 실행기로 이해 할 수 있다. 기존에는 자바스크립트를 웹 브라우저 위에서만 실행 할 수 있었음. V8과 libuv는 C와 C++로 구현되어 있지만 노드가 알아서 연결해주기때문에 노드를 사용 할 때 C와 C++는 몰라도 실행 가능하다. 2. 이벤트 기반 이벤트 기반(event-driven)이란 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식을 ..

node.js 2021.11.11
728x90