JAVA 13

[Java] Stream?

Stream? 자바 8에서 추가된 Stream은 람다를 활용하여 배열에 대한 처리를 간결하게 해주는 기술을 말한다. 배열을 다루기 위해 이전에는 for문을 사용해 요소 하나하나 체크해서 다뤘다. 하지만 이 방법은 배열에 대한 처리가 많아질 수록 코드의 양도 늘어나 가독성이 떨어지게 된다. Stream을 이용해 여러가지 함수를 조합하여 배열을 처리하면 원하는 결과물을 얻을 수 있게된다. 간결한 for문은 Stream을 이용해 한 줄로 줄일 수도 있다. 또, Stream은 병렬처리를 지원하여 처리 속도가 빠른 장점이 있다. 병렬처리란 하나의 작업을 둘 이상의 작업으로 나눠 동시에 진행하는 것을 말함(Thread) 예제

JAVA 2022.06.21

[JAVA] InputStream 데이터 가져오기 (BufferedReader)

Stream? Stream이란 실제 입력이나 출력이 표현된 데이터의 이상화된 흐름을 말한다. InputStream, BufferedReader API 테스트 코드를 응답 데이터를 Stream형태로 가져와서 출력하는 형태로 작성하던 중에 Stream형태로 가져오는 법만 알지 왜 이렇게 가져오는 지 모르고 있었다. 67LINE을 보면 아래 형태의 코드로 Stream 응답 데이터를 가져오고 있다. BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); 위 코드를 보면 HttpURLConnection을 통해 응답 받은 입력 스트림을 가져오는데, 이걸 InputStreamReader로 감싸고 또 BufferedRea..

JAVA 2022.04.12

[Java] 스프링 MVC 패턴 프로젝트 코드 개선

프로젝트 코드를 보던 중 아래 형식의 코드를 발견했다. String param1 = (String) paramMap.get("param1"); String param2 = (String) paramMap.get("param2"); String param3 = (String) paramMap.get("param3"); String queryString = String.format("param1=%s&param2=%s&param3=%s", param1, param2, param3); 쿼리스트링을 포함해 특정 경로를 호출하면 쿼리스트링의 파라미터들을 맵 형식으로 받아와 (@RequestParam Map paramMap) 그 맵의 값들을 일일이 가져와 쿼리스트링 문자열을 만드는 코드이다. 이 쿼리스트링의 값은 ..

JAVA/Good Coding 2022.04.04

[JAVA] equals() 함수 사용법과 주의사항

equals()? 자바의 String 객체가 제공하는 equals함수는 객체끼리의 내용을 비교하여 (문자열끼리의 비교) 같으면 true, 다르면 false를 반환하는 함수이다. 주로 문자열을 비교할때 위 함수를 이용한다. 사용 예시 사용법은 간단하게 equals함수를 이용하여 비교할 문자열을 지정해주면 된다. NullPointerException 주의 equals함수를 사용할 때 주의해야할 점이 있는데, equals함수를 사용하려는 객체, 즉 첫번째 비교대상의 값이 null이면 NullPointerException 예외가 발생하게 된다. 위 예시처럼 null값을 다른 문자열과 비교하려고 하였을 때 NullPointerException이 발생하는 것을 볼 수 있다, 그러나 null이 되는 값을 비교 대상으..

JAVA/Good Coding 2022.03.31

로깅 라이브러리에 대해서(SLF4J? logback? log4j2?)

2021년 12월 10일 로깅 라이브러리에 대해 취약점이 발견됐다고 기사가 보도 되었다. https://news.v.daum.net/v/20211211181030002 "컴퓨터 사상 최악의 취약점 발견됐다".. 전세계 보안업계 '발칵' 거의 모든 인터넷 서버에서 광범위하게 사용되는 소프트웨어에 치명적 보안 취약점이 발견돼 전 세계 사이버 보안 업계가 발칵 뒤집혔다. 게임이나 클라우드 서버를 운영하는 정보기술(IT) 기업 news.v.daum.net 로깅(LOGGING) 먼저 로깅이란 프로그램을 작성할 때 로그를 생성하여 기록을 남기는 행위를 말한다. 예를 들어 프로그램을 작성하다가 버그를 발견했을 시 버그를 찾기 위해 로그를 남길 수도 있고, 서비스를 이용할때 특정 요청에 대한 로그를 남겨 트래킹할 수 ..

JAVA 2021.12.12

[Servlet] HttpServletRequest, HttpServletResponse의 이해

Servlet? 서블릿이란 클라이언트의 요청을 처리하고 응답을 사용자에게 반환하는 Servlet구현 규칙을 지킨 자바 웹 프로그래밍 기술이다. 웹 브라우저가 요청했을 때 WAS가 어떻게 처리하는지 구조를 나타낸 그림이다. 웹 브라우저가 요청을 하면 전달받은 정보를 HttpServletRequest 객체에 담아 서블릿에게 보낸다. 서블릿이 요청을 처리 후 응답 데이터를 HttpServlertResponse에 담아 웹 브라우저에게 보내준다. HttpServletRequest HTTP프로토콜의 request 정보를 서블릿에세 전달하기 위한 목적으로 사용됨. Header 정보, Parameter, Cookie, URI, URL 등의 정보를 읽어들이는 메소드를 가진 클래스임. Body의 Stream을 읽어들이는 ..

JAVA/Servlet 2021.12.01

[JAVA] JAR, WAR의 개념과 차이점

JAR란? .jar 확장자 파일에는 .Class와 같은 자바 리소스 파일, 라이브러리 등과 같은 파일이 포함되어 있음. 자바 어플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일이라고 생각하면 됨. .jar 파일은 원하는 구조로 구성할 수 있으며, JDK(Java Development Kit)에 포함하고 있는 JRE(Java Runtime Environment)로 실행이 가능함. WAR란? .war 확장자 파일은 servlet/jsp 컨테이너에 배치할 수 있는 웹 애플리케이션 압축 파일 포맷임. JSP, SERVLET, JAR, CLASS, XML, HTML, JAVASCRIPT 등 Servlet Context 관련 파일들로 패키징 되어있음. WAR는 웹 응용 프로그램를 위한 포맷이기 때문에 웹 ..

JAVA 2021.11.08

디자인 패턴 - 싱글톤 패턴

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

JAVA 2021.07.24

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