본문 바로가기

전체 글221

[Java] ThreadLocal ThreadLocal 여러 쓰레드가 같은 인스턴스 필드의 값을 변경하는 상황에 발생하는 동시성 문제를 해결하는 방법으로 자바는 언어 차원에서 ThreadLocal이라는 것을 제공한다. ThreadLocal은 각 쓰레드 별로 전용 내부 저장소를 만들어 값을 관리하는 방법으로 동시성 문제를 해결한다. ThreadLocal 사용법 ThreadLocal threadLocal = new ThreadLocal(); //데이터 저장 threadLocal.set("Hello"); //데이터 조회 threadLocal.get(); //데이터 삭제(쓰레드 로컬의 모든 값을 삭제하는 것이 아닌 해당 쓰레드의 값만 삭제) threadLocal.remove(); set을 하면 해당 쓰레드 전용 저장소에 값이 저장되고, get을.. 2021. 12. 30.
[MySQL] DELIMITER - 구분 문자 변경하기 일반적인 프로그래밍 언어에서와 마찬가지로 MySQL에서도 세미콜론(;)을 사용하여 쿼리문을 구분하는데, DELIMITER 문을 사용하여 구분 문자를 세미콜론이 아닌 다른 문자로 변경할 수 있다. DELIMITER 사용할_구분_문자이러한 DELIMITER는 스토어드 프로시저의 범위를 구분하기 위해 사용된다. CREATE PROCEDURE 안에서도 마찬가지로 구분 문자로 세미콜론(;)이 사용되는데 이렇게 되면 어디까지가 스토어드 프로시저의 범위인지 구분하기 어려워진다. 그래서 프로시어의 범위를 구분하기 위해 다음과 같이 DELIMITER를 사용하여 일시적으로 구분 문자를 변경한다. DROP PROCEDURE IF EXISTS findMemberByName; DELIMITER $$ -- 구분 문자를 $$로 변.. 2021. 12. 26.
[알고리즘/백준] 20056 마법사 상어와 파이어볼 - 삼성 SW 역량테스트, 구현, 자바 문제 https://www.acmicpc.net/problem/20056 풀이 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { private static class Fireball { int r, c; int m; //질량 int s; //속력 int d; //방향 public Fireball(int r, int c, int m, int s, int d) { this.r = r; this.c = c; this.m = m; this.s = s; this.d = d; } } private static int[] dx.. 2021. 12. 18.
[알고리즘/백준] 16236 아기 상어 - 자바(Java), 삼성 SW 역량테스트, 너비우선탐색(BFS) 문제 https://www.acmicpc.net/problem/16236 풀이코드 일반적인 BFS 풀이 방법에 추가적인 조건을 덧붙혀서 풀이해야되는 문제이다. BFS를 한번 진행할 때마다 상어가 이동 가능한 모든 곳을 탐색하며 먹을 수 있는 최단 거리의 물고기를 찾는데 만약 최단 거리가 같은 물고기가 여러개 있는 경우 더 위쪽에 있는 물고기를, 이 또한 같다면 더 왼쪽에 있는 물고기 한마리를 먹는다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { static class Pos { int x; int y; public.. 2021. 11. 15.
[알고리즘/백분] 14890 경사로 - 자바(Java), 삼성 SW 역량테스트, 구현, 시뮬레이션 문제 https://www.acmicpc.net/problem/14890 풀이 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { static int n, l; static int[][] board; private static boolean isRoad(int pos, boolean isRow) { int[] road = new int[n]; boolean[] check = new boolean[n]; //경사로 체크 //road 배열에 board 배열의 검사 대상 행 또는 열 복사 for (int i = 0; i .. 2021. 11. 10.