BACK-END/JAVA

    [Java] 1차원 배열에서 중복되지 않는 값 찾기

    [Java] 1차원 배열에서 중복되지 않는 값 찾기

    int[] arr = new int[]{1,2,1,3,3,2,4}; 위와 같은 정수형 배열에서 중복되지 않는 4의 값을 가져오고 싶을 때, 1차원 배열에서 중복되지 않는 정수를 찾기 위해서는 XOR 연산이 필요하다. 명제 P 명제 Q P ⊻ Q 1 1 0 1 0 1 0 1 1 0 0 0 [XOR 진리표] XOR의 연산 과정을 살펴보면, 다음과 같다. 1 2 1 3 3 2 4 000(0) 001(1) 001(1) 010(2) 011(3) 001(1) 010(2) 001(1) 011(3) 001(1) 010(2) 010(2) 000(0) 100(4) 001(1) 011(3) 010(2) 011(3) 010(2) 000(0) 100(4) [연산 과정] int[] arr = new int[]{1,2,1,3,3,..

    [Java] 길이만큼 문자채우기

    [Java] 길이만큼 문자채우기

    👀 작성계기 SFTP 형식의 파일 교환시에 길이를 고정한 상태로 빈 문자열을 0으로 채워야하는 업무가 있었다. 어떻게 해결해야 할지 고민 하다가 빈값을 채우는 알고리즘을 만들어 둔 소스를 찾을 수 있었다. 자세한 설명은 소스상에 주석을 달아 설명해두었으니 참고하길 바랍니다. 💻 예제소스 private final static int LEFT = 0; private final static int RIGHT = 1; /** *String 형의 자료를 입력받아 길이만큼 문자를 채워서 리턴하는 method * *inputData : 원데이타 *align : 0 - left, 1 - right (어느쪽에 원 데이타를 둘건지...) *fillSize : 늘리고자하는 길이 *fillChar : 채울 문자 * *예) :..

    [JAVA] URL로 페이지 HTML소스 가져오기 (HttpsURLConnection)

    [JAVA] URL로 페이지 HTML소스 가져오기 (HttpsURLConnection)

    HTTPS 프로토콜 기준으로 작성된 URL 통신 예제입니다. 추가 설정 부분은 추후에 따로 다루겠습니다. 기본적인 형태에 대한 이해를 하시는데에 도움 되실겁니다. 네이버 웹툰 페이지으로 테스트 진행하는 예제입니다. 복사 & 붙여넣기 해도 됩니다. 패키지 선언은 하셔야합니다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.URL; import java.net.URLConnection; import javax.net.ssl.HttpsURLConnection; public class Example..

    [Java] (읽기전용 파일 시스템) 파일서버 디스크 에러

    [Java] (읽기전용 파일 시스템) 파일서버 디스크 에러

    java.io.FileNotFoundException: /경로~~/ABCD_001.png (읽기전용 파일 시스템) 기존 운영 중이던 파일서버에서 어느날 갑자기 파일 쓰기가 안되는 문제가 발생하였다. 원인을 파악해보려고 시도 해본 방법은 다음과 같다. 같은 파일 서버를 이용중인 계정을 파악하여 ROOT · NFSNOBODY 권한으로 테스트를 해보았다. 확인을 해보니 권한 문제는 아니였고, 내부 공유를 통해 확인을 진행했다. 확인을 해보니 RW(Read Write)권한이 있음에도 불구하고, 쓰기가 안되고 읽기전용 파일시스템으로 처리되는 것으로 확인되어 구글링을 해보니 2가지를 확인 할 수 있었다. 1. 마운트를 ReadOnly로 설정 2. 하드디스크에 에러가 나서 읽기 전용 옵션으로 변경 마운트된 서버를 확..

    [Java] 308 Permanent Redirect

    [Java] 308 Permanent Redirect

    👀 문제발견 외부 연동 중이였던 API 주소중 하나가 어느날 갑자기 308 Permanent Redirect 에러 응답을 하였다. 이 에러 응답은 임시가 아닌 영원히 리다이렉트 되었다는 의미로, 더이상 사용 할 수 없는 주소이라는 의미였다. 😎 확인내용 그 의미에 따라 URL을 확인해보았다. 운영중이던 API 주소 : abc.com/~~ 리다이렉트 API 주소 : def.abc.com/~ 리다이렉트 주소는 에러 발생시 printStackTrace 영역을 확인하면 된다. 308에러는 처음봐서 어떻게 대처할지 생각을 많이했는데 어떤 에러인지 알고나서는 금방 처리 할 수 있었다.

    [Java] 문자 길이를 고정 처리하여 보기 좋게 만들자.

    [Java] 문자 길이를 고정 처리하여 보기 좋게 만들자.

    🔗지난 포스팅 [JAVA] 메인 메소드에서 클래스 생성하기 소스 바로보기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import level1.CheckCntN; import level1.CrainGame; import level1.HateSameNum; import level1.Marathon; import level1.PracticeTe.. 96-brain.tistory.com 👀 문제 발견 지난 포스팅에서 클래스를 메인에서 호출하여 사용하는 예제를 만들었다. 만들어 사용중에 클래스 개수가 점점 많아져서 콘솔창을 늘리지 않으면 한페이지에 보이지 않았다. 한페이지에 보이지 않아 늘려서 보고 번호를 입력 하는 이 구조가 불편해서 출력 형태를 한눈에 볼 ..

    [JAVA] 메인 메소드에서 클래스 생성하기

    [JAVA] 메인 메소드에서 클래스 생성하기

    소스 바로보기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import level1.CheckCntN; import level1.CrainGame; import level1.HateSameNum; import level1.Marathon; import level1.PracticeTest; import level1.RecommandNewID; import level1.getMidStr; import level1.SumTwoInt; public class App { public static void main(String[] args) throws Exception { // new CrainGame(); // new Marathon(); // new Prac..

    [Java] 마스킹 알고리즘 (Masking Algorithm)

    [Java] 마스킹 알고리즘 (Masking Algorithm)

    자바 마스킹 알고리즘 관련 예제입니다. 상세 설명은 주석을 통해 메모 해두었으니 참고 하시어 봐주시길 바라며, 궁금하신 사항은 댓글로 부탁드립니다. package ew; public class MaskingAlgorithm { /// Fields /// Constructor /// Method public static void main(String[] args) { // case 1. 주민등록번호 String data = "9607201111111"; // case 1-1. 주민등록번호 길이 측정. System.out.println("주민등록번호의 길이 : " + data.length()); // case 1-2. 주민등록번호 앞자리의 길이 만큼 뺀 값(7)만큼 데이터 오른쪽을 Masking 처리 Str..

    [Java] 로그 생성 파일 경로 추출

    [Java] 로그 생성 파일 경로 추출

    로그파일 생성시 클래스명과, 메소드명을 추출하는 방법입니다. public class GetPath { /// Fields /// Constructor public GetPath(){ System.out.println("Create Default Contructor"); } /// Method public static void main(String[] args) { String path = new GetPath().makePath(); System.out.println(path); } /** * 로그 생성시 [ClassName::MethodName]의 경로를 얻어온다. * @return */ private String makePath(){ StackTraceElement[] a = new Throwable..

    [Java] 알고리즘 문자열 2진 검색(Binary Search) 예제

    [Java] 알고리즘 문자열 2진 검색(Binary Search) 예제

    자바 알고리즘 문자열 2진 검색 예제입니다. import java.util.ArrayList; import java.util.Collections; import java.util.List; public class BinarySearch{ /// Fields /// Constructor public BinarySearch(){ } /// Method public static void main(String args[]){ // 데이터 정렬을 위해 ArrayList 생성 List strList = new ArrayList(); // 데이터 리스트 String[] data = {"쥐","소","호랑이","토끼","용","뱀","말","양","원숭이","닭","개","돼지"}; // 검색대상 String targ..

    [Java] JSCH를 사용한 SFTP 서버 통신 및 파일 다운로드 예제

    [Java] JSCH를 사용한 SFTP 서버 통신 및 파일 다운로드 예제

    자바 jcraft 라이브러리를 사용하여 SFTP 서버 통신 및 파일 다운로드 예제입니다. 서버의 IP와 아이디, 비밀번호 포트 번호까지 정확하게 입력하셔야 하고, 경로 부분 직접 작성해주셔야 합니다. 또한 Main이 없기때문에 해당 클래스 호출하는 Main 메소드 따로 작성해주셔야 하니 참고 부탁드립니다. package noah; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.InputStream; import java.util.Properties; import java.util.Vector; import com.jcraft.jsch.Channel; import..

    자바 제어자 (Modifier)

    제어자 자바는 OOP의 개념 중 캡슐화를 지원하기 위한 제어자(Modifier) 라는 예약어을 제공한다. ◆ 제어자 (Modifier) 접근제어자를 제외한 나머지를 의미한다.여러개의 제어자를 조합해서 사용할 수 있으나, 접근제어자는 단 하나만 사용할 수 있는 특징이 있다. |◆ static 하나의 인스턴스만 허용한다. '클래스의' 또는 '공통적인' 의미를 가진다.필드와 메소드를 만들면 .(dot) 이라는 식별성으로 접근해야한다.static이 붙은 필드와 메소드는 인스턴스를 생성하지 않고도 사용할 수 있다.( == 현재클래스에서 필드와 메소드를 만들지 않은 메소드를 수행가능하게 해주는 예약어) ||◆ static Field 인스턴스를 생성하지 않아도 사용 가능한 static Field가 된다.하나의 App..

    자바 접근제어자(Access Modifier)

    접근제어자 자바는 OOP의 개념 중 캡슐화를 지원하기 위한 접근제어자(Access Modifier) 라는 예약어을 제공한다. ◆ 접근 제어자 (Access Modifier) |◆ public 누구나 접근 가능한 접근제어자이다.특별한 조건없이 사용가능하다. |◆ protected 같은 패키지에 있거나 상속받은 경우에만 접근 가능하다. |◆ default 같은 패키지 내에 있을 때만 접근 가능하다. 아무런 접근 제어자를 적어주지 않을경우 시스템이 알아서 붙여주는 값이다package - private 라고도 불린다. |◆ private 해당 클래스 내에서만 접근 가능하다. ◆ 정리표 해당 클래스 안에서 같은 패키지에서 상속받은 클래스에서 import한 클래스에서 public O O O O protected O..

    OOP(Object Oriented Programming)

    OOP Java는 OOP를 지원하는 언어이다. ◆ OOP(Object Oriented Proramming)현실(Real World)에 있는것을 시스템화 하기위한것이 객체 지향 프로그래밍이다. ◆ Object 객체를 의미한다.현실에서 시스템으로 옮겨 질 수 있는 모든 것을 의미한다. 크게 3가지로 나누면물리적인 객체 / 개념적인 객체 / 소프트웨어적 객체로 나눌 수 있다. 객체는 식별성과 상태와 행위를 가진다. |◆ 식별성 (Identyfier) 분별하여 알아보는 특징이다.우주라는 곳에서 지구를 표현하려고 할 때, 파랗고 23.5도 기울어져 있는 것이라고 표현하지 않고 지구라는 표현을 사용하는 것을 식별성이라고 부릅니다. |◆ 행위 (Method) Java에서 행위는 메소드로 표현할 수 있다. ~~하다 라..