자바

Programming/Java

[백 투 더 베이직] 객체지향 SOLID 원칙

SOLID원칙 SRP(Single Responsibility Principle): 단일 책임의 원칙 → 클래스는 단 하나의 책임을 가져야 하며, 클래스를 변경하는 이유는 단 하나의 이유여야 한다. OCP(Open-Closed Principle): 개방 폐쇄 원칙 → 확장에는 열려있어야 하며, 변경에는 닫혀있어야 한다. LSP(Liskove Substitution Principle): 리스코프 치환 원칙 → 상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작 해야한다. ISP(Interface Segregation Principle): 인터페이스 분리 원칙 → 인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리해야 한다. DIP(Dependency ..

Programming/Java

[삽질일기] Arrays.asList 와 ArrayList의 차이

코딩을 하다 보면, 배열 또는 List 형태가 아닌 데이터를 List 데이터 타입으로 만들 때 간편하게 Arrays.asLIst 메서드를 활용해서 그동안 리스트 데이터를 만들고 있었다. List score1 = Arrays.asList(1, 2, 3, 4, 5); 그러다가 Arrays.asList로 만든 List A에서 DB에서 조회한 List B의 값을 빼야 하는 경우가 생겼고 아무 생각 없이 다음과 같이 코드를 작성해봤다. List score1 = Arrays.asList(1, 2, 3, 4, 5); // DB에서 값을 가져옴 List score2 = getSomeDataFromDatabase(); // DB 값을 제외한 나머지 값을 찾아보자! score1.removeAll(score2); 그랬더니,..

Programming/Spring

[Spring Boot] Filter (2) -Response Body Modify

2020/07/15 - [Programming/Java] - [Spring Boot] Filter (1) - Request Body Modify [Spring Boot] Filter (1) - Request Body Modify 스프링 기반으로 서버를 개발하다가, 특정 API를 통해 송 수신되는 모든 데이터를 암호화해야 하는 니즈가 생기게 되었다. 다음은 스프링을 조금 공부해봤다고 하는 사람들은 대다수 알만한 스�� johnmarc.tistory.com 이전 글에서 말했듯이 특정 API를 통해 송수신되는 모든 데이터를 암호화해야 하는 니즈로 인해, 들어오는 요청 데이터를 복호화하는 필터 클래스를 작성하였고, 이번에는 요청을 처리한 결과의 응답 데이터를 암호화하는 필터 클래스를 작성해보겠다. 먼저 @Res..

Programming/Spring

[Spring Boot] Filter (1) - Request Body Modify

스프링 기반으로 서버를 개발하다가, 특정 API를 통해 송 수신되는 모든 데이터를 암호화해야 하는 니즈가 생기게 되었다. 다음은 스프링을 조금 공부해봤다고 하는 사람들은 대다수 알만한 스프링 MVC에서의 요청 처리 구조 사진이다. 보는 것과 같이 요청을 가장 먼저 처리하는 부분은 바로 filter 이다. filter layer에서 요청 데이터를 복호화하고, 이를 그대로 뒷단으로 넘겨서 로직을 처리할 수 있도록 구조를 생각해보았다. 스프링 부트의 기본 웹 서버인 Tomcat은 서블릿 기반으로 웹 요청을 처리하기에, 스프링 부트에서 Http 요청은 javax.servlet.http 패키지 하위에 있는 HttpServletRequest 클래스 객체로 넘어오게 되며, javax.servlet.http 패키지에서..

Programming/Java

[Java] AES 256 암복호화 유틸클래스

일을 하다 보니 AES 256 알고리즘으로 암복호화할 일이 생겨서 간단하게 유틸 클래스를 만들어보았다. 256 암호화라서 32자의 암호화 키를 사용해야하며, iv 파라미터를 이용한다. iv 파라미터 값은 암호화 키 16자를 활용한다. import lombok.extern.slf4j.Slf4j; import javax.crypto.*; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.nio.charset.StandardCharsets; import java.security.InvalidAlgorithmParameterException; import java.security.InvalidK..

Programming/Algorithm

[Java-알고리즘] toLowerCase Implemet

[Problem] Implement function ToLowerCase() that has a string parameter str, and returns the same string in lowercase. [Example1] Input: "Hello" Output: "hello" [Example2] Input: "here" Output: "here" [Example3] Input: "LOVELY" Output: "lovely" [Solution] import java.lang.StringBuilder; class Solution { public String toLowerCase(String str) { char[] characters = str.toCharArray(); int strLen = st..

Programming/Algorithm

[Java-알고리즘] Split a String in Balanced Strings

[Problem] Balanced strings are those who have equal quantity of 'L' and 'R' characters. Given a balanced string s split it in the maximum amount of balanced strings. Return the maximum amount of splitted balanced strings. [Example1] Input: s = "RLRRLLRLRL" Output: 4 Explanation: s can be split into "RL", "RRLL", "RL", "RL", each substring contains same number of 'L' and 'R'. [Example2] Input: s ..

Programming/Scala

[Scala-03] 클래스에 대하여

Scala는 객체지향의 개념과 함수형의 개념이 섞인 언어이다. 객체지향 개념이 있듯이 Scala에는 당연히 Class가 존재한다. Scala에서의 Class는 Java의 Class와 유사하지만, Scala에서는 Class가 파라미터를 가질 수 있다는 차이점을 갖고 있다. 아래 소스코드는 Scala 코드로 작성한 파라미터를 가지는 Class의 예제이다. class Complex(real: Double, imaginary: Double) { def re() = real def im() = imaginary } 이 Complex Class (복소수 클래스)는 두 개의 인자를 받는다. 하나는 복소수의 실수 부분이고, 또 다른 하나는 복소수의 허수 부분에 해당한다. 이 파라미터는 Complex 클래스의 인스턴스를..

JohnMark
'자바' 태그의 글 목록