junit
2018-11-20 00:00:00 +0000TDD( Test Driven Development )
- 테스트 주도 개발
- JUnit은 단위 테스트를 도와주는 프레임워크
JUnit
- JUnit test case 파일을 생성한다
- class under test에 테스트할 함수를 찾아서 넣어준다
- assertEquals 로 내가 원하는 값이 알맞게 나오는지 확인한다
- 값이 정상이면 초록색, 비정상이면 붉은색 바가 뜬다
JUnit 테스트 함수
- assertEquals : 결과값이 예상결과와 같은지 체크
- assertTrue : 예상값이 true인지 체크(true여야 성공, 아니면 실패)
- assertFalse : 예상값이 false인지 체크
- assertNull : 예상값이 NULL인지 체크
- assertNotNull : 예상값이 NULL이 아닌지 체크
- assertSame : 두 객체가 동일한 객체인지 체크
- assertNotSame : 두 객체가 동일한 객체가 아닌지 체크
Main.java
package testtdd;
public class Main {
public int Add(int value1, int value2){
return value1+value2;
}
}
TddTest.java
import static org.junit.Assert.*;
import org.junit.Test;
public class TddTest {
@Test
public void test() {
Main m = new Main();
assertEquals(4, m.Add(1, 3));
}
}
json
2018-11-20 00:00:00 +0000JSON(JavaScript Object Nation)
- XML 같은 테이터 표현 방법
- name과 value의 값으로 구성
- 이기종간의 데이터 전달을 위해서 사용
- XML보다 JSON이 크기가 적다(XML태그가 없어서)
- 사람이 읽고 쓰기에 용이하다
- 개발 언어와 OS에 구애 받지 않는다
- 사용예제 {“name” : “google”, “url”:”www.google.com”}
json 라이브러리 세팅
- commons-beanutils.jar
- commons-collections-3.2
- commons-lang-2.4
- commons-logging-1.1
- ezmorph-1.0.6
- json_simple-1.1
- json-lib-2.3-jdk13
Source
- 객체 ->JSON , JSON -> 객체로 변환
JsonExam.java
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
public class JsonExam {
// JSONObject => json code
// {"name" : "홍길동", "address" : "가산동", "age":20}
public JSONObject creatJsonObject(){
JSONObject obj = new JSONObject();
obj.put("name", "홍길동");
obj.put("address", "가산동");
obj.put("age", 20);
return obj;
}
public JSONObject creatJsonObject2(){
JSONObject obj2 = new JSONObject();
obj2.put("name", "좌길동");
obj2.put("address", "강남");
obj2.put("age", 40);
return obj2;
}
public static void main(String[] args){
// 일반코드->json 객체로
JsonExam exam = new JsonExam();
JSONObject obj = exam.creatJsonObject();
JSONObject obj2 = exam.creatJsonObject();
//System.out.println("result:"+obj.toJSONString());
//System.out.println("result:"+obj2.toJSONString());
// json 데이터를 배열에 담는다
JSONArray ja = new JSONArray();
ja.add(obj);
ja.add(obj2);
// JSONArray => json code
System.out.println(ja.toJSONString());
// List => json code 변환 [{"key:",value},{"key":value}]
List<Member> list = new ArrayList<>();
list.add(new Member("홍길동", "가산동", 20));
list.add(new Member("동길이", "구로동", 40));
System.out.println(net.sf.json.JSONArray.fromObject(list).toString());
// Json 데이터 -> String
String jsonCode = net.sf.json.JSONArray.fromObject(list).toString(); // list객체를 json으로 변환
JSONParser parser = new JSONParser();
Object re = null;
try{
re = parser.parse(jsonCode);// json 코드를 파싱하겠다
}catch(Exception e){
e.printStackTrace();
}
if(re instanceof JSONArray){
JSONArray array = (JSONArray)re;
Iterator iter = array.iterator();
List<Member> list2 = new ArrayList<>();
while(iter.hasNext()){
JSONObject jo = (JSONObject)iter.next();
String name = (String)jo.get("name");
String address = (String)jo.get("address");
int age = ((Long)jo.get("age")).intValue();
//int age2 = (int)jo.get("age"); java.lang.Long cannot be cast to java.lang.Integer 에러난다
//System.out.println("age:"+age2);
list2.add(new Member(name, address, age));
}
System.out.println(list2);
}
}
}
Member.java
public class Member {
private String name;
private String address;
private int age;
public Member(){}
public Member(String name, String address, int age) {
super();
this.name = name;
this.address = address;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Member [name=" + name + ", address=" + address + ", age=" + age + "]";
}
}
algorithmus basic
2018-11-20 00:00:00 +0000알고리즘 1>
고전게임을 잘하기로 소문난 두 형제 종현이와 종원이는 요새 갤러그라는 게임에
푹 빠져 있다. 현재 종현이와 종원이의 점수는 각각 A점과 B점이고, 종현이의 점수는
A는 종원이의 점수 B보다 높거나 같다. 조현이는 매주 점수가 2배씩 상승하지만,
노력파인 종원이는 종현이를 이기기 위해 쉬지 않고 연습한 결과 매일 점수가 3배씩
상승하는 능력을 갖추었다.
이때 며칠이 지나야 종원이가 종현이의 점수보다 높아질 수 있을까?
[입력]
첫 번째 줄에 테스트케이스의 수 T(1<= T<=50)가 주어진다.
각 테스트케이스마다 최초 종현이의 점수 A와 종원이의 점수 B가 각각 공백을 두고
주어진다. 단 최초 종현이의 점수 A는 종원잉의 점수 B보다 크거나 같으면 1점
이상 5천점 이하의 점수이다. (A>=B, 1<=B<=5000)
[출력]
각 줄마다 “#T”(T는 테스트케이스 번호)를 출력한 뒤, 종원이의 점수가 종현이의 점수를
추월하게 되는데 필요한 일수를 출력한다.
[sample input]
4
7 1
8 3
4 4
4500 2
[sample output]
#1 5
#2 3
#3 1
#4 20
Soruce
package kosta.algorithm;
import java.util.Scanner;
public class Algo1 {
public static long GetDay(long a, long b){
long day = 1;
while(true){
a *= 2;
b *= 3;
if(a < b)
break;
++day;
}
return day;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int whileCount = (sc.nextInt())*2;
int[] arr = new int[whileCount];
for(int i = 0 ; i < whileCount; i+=2){
arr[i] = sc.nextInt();
arr[i+1] = sc.nextInt();
}
int count = 1;
for(int i = 0; i < whileCount; i+=2, ++count){
long result = GetDay(arr[i], arr[i+1]);
System.out.println("#"+count+" "+result);
}
}
}
circular queue(원형큐)
2018-11-19 00:00:00 +0000원형 큐 (Circular Queue)
- Queue란 먼저 들어간 데이터가 먼저 나가는 선입선출 자료구조이다
- Queue는 데이터가 들어오면 사용할 수 있는 데이터 공간이 줄어들게 된다
- Queue의 데이터를 앞으로 당기는 것도 데이터 양에 비례해 시간이 걸린다
- Circular Queue란 원형 큐의 단점을 보완해 마지막 배열과 첫번째 인덱스가 붙어져 원형으로 사용되는 것을 말한다
- 첫번째 배열이 비어있다면 값을 배열 끝까지 써도 다시 첫번째 배열에 돌아와 값을 넣는다
Source
CircularQueue.java
public class CircularQueue {
private final int max; // 큐의 용량
private int front; // 첫 번째 요소 커서
private int rear; // 마지막 요소 커서, max랑 만나면 0으로 돌아가기
private int num; // 현재 데이터 수
private int[] que; // 큐 본체
public CircularQueue(final int max) {
this.max = max;
que = new int[max];
front = rear = num = 0;
}
public final int enque(final int value) {
if(true == isFull())
return -1;
que[rear++] = value; // 맨 첫번째 값을 저장한 후 rear은 다음을 가르킨다
rear %= max; // 나머지 계산하면 0~max-1 값이 나온다
++num;
return value;
}
public final int deque() {
if(true == isEmpty())
return -1;
int value = que[front++];
front %= max;
--num;
return value;
}
public final boolean print() {
if(true == isEmpty())
return false;
for(int i = 0; i < num; ++i) // num만큼 queue에 저장된 값을 출력한다
System.out.println("["+(front+i)%max+"]:"+que[(front+i)%max]);
return true;
}
private final boolean isFull() {
return max <= num ? true : false;
}
private final boolean isEmpty() {
return 0 >= num ? true : false;
}
}
Main.java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
CircularQueue circularQueue = new CircularQueue(10);
int value = 0;
try {
while(value != 4) {
System.out.println("1.enque 2.deque 3.print 4.exit");
value = sc.nextInt();
switch(value) {
case 1:
System.out.println("input value:");
int input = sc.nextInt();
if(-1 == circularQueue.enque(input))
System.out.println("queue pull");
break;
case 2:
int deque = circularQueue.deque();
if(-1 == deque)
System.out.println("queue empty");
else
System.out.println("deque:"+deque);
break;
case 3:
circularQueue.print();
break;
}
}
}catch(Exception e) {
System.out.println(e.getLocalizedMessage());
}
System.out.println("종료");
}
}
binary search(이진탐색)
2018-11-19 00:00:00 +0000이진탐색
- 오름차순으로 정렬되어있는 배열에 임의의 중간값을 정한다.
- 찾는 값이 임의의 중간값보다 작으면 큰 쪽(오른쪽) 영역을 탐색에서 제외한다
- 찾는 값이 임의의 중간값보다 크면 작은 쪽(왼쪽) 영역을 탐색에서 제외한다
- 탐색 영역 왼쪽, 오른쪽 key가 서로 만날 때 까지 반복한다
source
public class Main {
// 배열, 찾는 값, 크기
static int search(final int[] arr, final int searchValue, final int size) {
int lp = 0; // left pivot
int rp = size - 1; // right pivot
while (rp >= lp) {// lp, rp가 만날 때 까지 반복한다
int key = (lp + rp) / 2; // 중간 값을 구한다 이를 key라고 한다
if (searchValue == arr[key])
return key;
if (arr[key] < searchValue) // key값 보다 찾는 값이 크다면 왼쪽 범위를 삭제한다
lp = key + 1;
else // key값 보다 찾는 값이 작다면 오른쪽 범위를 삭제한다
rp = key - 1;
}
return -1;
}
public static void main(String[] args) {
int[] arr = { 1, 2, 5, 6, 7, 8, 10, 11, 20, 31 }; // 오름차순 정렬되어있는 배열만 이진 탐색을 할 수 있다
int searchNum = 0; // 찾을 값을 넣는다
System.out.println(searchNum + "은 " + search(arr, searchNum, arr.length) + "인덱스에 있습니다");
}
}
Posts
-
Interceptor(인터셉터)
-
Android Studio Install
-
계층형 게시판
-
VirtualBox Ubuntu 18.04.2 LTS
-
TransactionAwareDataSourceProxy Error
-
Java Coding Conventions
-
Java Long과 long의 차이
-
Mybatis 객체 안에 객체 매핑
-
JavaConfig mariadb 연결
-
DataTable
-
관리자 페이지
-
MappingJackson2JsonView
-
Spring Javaconfig
-
게시판 만들기-제품 등록
-
게시판 만들기-제품 페이지 제작
-
게시판 만들기-회원탈퇴 및 게시판 삭제 플래그 추가
-
footer 하단에 고정시키기
-
bootstrap4 사용법
-
Spring 데이터 검증 @Valid, BindingResult
-
brackets 실시간 미리보기
-
Spring 기본설정(pom.xml, web.xml, encoding)
-
Vue.js computed, methods, watch
-
javascript onkeyup
-
Maria DB Incorrect string value Error
-
javascript 암호화(md5, base64)
-
Vue.js template
-
Vue.js 소개
-
Nexacro 설명
-
ControllerAdvice
-
Batch
-
html 페이지 로딩 순서
-
소수구하기(PrimeNumber)
-
최소공배수,최대공약수
-
Stream
-
Lambda(람다식)
-
inner class(내부 클래스)
-
final 키워드
-
file upload
-
파이썬 빅 데이터 K-평균(K-means)
-
아나콘다(Anaconda), 주피터 개발환경 세팅
-
텐서플로우(TensorFlow) 아키텍쳐 및 Session
-
텐서플로우(TensorFlow)상수, 변수, 함수
-
머신러닝 기초
-
한글 리스트 오름차순, 내림차순
-
연속된 글자의 갯수 출력
-
java spring5 프로젝트 설정
-
restController
-
spring 세팅 및 기본설정
-
mybatis trim
-
jquery datepicker
-
ajax로 데이터 전달/응답 받는법
-
mybatis error
-
mybatis 게시판 만들기 순서
-
Java Jsp Mybatis Dynamic Query
-
mybatis
-
git 소개
-
node.js 개발환경 구축
-
node.js 기본 내장 모듈
-
node.js의 전역 객체
-
node.js http module
-
node.js event
-
jdbc
-
자바빈
-
jsp, servlet 정리
-
java null object pattern
-
다음지도 key 등록(kakao map)
-
공공 데이터 open api
-
facebook login api
-
sourcetree 사용법
-
JavaScript event3
-
JavaScript jquery
-
JavaScript dom
-
JavaScript ajax
-
JavaScript 이벤트2
-
JavaScript 캡슐화
-
JavaScript Array,내장객체
-
JavaScript var
-
JavaScript 객체,생성자
-
JavaScript 함수,클로저
-
JavaScript Event
-
javascript eclipse 자동완성(with tern)
-
CSS position
-
HTML5,CSS 선택자
-
자바 시간 측정
-
git,eclipse 연동
-
HTML 기초 정리
-
Eclipse Web 환경세팅
-
피보나치의 수
-
Oracle 반복문,커서,예외,저장 서브프로그램
-
Oracle PL/SQL
-
Oracle 다중쿼리(Multiple row query)
-
Oracle 인덱스, 뷰, 시퀀스, 트랜잭션, 세션 정리
-
Oracle JOIN 정리
-
Oracle DDL, DML 정리
-
Oracle 문자열 함수 정리
-
Oracle 숫자,날짜,자료형 변환 함수 정리
-
Oracle 제약조건 정리
-
Oracle 기초 쿼리 정리
-
문제2775
-
DFS
-
junit
-
json
-
algorithmus basic
-
circular queue(원형큐)
-
binary search(이진탐색)
-
port forwarding(포트포워딩)
-
kakao chatbot(카카오 챗봇)
-
java io
-
sort comparable, comparator
-
Unresolved compilation problem
-
ArrayList, HashMap
-
Regular(정규표현식)
-
Enum Class
-
String Function
-
refactoring 이란(상수,제어플래그,assert)
-
reference,abstract 정리
-
FileNotFoundException Solve
-
static
-
Thread Synchronization(스레드동기화,원자성)
-
Java Exception(예외처리)
-
Java 생성자, this, super
-
roomnum
-
BeeHouse
-
Git Reset, Revert
-
Git Log
-
Array
-
stack
-
pyramid draw
-
Star Draw(별 그리기4)
-
Star Draw(별 그리기3)
-
Star Draw(별 그리기2)
-
Star Draw(별 그리기1)
-
Loop(While, For)
-
자바 데이터 타입, 데이터 연산
-
시계방향 달팽이 그리기
-
정수값의 짝수,홀수 갯수 구하기
-
java, Scanner 정리
-
draw dog
subscribe via RSS