일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 타입스크립트
- 문서번호
- 당근마켓
- font-size
- 0.75px border
- literal
- Props
- es6
- 데이터베이스 #try #이중
- 1px border
- jwt
- Websocket
- ZOOM
- 전역변수
- ES5
- &연산
- 클론코딩
- github
- 0.25px border
- TypeScript
- TS
- 10px
- 컴포넌튼
- 0.5px border
- angular
- 으
- entity
- npm
- Strict
- 서버리스 #
- Today
- Total
목록분류 전체보기 (148)
복잡한뇌구조마냥
요약약readObject는 사실상 숨은 생성자다.따라서 공격자가 임의로 만든 바이트 스트림을 넣을 수 있다는 전제로 방어적으로 작성해야 한다.원칙:방어적 복사를 가장 먼저 수행불변식 검사 후 위배되면 InvalidObjectException 던지기필요 시 ObjectInputValidation으로 객체 그래프 전체 유효성 검사재정의 가능한 메서드 호출 금지 (생성자와 동일한 원칙)더 안전한 방법: 직렬화 프록시 패턴을 활용하라.1. 왜 readObject가 위험한가?직렬화/역직렬화는 바이트 스트림으로 객체를 주고받는 메커니즘.하지만 공격자는 이 스트림을 임의로 조작해,불변식이 깨진 객체내부 상태가 노출되거나 수정 가능한 객체를 만들 수 있다.즉, readObject는 단순히 “저장된 객체 복원”이 아니라..
요약스레드 스케줄링 정책은 운영체제마다 다르다.잘 작성된 프로그램은 스케줄러의 정책 차이에 영향받지 않아야 한다.Thread.yield()와 스레드 우선순위는 의존해서는 안 되며, 힌트 정도로만 쓰인다.**Busy waiting(바쁜 대기)**은 절대 금물.실행 가능한 스레드 수는 프로세서 수보다 과도하게 많아서는 안 된다.목표: 이식성, 견고성, 성능을 모두 확보하는 프로그램.1. 왜 스레드 스케줄러에 의존하면 안 되는가?스레드 스케줄링은 운영체제마다 정책이 다르다.어떤 JVM에서는 잘 동작하던 코드가 다른 JVM이나 OS에서는 느리거나 멈출 수 있음.→ 즉, 스케줄러에 기대는 프로그램은 이식성이 떨어진다.2. 좋은 프로그램의 특징실행 가능한 스레드 수를 프로세서 수와 비슷하게 유지.스레드는 작업이 있..
✅ 정리 (사용자 이해 + 보강)1. 표준 예외 재사용의 장점가독성: 많은 개발자가 공통된 의미로 이해 가능 → API 사용성이 좋아진다.효율성: 불필요하게 예외 클래스를 늘리지 않아 메모리 사용량/클래스 적재 시간 감소.일관성: “이 상황에선 이 예외”라는 패턴이 잡히면, 코드 독해와 디버깅이 쉬워진다.문서화 편의: 표준 예외는 이미 잘 정의되어 있어 문서에 적기만 해도 충분하다2. 자주 쓰이는 표준 예외예외 클래스사용 상황IllegalArgumentException메서드에 넘긴 인수 값이 부적절할 때IllegalStateException객체의 상태가 메서드 수행에 적합하지 않을 때NullPointerExceptionnull을 허용하지 않는 메서드에 null을 전달했을 때IndexOutOfBoundsE..
요약자바 명명 규칙은 **철자 규칙(Spelling)**과 문법 규칙(Grammatical) 두 가지로 나뉜다.특별한 이유가 없다면 반드시 지켜야 하며, 규칙을 어기면 가독성·유지보수성이 떨어지고 버그가 생기기 쉽다.철자 규칙은 강제적, 문법 규칙은 유연하되 널리 쓰이는 전통을 존중해야 한다.가장 중요한 원칙: 일관성 유지.📌 철자 규칙 (Spelling Conventions) 대상규칙예시패키지전부 소문자, 도메인 이름 역순com.example.project클래스/인터페이스파스칼케이스, 각 단어 대문자 시작ArrayList, HashMap, WordProcessor메서드/필드카멜케이스, 첫 글자 소문자getName, computeHash, count상수(static final)대문자 + 언더스코어MAX..
요약지역변수는 짧게, 필요한 순간에만 선언·사용하라.선언과 동시에 초기화 → 초기화가 어렵다면 정보가 생길 때까지 선언 미루기.반복문에서는 for문/for-each문을 우선 사용해 변수 범위를 최소화.메서드는 짧게 유지 → 지역변수도 자연스럽게 짧은 생존 범위를 갖게 된다.범위 최소화는 가독성, 유지보수성, 안정성을 높이고 버그 발생 가능성을 낮춘다.1. 왜 지역변수 범위를 최소화해야 할까?변수의 생존 기간이 길수록 잘못된 사용 가능성이 높아진다.긴 범위의 변수는 코드 가독성을 해치고, 디버깅과 유지보수에도 불리하다.따라서 변수는 필요할 때 선언하고, 사용 직후 소멸되도록 작성하는 것이 바람직하다.2. 기본 원칙선언과 동시에 초기화대부분의 지역변수는 값을 선언과 동시에 초기화해야 한다.초기화가 어렵다면,..
📌 시험 개요구분회차원서접수수험표발급시험일사전점수공개 및 재검토접수합격(예정)자발표SQL 개발자(SQLD)제58회7.21~258.88.23(토)9.12~169.19시험 일정: 2025년 8월 23일 (3회차)시험 장소: 춘천점수: 사전 점수 66점 → 합격 🎉📌 공부 계획 & 자료교재: SQL 자격검정(노랭이)공부 기간: 8월 20일 ~ 8월 22일 (총 3일)공부 방식필기 정리는 따로 안 하고, 암산으로 문제 풀이SQLD 범위까지 교재 전체 1회독SQLD 사이트 모의고사 풀이 → 1시간에 80점 정도📌 시험 당일 후기시험장소: 춘천 (분위기 자체는 무난)난이도 체감: 생각보다 높았음실제 문제 풀면서 *“진짜 어렵다”*는 생각이 들 정도단순 이론만 보고 들어가면 버티기 힘듦정보처리기사 필기에서 S..
1. 재정의 vs 다중정의재정의(Overriding)상위 클래스의 메서드와 시그니처가 동일할 때 하위 클래스에서 다시 정의하는 것.호출 대상은 런타임 시점 객체의 실제 타입으로 결정 → 동적 바인딩.다중정의(Overloading)메서드 이름은 같지만, 매개변수 시그니처가 다른 여러 메서드를 정의하는 것.호출 대상은 컴파일 타임에 매개변수의 정적 타입으로 결정 → 정적 바인딩. class Parent { void hello(Object o) { System.out.println("Object"); } void hello(String s) { System.out.println("String"); }}Object obj = "text";Parent p = new Parent();p.hello(obj..
1. 스트림과 스트림 파이프라인스트림(Stream): 데이터 원소의 유한 혹은 무한 시퀀스.스트림 파이프라인(Stream Pipeline): 스트림 원소들로 수행하는 연산 단계의 묶음.소스(Source): 컬렉션, 배열, I/O 채널 등.중간 연산(Intermediate Operation): 변환, 필터링 등. 새로운 스트림을 반환.종단 연산(Terminal Operation): 합계, 수집, 탐색 등. 최종 결과 반환.지연 평가(Lazy Evaluation): 종단 연산이 호출될 때 연산이 실제 수행됨.종단 연산에 쓰이지 않는 원소는 아예 계산되지 않음.덕분에 무한 스트림도 다룰 수 있다.✅ 스트림 API는 메서드 연쇄를 지원하는 플루언트 API라서 선언형 프로그래밍 스타일을 제공한다.2. 스트림의 장..