@JvmStatic static 하게 운용하고 싶을 때 아래와 같이 작성하면 자바로는 baz클래스에 static한 값이 생기며 baz안의 Companio. class에 getter setter가 추가됩니다. class baz { companion object { var s: Int = 0 } } ... decompile public final class baz { private static int s; public static final class Companion { public final int getS() { return baz.s; } public final void setS(int var1) { baz.s = var1; } private Companion() { } // $FF: syntheti..
java8을 기점으로 구조나 동작 방식이 변경되었다고 합니다 ^^... 정확한 내용은 다를 블로그를 참조해주세요 JVM (Java Virtual Machine) java확장자 파일을 compile하여 class확장자 파일(byte code)을 만들어 - compile class 확장자 파일을 사용하여 java application을 동작하게 합니다. - runtime JVM의 역할은 자바 애플리케이션을 JVM내의 클래스 로더로 읽어 실행시키는 것입니다. 그리고 OS들에 구애받지 않고 사용할 수 있게 JAVA와 OS사이에서 중개자 역할을 합니다. 또한 JVM내에 GC(Garbage Collector)가 존재해 사용되지 않는(참조) 데이터들을 정리합니다. ( 수정 필요 ) JVM 구조는 크게 4가지입니다. ..
머릿속에 있는 JWT 만드는 과정이 정답인지 확인해보기위해 라이브러리를 사용하지않고 토큰을 만들어봤습니다. 과정 Base64.getEncoder()에서 Encoder를 얻습니다. 해당 객체로 byte값을 인자로 넣으면 base64로 인코딩 된 바이트 배열을 얻을 수 있습니다. 그 후 각각 encodedHeader와 encodedPayload를 문자열로 캐스팅하여 header + "." + payload 형식으로 만듭니다. append 한 문자열을 hashing() 함수에 보냅니다. 위 함수에서 'SHA256'방식과 시크릿키를 사용하여 해싱을 합니다. 이때 필요한 게 MAC이라는 클래스입니다. 이 클래스는 "메시지 인증 코드"(MAC) 알고리즘의 기능을 제공합니다. MAC은 비밀 키를 기반으로 신뢰할 수 ..
싱글톤 패턴(singleton) 오직 1개의 인스턴스만 제공이 필요할 때, 그 글로벌한 인스턴스에 접근이 필요할 때(접근 방법을 제공해야 함) 예로 들어 설정 정도가 있다. public class Object1 { private static Object1 instance; private Object1(){} public static Object1 getInstance() { if(instance == null){ instance = new Object1(); } return instance; } } Object1안에 instance라는 이름의 object1 타입의 객체를 만들어둡니다. private 접근할 수 없으며 생성자도 private이라 직접 접근할 수 없습니다. getInstance로만 접근할 수..
"자바 직렬화" 자바 내부에서 사용되는 객체, 데이터를 외부의 자바 시스템에서 사용할 수 있도록 형태로 바꾸는 것 JVM(heap or stack)안의 데이터 -> byte형태의 자료 타인과 통화를 할때 소리가 데이터로 변환되어 통과하여 받는사람입장에서는 들을 수 있는 소리로 다시 변하는 것으로 생각해도 좋을 것 같습니다. implements Serializable를 작성하면 됩니다. serializable은 인터페이스고 아무런 기능도 하지 못합니다. 이 인터페이스를 사용하는 클래스는 JVM에서 직렬화, 역직렬화를 한다고 인식합니다. Book book = new Book(0, "miss"); byte[] SerializedBook; try(ByteArrayOutputStream bos = new Byte..
java의 collection에는 크게 List, Set, Queue가 있습니다. List : 순서가 있는 저장공간, 데이터 중복 가능, Set : 집합적인 저장공간, 데이터 중복 불가 List - ArrayList, Stack, Vector Set - HashSet, SortedSet Queue - DeQueue, LinkedList, PriorityQueue ArrayList : 메모리상에 순차적으로 저장, 인덱스를 이용하여 한번에 데이터 접근 가능 하지만 데이터 추가 시 임의적으로 데이터 이상의 공간을 차지하기도 하며 추가 삭제 모두 인덱스를 조작하여야 하여 쓰기가 많은 작업에는 부적합 Vector : ArrayList와 동일하나 멀티스레드 환경에서 안전 LinkedList : 연속된 위치에 저장되..
기본적으로 인터페이스는 함수 내용이 없는 추상 메서드만 선언할 수 있습니다. 인터페이스는 오직 설계만을 위한 구조로 봅니다. 그래서 클래스가 부르지 않습니다. 인터페이스(interface) 어떤 기능을 제공하는지에 대한 명세서, 기본설계도라고 보면 됩니다. 상속받는 클래스는 인터페이스의 모든 기능을 사용하여야 합니다. 인터페이스의 기능은 여러 클래스에서 받아와 커스텀하여 다형성을 이용할 수 있습니다. 다형성: 하나의 객체가 다양한 형상이나 기능을 가짐 기본적으로 내용물들에 abstract, static 키워드가 있어야 하지만 컴파일 시 자동으로 변환해주는 걸로 알고 있습니다. 인터페이스는 추상 정도가 추상 클래스보다 높습니다. 다중 상속 가능 추상 메서드만 선언 가능(java8로 넘어오면서 default..
기존 스프링 기반 프로젝트를 만들면 가이드라인대로 프로젝트생성 후 서버런만 하여서 아파치가 뭔지 톰캣의 개념이 부족했습니다. 그래서 아파치와 톰캣에 대해서 짧게 공부해볼 생각입니다. apache HTTP Web Server, staticPage, HTTP요청을 받아 정적인 컨텐츠 제공 tomcat webContainer(ServletContainer) WebContainer ServletContainer, 동적인 데이터 처리 webServer 필요이유 정적인처리만 분배하여 서버의 부담 줄이기 webContainer 필요이유 동적인 컨텐츠제공을 해야하므로 순서 client(요청) -> webServer(정적컨텐츠제공) -> servletContainer(동적데이터제공) apache(webserver) 간단..
- Total
- Today
- Yesterday
- springboot
- 스택
- jdk11
- Spring
- 백엔드
- jvm
- java8
- 자바
- 다대일
- JDK8
- 개발자채용
- 스타트업
- jre11
- 자사서비스
- 백준 제로
- 프로그래머
- 알고리즘
- JDK
- 코딩테스트
- boot 일대다
- 백준 제로 자바
- jre8
- mappedby
- boot
- 관계설정
- 백준
- 문제
- jre
- ㅃ
- JPA
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |