분류 전체보기

Language/Java

정규표현식 메타문자 목록

정규표현식 메타문자를 사용할 때는 메타문자 앞에 \\ (역슬래쉬 2번)을 사용하여 Escape 처리를 해줘야한다. 메타문자 목록

컴퓨터 사이언스/Database

Join 시, on과 where의 차이

on : join 전에 조건을 필터링한다. where : join 후에 조건을 필터링한다. 공통점 inner join 을 할 때는 차이가 없다. 차이점 outer join 시, on으로 조건을 적용시켜야 원하는 결과를 얻을 수 있다. 여기서 원하는 결과는 outer table에 null 값들을 포함한 행들이 join의 결과값으로 반환된 것을 말한다. on 명령어 select m.id, m.username, t.id, t.name from member m left join team t on m.team_id = t.id AND t.name = "teamA"; where 명령어 select m.id, m.username, t.id, t.name from member m left join team t on m..

컴퓨터 사이언스/개발 상식

CQS ( Command Query Separation )

CQS 란? 어떠한 메서드를 호출했을 때, 내부에서 변경(side effect)가 일어나는 메서드인지, 내부에서 변경이 전혀 일어나지 않는 메서드인지 명확히 분리하는 것이다. 전자를 상태를 변경시키는 Command, 후자를 조회의 기능을 하는 Query라고 한다. 이 원칙을 지킴으로써 얻는 점 데이터 변경 관련 이슈가 발생했을 때, 변경이 일어나는 메서드만 찾아보면 되므로 유지보수가 좋아진다. 개발 시 권장 방법 insert - id만 반환한다. update - 아무것도 반환하지 않는다. 조회 - 내부의 변경이 없는 메서드로 설계한다.

Language/Java

Java Stream Collector

그룹화 스트림 사용 이후에 처리하기 조금 더 편리한 형태 즉, 내가 원하는 자료 구조로 그룹화 시킬 수 있다. groupingBy 전체 직원(Users)에서 직책(Position)별로 나눠서 직원을 그룹화 Map usersByPosition = users.stream() .collect(groupingBy(User::getPosition)); 결과 groupingBy의 파라미터로 온 분류함수를 기준에 의해 Map의 key로가고 객체들은 value로 그룹화되었다. {MANAGER=[tony, alex, oliveia], STAFF=[elsa, mayya, lily, jacob, jace], CEO=[eric] 2. 여러 조건에 의해서 분류 직책별로 우수사원을 뽑기위해 groupingBy의 오버라이드 메소드..

Language/Java

Inner Class 가 static 으로 선언되어야 하는 이유

만일 내부 클래스를 이용하는데, 내부 클래스에서 바깥 외부의 인스턴스를 사용할 일이 없다면 static 클래스로 선언해주어야 한다. 왜냐하면 static이 아닌 내부 인스턴스 클래스는 외부와 연결이 되어 있어 '외부 참조'를 갖게되어 메모리를 더 먹고, 느리며, 또한 GC 대상에서 제외되는 여러 문제점을 일으키기 때문이다. 하지만 정적 멤버 클래스는 외부 인스턴스 없이도 만들어질 수 있기 때문에 '외부 참조'가 존재하지 않게 되고, 이로 인해 일회용으로 사용된 바깥 클래스 객체는 더이상 내부 클래스 객체와 아무런 관계가 아니게 되어 정상적으로 GC 수거 대상이 되어 메모리 관리가 잘 된다. 따라서 inner 클래스를 선언할때 static 키워드를 붙여주지 않으면 '외부 참조' 현상 때문에, 내부 클래스 ..

Language/Java

얕은 복사, 깊은 복사

얕은 복사(Shallow Copy) 다양한 복합 멤버 변수를 갖고 있는 객체가 인스턴스가 생성될 때 인스턴스화 되면서 메모리에 할당된 주소의 값을 참조한다. 복사하려는 원본 객체에 대해서 새로운 단일 객체 또는 새로운 복합 객체를 만들고 원본 객체를 참조한다. 따라서 복사된 객체가 원본 객체에 종속적이다. call-by-reference와 유사한 개념이 된다. 깊은 복사(Deep Copy) 새로운 객체가 원본 객체 자체를 copy 하는 것이다. 즉, 원본 객체로부터 독립적인 객체를 생성한다. 즉, call-by-value 와 유사한 개념이 된다. 참조 https://okeybox.tistory.com/147 [Java] 얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy) 얕은 복사(Sha..

Language/Javascript

Rest Parameter

let origin = { name: "user", age: 20, petName: "dog", hobby: "playing game" } const { petName, hobby, ...rest } = origin console.log(rest) // { name:"user", age:20 }

Language/Javascript

얕은 복사, 깊은 복사

얕은 복사: 주소값까지만 복사 let copyObj = { ...obj } let copyArr = [ ...arr, ...secArr ] 깊은 복사: 실제 데이터까지 복사 JSON 데이터 포맷을 사용해서 전혀 새로운 객체 생성 let origin = { name: "user", age: 20, favoriteFood: { first: "sushi", second: "hamburger" } } const copy = JSON.stringify(origin) const deepCopy = JSON.parse(copy)

Language/Javascript

spread 연산자

하나로 뭉쳐있는 값들의 집합을 전개해주는 연산자 ... const arr = [ 1,2,3,4,5 ] console.log(...arr) // 1,2,3,4,5 const str = "hello" console.log(...str) // 'h','e','l','l','o' const obj = { name:"user", gender:"male" } const copyObj = {...obj}

Language/Javascript

구조분해할당

구조화 되어있는 배열, 객체와 같은 데이터를 destructuring 시켜서 각각의 변수에 담는 것 iterable 한 경우 ( 배열 ) let arr = [ 1, 2 ] let [ one, two ] = arr 객체의 경우 - key를 토대로 let obj = { name: "user", gender: "male" } let { name, gender } = obj let { name: newName, gender: newGender } = obj

kimjingyu
'분류 전체보기' 카테고리의 글 목록 (24 Page)