본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ

전체 글467

[Java] null 에 대한 검증, 처리방법 문자열에 대해 복습하면서, null에 대해 한번쯤 정리를 해보고 싶었습니다. 예전에 만들어 둔 소스들을 프로젝트에만 저장해서 뒀는데, 블로그에 한번 공유하는 것도 좋을 것 같았습니다. null이라는 형식은 아무것도 없는 것을 의미합니다. 이는 빈값을 참조하는 것과 다른 의미로, 참조하는 것이 없다는 의미입니다. 그렇다고 해서 초기화 하지 않은 int a; 이런게 null이라는 것은 아닙니다. null이라는 형식이 존재하며, 이것 자체로 아무것도 없는 것을 의미합니다. 중요한 것은 기본형 변수나 참조 변수가 null로 들어갔을 때, 특정 메소드 처리중에 런타임 에러를 발생시키는 것입니다. 이는 컴파일러로 걸러지는 부분이 아니어서 테스트를 통해 검증하지 않으면, 문제가 발생할 확률이 높습니다. 그래서 nul.. 2024. 1. 14.
[Java] 자바에서 싱글톤 패턴 이해하기 싱글톤 패턴이란 클래스의 인스턴스를 하나만 생성하여 사용하는 패턴이입니다. 주로 1개의 인스턴스를 여러곳에서 공유해야 할 때 사용합니다. 싱글톤 패턴을 이용함으로써 메모리에 인스턴스 하나를 등록해 여러 쓰레드에서 동시에 하나의 객체를 이용할 수 있게 합니다. 하나만 있어도 잘돌아가는 것이 어떤게 있을까요? 로그기록용 객체, 사용자 설정 객체, 커넥션 풀 객체 같은게 있을 것 같습니다. 객체가 2개 이상이면 프로그램이 이상하게 돌아가거나 자원을 불필요하게 잡아먹을 수 있습니다.. 큰 특징으로, 생성자가 private으로 설정되어, 내부 getInstance() 로 호출할때 객체가 빈값일 경우에만 생성되도록 합니다. getInstance() 정적 메소드(static methods) 객체를 생성하게 되면 그 .. 2024. 1. 13.
[Java] Optional 소개 자바의 Optional은 Java 8에서 소개된 클래스로, 값이 존재하지 않을 수 있는 상황에서 사용됩니다. 이 클래스는 null을 피하기 위한 강력한 도구로서, 코드에서 명시적으로 값이 없음을 나타내거나 다룰 때 사용됩니다. Optional 클래스는 제네릭을 사용하여 어떤 타입의 객체도 감싸서 담을 수 있습니다.. Optional 객체는 값이 존재할 수도 있고, 없을 수도 있습니다. 때문에, NullPointerException 예외를 방지할 수 있고, 코드의 안정성을 높이며 가독성을 향상시킵니다. Optional은 다음과 같은 주요 특징을 가지고 있습니다: Null 방지: Optional은 값이 없는 경우 null을 사용하는 것 대신 사용됩니다. 이로써 NullPointerException을 방지할 .. 2024. 1. 13.
OAuth 란? OAuth 란? 구글, 페이스북, 트위터와 같은 다양한 플랫폼의 특정한 사용자 데이터에 접근하기 위해 제3자 클라이언트(우리의 서비스)가 사용자의 접근 권한을 위임(Delegated Authorization)받을 수 있는 표준 프로토콜입니다. 쉽게 말하자면, Oauth 방식으로 인증하면, 클라이언트가 해당서비스를 추가 인증없이 사용할 수 있도록 대신 인증 해줍니다. 해당 서비스를 사용하려면 인증된 사용자여야 되고 인증을 해줘야되는데, 이런 인증을 다른쪽에 위임시키는거죠. - 위키백과 중- OAuth("Open Authorization")는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는,.. 2024. 1. 10.
[Java] Java jks 만들기 예전에 자바 프로젝트를 수행하면서 jks 파일을 이용한 적이 있습니다. java Keystore 의 파일로써 다양한 파일을 지원합니다. (JKS, JCEKS, BKS ....) 암호화 시킬 ssl인증서를 담아서 jks로 만들고, java 프로젝트를 실행하는데 jks파일을 참조하여 사용하는 식으로 운영했었습니다. jks 파일을 만들고 관리하는 방법은 크게 2가지가 있습니다. 별도로 spring boot에서 설정해서 사용할수도 있지만, 저는 jks 파일을 만들고 직접 수정하는 부분에 대해 기록해보려 합니다. 방법으로 크게 두가지가 있습니다. 1. portecle 프로그램 사용 2. openssl 사용 1. portecle 프로그램 사용 Portecle은 keystore를 관리해주는 자바로 만들어진 GUI 프.. 2024. 1. 10.
[알고리즘] 이분탐색 이해하기 이분탐색 이라는 메뉴가 알고리즘에서 자주 사용되는 것 같아 정리를 해보려고 합니다. 이분 탐색이란? 오름차순으로 정렬된 배열을 반복적으로 반으로 나누어 target이 선택될 때까지 탐색하는 알고리즘입니다.. 반으로 나누는 기준은 중간값(mid) 입니다. 중간 값(mid)과 비교하여 검색값(X)을 찾습니다. 중간 값을 찾아야 하기 때문에 반드시 정렬된 배열에서만 사용할 수 있습니다. 중간 값(mid)을 선택하여 검색값(X)과 비교합니다. 검색값(X)이 중간 값(mid)보다 작으면 중간 값(mid)을 기준으로 왼쪽으로 다시 탐색, 크다면 오른쪽으로 다시 탐색합니다. 중간 값(mid) = low + (high + low) / 2 (인덱스기준) 예시로 찾고자 하는값이 41일 때, 배열의 시작 지점이 low가 되.. 2024. 1. 9.
[java] Stream 이해하기 스트림(Stream) 에 대한 간단한 이해가 필요합니다. Stream을 이용해서 반복문을 최소화 시키거나,여러 작업을 위한 데이터를 만들고, 검증할때 유용하게 사용할 수 있습니다. 반드시 알아야 하는 개념으로 정리 해보려 합니다. 참고자료가 있나 싶어 찾아봤더니 점프투자바에서는 다음처럼 나왔습니다. "스트림(stream)은 글자 그대로 해석하면 ‘흐름’이라는 뜻이다. 데이터가 물결처럼 흘러가면서 필터링 과정을 통해 여러 번 변경되어 반환되기 때문에 이러한 이름을 갖게 되었다." https://wikidocs.net/157858 07-06 함수형 프로그래밍 자바는 Java 8 버전부터 함수형 프로그래밍을 지원하기 위해 **람다(lambda)**와 **스트림(stream)**이 도입되었다. 람다와 스트림을 .. 2024. 1. 9.
[IntelliJ] 한글 깨짐, unmappable character (0xec) for encoding x-windows-949 에러 해결하기 IntelliJ에서 작업하다가 초기에 이런 에러를 만난 적이 있습니다. 해당 위치의 주석이 문제된다고 에러가 뜨는 것인데, 주석이 에러라는게 이해되질 않아서 원인을 찾아봤습니다. Setting > Editor > File Encodings 의 세팅 영역에 인코딩이 x-windows-949로 되어있어 그런 것이었고, UTF-8로 바꿔줬습니다. 로그에서 에러가 나는 부분은 해결되었습니다. 그러나 테스트결과에서도 새로운 한글 깨짐이 발생합니다. 여기서 사용된 프로젝트는 Gradle 기반 프로젝트입니다. Gradle로 rebuild Project를 해봐도 해결되지 않았습니다. IntelliJ에서 생성한 Gradle 기반 프로젝트로 8.4버전을 사용하고 있는데, 버전을 바꾸더라도 한글깨짐이 계속 생겼습니다. 원인.. 2024. 1. 8.
[IntelliJ] 우클릭 new 에서 java class 사라졌을 때. 프로젝트 폴더에 우클릭 -> New -> Java Class 가 보이지 않을 때 원인 찾기 사진처럼 디렉토리 생성 후 우클릭 눌럿을 때 class 가 보이지 않고 엉뚱한게 보인다... 이런식으로 디렉토리가 있는데도 그런데,, 희안해서 패키지를 새로 만들어봤다. ddd라는 패키지인데, 여기선 또 class 생성 버튼이 나온다. 패키지가 이상하게 만들어져서 그런 것 같은데,, 해결방법은 패키지를 새로 만들거나 이름을 바꾸면 해결된다. 내 경우는 패키지 이름이 abstract 이다보니 규칙에 걸려 그런 것으로 보인다. abstracts 로 바꾸니 해결되었다. (공부용이다보니, 이름을 너무 직관적으로 해서 이런 오류가 난 것 같다.) 빠르게 감지해서 패키지를 다시 생성하거나 이름을 바꾸는게 좋아보인다. 오류라서.. 2024. 1. 6.