전체 글
-
(Java)ArrayList vs LinkedList 시간 복잡도Java & Kotlin 2021. 2. 22. 10:49
1) 서론 Selenium과 JSoup을 이용해서 크롤링을 하다 보면 데이터를 가지고 오고, 추가하는 작업을 많이 하게 됩니다. 그럴 때 반복적으로 사용하게 되는 것이 List 인터페이스와 For loop입니다. 하지만 List 인터페이스를 사용할 때는 습관적으로 ArrayList 클래스만 사용하고 있었습니다. 하지만 List 인터페이스를 구현한 것은 LinkiedList 클래스도 추가로 있습니다. Vector도 있긴 하지만, ArrayList와 동일한 동작을 하며 자바 1.8 이상부터는 사용하지 않는 것으로 알고 있습니다. 그래서 LinkedList와 ArrayList의 성능상 차이점은 뭐가 있을까 고민을 해봤습니다. 2) ArrayList vs LinkedList 기본적인 차이점 두 개의 가장 큰 차..
-
(Java)Scanner vs BufferedReaderJava & Kotlin 2021. 2. 4. 16:38
오늘은 Scanner과 BufferedReader에 대해서 작성하려고 합니다. 사용자로부터 콘솔에 어떤 값을 입력 받은 후 출력하는 대표적인 클래스들 입니다. 하지만 이 두개가 다르다는 것을 알고 계셨나요? 알고리즘 문제를 풀다 보면 Scanner 클래스를 이용해서 단순히 사용자로부터 입력 받은 값을 출력하면 될 것 같은데, 시간초과로 문제가 틀리는 경우가 있습니다. 이런 경우에는 BufferedReader라는 클래스가 있다는 것조차 모를 때는 정말 해결하기 어렵습니다. 왜냐하면 Scanner클래스를 사용했을 때의 속도에 대해서는 고려하지 않았기 때문입니다. Scanner vs BufferedReader Java 11 API의 설명을 참고합니다. Scanner는 "간단하게 기본형과 String 타입을 정..
-
(Java)Math.max vs 삼항연산자Java & Kotlin 2021. 1. 30. 16:54
숫자 비교의 여러 가지 방식 세 가지 모두 결과는 같습니다. 정수형 값 두 개를 입력 후 비교합니다. 1. Math.max 여러 가지 수학 관련 메서드를 사용할 수 있는 Math 클래스입니다. 아마도 자바를 처음 배우게 된다면 'Math.random()'과 같은 코드를 많이 사용했을 텐데요. 'Math.max'는 이름만 봐도 알겠지만, 두 개의 숫자를 비교해서 더 큰 숫자를 나타내는 겁니다. API를 찾아보면 평균, 최솟값 등 더 많은 메서드가 있습니다. 또한 int, float형 등등 다양한 형식도 지원합니다. 개인적으로는 세 가지 방식의 숫자 비교 중 가장 직관적인 방식이라고 생각합니다. 2. 삼항연산자 삼항연산자도 간단합니다. (a>b)의 조건이 참이라면 첫 번째, 거짓이라면 두 번째 조건을 출력하..
-
[Spring Framework]스프링 커맨드 객체Spring Framework 2021. 1. 1. 11:37
이 글에서는 Spring MVC의 View 페이지에서 서버로 데이터를 넘기고, 받는 방법에 대해서 알아보려고 합니다. 대표적으로 로그인, 회원가입할 때 사용자가 입력한 정보를 가지고 와서, DTO에 저장을 하는 것들이 있는데요. @RequestParam 방식 view.jsp @RequestParam을 사용한 Controller 보통 스프링 기초 책에서 자주 보이고, 보편적으로 많이 사용하는 방식 입니다. 여기서 주의해서 봐야 할 점은 Controller의 View에서 요청한 파라미터(parameter)를 받는 방식 입니다. @RequestParam 애노테이션을 사용해서 매개변수로서 받아오고 있습니다. 그리고 이 매개변수를 서비스 인터페이스에 넣어, DB와 동작을 하고 있습니다. 제가 생각하는 장점은 요청..
-
(네트워크)OSI 7 LayerNetwork 2020. 12. 1. 21:15
1. OSI 모델 OSI 모델은 다양한 통신 시스템에서 표준화된 프로토콜을 사용하여 통신할 수 있도록 ISO에서 만든, 개념적인 계층 모델입니다. 한국어로 된 고작 한 문장인데 헷갈립니다. 이해하기 어려운 단어들이 많이 있는데요. 천천히 알아가 보겠습니다. 1. 1. 프로토콜 (Communication Protocol) 프로토콜은 통신시스템(네트워크, 전송 시스템 등)의 여러 가지 집합들이 서로 정보들을 주고받을 수 있게 해주는 규칙입니다. 여기서 서로 정보들을 주고받는 집합들에는 스마트폰, 컴퓨터 등 데이터를 주고받는 수많은 기기들이 될 것입니다. 그렇다면 서로 정보들을 주고받을 수 있게 해주는 규칙은 무엇을 의미할까요? 정보는 컴퓨터나 스마트폰에서 주고받는 Data를 의미합니다. Data는 이미지, ..
-
인생 첫 밀양 여행기타/여행 2020. 10. 31. 20:10
안녕하세요. 평생을 대구와 경산에 거주를 하면서, 기차 타고 30분 거리의 밀양을 처음 가본 여행기입니다. 사실 밀양을 가고 싶지는 않았습니다. 그냥 어디론가 떠나서 조용한 곳에서 산책도 하고, 햇빛도 쬐며 혼란스러운 마음을 잡고 싶은 생각뿐이었습니다. 주변에서 순천을 많이 추천했고, 어떻게 갈 것인지 검색을 해봤습니다. 저같은 뚜벅이게 교통편은 매우 중요합니다. '경산역 - 삼랑진역(환승) - 순천역' 이렇게 나옵니다. "아니 삼랑진이라는 곳은 어디야? 이런 곳이 있어?" 궁시렁대며 검색을 해보니 밀양이라는 지역의 한 기차역이었습니다. 이렇게 가까이 있는 지역였지만, 왠지 생경한 느낌이 들었습니다. 예전에 외할머니께서 간혹 가시고는 말씀해주시던 것만 기억에 남는, 어떤 전설 속의 도시 같은 느낌이었습니..
-
(Java)아주 간단한 스마트홈 시스템 구현개발 완료 2020. 10. 24. 16:39
1. 서론 컴퓨터공학과 복수전공 두 번째 학기입니다. 첫 학기에는 운영체제, 컴퓨터 구조와 같은 이론 중심의 과목을 듣느라 기대했던 실제 코드를 작성해보는 프로젝트를 해보지 못했습니다. 이번 학기에 자바 프로그래밍 수업을 통해서 처음으로 웹이 아닌 다른 것을 만들어 봤습니다. 또한 제가 만든 기준, 일정으로 편하게 개발하는 것이 아닌, 누군가 조건을 주고 그에 맞게 개발하는 것을 처음으로 해봤습니다. 물론 학점이라는 점수의 압박도 있었지만, 타인이 요구하는 결과물을 만든다는 것이 혼자서 개발을 하는 것과는 많은 차이가 있었습니다. 2. 사용된 기술 java 11 3. 코드 github.com/YeonCheolGit/SimpleSmartHome YeonCheolGit/SimpleSmartHome Contr..
-
서블릿이란?Spring Framework 2020. 9. 15. 17:49
1. 서론 안녕하세요. 오늘은 서블릿에 대해서 작성해보려고 합니다. 처음 JSP, 서블릿으로 간단한 웹 구성을 공부할 때는 서블릿에 대해서 깊게 공부하지 않았습니다. 하지만 이 서블릿이라는 것은 스프링 프레임워크를 사용해서 MVC 모델을 구성할 때도 나오게 되면서, 계속 괴롭히는데요. 즉 웹 백엔드 개발자로서 반드시 알아야 하는 것이라고 생각합니다. 그래서 오늘은 서블릿에 대해서 작성하려고 합니다. 하지만 이 글은 웹 서버가 어떻게 동작하는지, 서블릿 컨테이너가 무엇인지 설명하는 글은 아닙니다. 서블릿이라는 기술 자체에 대해서 집중해보려고 합니다. 웹 서버의 동작, 서블릿 컨테이너에 대해서 궁금하신 분은 아래의 글을 참고해주세요. [Java/Java 이론] - 웹 서버란? 2. Servlet? 일단 먼저..