공부 45

[공부] 좋은 개발자가 되기 위한 팁

여러 글들을 읽다보니 "좋은 개발자"와 관련된 글들이 있어 지인 및 제가 생각했을 때(라곤 했지만, 그냥 제 개인적인 생각과 지인 피셜을 합친 결과물입니다.) 1. 에러(예외) 메시지를 읽는다. 많은 주니어 개발자, 그리고 제 주변에 있는 친구들만 봐도 에러(예외) 메시지를 읽지않고 그냥 복사 & 붙여넣기를 하여 해결하는 경우가 대다수입니다. 문제를 해결하는 데 있어 빠르게 찾고 문제 원인을 찾을 수 있기때문에 꼭 읽어야한다고 생각합니다. 2. 테스트 케이스를 작성한다. 테스트 케이스를 정의하고 테스트를 진행했다는 것만으로도 충분히 해당 코드를 작성한 개발자에게 신뢰감을 줍니다. (메인 코드만 봐서는 제대로 작동하는 지 어떠는 지 제대로 파악하는 것은 어렵다.) 또, 테스트 케이스를 작성하는 것으로 미리..

공부 2022.04.02

[공부/서버] 백엔드 개발자 지망생, 앞으로 공부해야할 것들

또다시 작성하는 앞으로 공부해야할 것들 시리즈입니다. 제 블로그를 자주 읽으신 분들 혹은 제 친구들은 아마 제가 백엔드 개발자를 지망하는 고등학생이라는 사실을 아마 알 것입니다. 어른들이 자주 하시는 말씀 중에는 아마 이런 말이 있었습니다. 첫 회사가 나중 회사를 좌우한다. 저는 이 말이 틀렸다고는 생각하지 않습니다. 그리고 첫 회사를 좋은 데 갈 수 있다면 가는 것이 저에게 있어 제일 좋을 것이기 때문입니다. 그래서 저는 최대한 첫 회사를 잘 가기 위해 노력을 하고자 하는 데.... 그거 어떻게 하는 건데? 저는 해본 적이 당연히 없으니 이런 고민을 하는 것이니, 제가 앞으로 준비해야 하는 것들을 알아보려면 크게 2가지 방법이 있습니다. 첫 번째는 정보의 불확실성을 안은 채, 인터넷 정보를 신뢰하는 것..

공부/서버 2022.03.28

[공부/디자인 패턴] Prototype 패턴

Prototype Pattern 객체를 생성하는 데 비용(시간과 자원)이 많이 사용되고, 비슷한 객체가 이미 있는 경우에 사용되는 패턴입니다. Original 객체를 새로운 객체에 복사하여 우리의 필요에 따라 수정하는 메커니즘을 제공합니다. 이 패턴은 복사를 위해 #clone() 을 사용합니다. #clone()에서는 옅은 복사 혹은 깊은 복사, 이 둘을 개발자가 정의가능합니다. Prototype Pattern Structure public class Minion implements Cloneable { private String name; private String job; public Minion(String name) { this.name = name; } public Minion(String nam..

[공부/디자인 패턴] Singleton 패턴

Singleton Pattern 인스턴스를 하나만 생성하는 패턴으로 메모리 측면에서 낭비를 방지하고, 이미 생성된 인스턴스를 활용하기에 속도 측면에서 이점이 있습니다. 또, 데이터 공유가 쉽습니다. 물론, 여러 클래스의 인스턴스에서 싱글톤 인스턴스의 데이터에 동시에 접근할 경우, 동시성 문제가 발생할 수 있습니다. Singleton Pattern Structure public class Singleton { public static Singleton instance = new Singleton(); private Singleton() { // 외부 생성자 차단 } public static Singleton getInstance() { return instance; } public void say() { ..

[공부/서버] 앞으로 공부해야할 것들

현재 Spring 백엔드를 공부하면서 취업에 나가기 위해 공부해야할 것들 그리고 개인 혹은 협업 프로젝트를 보다 효율적으로 개발하기 위해 공부해야할 것들 이렇게 2가지 정도를 목표로 하여 앞으로 공부해야할 것들 한 번 더 작성하고자합니다. 본 글은 여기서 가져왔습니다. 1. 📡NETWORK 쿠키, 세션, JWT 토큰 Cookie / Session 세션 기반 인증 / 토큰 기반 인증 JWT (Json Web Token) 네트워크 시스템의 Layered Architecture 웹의 동작 방식 TCP/IP 5 계층 OSI 7 계층 TCP, UDP, IP, PORT HTTP, HTTPS HTTP / HTTPS HTTP 2.0 로드 밸런서 (Load Balancer) 로드 밸런싱 Scale out, Scale u..

공부/서버 2022.03.18

[공부/디자인 패턴] Strategy 패턴

Strategy Pattern 알고리즘의 인터페이스를 정의하고, 각각의 인터페이스를 캡슐화하여 동적으로 교체 사용 가능하도록 구현하는 디자인 패턴입니다. 클라이언트와는 독립적으로 구현되기에 새로운 알고리즘을 추가하거나 기존의 알고리즘을 쉽게 변경할 수 있습니다. Strategy Pattern Structure Context: 실제 각각의 알고리즘에 대한 인스턴스를 가진다. Interface: 각각의 알고리즘을 가져야할 공통적인 인터페이스 Algorithm1, Algorithm2: 실제 인터페이스 구현. 각각의 알고리즘을 구현 예제 코드 public interface PersonInterface { void action(); } PersonInterface로 공통 인터페이스인 #action을 가집니다. p..

[공부/자바] JVM 메모리 관리

Java 메모리 영역 중 Stack, Heap, 그리고 static 이렇게 3가지 영역에 대해 공부하고 기억, 그리고 기록을 남기고자 포스팅하고 있습니다. Static Area 자바 코드 내에 있는 3가지 영역(필드, 생성자, 메소드) 중 필드 부분에서 선언된 변수(전역변수)와 정적변수(static변수)를 static 영역에 데이터를 저장합니다. static 영역의 데이터는 프로그램의 시작부터 종료가 될 때까지 메모리에 남게 됩니다. 따라서 전역변수를 무분별하게 많이 사용할 경우, 메모리가 부족할 우려가 존재합니다. Stack Area 메소드 내에서 정의하는 기본 자료형(이하 타입) [int, double, boolean, byte 등)에 해당되는 지역변수의 데이터 값이 저장되는 영역으로, 해당 메소드가..

공부/Java 2022.03.01

[공부/자바] JVM과 작동원리

자바라는 프로그래밍 언어는 어떤 플랫폼에서든 소스코드 변경이 없어도 실행할 수 있습니다. 즉 어떤 CPU나 OS에서든 실행할 수 있단 뜻입니다. 그래서인지는 몰라도 웹 어플리케이션 개발에도 사용되고, 안드로이드에서도 코틀린을 밀어주기 이전엔 자바로 기능들을 구현했습니다. 이를 가능하도록 이번 주제인 JVM이 있었기 때문입니다. JVM이란? JVM은 원래 Java Virtual Machine의 약어로, "자바 가상 머신"이라고 번역할 수 있습니다. 가상 머신의 정의는 다음과 같습니다. 특정한 프로그램이 실행될 수 있도록 컴퓨터에 가상 실행 환경을 만들어 주는 소프트웨어가 설치된 컴퓨터 JVM 검색 결과의 문서를 찾아보면 JVM은 자바 바이트코드를 실행할 수 있는 주체다. 일반적으로 인터프리터나 JIT 컴파..

공부/Java 2022.02.27

[공부/자바] JCF (Java Collection Framework)란?

자바 컬랙션 프레임워크 (JCF) 란? Java에서 데이터를 저장하는 기본적인 자료구조들을 한 곳에 모아 관리하고 편하게 사용하기 위해서 제공하는 것을 의미한다. 즉, 데이터를 담는 그릇들에 대한 정의를 모아놓은 프레임워크를 의미하며, 값의 성격이나 용도에 따라서 활용 방법에 따라 다양한 컨테이너를 제공한다. 다음은 JCF의 상속 구조이며 사용 용도에 따라 List, Set, Map 3가지로 요약할 수 있다. 각 인터페이스별 특징 List Interface (순서 O, 중복 O) LinkedList : 양방향 포인터 구조로, 데이터의 삽입/삭제가 빈번할 경우 유용하다(데이터의 위치 정보만 수정하면 되기 때문에). 스택/큐/양방향 큐 등을 만들기 위한 용도로 사용된다. 검색은 ArrayList에 비해 비효..

공부/Java 2022.02.26

[공부/서버] 프록시 서버란?

프록시 서버(Proxy Server)란? 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램을 가르키는 말입니다. 서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것을 가리켜 프록시, 그 중계 기능을 하는 것을 프록시 서버라고 부릅니다. 프록시 서버 중 일부는 프록시 서버에 요청된 내용들을 캐시를 이용하여 저장해 둡니다. 이렇게 캐시를 해 두고 난 후에, 캐시 안에 있는 정보를 요구하는 요청에 대해서는 원격 서버에 접속하여 데이터를 가져올 필요가 없게 됨으로써 전송 시간을 절약할 수 있게 됨과 동시에 불필요하게 외부와의 연결을 하지 않아도 된다는 장점을 갖게 됩니다. 또한 외부와의 트래픽을 줄이게 됨으로써 네트워크 병목 현상을 방지..

공부/서버 2022.02.25