본문 바로가기
728x90

전체 글252

자바 프레디케이트란?예제코드와 함께..간단히 알아보자. 모던 자바 인 액션 공부하다 살펴 봄. 프레디케이트(predicate)란 무엇인지 간단히 알아봄. 함수형 인터페이스로 입력된 값을 확인하여 false, true 를 반한하는 메소드 test()를 가지고 있음 public class Ch01 { public static boolean isGreenApple(Apple apple) { return "green".equals(apple.getColor()); } public static boolean isHeavyApple(Apple apple) { return apple.getWeight() > 150; } public static List filterApples(List inventory, Predicate p) { List result = new Arra.. 2023. 1. 29.
자바 cpu 개수 구하기 cpu 개수구하기 => int availableProcessors = Runtime.getRuntime().availableProcessors(); System.out.println(availableProcessors); Executors.newCachedThreadPool 처럼 필요시 알아서 생성되는 스레드도 있으니 확인해보자. ExecutrService 를 통한 스레드 작업을 할때 이용해 봐야겠다. 참고하면 좋은 곳: https://m.blog.naver.com/mals93/220743747346 2023. 1. 28.
[RealMysql 8.0]04아키텍처 4.2.7 ~ 4.2.7.4 InnoDB 버퍼 풀 InnoDb 스토리지 엔진에서 가장 핵심적인 부분으로 "디스크의 데이터 파일이나 인덱스 정보를 메모리에 캐시해 두는 공간"이다 쓰기 작업을 지연시켜 일괄 작업할 수 있게 해주는 버퍼 역할도 같이 한다. 일반적인 application 에서는 insert, update, delete 처럼 데이터 변경하는 쿼리는 데이터 파일의 여러곳에 위치한 레코드를 변경하기 때문에, 랜덤한 디스크 작업이 발생하지만, 버퍼 풀을 통해 이러한 변경된 데이터를 모아서 처리하면 랜덤한 디스크 작업의 횟수를 줄일 수 있다. 버퍼 풀의 크기 설정 운영체제와 각 클라이언트 스레드가 사용할 메모리도 충분히 고려해서 설정해야 한다. 초기설정 후 모니터링을 통하여 조금씩 줄이거나 늘리는걸 추천 운영체제 전체 메모리 8G.. 2023. 1. 28.
[RealMysql 8.0]04아키텍처 4.2.1 ~ 4.2.6 프라이머리 키에 의한 클러스터링 InnoDb의 모든 테이블은 기본적으로 프라이머리 키를 기준으로 클러스터링되어 저장된다. 즉 프라이머리 키 값의 순서대로 디스크에 저장된다. 모든 세컨더리 인덱스는 레코드의 주소 대신 프라이머리 키의 값을 논리적인 주소로 사용한다.(디스크 접근도 프라이머리 키로 접근한다.) 프라이머리 키를 통한 범위 검색이 매우 빠르지만, 쓰기 성능은 저하된다. 클러스터링? 테이블을 여러 노드로 분산하는 기술, 이를 통해 데이터베이스의 성능과 확장성을 향상시킬 수 있음. 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술 mysql 은 프라이머리 키를 기준으로 클러스터링하기 때문에 프라이머리 키 값에 대한 인덱싱을 통해 쿼리가 빠르게 수행됩니다. InnoDb 스토리지 엔진과는 달리 MyI.. 2023. 1. 28.
[RealMysql 8.0]04아키텍처 4.1.3 ~ 4.1.10 그냥 기억 정리. 메모리 할당 및 사용 구조 mysql 에서 사용되는 메모리 공간은 크게 글로벌 메모리 영역, 로컬 메모리 영역으로 구분할 수 있다. 글로벌 메모리 영역 mysql 서버가 시작되면서 운영체제로부터 할당된다. 클라이언트 스레드와 무관하게 하나의 메모리 공간만 할당 받는다. 필요에따라 n개의 메모리 공간을 할당 받을 수 있지만 이는 클라이언트 스레드 수와는 무관하다. 생성된 글로벌 영역이 n개라 하더라도 모든 스레드에 의해 공유된다. 대표적인 메모리 영역은 => 테이블 캐시, InnoDb 버퍼 풀, InnoDb 리두 로그 버퍼 등이 있다. 로컬 메모리 영역 세션메모리 영역이라고도 한다.(클라이언트와 서버의 커넥션을 세션이라 부르기도 하여) 클라이언트 스레드가 쿼리를 처리하는 데 사용하는 메모.. 2023. 1. 28.
[RealMysql 8.0]04아키텍처 4.1 ~ 4.1.2.2 그냥 기억 정리 글. MySql 엔진 아키텍처 Mysql 서버는 크게 MySql 엔진, 스토리지 엔진으로 구분할 수 있음. 전체구조 MySql 서버 MySql 엔진 요청된 sql 문장을 분석하거나 최적화 하는 등 dbms 의 두뇌에 해당하는 처리를 수행 스토리지 엔진 실제 데이터를 디스크 스토리지에 저장, 디스크 스토리지로부터 데이터를 읽어오는 부분을 전담한다. 핸들러 API mysql 엔진의 쿼리 실행기에서 데이터를 쓰거나 읽어야 할 때, 각 스토리지 엔진에 쓰기, 읽기를 요청하는데 이러한 요청을 핸들러 요청이라하고, 여기서 사용되는 api를 핸들러 api 라고 한다. mysql 스레딩 구조 mysql 서버는 프로세스 기반이 아니라 스레딩 기반으로 작동, 크게 1.포그라운드 스레드, 2.백그라운드 스레.. 2023. 1. 28.
StringTokenizer, split 차이점[공유링크] 둘다 문자열을 구분자로 분리하고 싶을때 사용 StringTokenizer 은 java.util 메서드 split은 String 메서드 속도는 몇몇 경우에서 StringTikenizer 가 빠르다. 하지만 split 을 대부분 추천한다. 한번 읽어보면 좋은 링크: https://blog.naver.com/PostView.nhn?blogId=makga87&logNo=221949199317&parentCategoryNo=&categoryNo=17&viewDate=&isShowPopularPosts=true&from=search 2023. 1. 23.
자바 Scanner vs BufferedReader 자바로 알고리즘 풀다가 매번 입력받는 형식을 Scanner 복붙으로 하다, BufferedReader 로 받는 방식이 보여 찾아봄. Scanner 방식 import java.util.Scanner; public class Sc { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String input = sc.nextLine(); } } BufferedReader 방식 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Bf { public static void main(Stri.. 2023. 1. 22.
클래스리스, 서브넷마스크, 서브네팅 간략히. - 클래스리스, 서브넷마스크, 서브네팅 - 플래스풀의 단점을 해결하기 위해 나옴 - 클래스별로 나누는게 아닌 서브넷마스크를 중심으로 구분함 - 서브네팅: 네트워크를 나눈다는 의미 - 서브넷: 서브네트워크, 쪼개진 네트워크 - 서브넷마스크: 서브네트워크를 위한 비트마스트 - 앞에 1의 비트만큼을 네트워크주소로 할당 - 11111111.11111111.11111111.0 - 3번째 옥텟까지를 네트워크 주소로 할당됨 - 호스트주소는 254개(256-2)까지 설정가능 - 11111111.11111111.11111111.10000000 - 호스트주소는 128개까지 설정가능 - 11111111.11111111.11111111.11000000 - 호스트주소는 64개까지 설정가능 - 즉 서브넷마스크에 비트를 &&연산자.. 2023. 1. 19.
728x90