본문 바로가기

Study59

[Java] Java7과 Java8의 특징 정리 Java7의 특징 Try-with-resources 지원 다이아몬드 연산자를 활용한 Type Reference(타입 추론)지원 다중 Exception Catching 숫자 리터럴에서 언더스코어(underscore) 지원 Switch문에서 String 객체 사용가능 @SafeVarargs 지원 Java8의 특징 Heap Permanent Generation 제거 Interface Default and Static Methods Functional interfaces Lambda expressions Method References Date and time API 지원 Optional 지원 Stream API Collections Parallel Array Sorting (배열 정렬의 병렬처리) Bas.. 2021. 9. 18.
[Java] 해시 함수(Hash Function)란? 해시 함수는 임의의 길이를 갖는 메시지를 입력받아 고정된 길이의 해시값을 출력하는 함수예요. 저장된 자료의 양에 상관없이 원소 하나를 저장하고 검색하는 것을 상수 시간에 가능하게 하기 위해 해시 테이블이 나왔어요. Hash 함수 임의의 길이의 데이터를 고정된 길이릐 데이터로 매핑하는 함수예요. h(x) = x mod 13 위와 같은 계산값을 좋은 해시 함수의 조건 계산이 간단해야 함. 입력 원소가 해시 테이블 전체에 고루 저장되어야 함. (해시 충돌을 막아야 한다는 말이에요) 위에서 정의한 함수에서 7과 20의 값을 입력하면 같이 7이라는 출력값이 나와요. 이때 해시 충돌이라 얘기해요 해시 충돌 해결 체이닝 같은 주소로 해싱되는 원소들을 모두 하나의 연결 리스트에 매달아서 관리, 원소를 검색할 때는 해당.. 2021. 9. 14.
[Docker] —memory 옵션 kernel 예외 docker run -it --name swap_500m \ --memory=200m \ --memory-swap=500m \ ubuntu:14.04 위와 같은 명령어를 실핼할때 WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. 커널 설정의 문제로 swap에 대한 제한을 지원하지 않는다는 경고문구가 떠요(컨테이너는 실행됨!). 지금 사용하는 리눅스 커널은 swap limit capabilities를 지원하기에. grub 설정을 바꾸고 재시작해요. sudo vim /etc/default/grub 아래 내용을 추가해요. ... GRUB_CMDL.. 2021. 8. 29.
[DB] 하이버네이트(Hibernate)란? ORM 기술에 대한 명세인 JPA(Java Persistence API)의 구현체의 한 종류 JPA의 구현체이므로 JPA의 특징을 함께 정리했어요. Hibernate란? 하이버네이트는 자바 언어를 위한 ORM 프레임워크에요. JPA의 구현체로, JPA 인터페이스를 구현하며, 내부적으로 JDBC API를 사용해요. JPA는 관계형 데이터베이스와 객체의 패러다임 불일치 문제를 해결할 수 있다는 점과 영속성 컨텍스트(엔티티를 영구 저정하는 환경) 제공이 큰 특징이에요. JPA 자바 애플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스에요. 라이브러리가 아닌 인터페이스이므로 특정 기능을 하진 않아요. JDBC 자바 프로그래밍 언어와 다양한 데이터베이스 SQL 또는 테이블 형태의 데이터 사이에 .. 2021. 8. 25.
[AWS] EC2 인스턴스 생성하기 이번 포스팅은 네트워크, 서브넷 설정과 보안그룹 설정이 완료되어있다는 가정으로 작성됐어요. EC2 서비스 선택 인스턴스 시작 버튼 클릭 단계 1: Amazon Machine Image(AMI) 선택 - 서버 환경에 따라 선택 단계 2: 인스턴스 유형 선택 - 프리티어는 t2.micro 선택 (과금의 위협) 단계 3: 인스턴스 세부 정보 구성 (서브넷 설정이 완료됐음을 가정) 퍼블릭 IP 자동 할당 서브넷 사용 설정(비활성화)을 고를 경우 DHCP 주소가 제공돼요 활성화를 할 경우 퍼블릭 IP가 할당돼요 비활성화를 할 경우 퍼블릭 IP가 할당되지 않으며 외부 인터넷에서의 접속이 차단돼요. 주의할 점은 VPC내에 퍼블릭 서브넷이 없는 경우 외부(인터넷)에서 접속이 불가능해요. 외부에 공개하면 안 되는 중요한.. 2021. 8. 23.
[Java] Json Data를 리스트로 변환하자 with Jackson 나라별 백신 접종률 데이터를 JSON으로 가져왔는데, 데이터양이 엄청나게 무시무시해요. (현재 기준 약 3만 개) 또한 JSON Data를 자세히 보면 컬렉션 안에 컬렉션이 있다는 것을 확인할 수 있어요. 저는 이 많은 데이터 중 오직 country 필드의 값이 World인 데이터만 가져오려고 해요. 어떻게 해야 할까요? [ { "country": "Afghanistan", "iso_code": "AFG", "data": [ { "date": "2021-02-22", "total_vaccinations": 0, "people_vaccinated": 0, "total_vaccinations_per_hundred": 0.0, "people_vaccinated_per_hundred": 0.0 }, { "dat.. 2021. 8. 20.
[OS]멀티 프로세스와 멀티 스레드의 차이는 무엇일까? 멀티 프로세스와 멀티 스레드는 둘 다 시스템의 컴퓨팅 성능을 높이는 데 사용되는 처리방식의 일종이에요. 혼용되는 키워드 실행단위 cpu core에서 실행하는 하나의 단위로 프로세스와 스레드를 포괄하는 개념이에요. 실행단위는 프로세스 일수도, 스레드일 수도 있어요. 프로세스 하나의 스레드만 가지고 있는 단일 스레드 프로세스에요. 동시성 한순간에 여러 가지 일이 아니라, 짧은 전환으로 여러 가지 일을 동시에 처리하는 것처럼 보이는 것이에요. 먼저 프로세스와 스레드에 대해 알아보도록 하죠. 프로세스 프로세스는 코드로 작성된 프로그램이 메모리에 적재되어 사용할 수 있는 상태가 된 것이에요. 프로그램 자체는 생명이 없어요. 프로그램은 보조 기억장치에 존재하며, 실행되기를 기다리는 명령어(코드)와 정적인 데이터의 .. 2021. 8. 20.
[Spring] Bean 생명주기 콜백 콜백이란 어떤 이벤트가 발생했거나 특정 시점에 도달했을 때 시스템에서 호출하는 함수를 말해요. Bean 생명주기 콜백(Bean LifeCycle Callback)이란 단어를 들으면, 머릿속에 딱 와닿는 느낌이 없는듯해요. 각 단어에 많은 의미가 있기 때문이라 생각해요. 생명주기 콜백을 알아보기 전 각 용어에 대해 짚고 가볼 필요가 있어요. 스프링 빈 (Spring bean) 빈 또는 빈 객체는 스프링이 IoC 방식으로 관리하는 오브젝트라는 뜻이에요. 주의할 점은 스프링을 사용하는 애플리케이션에서 만들어지는 모든 객체가 다 빈은 아니라는 사실이에요. 그중에서 스프링이 직접 생성과 제어를 담당하는 객체만을 빈이라고 불러요. Bean 생명주기 Bean 객체가 생성되어 소멸하기 전까지의 모든 과정을 이르는 말이.. 2021. 8. 20.
[DB] NoSql이 무엇인지, 기존 RDBMS와의 차별점은 무엇인지 설명해주세요 이번 포스트는 SQL vs. NoSQL Databases: What’s the Difference? 을 번역하며 정리한 것이에요. NoSql 데이터베이스(비관계형 데이터베이스)는 관계형 데이터베이스와 방식은 다르지만 관계 데이터를 저장할 수 있어요. Not Only SQL, 기존의 관계형 DBMS가 갖고있는 특성 뿐만 아니라 다른 특성들을 부가적으로 지원한다는 것을 의미해요. 데이터베이스는 크게 SQL과 NoSQL, 관계형 데이터베이스와 비관계형 데이터 베이스로 나뉘어요. 둘의 차이점은 구축 방법, 저장 정보 유형 및 저장 정보에 따라 달라져요. 관계형 데이터베이스는 전화번호와 주소를 저장하는 전화번호부와 같이 구조화 되어있어요. 비관계형 데이터베이스는 사람의 주소와 전화번호부터 Facebook 좋아요 .. 2021. 8. 2.