워크샵6349 141

자바 소켓을 사용한 단순한 채팅 프로그램

심심해서 개발해보았습니다. 자기만족용 영상입니다. 자바 자체적으로 있는 소켓을 사용하여 1대1 채팅 프로그램을 제작하였습니다. 소스코드는 이링크를 참조해주세요. (스타 눌러주시면 감사하겠습니다..) server를 먼저 실행한 후, client를 실행하면 잘 작동합니다. (아직 오류가 있습니다. 둘 중 하나가 먼저 종료가 되면 null이 끊임없이 출력됩니다.)

[Spring] Spring Context 설명

Spring Context... 내용도 많고 복잡하고 해서 포스팅을 미루었습니다... 그동안 프로그래머스 코딩테스트밖에 포스팅 못하였습니다.. 각설하고 본론으로 바로 들어가겠습니다. Spring Context 란? Bean의 확장 버전으로 Spring이 Bean을 다루기 좀 더 쉽도록 기능들이 추가된 공간이다. 단순히 Bean을 다루는 것 이외에도 추가적인 기능을 수행합니다. Context는 Bean들을 포함하여 여러 기능을 가진 공간이라고 생각하면 편할 것 같습니다. 종류 여기서 문제가 하나 발생하게 됩니다. 자바에는 서블릿이라는 객체가 존재하는 데, 모든 객체는 Bean으로 관리되니, 서블릿 역시 Bean이 존재합니다. 이러한 서블릿 Bean들도 각자 공통적인 부분들이 있을 것인데, 서블릿은 모두 독..

Spring 2022.02.13

일상이에요

안녕하세요. 요즘 Spring Boot와 알고리즘 위주로 포스팅하고 있는 오잎클로버 입니다. 일기장이나 아님 낙서장처럼 자주 작성하고자 일상 카테고리를 만들었지만 자주 작성하지 않았습니다;; 요즘 뭘 해도 의욕이 없어서 알고리즘이나 해결하고 있습니다. 물론 개판으로 풀긴하지만 그래도 "참 신박한 방법으로 문제를 해결하네"로 보시면 감사하겠습니다 SpringBoot 공부, 그리고 Spring 공부도 하고 있습니다. 인프런, 패스트캠퍼스 등 여러 인강들이 있지만 저는 개인적으로 강의가 제 체질이 아니라서 책을 읽거나 고수 분들의 글을 보고, 삽질해보면서 이해하려고 노력 중입니다. Spring이라는 카테고리를 SpringBoot라는 카테고리로 이름을 바꾸고 Spring은 제가 자주 공부해서 작성할 수 있는 레..

일상 2022.02.12

[프로그래머스] 베스트 앨범

※ 해당 문제의 링크는 여기입니다. ※ 다른 분들이 푸신 방법도 보았으나 내부 클래스 만드셔서 하시는 경우가 대부분이었으나 저는 HashMap 3개를 만들어 해결하였습니다. 3가지 조건을 충족하기 위해 HashMap을 만들었습니다. 각각의 HashMap은 장르, 재생 횟수 / 장르, 총 재생 횟수 / 고유 번호, 재생 횟수 로 하였습니다. HashMap songs = new HashMap(); // 장르, 횟수 HashMap heardTimes = new HashMap(); // 장르, 총 횟수 HashMap unique = new HashMap(); // 고유 번호, 횟수 장르를 키로 몇 번 재생한 횟수를 저장을 for문을 사용하여 저장하였습니다. for (int i = 0; i < genres.len..

[프로그래머스] 위장

※ 해당 문제의 링크는 여기입니다. ※ public int solution(String[][] clothes) { HashMap parts = new HashMap(); for (String[] clothe : clothes) { String key = clothe[1]; parts.put(key, parts.getOrDefault(key, 0) + 1); } int answer = 1; for (Map.Entry entry : parts.entrySet()) { answer *= entry.getValue() + 1; } return answer - 1; } HashMap를 사용하여 풀었습니다. 각 위치에 따른 원소가 몇 개인지만 파악하면 금방 풀 수 있기에 getOrDefault를 사용하였습니다. g..

[프로그래머스] 전화번호 목록

※ 해당 문제의 링크는 여기입니다. ※ 위 방식은 HashSet 방식을 사용하는 방식이 있지만 배열로만 해결하였습니다. public boolean solution(String[] phoneBook) { Arrays.sort(phoneBook); for (int i = 0; i < phoneBook.length - 1; i++) { if (phoneBook[i + 1].startsWith(phoneBook[i])) { return false; } } return true; } 전화부를 정렬합니다. 전화부 길이 - 1 까지 for문을 돌립니다. 전화부[i + 1]의 시작부분이 현재 전화부 번호이라면 false를 반환합니다. 전부 다 찾았는 데도 false가 반환되지않았다면 중복이 없으므로 true를 반환합니..

[프로그래머스] 완주하지 못한 선수

※ 해당 문제의 링크는 여기입니다. ※ key와 value를 사용하여 문제를 해결해야하는 문제라는 것은 파악했지만 굳이 HashMap를 사용해야하는 가에 대한 의문이 들어 그냥 배열을 사용하여 문제를 해결했습니다. public String solution(String[] participant, String[] completion) { // 선수 목록에는 있지만, 완주자 목록에 없으면 // 해당 선수 이름을 반환 // 둘 다 정렬하면 해당 위치에 동일한 이름이 올라갈 것임 Arrays.sort(participant); Arrays.sort(completion); int i; for (i = 0; i < completion.length; i++) { if (!completion[i].equals(partic..

협업 프로젝트 진행 시 팁

개발을 혼자하면 큰 문제가 생기지 않지만 개발을 여러 명이서 같이 협업으로 할 때가 종종 생깁니다. 회사에서 일을 한다면 더더욱 그럴 것입니다. 물론 회사 측에서도 어느정도 방향성과 더불어 틀이 잡혀있긴 할 테지만, 필자와 같이 학교에서 협업을 진행할 경우 방향성 및 틀이 전혀 잡혀있지않아 보통 선배에게 물어보거나 같이 의논하여 방향성과 틀을 잡습니다. 하지만 회사와 같이 서로 의견이 맞지않더라도 방향성을 같이 잡는 다는 것은 학교에서는 쉽지않은 일입니다. 그렇기때문에 1년간, 그리고 앞으로 학교 혹은 사적으로 같이 이런 방식으로 개발을 하면 어떨까라는 생각으로 포스팅하고 있습니다. (해당 포스트에서 다루는 얘기는 필자가 다니는 현재 학교와 상황 등을 고려하여 작성하였습니다. 참고해주세요) 먼저, 주제를..

공부 2022.02.07

[Spring] Bean 추가 설명

이전 글이 다소 내용이 부실하다고 생각하여 조금 더 추가해서 글을 작성하고자 합니다. 먼저 @Configuration 어노테이션과 관련해서 추가 설명하고자 그렇기 위해서는 위와 관련된 @Component 어노테이션에 대해서 알아야 합니다. 이전 글에서 설명했듯이 (생략) Configuration 방식은 Component Scanning을 통해 Bean을 등록하는 방식 (중략) Life Cycle Callback 중에는 @Component이 붙어있는 모든 Class의 Instance를 생성해 Bean으로 등록하는 작업을 수행하는 Annotation Processor가 등록돼있다. ... 이점이 다소 부족하다고 생각하여 보충하고자 합니다. 위 점을 보고 직접 코드를 작성하면, Configuration이나 C..

Spring 2022.02.06