반응형

분류 전체보기 226

[Java-Basic] Java 언어의 특징 및 OOP의 특징

자바는 제임스 고슬링 형님이 만든 대표적인 객체지향언어이다. 자바의 특징을 5가지로 나누어본다면 1). 객체지향 프로그래밍(OOP) 2). 자동 메모리 관리 (Garbage Collector) 3). 운영체제에 독립적 실행 -> JVM 4). 멀티쓰레드 지원 5). 동적 로딩 지원 한가지씩 살펴보자 객체지향 프로그래밍 (OOP) 객체지향프로그래밍의 대표적인 특징을 빼놓을 수 없을것이다. 대표적 특징에는 상속, 캡슐화(은닉화), 다형성, 추상화 가 있다. 객체지향 프로그래밍은 저러한 특징들을 이용하여 코드의 재사용성을 좋게 하고, 유지보수를 용이하게 만들며 개념별 관리가 편리하다. 1). 상속 : 부모 클래스의 변수 및 메서드 등을 자식 클래스가 전부 물려받아 사용(접근) 할 수 있는 성질 -> 자식클래스..

[SpringBoot] Filter 설정 및 개념

Spring에서 사용하다가 SpringBoot로 넘어가면서 기존에 정리해놓지 않았던 내용들을 적어놓으려고 한다. 필터란? Servlet의 ServletContext의 기능으로 보고, 사용자에 의해 서블릿이 호출 되기 전과 후로 사용자 요청/응답의 헤더 정보등을 검사 하고, 설정할 수 있다. 필터와 인터셉터의 차이점 필터의 작동 위치? : DispatcherServlet 앞에서 먼저 동작 인터셉터의 작동 위치 ? : 인터셉터는 DispatcherServlet에서 Controllr(Handler) 사이에서 동작 필터 Servlet Context의 기능 스프링 기능을 활용하기에 어려움 => 별도로 의존성을 주입해주어야 된다. 일반적으로 인코딩, CORS, XSS, LOG, 인증, 권한 등 을 구현 인터셉터 S..

[Spring-JSP] 어플리케이션 백그라운드 데몬쓰레드 + ServletContextListener

오늘은 서버 구동시 호출되는 메서드를 먼저 알아보고, 해당 기능을 통한 서버 데몬을 기록해 두려고한다. 필자는 Redis를 사용하여 서버에서 Redis를 Sub하고있는 서버 데몬을 만들었다. 이전에는 어플리케이션 뒷단에서 작동하는 Daemon Thread로 유용하게 사용할 수 있을 아이~! 다음은 필요한 정보들이다. 1). Redis properties를 가져오기 위하여 @PropertySoure를 사용한다. 2). ServletContextListener + @WebListener @WebListener 어노테이션을 사용하여 Tomcat에 Listener임을 알려주는 어노테이션인데, 해당 어노테이션을 통해 Tomcat에게 이거 리스너로 쓸거야! 라는것을 알려준 뒤, ServletContextListen..

[Spring-JSP] @WebListener 와 ServletContextListener

@WebListener Annotation은 Servlet-api 라이브러리를 가져와서 사용하는 어노테이션으로, 어노테이션을 달면 톰캣에게 이클래스는 Listener이다 라고 알려준다. 톰캣에게 나는 리스너다 라고 알려준뒤 ServletContextListener interface를 받아, contextInitialized와 contextDestroyed를 오버라이딩하여 메서드를 사용할 수 있다. #여기서 리스너란? 특정 이벤트(특정한 사건)가 발생하기를 '귀 기울여' 기다리다가 실행되는 컴포넌트(메서드나 함수)를 뜻한다. @WebListener public class ContextLoaderListener implements ServletContextListener { @Override public v..

[Spring-JSP] 초기화 메서드 Spring Bean 생명주기

오늘은 Spring에서 서버 기동후 모든 어플리케이션을 구동하기위한 세팅이 끝난 후 실행되야 되는 메소드를 구현하는 방법을 작성해두려고 한다. 필자는 Server 재기동시 DI작업을 마치고 난뒤 Redis에 이런저런 데이터를 캐싱해 놓을때 사용했다.(관리자정보, IoT정보 , 메뉴 등) Spring 생명주기와 관련된 부분이라, 전체적으로 기재해 놓으려고 한다.! 초기화 메서드 DI 작업 까지 마친 다음 실행되는 메서드로, DI를 통해 빈이 주입된 후에 초기화 할 작업이 있을때 초기화를 진행할 수 있다. 즉 초기화 메소드(initialization method)는 빈 오브젝트가 생성되고 DI 작업까지 마친 다음에 실행되는 메소드를 말한다. InitializingBean Spring에서 제공하는 인터페이스로..

[Knowledge] GitHub 프로젝트 올리기(윈도우)

1). Git을 설치한다. Git 설치는 Os Version에 맞는것으로 진행 2). Github에서 repository를 만들어준다. 3). 프로젝트 폴더 내부에서 git bash 실행 4). 초기설정 : 본인의 깃헙 name과 email입력 => git config --global user.name "이름" => git config --global user.email "이메일" => 확인 git config --list 5). 프로젝트 올리기 ### .git 파일 생성 $ git init ### 선택한 프로젝트 폴더 내의 **모든** 파일 버전 관리 $ git add . ### 버전 관리 tracking. 업그레이드 된 것은 untracking이라고 빨간 글씨표시 $ git status ### 커밋 ..

[Java-Algorithm] 백준 1789 풀이

문제 : https://www.acmicpc.net/problem/1789 1789번: 수들의 합 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. www.acmicpc.net 풀이 : 1+199 = 200 ..1+2+197 = 200 ... 1+2+3+194 = 200 이런식으로 해서 가장 많은 숫자의 합으로 이루어질때를 구하면 된다. 그래서 값을 더할 때마다 count를 증가시켰고, 최종 마지막때는 값이 더 커질수 있으니 그때는 count -1 을 해준다. public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System..

[Java-Algorithm] 백준 7576 토마토 풀이

문제 : https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 풀이 : 좌표 문제는 처음 접해봤다... 2차원 배열을 써야되겠는건 알겠는데 쉽지 않았다... 먼저 어떻게 풀어야될지 감이 안잡혔다. 너비 우선탐색 BFS를 생각해보니 Queue를 써야겠구나 싶었다. 방법 1). 우선 익은 토마토의 기준으로 안익은토마토를 익히는걸 중점적으로 생각했다. 그래서 익은 토마토의 위치를 Queue에 담아놓고 익은토마토를 한바퀴돌면서 주변의 안익은..

[Java-Algorithm] 백준 2606 바이러스 풀이

문제 : https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 풀이 : DFS 그래프로 풀었다... 전역으로 Cnt 놓고, 순서대로 시작 정점부터 재귀를 통해 Cnt하는 방법으로 풀었다. static int cnt = 0; public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ..

[Java-Algorithm] 백준 2217 로프 풀이

문제 : https://www.acmicpc.net/problem/2217 2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하 www.acmicpc.net 풀이 : 이 문제는 시간제한이 있는것을 생각안하고, 쉬운문제다 생각하고 2중for문을 사용해서 처음에 풀었다... 안일했다.. 결국 아래 코드로 로직 수정. 처음에는 문제가 이상해보였지만, 결국 결론은 간단하였다. K의 하중을 N개의 로프가 각각 K/N 씩 받는다고한다. ==> 예를 들어보자. 최종 문제에서 제시하는 정보는 선택한 로프 10, 20 , 30, 40 , 50 이 있..

반응형