일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- REDIS
- 사이드 프로젝트
- 코드로 배우는 스프링 부트 웹 프로젝트
- 멀티프로세싱
- Spring Security
- FeignClients
- 비사이드프로젝트
- ExceptionHandlerFilter
- asciidoctor
- Spring Reactive Programming
- ExecutorService
- springboot
- 티스토리챌린지
- Apple 로그인
- OAuth2.0
- spring boot
- 멀티태스킹
- 프로세스
- 2024년 상반기 회고
- 비동기
- OpenFeign
- 오블완
- 스레드
- 멀티스레드
- JWT
- microsoft
- Spring Cloud OpenFeign
- 도메인 주도 설계(DDD) 기반 마이크로서비스(MSA) 모델링
- querydsl
- 네이버클라우드 서버
- Today
- Total
목록language (11)
기록하기
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nAino/btsKMN94zlp/MZb2hCCkAxwdmpOIkEn7t1/img.png)
Java 21 의 Virtual Thread 는 기존의 Java 멀티스레딩 모델을 개선하여 '더 높은 처리량' 과 '효율적인 리소스 활용' 을 가능하게 해주었다고 한다.여기서 더 높은 처리량이라는 것은, 같은 시간 및 기간이 있을 때 더 많은 일을 수행하는 것을 의미하는데 그 일을 수행하고 처리량을 증대시킨다는 것의 기준이 되는 개념은 프로세스와 스레드라고 생각해서 이 내용을 먼저 정리하고 그 이후에 Virtual Thread 에 대한 내용을 살펴보고자 한다. 이미 많은 블로그와 강의에서 잘 정리된 내용들이지만, 스스로 내용 정리를 해보지는 않았어서 이 연재의 첫 시작을 '프로세스와 스레드, 멀티태스킹' 으로 잡았다. 프로세스와 스레드, 멀티태스킹(현재글)멀티태스킹하나의 CPU 코어만 있는데도 마치 여러..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bQh5vU/btsvlIa34ms/NpHoXXwFYPvDp6PkPS8gEK/img.png)
혼자 만들어 보려는 toy project 에는 Kotlin 을 활용해서 만들어보려고 한다. 그러기 위해서는 일단 기초적인 내용 학습과 더불어 간단한 web application 을 만들어봐야겠다고 생각을 했고, 학습을 위해 인프런 강의 2개를 수강하고 있다. 수강을 하면서 간단하게 내용을 정리해보려는데 강의 내용과 코틀린 공식 문서를 참고해서 내용 정리를 해보려고 한다. (* Kotiln 을 코틀린이라고 명시함.) Classes 먼저, Class 는 간단한데 코틀린에서는 class 라는 키워드를 활용해서 정의하며 body 가 없으면 {} 는 생략 가능하다. class Person( //기본 생성자 val name: String, var age: Int ) { Constructors 위 예시를 보면 () ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/L2rJs/btsudYMDfKe/sBJQV8Thu3LHSDUIPfDXKk/img.png)
File I/O 자바의 I/O 는 기본적으로 InputStream, OutputStream 이라는 abstract 클래스가 제공된다. 어떤 파일을 읽을 때 InputStream 의 자식 클래스로 읽고, 데이터를 쓸 때에는 OutputStream 의 자식 클래스로 쓰면 된다. 이때 꼭 기억해야 하는 메소드는 read(), close() 이며 특히 close() 의 경우 리소스를 닫을 때 사용하는 메소드로 매우 중요하다. 결국 '자원'을 쓰는 것이므로 close 를 해줘야 하며 try-catch-finally 에서는 finally 에서 close() 처리를 해줄 수 있었다. test.txt 더보기 Java File I/O test file try-catch-finally public class TryCatc..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/eG0XbH/btsts7CzEjD/5RA1kp1WMMRgkEMr2QdmUK/img.png)
String Constant Pool String 클래스는 equals() 메소드를 사용해서 비교를 해야하는데 이는 자바의 Constant Pool 이 존재하기 때문이다. Constant Pool 이란, 객체 재사용을 하기 위해 만들어진 것으로 String 의 경우 동일한 값을 갖는 객체가 있으면 이 객체를 재사용한다. 즉, Constant Pool 이라는 메모리 공간에 중복되지 않는 String 문자열을 저장하고, 해당 문자열에 접근할 때마다 메모리 주소를 반환하는데 이를 통해 메모리 공간을 절약할 수 있다. 그렇다면, 아래의 경우에는 과연 결과가 어떻게 나와야할까? String test1 = "abc"; String test2 = new String("abc"); //1) System.out.prin..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dSiEPm/btssgpL2Fdm/EVKs1Kwg9mCMBurk1Swfr0/img.png)
자바의 아키텍처를 보면 JDK 와 JRE 로 나뉘어져 있는데, JRE 는 자바를 실행할 수 있는 환경의 집합이라고 볼 수 있고 자바에서 제공하는 여러 라이브러리로 구성되어 있다. 이 중에서 GC 는 자바의 성능과도 관련이 있는데, 자동화된 가비지 컬렉터는 낮은 우선순위의 쓰레드로 동작하기 때문에 자바가 높은 성능을 낼 수 있도록 해준다. GC 란 무엇인가 먼저, JVM 이라는 용어를 이해해야 한다. JVM(Java Virtual Machine), 즉 자바 가상 머신은 자바 프로그램이 수행되는 프로세스를 의미한다. java 라는 명령어로 애플리케이션이 수행되면 JVM 위에서 애플리케이션이 동작하는 것이다. 여기서 JVM Heap 메모리와 관련하여 한 가지 주의해야할 것이 있는데, 가급적이면 maxHeapS..
필자가 실무에서 가장 많이 사용하는 자료구조는 List, Set, Map 인데 이들의 차이점은 무엇일까? 간단하게 정리를 해보고자 한다. 순서가 있는 목록 List List 는 순서가 있는 목록을 나타낸다. List 인터페이스의 가장 큰 차이점은 배열처럼 순서가 있다는 것이다. ArrayList 와 Vector 클래스의 사용법은 거의 동일하고 기능도 거의 비슷한 "확장 가능한 배열"이다. 하지만 ArrayList 는 thread safe 하지 않고, Vector 는 thread safe 하다. ArrayList 는 객체를 선언할 때 매개 변수를 넣지 않으면 초기 크기는 10이다. 따라서 10개 이상의 데이터가 들어가면 크기를 늘이는 작업이 ArrayList 내부에서 자동으로 수행된다. 참고로 자바의 모든..
javascript 에서 DOM 을 조작하는 방법에 대해 알아보려고 한다. DOM먼저, DOM 이란?문서 객체 모델(The Document Object Model) 은 HTML, XML 문서의 프로그래밍 interface 이다. DOM 은 nodes 와 objects 로 문서를 표현한다. 이들은 웹 페이지를 스크립트 또는 프로그래밍 언어들에서 사용될 수 있게 연결시켜주는 역할을 담당한다.자바스크립트에서는 HTML 에서의 값을 가져오거나 수정하는 방법으로 접근을 할 수 있다. 아래에서는 자바스크립트에서 DOM 요소에 접근하는 방법을 설명하려고 한다. id 속성을 이용해서 DOM 요소 찾기HTML 에서 id 는 유일한 값 이다. 따라서 이 id 로 찾게 되면 값 하나만 리턴하게 된다.document.get..
Promise 는 "비동기 통신을 하는데 서버로 응답이 왔을 때 그걸 호출한 함수에서 알 수 있도록 약속할게" 라는 의미를 가지고 있다. 즉, 비동기 통신을 하게 될 경우 특정 코드 실행이 완료될 때까지 기다리지 않고 다음 코드를 수행하는 것을 의미하는데 이 특성 때문에 처리 결과를 받아와야 하는 경우 데이터를 받아오지 못하는 문제가 발생하게 된다. 이를 위해 나온 개념이 Promise 이다. 기존 XMLHttpRequest 객체를 사용하여 통신을 하는 코드를 살펴보도록 하겠다. function getData() { const xhr = new XMLHttpRequest(); xhr.open("GET", "http://localhost:3000/posts"); xhr.setRequestHeader("co..
String.prototype 에는 padStart(), padEnd() 함수가 있다. 이 두 함수의 특징은 전달 받은 길이만큼 원하는 문자를 채우는 함수인데, 자바스크립트의 String 오브젝트를 배우면서 가장 기억에 남는 함수라서 먼저 정리를 해보려고 한다. padStart() 첫 번째 파라미터 길이 두 번째 파라미터 채울 문자 첫 번째 파라미터로 전달 받은 길이 만큼 문자열의 앞에 두 번째 파라미터로 채우는 함수이다. let num = "7"; console.log(num.padStart(4, "0")); //0007 이 함수의 경우, 4월을 04월로 표시를 해야하는 경우에도 사용할 수 있다. 예를 들어, 다음과 같이 작성할 수 있는 코드를 padStart() 함수를 사용하면 좀 더 편리하게 원하는..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/yO6qe/btrAlgmp1SV/CXgzRsJyvyuQPNDjoFhFYk/img.png)
백엔드 개발자인 필자에게 css는 생소한 영역이다. 하지만 javascript 공부를 하면서 html, css 에 대한 기초적인 학습을 진행하였고, 모든 내용을 다 정리할 수는 없지만 기초적인 부분이라도 기록을 해보려고 한다. css 적용하는 방법 3가지 1) inline style 태그에서 style 속성을 직접 적용하는 방법이다. 파란색 글자 2) internal css 안에 태그를 작성하여 이 안에 직접 적용하는 방법이다. 3) external css 별도의 css 파일을 만들고 head 태그에 해당 css 파일을 삽입하는 방식이며 가장 많이 사용한다. css 선택자 this is a red colored paragraph. 링크1 링크2 링크3 p 태그 li 태그 li 태그 li 태그 h1 태그 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bQP5hM/btrzAVRZfqi/IrPwVlHq0yvKuKjfRZUmTk/img.png)
html, css 를 공부하며 기존에 잘 몰랐던 내용을 위주로 정리를 해보려고 한다.(사실 html 태그는 공부를 해도 계속 까먹게 되는 것 같다. 자주 사용해야 까먹지 않을 것이다..) 가장 먼저 html 태그에서 b vs strong, i vs em 태그를 비교해보고 처음 알게 된 abbr, cite, image-map 태그를 정리하겠다. 추가적으로 매 번 헷갈리는 target 의 속성에 대해서도 정리를 해보려고 한다. b vs strong 태그 두 태그 모두 텍스트를 굵게 표현하는데 사용하는 태그이다. 하지만 요소는 텍스트 자체에 주의를 끌기 위해 사용하는 것이고, 요소는 콘텐츠 자체의 중요성을 강조할 때 사용한다는 점에서 차이가 있다. 사실 두 태그 역할이 같은데 굳이 구분해서 사용할 필요가 있을..