일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- socket
- Java
- mybatis
- git
- nodejs
- network
- reactor
- AWS
- cache
- github
- Static
- redis
- NoSQL
- ajax
- javascript
- Linux
- 데이터통신
- html
- Lombok
- effective
- spring
- r
- Heap
- Elk
- reactive
- VCS
- mongodb
- HTTP
- libuv
- 네트워크
- Today
- Total
목록분류 전체보기 (187)
빨간색코딩
참조문서 : 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)
참조문서https://github.com/nodejs/nodehttps://nodejs.org/ko/docs/guides/event-loop-timers-and-nexttick/https://medium.com/the-node-js-collection/what-you-should-know-to-really-understand-the-node-js-event-loop-and-its-metrics-c4907b19da4c이벤트루프는 nodejs 의 핵심개념인데, 열심히 파헤쳐보자. 먼저 구글에 널려있는 많은 아키텍처들은 전부 틀렸다고 한다. 이 말은 libuv의 핵심 개발자 Bert Belder 등이 했다고 참조문서에서 말한다. 아무튼 그래서 구글링을 열심히해봐도 공식문서에 부합하는 아키텍쳐 그림이 없었다. ..
참조문서http://d2.naver.com/helloworld/5102792https://www.holaxprogramming.com/2013/01/10/devops-how-to-manage-dbcp/ 1. DBCP 란?Database Connection Pool 의 약자이다. 요청이 올때마다 Connection 객체를 얻는 것이 아닌, 미리 일정 갯수 찍어내서 Connection Pool 로 관리하는 것이다. DBCP를 사용치 않으면 아래와 같은 과정을 거친다.DB 서버 접속을 위해 JDBC 드라이버를 로드한다.DB 접속 정보와 DriverManager.getConnection() Method를 통해 DB Connection 객체를 얻는다.Connection 객체로 부터 쿼리를 수행하기 위한 Prepa..
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 드라이버들은 자바 어플리케이션..
커밋을 잘못했고 푸쉬까지 했을때 복구git reset --hard HEAD^ git push -u origin +master git pull 파일 이름변경작업 디렉토리에 있는 파일의 이름을 변경 할 때는 git mv 명령어를 사용git mv 원래이름 바꿀이름 git 사용도중에 gitignore 설정중간에 gitignore 파일을 설정하면 git status 해도 여전히 남아있는데, 이럴 때 다음과 같이 실행하면 적용된다.git rm -r --cached . git add . git commit git push 원격저장소 브랜치 가져오기git clone을 통해 로컬로 가져오면 master 브랜치만 가져오는 듯. 협업을 위해 개발브랜치를 가져와야한다면..!!클론할 때 브랜치명으로 따오기 : git clone..
일반클래스는 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..
컨트롤러에서 request 들을 다양한 타입으로 받을 수 있다.1. Servlet APIServletRequest, ServletResponseHttpServletRequest, HttpServletResponse : 위에꺼를 상속받음HttpServletRequest.getInputStream() : InputStream, Reader 등을 얻을 수 있다.HttpServletResponse.getOutputStream() : OutputStream, Writer 등을 얻을 수 있다.HttpSession : HttpServletRequest 에서 세션관련한 것들만 있음2. Spring APIWebRequest : HttpServletRequest 와 비슷하지만 Servlet 과 의존성이 없다org.spri..
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라..
참조문서 : https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html1. RestTemplate이란?spring 3.0 부터 지원한다. 스프링에서 제공하는 http 통신에 유용하게 쓸 수 있는 템플릿이며, HTTP 서버와의 통신을 단순화하고 RESTful 원칙을 지킨다. jdbcTemplate 처럼 RestTemplate 도 기계적이고 반복적인 코드들을 깔끔하게 정리해준다. 요청보내고 요청받는데 몇줄 안될 정도..특징기계적이고 반복적인 코드를 최대한 줄여줌RESTful형식에 맞춤json, xml 를 쉽게 응답받음2. HTTP 서버와의 다양한 통신방법2-1. U..
jdbcTemplate, restTemplate 등 스프링에서 지원하는 많은 템플릿들을 보았다. 이런 것들은 기계적이며 길고 반복적인 코드들을 깔끔하게 처리해준다. (ex. jdbc 코드를 짤때 커넥션부터해서 close까지의 그 긴 코드를 몇 줄만으로도 똑같은 기능을 할 수 있는..) 이런 것들이 바로 템플릿 메소드 패턴이 적용된 좋은 예제들이다.(근데 더 알아보니까 다른 디자인패턴이라는 듯...ㅜ) 가져다 쓰기만 하면 재미없으니 탐구를 해보자ㅋㅋ1. 템플릿메소드 패턴은 왜 쓰는가? 네이버 이미지에서 따온 사진이다. 이것만큼 템플릿을 잘 설명할 수 없을 것 같다ㅋㅋㅋ 이 템플릿 자를 사용하면 누구나 똑같은 네모세모를 찍어낼 수 있다. 템플릿메소드도 이와 무관하지 않다. 상위 클래스(추상 클래스)에서는 템..
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://projectlombok.org/1. lombok 을 왜 쓰는가?모델 Class (VO, DTO, Entity) 를 만들때, 제일 귀찮은 것이 생성자, 접근자, 설정자, toString() 등이라고 한다. 나는 별로 안 귀찮지만...ㅋㅋㅋ 그래도 lombok을 사용하면 @Getter, @Setter 같은 어노테이션만 붙이면 자동으로 해준다하니 알아보고 좋다면 써보자기존 방식의 문제점멤버변수를 제어하기위해 모델객체마다 반복적으로 메소드들을 생성해야 한다.IDE에서 generate 를 이용해서 편하게 생성할 수 있지만, 변수명이 바뀌면 다시 만들어야한다.lombok의 특징생성자, 접근자, 설정자, toString() 자동생성 라이브러리이므로 위와 같은 번거로움이 없다.이외에도 다양..