전체 글 (224) 썸네일형 리스트형 [Java] 동시성 문제 해결하기 1. 개요본 포스팅은 김영한 강사님의 인프런 강의 "자바 고급 1편" 중 동시성 문제를 해결하기 위한 synchronized, ReentrantLock에 대해 정리한 포스팅입니다.2. 동시성 문제? 다음 클래스가 있다 가정하자.public class BankAccountV1 implements BankAccount { private int balance; public BankAccountV1(int initialBalance) { this.balance = initialBalance; } @Override public boolean withdraw(int amount) { log("거래 시작: " + getClass().getSimpleName()); .. 백준 12904 A와 B (C++) https://www.acmicpc.net/problem/12904#include #include using namespace std;int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); string s, t; cin >> s; cin >> t; while (s.size() != t.size()) { if (t.back() == 'A') { t.pop_back(); } else { t.pop_back(); reverse(t.begin(), t.end()); } } if (s == t) .. [SpringBoot] Hello, Multimodule! - 멀티 모듈 설정 1. 멀티 모듈?모듈: 프로그램을 구성하는 시스템을 기능 단위로 분할한 것멀티 모듈: 하나의 프로젝트를 모듈 단위로 분리한 것 멀티 모듈을 사용하여 프로그램을 설계하면 시스템을 역할과 책임 단위로 분리할 수 있어 유지보수성이 증가하고, 코드의 중복도 제거하여 코드를 깔끔하게 작성할 수 있다.2. 아키텍쳐초기의 멀티 모듈 아키텍쳐는 다음과 같이 간단하게 설계하였다.api: controller와 service로 구성, api 요청을 받아 이를 처리하는 작업 수행dbmodule: domain, dto, repository로 구성, 주로 도메인을 dao를 통해 관리하는 작업 수행다음 프로젝트에도 이를 적용하고, 필요 시 설계를 확장 및 분리할 계획에 있다. 3. 디렉토리 구조메인 프로젝트의 디렉토리이다. 다른 .. 백준 1790 수 이어 쓰기 2 (C++) https://www.acmicpc.net/problem/1790#include #include using namespace std;int calLen(int n){ int len = 0; for (int start = 1, i = 1; start n) { end = n; } len += (end - start + 1) * i; } return len;}int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n, k; cin >> n >> k; if (calLen(n) 1. 문제n, k가 주어진다. 1부터 n까지 쭉 나열하여.. Java Record 1. 개요다음 프로젝트에서 본격적으로 사용해보기 위해 record를 정리한 내용이다.2. Record?오라클 공식 문서에 다음과 같이 기재되어 있다.JDK 14 introduces records, which are a new kind of type declaration. Like an enum, a record is a restricted form of a class. It’s ideal for "plain data carriers," classes that contain data not meant to be altered and only the most fundamental methods such as constructors and accessors.자바 14에서 추가된 문법으로, 변경되지 않을 데이터.. Java volatile - 메모리 가시성 1. 개요본 포스팅은 김영한 강사님의 인프런 강의 "자바 고급 1편" 중 volatile 키워드에 대해 정리한 내용이다.2. 멀티스레드 동작 방식과 메모리 가시성다음 코드가 있다고 가정해보자.package thread.volatile1;import static util.MyLogger.log;import static util.ThreadUtils.sleep;public class VolatileFlagMain { public static void main(String[] args) { MyTask myTask = new MyTask(); Thread t = new Thread(myTask, "work"); log("runFlag = " + myTask.runFl.. 백준 6198 옥상 정원 꾸미기 (C++) https://www.acmicpc.net/problem/6198#include #include #include using namespace std;vector arr;int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n; long long ans = 0; cin >> n; arr.resize(n); for (int i = 0; i > arr[i]; } stack st; for (int i = 0; i 1. 문제n(1(1 ≤ h ≤ 1,000,000,000) 가 주어진다. 각 건물의 관리인은 건물의 옥상으로부터 우측에 있는 건물의 옥상을 확인하는 데, 본인이 .. 람다 캡쳐링: Variable used in lambda expression should be final or effectively final 1. 개요멀티스레드를 사용하여 꿈나무 한입 프로젝트를 개선하는 동안 발생한 문제이다. 다음은 공공데이터를 가져오는 코드의 일부이다.공공데이터를 가져오기 위해 url을 만들고, 스레드에서 동작시키기 위해 람다식을 사용하였는데 위와 같은 에러를 잡아냈다. 람다 내부에서 사용되는 변수는 선언 후 수정되어서는 안된다는 뜻이다. IDE의 제안에 따라 다음과 같이 코드를 수정했다.그러나 왜 이런 오류를 잡아냈는지 궁금했고, 이에 대해 찾던 중 람다 캡쳐링의 개념을 알게 되었다. 다음은 이에 대해 정리한 내용이다. 2. 람다 캡쳐링?우선 람다 캡쳐링의 정의는 다음과 같다.스택 영역에 있는 변수를 사용할 수 있도록 지역 변수의 복사본을 람다의 스택에 제공 이게 무슨 말인가? 위 코드를 생각해보자. 위 코드에서 람다를 .. 이전 1 ··· 8 9 10 11 12 13 14 ··· 28 다음