Programming/JAVA2014.04.15 15:18

1. 기존 parameterType="String" 파라미터 한개로 처리


UserInfoMapper.java

public interface UserInfoMapper {
    public UserInfo getUserInfo(String userId);
}


UserInfoMapper.xml

<select id="getUserInfo" parametertype="String" resultmap="UserInfoResultMap">
SELECT
    id,
    user_id,
    state
FROM
    UserInfo
WHERE
    user_id = #{userId}
</select>

UserInfoService.java

String userId = "user_id_value";
userInfo = userInfoMapper.getUserInfo(userId);

※ 단일 parameterType 로 String userId값 넣음


2.  parameterType HashMap을 이용해서 여러개 넣기


UserInfoMapper.java

public interface UserInfoMapper {
    public UserInfo getUserInfo(HashMap<String, Object> map);
}

UserInfoMapper.xml

<select id="getUserInfo" parametertype="hashmap" resultmap="UserInfoResultMap">
SELECT
    id,
    user_id,
    state
FROM
    UserInfo
WHERE
    user_id = #{userId}
AND
    state = #{state}
</select>

UserInfoService.java

HashMap<String, Object> map = new HashMap<String, Object>();
map.put("userId", "user_id_value");
map.put("state", "state_value");
userInfo = userInfoMapper.getUserInfo(map);


3. 2번과 비슷하지만 기존 userInfo 도메인 이용


UserInfoMapper.java

public interface UserInfoMapper {
    public UserInfo getUserInfo(HashMap<String, Object> map);
}

UserInfoMapper.xml

<select id="getUserInfo" parametertype="hashmap" resultmap="UserInfoResultMap">
SELECT
    id,
    user_id,
    state
FROM
    UserInfo
WHERE
    user_id = #{user.userId}
AND
    state = #{user.state}
</select>

UserInfoService.java

UserInfo userInfo = new UserInfo();
userInfo.setUserId("user_id_value");
userInfo.setState("state_value");

HashMap<String, Object> map = new HashMap<String, Object>();
map.put("user", userInfo);

userInfo = userInfoMapper.getUserInfo(map);

4. Param 이용


UserInfoMapper.java
public interface UserInfoMapper {
    public UserInfo getUserInfo(@Param("userId") String userId, @Param("state") int state);
}
UserInfoMapper.xml
<select id="getUserInfo" resultmap="UserInfoResultMap">
SELECT
    id,
    user_id,
    state
FROM
    UserInfo
WHERE
    user_id = #{userId}
AND
    state = #{state}
</select>
UserInfoService.java
String userid ="user_id_value";
int state = 0;
userInfo = userInfoMapper.getUserInfo(String userid,int state);


Posted by 시니^^
Programming/Etc2014.04.11 18:58

1. 알고리즘 특징과 설명(PHP기준)

DES 

전통적인 DES 알고리즘으로 키의 길이가 작아 비교적 보안에 취약하다. 상수 MCRYPT_DES를 사용한다. 

3DES/Triple DES 

DES의 변형 판이다. 유효 키 길이는 112비트이다. 상수 MCRYPT_3DES를 사용한다. 

CAST-128 

캐나다에서 설계된 알고리즘으로 128비트 키와 64비트 블럭을 가진다. 상수 MCRYPT_CAST_128을 사용한다. 

CAST-256 

CAST-128의 확장 판으로 알고리즘으로 256비트 키와 128비트 블럭을 가진다. 상수 MCRYPT_CAST_256을 사용한다. 

XTEA 

128비트 키와 64비트 브럭을 가진다. 상수 MCRYPT_XTEA를 사용한다. 

3-WAY 

96비트 키와 블럭을 가진다. 상수 MCRYPT_THREEWAY를 사용한다. 

SKIPJACK 

미국 NSA에서 조건부 암호화 표준으로 설계한 알고리즘이지만 표준화되지 못했다. mcryp에서 추가 라이브러리를 이용해 접근할 수 있으며 80비트 키를 가진다. 상수 MCRYPT_SKIPJACK를 사용한다. 

BLOWFISH 

DES를 개선한 알고리즘으로 최대 448비트 길이의 키를 사용할 수 있다. 상수 MCRYPT_BLOWFISH를 사용한다. 

TWOFISH 

보안성이 높고 융통성이 있다. 128, 192, 256비트 키를 지원한다. 상수 MCRYPT_TWOFISH를 사용한다. 

LOKI97 

128, 192, 256비트 길이의 키를 이용한다. 상수 MCRYPT_LOKI97를 사용한다. 

RC2 

블럭 크기를 64비트이며 키는 8에서 1024비트이다. 오래된 알고리즘으로 16비트 컴퓨터에 적당하다. 상수 MCRYPT_RC2를 사용한다. 

ARCFOUR/RC4 

RC4는 RSADSL의 상표이므로 mcrypt는 RC4 알고리즘을 지원하지 않지만 ARCFOUR와 호환된다. 스트림 기반의 암호문과 최대 2048 비트 키를 지원한다. 상수 MCRYPT_ARCFOUR를 사용한다. 

RIJNDAEL 

가변적인 길의 블럭 암호문과 키를 가진다. 상수 MCRYPT_RIJNDAEL_128, MCRYPT_RIJNDAEL_192, MCRYPT_RIJNDAEL_256을 사용한다. 

SERPENT 

128비트 블럭 암호문으로 DES보다 빠르다. 상수 MCRYPT_SERPENT를 사용한다. 

IDEA 

64비트 블럭과 128비트 키를 사용한다. 상수 MCRYPT_IDEA를 사용한다. 

ENIGMA/CRYPT 

하나의 원통을 가진 암호화 기계를 기반으로 해서 보안성이 낮다. 상수 MCRYPT_CRYPT를 사용한다. 

GOST 

256비트 키와 64비트 블럭을 가진다. 상수 MCRYPT_GOST를 사용한다. 

SAFER 

64비트, 128비트 키를 지원하는 빠르고 안전한 알고리즘이다. 상수 MCRYPT_SAFER64, MCRYPT_SAFER128을 사용한다. 

SAFER+ 

SAFER 알고리즘의 확장판으로 128, 196, 256비트 키를 지원한다. 상수 MCRYPT_SAFERPLUS를 사용한다


2. PHP 모듈정보

MCRYPT_3DES

MCRYPT_ARCFOUR_IV (libmcrypt > 2.4.x only)

MCRYPT_ARCFOUR (libmcrypt > 2.4.x only)

MCRYPT_BLOWFISH

MCRYPT_CAST_128

MCRYPT_CAST_256

MCRYPT_CRYPT

MCRYPT_DES

MCRYPT_DES_COMPAT (libmcrypt 2.2.x only)

MCRYPT_ENIGMA (libmcrypt > 2.4.x only, alias for MCRYPT_CRYPT)

MCRYPT_GOST

MCRYPT_IDEA (non-free)

MCRYPT_LOKI97 (libmcrypt > 2.4.x only)

MCRYPT_MARS (libmcrypt > 2.4.x only, non-free)

MCRYPT_PANAMA (libmcrypt > 2.4.x only)

MCRYPT_RIJNDAEL_128 (libmcrypt > 2.4.x only)

MCRYPT_RIJNDAEL_192 (libmcrypt > 2.4.x only)

MCRYPT_RIJNDAEL_256 (libmcrypt > 2.4.x only)

MCRYPT_RC2

MCRYPT_RC4 (libmcrypt 2.2.x only)

MCRYPT_RC6 (libmcrypt > 2.4.x only)

MCRYPT_RC6_128 (libmcrypt 2.2.x only)

MCRYPT_RC6_192 (libmcrypt 2.2.x only)

MCRYPT_RC6_256 (libmcrypt 2.2.x only)

MCRYPT_SAFER64

MCRYPT_SAFER128

MCRYPT_SAFERPLUS (libmcrypt > 2.4.x only)

MCRYPT_SERPENT (libmcrypt > 2.4.x only)

MCRYPT_SERPENT_128 (libmcrypt 2.2.x only)

MCRYPT_SERPENT_192 (libmcrypt 2.2.x only)

MCRYPT_SERPENT_256 (libmcrypt 2.2.x only)

MCRYPT_SKIPJACK (libmcrypt > 2.4.x only)

MCRYPT_TEAN (libmcrypt 2.2.x only)

MCRYPT_THREEWAY

MCRYPT_TRIPLEDES (libmcrypt > 2.4.x only)

MCRYPT_TWOFISH (for older mcrypt 2.x versions, or mcrypt > 2.4.x )

MCRYPT_TWOFISH128 (TWOFISHxxx are available in newer 2.x versions, but not in the 2.4.x versions)

MCRYPT_TWOFISH192

MCRYPT_TWOFISH256

MCRYPT_WAKE (libmcrypt > 2.4.x only)

MCRYPT_XTEA (libmcrypt > 2.4.x only) 


3. 성능(자바기준)

출처 : http://www.javamex.com/tutorials/cryptography/ciphers.shtml

자세한 내용은 위에 링크~!!( 영어다 ㅠㅠ )



Posted by 시니^^
DB/NoSQL/Etc2014.04.11 18:02



공식 홈페이지 : http://webscalesql.org/

GithubUrl : https://github.com/webscalesql/webscalesql-5.6


뉴스기사 : 페이스북·구글·트위터·링크드인, 오픈소스 MySQL 프로젝트 참여

LinkUrl : http://www.ciokorea.com/news/20410

그린은 웹스케일SQL에 기여하는 사람들이 이미 다음과 같은 몇 가지 결과를 만들어 냈다고 밝혔다.
•각각 제안된 변경을 위해 MySQL에 장착된 테스트 시스템(mtr)을 배포하고 실행할 자동화 프레임워크
•스트레스 테스트와 성능 테스트 시스템을 자동화한 프로토타입의 새로운 전체 제품군
•불필요한 충돌이나 테스트 실패를 야기하는 문제를 방지하기 위한 기존 테스트와 일부 기존 코드 구조 변경 또는 안전한 코드 변경
•버퍼 풀 넘침 현상 개선, 특정 유형의 쿼리에 대한 최적화, NUMA 인터리브 정책에 대한 지원 등을 포함한 성능 향상


=> 버퍼 풀 넘침 현상개선이라 흠흠.... 

=> mysql VS mariaDB VS  webscalesql 되는 구조가 될지...아니면 webscalesql은 그냥 mysql에 종속되는 구조인지....... 음흠.......

Posted by 시니^^

티스토리 툴바