i - 현재 커서의 위치부터 입력 I - 현재 커서 줄의 맨 앞에서부터 입력 A - 현재 커서 줄의 맨 뒤에서부터 입력 o - 현재 커서의 다음 줄에 입력 O - 현재 커서의 이전 줄에 입력 S - 현재 커서의 한 줄을 지우고 입력 x - 현재 커서가 위치한 문자를 삭제 (Del과 같다) dd - 현재 커서가 위치한 곳의 한 줄을 삭제 yy - 현재 커서가 위치한 곳의 한 줄을 복사 p (소문자) - 현재 커서가 위치한 곳의 다음 줄의 내용 붙여넣기 P (대문자) - 현재 커서가 위치한 곳의 이전 줄의 내용 붙여넣기 u - 직전에 내린 명령을 취소 w - 다음 단어의 처음으로 이동 $ - 현재 커서가 위치한 줄의 맨 끝으로 이동 (Home) 0 - 현재 커서가 위치한 줄의 맨 앞으로 이동 (End) G ..

📌 객체와 클래스 클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화라고 하며, 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 한다. 객체 = 속성(멤버변수) + 기능(메서드) 변수 : 하나의 데이터를 저장할 수 있는 공간 클래스 영역에서 선언 클래스 변수 : static 멤버변수, 클래스가 메모리에 올라갈 때 생성되며 모든 인스턴스가 공통된 저장공간을 갖는다.(공유) 멤버변수 : 인스턴스변수, 인스턴스가 생성될 때 생성되며 인스턴스마다 독립적인 저장공간을 갖는다. 클래스 영역 이외의 영역에서 선언 지역변수 : 멤버변수를 제외한 변수, 변수 선언문이 수행될 때 생성된다. 배열 : 같은 종류의 여러 데이터를 하나의 집합으로 저장할 수 있는 공간 구조체 : 서로 관련된 여러 데이터들을 종류에 관계없..

📌 문제 파일 업로드할 때 서버단에서 파일의 확장자를 체크한다. 업로드할 수 없는 파일 확장자면 예외를 던진다. 원래는 uploadfive의 onError에서 오류가 발생한 파일을 파일 목록에서 지우려고 했다. 그런데 Web.config에서 CustomeError에서 예외 발생시 에러 페이지로 리다이렉트해서 onError로 넘어오지 않았다. (onUploadComplete trigger됨) uploadfive의 filetype 속성으로 확장자를 제한하려고도 했는데 파일 업로드 자체를 막지 못했다. 📌 문제 해결 업로드 후 trigger 되는 onUploadComplete함수에서 try catch문으로 이를 처리했다.

최근에 좀 익숙하지 않은 문법이 있어서 조금씩 정리해보려한다. 📌 Expression-bodied member 속성이나 메서드의 바디 블럭이 간단한 경우, 이를 람다식으로 표현할 수 있다. 📌 기본 인터페이스 메서드 인터페이스에 메서드를 추가할 수 있다. 이 기능은 해당 인터페이스의 기존 구현과 소스 또는 이진 호환성을 손상시키지 않고 메서드를 추가하기 위해 만들어졌다. (하위 호환성) 기본 인터페이스 메서드는 해당 인터페이스 타입 변수에서만 접근할 수 있다. 인터페이스에 속성도 선언할 수 있다. 📌 ? 관련 연산자 1. ? : null-forgiving 연산자 값 타입에도 null을 할당할 수 있게 해준다. null 상태를 체크할 수 있는 기능이 있는 struct (HasValue) 컴파일시 Nulla..

📌 APPLY 연산자 JOIN 절과 비슷한 연산자다. 두 테이블 표현식을 조인할 수 있게 해준다. APPLY 연산자는 2개가 있다. CROSS APPLY와 OUTER APPLY 연산자. CROSS APPLY는 INNER JOIN, OUTER APPLY는 LEFT OUTER JOIN과 Query 결과가 같다. 아마 SQL JOIN문을 잘 알면 몇 개 예시만 봐도 쉽게 사용할 수 있을 것으로 생각된다. 📌 JOIN 절과의 차이점 테이블 반환 함수를 테이블처럼 사용해 조인할 수 있다. 조인 조건을 ON이 아닌 내부 테이블의 WHERE 문으로 설정할 수 있다. 특정 상황에서 JOIN 절보다 더 성능이 좋을 수 있다. 쿼리 예제와 더 디테일한 내용은 아래 Reference 링크를 보면 좋을 것 같다. 📌 Refe..

원본 테이블과의 조인 결과를 기반으로 대상 테이블에서 삽입, 업데이트 또는 삭제 작업을 실행한다. 📌 쿼리 구조 target_table : MERGE 문의 WHEN 절에 지정된 삽입, 업데이트 또는 삭제 작업의 대상 table_source : target_table의 데이터 행과 일치하는 데이터 원본을 지정한다. 서브쿼리 또는 다른 테이블 SELECT 쿼리가 들어갈 수 있다. 보통 MERGE문은 행이 없는 경우 행을 삽입, 행이 일치하지 않는 경우 행을 업데이트하는 작업에 많이 사용한다. 📌 WHEN MATCHED 최대 두 개의 WHEN MATCHED 절을 사용할 수 있다. 두 개의 WHEN MATCHED 절을 사용할 때 주의가 필요하다. 1. 첫번째 절에 AND 조건을 주어야 한다. 예 : WHEN M..

✏️ Item 7 : 다 쓴 객체 참조를 해제하라 다 사용한 객체는 null 처리(참조 해제)해 메모리 누수가 발생하지 않도록 조심해야한다. 다 사용한 객체를 null 처리하면 실수로 해당 객체를 사용하는 것을 막을 수 있다는 장점이 있다. 메모리 누수에 주의 필요한 상황 & 해결 방법 1. 자기 메모리를 직접 관리하는 클래스 2. 캐시 - 캐시 외부에서 키를 참조하는 동안만 엔트리가 살아있는 캐시가 필요하면 WeakHashMap을 사용한다. - 시간이 지나수록 엔트리 가치를 떨어뜨리는 방식을 사용할 때는 백그라운드 스레드로 엔트리를 청소하거나, 새 엔트리를 추가할 떄 엔트리를 청소해줘야 한다. 3. 리스너, 콜백 - 콜백을 약한 참조로 저장한다. (WeakHashMap에 키로 저장) WeakHashMa..

이번에 JPA를 좀 공부해보면서 detach의 동작에 대해 이해하기 위해 테스트용 코드를 작성해봤다. 위와 같이 엔티티 클래스를 만들고 서비스 클래스에서 새로운 엔티티를 만들어 persist() 후 detach()를 호출했다. 위와 같이 서비스 클래스를 만들고 컨트롤러에서 /test GET 호출을 하면 MemberSerivceImpl의 test()가 호출되도록 개발했다. 내가 예상한 결과는 persist() 후 detach()해서 영속성 컨텍스트에서 엔티티를 관리하지 않고, transaction commit 전에 detach 했기 때문에 /test GET 호출 후 DB에 Member 데이터가 들어가지 않았을 것으로 생각했다. 그런데 확인해보니 DB에 데이터가 들어갔다. 예상한 것과 다른 결과가 나왔다. ..
- Total
- Today
- Yesterday
- JavaScript
- orphanRemoval
- 토비의 스프링
- 영속성
- 스프링 부트 테스트
- Effective Java
- uploadfive
- DataAnnotation
- default interface
- 빌더 패턴
- 고아 객체
- Spring
- SpringBoot
- jQuery
- 스프링MVC
- ASP.NET
- 스프링
- Nullable
- 다이내믹 프록시
- spring boot
- 자바의 정석
- 준영속
- c#
- OWIN
- C# 문법
- MSSQL
- @Modifying
- JpaRepository
- JPA
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |