java 12

[Java] JVM을 파헤쳐보자: 1. 메모리 구조와 멀티스레드

JVM이란? 자바를 공부하는 사람이라면 JVM에 대한 이야기를 많이 들어보았을 것이다. JVM이란 Java Virtual Machine의 약자로, 자바로 작성된 프로그램을 실행시켜주기 위한 가상 머신(가상의 컴퓨터, 컴퓨터안의 컴퓨터)이다. JVM은 Java를 플랫폼 독립적인 언어로 만들어준다는 특징과, 메모리를 관리하고 최적화 해주는 기능이 존재한다는 특징이 존재한다. 여기서 플랫폼 독립적이라는건, 어떤 운영체제 상에서 작성된 프로그램이든 모두 문제없이 돌아간다는 것인데, 이를 가능토록 중개해주는 것이 바로 JVM의 역할이다. 또한 Java이전에는 프로그램 메모리를 모두 SW개발자가 관리했다면, JVM은 가비지 컬렉터를 통해 자동으로 메모리 관리를 해준다! 따라서 개발자는 운영체제에 맞는 JVM만 깔아..

[Spring/Java/Jackson] JSON List를 문자열(String)으로 변환

문제의 발단 API 개발 중 다음과 같은 JSON을 받아와 파싱하여, 그중 JSON List 인 runningData 전체를 문자열(String)으로 저장할 필요가 생겼다. 파싱과 관련된 자세한 내용을 보고싶다면 여기를 클릭하세요! { "userId" : long(아이디번호) , "runningId" :long(아이디번호) , "duration" : int(지속시간), "runningData" : [ { "latitude" : double(경도), "longitude" : double(위도), "altitude" : double(고도), "speed": double(속도), "timestamp" : DateTime(시간) },{ … } ] } 여기서는 Java가 json을 편리하게 다룰수 있도록 도와주는..

Programming/Spring 2022.07.31

[spring/java] JSON 안의 JSON 리스트 객체로 파싱받기

문제의 발단 API 개발 중 JSON 안에 JSON 배열(리스트)를 가진 형식의 JSON을 객체로 파싱하여 저장할 필요가 생겼다. 즉, 다음과 같은 형식의 JSON 테이터를 객체로 받아와야할 필요가 생긴것 { "userId" : long(아이디번호) , "runningId" :long(아이디번호) , "duration" : int(지속시간), "runningData" : [ { "latitude" : double(경도), "longitude" : double(위도), "altitude" : double(고도), "speed": double(속도), "timestamp" : DateTime(시간) },{ … } ] } 결론부터 말하면 본인은 위의 형식에 해당하는 데이터 객체를 만들어 해결했다. 소스 코드 ..

Programming/Spring 2022.07.31

[백준/골드5] 1759번 - 암호 만들기 (Java/자바)

1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 암호만들기 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 128 MB 48181 22647 15700 44.602% 문제 바로 어제 최백준 조교가 방 열쇠를 주머니에 넣은 채 깜빡하고 서울로 가 버리는 황당한 상황에 직면한 조교들은, 702호에 새로운 보안 시스템을 설치하기로 하였다. 이 보안 시스템은 열쇠가 아닌 암호로 동작하게 되어 있는 시스템이다. 암호는 서로 다른 L개의 알파벳 소문자들로 구성되며 최소 한 개의 모음(a, e, i, o, u)과..

[M1 MAC] openJDK 버전 다운그레이드 시키기 (17에서 11로)

개발환경 셋팅을 위해 팀원들과 openJDK 11 버전을 쓰기로 합의봤다. (8은 너무 구버전이고, 17은 안정성이 떨어지기 때문) 하지만.. 맥북프로 셋팅 초기에 이미 Jdk 최신버전으로 설치해버린 것 아래처럼 openjdk 11을 다운받아 설치했지만 계속 18버전으로 유지되고 있었다. 이에 아래와 같은 방법으로 다른 버전을 설정시켜보게 되었다. 1.터미널을 열고 다음과 같은 명령어를 입력한다. > /usr/libexec/java_home -V 이미 18과 11 버전이 깔려있는 본인의 경우 다음과 같은 문구가 떴다 Matching Java Virtual Machines (2): 18.0.1.1 (arm64) "Oracle Corporation" - "OpenJDK 18.0.1.1" /Users/'사용자..

[Spring/스프링] 롤링페이퍼(게시판) 프로젝트 2. Repository 생성

[Spring/스프링] 롤링페이퍼(게시판) 프로젝트 1. Entity 생성] [Spring/스프링] 롤링페이퍼(게시판) 프로젝트 1. Entity 생성 https://coding-zzang.tistory.com/18 [Spring/스프링] 롤링페이퍼 프로젝트 0. 프로젝트 설명 "온라인 롤링페이퍼 사이트를 만들어볼까...?" Spring공부를 시작할때 쯔음 , 작은 프로젝트를 만들어보면 좋을 것. coding-zzang.tistory.com 전편입니다. “JPA 와 EntityManager” 본 프로젝트에서는 대표적인 ORM방식의 프레임워크인 JPA를 사용할 것이다. 우선 JPA에서 제공하는 Entity Manager에 대해 설명해보겠다 EntityManager는 entity객체들을 영속성 컨텍스트 (P..

Programming/Spring 2022.03.23

[Spring/스프링] 롤링페이퍼(게시판) 프로젝트 0. 프로젝트 설명

"온라인 롤링페이퍼 사이트를 만들어볼까...?" Spring공부를 시작할때 쯔음 , 작은 프로젝트를 만들어보면 좋을 것 같아 시작한 프로젝트이다. 사실 일반 게시판과 거의 비슷하지만, 그냥 게시판보다는 조금 더 단순하다. 우선 초반에는 아~~주 간단한 기능만담아 구현해보려고 한다. 회원가입을 하여 회원이 될수 있다 회원은 나만의 롤링페이퍼를 여러개 만들 수 있다 페이퍼 리스트에서 원하는 페이퍼를 찾아 코멘트(댓글)을 남길 수 있다. 구현상의 편의를 위해 복잡한 로그인 기능은 빼둘것이다 H2 Database와 Thymeleaf 사용예정이다. "프로젝트 환경을 설정해보자!" 스프링부트 스타터를 사용하여 손쉽게 개발 전 환경설정을 해주었다. ※Spring Web / Thymeleaf / Lombok / JPA..

Programming/Spring 2022.03.22

[백준] 21922번 - 학부 연구생 민상 (Java/자바)

21922번: 학부 연구생 민상 첫 번째 줄에는 연구실의 크기가 세로 $N(1 \le N \le 2,000)$, 가로 $M(1 \le M \le 2,000)$ 순으로 주어진다. 두 번째 줄부터 $N + 1$ 줄까지 연구실 내부 구조 정보를 알려주는 값 $M$개가 주어진다. $1,2,3,4$ www.acmicpc.net 학부 연구생 민상 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 512 MB 772 204 125 24.131% 문제 학부 연구생으로 새로 연구실에 들어온 민상이는 사용할 자리를 정하려고 한다. 연구실은 격자 모양으로 되어있고 에어컨에서 바람이 상,하,좌,우 4방향으로 분다. 물론 에어컨이 위치한 곳에도 바람이 분다. 민상이는 더위를 많이 타서 에어컨 바람이 지나가는 곳 중..

[Spring/스프링] 정적 컨텐츠 (Static Content)

정적 컨텐츠 (Static Content)란 무엇인가요? 정적 컨텐츠는 서버에서 어떠한 동작을 하는 것이 아닌 존재하는 html 파일만 그대로 내여주는 작업을 의미한다. 원하는 html파일을 static 폴더에 넣어주면, 해당 html이 웹 브라우저에 그대로 렌더링 된다. 정적 컨텐츠 입니다. 위와 같은 hello-static.html 파일이 static 폴더에 존재한다고 가정해보자. 파일을 실행 후 웹사이트에 접속하여 개발자모드로 코드를 보자. 위에서 타이핑한 코드와 완전히 똑같다! 이처럼 단순히 html 코드를 그대로 출력 시키는 것을 정적 컨텐츠 (Static Content) 라고 부른다. 정적 컨텐츠 (Static Content)는 어떻게 동작하나요? 웹브라우저에서 요청이 들어오면 우선 내장 톰켓..

Programming/Spring 2022.02.26

[백준] 2583번 - 영역 구하기 (Java/자바)

2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net 바이러스 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 128 MB 88100 41450 28192 45.555% 문제 눈금의 간격이 1인 M×N(M,N≤100)크기의 모눈종이가 있다. 이 모눈종이 위에 눈금에 맞추어 K개의 직사각형을 그릴 때, 이들 K개의 직사각형의 내부를 제외한 나머지 부분이 몇 개의 분리된 영역으로 나누어진다. 예를 들어 M=5, N=7 인 모눈종이 위에 과 같이 직사각형 3개를 그렸다면, 그 나머지 영..