ant 를 이용한 ssh 배포
나중에 필요할지도 몰라 메모해 놓음
- 개발툴
- · 2016. 1. 20.
jedis의 returnBrokenResource 메서드에 대해 잘못 알고 있는 부분이 있어 정리한다. @Beforepublic void init() { GenericObjectPoolConfig config = new GenericObjectPoolConfig();config.setMaxTotal(20);config.setBlockWhenExhausted(true);config.setMaxWaitMillis(1000); JedisShardInfo shard1 = new JedisShardInfo("test.com", 6300);JedisShardInfo shard2 = new JedisShardInfo("test.com", 6301);JedisShardInfo shard3 = new JedisShard..
쿼리 검수를 위해 mybatis 플러그인에 아래 interceptor를 추가 - 바인딩 변수에 값이 맵핑되어 있는 쿼리문 출력가능 [SQL Map Config] DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> [Logback Config] /home/test/${SERVER_NAME}/tomcat/logs/sql/mybatis_sql.log /home/test/${SERVER_NAME}/tomcat/logs/sql/mybatis_sql.%d{yyyy-MM-dd}.log.gz 60 %m%n
현재 운영중인 시스템에서 비트 연산자를 이용하여 속성 값을 추출하는 로직이 있다.데이터의 구조가 5바이트로 되어 있는데 4번째 바이트를 추출하여 사용하게 되는 구조이다. 4번째 바이트 값을 뽑았을 때 값이 7이라고 가정하자.7의 값은 비트로 표기하면 다음과 같을 것이다.00000111 속성들의 값은 다음과 같다.속성1 = 1속성2 = 2속성4 = 4속성8 = 8 속성1은 비트로 00000001속성2은 비트로 00000010속성4은 비트로 00000100속성8은 비트로 00001000 4번째 바이트의 비트와 속성1 비트를 & 연산자를 이용해 비교하게 되면00000111 & 00000001 결과 0000000100000111 & 00000010 결과 0000001000000111 & 00000100 결과 0..
2진수에서 16진수, 10진수에서 16진수로의 변환에 대해 자주 까먹어서 정리해 본다. (나 요즘 정리 엄청 좋아하는 듯) 변환하기에 앞서 진수에 따른 데이터 표현 방법은 다음과 같다.2진수는 0, 110진수는 0, 1, 2, 3, 4, 5, 6, 7, 8, 916진수는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F 10진수 -> 2진수10진수 23이 있다고 하자. 이를 2진수로 바꾸는 방법은 23을 2로 계속 나누면 된다. (나눌 수 없을 때까지)23 / 2 = 11 나머지 111 / 2 = 5 나머지 15 / 2 = 2 나머지 12 / 2 = 1 나머지 0 위의 계산식에서 맨 마지막의 몫과 나머지들을 아래에서부터 위로 나열을 하면 10111 이 될 것이고, 1바이..
select * from TestTablewhere testId = #{testId} MyBatis에서 위와 같은 쿼리문을 실행하게 되면 database에서는 아래 쿼리문에 대한 의미, 구문 분석 및 파싱 작업을 진행하게 된다. select * from TestTablewhere testId = ? 만약 testId에 1 값이 바인드 되게 되면 database에서는 이미 파싱되어 있는 쿼리문을 재활용하게 되기에 위의 작업들을 줄일 수 있다.단, 데이터베이스 옵티마이저에 대한 수행 계획은 항상 동일하다라는 것이 단점이다.수행 계획에 따른 데이터 추출은 데이터의 분포도에 영향을 받게 되는데 만약 1 이라는 값이 TestTable에 4개 존재하고, 2 라는 값이 1000개 존재한다고 했을 때1을 추출할 때에는..
나중에 필요할지도 몰라 메모해 놓음
1. 사용자 request 요청 /test.jsp2. jsp에서 데이터 렌더링 중 tag lib를 만남3. tag lib 인스턴스 생성 후 attribute에 선언되어 있는 속성에 데이터 바인딩 진행 (리플렉션 사용)4. doStartTag() 실행5. jsp에서 또 tag lib를 만남6. 3에서 생성한 인스턴스를 가져와 다시 attribute에 선언되어 있는 속성에 데이터 바인딩 진행 7. 사용자 request 요청 /test2.jsp8. jsp에서 데이터 렌더링 중 tag lib를 만남9. tag lib 인스턴스 생성 후 attribute에 선언되어 있는 속성에 데이터 바인딩 진행 정리를 해보니 jsp 안에 선언되어 있는 태그라이브러리를 만나게 되면 tag-class 엘리먼트에 선언되어 있는 클래스..
설계를 할때마다 Generic 사용법을 잊어먹는 경우가 많아 이해하기 쉬운 수준으로 정리를 해보려고 한다. Class generic typeClass generic type은 다음과 같은 방법으로 클래스가 작성된다.어떤 경우에 사용하면 되는지에 대해서는 ArrayList 클래스를 생각하면 될 것이다.ClassGenericType classGenericType = new ClassGenericType();class ClassGenericType { private T t; public void set(T t) { this.t = t; } public T get() { return t; } } Interface generic typeInterface generic type 또한 Class generic typ..
[2017-09-11] 내용 업데이트 아래 해결 방안은 잘못된 것임을 이제서야 알게 됐다.SQLyog의 버전 문제로 인한 현상이 아니라 트랜잭션 격리 설정에 의한 자연스러운 현상이다. 예를 들어 SQLyog을 실행시킨 상태에서 EMP 테이블을 조회했을 때 10건이 나온다.이 상태에서 다른 애플리케이션(웹서비스) 에서 EMP 테이블에 insert 1건을 한다.SQLyog 프로그램에서 EMP 테이블을 다시 조회하게 되면 10건만 나온다. 여기가 나의 오류 포인트다.다른 애플리케이션에서 insert를 1건 하고 commit 했는데 왜 10건만 나오지? 라는 생각이 SQLyog이라는 툴의 설정 문제인 것으로 알았다.허나 문제는 따로 있었던 것 MySQL은 트랜잭션 격리가 기본 REPEATABLE-READ로 되어..
spring의 RestTemplate을 이용하면 대게 다음의 exchange 메소드를 이용하여 외부 API와 연동을 하게 된다.ResponseEntity response = restTemplate.exchange(requestUrl, httpMethod, requestEntity, p); 위의 exchange 메소드를 이용하여 연동을 할 때 HTTP request, response 전문을 로그로 남기고 싶을 때가 있어서 그 방법을 찾아보게 되었다. 첫 번째 방법은 log4j를 이용하여 로그를 남기는 방법인데 이 방법은 한 줄 로그로 남길 수 없다는 단점이 있어 포기했다. 무슨 말이냐하면 아래와 같이 여러 줄로 로그가 기록된다는 것이다. 여러 줄로 출력되는 로그는 멀티 쓰레드 환경에서는 오류에 대한 원인을..
로컬 이클립스 환경에 tomcat 소스를 import하고, 이를 분석할 수 있는 환경을 만드는 방법에 대해서 설명한다. 1. 소스 다운로드http://tomcat.apache.org/download-70.cgihttp://apache.mirror.cdnetworks.com/tomcat/tomcat-7/v7.0.64/src/apache-tomcat-7.0.64-src.zip 2.apache-tomcat-7.0.64-src 디렉토리 tomcat으로 변경 (디렉토리명은 원하는 이름으로 변경하면 된다.) 3.이클립스 > Import > General > Project 생성다운로드 받은 tomcat 소스 폴더 지정해당 프로젝트 > Properties > Project Facets 선택 후 Java에 체크Java ..