Posts

2022

Intellij : 유용한 단축키

Intellij 유용한 단축키 이 글은 intellij로 개발 시 유용한 단축키를 모아놓은 글입니다. 추후에 알게되는 단축키가 있다면 추가하겠습니다 :smile: 창 열기 WINDOW MAC 간단한 설명 비고 ...

Vue : 참고 링크 모음

Vue 참고 링크 모음 Vue 개발 시에 참고하면 좋을 만한 링크 모음입니다. 1. 컨벤션 Vue Style Guide

Vue : Vuex

1. Vuex란? Store라고도 불림. 무수히 많은 컴포넌트의 데이터를 관리하기 위한 상태 관리 패턴이자 라이브러리 서비스가 복잡해질수록 컴포넌트 간에 데이터 전달이 어려워지기 때문에 Vuex를 사용하는 것 React의 Flux 패...

Javscript : 알쓸신잡(알아두면 쓸모있는 신기한 잡아스크립트) - ES6

알쓸신잡(알아두면 쓸모있는 신기한 잡아스크립트) - ES6 알쓸신잡(알아두면 쓸모있는 신기한 잡아스크립트) ES6편입니다. 단순히 제 주관으로 판단하고 작성하는 글이기 때문에 가이드가 될 수는 없으니 주의해주시면 감사하겠습니다 :star2: ES6 란? ECMA...

Clean Code : 부록 A(동시성 ll)

부록 A. 동시성 ll 이 장은 전에 스터디하였던 동시성을 좀 더 자세히 설명하고 보안하는 장입니다. 저자는 코드와 함께 다양한 운영체제 개념, 디자인 패턴을 말합니다. 저는 여기서 코드 보다는 운영체제 개념과 디자인 패턴 위주로 설명하려고 합니다. 1. 클라이언트/서버 예제 ...

Clean Code : 16장(SerialDate 리팩터링)

16장. SerialDate 리팩터링 자바는 이미 java.util.Date, java.util.Calendar 등과 같은 클래스를 제공하는데, 왜 SerialDate 가 필요할까요? SerialDate는 java.util.Date는 시간이 너무 정밀하기 때문에 특정 날짜(20...

Clean Code : 13장(동시성)

13장. 동시성 이 장에서는 스레드의 동시성에 대한 내용을 간략하게 다루었습니다. 이 장에서는 운영체제 관련 지식들이 많이 나오기 때문에 제가 정리했던 자료들을 참고하셔도 좋을 것 같습니다. 참고 자료 운영체제 Blocking vs Non-Blocking / Sync...

Design Pattern : 전략(Strategy) 패턴

전략(Strategy) 패턴 객체들이 할 수 있는 행위 각각에 대해 클래스(전략)를 생성하고, 유사한 행위들을 캡슐화 하는 인터페이스를 정의하여, 객체의 행위를 동적으로 바꾸고 싶은 경우 직접 행위를 수정하지 않고 전략을 바꿔주기만 함으로써 행위를 유연하게 확장하는 방법을 말합니...

Clean Code : 12장(창발성)

12장. 창발성 이 챕터는 이제까지의 깨끗한 코드에 대해서 정리하는 느낌의 챕터라고 보시면 될 것 같습니다. 창발성에서 창발이란 하위 계층에는 없는 특성이나 행동이 상위 계층에서 자발적으로 돌연히 출현하는 현상(영어로는 Emergent Property)을 말합니다. 개인적인 ...

Design Pattern : 메멘토(Memento) 패턴

메멘토(Memento) 패턴 메멘토 패턴은 캡슐화를 유지하면서 객체 내부 상태를 외부에 저장하는 패턴입니다. 1. 다이어그램 Originator : 객체의 정보를 가지고 있는 오리지널 객체 제 3자가 객체 내부 정보를 알지 못하게 하기 위하여 Me...

Clean Code : 10장(클래스)

10장. 클래스 이제까지 코드 행과 코드 블록을 올바르게 작성하는 방법에 초점을 맞췄습니다. 함수를 올바르게 구현하는 방법과 함수가 서로 관련을 맺는 방식등을 공부했지만, 좀 더 높은 단계(클래스)까지 신경 쓰지 않으면 깨끗한 코드를 작성하기에 어렵기 때문에 이 장에서는 깨끗...

Design Pattern : 이터레이터(Iterator) 패턴

이터레이터(Iterator) 패턴의 차이점 이터레이터 패턴은 집합 객체 내부 구조를 노출시키지 않고 순회하는 방법을 제공하는 패턴입니다. 다이어그램 Iterator : 집합체의 요소들을 순서대로 검색하기 위한 인터페이스 ConcreteIterator : Itera...

Clean Code : 7장(오류 처리)

7장. 오류 처리 언제나 사용자는 우리의 예상과 다르게 행동하기 때문에 적절한 오류 처리는 매우 중요합니다. 다만, 오류 처리 코드로 인해 프로그램 논리를 이해하기 어려워진다면 깨끗한 코드를 부르기 어렵습니다. 따라서 이 장에서는 깨끗한 코드를 위해 오류를 처리하는 기법과 고려 ...

Clean Code : 6장(객체와 자료구조)

6장. 객체와 자료구조 6장에서는 객체와 자료구조에 제대로 구분하고 활용하는 방법에 대해 나와있습니다. 6-1. 자료 추상화 자료를 세세하게 공개하기 보다는 추상적인 개념으로 표현하는 것이 좋습니다. // 6-1 코드 구체적인 Point Class public class P...

Design Pattern : 책임 연쇄, 데코레이터, 프록시 패턴의 차이점

프록시, 데코레이터, 책임 연쇄 패턴의 차이점 책임 연쇄 패턴(Chain of Responsibility)은 요청을 보내는 쪽과 요청을 처리하는 쪽을 분리하는 패턴입니다. 데코레이터 패턴과 프록시 패턴이 책임 연쇄 패턴과 매우 유사한데, 기존 스터디에서 데코레이터 패턴과 설계 ...

Clean Code : 4장(주석)

4장. 주석 주석으로 코드를 표현하는 방식은 좋지 않다고 합니다. 그 이유는 코드는 계속적으로 변화하고 진화하게 되는데 반해, 주석은 코드 작성자가 실수로 업데이트를 하지 못할 가능성이 충분히 존재합니다. 오히려 코드와 다른 부정확한 주석이 원래 코드의 의도를 헤치는 경우도 발생...

Clean Code : 3장(함수)

3장. 함수 어떤 프로그램이든 가장 기본적인 단위가 함수입니다. 때문에 함수를 잘 만드는 법을 아는 게 좋습니다. 3-1. 작게 만들어라! 함수를 만드는 첫 번째 규칙은 무조건 작게입니다. 큰 함수를 작게 쪼개면서 적절한 이름을 붙여주면 코드를 이해하기 쉬워집니다. 블록과 ...

맨 위로 이동 ↑

2021

Java : JVM과 연관지어 보는 Static Block과 Instance Block

JVM과 연관지어 보는 스태틱 블록(Static Block)과 인스턴스 블록(Instance Block) Java로 디자인 패턴 스터디 중 Class 안에 static { }와 { }로만 이루어진 처음보는 블록이 있어 이 글을 포스팅하게 되었습니다. JVM으로 자바 프로그램 실...

Java : final

final Java 디자인 패턴 스터디 중 final 키워드 활용법을 찾아보다가 정리가 필요할 거 같아, 포스팅을 시작하였습니다. 1. 개요 final 키워드를 떠올릴 때면 그냥 상수로만 생각할 수도 있지만, final을 클래스, 메서드, 변수에 선언하면 조금씩 할 수 있는 ...

Design Pattern : Flyweight

플라이웨이트(Flyweight) 패턴 플라이웨이트는 복싱에서의 플라이웨이트 체급(제일 가벼운 체급)에서 이름을 가져왔습니다. 플라이웨이트 패턴은 많은 인스턴스를 생성하는 애플리케이션에서 사용할 수 있는 패턴 중 하나입니다. 1. 정의 플라이웨이트 패턴은 자주 변하는 객체와 자...

Clean Code : 추천사 및 1장(깨끗한 코드)

Clean Code : 추천사 및 1장(깨끗한 코드) 다니는 회사의 인턴 부터 시작해 정규직이 되고 난 후, 신규 프로젝트에 투입되었는데, 다른 사람의 코드를 분석하고 활용해야 하는 경우가 많았습니다. 예전부터 확장성 있고 효율적인 좋은 코드에 대해 관심이 있었지만, 이번 신규 ...

Clean Code : 2장(의미 있는 이름)

2장. 의미 있는 이름 소프트웨어에서 이름은 어디에서나 쓰입니다. 이름을 잘 지으면 여러모로 편하기 때문에 이 장에서는 이름을 잘 짓는 간단한 규칙 몇 가지를 소개한다고 합니다. 2-1. 의도를 분명히 밝혀라 좋은 이름을 지으려면 시간이 걸리지만 좋은 이름으로 절약하는 시간이...

Design Pattern : Composite

컴포짓(Composite) 패턴 컴포짓 패턴은 전체 계층 구조에서 그 계층 구조를 구성하는 부분적인 객체들을 클라이언트에서 동일하게 취급할 수 있게 구조를 만드는 패턴입니다. 1. 정의 컴포짓 패턴은 클라이언트는 사용하는 객체가 계층 구조 상위의 객체인지, 하위의 객체인지에 ...

Git : Commit Message

Git Commit Message 저는 보통 Git Commit Message를 ADD : [카테고리] 카테 고리 세부 내용 - 메세지 형식으로 사용하는데, 이 때 사용하는 메세지들을 소개하려고 합니다. FIX 보통 올바르지 않은 동작을 고친 경우에 사용합니다. ADD 코...

Design Pattern : Adapter

어댑터(Adapter) 패턴 어댑터 패턴은 기존 코드를 클라이언트가 사용하는 인터페이스의 구현체로 바꿔주는 패턴을 말합니다. 1. 정의 일반적으로 어댑터 패턴은 110V 콘센트와 220V콘센트를 변환해주는 것을 예로 많이 드는데, 프로그래밍적으로 얘기하자면 클라이언트가 사용...

Web : HTTP 상태 코드

HTTP 상태 코드 웹 개발을 할 때에 요청과 응답에 따른 다양한 상태 코드가 있고, 이 상태 코드에 따라 다른 로직을 구현해야할 수도 있기 때문에 상태 코드를 알아야할 필요성이 있습니다. 주요 상태 코드는 200번대부터 500번대까지 다양하게 있지만 주요한 상태 코드만 몇 개...

Vue : 정리(2)

Vue 정리(2) 캡틴판교 장기효님의 초급 ~ 실전 Vue.js로 완성하는 프론트엔드 개발자 로드맵을 보면서 제 나름대로 정리한 글입니다. (개인적인 시간 상 전부 정리하기 보다는 몰랐던 부분을 정리합니다.) 뷰 라우터 뷰 라우터에 대해서는 아래의 링크에 자세히 설명되어 있습...

Vue : 정리(1)

Vue 정리(1) 캡틴판교 장기효님의 초급 ~ 실전 Vue.js로 완성하는 프론트엔드 개발자 로드맵을 보면서 제 나름대로 정리한 글입니다. Plugins 추천 Vetur Night Owl Material Icon Theme Live Server ESLint...

Database : Index

인덱스(Index) 인덱스는 말 그대로 책의 맨 처음 또는 맨 마지막에 있는 색인이라고 할 수 있습니다. 이 비유를 그대로 가져와서 인덱스를 살펴본다면 데이터는 책의 내용이고 데이터가 저장된 레코드의 주소는 인덱스 목록에 있는 페이지 번호가 될 것입니다. DBMS도 Databas...

BaekJoon : 4256번 (트리)

Java : BaekJoon DataStructure BaekJoon DataStructure(자료구조) 저의 문제풀이 입니다. 핵심 부분은 Bold해 놓겠습니다! 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 4256번 (트리) 이진 트리는 매우 중요한 기본 자료...

Database : Database란?

Database Database가 존재하기 이전에는 파일 시스템을 이용하여 데이터를 관리하였습니다.(현재도 부분적으로 사용되고 있습니다.) Database는 데이터를 각각의 파일 단위로 저장하며 이러한 일들을 처리하기 위한 독립적인 애플리케이션과 상호 연동이 되어야 합니다. D...

Network : OSI 1계층(물리 계층)

물리 계층(Physical Layer) 물리계층은 OSI 참조 모델 하위 Layer 1계층이며, 통신하는 네트워크 장비로 데이터를 전기 신호로 출력하는 일과 통신하는 네트워크 장비 사이의 물리적 링크 연결과 링크 활성화 및 비활성화를 담당합니다. 컴퓨터는 전기로 데이터를 정의하...

Network : Socket

소켓(Socket) 소켓(Socket)은 사전적인 의미로는 구멍, 연결, 콘센트등을 의미합니다. 이와 마찬가지로 네트워크에서의 소켓을 간단히 말해보자면, 프로세스가 네트워크를 통해서 데이터를 주고받으려면 반드시 열어야 하는 출입문 같은 것이라고 할 수 있습니다. 호스트(Host...

Network : TCP / UDP

TCP와 UDP TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)는 전송 계층(Transport layer)에서 사용되는 프로토콜 입니다. TCP와 UDP는 패킷을 한 컴퓨터에서 다른 컴퓨터로 전달해주는 IP 프로토...

PHP : PHP 간단 정리

PHP 간단 정리 저는 원래 주로 자바를 사용하였기 때문에 PHP의 기본을 따로 정리하지는 않고, 자바와의 다른 점(주의할 점)만 간단히 정리하겠습니다. (공통 되거나 제가 아는 부분은 생략할 수도 있습니다.) 자료형 $x와 PHP 함수의 비교 E...

Operating System : Context Switching

Context Switching 운영 체제를 공부하다보면, Context Switching이라는 단어가 많이 나오게 됩니다. 실제로 운영체제가 작동하는 중에는 정말 많은 Context Switching이 발생하기 때문에 이 Context Switching에 대해 제대로 알아보겠습...

PHP : PHP란?

PHP PHP의 주된 용도는 웹 사이트 구축입니다. 보통 PHP 프로그램은 개인적 용도로 데스크톱 컴퓨터에서 실행되기보다는 다수의 사용자가 접근할 수 있는 웹 서버에서 실행됩니다. PHP 엔진은 프로그램을 작동할 때 오로지 PHP 시작 태그와 종료 태그 안에 있는 프로그램 부분...

BaekJoon : 1005번(ACM Craft)

Java : BaekJoon Topological Sorting BaekJoon Topological Sorting(위상 정렬) 저의 문제풀이 입니다. 핵심 부분은 Bold해 놓겠습니다! 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 1005번(ACM Craft) ...

Java : GC(Garbage Collection)

GC(Garbage Collection) GC(Garbage Collection)은 메모리 관리 기법 중 하나로 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 기능입니다. 즉, 동적 할당된 메모리 영역 가운데 어떤 변수도 가리키지 않는 메모리 영역...

Spring : Maven Project MVC 기본적인 틀 만들기

Maven Project MVC 기본적인 틀 만들기 boostcourse 강의를 듣고 혼자 실습하다가.. 틀 만드는 것 부터 너무 복잡해서 정리를 해놔야겠단 생각에 포스팅합니다..!! 프로젝트 만들기 File -> New -> Maven Project ...

Spring : ResponseEntity를 사용해야 하는 이유

ResponseEntity를 사용해야 하는 이유 우리는 왜 Restful API를 만드는 것일까요? Restful API를 만드는 가장 큰 이유는 Client Side를 정형화된 플랫폼이 아닌 모바일, PC, 어플리케이션 등 플랫폼에 제약을 두지 않는 것을 목표로 했기 때문입니다...

BaekJoon : 1655번 (가운데를 말해요)

Java : BaekJoon DataStructure BaekJoon DataStructure(자료구조) 저의 문제풀이 입니다. 핵심 부분은 Bold해 놓겠습니다! 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 1655번 (가운데를 말해요) 수빈이는 동생에게 “가운...

Operating System : Blocking vs Non-Blocking / Sync vs Async

Blocking vs Non-Blocking / Sync vs Async 동기(Synchronous), 비동기(Asynchronous) 그리고 블로킹(Blocking), 논블로킹(Non-Blocking)은 운영체제를 배울 때 많이 나오기도 하고 프로그램을 개발할 때 중요한 개념 ...

Spring : 유효성 검사(Validation) 방법 및 Custom Annotation

유효성 검사(Validation) 방법 Validation이란 어떤 데이터의 값이 유효한지, 타당한지 확인하는 것을 의미합니다. 예를 들어, 이메일 주소 양식은 admin@example.com인데, 회원 가입을 할 때 이메일 양식이 일치하지 않으면 유효하지 않은 이메일이므로 회원...

Spring : Jackson Annotation 사용법

Jackson Annotation 사용법 jackson은 자바진영 Json 라이브러리로 잘 알려져 있지만 Json 뿐만 아니라 XML, YAML, CSV 등 다양한 형식의 데이타를 지원하는 data-processing 라이브러리입니다. 스트림 방식이므로 속도가 빠르며 유연하며, ...

Spring : MapStruct의 사용법 및 ModelMapper와의 비교

MapStruct의 사용법 및 ModelMapper와의 비교 Controller, Service, Repository 등 레이어 간 데이터를 주고받을 때나 비즈니스 로직에서 하나의 객체를 타입이 다른 객체로 형(Type) 변환하거나 여러 객체를 다른 객체로 합치는 일은 매우 빈번...

Spring : Lombok의 사용법 및 주의점

Lombok의 사용법 및 주의점 Lombok은 Java 기반 애플리케이션에서 VO,DTO,Entity 등을 보다 쉽게 작성하기 위해 사용되는 라이브러리입니다. Lombok은 Getter,Setter,ToString 등을 어노테이션을 이용하여 만들 수 있기 때문에 가독성이 좋습니다...

Spring : pluginManagement와 plugins의 차이와 주의할 점

pluginManagement와 plugins의 차이와 주의할 점 MapStruct에 관한 Maven 의존성 설정 후, 테스트하려는데 오류가 계속 나서 의존성 설정에 관한 구글링을 했지만 해결되지 않았습니다.. ㅠㅠ 그러다 혹시나 해서 pom.xml파일의 plugins 부분을 살...

Spring : Entity, VO, DTO의 차이

Entity, VO, DTO의 차이 Entity, VO, DTO 클래스는 사람마다 사용방법이 조금씩 다릅니다. 대부분은 VO(Value Object)와 DTO(Data Transfer Object)를 사용방법이 같다고 생각할 것입니다. 실제로도 비슷하며, 이를 정확히 구분 지어서...

Spring : 생성자 주입을 사용해야 하는 이유

생성자 주입을 사용해야 하는 이유 @Autowired 를 사용하는 필드 주입이나 수정자 주입 방법보다 생성자 주입을 사용해야 하는 이유에 대해 알아보겠습니다. DI(Dependency Injection) 방법 등록된 빈을 사용하기 위한 스프링 프레임워크의 DI(Dependen...

BaekJoon : 1918번 (후위 표기식)

Java : BaekJoon DataStructure BaekJoon DataStructure(자료구조) 저의 문제풀이 입니다. 핵심 부분은 Bold해 놓겠습니다! 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 1918 수식은 일반적으로 3가지 표기법으로 표현할 수...

Spring : Spring Security에서 DB를 이용한 로그인 및 회원가입

Spring Security에서 DB를 이용한 로그인 및 회원가입 Spring Security를 이용한 로그인 및 로그아웃 포스트에서는 DB를 이용하지 않았기 때문에 Spring Security를 DB를 이용해 로그인 및 회원가입을 해보겠습니다. 그리고 로그인 후 사용자 정보를...

BaekJoon : 1865번 (웜홀)

Java : BaekJoon Bellman Ford BaekJoon Bellman Ford(벨만 포드) 저의 문제풀이 입니다. 핵심 부분은 Bold해 놓겠습니다! 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 1865 때는 2020년, 백준이는 월드나라의 한 국민이...

Spring : Spring Security를 이용한 로그인 및 로그아웃

Spring Security를 이용한 로그인 및 로그아웃 Spring Security 포스트에서 Spring Security 설정을 해봤기 때문에 이어서, Spring Security를 이용한 로그인 및 로그아웃에 대해 알아보려고 합니다. PasswordEncoder 테스트하기...

BaekJoon : 1043번 (거짓말)

Java : BaekJoon Union Find BaekJoon Union Find(합집합 찿기) 저의 문제풀이 입니다. 핵심 부분은 Bold해 놓겠습니다! 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 1043 지민이는 파티에 가서 이야기 하는 것을 좋아한다. 파...

BaekJoon : 17070(파이프 옮기기 1)

Java : BaekJoon Dynamic Programming BaekJoon Dynamic Programming(동적 프로그래밍) 저의 문제풀이 입니다. 핵심 부분은 Bold해 놓겠습니다! 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 17070 유현이가 새 집...

Spring : Spring Security

Spring Security 웹 어플리케이션을 사용하다 보면 한번쯤은 로그인, 로그아웃을 하게 됩니다. 이렇게 아이디와 암호를 이용해서 로그인 하는 과정을 인증(Authentication)이라고 합니다. 네이버 카페를 사용해보면 로그인을 했다 하더라도, 특정 카페는 회원가입을 하...

BaekJoon : 12865번(평범한 배낭)

Java : BaekJoon Dynamic Programming BaekJoon Dynamic Programming(동적 프로그래밍) 저의 문제풀이 입니다. 핵심 부분은 Bold해 놓겠습니다! 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 12865 이 문제는 아주...

Spring : Cookie / Session

쿠키(Cookie)와 세션(Session) HTTP프로토콜은 상태 유지가 안되는 프로토콜입니다. 이전에 무엇을 했고, 지금 무엇을 했는지에 대한 정보를 갖고 있지 않습니다. 웹 브라우저(클라이언트)의 요청에 대한 응답을 하고 나면 해당 클라이언트와의 연결을 지속하지 않습니다. 이...

BaekJoon : 16953번(A -> B)

Java : BaekJoon Navigation BaekJoon Navigation(탐색) 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 16953 정수 A를 B로 바꾸려고 한다. 가능한 연산은 다음과 같은 두 가지이다. 2를 곱한다....

BaekJoon : 12851(숨바꼭질 2)

Java : BaekJoon Navigation BaekJoon Navigation(탐색) 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 12851 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 ...

Spring : Given-When-Then Pattern

Given-When-Then Pattern Given When Then은 테스트 코드를 작성할 때, 테스트코드의 라이프사이클을 정해놓은 영역을 의미합니다. 즉, Given-When-Then Pattern은 테스트할 준비를 하고(Given), 테스트할 대상을 실행하고(When), ...

BaekJoon : 1629번(곱셈)

Java : BaekJoon Divide And Conquer BaekJoon Divide And Conquer(분할 정복) 저의 문제풀이 입니다. 핵심 부분은 Bold해 놓겠습니다! 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 1629 자연수 A를 B번 곱한 수...

BaekJoon : 14500(테트로미노)

Java : BaekJoon Brute Force BaekJoon Brute Force(브루트포스) 저의 문제풀이 입니다. 핵심 부분은 Bold해 놓겠습니다! 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 14500 폴리오미노란 크기가 1×1인 정사각형을 여러 개 ...

BaekJoon : 17298번(오큰수)

Java : BaekJoon DataStructure BaekJoon DataStructure(자료구조) 저의 문제풀이 입니다. 핵심 부분은 Bold해 놓겠습니다! 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 17298 크기가 N인 수열 A = A1, A2, …,...

BaekJoon : 1949번(우수 마을)

Java : BaekJoon Tree Dynamic Programming BaekJoon Tree Dynamic Programming(동적 프로그래밍) 저의 문제풀이 입니다. 핵심 부분은 Bold해 놓겠습니다! 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 1949 ...

BaekJoon : 1753번(최단 경로)

Java : BaekJoon Dijkstra BaekJoon Dijkstra(다익스트라) 저의 문제풀이 입니다. 핵심 부분은 Bold해 놓겠습니다! 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 1753 방향그래프가 주어지면 주어진 시작점에서 다른 모든 정점으로의 ...

Java : 정규 표현식(Regular Expression(Pattern, Matcher))

Regular Expression 정규표현식(Regular Expression)이란 컴퓨터 과학의 정규언어로부터 유래한 것으로 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 쓰이는 형식언어 입니다. 개발을 하다보면 전화번호, 주민등록번호, 이메일등과 같이 정해져있는 형식이 있...

Programmers : 2021 Kakao Blind 1번(신규 아이디 추천)

Java : Programmers Regular Expression Programmers Regular Expression(정규표현식) 저의 문제풀이 입니다. 핵심 부분은 Bold해 놓겠습니다! 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 신규 아이디 추천 카카오에...

Java : Collection

Collection Collection이란 어떠한 자료구조(Queue, Stack 등등…)를 구현한 클래스를 의미합니다. JCF(Java Collections Framework)는 컬렉션과 이를 구현하는 클래스를 정의하는 Interface(공통된 메소드를 모아놓은)를 제공...

BaekJoon : 4949번(균형잡힌 세상)

Java : BaekJoon DataStructure BaekJoon DataStructure(자료구조) 저의 문제풀이 입니다. 핵심 부분은 Bold해 놓겠습니다! 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 4949 세계는 균형이 잘 잡혀있어야 한다. 양과 음,...

Spring : Properties / Environment / Profile

Properties / Environment / Profile Properties Properties파일은 보통 값을 유동적으로 사용하기 위해 많이 사용합니다. 파일 형식은 key=value형식으로 이루어져 있습니다. 만약 파일내에 키값이 중복되면 마지막에 읽혀진 것이 출력됩니...

BaekJoon : 21279번(광부 호석)

Java : BaekJoon Brute Force BaekJoon Brute Force(브루트포스) 저의 문제풀이 입니다. 핵심 부분은 Bold해 놓겠습니다! 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 21279 N 개의 광물이 있다. i 번째 광물은 (Xi ,...

BaekJoon : 3584번(가장 가까운 공통 조상)

Java : BaekJoon Lowest Common Ancestor (LCA) BaekJoon Lowest Common Ancestor (LCA) 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 3584 루트가 있는 트리(rooted tree)...

Java : String / StringBuffer / StringBuilder

String / StringBuffer / StringBuilde Java 에서 문자열을 다루를 대표적인 클래스로 String , StringBuffer, StringBuilder 가 있습니다. 연산이 많지 않을때는 위에 나열된 어떤 클래스를 사용하더라도 이슈가 발생할 가능성은...

BaekJoon : 9663(N-Queen)

Java : BaekJoon Brute Force BaekJoon Brute Force(브루트포스) 저의 문제풀이 입니다. 핵심 부분은 Bold해 놓겠습니다! 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 9663 N-Queen 문제는 크기가 N × N인 체스판 위...

Spring : Swagger

Swagger ` Spring MVC에서 Swagger를 이용하여 Web API`를 명세화를 할 수 있습니다. Swagger 설정하기 Group Id : org.apache.maven.archetypes, Artifact Id : maven-archetype-webapp 으로...

BaekJoon : 14391(종이 조각)

Java : BaekJoon Brute Force BaekJoon Brute Force(브루트포스) 저의 문제풀이 입니다. 핵심 부분은 Bold해 놓겠습니다! 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 14391 영선이는 숫자가 쓰여 있는 직사각형 종이를 가지고...

BaekJoon : 9251번(LCS)

Java : BaekJoon Dynamic Programming BaekJoon Dynamic Programming(동적 프로그래밍) 저의 문제풀이 입니다. 핵심 부분은 Bold해 놓겠습니다! 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 9251 LCS(Longe...

Web : Swagger

스웨거(Swagger) 스웨거는 Web API 문서화를 위한 도구입니다. 스웨거 홈페이지(https://swagger.io)에서는 스웨거를 OAS(Open API Specification)이라고 소개하고 있습니다. 말그대로 API들이 가지는 명세(Spec)을 관리하기 위한 프로젝...

Spring : MockMvc

MockMVC를 이용한 WebAPI 테스트 원래는 Web API를 작성하고 테스트를 수행하기 위해서 스프링 애플리케이션을 실행하고 개발자가 직접 테스트를 수행했습니다. Web API를 많이 작성하다보면 웹 어플리케이션을 실행하고 브라우저를 열어서 테스트할 URI를 입력하고 다시 ...

Java : JVM(Java Virtual Machine)

JVM (Java Virtual Machine) JVM은 Java Virtual Machine 즉, 자바 가상 머신의 약자를 따서 줄여 부르는 용어입니다. (가상머신이란 프로그램을 실행하기 위해 물리적 머신과 유사한 머신을 소프트웨어로 구현한 것입니다.) JVM의 역할은 자바 어...

BaekJoon : 21277번(짠돌이 호석)

Java : BaekJoon Brute Force BaekJoon Brute Force(브루트포스) 저의 문제풀이 입니다. 핵심 부분은 Bold해 놓겠습니다! 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 21277 DIY(Do It Yourself)는 호석이가 제...

BaekJoon : 9205번(맥주 마시면서 걸어가기)

Java : BaekJoon Floyd Warshall BaekJoon Floyd Warshall(플로이드 와샬) 저의 문제풀이 입니다. 핵심 부분은 Bold해 놓겠습니다! 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 9205 송도에 사는 상근이와 친구들은 송도에...

Spring : RestController

@RestController Spring 4 에서 Rest API 또는 Web API를 개발하기 위해 등장한 어노테이션입니다. 이전 버전의 @Controller와 @ResponseBody를 포함합니다. MessageConvertor 외부에서 전달받은 JSON 메서드...

BaekJoon : 1010(다리 놓기)

Java : BaekJoon Dynamic Programming BaekJoon Dynamic Programming(동적 프로그래밍) 저의 문제풀이 입니다. 핵심 부분은 Bold해 놓겠습니다! 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 1010 재원이는 한 도시...

Web : Web API란?

Web API 웹 서버 또는 웹 브라우저를 위한 애플리케이션 프로그래밍 인터페이스입니다. HTTP 서비스이고 다양한 클라이언트에서 접근이 가능하도록 설계되어있습니다. Web 환경을 통해 제공되는 데이터 CRUD인터페이스를 제공하며, HTTP 표준 접근 방식을 이용하며 플랫폼 환...

Web : Rest API란?

Rest API HTTP 프로토콜을 이용하여 브라우저는 요청을 보내고, 그 결과를 받아 랜더링하여 화면에 보여지게 됩니다. HTTP의 이런 특징을 브라우저가 아닌 다른 클라이언트도 사용할 수 없을까? 라는 고민을 개발자들이 하게 되었습니다. 즉, 안드로이드 앱, 모바일 앱, Ja...

BaekJoon : 21278(호석이 두 마리 치킨)

Java : BaekJoon Floyd Warshall BaekJoon Floyd Warshall(플로이드 와샬) 저의 문제풀이 입니다. 핵심 부분은 Bold해 놓겠습니다! 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 21278 컴공 출신은 치킨집을 하게 되어있다...

BaekJoon : 14501(퇴사)

Java : BaekJoon Dynamic Programming BaekJoon Dynamic Programming(동적 프로그래밍) 저의 문제풀이 입니다. 핵심 부분은 Bold해 놓겠습니다! 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 14501 상담원으로 일하...

BaekJoon : 10844(쉬운 계단 수)

Java : BaekJoon Dynamic Programming BaekJoon Dynamic Programming(동적 프로그래밍) 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 10844 45656이란 수를 보자. 이 수는 인접한 모든 ...

BaekJoon : 2156번(포도주 시식)

Java : BaekJoon Dynamic Programming BaekJoon Dynamic Programming(동적 프로그래밍) 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 2156 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이...

BaekJoon : 11053(가장 긴 증가하는 부분 수열)

Java : BaekJoon Dynamic Programming BaekJoon Dynamic Programming(동적 프로그래밍) 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 11053 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수...

BaekJoon : 2579번(계단 오르기)

Java : BaekJoon Dynamic Programming BaekJoon Dynamic Programming(동적 프로그래밍) 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 2579 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기...

Database : 데이터베이스

Database CS 공부를 하면서 정리해둔 것입니다. 핵심 키워드는 Bold 해놓겠습니다! 데이터베이스 데이터베이스를 사용하는 이유 데이터베이스가 존재하기 이전에는 파일 시스템을 이용하여 데이터를 관리하였습니다. (현재도 부분적으로 사용되고 있습니다.) 데이터를 각각의 파...

BaekJoon : 1463번(1로 만들기)

Java : BaekJoon Dynamic Programming BaekJoon Dynamic Programming(동적 프로그래밍) 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 1463 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가...

BaekJoon : 7576번(토마토)

Java : BaekJoon Navigation BaekJoon Navigation(탐색) 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 7576 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이...

BaekJoon : 2667번(단지번호붙이기)

Java : BaekJoon Navigation BaekJoon Navigation(탐색) 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 2667 <그림 1>과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 ...

BaekJoon : 2606(바이러스)

Java : BaekJoon Navigation BaekJoon Navigation(탐색) 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 2606 신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 ...

BaekJoon : 2178(미로 탐색)

Java : BaekJoon Navigation BaekJoon Navigation(탐색) 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 2178 N×M크기의 배열로 표현되는 미로가 있다. 1 0 ...

BaekJoon : 1260번(DFS와 BFS)

Java : BaekJoon Navigation BaekJoon Navigation(탐색) 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 1260 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문...

BaekJoon : 4796번(캠핑)

Java : BaekJoon Greedy BaekJoon Greedy 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 4796 등산가 김강산은 가족들과 함께 캠핑을 떠났다. 하지만, 캠핑장에는 다음과 같은 경고문이 쓰여 있었다. 캠핑장은 연속...

BaekJoon : 1339번(단어 수학)

Java : BaekJoon Greedy BaekJoon Greedy 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 1339 민식이는 수학학원에서 단어 수학 문제를 푸는 숙제를 받았다. 단어 수학 문제는 N개의 단어로 이루어져 있으며, 각 ...

BaekJoon : 2839번(설탕 배달)

Java : BaekJoon Greedy BaekJoon Greedy 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 2839 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다...

BaekJoon : 2217번(로프)

Java : BaekJoon Greedy BaekJoon Greedy 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 2217 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 ...

BaekJoon : 1946번(신입사원)

Java : BaekJoon Greedy BaekJoon Greedy 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 1946 언제나 최고만을 지향하는 굴지의 대기업 진영 주식회사가 신규 사원 채용을 실시한다. 인재 선발 시험은 1차 서류심사와...

BaekJoon : 1931번(회의실 배정)

Java : BaekJoon Greedy BaekJoon Greedy 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 1931 한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대...

BaekJoon : 1541번(잃어버린 괄호)

Java : BaekJoon Greedy BaekJoon Greedy 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 1541 세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다. 그리고 ...

BaekJoon : 11399번(ATM)

Java : BaekJoon Greedy BaekJoon Greedy 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 11399 인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번...

BaekJoon : 11047번(동전 0)

Java : BaekJoon Greedy BaekJoon Greedy 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 11047 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다. 동전을 적절히 사용해서 그 가치...

Operating System : 운영체제

Operating System 프로세스와 스레드 프로세스(Process) 프로세스는 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU 의 할당을 받을 수 있는 것을 말합니다. 운영체제로부터 주소 공간, 파일, 메모리 등을 할당받으며 이것들을 총칭하여 프로세스라고 합...

Java : Comparable / Comparator

Comparable / Comparator 자바와 같이 객체 지향 언어를 사용하여 프로그래밍을 하다보면 객체들을 정렬해야하는 경우가 생깁니다. 예를 들면, 온라인 게임 서비스에서 게이머들을 높은 점수 순으로 보여주는 게이머 랭킹 페이지를 생각해볼 수 있겠습니다. 정렬 대상 클래...

Spring : MVC 예제(Controller작성)

MVC 예제(Controller작성) Controller작성 1/3 웹 브라우저에서 http://localhost:8080/mvcexam/plusform 이라고 요청을 보 내면 서버는 웹 브라우저에게 2개의 값을 입력받을 수 있는 입력 창과 버튼이 있는 화면을 출력합니다....

Spring : 레이어드 아키텍처(Layered Architecture)

레이어드 아키텍처(Layered Architecture) Controller에서 중복되는 부분을 처리하려면? url은 다르지만 url에 해당하는 웹페이지를 보여주기 위해서 실행되는 부분 중에 중복이 되는 부분이 있을 수 있습니다. 예를 들어 쇼핑몰에서 게시판에서도 회원 정보를 ...

Codeup : 기초 100제(1084 ~ 1099)

Java : codeup 기초 100제 (1084~1099) codeup 기초 100제 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 1084 빨강(red), 초록(green), 파랑(blue) 빛을 섞어 여러 가지 빛의 색을 만들어 내려고 한...

Network : 네트워크

네트워크 CS 공부를 하면서 정리해둔 것입니다. 핵심 키워드는 Bold 해놓겠습니다! HTTP의 GET과 POST GET과 POST 둘 다 HTTP 프로토콜을 이용해서 서버에 무엇인가를 요청할 때 사용하는 방식입니다. 하지만 둘의 특징을 제대로 이해하여 기술의 목적에 맞게 알...

Spring : DispatcherServlet

DispatcherServlet 프론트 컨트롤러 (Front Controller) 클라이언트의 모든 요청을 받은 후 이를 처리할 핸들러에게 넘기고 핸들러가 처리한 결과를 받아 사용자에게 응답 결과를 보여줍니다. DispathcerServlet은 여러 컴포넌트를 이용해...

Spring : Spring JDBC 예제

Spring JDBC 예제 Spring JDBC를 예제를 통해 알아보겠습니다! Spring JDBC를 이용한 DAO작성 예제를 위한 다이어그램 먼저 Spring 컨테이너인 ApplicationContext는 설정 파일로 ApplicationConfig라는 클래스를 읽...

Codeup : 기초 100제(1053 ~ 1083)

Java : codeup 기초 100제 (1053~1083) codeup 기초 100제 저의 문제풀이 입니다. 기존의 문제를 조금만 수정하면 되는 문제들은 생략하였습니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 1053 1(true, 참) 또는 0(false,...

Spring : JDBC

Spring JDBC JDBC 프로그래밍을 보면 반복되는 개발 요소가 있습니다.(connect, statement, resultset 등..) 이러한 반복적인 요소는 개발자를 지루하게 만듭니다. 그래서 Spring JDBC는 개발하기 지루한 JDBC의 모든 저수준 세부사항을 스프...

Spring : 로직 단위테스트

로직 단위테스트 빈들 간에는 다양한 관계를 맺고 있는 경우가 많습니다. 하나의 빈을 사용한다는 것은 관계된 빈들도 함께 동작한다는 것을 의미합니다. 하나의 빈을 테스트할 때 관련된 빈들이 모두 잘 동작하는지 테스트하는 것을 통합 테스트(integration test)라 합니다...

Spring : JUnit

JUnit 프로그래밍 언어마다 테스트를 위한 프레임워크가 존재합니다. 이러한 도구들을 보통 xUnit이라고 말합니다. 자바언어의 경우는 JUnit이라고 말합니다. 각 언어마다 사용되는 xUnit은 다음과 같습니다. JUnit 사용하기 JUnit을 사용하려면 JUnit 라...

DataStructure : 자료구조

자료구조 CS 공부를 하면서 정리해둔 것입니다. 핵심 키워드는 Bold 해놓겠습니다! Array 가장 기본적인 자료구조인 Array 자료구조는 논리적 저장 순서와 물리적 저장 순서가 일치합니다. 따라서 인덱스(index)로 해당 원소(element)에 접근할 수 있습니다. 그...

Spring : IoC(Inversion of Control) 예제

IoC(Inversion of Control) 예제 Maven으로 Java프로젝트 만들기 pom.xml 파일에 JDK를 사용하기 위한 플러그인 설정을 추가합니다. <project xmlns="http://maven.apache.org/POM/4.0.0"...

Spring : DI(Dependency Injection) 예제

DI(Dependency Injection) 예제 Car와 Engine이라는 클래스 2개를 생성합니다. Car package kr.or.connect.diexam01; public class Car { private Engine v8; public Car() { ...

Web : JSTL(JSP Standard Tag Library)

JSTL(JSP Standard Tag Library) JSTL(JSP Standard Tag Library)은 JSP 페이지에서 조건문 처리, 반복문 처리 등을 html tag형태로 작성할 수 있게 도와줍니다. JSP는 스크립트릿의 자바코드와 HTML태그가 섞여있어서 편의성은...

Codeup : 기초 100제(1041 ~ 1049)

Java : codeup 기초 100제 (1041~1049) codeup 기초 100제 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 1041 영문자 1개를 입력받아 그 다음 문자를 출력해보자. 영문자 ‘A’의 다음 문자는 ‘B’이고, 영문자...

Web : Scope

Scope 웹 프로그래밍을 할 때, 객체들의 범위가 어디서부터 어떻게 되는 지 나타내 주는 것이 Scope 입니다. 4가지의 Scope Application : 웹 어플리케이션이 시작되고 종료될 때까지 변수가 유지되는 경우 사용 웹 어플리케이션은 ...

Web : Expression Language

표현 언어(Expression Language)란? 표현 언어(Expression Language)는 값을 표현하는 데 사용되는 스크립트 언어로서 JSP의 기본 문법을 보완하는 역할을 합니다. 자바, 백엔드를 다루지 않는 개발자가 JSP에 자바 코드가 나오게 되면 혼란스...

Codeup : 기초 100제(1031 ~ 1040)

Java : codeup 기초 100제 (1031~1040) codeup 기초 100제 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 1031 10진수를 입력받아 8진수(octal)로 출력해보자. 10진수 1개가 입력된다. 단, 입력되는 정수...

Web : JSP

JSP란? JSP는 자체로 동작하는 게 아니라 모든 JSP는 Servlet으로 바뀌어서 동작합니다. HTML코드 안에서 JSP를 사용하는 이유는 HTML안에서 자바코드를 이용한 프로그램을 실행시켜줄 수 있기 때문입니다. <!-- sum10.jsp파일 -->...

Codeup : 기초 100제(1021 ~ 1030)

Java : codeup 기초 100제 (1021~1030) codeup 기초 100제 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 1021 1개의 단어를 입력받아 그대로 출력해보자. 한 단어가 입력된다.(단, 단어의 길이는 50자 이하이다...

DataStructure : Big-O 표기법

Big-O 표기법 알고리즘의 성능을 수학적으로 표현해주는 표기법입니다. Big-O 표기법으로 알고리즘의 시간과 공간복잡도를 표현할 수 있습니다. Big-O 표기법은 알고리즘의 실제 러닝타임을 표시하기보다 데이터나 사용자의 증가율에 따른 알고리즘의 성능을 예측하는 게 목표이기 때문...

Web : Servlet

자바 웹 어플리케이션(Java Web Application) WAS에 설치(deploy)되어 동작하는 어플리케이션입니다. 자바 웹 어플리케이션에는 HTML, CSS, 이미지, 자바로 작성된 클래스(Servlet도 포함됨, package, 인터페이스 등), 각종 설정 파일 등이 ...

Web : Request/Response

Request/Response 웹 브라우저에 URL을 입력하고 Enter를 입력하면 도메인과 포트번호를 이용해서 서버에 접속합니다. 그리고 나서 path정보, 클라이언트의IP, 클라이언트의 다양한 정보를 포함한 요청 정보를 서버에게 전송하게 됩니다. 요청과 응답 ...

Java : BigDecimal

BigDecimal Java언어에서 숫자를 정밀하게 저장하고 표현할 수 있는 유일한 방법입니다. 소수점을 저장할 수 있는 가장 크기가 큰 타입인 double은 소수점의 정밀도에 있어 한계가 있어 값이 유실될 수 있습니다. Java언어에서 돈과 소수점을 다룬다면 Big...

CS : 개발 상식

개발 상식 CS 공부를 하면서 정리해둔 것입니다. 핵심 키워드는 Bold 해놓겠습니다! 객체 지향 프로그래밍 OOP(Object Oriented Programming) OOP는 현실 세계의 사물들을 객체라고보고 그 객체의 관점에서 프로그래밍 하는 것을 의미합니다. 특징 ...

Java : block 변수/member field, Wrapper Class, boxing/unboxing

block 변수 / member field block 변수(메소드와 같이 블락안에 있는 변수)와 member field의 이름이 같으면 block 변수가 우선순위가 높다. Wrapper Class 참조타입을 기본타입으로 바꿀때 사용하는 클래스 기본타입의 앞글자를 ...

Java : 부동소수점

부동소수점 codeup 1023번 문제를 풀다가 실수 연산 중 부동소수점 때문에 한참을 고생해서 포스팅합니다! 부동 소수점은 가수부와 지수부로 나누어서 저장을 합니다. 즉 (a)*2^b꼴로 저장을 하는데요. 이 때, a는 1보다 크거나 같고 2보다 작은 실수입니다. 즉 (1...

Cmder : Cmder 시작 경로 바꾸기

Cmder 시작 경로 바꾸기 cmder을 사용하여 Git을 사용하는데 시작 위치가 cmder 설치위치여서 실행할 때 마다 cd로 위치바꿔주는게 여간 귀찮은게 아니어서 시작경로 바꾸는 방법을 찾아보았습니다! 시작을 눌러 cmder을 검색합니다. cmder - 바로가기파일...

Web : WAS(Web Application Server)

WAS (Web Application Server) WAS를 이해하기 위해서 클라이언트/서버 구조 부터 살펴보겠습니다! 클라이언트/서버 구조 클라이언트(Client)는 서비스(Service)를 제공하는 서버(Server)에게 정보를 요청하여 응답 받은 결과를 사용합니다. ...

Web : HTTP(Hypertext Transfer Protocol)

HTTP (Hypertext Transfer Protocol)란? 팀 버너스리(Tim Berners-Lee)와 그가 속한 팀은 CERN에서 HTML뿐만 아니라 웹 브라우저 및 웹 브라우저 관련 기술과 HTTP를 발명하였습니다. 문서화된 최초의 HTTP버전은 HTTP v0...

Web : Browser

브라우저 브라우저는 월드와이드웹(WWW)에서 정보를 검색, 표현하고 탐색하기 위한 소프트웨어입니다. 인터넷에서 특정 정보로 이동할 수 있는 주소 입력창이 있고 서버와 HTTP로 정보를 주고 받을 수 있는 네트워크 모듈도 포함하고 있습니다. 그리고 서버에서 받은 문서(HTML, ...

Java : Scanner.useDelimeter

Scanner.useDelimeter Scanner의 method로 Scanner의 구분 패턴을 지정된 문자열로 설정합니다. 문자를 입력 받을 때 특정한 문자열로 구분지어 분리할 때 유용하게 사용할 수 있습니다. useDelimeter를 더 이상 사용하고 싶지 않을 경우 res...

Codeup : 기초 100제(1011 ~ 1020)

Java : codeup 기초 100제 (1011~1020) codeup 기초 100제 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 1011 문자형(char)으로 변수를 하나 선언하고, 변수에 문자를 저장한 후 변수에 저장되어 있는 문자를 그...

Java : java.sql.Date와 java.util.Date

java.sql.Date와 java.util.Date 미니 프로젝트를 진행하던 중, JDBC를 이용해 데이터베이스에 정보를 넣어줄 때 java.sql.Date 와 java.util.Date 간의 형 변환 때문에 살짝 헤매서 포스팅 하려고 합니다! 개요 파라미터로 객체를 받아와...

Java : StringTokenizer

StringTokenizer 문자열을 우리가 지정한 구분자로 문자열을 쪼개주는 클래스입니다. 그렇게 쪼개어진 문자열을 토큰(token)이라고 부릅니다. 사용하기 위해서는 java.util.StringTokenizer를 import 해야합니다. 생성자(Construct...

Java : Scanner와 BufferedReader

Scanner와 BufferedReader/Writer Scanner 공란과 줄바꿈을 모두 입력값의 경계로 인식하기 때문에 쉽게 데이터를 입력받을 수 있도록 해줍니다. 데이터 타입이 입력받는 시점에서 결정되므로 별도의 Casting이 필요하지 않습니다. import...

Java : JDBC time zone Error

JDBC time zone 관련 에러 JDBC 실습 진행 중 에러가 발생했습니다..ㅠ The server time zone value '���ѹα� ǥ�ؽ�' is unrecognized or represents more than one time zone. You must c...

Database : MySQL 한글 깨짐 오류

MySQL 한글 깨짐 오류 JDBC 실습 중에 DB에 INSERT 했더니 한글이 깨진 현상이 발생해 시간을 꽤 잡아먹고 해결했는데.. 다른 분들은 금방 해결하길 바라며.. 포스팅합니다.. ㅠ 이 포스트는 MySQL에서 한글이 깨지거나 한글 INSERT가 안될 때 해결할 수 있는...

Codeup : 기초 100제(1001 ~ 1010)

Java : codeup 기초 100제 (1001 ~ 1010) codeup 기초 100제 저의 문제풀이 입니다. 혹시 더 좋은 방법 알려주신다면 정말 감사하겠습니다! 1001 printf()를 이용해 다음 단어를 출력하시오. Hello 내코드 class Main {...

Java : try-with-resources를 통한 자원해제

try-with-resources를 통한 자원해제 기존의 try catch 방법에서는 자원해제를 위해 finally를 사용했지만, try-wit-resources는 try에 자원을 넣으면 try 구문이 끝날 때 자동으로 자원해제 해주기 때문에 실수를 방지할 수 있습...

Java : Maven이란?

Maven이란? Maven은 지금까지 애플리케이션을 개발하기 위해 반복적으로 진행해왔던 작업들을 지원하기 위하여 등장한 도구입니다. Maven을 사용하면 빌드(Build), 패키징, 문서화, 테스트와 테스트 리포팅, git, 의존성관리, svn등과...

Java : JDBC(Java Database Connectivity)

JDBC (Java Database Connectivity) 자바를 이용한 데이터베이스 접속과 SQL 문장의 실행, 그리고 실행 결과로 얻어진 데이터의 핸들링을 제공하는 방법과 절차에 관한 규약 자바 프로그램 내에서 SQL문을 실행하기 위한 자바 API SQ...

Database : cmd 명령어

cmd 명령어 (DB) mysql이 붙은 명령어는 mysql로 접속하기 전에 사용할 수 있습니다. 키워드는 대소문자를 구별하지 않습니다. 여러 문장을 한 줄에 연속으로 붙여서 실행가능합니다. 한 줄이 끝나는 것을 semicolon(;) 으로 구별하...

Database : Database란?

데이터베이스 데이터베이스의 기본개념 데이터의 집합 (a Set of Data) 여러 프로그램들의 통합된 정보들을 저장하고 운영할 수 있는 공용 데이터의 집합 효율적으로 저장, 검색, 갱신할 수 있도록 데이터 집합들끼리 연관시키고 조직화되어야 합니다. 데이터베이스...

Database : DML(SELECT)

데이터 조작어 (Data Manipulation Language, DML) 데이터 조작어는 모두 동사로 시작합니다. 시작하는 동사에 따라서 다음과 같은 4가지 조작어가 있습니다. SELECT – 검색 INSERT - 등록 UPD...

Database : DML(INSERT, UPDATE, DELETE)

INSERT 데이터를 입력할 수 있는 DML 입니다. INSERT INTO 테이블명(필드1, 필드2, 필드3, 필드4, … ) VALUES ( 필드1의 값, 필드2의 값, 필드3의 값, 필드4의 값, … ) INSERT INTO 테이블명 ...

Database : DDL(Data Definition Language)

DDL (Data Definition Language) MySQL 데이터 타입 테이블 생성 create table 테이블명( 필드명1 타입 [NULL | NOT NULL][DEFAULT ][AUTO_INCREMENT], 필드명...

Spring : 개요, 프로젝트 생성, 스프링설정파일

스프링 개요 스프링 프레임워크는 주요기능으로 DI, AOP, MVC, JDBC 등을 제공한다. 스프링 프레임워크에서 등장한 용어가 아니고 프로그래밍에서 이떠한 구조를 만드는 방법들의 하나이다. (앞으로 천천히 알아갈 것이다.) MVC와 ...

Spring : 웹 프로그래밍 설계 모델

웹 프로그래밍 설계 모델 Model1 WAS (Web Application Server)에서 Service(사용자에게 제공할 기능)와 DAO(데이터베이스와 관계되는 것), JSP(사용자에게 실제로 보여줄 코드)를 모듈화 시키지 않고 하나의 파일로 처리 하는 것 장점 :...

Spring : 웹서버(Tomcat), STS(Spring Tool Suit) 설치

스프링 MVC 웹서비스 웹 서버(Tomcat) 다운로드 웹 서버(Tomcat)와 이클립스 연동 HTTP/1.1 을 기존 8080에서 8090으로 바꿔 준다. (기존 서버 포트랑 겹칠 수 있으므로) 웹 서버(Tomcat) 실행 장면 서버를 ...

Spring : 어노테이션을 사용한 스프링 설정

어노테이션을 사용한 스프링 설정 ​ 설정파일을 자바코드의 어노테이션을 이용해서 만드는 방법이다. @Configuration ​ java코드를 xml파일과 같은 스프링 설정파일로 작용하게 해주는 어노테이션 @Bean ​ @Configuration을 사용한 클래스의 메소드가 ...

Spring : 프로젝트 전체구조

프로젝트 전체 구조 web.xml DispatcherServlet servlet-context.xml Controller (컨트롤러) View (뷰) Controller와 View 만들어보기 브라우저에서 “/login” ...

Spring : STS를 이용하지 않는 웹 프로젝트

STS를 이용하지 않는 웹 프로젝트 STS를 사용해서 만들었던 구조와 동일하게 직접 폴더와 파일들을 생성해서 웹 프로젝트를 만든다. 편한 STS를 이용하지 않는 이유는 실무에서 작업을 할 때 STS를 쓰지 않는 경우도 있으므로 다양한 환경에 적응하기...

Spring : 생명주기(Life Cycle)

생명주기(Life Cycle) 스프링 컨테이너 생명주기 GenericXmlApplicationContext를 이용한 스프링 컨테이너 초기화 getBean() 을 이용한 빈(Bean)객체 이용 close를 이용한 스피링 컨테이너 종료 빈(Bean)객체 생명주기 ...

Spring : DI, 빈(Bean)의 범위, 의존객체 자동주입/체크

DI(Dependency injection) 의존 주입 어떠한 객체에 의존하지 않고 분리해서 여기저기서 사용하게 할 수 있는것 내장배터리를 사용하는 자동차장난감, 따로 배터리를 사용할 수 있는 로봇 장난감이 있다고 가정 자동차장난감은 배터리...

Python : 모듈, 패키지

모듈 파이썬 코드를 저장하는 기본 단위 파이썬 스크리브 하나를 의미하되 확장자 .py는 배고 파일명으로 부른다. import 자주 사용하는 기능을 표존 모듈로 미리 만들어져 있다. 파이썬 설치 경로에 확장자가 .py 파일이 표준모듈 이다. 대표적으로 수...

Python : 사전, 집합

사전 키와 값의 쌍을 저장하는 대용량의 자료구조이다. 해시 알고리즘을 사용해 일대일로 대응되는 특성이 있어 맵이라고 부르기도한다. 사전을 정의할 때는 {} 괄호 안에 키 : 값 형태로 나열한다. ex) { “boy” : “소년”, “school” :...

Python : 문자열

문자열 첨자 앞에서도 셀수 있고 뒤에서도 셀수 있다. 문자열 변경 파이썬의 문자열은 변경 불가능한 자료형이다. 한번 초기화되면 바꿀 수 없다. 슬라이스 [] 괄호에 범위를 지정하면 부분 문자열을 추출 한다. range 함수 구조와 같다. (be...

Python : 기본적인 규칙, 타입, 입출력

소스의 형식 파이썬은 세미콜론(;)을 사용하지 않는다. 사용해도 무시될뿐 에러처리 되지 않는다. 대문자와 소문자를 구분해서 실행한다. 주석은 #으로 표시 ’#’ 뒤에는 주석으로 처리 여러줄 주석은 지원하지...

Python : 연산자

연산자 산술 연산자 더하기(+), 빼기(-), 곱하기(*), 나누기(/) 연산을 수행한다. 고급 연산자 거듭제곱(**), 정수 나누기(//), 나머지(%) 복합 대입 연산자 대입 연산자는 우변의 값이나 수식을 계산하여 좌변에 대입한다. 우변의 수식...

Python : 파이썬 소개

파이썬 소개 문법이 쉬워 빠르게 학습할 수 있다. 문법이 다른 언어에 비해 쉽다. 개발속도가 빠르다. 파이썬 언어가 속도가 빠른 것은 아니다. 간결하다. 다른 언어와 비교해보았을 ...

Python : 함수

함수 반복되는 코드를 제거할 수 있다. 비슷한 코드를 함수로 만들어 여러번 호출하여 사용 유지보수 핵심 코드가 한 번만 작성이 되어 있어 한 곳만 수정하면 됨 재사용성 ...

Python : 파일 입출력

파일 입출력 프로그램에서 생성한 정보를 영구적으로 저장할 때는 파일에 기록한다. 메모리는 전원이 끊기면 내용을 잊어버리기 때문에 하드디스크에 저장해야한다. open 함수를 사용해 파일을 연다. open 함수는 파일의 입출력을 준비한다. read...

Python : 예외처리

예외 처리 사람은 실수할 수 있고 사람이 만든 프로그램에도 실수를 포함 할 수 있다. 실행 중 예기치 않은 문제가 발생 할 수 있다. 사용자 입력을 받을 경우 입력값을 예상할 수 없다. ex) 점수를 입력하세요 -> 사용자 입력 : 만점, 80...

Python : 조건문, 반복문

조건문 조건문은 조건의 진위 여부에 따라 명령의 실행 여부를 결정하는 제어 문이다. if 문 if 조건 : 명령 if 키워드를 쓰고 조건과 콜론(:)을 찍고 그 다음 줄에 조건이 참일 때 실행할 명령을 작성한다. 들여쓰기 수준이 같으면 여러 명령을 실행 시...

Python : 컬렉션(리스트, 튜플)

컬렉션 여러 개의 값을 모아서 저장하는 데이터 타입 리스트 컬렉션의 대표적인 예는 리스트이다. 자료의 집합 변수는 하나의 값만 저장한다. 리스트는 여러개의 값을 집합으로 저장한다. [] 괄호 안에 요소를 콤마로 구분하여 ...

Python : 컬렉션 관리

컬렉션 관리 컬렉션 관리 함수 enumerate zip 람다 함수 filter map 컬렉션의 사본 enumerate 순서 값과 요소값 둘을 한꺼번에 구해 주는 내장 함...

Java : java.lang.Object의 4대 메소드

java.lang.Object의 4대 메소드 equals, toString, hashcode, getClass equals boolean equals(Object o) 객체끼리 값이 같은지를 판단할 때 사용하는 메소드 모든 객체가 상속받는 Object클래스...

Java : 함수형 프로그래밍(람다식), 제네릭 타입

함수형 프로그래밍 (functional programming) y = f(x) 형태의 함수로 구성된 프로그래밍 기법 데이터를 파라미터로 전달하고 결과를 받는 코드로 구성 객체지향 프로그래밍보다 효율적인 경우 대용량 데이터 처리에 유리하다. ...

Java : static 메소드, default 메소드, instanceof 연산자

static 메소드와 default 메소드 static 메소드 자식 객체를 구현하지 않고 바로 사용할 수 있다. default 메소드 Java8에서 추가 인터페이스에서 직접 사용할 수 없고 자식객체를 구현하고 사용해야 한다. static 메소드와 defa...

Java : 스트림, 스트림 파이프라인

Stream(스트림) 스트림은 컬렉션(배열포함)의 요소를 하나씩 참조해서 람다식을 처리할 수 있는 반복자이다. 람다식으로 요소 처리 코드를 제공한다. 스트림이 제공하는 대부분의 요소처리 메소드는 함수형 인터페이스의 파라미터 타...

Java : 개요, 환경, 명명법

개요 자바의 전체적인 정리가 아니라 자바할 때 내가 몰랐던 부분을 정리한 것이다. 환경 JDK(java development kit)는 openjdk를 IDE(Integration Development Environment, tool)는 eclipse를 사용할 것이다...

Java : 제네릭 타입, 제네릭 메소드, 와일드 카드

제네릭 타입 (Generic Type) Java5 부터 새로 추가된 내용 타입을 파라미터로 가지는 클래스와 인터페이스를 말한다. 타입을 파라미터화 해서 컴파일 시 구체적인 타입이 결정되도록 하는 방법 선언시 클래스 또는 인터페이스 이름 뒤에 “<>” 기...

Java : Exception(예외처리), Transaction

예외처리 (Exception) 예측가능한 오류를 오류 발생없이 처리하기 위한 방법 구문 오류 같은 것이 아닌 0으로 어떤 숫자를 나누는 것 같은 경우의 오류를 말한다. ex) FileNotFoundException, ArithmeticExce...

Java : 추상클래스, 인터페이스

추상 클래스 (abstract class) 공통적으로 사용 되는 메소드를 상속받은 곳에서 다시 구현해야하는 추상메소드로 선언해 1개 이상 가지고 있는 클래스이다. body( { } )가 없는 메소드를 추상메소드라고 한다. 상속을 강요하고 반드시 구현해야 한다. ...

Git : 명령어

Git 명령어 git + 명령어 형태로 이루어져있습니다. git 공식홈페이지 Reference에 가면 모든 명령어를 확인해 볼 수 있습니다. Ctrl + l (Mac은 Ctrl + K) ​ 콘솔창을 깨끗하게 비워줍니다. git config -h ...

맨 위로 이동 ↑