응애개발자
article thumbnail
[Java] 쿠키와 세션의 차이
CS/Java 2024. 5. 16. 18:08

들어가기 앞서 쿠키와 세션을 사용하는 이유에 대해서 먼저 생각해보자. HTTP 프로토콜은 비연결성, 무상태성이라는 특징을 갖는다.비연결성(Connectionless) : 클라이언트가 서버에 요청을 보냈을때(Request), 그에 맞는 응답(Response)을 보낸 후 연결을 끊는 처리방식이다.무상태성(Stateless) : 연결을 끊는 순간 서버의 통신이 끝나며 상태 정보는 유지하지 않는다.따라서 클라이언트와 서버가 통신을 할 때 서버는 클라이언트가 누구인지 계속 인증을 해주어야 한다. 예를들어 로그인을 하고 마이페이지를 가고 싶지만, 정보가 유지되지 않아서 다시 로그인을 해야하고, 장바구니를 가려고 해도 로그인을 해야한다. 이처럼 매번 요청을 보낼때마다 로그인을 하면 굉장히 불편할 것이다. 그런 불편함..

article thumbnail
[Java] HashMap, HashTable, ConcurrentHashMap, CopyOnWriteArrayList, SynchronizedList 비교
CS/Java 2024. 5. 11. 21:06

Map 인터페이스의 구현체로는 HashMap , HashTable, ConcurrentHashMap 등이 있다. Map은 형태를 띄게 된다. 그럼 이 셋의 특징과 차이는 무엇이 있을까? 그리고 ArrayList 형태를 띄는 CopyOnWriteArrayList, SynchronizedList란 무엇일까? 한번 알아보자.  📌HashMap특징Key와 value에 null을 허용한다.동기화를 보장하지 않는다.싱글 쓰레드 환경에서 사용하는게 좋다.HashTable과 ConcurrentHashMap보다 데이터를 찾는 속도는 빠르다.단점동기화를 보장하지 않기 때문에 신뢰성과 안정성이 떨어진다.public class HashMap extends AbstractMap implements Map, Clonea..

article thumbnail
[Java] JPA를 사용하는 이유, ORM이란?, JPA와 MyBatis의 차이
CS/Java 2024. 5. 9. 17:56

들어가기 앞서, MyBatis와 JPA를 사용하여 프로젝트를 만든 경험이 있었다. 확실히 JPA를 사용하면 코드 작성도 편해지고 가독성도 좋았다. 그렇다면 조금 더 자세하게 JPA가 무엇인지, Hibernate가 무엇인지, Spring Data JPA가 무엇인지, ORM이 무엇인지, JPA와 MyBatis의 차이는 무엇인지 자세하게 알아보자.📌JPA란?JPA(Java Persistence API)는 자바 진영의 ORM(Object Relational Mapping:객체 관계 매핑)기술 표준으로 사용되는 인터페이스 모음을 말한다.  여기서 중요하게 생각할 점은 JPA는 특정 기능을 하는 라이브러리가 아닌, ORM을 사용하기 위한 인터페이스의 모음이라는 것이다. 그렇다는 것은 JPA는 단순히 명세이기 때문..

article thumbnail
[Java] Dispatcher Servlet이란?
CS/Java 2024. 5. 7. 17:34

📌Dispatcher Servlet(디스패처 서블릿)Dipatcher Servlet이란 서블릿 컨테이너의 가장 앞단에서 HTTP 프로토콜로 들어오는 모든 요청을 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러입니다. 조금 더 자세히 설명하면 클라이언트로부터 어떠한 요청이 오면 Tomcat(톰캣)과 같은 서블릿 컨테이너가 요청을 받게됩니다. 그리고 이 모든 요청은 프론트 컨트롤러인 디스패처 서블릿이 가장 먼저 받게 됩니다. 그러면 디스패처 서블릿은 공통적인 작업을 먼저 처리한 후에 해당 요청을 처리하는 컨트롤러를 찾아 작업을 위임합니다. 디스패처 서블릿 등장하기 이전 디스패처 서블릿 등장하기 이후   디스패처 서블릿 역할HTTP 프로토콜로 들어오는 모든 요청을 먼저 받고, 요청을 적합한 컨트롤러에..

article thumbnail
[Java] equals(), hashCode()
CS/Java 2024. 5. 5. 16:10

📌 equals(), hashCode()equals와 hashCode는 모든 객체의 부모 객체인 Object클래스에 정의되어 있습니다. 따라서 Java의 모든 객체는 Object 클래스에 정의된 equals와 hashCode 함수를 상속받고 있습니다. 📌 equals()==연산자와 equals() 메서드의 가장 큰 차이점은 == 연산자는 비교하고자 하는 두개의 대상의 주소값을 비교하는데 반해  equals()는 비교하고자 하는 두개의 대상의 값 자체를 비교합니다. (일치 = true, 불일치 = false)   String에서의 equals() 예시 코드public class Hello { public static void main(String[] args) { String s1 =..

article thumbnail
[Java] Error와 Exception
CS/Java 2024. 5. 2. 23:15

📌 Error(오류)와 Exception(예외)오류Error(오류)는 시스템이 종료되어야 할 수준의 상황과 같이 수습할 수 없는 심각한 문제를 의미합니다. 개발자가 미리 예측하여 방지할 수 없습니다. 예외Exception(예외)는 개발자가 구현한 로직에서 발생한 실수나 사용자의 영향에 의해 발생하며 프로그램 실행 중 발생하는 이벤트로 프로그램 명령의 정상적인 흐름을 방해하는 것입니다. 오류와 달리 개발자가 미리 예측하여 방지할 수 있기에 상황에 맞는 예외처리(Exception Handle)를 해야 합니다. 자바의 Error와 Exception 모두 자바의 최상위 클래스인 Object를 상속받습니다. 그리고 그 사이에는 Throwable이라는 클래스와 상속 관계가 있습니다. 밑에서 Throwable 클래..

article thumbnail
[Java] static 이란 ?
CS/Java 2024. 4. 29. 21:22

📌 Static 이란?스태틱(Static)은 고정이라는 뜻을 갖고 있습니다. Static 키워드를 사용하면 Static 변수와 Static 메서드를 만들 수 있는데 이 변수와 메서드는 메서드 영역에 올라가게 됩니다. 따라서 모든 곳에서 호출이 가능하고 이에 따라 속도도 빠르다는 특징을 갖고 있습니다. 하지만  Garbage Collector의 영역 밖에 존재하므로 Static을 자주 사용한다면 프로그램의 종료 시까지 메모리가 할당된 채로 존재하므로 메모리 누수가 발생된다는 단점이 있습니다. 만약 메모리 영역에 대해서 잘 모르신다면 밑의 글을 읽어보시는걸 추천드립니다. [Java] Java 메모리 영역자바의 메모리 영역 자바 프로그램을 실행 하게 되면 JVM은 OS(운영체제 ex. 윈도우, 유닉스, 리눅..

article thumbnail
[Java] 추상클래스와 인터페이스의 차이
CS/Java 2024. 4. 19. 20:14

📌 추상클래스와 인터페이스 개념먼저 추상클래스와 인터페이스에 대해 개념을 학습한 뒤 어떤 상황에서 추상클래스와 인터페이스를 써야 하는지에 대해서 설명드리겠습니다. <td ..

article thumbnail
[Java] 오버로딩(Overloading)과 오버라이딩(Overriding) 차이
CS/Java 2024. 4. 14. 15:13

오버로딩(Overloading) 오버로딩은 같은 클래스 내에서 메서드 이름은 같고 매개변수(파라미터)의 타입, 갯수를 다르게 구현하는 방식을 의미합니다. 만약 하나의 클래스 안에 같은 이름의 메서드를 정의한다면 컴파일 에러가 발생하게 됩니다. public class Test { void overloading(){ System.out.println("매개변수가 없는 메서드"); } void overloading(int a, int b) { System.out.println("매개변수가 int 형 2개로 이루어진 메서드"); } void overloading(String a, int b){ System.out.println("매개변수가 int 형 1개, String 1개로 이루어진 메서드"); } } 더보기..

article thumbnail
[Java] 제네릭이란?(Generic)
CS/Java 2024. 4. 4. 13:27

제네릭이란? 제네릭은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미합니다. 흔히 ArrayList, LinkedList를 생성할 때 사용해 본 경험이 있으실 겁니다. //타입 + 배열 자료형 int[] arr = new int[3]; //리스트 자료형 + ArrayList list1 = new ArrayList(); ArrayList list2 = new ArrayList(); ArrayList list3 = new ArrayList(); 이처럼 클래스 안에 로 되어 있는 부분이 바로 제네릭입니다. 배열의 타입을 지정하듯이 리스트 자료형 같은 래퍼 클래스나 메서드에서 사용할 데이터 타입(type)을 매개변수(parameter) 주듯이 외부에서 지정하는 이른바 타입을 변수화 한..