Java (50) 썸네일형 리스트형 [Java] ConcurrentHashMap ConcurrentHashMapJava에서 멀티스레드 환경에서 안전하게 사용할 수 있도록 설계된 해시 기반의 Map.모든 메서드에 synchronized를 거는 HashMap과 달리 필요한 범위에만 lock을 걸어 성능과 안정성 보장.import java.util.concurrent.ConcurrentHashMap;ConcurrentHashMap map = new ConcurrentHashMap();map.put("apple", 3);map.put("banana", 5);int count = map.get("apple");key - value 구성으로, key와 value 모두 null 불가. putIfAbsent() 지정한 key에 값이 없을 경우에만 새 값을 저장.ConcurrentHashMap ma.. [JAVA] record (java 14 이상) * record 불변(immutable) 데이터를 간결하게 표현하기 위한 클래스 타입.생성자, getter, equals(), hashCode(), toString() 등이 자동 생성.(Java 14에 도입, Java 16부터 정식 기능으로 채택) 아래처럼 선언한다면,public record CommandResult(String status, String msg) {}다음과 같은 클래스가 자동 생성되는 것과 동일하다.import java.util.Objects;public final class Result {// final필드 private final String status; private final String msg;// 생성자 public Result(String status, S.. [JAVA] 타입 소거 (Type Erasure) 자바의 타입 소거? 자바의 설계 철학과 하위 호환성 때문에 생긴 개념. 기존 자바코드(JDK 1.4 이하)는 아래처럼 타입 안정성이 보장되지 않았었는데List list = new ArrayList();list.add("hello");list.add(123); // 문제 없음자바5부터 아래처럼 제네릭이 도입되면서 컴파일 과정에서 데이터 타입을 검사하게 됨.List list = new ArrayList();list.add("hello");list.add(123); // 컴파일 에러 제네릭 기능을 기존 자바 코드와 호환되게 하면서도, JVM 구조를 변경하지 않고 도입하기 위한 기법이 타입 소거!!컴파일 시에 제네릭을 검사하지만, 컴파일 이후에는 타입 정보가 사라지게 된다. 이로 인해 아래의 문제점들이 발생.. [Java] ObjectMapper (2) TypeReference, 설정메서드, 어노테이션 * TypeReference Jackson의 ObjectMapper에서 제공하는 클래스로역직렬화(deserialization) 과정에서 제네릭 타입 정보를 전달하기 위해 사용.** 단일 객체가 아닌 복잡한 타입인 경우, 런타임에 타입 정보가 사라지기 때문에 명시적으로 타입을 전달해줘야함. List, Map, List> JSON 문자열 --> List String json = "[{\"name\":\"phyho\",\"age\":10}]";List users = mapper.readValue(json, new TypeReference>() {}); JSON 문자열 --> MapString json = "{\"name\":\"phyho\", \"age\":10}";Map map = mapp.. [Java] ObjectMapper (1) 주요 메서드 * ObjectMapper Jackson 라이브러리에서 제공하는 클래스로 JSON 데이터와 Java 객체 간의 직렬화 및 역직렬화에 사용. ( Java 객체 ↔ JSON ) ex) User 클래스public class User { private String name; private int age; // 생성자와 getter/setter 필수 public User() {} public User(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } .. [Java] "".equals(null) (equals 메서드) String.equals(Object obj) 메서드는 내부적으로 매개변수가 null일 경우 false를 반환한다.null.equals("")는 예외를 발생시키지만, "".equals(null)은 안전하게 false를 반환!! (equals메서드 내부로직)@Overridepublic boolean equals(Object anObject) { if (this == anObject) { // 같은 객체인지 확인 return true; } if (anObject instanceof String) { // anObject가 String 타입인지 확인 String anotherString = (String) anObject; int n = value.le.. [오류 / STS] 기본 클래스 com.(경로).TestApplication을(를) 찾거나 로드할 수 없습니다. 오류: 기본 클래스 com.(경로).TestApplication을(를) 찾거나 로드할 수 없습니다. => 메인클래스를 잡지 못해서 발생하는 오류. SVN에서 프로젝트 checkout이후 모든 설정을 이전과 동일하게 맞춰줬는데도 계속 오류가 났다.=> maven install 로 해결. maven install 하면 하위 경로에 관련 라이브러리가 설치된다.C:\사용자\.m2\repository포맷 & 윈도우 재설치로 모든 디렉토리가 초기화된 상태였고,결국 로컬에 maven 라이브러리가 없어서 발생한 오류였다.일반적으로 첫 세팅시 필요! maven install - 의존성 다운로드: pom.xml에 정의된 외부 라이브러리(JAR 등) 를 원격 저장소(Maven Central, Nexus 등)에서 가져와 .. [JPA] Querydsl 벌크삭제 (2) 테이블의 데이터들이 다대다 관계로 구성되어 있고 하나의 데이터를 삭제할 때 관련된 모든 테이블의 데이터를 삭제하기 위해 QueryDSL 공통로직 생성. (이전방식) 서비스 로직에서 엔티티별 Q클래스 생성 & 쿼리작성https://phyho.tistory.com/315 각 User는 여러 Order를 가질 수 있고, 또한 여러 Post를 가질 수 있음. User 엔티티 삭" data-og-host="phyho.tistory.com" data-og-source-url="https://phyho.tistory.com/315" data-og-url="https://phyho.tistory.com/315" data-og-image="https://scrap.kakaocdn.net/dn/n9Pem/hyX7Y9TJ.. 이전 1 2 3 4 ··· 7 다음 목록 더보기