Study

    [Java] HashMap remove, 객체, 참조

    코딩테스트 공부를 하다가 문득 궁금증이 생겼습니다. 하나의 객체를 생성하여 HashMap에 다가 담아놓고, 이를 get으로 불러서 다른 자료구조 예를들어 ArrayList에다가 추가를 했을 때, HashMap에서 해당 객체를 remove 한다면 ArrayList에 있는 객체도 함께 삭제가 되지 않을까? 하는 궁금증 이었습니다. 그래서 테스트를 진행해봤습니다. 일단 테스트에 사용할 클래스를 하나 만들어 주었습니다. static class Test{ int val; public Test(int val) { this.val = val; } @Override public String toString() { final StringBuilder sb = new StringBuilder("Test{"); sb.app..

    MariaDB "already has more than 'max_user_connections' active connections"

    SSAFY 에서 프로젝트를 진행할 때 겪었던 에러 입니다. java.sql.SQLSyntaxErrorException: (conn=65463) User "db_Name" already has more than 'max_user_connections' active connections와 같은 에러 내용이 실제 내용입니다. 상황 저희는 SSAFY에서 제공해주는 Maria DB 서버를 사용하기로 했습니다. 그래서 connection 설정을 하고 workbench를 이용해서 DB 테스트를 진행 하고 있었습니다. 그런데 팀원이 에러가 발생한다면서 에러를 보여주었는데 위와 같은 에러가 발생하고 있었습니다. 원인 원인은 에러가 보여주는 내용 그대로 최대로 DB에 접근할 수 있는 인원을 넘어간 것 이었습..

    GitLab 레포지토리 GitHub으로 미러링 100MB 에러?

    GitLab 레포지토리 GitHub으로 미러링 100MB 에러?

    gitlab에서 진행하던 프로젝트를 Github으로 미러링 하던 중 커밋 했었던 MySQL 덤프파일의 크기가 100MB를 초과하여 미러링에 실패하는 상황에 직면하였습니다. 그리하여 찾아본 해결 방법으로 첫째에는 filter-branch 를 이용한 방법이었는데, 잘 따라했다 싶었지만 repository에 있는 덤프파일의 commit 기록은 그대로 남아 있었습니다. 그래서 찾아보던 중 다른 방법인 BGF Repo Cleaner 를 이용한 방법을 진행하게 되었습니다. 따라하는 과정에서 검색을 통해서 많은 블로그들을 참고하게 되었는데 감사합니다. 큰 도움이 되었습니다. 참조 - https://velog.io/@1vl/100mb-넘는-파일이-있는-gitlab-github-미러링 시작은 위의 블로그를 따라 해보았습..

    [디자인 패턴] 전략(Strategy) 패턴

    헤드 퍼스트 디자인 패턴 - 교보문고 14가지 GoF 필살 패턴! | 경력과 세대를 넘어 오랫동안 객체지향 개발자의 성장을 도와준 디자인 패턴 교과서의 화려한 귀환! 》 2005년부터 디자인 패턴 도서 분야 부동의 1위 》 디자인 패턴의 고 www.kyobobook.co.kr 전략(Strategy) 패턴이란? 전략 패턴이란 특정한 계열의 알고리즘들을 정의하고 각각을 캡슐화하여 사용할 수 있도록 만드는 패턴을 말합니다. 이를 활용하면 이 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있게 됩니다. 예제 다양한 오리를 등록해야하는 오리 시뮬레이션 게임의 오리 클래스 Duck을 예제로 예시를 적어보도록 하겠습니다. Duck.java public abstract class Duck { Fly..

    [Spring] Spring WebMvcTest 작성법

    [Spring] Spring WebMvcTest 작성법

    개요 Spring Boot의 WebMvcTest를 이용한 단위테스트를 작성하면서 헤매었던 부분들을 기록해보고자 합니다. 내용 1. API요청 방식에 따른 테스트 작성 방법 PathVariable ( 주소에 데이터를 입력 받는 방식 ) - 주로 @GetMapping 에서 사용되는 Path에 요청 값을 받는 방식입니다. 위처럼 PathVariable 방식의 입력이 있을 때에는 RestDocumentationRequestBuilders 를 추가해준뒤 actions을 작성해 주어야 합니다. RequestParam ( Param을 이용해서 입력을 받는 방식 ) - 적은 수( 1개 ~ 2개 정도? )의 데이터를 받을 때에 주로 사용하고 있는 RequestParam 방식입니다. 이전의 PathVariable 때의 R..

    [Spring] Spring rest docs generated-snippets adoc 안 생김 문제

    [Spring] Spring rest docs generated-snippets adoc 안 생김 문제

    개요 Spring rest docs 에서 테스트 코드를 작성한 뒤 테스트 케이스를 실행했는데 특정 케이스만 adoc이 생성되지 않는 상황이 발생했습니다. 따로 어떤 에러도 발생하지 않았기에 원인을 찾는데 조금의 시간을 소요했습니다. 해결 문제는 간단하게 해결되었습니다. 저의 경우 deleteUser() 요청의 adoc이 생성이 안되고 있었는데 천천히 살펴보니 테스트를 복사해서 수정하는 형식으로 작성을 할 때에 document 이름을 변경을 하지 않았기 때문이었습니다. 각 테스트 케이스마다 고유의 document 이름으로( 테스트 기능 이름과 같이 하면 될듯 합니다. ) 수정해주어 문제를 해결 했고, 이후 테스트를 실행하니 모든 adoc 들이 잘 생성이 되었습니다. 복사를 이용해서 개발을 할 때에는 조금 ..

    [Java] java에서 동기, 비동기란 무엇인가?

    [Java] java에서 동기, 비동기란 무엇인가?

    요즘 자료구조를 공부하는데 계속해서 나타나는 단어가 있습니다. 그게 바로 동기화 라는 단어인데 굉장히 유사한 기능을 가진 두 가지의 자료구조간의 차이점이 무엇인가 라고 찾아보았을 때 동기화 지원여부가 차이점인 경우가 종종 있었습니다. 여기에 포함되는 것이 ArrayList와 Vector, StringBuffer와 StringBuilder, HashMap과 HashTable의 경우가 제가 동기화 라는 단어를 접한 경우입니다. 각각의 차이점이 동기화 지원 여부라는 것은 이해를 하겠는데 그 동기화라는 것이 뭔지에 대해서 확실하게 이해를 하고 있지 않으니 자꾸 찝찝한 기분이 들었습니다. 그래서 정리를 해보려고 글을 써보기 시작했습니다. 일단 동기화를 이해하기 위해서는 쓰레드(Thread)라는 단어를 알아야 합니..

    [자료구조] 스택이란? (Stack)

    [자료구조] 스택이란? (Stack)

    자료구조에 대해서 어느 정도 알고있다고 생각하지만, 하나씩 정리하며 기억을 단단히 해보고자 합니다. '자료구조와 함께 배우는 알고리즘 입문'을 참고하여 정리하고 있습니다. 스택이란? 스택이란 데이터를 일시적으로 저장하기 위한 자료구조로, 데이터의 입력과 출력의 순서는 후입선출(LIFO, Last In First Out)입니다. 후입선출이란 'Last In' 마지막에 들어간 데이터가 'First Out' 처음에 나오는 형식을 말합니다. 스택에 데이터를 넣는 작업을 푸시(push)라 하고, 스택에서 데이터를 꺼내는 작업을 팝(pop)이라고 합니다. 그리고 푸시와 팝이 이루어지는 위치를 꼭대기(top)라 하고, 스택의 가장 아랫부분을 바닥(bottom)이라고 합니다. Java 프로그램에서 메서드를 호출하고 실..