java
테스트 방법
테스트 방법
2023.03.18JUnit 이란? JUnit은 자바 언어용 단위 테스트 프레임워크입니다. 단위 테스트는 개발자가 자동화된 단위 테스트를 작성하게 도와줍니다. 이를 통해서 코드 품질을 향상시킬 수 있습니다. JUnit은 코드를 리팩토링 하거나 기능을 추가하거나 할때 이전에 작성된 테스트 코드가 작동하는지 확인함으로써 코드 일관성에도 도움을 주게 됩니다. JUnit 특징 사용이 쉽습니다. 개발자가 테스트 케이스를 작성하기 용이합니다. 자동화된 테스트가 가능합니다. 코드 커버리지를 보장할 수 있습니다. 테스트 코드 재사용성이 가능합니다. JUnit은 단위 테스트이기 때문에 독립적으로 실행할 수 있습니다. 그래서 코드를 재사용하기 용이합니다. 테스트 코드 가독성 : JUnit 테스트 결과 쉽게 이해하는데 도움이 됩니다. JUn..
캐시방법
캐시방법
2023.03.11ConcurrentHashMap ConcurrentHashMap은 Thread-Safe 합니다. 동시성 작업에 최적화된 Map 클래스이고, 이 자료구조를 이용해서 캐시를 구현할 수 있습니다. 캐시에서 값을 가져오는 경우 ConcurrentHashMap 에서 해당 키를 사용하여 값을 가져올 수 있습니다. 또, 각 항목에 만료 시간 필드를 추가하여 만료 시간을 추적할 수 있습니다. 만료시간이 5분이라면 아래와 같이 코드를 작성할 수 있습니다. ConcurrentHashMap map = new ConcurrentHashMap(); long expiryTime = System.currentTimeMillis() + (5 * 60 * 1000); // 5분 후 map.put("key1", new MyObject(..
Criteria API
Criteria API
2023.01.28Criteria API란? 자바 ORM 표준 JPA 프로그래밍에서 JPQL(객체지향쿼리) Java Persistence Query Language 을 자바 코드로 작성할 수 있도록 도와주는 빌더 클래스 API를 의미합니다. JPQL 조회를 위한 문자열 빌드에 하나의 대안으로 Java 오브젝트를 갖는 조회 빌드 API 입니다. JPQL은 런타임 중에 잘못된것이 있는지 확인해볼 수 있습니다. Criteria API 장단점 장점 빌더 클래스로 컴파일 단계에서 문법 오류를 확인해볼 수 있습니다. 쿼리문을 문자열 그대로 작성 시 발생할 수 있는 휴먼 에러를 방지할 수 있습니다. 단점 코드가 복잡해지면 가독성이 떨어지게 됩니다. API 사용에 대한 러닝커브가 존재합니다. Criteria API 기본 쿼리 Crite..
의존성 주입
의존성 주입
2023.01.21의존성 주입이 필요한 이유 의존성 주입이 필요한 이유는 객체 간에 결합도를 줄일 수 있기 때문이다. 의존성 주입 방법 스프링에서 의존성 주입(DI)을 위한 4가지 방법을 제공한다. 생성자 주입 Setter 주입 필드 주입 메서드 주입 1. 생성자 주입 생성자를 통해 의존 관계를 주입할 수 있는 방법이다. 이 방법은 생성자 호출시점에서 1번만 호출되는것이 보장된다. 불변인 상태에서 사용할 수 있다. @Component public class quackServiceImpl implements diService { private final QuackRepository quackRepository; @Autowired public quackServiceImpl(QuackRepository quackReposit..
kakao_캐시
kakao_캐시
2021.09.01Cache Size만큼 돌면서 HashMap에 채워 나간다. Hit라면 +5 하한다. Cache 가 가득 차면 하나를 줄인다. import java.util.*; class Solution { public int solution(int cacheSize, String[] cities) { int answer = 0; LinkedHashMap hm = new LinkedHashMap(); if(cacheSize == 0){ return cities.length*5; } int cnt = 1; for(int i=0; i
새로운게임_Java
새로운게임_Java
2021.08.04문제 접근 하기 위해 아래 2가지를 만들어주었다. 1. 말의 상태를 관리하는 class를 생성 => 체스의 상태를 관리해줘야 하는 이유는 체스가 움직이면 맨 밑에 있는지 위치는 어디인지 방향은 어디인지를 명확하게 알기 위함이다. 2. 맵, ArrayList 맵 => 맵은 0,1,2 이렇게 표시만 되는 부분이고 ArrayList 맵은 어떤 체스들이 들어 있는지 보여준다. 예를 들면 다음과 같다. ArrayList_Map[0][0] = { 1,2,3 } 의 의미는 (0,0) 좌표에 체스 1,2,3 이 포진해 있다. 이렇게 해석하면 된다. 3. 우선 main으로 쭉 나열해서 푸는 방법 그리고 재귀적으로 푸는 방법 2가지 모두 시도해보았다. 아무래도 main에다 다 때려박아서 하는게 속도는 더 좋았다. 그치만 ..
Codeforces 풀이를 위한 JAVA 문법 정리-1
Codeforces 풀이를 위한 JAVA 문법 정리-1
2021.06.13시작 Codeforces를 위해 간단히 몇가지 사항들을 정리해봅니다. 1에서 알아볼 건 기본 입출력, 자료형, 반복문, Call By Value ❌ Call By Reference 입니다. 입출력 Java 입출력에는 BufferedReader 버퍼를 이용해서 쓰는 함수를 활용합니다. 이외에도 Scanner를 사용하기도 하지만 속도가 상대적으로 빠르기 때문에 BufferedReader를 사용합니다. 특히, 공식문서에서 입력 스트림에서 문자를 읽을때 효율적으로 읽기 위해 문자를 버퍼에 저장하는것을 권하고 있습니다. 관련해서는 하기 링크를 참조 부탁드립니다. https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html BufferedReader ..
알고리즘 100 :: 백준 순열과 조합(N과M 시리즈)
알고리즘 100 :: 백준 순열과 조합(N과M 시리즈)
2020.09.21ㅡ. N과M(1) : 순열 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 31 32 33 34 35 36 37 package backjun; import java.io.*; import java.util.*; public class BOJ_15649_N_M_1{ static int[] k; static boolean[] c; public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub BufferedReader br = new BufferedReader(new InputStreamReader(System...
Module03 :: Java 로 BlockChain 구현해보기.
Module03 :: Java 로 BlockChain 구현해보기.
2020.03.18참고 사이트 https://brunch.co.kr/@springboot/103 를 참고했습니다. 블록체인 이란? 블록체인은 원장 분산 시스템으로 P2P 형식으로 노드와 사슬이 연결되어 있는 방식입니다. 1세대 블록체인 기술백서에서는 합의 알고리즘으로 동작합니다. 블록체인은 decentualize 를 실현하며, 흔히 말하는 DAPP 을 통칭 합니다. 이를 통해 중앙 집권 저장방식에서 분산화된 개인이 데이터를 저장가능합니다. 하지만, 아쉽게도 블록체인 트랜잭션을 개인이 전부 가지고 있기에는 역부족 이기 때문에 아이러니 하게도 거래소와 같은 곳에서 이러한 데이터를 관리하게 됩니다. Hash 정의, 사용 이유 Hash는 일반적으로 암호화가 적용된 SHA-256 을 사용하며, 사용하는 이유는 객체를 구별하기 위해..
Java07 :: Map - keySet(), ContainsKey
Java07 :: Map - keySet(), ContainsKey
2020.02.08오늘 문제를 풀다가 위 두 핵심적인 함수를 몰라서 정리해두려고 합니다. keySet() 은 HashMap 에서 key 를 알 수 있게 도와주는 함수 입니다. ContainsKey('key') = true/false 로 key 값이 있다면 true 그렇지 않다면 false를 return 합니다. 1 2 3 4 5 6 7 8 9 10 map.put('sonic', 1); //map 을 하나 put 받았을 때 for(String key : map.keySet()) String value = map.get(key) //위 for 문을 통해서 value는 실제 sonic 에 담겨져 있는 1의 값을 //key는 sonic 값을 받아 옵니다. Colored by Color Scripter cs
알고리즘38 :: swea_모의시험_벽돌깨기
알고리즘38 :: swea_모의시험_벽돌깨기
2019.11.111 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 12..
Java06 :: [윤열프]실행 흐름의 컨트롤
Java06 :: [윤열프]실행 흐름의 컨트롤
2019.03.01* if문과 if~else 문 조건을 나타내는 것이다. * 자바는 if , else if, else if, else 이런식으로 쓴다. * > ? : 이런 조건연산자가 있는데 굉장히 유용하다. 12int bbig;bbig = ( num1 > num2 ) ? num1 : num2cs조건이 맞으면 num1이 아니면 nun2가 저장된다. * switch 와 break123456789101112switch(n){ case 1: case 2: ... default : }//중간마다 break; 는 반드시 넣어야 한다. 그렇지 않으면 다음 case도 실행되서 결국에는 //default도 실행된다. Colored by Color Scriptercs특히, n에 따라서 case 앞에 1,2,3, 이 결정되는거라면 / 나 ..