본문 바로가기
반응형

Java17

Reflection(리플렉션) 활용 앞서 프록시를 사용해서 기존 코드를 변경하지 않고 부가적인 기능들을 추가할 수 있는 방법을 배웠습니다. 앞 게시글에서 보았듯이 프록시만 적용한다면 해당 클래스 수만큼 부가적인 기능을 위한 프록시 클래스를 만들어야 한다는 단점이 있습니다. 이러한 단점을 보안하기 위해 자바에서 기본적으로 제공하는 JDK 동적 프록시 기술이나 CGLIB(개발자는 굳이 사용할 일이 없지만 그래도 알아놓자!) 같은 프록시 생성 오픈소스 기술을 사용하면 객체를 동적으로 만들 수 있습니다. 간단하게 리플렉션을 설명하자면 클래스나 메서드의 메타정보를 사용해서 동적으로 호출하는 메서드를 유연하게 끼워 넣을 수 있습니다. https://applepick.tistory.com/160 2022. 5. 22.
맥북 자바 버전 변경하는 방법 https://www.oracle.com/java/technologies/downloads/ 사이트로 들어가서 원하는 자바 버전을 다운로드합니다. 저는 자바 14, 자바 11, 자바 8을 프로젝트에 알맞게 변경해서 사용하고 있습니다. 상위 버전은 아직 안정화가 부족하여 버전을 낮춰야 할 경우도 있더라고요 ㅠㅠ 팀원들과 맞추기 위해! 위에 사진처럼 쭉 따라 하시면 됩니다. 커맨드를 간략하게 적어보겠습니다. 콘솔 창에서 $ java -version java version "15.0.1" 2020-10-20 Java(TM) SE Runtime Environment (build 15.0.1+9-18) Java HotSpot(TM) 64-Bit Server VM (build 15.0.1+9-18, mixed mo.. 2021. 12. 10.
[백준] 2908번 java 상수 문제를 보도록 하자. www.acmicpc.net/problem/2908 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net 상수는 수학을 못한다. 만약 숫자를 123 456 이렇게 두 개를 입력받으면, 상수는 321과 654로 인식해 더큰값을 출력하는 것이다. 증말 이상한 친구다. 아무튼 숫자를 입력받아 StringBuffer를 사용해 reverse로 문자열로 뒤집은뒤 다시 int형으로 바꾸어 비교해서 출력하면 될것같다. 풀이방법을 보자 import java.util.*; public class Main { public s.. 2020. 12. 8.
JAVA) StringBuffer와 String의 차이점과 쓰는이유 알고리즘 문제를 자바로 풀면서 문득 문자열을 이용할 때 어떻게 하면 조금 더 메모리를 효율적으로 쓸수있을까라는 생각이 들었다. 일단 코드를 보자. StringBuffer를 사용한 코드다. 이런식으로 StringBuffer를 선언해주고 문자열을 넣어주는방식이다. 그냥 String을 사용한 코드를 보자. 이런식으로 String s라는 변수를 선언하여 값을 넣어주었다. 결과형식은 똑같다. 하지만 메모리측면에서는 비효율적이다. StringBuffer 객체는 단 한번만 생성된다. String 자료형은 + 연산이 있을때마다 새로운 String객체가 만들어진다. 저기코드에서는 String 자형 객체가 3번이나 생성된다. String 자료형은 한번 값이 생성되면 그 값을 변경할 수가 없다. 이렇게 값을 변경할 수 없는.. 2020. 12. 6.
백준 Java) 3052번 나머지 문제 일단 문제를 한번 보자! www.acmicpc.net/problem/3052 3052번: 나머지 39, 40, 41, 42, 43, 44, 82, 83, 84, 85를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 모두 6개가 있다. www.acmicpc.net 10개의 수를 받아 42로 나눈 나머지 값을 서로 다른 값이 몇 개가 있는지 구하는 것이다. 필자는 선택 정렬로 구현해보면 어떨까?라는 생각으로 풀어보았다. 처음 접근한 방식을 써보겠다. import java.util.Scanner; public class main { public static void main(String[] args) { int[] num = new int[10]; Sc.. 2020. 12. 3.
[운영체제]Producer/Consumer 실습 - 2 상호배제 java에서의 동기화 문제를 해결해보자! 코드를 분석해보자 public class ProducerConsumer { static final int N = 100; static producer p = new producer(); static consumer c = new consumer(); static our_monitor mon = new our_monitor(); public static void main(String args[]) { p.start(); c.start(); } static class producer extends Thread { public void run() { int item; while (true) { item = produce_item(); mon.insert(item); }.. 2020. 10. 2.
백준 java) 10818번 문제 최소, 최대 일단 같이 문제를 보겠습니다. www.acmicpc.net/problem/10818 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net 문제는 아주 심플하죠. N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오. 뭔가 정렬 알고리즘을 쓰면 될 거 같죠? 저는 자바로 구현했습니다. import java.util.*; public class Main { public static void main(String[] arg) { Scanner input = ne.. 2020. 9. 23.
백준 java) 10989번 문제 수 정렬하기 3 문제를 같이볼까요? www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제는 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.가 되겠습니다. 이 문제에서는 런타임오류를 어떻게 해결해야하는지 관건이겠네요. 저는 자바로 구현했습니다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWr.. 2020. 9. 22.
백준 JAVA) 14502번 문제 연구소 일단 문제를 볼까요? www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크� www.acmicpc.net 저는 자바로 구현해보았습니다. import java.util.Scanner; public class Main { static int[] dy = {-1,1,0,0}; static int[] dx = {0,0,-1,1}; static int N,M, an; static int[][] temp, map; static void wall(int v, int cnt) { if(cnt ==3) { temp = .. 2020. 9. 20.
반응형