Java

nGrinder 세팅하기

2 분 소요

서론 스레드를 배우기만 하고 막상 실제 써먹을 데가 없어서 깊은 공부가 안된다고 생각하던 중 부하테스트에 대해 알게 되었고, 스레드를 사용하여 부하테스트의 지표를 좋게 해보면 재밌겠다라는 생각이 들었습니다.

티켓팅 서버 구상해보기!

2 분 소요

서론 취업을 준비하면서 신입 개발자로써의 필요 역량은 어떤 것일까? 에 대한 고민을 자주 했었다.

MapStruct로 DTO 변환을 이쁘게

3 분 소요

서론 기존 코드에서 엔티티 안에 toDto라는 메서드를 사용하여 Entity를 Dto로 변환하여 사용하곤 했는데, 의존성을 줄이는 리팩토링을 하다보니 이 부분이 문제라는 생각이 들었다.

[Java] AI한테 코드리뷰를 받아보자… (1)

6 분 소요

ChatAI 바야흐로 AI의 시대, AI가 다 해먹는 세상이 점점 와감에 따라, 얼마전에는 그림을 대신 그려주는 AI가 굉장히 화제가 되면서 그림업계에 큰 파장을 불러 일으켰다.

[Spring] 호스팅 업체 비교하기

5 분 소요

서론 요즘 휴가철이라 여행이다 뭐다 정신이 없어서, 프로젝트 개발을 조금 쉬고 있었습니다. 일정들이 대부분 끝나서 오랜만에 개발을 하려고 프로젝트를 확인했는데, ec2 인스턴스가 문제가 있어서 서버에 요청이 보내지지 않았습니다. 프리티어 서버라서 간혹 이런적이 많아서 항상 그랬듯이...

[Spring] 다대다 관계 맵핑

4 분 소요

서론 JPA 를 사용하다 보면, 여러가지 복잡한 테이블 관계를 만나게 됩니다. 특히, 다대다 관계는 서로가 서로를 맵핑하기 때문에 단순하게 서로가 서로를 갖도록 구현하면 여러가지 에러를 만날 수 밖에 없게 됩니다. 제가 개발을 하다가 맞닥뜨린 문제를 함께 해결해보면서, JPA에...

[Spring] 스프링부트 젠킨스 + 도커로 배포하기

4 분 소요

서론 프로젝트를 진행하며, 매번 마스터 브랜치에 머지 할때마다 직접 EC2에 접속해서 배포를 수동으로 계속 하고있었습니다. 근데 이렇게 하다보니, 시간도 너무 많이 잡아먹을 뿐만 아니라, 배포중에 사람의 손이 들어가다 보니 중간에 과정 하나를 빼먹는다거나 테스트코드를 돌려보는것을 ...

[Spring] CORS 설정하기

6 분 소요

서론 저는 지금 간단한 토이 프로젝트를 하나 진행중인데요.

[Spring] API 초안 설계하기

1 분 소요

서론 그 동안은 개발하면서 필요할때마다 그때 그때 필요한 API를 만들곤 했는데, 그렇게 진행하면 나중에 API가 서로 중복되서 꼬이는 상황도 발생하기도 하고, 프론트엔드 개발자도 미리 이러한 API를 만들 것이다~ 라는 가이드라인이 있으면 개발이 훨씬 수월하다고 해서,

[Spring] API 문서작성 툴 고르기

1 분 소요

서론 먼저 실제적인 개발전에 대략적인 준비를 마치고, 먼저 API를 설계해보기로 했다. 또한 설계뿐만 아니라, 프론트엔드 개발자에게 이 정보를 공유해야 하기 때문에 API를 문서화 하여 남겨 간편하게 내가 업데이트한 내용을 문서에서 확인 할 수 있도록 해보기로 했다.

[Spring] 프로젝트 준비

4 분 소요

서론 최근에 인프런 강의를 듣거나 책을 읽으며 공부를 하는 중이었는데, 아무래도 이론만 배우다보니 숙달하고 적용하기가 어려울 뿐더러 직접적인 개발 실력이 오르지 않는 느낌이 들었다. 그래서 프로젝트를 하나 진행하며, 그 진행 상황을 블로그에 공유해보려 한다.

[JPA] 영속성 컨텍스트(2)

5 분 소요

영속성 컨텍스트는 왜 사용하는 걸까? 저번 게시물에서는 영속성 컨텍스트를 어떻게 사용하며, 무엇인지에 대해 배워보았습니다.

[JPA] 영속성 컨텍스트 (1)

6 분 소요

영속성 컨텍스트란? 영속성 컨텍스트는 쉽게 풀이하면 “엔티티를 영구 저장하는 환경” 이라는 뜻입니다.

[Spring] JaCoCo 적용하여 테스트 커버리지 체크하기

6 분 소요

서론 테스트 코드는 개발 시간을 굉장히 단축시켜주는 강력한 도구입니다. 물론 코드를 작성하는데 시간도 많이 들어갈 뿐더러, 눈에 보이는 성과를 주지 않는 코드이기 때문에, 괜히 작성하는 시간이 아깝고 귀찮아서 잘 작성하지 않는 경우가 대부분입니다. 저도 마찬가지였구요… 기능이 적을...

[Spring] webSocket으로 채팅서버 구현하기 (1)

6 분 소요

서론 새로 개발할 앱을 플러터 + 스프링부트로 개발하기로 마음먹고나서, 이번 앱에 가장 중요한 부분이 채팅기능이기 때문에 가장먼저 스프링부트로 채팅서버를 구현해보려고한다.

[Spring] 게시판 만들기 (1)

10 분 소요

이 게시물은 이동욱님의 “스프링 부트와 AWS로 혼자 구현하는 웹 서비스”를 읽고 공부하며 작성한 게시물입니다.

[Spring]스프링부트 초기설정

2 분 소요

이 게시물은 이동욱님의 “스프링 부트와 AWS로 혼자 구현하는 웹 서비스”를 읽고 공부하며 작성한 게시물입니다.

[Spring] WAS란 무엇일까?

1 분 소요

이 게시물은 유튜브에 있는 “10분 테코톡 희봉의 웹서버 vs WAS”가 설명을 아주 잘해놔서 해당 영상을 보고 정리하였습니다.

[Spring] IoC란 무엇일까?

최대 1 분 소요

스프링을 사용하다보니, 스프링의 특징 중 하나인 IoC, Inversion of Control의 개념이 이해가 잘되지 않아서 정리해보았다.

[Spring] Bean이란 무엇일까?

최대 1 분 소요

스프링에서 @Autowired를 사용하려다가 Bean이 무엇인지 잘 모르겠어서 Bean에 대해 정리해보려 한다.

[Java] 우테코 프리코스 3주차 - 자판기

19 분 소요

시작하며… 어느덧 3주의 프리코스의 마지막 과제가 출제되었다. 보통 최종 코딩테스트가 3주차와 비슷한 수준으로 나오는 것 같아서, 더 열심히 과제를 풀어보려 한다.

[Java] 옵셔널

5 분 소요

옵셔널 옵셔널은 자바의 NullPointerException을 방지하기 위해 만들어진 기능이다. 프로그래밍에서 가장 많이 발생하는 오류가 이 NullPointerException인데, 보통 프로그래밍을 할 때 변수에 일일히 Null값이 들어올 상황에 대비해주는 코드를 넣어...

[Java] 람다와 스트림

9 분 소요

시작하며… 3주차 과제가 시작하기 전에 좀 더 연습해보기 위해 우테코 지난 프리코스에 진행했던 블랙잭 프로그램을 구현해보기로 했다. 저번 기수는 지하철 노선도 구현이 나왔다고 해서 이번에도 지하철 노선 구현이 나올까봐 블랙잭 프로그램을 연습 과제로 정했다.

[Java] 상속과 인터페이스

7 분 소요

시작하며… 다음 과제까지 어떤걸 할까 고민하다가 자바의 스트림, 상속이나 인터페이스같은 걸 공부해보기로했다. 클린하게 코드를 작성하려면 좀더 자바의 기능들을 사용해야 복잡한 코드를 자바의 기능하나로 대체 할 수 있다는 생각에, 다음과제에서 사용할 수 있...

[Java] 우테코 프리코스 1주차 - 숫자야구 (1)

16 분 소요

시작하며… 드디어 프리코스 1주차가 시작됐다. 걱정도 되면서 재밌을 것 같다는 생각에 몹시 설렌다! 취준을 하면서 즐거울 수 있는건 정말 개발자를 꿈꾸는 사람들의 특권인 것 같다. 열심히 준비해서 붙은 1차를 헛되이 하지 않도록 무조건 최종에 붙자. 불합을 의식하지 않고...

[Java] 플레이그라운드 with TDD, 클린코드 - 문자열 계산기

3 분 소요

요구사항 사용자가 입력한 문자열 값에 따라 사칙연산을 수행할 수 있는 계산기를 구현해야 한다. 문자열 계산기는 사칙연산의 계산 우선순위가 아닌 입력 값에 따라 계산 순서가 결정된다. 즉, 수학에서는 곱셈, 나눗셈이 덧셈, 뺄셈 보다 먼저 계산해야 하지만 이를 무시한다. ...

[Java] 플레이그라운드 with TDD, 클린코드 - AssertJ (다시)

7 분 소요

다시… 원래는 자바를 공부하면서 나쁜 습관들이 들까봐 애초에 클린 코드로 버릇을 들으려고 강의를 찾다가 플레이 그라운드에 있는 이 강의가 유용하다고 해서 봐서 결제해서 듣고 있었는데, 앱개발 한다고 결제해놓은. 강의도 내팽겨 치고 열심히 개발을 하고 왔다. 근...

[Java] assertj 설정 방법

최대 1 분 소요

문제 테스트코드를 작성해보려고 따라하는데, assertThat()이 안되서 한참을 찾았다. 처음에는 assertThat이 Junit 자체 메소드인줄 알고 Junit 버젼이 달라서 그런가했는데, assertJ라는 다른 라이브러리였다. Junit과 함께 편리하게 사용하게 해주는 라이...

[Java] 플레이그라운드 with TDD, 클린코드 - AssertJ (1)

8 분 소요

시작하면서… 자바로 간단한 프로젝트를 만들어보려 했는데, 그냥 무작정 혼자 만들다가는 나쁜 버릇이 들 것 같아서 강의 하나를 수강하기로 했다. 특히나 자바는 객체지향이라는 개념을 사용하는 언어이고, 난 대부분 절차지향 언어만 사용해봤었기 때문에, 아직 간단한 책 한권으로는 객...

[Java] Swing (2)

3 분 소요

간단한 로그인 프로그램 스윙의 기초나 대략 어떻게 사용하는지를 알아봤는데, 그냥 기초만 무작정 공부하기보다는 간단한 에제프로그램을 만들어보면서 익히는 것이 가장 어떤 툴이나 언어를 빨리 습득하는 방법이 아닐까 싶다 애초에 계산기 자체도 작은 프로젝트지만, 스윙은 또 처음 배우는 라...

[Java] Class 클래스

2 분 소요

Class 클래스란? 지금까지 변수를 선언할 때 자료형을 미리 파악하고 그 자료형에 따라 변수를 선언했다. 그리고 클래스를 사용할 때도 이미 그 클래스 정보(변수, 메서드)를 알고 있는 상황에서 프로그램을 만들었다. 하지만 어떤 경우에는 여러 클래스 중에 상황에 따라 다른 클...

[Java] Swing (1)

4 분 소요

Swing 자바에서 GUI를 개발하기 위해서는 AWT, SwIng등이 있는데, 이번 프로젝트는 Swing을 이용하여 만들어 보도록 할 것이다. 둘이 사용할 때의 차이는 예로 버튼 Button을 만든다면 AWT는 Button, Swing은 JButton을 사용한다. 앞의 J로 이 프...

[Java] 인터페이스

13 분 소요

인터페이스란? 인터페이스(Interface)는 클래스 혹은 프로그램이 제공하는 기능을 명시적으로 선언하는 역할을 한다. 인터페이스는 추상 메서드와 상수로만 이루어져 있다. 구현된 코드가 없기 때문에 당연히 인터페이스로는 인스턴스도 생성 할 수 없다. 그렇다면 구현코드도 없는 인터페...

[Java] 추상 클래스

4 분 소요

추상클래스란? ‘추상적이다’라는 말의 뜻을 생각해 보자. 추상적이라는 것은 구체적이지 않고 막연한 것을 뜻한다. 그렇다면 어떤 클래스가 추상적이다 라는 말은 무슨 뜻일까? 앞의 용어풀이를 대입해 보면 ‘구체적이지 않은 클래스’ 라는 뜻일 것이다. 추상 클래스를 영어로 하면 abst...

[Java] 다운 캐스팅과 instanceof

3 분 소요

하위 클래스로 형 변환, 다운캐스팅 앞에서 상위 클래스로 형 변환이 묵시적으로 이루어지는 과정을 알아보왔다. 여기서는 다시 하위 클래스로 형 변환이 되는 과정을 살펴보자.

[Java] 다형성

7 분 소요

다형성이란? 지금까지 설명한 묵시적 클래스 형 변환과 가상 메서드를 바탕으로 객체 지향의 중요한 특성인 다형성(polymorphism) 을 알아보자. 다형성이란, 하나의 코드가 여러 자료형으로 구현되어 실행되는 것을 말한다. 쉽게 말해 같은 코드에서 여러 실행결과가 나오는 것으로,...

[Java] 상속

10 분 소요

상속이란? 객체 지향 프로그래밍의 중요한 특징 중 하나가 바로 상속(inheritance) 이다. 상속은 우리가 아는 의미인 무엇인가를 물려받는다는 의미 동일하게 사용되며, 부모가 자식에게 상속을 해주면 자녀가 그 재산을 사용할 수 있듯이, 객체 지향 프로그램에서도 마찬가지로 B클...

[Java] 배열 응용 프로그램

1 분 소요

예제 시나리오 1001학번 Lee와 1002 학번 Kim, 두 학생이 있다. Lee 학생은 2과목을 수강한다. 국어 점수가 100점, 수학 점수는 50점이다. Kim 학생은 3과목을 수강한다. 국어 점수가 70점, 수학 점수가 85점, 영어 점수가 100점이다. Student 클...

[Java] 배열과 ArrayList

9 분 소요

배열 선언과 초기화 배열을 사용하려면 먼저 배열을 선언해야한다. 배열도 변수와 마찬가지로 자료형을 함께 선언하는데, 배열을 선언하는 문법은 다음과 같다. 1 2 자료형[] 배열 이름 = new 자료형[개수]; 자료형 배열 이름[] = new 자료형[개수]; 예를들어 학생의 ...

[Java] 참조 자료형, 정보은닉

3 분 소요

참조 자료형 크기가 정해진 기본 자료형 ( int, char, float, double등)으로 선언하는 변수가 있고, 클래스 자료형으로 선언하는 참조 자료형 변수가 있다. 참조 자료형 변수의 특징에 대해 좀 더 자세히 살펴보고, 클래스를 선언하여 참조형을 이용한 프로그램을 구현해보...

[Java] 싱글톤 패턴

1 분 소요

싱글톤 패턴이란? 프로그램을 구현하다 보면 여러 개의 인스턴스가 필요한 경우도 있고, 단 하나의 인스턴스만 필요한 경우도 있다. 객체 지향 프로그램에서 인스턴스를 단 하나만 생성하는 디자인 패턴을 싱글톤 패턴(singleton pattern) 이라고 한다. 우리가 여기서 살펴볼 싱...

[Java] 객체 간 협력

2 분 소요

객체 지향 프로그램은 객체를 정의하고 객체 간 협력으로 만들어진다. 그러면 실제로 객체간의 협력이 어떻게 이루어지는지 한번 예제를 만들어 확인해보자.

[Java] static 변수

2 분 소요

변수를 여러 클래스에서 공통으로 사용하기 우리가 앞서만든 학생클래스에서, 만약 학번을 만들고 싶다면 어떻게 해야할까? 이 학번은 새로운 인스턴스가 생성될때마다 자동으로 생성되어 그 인스턴스에 할당되게 하고싶다. 이렇게 하려면 인스턴스마다 따로 변수가 생성되는게 아니라,...

[Java] 기본 클래스

3 분 소요

java.lang 지금까지 자바로 프로그램을 구현하면서 String, Integer와 같은 클래스를 사용했다. 이러한 클래스들은 어디에 있는 걸까? 이들은 모두 java.lang 패키지에 속해 있다. String 클래스의 전체 이름은 java.lang.String이고, Intege...

[Java] 변수와 자료형

2 분 소요

변수 선언하여 사용하기 1 2 3 int level; level = 10; System.out.println(level) 변수 초기화하기 1 int level = 10; 자료형 자바는 기본자료형과 참조 자료형을 제공하는데, 기본 자료형은 자바 라이브러리에서 기본으로 제공하며, ...

[Java] 객체 지향 프로그래밍과 클래스

5 분 소요

클래스란? 클래스는 객체와의 속성과 기능을 코드로 구현한 것으로, 객체를 클래스로 구현하는 것을 ‘클래스를 정의한다’라고 한다. 클래스를 정의하려면 우선 클래스 이름과 클래스가 가지는 속성, 또는 특성이 필요하다. 객체를 코드로 구현한다는 말이 모호할 수 있으니 ‘학생’이라...

[Java] 생성자

1 분 소요

생성자란? 다음과 같이 Person과 PersonTest 클래스를 만들어보자 ```java package constructor;