| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 29 | 30 | 31 |
- 백준 연결요소 자바
- spring mongoTemplate switch
- java 파티
- 백준 1504 java
- kotiln const
- mongodb lookup
- Java Call By Refernce
- ipfs bean
- 백준 2252 줄세우기
- rabbitmq 싱글톤
- java 백준 1509
- spring mongoTemplate
- ipfs singletone
- go
- Spring ipfs
- Claude Intelij 연결
- spring mongodb switch
- 익명 객체 @transactional
- java 팩토리얼 개수
- 자바 백준 팩토리얼 개수
- spring mongodb
- 백준 특정한 최단 경로
- nodejs rabbitmq
- 안정해시
- kotiln const val
- kotiln functional interface
- 자바 1676
- java 1509
- java 1238
- javav 1676
- Today
- Total
목록분류 전체보기 (199)
공부 흔적남기기
ThreadLocal이란 각 쓰레드마다 저장소를 만들어 동시성 문제를 해결한다. spring을 사용하다 보면 주로 Bean들을 주로 싱글톤으로 생성하기 떄문에 동시성 문제에 빠질 수 있다. 2개 이상의 쓰레드에서 동시에 싱글톤 객체를 접근하여 싱글톤 객체의 필드를 수정하게 되면 동시성 문제에 빠지게 된다. 이 때 이 문제를 해결하는 방법중 하나로 쓰레드 로컬을 사용한다. 쓰레드 로컬은 쓰레드마다 각 저장소를 만들어 해당 쓰레드에서만 사용할 수 있는 로컬 저장소를 생성한다. 따라서 쓰레드에서 싱글톤을 동시에 접근해 수정해도 각자 쓰레드의 저장소를 사용하므로 문제가 되지 않는다. ThreadLocal 주의점 쓰레드로컬을 사용할 때 주의해야 할 것은 주로 WAS는 ThreadPool을 사용한다. 즉 Threa..
프로세스란? 프로세스는 어플리케이션을 실행시키면 생기는 것으로, OS로 부터 필요한 자원을 할당 받아 프로세스가 된다. 프로세스는 OS로 부터 할당 받은 자원을 이용해 쓰레드를 통해 어플리케이션을 동작시킨다. 즉 모든 프로세스는 하나이상의 쓰레드가 존재하며 쓰레드가 두개 이상인 것을 멀티쓰레드라고 한다. 쓰레드란? 위에서 언급했다시피 프로세스 내부에서 실제로 어플리케이션 행위를 하는 것이 쓰레드이다. 멀티쓰레드를 사용하게 되면 CPU사용률 향상, 자원 효율성 향상, 사용자의 응답성 향상 등 많은 장점이 있지만 교착상태, 동기화 등 문제가 생길 수 있기 때문에 주의가 필요하다. package spring.advanced; public class MyRunnableThread { Runnable myRunn..
퇴근 후 공부 자극을 위한 목표. 1. 현재 하고 있는 노마드 코인 끝내기 (4월 중으로 끝내기) Go & Blockchain 2. 네트워크 공부하기 (15시간 강의 분량) 5월 중으로 끝내기 network 기초 응용 pki ssl까지 3. c++과 자료구조 다시 공부하기(6~7월) 48시간 강의 분량 + 자료구조는 따로 C++과 자료구조 다시 공부하고 싶은 욕구 충만 6~7월달에도 과연? 4. 복기한 c++로 윈도우 소켓 개발 하기 (8~9월) 끝 5.10~11월에는 디자인 패턴, 고급 spring, SQL 좀 다시 공부하고 6. 12월에는 ts배워서 nest.js로 그럴싸한 백엔드 하나 만들어봐야지. 1년이 순식간에 사라졌다.. 2023/04/11 생각의 변화 최근 공부 방향에 대해 고민을 많이 해봤..
JDK란 JDK는 자바 어플리케이션을 만들기 위한 개발자 도구이다.(JRE,JAVA API, javac.exe) 자바를 개발하고 컴파일 한후 실행할 수 있게함 JRE란 jre는 JDK와 달리 개발이 아닌 오직 자바 어플리케이션을 실행하기 위한 최소 환경이다. Docker에 jar파일을 실행시키기 위한 이미지를 작성할 때 주로 jre를 사용한다. jdk를 설치하게되면 javac.exe -> 자바 컴파일러로 .java(개발 확장 파일) 파일을 .class(jvm이 읽는 바이트코드) 로 파일을 생성한다. java.exe -> 위 생성한 .class 파일을 jvm을 이용하여 실행시킨다. javap.exe -> 컴파일된 .class를 .java로 역컴파일 한다. (-c) 옵션을 사용해야함 jar.exe -> ja..
자바란? 자바는 객체지향 프로그래밍 언어로 운영체제로 부터 독립적으로 실행할 수 있다. 자바의 역사 자바는 1991년 오크라는 언어로부터 시작되어 썬의 엔지니어들이 가전제품에 탑재하기 위한 소프트웨어를 만들 용도로 만든 언어이다. 자바는 정적인 웹페이지에 사운드와 애니메이션 등 멀티미디어적인 요소들을 제공할 수 있는 유일한 방법이였기 때문에 많은 인기를 얻게된다. 하지만 보안상의 이유로 더이상 사용되지 않고 현재는 Servlet과 JSP, 안드로이드, 웹개발에 자주 사용된다. 자바의 특징 운영체제에 독립적이다. ( 자바로 개발된 Application은 하드웨어와 직접 통신하지 않고 JVM을 통해 통신하기 때문에 운영체제에 알맞은 JVM만 존재한다면 운영체제와 상관없이 동작한다. 즉 운영체제마다 알맞은 J..
문제는 간단하다 내가 소유하고 있는 카드들과 존재여부를 확인하고 싶은 카드들을 입력받는다. 범위를 보면 -10000000~10000000 로 int로도 처리 된다. 나는 처음에 생각한게 먼저 단순히 target을 python의 in연산자로 찾으면 O(N)의 시간 복잡도로 찾아지게 되므로 시간초과가 뜰 것같았다. 그래서 리스트에서 값을 찾을 때 O(logN)의 속도로 찾을 수 있는 이분탐색을 사용해서 찾을려고 했다. 근데 멍청하게 O(logN)에서 찾은 애들은 remove를 시켜주겠다는 생각을 했다. list에서 remove를 해주는 것이 더빠르다고 생각해서 remove를 해주었다. 하지만 일반 적인 생각말고 시간복잡되 관점에서 remove는 찾는 것과 마찬가지로 O(N) 시간복잡도를 가진다. 그래서 O(..
오랜만에 백준에 들어가서 문제하나를 푸는데 이진탐색 최대 최소가 헷갈려서 확실하게 정리하고 넘어가고자 함. 기본적인 이진 탐색은 n개의 원소를 가지고 있는 배열에서 특정 수를 찾는다고 가정할 때 양 끝을 기준으로 중앙에 있는 숫자와 찾는 특정 수를 비교해가며 찾는 방식이다. 이분 탐색을 통해 최대 최소를 구할 때 최대가 의미하는 것은 기준점보다 작은 것중 가장 큰것이고 최소가 의미하는 것은 기준점보다 큰 것중 가장 작은 것이다. 나처럼 헷갈리는 사람은 없길.. def bin_search_basic(arr: list[int], target): min = 0 max = len(arr) - 1 arr.sort() if max
맨날 웹개발만 하다가 refresh를 위해 선택한 blockchain 추가로 떠오르는 언어인 go와 함께.. 2월달에 강의를 시작해서 오늘 드디어 끝냈다. blockchain 기본 구조와 go를 겉핥기 해본 것 같은데 좋은 경험이었다. 간단하게 복기 해보면 blockchain은 block들이 hash값을 가지고 서로 연결되어있다. block에는 유의미한 데이터를 넣고 탈중앙화 된 DB에 저장시킨다. (P2P 이용) 유저들은 이 탈중화된 DB를 가지고 서비스를 이용한다. P2P를 통해 각 노드들이 연결되거나 블럭이 추가되거나 mempool에 데이터가 추가되면 sync하는 과정을 ws로 진행했는데 꽤나 재밌었다. 그리고 나는 block에 bitcoin과 비슷하게 transaction을 넣었는데 이때 사용된 ..
dsn : 나의 오류를 보낼 API endpoint (dsn이 없다면 자동으로 sentry가 적용되지 않는다) sentry turn on/off 설정 가능 . debug : sentry가 잘 작동하는지 이상하진 않는지 확인해줌 -> 개발환경에선 키지 않는 걸 권장( test할 때 잘 동작하는지 확인하고 배포할때는 끄고 배포하자) diagnosticLevel : debug mode와 함께 사용되는 option 특정 범위에서만 debug가 보이게 할 수 있음 이것도 테스트할 때나 사용하자 dist : 이미지를 release 해두고 여러곳에 배포할때 dist를 설정해서 나눠서 볼 수 있다? 이정도? release : 릴리즈 버전 단위로 서비스 에러를 관리 할 수있음 ex) front, backend 를 릴리즈..
Go에서 자주사용하는 GoRoutine에서 필수적인 Channel 흔히 사용하는 것은 unBufferChannel 이지만 bufferChannel의 존재를 알게 되어 정리함. 먼저 unBufferChannel은 말그대로 채널에 버퍼가 없기때문에 (공간이 하나밖에 없다는 말) channel에 데이터가 들어가면 그 데이터가 소비될 때까지 blocking이 된다. 하지만 bufferChannel은 코더가 채널의 버퍼 크기를 정해주어 channel에 해당 개수까지는 데이터가 차고 그다음에 데이터가 소비될 때까지 blocking 되는 것이다. package BufferdVersusUnBufferedChannel import ( "fmt" "math/rand" "time" ) var hamburgerMaterial..