일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 이벤트루프
- 실행 컨텍스트
- 캐시
- in-memory
- 분할정복
- MongoDB
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- 동적계획법
- 다이나믹프로그래밍
- 스프링 부트
- JPA
- VMware
- Spring Boot
- Redis
- 레디스
- 정처기
- github
- SQL
- spring security
- 게시판
- NoSQL
- document database
- 자바의 정석
- 호이스팅
- 영속성 컨텍스트
- 스프링 시큐리티
- 깃허브
- sqld
- 스프링부트
- 정보처리기사
- Today
- Total
목록Language (20)
FreeHand

목차1. 동기 처리와 비동기 처리2. 이벤트 루프와 태스크 큐 1. 동기 처리와 비동기 처리현재 실행 중인 작업이 종료할 때까지 다음 작업이 기다리는 방식을 동기 처리라고 한다. 동기 처리 방식은 작업을 순서대로 하나씩 처리하므로 실행 순서가 보장되는 장점이 있지만, 앞의 작업이 종료할 때까지 이후 작업들이 기다려야 하는(블로킹, blocking) 단점이 있다. 현재 작업이 종료되지 않아도 다음 작업을 실행하는 방식을 비동기 처리라고 한다. 비동기 처리 방식은 동기 처리 방식과 반대로 작업의 실행 순서가 보장되지 않는 단점이 있지만 블로킹이 발생하지 않는다는 장점이 있다.자바스크립트에서 setTimeout 함수와 setInterval 함수, HTTP 요청, 이벤트 핸들러는 비동기 처리 방식으로 동작한다...

목차1. 소스코드 1.1 소스코드의 종류 1.2 소스코드의 평가와 실행2. 실행 컨텍스트 2.1 실행 컨텍스트 스택 2.2 변수 호이스팅 1. 소스코드1.1 소스코드의 종류ECMAScript 사양은 4가지 소스코드가 있다.전역 코드: 전역에 존재하는 소스코드함수 코드: 함수 내부에 존재하는 소스코드eval 코드: 빌트인 전역 함수인 eval 함수에 인수로 전달되어 실행되는 소스코드모듈 코드: 모듈 내부에 존재하는 소스코드소스코드의 종류에 따라 생성하는 실행 컨텍스트가 다르다. 1.2 소스코드의 평가와 실행자바스크립트 엔진은 소스코드를 소스코드 평가와 소스코드 실행 두 과정으로 나누어 처리한다. 소스코드 평가 과정에서는 실행 컨텍스트를 생성하고 변수, 함수 등의 선언문만 먼저 실행하여..

시작하며예전에 공부하다가 어려워서 그만뒀던 이펙티브 자바를 다시 펼쳐 보려고 한다. 물론 지금 바로 다시 시작하는 건 예전과 다를 게 없다. 당시 어렵다고 느꼈던 이유는 디자인 패턴과 OOP에 대한 이해도가 낮았기 때문이라고 생각한다.그래서 정보처리기사 실기도 준비하고 프로젝트 리팩토링도 할겸 겸사겸사 디자인 패턴을 먼저 가볍게 정리해 볼 생각이다. 디자인 패턴의 종류디자인 패턴은 크게 세 가지로 분류할 수 있다.생성패턴: 객체의 생성에 관여하는 패턴구조패턴: 클래스나 객체의 합성에 관한 패턴행위패턴: 클래스나 객체의 상호작용과 책임을 분산하는 패턴생성구조행위- Factory Method- Singleton- Builder- Prototype- Abstraction Factory- Adapter- Fa..

public class Main { public static void main(String[] args) { // Thread 생성 MyThread1 t1 = new MyThread1(); Thread t2 = new Thread(new MyThread2()); // Thread 실행 t1.start(); t2.start(); } } // Thread 클래스 상속 class MyThread1 extends Thread { public void run() { for (int i=0; i
다양한 데이터 소스(컬렉션, 배열)를 표준화된 방법으로 다루기 위한 것. 스트림 사용법스트림 생성중간 연산(n번): 연산결과가 스트림최종 연산(1번): 연산결과가 스트림이 아님(스트림의 요소를 소모함)//예시 //스트림.중간연산1.중간연산2.중간연산3.최종연산 stream.distinct().limit(5).sorted().forEach(System.out::println) 스트림 특징원본 데이터를 읽기만 가능하고 변경하지 않는다.(Read Only)일회용이다. (필요하면 다시 스트림을 생성해야 한다.)지연된 연산을 한다. (최종 연산 전까지 중간 연산이 수행되지 않는다.)기본형 스트림(IntStream 등)을 제공하여 오토박싱&언박싱 비효율을 없앤다.스트림 작업을 병렬로 처리할 수 있다.스트림 생성컬렉..
단 하나의 추상 메서드만 선언된 인터페이스. // 함수형 인터페이스 @FunctionalInterface interface AddNumber { int add(int x, int y); } // 익명 클래스 AddNumber addNumber1 = new AddNumber() { public int add(int x, int y) { return x + y; } } // 람다식 (함수형 인터페이스 메서드와 람다식의 매개변수 개수와 반환타입이 일치해야 함) AddNumber addNumber2 = (x, y) -> x + y; int result1 = addNumber1.add(5, 10); // 15 int result2 = addNumber2.add(5, 10); // 15 자바에서 람다식은 익명객체이..
일회용 클래스. 정의와 생성을 동시에 함.// 익명 클래스 형태 new 조상클래스() { // 멤버 }class A { public static void main(String[] args) { Button b = new Button("Start"); b.addActionListener(new EventHandler()); // 2. 생성 } } class EventHandler implements ActionListener { // 1. 정의 public void actionPerformed(ActionEvnet e) { System.out.println("ActionEvent occurred"); } }한 번만 사용될 클래스인 EventHandler 클래스를 익명 클래스로 작성하면 아래와 같다.clas..
class A { // 외부 클래스 // 내부 클래스 class B { // 인스턴스 클래스 } static class C { // 스태틱 클래스 } void methodA() { class D { // 지역 클래스 } } } 내부 클래스는 말 그대로 클래스 안의 클래스를 의미한다. class A { int num = 10; } class B { void printA() { A a = new A(); System.out.println(a.num); } } public class Main { public static void main(String[] args) { B b = new B(); b.printA(); // 10 } } B 클래스에서 A 클래스의 멤버를 사용하려면 B 클래스 안에서 A 객체를 생성..
변수나 인수이름 뒤에 타입 애너테이션을 붙여서 타입을 정의할 수 있다. 변수 const name: string = 'Jin'; const age: number = 25; 배열 const names: string[] = ['Jin', 'Hana']; const = ages: number[] = [25, 24]; 객체 const user: { name: string, age: number } = { name: 'Jin', age: 25 } 함수 function greeting(name: string): string { return `Hello ${name}`; } const greeting = (name: string): string => `Hello ${name}` 타입 추론(Type Inference) ..

SRP(Single Responsibility Principle, 단일 책임 원칙) - What객체는 하나의 책임만 가져야 한다.여기서 책임이란 "할 수 있는 것" 또는 "해야 하는 것"을 의미한다.- Why하나의 클래스가 너무 많은 책임을 수행한다면 변경에 유리한 코드를 작성하기 힘들다.학생 클래스가 변경될 경우 학생 클래스의 역할을 필요로 하는 다른 코드 역시 변경해야 할 가능성이 높다. - How클래스들이 책임을 적절하게 분담하도록 변경한다.학생 클래스가 모든 책임을 가질 때는 하나의 책임에 변경이 있어도 학생 클래스를 사용하는 다른 클래스들을 다시 테스트해야 한다. 하지만 학생 클래스의 책임을 여러 클래스가 분담하면 해당 책임을 갖는 클래스와 그 클래스를 사용하는 클래스만 영향을 받는다. OCP..