일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ajax
- html
- github
- AWS
- socket
- Lombok
- nodejs
- cache
- reactive
- reactor
- mybatis
- Linux
- Static
- Java
- Heap
- r
- HTTP
- mongodb
- effective
- Elk
- javascript
- git
- redis
- 네트워크
- spring
- 데이터통신
- NoSQL
- VCS
- network
- libuv
- Today
- Total
목록Java (37)
빨간색코딩
참조문서 : https://d2.naver.com/helloworld/10963관련 포스팅 : http://sjh836.tistory.com/1211. 들어가며1-1. 스레드의 종류Daemon Thread작업을 돕는 보조적인 역할을 수행하는 쓰레드 (GC 도 여기에 해당)프로세스 종료시 데몬 쓰레드는 강제적으로 자동종료언제든지 종료가 되어도 상관없는 작업 시에 사용 (그래서 주로 데몬쓰레드를 쓴다)Thread t = new Thread(); t.setDaemon(true); 로 설정가능Non-Daemon Thread실제 주 작업을 하는 스레드프로세스 종료시 논데몬 쓰레드가 살아있는 경우 종료 불가능 (가끔 톰캣을 종료했지만 안꺼져서 kill 해야되는 이유)매우 중요한 데이터 처리시에 사용하는 것이 일반적..
1. java에서 가변인자를?jdk 1.5 부터 추가되었다. 비정형 인자라고도 하며, 몇개의 인자가 넘어올지 모를 때 사용하면 좋다. 배열로 간주되며, 메소드가 호출될 때 배열의 길이를 결정한다. 배열타입을 인자로 받기에는 너무 작아서 아쉬울때 주로 쓴다고 한다..ㅋㅋ2. 어떻게 쓰는가메소드명(String ... args) 이런식으로 ... 을 찍으면 된다. 주의할 점은 가장 마지막 인수에 위치해야한다. (The variable argument type String of the method print must be the last parameter)
1. JDBC 란?Java Database Connectivity 의 약자이다. java에서 DB에 접속할 수 있도록 하는 API이다. JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다. 패키지는 java.sql와 javax.sql에 있다.2. ODBC 와 차이ODBC는 Open Database Connectivity 의 약자이다. ODBC는 모든 응용 프로그램(프로그래밍 언어 무관)에서 모든 데이터베이스 시스템과 통신하는 데 사용할 수있는 개방형 인터페이스이다. 즉, JDBC가 java만 지원하는 것과 다르게 ODBC는 언어와 독립적이다.3. JDBC 아키텍처 JDBC 드라이버매니저는 DB에 맞는 드라이버를 load하여 JDBC를 초기화한다.JDBC 드라이버들은 자바 어플리케이션..
일반클래스는 Package member class 라고들 하며, 아래 항목에서 제외했다. 구글링해보면 클래스간에 관계나 큰 틀에서의 구조를 안잡고 나열하는 식이 많은 것 같다ㅋㅋ1. 중첩 클래스는 왜 쓰는가?클래스들의 논리적인 그룹을 나타낼 때 쓴다. 주로 model 객체에서 상위모델과 하위모델이 있을 때 쓰는 것 같다. (Static Nested Class 를 많이 씀)향상된 캡슐화좋은 가독성과 유지보수성2. 중첩 클래스의 종류3. 내부클래스 (Inner Class)내부클래스로서 일반클래스 내부에 생성된다. Non-Static Nested Class 라고도 불린다.밖에 있는 클래스는 내부클래스를 멤버변수처럼 사용할 수 있다. 사용하려면 new로 인스턴스를 만들어야한다.내부클래스는 자신의 밖에 있는 클래..
1. Object 클래스java의 모든 클래스의 최상위 부모이다. 자동으로 java.lang.Object 클래스를 상속받으므로 extends 역시 필요 없다.2. 주요 메소드반환형메소드명설명booleanequals(Object o)객체 간에 동일여부를 나타냄inthashCode()객체의 해쉬값StringtoString()객체를 string으로 나타냄, 기본적으로 클래스명@16진수hashCode값Objectclone()객체를 복사해서 리턴voidfinalize()객체가 GC처리 되기전에 호출ClassgetClass()객체의 runtime class를 리턴instanceof 연산자와 getClass() : instanceof 연산자는 상위 부모클래스에도 true가 된다. if문으로 분기처리할 경우 getCl..
1. 문제상황HTTP 메소드 DELETE로 request body를 이용하여 spring 컨트롤러에 요청을 쐈는데, 파라미터가 전부 null 로 넘어가는 것이 아닌가?? 띠용? 2. 문제점참조문서 : https://stackoverflow.com/questions/25375046/passing-data-in-the-body-of-a-delete-requesttomcat의 문제라고 한다. tomcat은 request body를 POST 일때만 파싱하고 있었다.코드까보기톰캣버전 : 8.0.48 (로컬 윈도우에 깔린거)경로 : org.apache.catalina.connector.Connector.java관련 코드76라인 : 생성자호출에서 this.parseBodyMethods = "POST";196~212라..
1. apache commons 가 뭔가?2002년 9월에 처음 만들어졌으며, 자바관련 공통 컴포넌트 개발을 위한 프로젝트의 모임크게 3가지의 분류가 있다.Commons Proper : 서로 재사용 가능하도록 개발 및 활용이 가능한 프로젝트들의 모임, 외부 라이브러리의 사용이 거의 없어 아파치 소프트웨어 외부의 변경에 영향을 받지 않고 내부적으로 안정적으로 개발Commons Sandbox : 아직 Proper 단계로 올라가지 못한 단계의 프로젝트들을 모아놓은 공간Commons Dormant : 거의 활동이 없이 정지된 프로젝트들의 목록2. 우리가 자주사용하는 프로젝트들?Commons Proper 에서 내 기준 자주 본 것들을 정리해보자.LANG : java.lang 패키지의 기능을 확장하여 제공하는 컴포..
참조문서http://d2.naver.com/helloworld/645609https://docs.oracle.com/javase/8/docs/api/java/time/package-frame.htmlhttp://jekalmin.tistory.com/entry/%EC%9E%90%EB%B0%94-18-%EB%82%A0%EC%A7%9C-%EC%A0%95%EB%A6%ACjdk 1.8 부터 날짜 API 가 좋아졌다고 한다. java.util.Date 와 Calendar 를 사용했을 때도 크게 불편한 건 못느꼈지만(불편했다고하면 0부터 시작한다는거?ㅋㅋ) 새로운 java.time 패키지를 알아보자.1. 이전 방식의 문제들(util.Date, util.Calendar)찾아보니까 문제가 많군..?복잡한 날짜 계산 : ..
참조문서 : https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html1. enum 이란?enumeration의 앞글자로 열거라는 뜻이다. JDK 1.5 부터 관련이 있는 상수들의 집합을 사용할 때 enum을 사용한다. enum은 완전한 클래스이다. 그 이전에는 열거형 상수를 선언하려면 다음과 같이 했다.클래스 내에 final static 로 변수 선언interface 에 상수선언기존방식의 문제한 클래스에 final static 으로 다 선언하자니 네임충돌 발생할 수도 있고, 복잡함인터페이스를 사용하면 위 문제는 해결되나, 타입안정성이 떨어짐 (컴파일 때 형검사를 하지 않으므로 오류발생 소지)enum의 장점코드가 단순해지고, 가독성이 짱인스턴스 생성과 ..
서블릿(servlet) from JungHoon Lee 1. 서블릿이란?HTTP protocol 서비스를 지원하는 javax.servlet.http.HttpServlet 클래스를 상속하여 개발하며, Servlet은 컨테이너에 의해서 실행되고 관리된다.HTML 변경 시 Servlet을 재컴파일해야 하는 단점이 있다.서블릿은 외부 요청마다 프로세스보다 가벼운 스레드로써 응답한다.2. JSP와 서블릿의 차이점JSP : HTML 문서 안에 java 코드를 포함하고 있다. MVC에서 View 역할서블릿 : 자바 코드 안에 HTML을 포함하고 있다. 주로 MVC에서 컨트롤러 역할3. 서블릿 컨테이너(톰캣 등)란?HTTP 요청을 받아서 Servlet을 실행하고 생명주기를 관리하는 역할을 한다.servlet과 웹서버가..
1. static 이란?객체마다 데이터를 가지고 있는데, 이걸 공유해야 할 상황에 static을 쓴다. 여러 객체의 메소드들이 동시에 접근, 수정할 수 있는 전역변수같은 느낌이다.static 키워드를 사용한 변수를 클래스 변수라고 한다. 즉 객체가 아닌 클래스의 변수이기 때문에 new로 객체를 안만들었어도 사용이 가능하다. ex. System.out.println(Test.count);2. 메모리 상 위치클래스 변수는 JVM Runtime Data Area에서 Method area 에 들어간다. 여기서 클래스는 Method area에, 객체는 heap에 올라간다. static이 붙으면 클래스의 시그니처?같은 것들이 메모리 상에 로딩되면서 같이 올라가는 것이다. 따라서 아래에서 설명할 static 변수, ..
1. 접근제어자의 종류현재 클래스동일 패키지상속받은 하위클래스모든 클래스publicOOOOprotectedOOOXprivateOXXX(default)OOXXpublic : 모든 외부에서 직접 접근하거나 호출 가능protected : 현재 클래스와 동일 패키지이거나 다른 패키지이더라도 상속 시에는 접근하거나 호출 가능private : 현재 클래스 밖에서는 사용X(default) : 현재 클래스와 동일한 패키지 내에서만 접근하거나 호출 가능, 뭐 안붙이면 이거다.2. 주로 어디다 쓰는가클래스는 public 과 default만 선택가능하다.필드는 다 쓸 수 있지만 보통 private로 한다. 완벽한 상수는 public static을 주로 사용한다.메소드도 다 할 수 있다. 추상메소드에는 private 쓰면 안..
1. 생성자란?객체를 생성할 때 init하는 것이다. 생성자는 오로지 클래스에서 객체를 생성(new)할 때만 사용된다. 몇가지 특징으로는 생성자의 이름은 클래스명과 동일하고, 리턴 타입이 없다.2. 기본 생성자생성자를 따로 정의하지 않고 클래스를 만들더라도, 객체는 만들어진다. 이것은 컴파일러가 default 생성자를 끼워넣었기 때문이다.// Test.java public class Test { public static void main(String[] args) { System.out.println("hello world"); } } // javap -c Test.class C:\Users\sjh836\Desktop>javap Test.class Compiled from "Test.java" publi..
참조문서 : https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html1. 예외처리란?Exception Handling 이라고 하며, 잘못된 하나로 인해 전체 시스템이 무너지는 결과를 방지하기 위한 기술적인 처리이다. java에서는 예외와 에러도 객체로 처리한다.예외가 주로 발생하는 원인사용자의 잘못된 데이터 입력잘못된 연산개발자가 로직을 잘못 작성하드웨어, 네트워크 오작동시스템 과부하2. Throwable 클래스(클릭하면 크게 보인다..) Throwable 클래스는 예외처리를 할 수 있는 최상위 클래스이다. Exception과 Error는 Throwable의 상속을 받는다. 유명한 것들만 정리해보았으며, 실제로 더 많다. io.IOExcept..
참조문서 : https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html1. 쓰레드란?자바의 메인메소드 역시 하나의 실행흐름으로서, 메인 쓰레드에 해당한다. 이것은 main() 메소드에서 Thread.currentThread().getName(); 를 통해 확인이 가능하다. 쓰레드를 이용하면 하나의 프로세스에서도 병렬적(동시적)으로 처리, 즉 여러 개의 처리 루틴을 가질 수 있다. 단순 반복의 코드를 실행할 때도 여러 개의 쓰레드를 만들어서 분리 시킨 뒤 결과 데이터를 받아 합치면 그만큼 시간을 절약할 수 있다. 특히 짧은 시간 내에 많은 사용자를 처리해야하는 대용량 시스템이나 CPU 활용을 극대로 해서 처리해야 하는 복잡한 연산 작업 등에 많이 쓴다..