java

· Dev_log/Java
Optional Optional이란? Java 8 버전에서 추가된 타입으로 값의 유무를 표현한다. null 값을 대체할 수 있다. 프로젝트를 진행할 때 가장 번거로운 NullPointException을 대체할 수 있는 아주 좋은 방안이다. 즉, null이 올 수 있는 값을 감싸는 wrapper 클래스로 참조해도 NullPointException이 발생하지 않도록 도와준다. Optional 클래스 내부를 살펴 볼까? 하고 들어가 보니 value, EMPTY와 같은 필드가 존재해 null이더라도 NPE가 발생하지 않는다..! public final class Optional { private static final Optional EMPTY = new Optional(); private final T val..
AOP가 무엇인가? Aspect Oriented Programming (관점 지향 프로그래밍) 횡단 관심사의 분리를 허용해 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임 여러 객체에 공통으로 적용할 수 있는 기능을 분리해, 반복 작업을 줄이고 핵심 기능 개발에만 집중할 수 있습니다. 즉, 비즈니스 로직과 공통 로직을 분리해서 구현하는 것 입니다. AOP 예시 나는 학부생으로써, Factorial을 구현하는 과제를 부여 받았다. Factorial을 구현할 때 반복문 방식, 재귀 방식 2가지로 구현해야한다. 과제를 제출하기 직전, 과제에 새로운 내용을 추가해야했다. 바로 실행시간도 함께 출력하도록 하는 것이다. 이런 위와같은 예시에서 일반적인 코드 형식을 보자 //계산기를 구현하기 위한 Calculat..
· TIL/CS
Garbage Collector Java를 다뤄봤다면 한 번쯤 들어봤을 법한 언어 GC 이것은 대체 무엇일까? Heap 메모리에 위치한 unreachable한 객체를 삭제시켜주는 것 더 이상 사용하지 않는 객체를 의미한다. 객체가 null인 경우 객체가 블럭 안에서 생성되고 블럭이 종료 되었을 경우 부모 객체가 null이 되었을 경우, 자식 또는 포함된 객체들 C, C++ 등의 코드 레벨에서는 메모리를 직접 할당받고, 헤제해야 지만 //C++ char *s = malloc(sizeof(char)*10); s = "Hello GC!"; printf("%s", s); free(s) // 그래서 Java8과 Java11의 큰 차이점 중 GC 개선(Paralle -> G1)으로 인한 성능 향상이라고 합니다 왜 ..
[BOJ] 21318번 : 피아노 체조 (S1 - Java) 완전 탐색 : 시간 초과 난이도가 떨어질 때 배열에 저장 후 누적합 계산으로 해결 풀이 링크 : [BOJ] 2470번 : 두 용액 (G5 - Java) 이분 탐색과 투 포인터를 고민하던 중 투포인터로 해결 산성 용액의 값과 염기 용액의 값을 Math.abs로만 [BOJ] 20057번 : 마법사 상어와 토네이도 (G3 - Java) 풀이에 2일, 디버깅에 하루를 할애한 문제 구현(시뮬레이션) 문제에서 취약점이 있다는 약점을 발견 X영역 주변의 1%에 퍼질 모래와 Y영역 주변에 2~10%모래가 퍼질 영역 2개로 나누어서 계산 Y영역 주변에 모래가 퍼질 때 ㅗ 모양을 따라 3방향 탐색 실시 3방향 탐색은 1번만 더 너비 탐색을 수행하면 된다 시간이 ..
문제 링크 https://www.acmicpc.net/problem/21608 특별한 알고리즘 없이 단순 구현문제였다. 주어진 조건들을 잘 구현하면 쉽게 풀 수 있을것이라 생각한다. 풀이 문제 길이가 길었을 뿐 풀이는 비교적 간단했다. 다만 구현 과정에서 중복되는 코드가 많아 체점 시간이 320ms 언저리로 나온 것 같다. 입력값 처리 seq 배열 : 배치 순서를 담은 배열 index : 배치 순서 값 : 학생의 번호 students 맵 : 학생 번호(key)와 좋아하는 학생(value)를 저장한다. 인접한 칸에 위치한 좋아하는 학생을 파악하기 위해 Set의 contains를 통해 확인하고 싶었다. N = Integer.parseInt(st.nextToken()); int[][] map = new int..
· Dev_log/Java
[JAVA 1강] 컴파일 및 Call By ____ 사전 지식 자바는 OS에 독립적인 특징을 가지고 있다. JVM이라는 가상머신 때문! 어떤 이유에서 독립적인지 컴파일 과정을 통해 알아보자 JVM 목적 자바 프로그램이 어느 기기나 운영체제 상에서도 실행 될 수 있도록 하는 것 프로그램 메모리를 관리하고 최적화 하는 것 컴파일 순서 자바의 구동 : OS위에 JVM이 실행된다. 개발자(사용자)가 .JAVA코드 작성 컴파일러가 .JAVA 소스파일을 컴파일 => .class 파일(byte code)로 변환된다. 모든 application의 시작지점은 main() .class파일을 클래스 로더가 JVM에게 전달 클래스 로더는 동적로딩(Dynamic Loading)을 통해 필요한 클래스들 로딩 및 링크 하여 런타임..
사전조건 .gitignore에 .settings가 추가 되어 이클립스에서 import해도 Dynamic web project로 표시되지 않을 때 web project는 프로젝트를 나타내는 아이콘 우측상단에 지구모양이 존재한다..! java project는 폴더가 열린모양 끝! IDE는 Eclipse를 사용(필자의 경우 macOS, Eclipse 20-12 버전 사용) 요약 프로젝트 properties - facet을 설정해주면 된다. (.settings)가 생성됨 해결과정 새로운 환경에서 시작한다. Project Import → Server폴더는 제외 혹시 모를 문제를 위해 Server는 새로 생성할 것이다. 콘솔창이 있는 하단 뷰에서 Server 클릭 서버 새로 생성 서버 새로 생성 SSAFY내에서는 ..
Dev우키
'java' 태그의 글 목록