일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 알고리즘
- WebTestClient
- 네트워크
- pinia
- GitHub
- 백준
- VueDevTools
- JavaScript
- 이벤트루프
- 구글 엔지니어는 이렇게 일한다
- cicd
- Git
- Vue
- 자바스크립트
- 이것이자바다
- 1436
- 헤드퍼스트 디자인패턴
- 2817
- 스프링
- HTTP
- 한빛미디어
- AWS 비용 최적화 바이블
- 이것이안드로이드다
- Java
- vue-router
- Junit5
- 도메인 주도 개발 시작하기
- 러닝GO
- MySQL
- 혼공컴운
- Today
- Total
목록전체 글 (46)
이시안 개발 블로그
이것이 코테다를 읽고 정리한 내용 복잡도는 알고리즘의 성능을 나타내는 척도이며 시간 복잡도와 공간 복잡도로 나뉩니다. 시간 복잡도: 문제 해결을 위해 필요한 연산의 횟수 공간 복잡도: 문제 해결을 위해 필요한 메모리의 양 동일한 기능을 수행하는 알고리즘이라면 복잡도가 낮을 수록 더 좋다고 할 수 있습니다. 시간 복잡도 시간 복잡도를 표현할 때는 빅오(Big-O) 표기법을 사용합니다. 빅오 표기법은 간단히 말해서 가장 빠르게 증가하는 항만 고려한 표기법입니다. O(N) int[] array = {3, 5, 1, 2, 4}; int sum = 0; for (int i : array) { sum += i; } 배열의 값을 한번씩 조회해서 더하는 예제입니다. 위 예제에서 연산 횟수는 배열의 길이에 비례하므로 시..
💻 문제 멀티 스레드는 동시성과 병렬성으로 작업을 합니다. 동시성(Concurrency) 하나의 코어(싱글 코어)에서 여러 개의 스레드가 번갈아가며 실행하는 성질 병렬성(Parallelism) 멀티 코어에서 여러 개의 스레드를 동시에 실행하는 성질 여기서 멀티 스레드가 하나의 객체를 공유해서 작업하는 경우가 있는 데 그 객체를 공유 객체라고 합니다. 공유 객체를 사용하는 경우 의도하지 않은 결과가 나올 수도 있습니다. 스레드의 수가 적다면 이 문제를 해결하기 위해 wait(), notify(), join() 등의 메서드를 사용할 수 있겠지만 synchronized 키워드를 사용해 Thread-safe하게 해결할 수도 있습니다. 📚 동기화(Synchronization) 동기화란 여러 스레드가 공유되는 리소..
💻 문제 어제까지 잘 되던 Git이 오늘 소스트리로 Patch하려니까 발생한 오류입니다. 오류의 내용은 RSA SHA-1키는 이제 허용되지 않으므로 새로운 키를 만들라고 하네요. 📚 Git 보안 변경 사항 영어에 약해서 한국어로 번역해봤습니다. SSH에서 지원되는 키를 변경하고 암호화되지 않은 Git 프로토콜을 제거합니다. 모든 DSA 키에 대한 지원 제거 새로 추가된 RSA 키에 대한 요구 사항 추가 일부 레거시 SSH 알고리즘 제거(HMAC-SHA-1 및 CBC 암호) SSH용 ECDSA 및 Ed25519 호스트 키 추가 암호화되지 않은 Git 프로토콜 끄기 SSH 또는 git://를 통해 연결하는 사용자만 영향을 받습니다. Git 리모컨이 https://로 시작하는 경우 이 게시물의 아무 내용도 영..
💻 문제 사수님이 내준 과제로 Java의 변수, 연산자, 제어문 등을 활용해서 만들수 있는 매우 사소한 미니 프로젝트였습니다. 조건은 다음과 같았습니다. 사칙연산 (+, -, *, /)가 가능할 것 소수값을 정밀하게 계산해서 반환할 수 있을 것 원할 때 종료할 수 있을 것 원할 때 종료하는 것이야 while문 탈출용 트리거를 쓰면 되겠지만 소수값을 정밀하게 얻는 것은 자바의 double 타입으로는 불가능한 것이었습니다. 자바의 실수 타입인 float과 double은 이진수의 근사치를 저장하기 때문에 정확한 값을 산출할 수 없습니다. 하지만 자바에는 BigDecimal이라는 아주 유용한 것이 있습니다. 📚 BigDecimal이란? BigDecimal은 자바가 제공하는 API java.math에 포함되어 있..
✨ 왜? @Test(expected = IllegalStateException.class) JUnit4에서는 @Test 어노테이션에 expected 속성으로 예외를 잡도록 처리할 수 있었습니다. 하지만 JUnit5에서는 Assertions에 새롭게 추가된 assertThrows()를 통해서 쉽게 테스트를 작성할 수 있게 되었습니다. 📃 과정 @Test public void 중복_회원_예외() throws Exception { // given Member member1 = new Member(); member1.setName("hello"); Member member2 = new Member(); member2.setName("hello"); // when memberService.join(member1)..
✨ 왜? Oracle과 같이 MySQL도 실무에서 가장 많이쓰이는 RDMBS 중 하나입니다. 그래서 미리 MySQL 사용법도 익힐 겸 설정해보겠습니다. 📃 과정 Spring Initializr 우선 스프링부트 프로젝트를 생성합니다. 이 때 Dependencies에 MySQL Driver를 꼭 지정해줍시다. application.yml server: port: 8090 spring: datasource: url: jdbc:mysql://localhost:3306/[스키마]?serverTimezone=Asia/Seoul username: 아이디 password: 비밀번호 driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: ddl-auto: create ..
HTTP 헤더 캐시와 조건부 동작 1. 캐시가 없을 때 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드 받아야 한다 인터넷 네트워크는 매우 느리고 비싸다 브라우저 로딩 속도가 느리다 느린 사용자 경험 2. 캐시 적용 웹 브라우저에서 요청을 하면 서버에서 cache-control을 지정하는 방법으로 캐시를 적용할 수 있다. 웹 브라우저의 캐시 저장소에 60초 동안 유효한 캐시 데이터를 저장한다. 이후 웹 브라우저의 요청은 캐시에서 먼저 데이터를 조회하고 유효하다면 바로 가져올 수 있다. 이 때 캐시의 유효 시간이 초과되었다면 다시 서버로 요청을 보낸다. 응답 결과는 캐시 저장소에 새로 갱신한다. 캐시 덕분에 캐시 가능 시간동안 네트워크를 사용하지 않아도 된다 비싼 네트워크 사용량을 줄일 ..
HTTP 일반 헤더 header-filed = field-name ":" OWS field-value OWS (OWS: 띄어쓰기 허용) field-name은 대소문자 구분 없음 // 요청 헤더 GET /search?q=hello&hl=ko HTTP/1.1 Host: www.google.com // 응답 헤더 HTTP/1.1 200 OK Content-Type: text/html;charset=UTF-8 Content-Length: 3423 용도 HTTP 전송에 필요한 모든 부가정보 표준 헤더가 너무 많음 https://en.wikipedia.org/wiki/List_of_HTTP_header_fields 필요 시 임의의 헤더 추가 가능 helloword: hihi RFC2616(과거) - 폐기됨 HTTP..