분류 전체보기 89

디자인 패턴 - 싱글톤 패턴

싱글톤 패턴? 인스턴스가 오직 1개만 생성되야 하는 경우에 사용되는 패턴 예시로 레지스트리 같은 설정 파일의 경우 객체가 여러개 생성되면 설정 값이 변경될 위험이 생김. 따라서 싱글톤 패턴을 이용하면, 하나의 인스턴스를 메모리에 등록해서 여러 스레드가 동시에 해당 인스턴스를 공유하여 사용하게끔 할 수 있으므로, 요청이 많은 곳에서 사용하면 효율을 높일 수 있음. 싱글톤 설계 주의사항 멀티 스레딩 환경에서도 동작 가능하게 구현해야함(Thread-safe 보장) Thread-safe를 보장하려면, 무상태성(상태 정보를 클래스 내부에 가지고 있으면 안됨)을 지켜야함. 동시성 제어 - 동시에 한개의 자원을 가져와서 n개의 Thread가 동시에 해당 변수에 접근하였을 때 값을 읽어와서 쓰려고 하는 과정에서 문제가..

JAVA 2021.07.24

엑셀 0으로 시작하는 문자열, 전화번호 입력 시 0 삭제 되는 이슈 해결법

엑셀로 작업을 하다보면 전화번호나 0으로 시작하는 문자열을 입력할 때 위 사진 처럼 0이 사라져 버리는 이슈가 있음. 예를 들어 전화번호에 0이 빠진다 하면 "0##########"을 입력해서 서식을 지정해주면 맨 앞자리에 0이 들어가게 된다. 하지만 실제 데이터는 0이 빠진 상태로 있기 때문에 바꾼 데이터들을 복사해서 메모장에 복사 붙여넣기 한 다음 메모장의 데이터를 복사하고 엑셀에 붙여넣기 할 영역의 셀 서식을 텍스트로 변경 후 메모장의 내용을 붙여넣기하면 실제 데이터에 0이 들어간 상태로 붙여넣기가 된다.

EXCEL TIP 2021.07.15

MySQL vs MariaDB

MariaDB 는 MySQL 의 발전된 형태의 대체제로써, GPL v2 라이센스로 유지되고 있고, MariaDB 커뮤니티 와 MariaDB 재단이 주축이 되어 개발되고 있다. MySQL은 커뮤니티 버전과 상용 버전으로 나뉘어 집니다. 커뮤니티 버전은 서버와 클라이언트 프로그램, 그리고 라이브러리모두 GPL 라이센스로 배포되어집니다. 따라서 오픈소스로써 사용할 수 있습니다. 하지만 상용 버전은 상용 라이센스를 따르기 때문에 비용을 지불하지 않으면 사용할 수 없습니다. MariaDB는 MySQL 커뮤니티 버전을 포크(fork)하여 사용하고 있습니다. 따라서 서버는 GPL 라이센스로 배포되어집니다. 클라이언트와 라이브러리는 LGPL 라이센서를 따릅니다. MariaDB는 GNU GPLv2 라이센스로만 배포되며 ..

SNS 소셜 가입, 로그인 (네이버)

SNS 네이버 아이디로 로그인 공식 매뉴얼 1. 참고 자료 https://developers.naver.com/docs/login/devguide/devguide.md#2--%EB%84%A4%EC%95%84%EB%A1%9C-%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%86%8C%EA%B0%9C 네이버아이디로그인 개발가이드 - LOGIN 네이버아이디로그인 개발가이드 1. 개요 4,200만 네이버 회원을 여러분의 사용자로! 네이버 회원이라면, 여러분의 사이트를 간편하게 이용할 수 있습니다. 전 국민 모두가 가지고 있는 네이버 아 developers.naver.com 2. 연동 과정 2-1. 연동 전 사전 준비 네아로(네이버 아이디로 로그인)을 적용하기 위해선 애플리케이션 등록을 해야함. 애플리케..

JAVA/Social Login 2021.06.11

[JAVA] 벤치마킹 테스트 사용법

벤치마크 테스트 프로젝트를 생성하면 첫 화면에 이런 코드들이 보일 것이다. testMethod에 @Benchmark라는 어노테이션이 있는데, 이는 testMethod를 벤치마크 테스트 하겠다는 선언이다. 이처럼 메소드에 @Benchmark어노테이션을 설정해서 메소드 단위로 벤치마크 테스트를 할 수 있다. JMH를 사용할 때 벤치마크 테스트 설정은 어노테이션으로 변경할 수 있는데 몇 가지 정리해 보도록 하겠다. @Warmup 실제 측정 전 워밍업 횟수를 조절할 수 있는 어노테이션. iterations 속성 값으로 반복 횟수를 조절 할 수 있다. @Measurement 실제 측정 반복 횟수를 조절할 수 있는 어노테이션. iterations 속성 값으로 반복 횟수를 조절 할 수 있다. @Timeout time..

JAVA/Benchmark Test 2021.03.20

[JAVA] 벤치마킹 환경 구성, 테스트 코드 작성

벤치마킹이란? 측정의 기준이 되는 대상을 정하여 그 대상과 비교 분석을 통해 장점을 따라 배우는 행위 이번 글에선 자바에서 벤치마크 테스트를 해볼 건데 벤치마크 테스트는 비교 대상을 두고 하드웨어나 소프트웨어의 성능을 비교 분석하여 평가하는 것을 말한다. JMH(Java Microbenchmark Harness) 벤치마크 테스트는 OpenJDK에서 만든 JMH를 사용해서 테스트를 해볼 것이다. 먼저 이전에 JMH를 사용해 잠깐 건드려 본 적이 있는데, 몇가지 장점을 발견했었다. 1. 벤치마크 테스트의 여러가지 설정들을 어노테이션으로 간단하게 변경할 수 있다는 점 2. 쉽고 간단하게 벤치마크 테스트 환경을 구성하고 사용할 수 있다는 점 이 정도로 JMH를 사용했을 때 장점을 느꼈었다. JMH 환경 구성 방..

JAVA/Benchmark Test 2021.03.08

[JAVA] 문자열 찾기 함수 효율 비교(indexOf, contains, matches)

자바에는 문자열을 찾을 때 사용하는 함수가 있다. 첫번째, indexOf. 문자열에서 검색하고자 하는 문자의 위치 인덱스를 return한다. ex) System.out.println("Hello World".indexOf("W")); return 6 문자열에서 찾고자 하는 문자가 존재하지 않으면 -1을 return한다 두번째, contains. 문자열에서 검색하고자 하는 문자나 문자열의 위치가 포함되어 있는지 boolean형태로(true/false) return한다. ex) System.out.println("Hello World"("Hello")); return true 문자열에서 찾고자 하는 문자나 문자열이 존재하지 않으면 false를 return한다. 세번째, matches 문자열에서 검색하고자 하..

JAVA/Good Coding 2021.03.08