전체 글
-
Cache Memory 란 무엇인가 ?CS-Theory/OS 2023. 9. 6. 12:23
하드디스크에서 데이터 파일을 불러와 cpu 에서 연산을 수행을 하는 상황을 이해해보자 . 1. Main Memory 의 등장 배경 , DRAM Dyanmic Random Access Memory CPU 의 연산 속도 차이와 HDD/SDD(외장메모리) 의 연산 속도 , 데이터 I/O로 인하여 발생하는 속도의 차이로 인하여 병목 현상이 발생하고 이러한 문제점을 해결하기 위하여 cpu 가 작업할 데이터와 명령들을 저장하는 Main Memory 를 두게 되었다. Main Memory 는 보통 DRAM 을 사용한다. In Memory DB Redis 도 DRAM 을 기본으로 동작한다. 2. Cache Memory 의 등장 ,SRAM : Static Random Access Memory 기술의 발전에 따라 프로세서..
-
Genric 이 타입 일반화인 줄 만 알면, 주니어입니다.Java&Spring/Java 2023. 9. 4. 20:32
Generic : 클라스나 메소드에서 사용할 내부 데이터 타입을 외부에서 지정하는 기법 이다. - 하나의 값이 다양한 타입을 지정 받기 위하여 사용 한다. API 의 response class 가 정해져 있지 않은 상황에서 API 의 data body 를 Generic 으로 선언 후 개발을 진행 하고 완료후 타입을 강제 할 수 가 있다. - 컴파일 타임에 타입이 정해짐으로 따로 캐스팅을 해줄 필요가 없다. [자세한 내부 동작은 글 하단에서 다룬다.] 예시의 모든 설명은 다음과 같은 상속 관계를 갖는다. 클라스 Object
-
자료구조 Stack , add vs pushJava&Spring/Java 2023. 9. 4. 18:15
자바의 스택 자료 구조는 다음과 같이 선언 사용이된다. Stack stack = new Stack(); stack.add(1); stack.push(2); stack.add(0,71); stack.add(stack.size(),71); stack.add(stack.size()-1,74); System.out.println(stack.peek()); System.out.println(stack); stack.pop(); stack.add(stack.size() + 1,100); // out of index 보통의 자료구조인 stack 을 사용하는 것은 선입 후출의 개념으로 사용이 되며 , push , pop 의, 연산을 지원하지만. Java 의 Stack 의 경우 정말 독특한점은 add() 도 같이 지원을..
-
Sort : Arrays.sort() vs Collections.sort() & 배열 다중 정렬 및 출력Java&Spring/Java 2023. 9. 4. 17:40
Arrays.sort() vs Collections.sort 두개는 사용하는 정렬이 다르다. .... ? 정답 ) Collections.sort() 는 List 객체를 object 로 변환해서 Arrays.sort() 를 실행한다. Arrays.sort() 는 primitive type 의 경우 DualQuickSort , 아닌 경우 Merge Sort 를 변형시킨 TimSort 를 사용한다. QuickSort() 의 경우는 안정성을 보장하지 않는다 . 1,4,3,3,5,3 일때 , 중복되는 숫자의 순서가 바뀔 수가 있다. - 원시 타입의 값들은 배열의 중복되는 값들의 순서가 중요하지 않는 경우이니 , 평균속도가 빠른 QuickSort 를 이용하고 - 안정성이 보장이 되어야 하는 "객체" , 중복값을 가..
-
GC 기본 개념 , 종류Java&Spring/Java 2023. 9. 4. 17:06
GC 의 동작 → Heap 영역에 존재하는 객체들에 대해 접근 가능한지 확인 한다. → GC Root 에서 부터 시작하여 참조 값을 따라가며 접근 가능한 객체들에 mark 하는 과정을 진행 → Mark 되지 않은 객체 즉 , 접근 할 수 없는 객체는 제거(Sweep) 대상이 되고 , 해당 객체들을 제거 mark sweep comapct algo Stop the world : GC 를 실행하기 위해 JVM이 애플리케이션 실행을 멈추는 것 GC Root 가 가능한 대상 1. JVM 메모리의 stack 영역에 존재한는 참조 변수 2 . Method Area static 데이터 3 . JNI 에 의해 생성되는 객체 Serial GC - Single thread - stw 가장 김 - mark sweep coma..
-
SpringBoot MySql bulkInsert 도입기Project/TravelFeelDog 2023. 8. 30. 22:58
배치란 일련의 작업을 한번에 수행하는 작업을 뜻한다고 한다. 1만건의 데이터를 생성한 후 한방 쿼리를 사용하여 데이터베이스에 저장을 하는 테스트 코드이다. @IntegrationTest public class FeedBulkInsertTest { @Autowired private FeedRepository feedRepository; @Test public void bulkInsert() { var easyRandom = FeedFixtureFactory.get( 4L, LocalDate.of(1998, 12, 1), LocalDate.of(2024, 2, 1) ); var stopWatch = new StopWatch(); stopWatch.start(); int _1만 = 10000; var post..
-
[1차] 셔틀버스 Java 풀이 [프로그래머스]CodeingTestPrac/Java Coding Test 2023. 8. 29. 17:03
https://school.programmers.co.kr/learn/courses/30/lessons/17678?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 구현 문제이다 . 상황이 복잡하였지만 , 카카오 코테 성격상 예시테케를 다맞추면 통과한다라는 믿음을 가지고 진행을 하자. 처음 문제를 푸는데 있어 예시테케를 하나씩 통과하는 방식으로 구현을 하다보니 복잡성이 커져 수정이 불가했다. 용기를 가지고 주요 로직 부분을 지우고 종이에 예시를 적으면서 출력되는 상황을 체크했다. 문제 이해의 부분은 "버스는 여석이 있어도 바로 출발"..
-
[프로그래머스] 후보키 Java 조합 - 재귀 , 백트래킹CodeingTestPrac/Java Coding Test 2023. 8. 28. 14:10
파이썬을 이용한 코딩테스트시 간단하게 라이브러리를 호출하여 조합을 뽑아내는 것 이 가능했지만 자바는 직접구현을 해야한다. 숫자 4가 주어졌을때 1 , 2, 3,4 , (1,2),(1,3) ,,,, (1,2,3,4) 와 같은 숫자를 출력하는 코드를 짜보자. n = 4 일때 , nCr 을 구현하니 변수 r 도 필요하다. 재귀를 사용하며 , 배열의 크기와 r 이 같으면 탈출 하는 조건문을 추가해준다. @Test public void combination_test() { int n = 4; var s = showCombination(n); System.out.println(s); } List answer = new ArrayList(); public int showCombination(int n) { for(i..