반응형

최신 글

more

[Java] 스레드 풀(ThreadPool) 이란? ThreadPool 종류

ThreadPool 이란? 100개의 작업을 비동기적으로 처리해야할 때에, 어떤 방법을 떠올릴 수 있을까? 간단히 스레드를 100개 만들어 처리하는 코드를 작성해보자. public class ExecutorExample { public static void main(String[] args) throws ExecutionException, InterruptedException { Thread thread = new Thread(new Task()); thread.start(); System.out.println(Thread.currentThread() + " hello"); } static class Task implements Runnable { @Override public void run() { t..

Java 2024.03.12 0

[Java] SLF4J로 예외 로깅하기

이 글에서는 자바에서 SLF4J를 이용하여 예외를 로깅하는 방법에 대해 알아볼 것이다. slf4j-simple API를 이용하도록 하겠다. 일반적으로, 대부분의 예외들은 Logger 클래스의 error() 메서드로 로그를 남긴다. void error(String msg); void error(String format, Object... arguments); void error(String msg, Throwable t); 우선 Logger를 먼저 초기화하도록 하자. Logger logger = LoggerFactory.getLogger(NameOfTheClass.class); 만약 단순히 에러 메시지만을 보여주고 싶다면, 다음과 같이 추가할 수 있다. logger.error("An exception oc..

Java 2024.02.27 1

[Java] SerialVersionUID 란?

SerialVersionUID는 클래스 버전에 대한 식별자이다. 내가 최초로 만든 Book이라는 클래스는 이 최초의 모습을 유지하지 않고, 개발을 거듭하면서 계속해서 버전업이 될 것이다. 처음에는 title이라는 필드만 있었지만, 나중에는 author, content 등 여러 필드가 추가될 수 있고 또 필요에 따라 추가했던 필드를 삭제하게 될 수도 있다. 이렇게 다양하게 변모할 수 있는 클래스의 버전을 식별하기 위해 SerialVersionUID가 필요하다. class Book implements Serializable { private String title; private String author; private String content; } 위와 같은 형태의 최초(v1)의 Book을 직렬화한 뒤에..

Java 2024.02.20 0

[Java] Unchecked Exception에 관한 논쟁

Java는 RuntimeException이나 Error와 같은 unchecked exception을 핸들링하도록 강제하지 않기 때문에, 프로그래머들은 unchecked exception만을 던지는 코드를 작성한다거나 RuntimeException을 상속하는 예외만을 만들어 사용하는 등의 유혹에 빠질 수 있다. 이렇게 하는게 프로그래머 입장에서는 편리할 지 모르지만, 이는 예외 처리에 관한 책임을 회피하는 것으로 이어져 결국 해당 클래스를 사용하는 쪽에서 문제가 발생하게 될 수 있다. 왜 Java를 설계한 사람들은 메소드 내부에서 발생할 수 있는 checked exception을 메소드에 명시하도록 강제했을까? 메소드를 호출하는 쪽에서는 해당 메소드가 어떤 예외를 발생시킬 수 있는지를 알아야 이를 어떻게 ..

Java 2024.02.01 0

Heap Inspection

Heap Inspection은 보통의 개발자들이 잘 신경쓰지 않는 보안 취약점이다. 개선하기가 쉽지 않을 뿐 아니라, 대부분의 라이브러리 또는 프레임워크가 이를 처리할 수 있도록 잘 설계되어져있지 않기 때문이다. So what is Heap Inspection? Heap Inspection이란, 메모리 덤프(Memory dump)와 같은 방법을 통해 메모리에 저장된 데이터를 읽는 정보 탈취 공격을 말한다. 메모리에 직접 접근함으로써 패스워드와 같은 민감한 정보들을 빼갈 수 있게 된다. 이에 대한 예방책은 민감한 정보가 메모리에 올라와있는 시간을 최소화하는 것이다. 필요한 경우 데이터를 암호화하고, 더 이상 필요없어진 데이터는 메모리에서 해제해야 한다. Java Secure Coding String 객체는..

Technical Writing 2023.11.13 1

스크롤과 페이징

일상에서 핸드폰 또는 컴퓨터를 통해 어떠한 정보를 얻고자 하는 상황을 떠올려보자. 그 정보는 보통 스크롤 또는 페이지네이션으로 제공되곤 한다. 방대한 양의 정보를 작은 화면에 모두 나타내기란 어려운 일이기 때문이다. 이 글에서는 우리에게 익숙한 두 기법을 UX의 관점과 기술의 관점으로 나누어 비교 분석해보고자 한다. 1. UX의 관점에서 1.1. 무한 스크롤 무한 스크롤은 마감선이 보이지 않는 상태에서 방대한 양의 콘텐츠를 스크롤할 수 있는 인터페이스 패턴이다. 이 기술을 구현한 페이지에서는 사용자가 스크롤하여 하단에 닿을 때 새로운 페이지가 로드된다. 장점 뛰어난 사용자 인터랙션 튜토리얼과 같이 연속적이고 긴 콘텐츠에서 뛰어난 사용성을 제공한다. 페이징에서 보여줄 수 없는 역동성을 선보일 수 있다. ..

Technical Writing 2023.11.09 3

[리눅스 마스터 1급] 20170311 기출문제 풀이

1. 다음 중 운영체제의 목적으로 틀린 것은? ① 효율적 사용 (efficient use) ② 사용자 편리성 (user convenience) ③ 비간섭 (noninterference) ④ 대화형 처리 (Interactive Processing) 운영체제의 목적 일정 시간 동안 처리하는 일의 양을 의미하는 처리능력(Throughput)의 향상을 목적으로 한다. 작업 의뢰 후 시스템에서 결과가 얻어질 때까지의 시간을 의미하는 반환 시간(Turnaround Time)의 최소화를 목적으로 한다. 주어진 문제를 정확하게 처리하는 정도를 뜻하는 신뢰도(Reliability)의 향상을 목적으로 한다. 이용할 수 있는 시스템의 자원이 어느 정도인가를 의미하는 사용 가능도(Availability)의 향상을 목적으로 한..

[백준] 19581. 두 번째 트리의 지름 (JAVA)

📏 두 번째 트리의 지름 별 거 아닌데 이상한 개념에 사로잡혀서 헤맸어 . . 문제 트리에 N개의 정점이 있고, 각 정점 별로 1부터 N까지의 번호가 붙어있다. 트리에서 가장 먼 두 정점 간의 거리를 트리의 지름이라고 한다. 트리의 지름을 구하는 문제는 너무 많기 때문에 우리는 두 번째 트리의 지름을 구하려고 한다. 두 번째 트리의 지름은 무엇이냐? 바로 두 번째로 가장 먼 두 정점 간의 거리를 의미한다. (두 번째 트리의 지름은 트리의 지름과 같을 수 있다.) 바로 두 번째 트리의 지름을 구해보자. 입력 첫 번째 줄에는 정점의 개수 N(3 ≤ N ≤ 100,000)이 들어온다. 둘째 줄부터 N번째 줄까지 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수..

백준 2021.06.02 0

[백준] 3665. 최종 순위 (JAVA)

🏆 최종 순위 좀 어렵게 느껴졌던 위상 정렬 문제 ㅠ ㅠ 문제를 이해하는게 오래 걸렸다;; 문제 올해 ACM-ICPC 대전 인터넷 예선에는 총 n개의 팀이 참가했다. 팀은 1번부터 n번까지 번호가 매겨져 있다. 놀랍게도 올해 참가하는 팀은 작년에 참가했던 팀과 동일하다. 올해는 인터넷 예선 본부에서는 최종 순위를 발표하지 않기로 했다. 그 대신에 작년에 비해서 상대적인 순위가 바뀐 팀의 목록만 발표하려고 한다. (작년에는 순위를 발표했다) 예를 들어, 작년에 팀 13이 팀 6 보다 순위가 높았는데, 올해 팀 6이 팀 13보다 순위가 높다면, (6, 13)을 발표할 것이다. 창영이는 이 정보만을 가지고 올해 최종 순위를 만들어보려고 한다. 작년 순위와 상대적인 순위가 바뀐 모든 팀의 목록이 주어졌을 때, ..

카테고리 없음 2021.05.31 0

[백준] 10986. 나머지 합 (JAVA)

➕ 나머지 합 수학적 사고가 약간은 필요한 누적 합 문제(?) 문제 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) 쌍의 개수를 구해야 한다. 입력 첫째 줄에 N과 M이 주어진다. (1 ≤ N ≤ 106, 2 ≤ M ≤ 103) 둘째 줄에 N개의 수 A1, A2, ..., AN이 주어진다. (0 ≤ Ai ≤ 109) 출력 첫째 줄에 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 출력한다. 🔑 IDEA sum[i]를 i번 째 수 까지의 누적 합이라 할 때, i+1부터 j까지 구간의 누적합은 sum[j]..

백준 2021.05.31 1
반응형