전체 글 199

Docker를 사용한 MongoDB community 설치

MongoDB 는 Enterprise version / community version이 있음 Enterprise ver은 유료이며 production일 때 사용, 혼자 공부할 땐 community version 쓰면 되는 것 같아서 community 사용하기로 결정. docker에서 기본적으로 지원하는 image는 community version이며, enterprise version이나 MongoDB Atlas 쓰려면 custom image 생성해서 사용하라고 한다.(https://www.mongodb.com/compatibility/docker) 어쨋든 난 community version 쓸 거니까 상관 없고 https://hub.docker.com/_/mongo 를 참고하여 도커 설치를 진행한다...

카테고리 없음 2022.07.31

JVM의 메모리 구조

cv(class variable) : 클래스 변수 lv(local variable) : 지역 변수 iv(instance variable) : 인스턴스 변수 1. Method Area(메소드 영역) - 프로그램 실행 중 어떤 클래스가 사용되면, JVM은 해당 클래스의 클래스 파일(*.class)을 읽고 분석하여 클래스에 대한 정보(클래스 데이터)를 이곳에 저장한다. 이 때, 그 클래스의 클래스변수(class variable)도 이 영역에 함께 생성된다. 2. Heap (힙) - 인스턴스가 생성되는 공간. 프로그램 실행 중 생성되는 인스턴스는 모두 이곳에 생성된다. 즉, 인스턴스 변수(instance variable)들이 생성되는 공간이다. 3. 호출 스택(call stack 또는 execution stac..

JAVA 2022.07.13

블로그 관리에 대한 반성

블로그를 아무리 못해도 한 달에 한 포스트는 발행하려고 했는데 지금 가장 최근 포스트를 5월 초에 썼다. 지금은 7월인데.. 블로그는 내가 공부한 내용을 정리해두는 공간이고, 블로그에 글을 발행하면서 현재 내 상황과 위치에 대해서 생각하게 되는데 블로그를 홀대했다는 얘기는 그냥 아무것도 안했다는 얘기다. 게다가 입사 1주년이 다가오는데 내가 1년 전과 개발 능력이 향상되었나?를 생각하면 이것도 반성해야할 부분이다. 아무튼 이러한 부분들에 대해서 반성하면서 왜 내가 블로그를 방치해두었나에 대한 생각 겸 변명을 해보자면 1. 바빴음 물론 카프카 조사와 회사 일로 조금 바쁘긴 했고, 운동도 시작했기 때문에 물리적인 시간이 부족했던 것은 사실이지만 나보다 더 바쁜 사람들도 블로그 잘 쓰더라. 이건 진짜 변명이고..

후기 및 잡담 2022.07.03

LeetCode Find Numbers with Even Number of Digits 풀이 (자바 JAVA)

출처 - https://leetcode.com/explore/learn/card/fun-with-arrays/521/introduction/3237/ Explore - LeetCode LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore. leetcode.com 문제 Given an array nums of integers, return how many of them contain an even number of d..

좋은 URI Design의 요소들

* /는 계층적 관계를 나타낸다. 슬래시(/) 는 리소스 간의 계층적 관계를 나타낸다. 예) http://localhost:8080/shapes/polygons/quadrilaterals/squares 따라서 계층적 관계를 나타내려는 / 가 아닌 이상, / 를 포함시키지 않는다. (URI의 마지막에 /를 포함하지 않는다.) * 가독성을 높이기 위해 하이픈(-)을 사용한다. 예) http://localhost:8080/blogs/scarlett-johansson/daily -> "-" 을 사용, 가독성이 더 좋음 예 ) http://localhost:8080/blogs/scarlettjohansson/daily -> "-"을 사용한 위의 URI 보다 가독성이 떨어짐 * 밑줄(_)을 사용하지 않는다. 응용 ..

Web 2022.03.24

MySQL SYSDATE(), now()의 차이점

* SYSDATE() 함수가 실행될 때의 시간을 리턴한다. * NOW() 현재의 날짜와 시간을 리턴한다. * 추가적인 설명 SYSDATE() : 트랜잭션이나 쿼리 단위에 관계 없이, 그 함수가 실행되는 시점의 시각을 리턴한다. 따라서 위의 예시를 보면, 실행한 시각을 출력하는 것을 볼 수 있다. NOW() : 하나의 트랜잭션으로, now() 함수가 실행된 첫 시각을 리턴한다. 따라서 위의 예시를 보면, 실행한 첫 시각만을 출력하는 것을 볼 수 있다. 출처 - https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html MySQL :: MySQL 8.0 Reference Manual :: 12.7 Date and Time Functions 12..

CS/database 2022.03.20

백준 10809 알파벳 찾기 (JAVA 자바)

출처 - https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 문제 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다. 출력 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 ..

카테고리 없음 2022.03.13

백준 11720 숫자의 합 (JAVA 자바)

출처 - https://www.acmicpc.net/problem/11720 11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net 문제 N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. 출력 입력으로 주어진 숫자 N개의 합을 출력한다. 예제 입력 1 1 1 예제 출력 1 1 예제 입력 2 5 54321 예제 출력 2 15 예제 입력 3 25 7000000000000000000000000 예제 출력 3 7 예제 입력 4 11 10987654321 예..

백준 2675 문자열 반복 (JAVA 자바)

출처 - https://www.acmicpc.net/problem/2675 2675번: 문자열 반복 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다 www.acmicpc.net 문제 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다. QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUV..

Broken Pipe Error의 의미와 대처법

* Broken Pipe Error란? [java.net.SocketException : Broken pipe] 잦은 입출력 호출로 발생한다. 예) 처리 중인 요청(또는 응답)을 사용자가 기다리지 않고, 새로고침을 하거나 종료, 연속 클릭 등으로 제대로 연결이 마무리(또는 맺어지지 x) 되지 않았을 때 소켓이 끊어져서 발생하게 된다. [java.io.IOException: Broken pipe] receiver에서 송신 받은 데이터를 제때 처리하지 못하는 상황(네트워크 문제 / receiver의 cpu max와 같은 문제 등)에서 sender가 계속 보내는 경우에 발생한다. 두 소켓(receiver, sender) 상의 통신에서 한 소켓(대개 receiver)이 갑작스러운 이상으로 종료가 된 상황에서 ..

Web 2022.03.01