java
-
HTTP 일반 헤더(General Header) 설정 - Cache-Control, Connection, Date, Pragma, User-Agentjava/WEB WAS 2022. 10. 28. 15:24
오늘은 HTTP 일반 헤더(General Header) 에 대한 내용이다. 일반 헤더는 요청과 응답 모두 사용될 수 있는 헤더이다. 그 목적과 의미가 각각 다르니, 아래 내용을 잘 참고해서 숙지하도록 하자. 특히 Cache-Control 헤더는 HTTP 프로토콜에서 매우 중요한 부분이니 잘 알아두면 좋다. 1. Cache-Control Cache-Control 헤더는 캐시(Cache) 동작과 관련된 아주 중요한 헤더이다. HTTP 프로토콜에서 캐시의 중요성이 쾌 큰편이므로 아주 잘 알아둘 필요가 있다. 값으로 여러 항목이 존재하며, 항목마다 의미와 목적이 다르다. 여러 항목이 존재하는 경우에는 콤마(,)로 각각의 항목을 구분한다. 다음은 Cache-Control에 사용될 수 있는 각각의 항목을 정리해 놓..
-
크롬 브라우저 캐시 지우는 설정해도 캐시가 지워지지 않을 때 How to prevent browser from loading js from memory cache in chrome browserjava/WEB WAS 2022. 10. 28. 15:11
css, js, jsp 로직을 바꿔 배포 했는데, 크롬 브라우저에 캐시가 남아 고객으로부터 항의를 받았다. 크롬에서 화면이 깨진다고... 에지에서는 깨지지 않는다고 한다. 일단 링크에서와 같이 메타태그나 jsp에서 브라우저 캐시가 남지 않도록 로직은 짜여져 있다. https://jeaha.dev/114 [JSP, HTML] 소스로 사용자 브라우져 캐시 삭제 또는 초기화하기 화면을 수정했는데, 클라이언트의 브라우져에 캐시가 남아서 이전 화면이 나오는 경우가 있다. 직접 브라우져 설정 들어가서 캐시를 지워달라고 요청 할 수도 있지만, 그게 한두번이 아니게 되 jeaha.dev 크롬에서만 캐시가 남는 이유를 찾아보니... https://web.dev/i18n/ko/service-worker-caching-an..
-
String vs StringBuffer/StringBuilderjava 2022. 8. 24. 17:26
String vs StringBuffer/StringBuilder 자바에서 문자열을 다룰 때 사용하는 대표적인 클래스로 String, StringBuffer, StringBuilder 가 있습니다. 문자열을 다루는데 서로 다른 3개의 클래스가 존재하는 이유가 무엇일까요? String 의 불변성 String 과 StringBuilder/Buffer 클래스의 가장 큰 차이점은 불변성에 있습니다. 불변성은 이름 그대로 변하지 않는 성질을 의미합니다. 그럼 String 클래스가 불변성을 띈다는 의미는 무엇일까요? String str = "java"; str = str + "chip"; >>> str >>> "javachip" String 클래스는 불변성을 띄기 때문에 변하지 않는다고 했습니다. 그런데 strin..
-
정규표현식 (Regex) 정리java 2022. 8. 24. 17:23
정규표현식은 아주 가끔 쓰기때문에 항상 다시 볼때마다 헷갈리곤 하는데.. 주요 사용예를 정리하여 보았다. 나중에 찾아보기 편하라고~ 정규 표현식의 용어들정규 표현식에서 사용되는 기호를 Meta문자라고 표현한다. 표현식에서 내부적으로 특정 의미를 가지는 문자를 말하며 간단하게 정리하면 아래의 표와 같다. 표현식 의미 ^x 문자열의 시작을 표현하며 x 문자로 시작됨을 의미한다. x$ 문자열의 종료를 표현하며 x 문자로 종료됨을 의미한다. .x 임의의 한 문자의 자리수를 표현하며 문자열이 x 로 끝난다는 것을 의미한다. x+ 반복을 표현하며 x 문자가 한번 이상 반복됨을 의미한다. x? 존재여부를 표현하며 x 문자가 존재할 수도, 존재하지 않을 수도 있음을 의미한다. x* 반복여부를 표현하며 x 문자가 0번 ..
-
[Java] LinkedHashMap은 무엇일까?java 2022. 8. 24. 17:21
[Java] LinkedHashMap은 무엇일까? Language/Java 2020. 4. 8. 18:48 HashMap에 대해서 간략하게라도 알고 있다면 LinkedHashMap을 이름만 봐도 LinkedList + HashMap 합쳐진 것이라고 추측할 수 있다. HashMap은 순서가 존재하지 않는다. (즉 버전에 따라 환경에 따라 달라진다는 뜻이다) 그래서 내가 추측했던 것 처럼 실제로 LinkedHashMap은 HashMap에서 자료들이 입력된 순서를 기억하는 것을 추가하기 위해 만든 클래스이다. 사실 왜 HashMap이 데이터의 순서를 유지하지 않는지?에 대해서는 깊게 생각해본적이 없다. 이번에 짧게라도 생각해보면서 공부한 것을 정리해보려 한다. HashMap이 데이터의 순서를 유지하지 않는 이..
-
자바에서 getPath(), getAbsolutePath(), getCanonicalPath()의 차이점java 2022. 8. 24. 17:20
자바에서 getPath(), getAbsolutePath(), getCanonicalPath()의 차이점 자바에서 getPath(), getAbsolutePath(), getCanonicalPath()의 차이점이 뭔가요?? 자바에서 getPath(), getAbsolutePath(), getCanonicalPath()의 차이점이 뭔가요?? 이걸 어쩔 때 쓰는거죠?? hashcode.co.kr 우선 getPath()는 File 객체를 생성할 때 넣어준 경로를 그대로 반환한다. 그리고 getAbsolutePath()와 getCanonicalPath는 getPath()와는 달리 프로그램을 실행시킨 위치 정보도 함께 반환해 준다. 소스코드 File file = new File("src", "test드"); Sy..
-
LinkedList를 이용한 스택 구현java 2022. 8. 24. 17:12
개요 LinkedList 를 사용하여 Stack 을 직접 구현해본다. 구현예제보기 Stack 아래 그림은 Stack 에 대한 설명이다. Stack 은 새로운 값을 어디에 넣을지 지정하지 않으며 push 하면 stack 의 구현 방식에 맞게 데이터가 들어가고, pop 하면 stack 의 구현 방식에 맞게 데이터가 나온다. 그림을 보면 알 수 있듯이 Stack 은 가장 마지막으로 들어간 데이터가 가장 먼저 나오는 LIFO (Liast In First Out) 방식이다. stack Linked list 로 표현하면 head 에 추가하고 head 를 반환한다고 생각하면 된다. 5 -> 4 -> 3 -> 2 -> 1 의 linked list stack 에서는 5 가 head 이고, 6을 push (추가) 할 경우..
-
Java 8 Stream API PART 2.java 2022. 8. 24. 17:04
다양한 기능들을 조합하여 좀 더 다양한 데이터 처리 쿼리를 만들기. 이전 문서에서 스트림을 사용하여 컬렉션 데이터 처리를 데이터베이스의 쿼리처럼 처리하는것을 살펴 보았다. 머 리를 식힐겸 스트림 API를 사용하여 거래금액이 비싼 내역들의 합을 구하는 코드인 Listing 1을 보자. 중간 작업(filter, map)을 통해 파이프라인을 세팅하고 종료 작업(reduce)을 통해 코드를 실행시키는 과정을 아래 Figure 1을 통해 볼 수 있다. Listing 1. int sumExpensive = transactions.stream() .filter(t -> t.getValue() > 1000) .map(Transaction::getValue) .reduce(0, Integer::sum); Figure 1..