2017년 11월 26일 일요일
2017년 9월 12일 화요일
반복자 JAVA iterator
이터레이터(Iterator) 인터페이스
- 모든 컬렉션(Collection)으로 부터 정보를 얻을 수 있는 인터페이스 입니다.- 즉, 자신이 컬렉션(List, Set 등)이라면 이터레이터 인터페이스를 사용할 수 있습니다.
도서관에 비유
- 우리가 책을 보관하는 책장(컬렉션)이 있고, 그 곳에는 책(컬렉션 안에 들어갈 객체)이 있습니다.
- 이 책장은 도서관 사서(이터레이터)가 관리하게 됩니다.
- 사서는 단순 무지한 녀석이라 책장 처음부터 끝까지 한번에 하나씩 밖에 못 가져옵니다.
이터레이터가 가지고 있는 메서드
- boolean hasNext() : 다음 값이 있는지 없는지 확인, 있으면 true를 리턴하고 없으면 false를 리턴 --> if나 while문에서 쓰면 되겠죠?
- E next() : 다음 값을 리턴합니다. 어떤 형태인지 모르기 때문에 리턴 유형을 E로 하겠습니다.
- void remove() : 삭제 하는 메서드
Set<String> movie = new HashSet<String>();
movie.add("대부");
movie.add("반지의 제왕");
movie.add("겨울왕국");
movie.add("다크 나이트");
movie.add("해리포터");
movie.add("공공의 적");
Iterator<String> itr = movie.iterator();
// 이터레이터 객체 itr에 HashSet객체인 movie안에 있는 값들을 가져온다
// 모든 컬렉션 안에는 iterator()메서드가 있기 때문에 점찍고 사용하면 movie안에 있는 값들을 가져올 수 있다
while (itr.hasNext()) { // 값이 나올때까지 while문을 돈다
String s = itr.next(); // 문자열 변수 s에 다음값을 넣는다
System.out.println(s);
}
출처: http://bitnori.tistory.com/entry/JAVA-JAVA-ITERATOR-자바-이터레이터 [Bitnori's Blog]
출처: http://bitnori.tistory.com/entry/JAVA-JAVA-ITERATOR-자바-이터레이터 [Bitnori's Blog]
2017년 7월 19일 수요일
JAVA ObjectMapper 클래스 json<->String
1.1 Convert Java object to JSON,
writeValue(...)ObjectMapper mapper = new ObjectMapper();
Staff obj = new Staff();
//Object to JSON in file
mapper.writeValue(new File("c:\\file.json"), obj);
//Object to JSON in String
String jsonInString = mapper.writeValueAsString(obj);
1.2 Convert JSON to Java object,
readValue(...)ObjectMapper mapper = new ObjectMapper();
String jsonInString = "{'name' : 'mkyong'}";
//JSON from file to Object
Staff obj = mapper.readValue(new File("c:\\file.json"), Staff.class);
//JSON from URL to Object
Staff obj = mapper.readValue(new URL("http://mkyong.com/api/staff.json"), Staff.class);
//JSON from String to Object
Staff obj = mapper.readValue(jsonInString, Staff.class);
실제사용예시
List<HashMap<String, Object>> resultList = new ArrayList<HashMap<String, Object>>();
resultList = testDAO.selectListDAO(SearchVO);
ObjectMapper om = new ObjectMapper();
String jsonStr = om.writeValueAsString(resultList);
->[{"value1":8.4, "value2":5.4}, {"value1":8.4, "value2":5.4} ]
이와 같은 형태로 [ ] 안에 json {} 으로 묶이게 된다
다시 꺼내서 사용할 때는 [] 로 묶여있기 때문에 list로 빼내야함
var resultCondition = JSON.parse(results[i].resultCondition)[0];
만약에 []로 묶인것이 아니라 {"value1":8.4, "value2":5.4} 로 묶였다면 아래와 같이만 하면된다
var resultCondition = JSON.parse(results[i].resultCondition);
JAVA 객체 SERIALIZE와 DESERIALIZE
SERIALIZE
객체를 직렬화하여 전송 가능한 형태로 만드는것을 의미. 객체들의 데이터를 연속적인 데이터로 변형하여 stream을 통해 데이터를 읽도록 해준다.
주로 객체들을 통째로 파일로 저장하거나 전송하고 싶을 때 사용
(홍길동, null, 222@bac.com ,30)
(김길동, null, kkk@bac.com , 40)
DESERIALIZE
직렬화된 파일 등을 역으로 직렬화 하여 다시 객체로 만듬.
저장한 파일을 읽거나 전송된 스트렘 데이터를 읽어 원래 객체 형태로 복원함
[(홍길동, null, 222@bac.com ,30), (김길동, null, kkk@bac.com , 40)]
객체를 직렬화하여 전송 가능한 형태로 만드는것을 의미. 객체들의 데이터를 연속적인 데이터로 변형하여 stream을 통해 데이터를 읽도록 해준다.
주로 객체들을 통째로 파일로 저장하거나 전송하고 싶을 때 사용
(홍길동, null, 222@bac.com ,30)
(김길동, null, kkk@bac.com , 40)
DESERIALIZE
직렬화된 파일 등을 역으로 직렬화 하여 다시 객체로 만듬.
저장한 파일을 읽거나 전송된 스트렘 데이터를 읽어 원래 객체 형태로 복원함
[(홍길동, null, 222@bac.com ,30), (김길동, null, kkk@bac.com , 40)]
2017년 3월 31일 금요일
spring security option
다음은 antMatchers() 다음으로 지정할 수 있는 항목들입니다.
- anonymous()
인증되지 않은 사용자가 접근할 수 있습니다. - authenticated()
인증된 사용자만 접근할 수 있습니다. - fullyAuthenticated()
완전히 인증된 사용자만 접근할 수 있습니다(?) - hasRole() or hasAnyRole()
특정 권한을 가지는 사용자만 접근할 수 있습니다. - hasAuthority() or hasAnyAuthority()
특정 권한을 가지는 사용자만 접근할 수 있습니다. - hasIpAddress()
특정 아이피 주소를 가지는 사용자만 접근할 수 있습니다. - access()
SpEL 표현식에 의한 결과에 따라 접근할 수 있습니다. - not() 접근 제한 기능을 해제합니다.
- permitAll() or denyAll()
접근을 전부 허용하거나 제한합니다. - rememberMe()
리멤버 기능을 통해 로그인한 사용자만 접근할 수 있습니다.
2016년 12월 19일 월요일
2016년 12월 12일 월요일
logback 설정 및 로컬 폴더 설정
--로컬파일쓸때 폴더 설정시 중요사항
d:/ or d:\\
/ 최상위경로
./ 현재 폴더
../ 상위폴더
pom.xml 추가
<dependency>
<groupId>org.lazyluke</groupId>
<artifactId>log4jdbc-remix</artifactId>
<version>0.2.7</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.2</version>
</dependency>
<!-- Updated at 03-Apr-2014 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.2</version>
</dependency>
<!-- Updated at 03-Apr-2014 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>org.logback-extensions</groupId>
<artifactId>logback-ext-spring</artifactId>
<version>0.1.2</version>
</dependency>
web.xml 설정
<!-- logback 외부 클래스 -->
<!-- logback --> <listener> <listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class> </listener> <context-param> <param-name>logbackConfigLocation</param-name> <param-value>classpath:/log/logback-${spring.profiles.active}.xml</param-value> </context-param>
로그파일쓰기
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<property name="PROJECT_NAME" value="localApi" />
<property name="LOG_FILE_PATH" value="D:\\log\\local" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned by default the type ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%-5level] %-50class{50} : %-5line - %msg%n
</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_FILE_PATH}/${PROJECT_NAME}.log</file>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%-5level] %-50class{50} : %-5line - %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 파일이 하루에 한개씩 생성된다 -->
<fileNamePattern>D:/log/sujemall-webapp.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- maxHIstory 설정은 위 부분에 롤링 정책에 따라 적용되 된다고 보면된다.
위 설정데로 라면 30일이 지난 파일은 삭제가 된다.-->
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
<root level="DEBUG">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
</configuration>
d:/ or d:\\
/ 최상위경로
./ 현재 폴더
../ 상위폴더
pom.xml 추가
<dependency>
<groupId>org.lazyluke</groupId>
<artifactId>log4jdbc-remix</artifactId>
<version>0.2.7</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.2</version>
</dependency>
<!-- Updated at 03-Apr-2014 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.2</version>
</dependency>
<!-- Updated at 03-Apr-2014 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>org.logback-extensions</groupId>
<artifactId>logback-ext-spring</artifactId>
<version>0.1.2</version>
</dependency>
web.xml 설정
<!-- logback 외부 클래스 -->
<!-- logback --> <listener> <listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class> </listener> <context-param> <param-name>logbackConfigLocation</param-name> <param-value>classpath:/log/logback-${spring.profiles.active}.xml</param-value> </context-param>
로그파일쓰기
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<property name="PROJECT_NAME" value="localApi" />
<property name="LOG_FILE_PATH" value="D:\\log\\local" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned by default the type ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%-5level] %-50class{50} : %-5line - %msg%n
</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_FILE_PATH}/${PROJECT_NAME}.log</file>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%-5level] %-50class{50} : %-5line - %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 파일이 하루에 한개씩 생성된다 -->
<fileNamePattern>D:/log/sujemall-webapp.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- maxHIstory 설정은 위 부분에 롤링 정책에 따라 적용되 된다고 보면된다.
위 설정데로 라면 30일이 지난 파일은 삭제가 된다.-->
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
<root level="DEBUG">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
</configuration>
2016년 10월 18일 화요일
2016년 10월 17일 월요일
extends 와 implements의 정의 퍼옴
http://oybso.tistory.com/entry/Java%EC%97%90%EC%84%9C-extends%EC%99%80-implements-%EC%9D%98-%EC%A0%95%EC%9D%98
엄청설명 잘 되있음
엄청설명 잘 되있음
피드 구독하기:
글 (Atom)