본문 바로가기

전체 글154

[디자인패턴] 어댑터 패턴 (Adapter Pattern) 목적 클래스의 인터페이스를 클라이언트가 원하는 형태의 인터페이스로 변환 인터페이스 호환이 안되는 클래스를 사용할 수 있게 해줌 요소 문제 : 사용 객체의 API가 서로 다름 해결 : 함수를 변환하는 객체를 중간에 넣음 결과 : 변경 최소화 정의 어댑터를 통해 오리 대신 칠면조 사용하기 어댑터 클래스 (Turkey 인터페이스를 Duck 인터페이스로 사용할 수 있도록 만듬) public class TurkeyAdapter implements Duck { Turkey turkey; public TurkeyAdapter(Turkey turkey) { this.turkey = turkey; } public void quack() { turkey.gobble(); } public void fly() { turkey.. 2021. 12. 5.
[스프링] 스프링 핵심원리 - 스프링 컨테이너와 빈 Ioc, DI, 컨테이너, 빈 IoC (Inversion of Control) 프로그램의 제어 흐름을 직접 제어하는 거이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)라 한다. 프레임워크는 내가 작성한 코드를 제어하고, 대신 실행한다. DI (Dependency Injection) 한 객체가 추상화에만 의존할 수 있도록 어떤 구현체에 의존할 지는 AppConfig 같은 외부 클래스에서 결정하고 의존관계를 주입함 의존 관계는 정적인 클래스 의존 관계와, 실행 시점에 결정되는 동적인 객체(인스턴스) 의존 관계를 구분해서 생각해야함 외부에서 실제 구현 객체를 생성하고 클라이언트에 전달해서 실제 의존관계가 연결 되는 것을 의존관계 주입이라 한다. 의존관계 주입을 사용하면 정적 의존 관계를 변경하지 않고, .. 2021. 12. 5.
[데이터베이스] Data Analytics with SQL - DW, OLAP Data Analytics with SQL Overview Data analytics 예측을 위해 패턴, 관계, 모델 등을 추론하는 데이터 처리 주로 비즈니스적 결정에 사용됨 Common steps in data analytics 여러 소스로부터의 데이터를 한 곳에 모은다 데이터를 요약한 집합과 보고서를 생성한다 OLAP(Online analytical processing system)이 interactive qeury를 가능하게 함 예측 모델을 만든다 Data Warehousing Data warehouse (DW) 의사결정을 위해 다양한 데이터베이스들을 수집한 후 하나의 통일된 형식으로 저장한 데이터베이스들 관계형 DB를 근간으로 많은 데이터를 다차원 분석하여 의사결정에 도움을 주는 시스템 데이터 소.. 2021. 12. 5.
[디자인패턴] DAO 패턴 목적 업무와 DBMS를 분리하기 위해 사용 요소 문제 : DB를 사용하는 방법이 변경되면 클라이언트의 수정이 많아짐 해결 : 사용 방법의 분리 결과 : loose coupling, 확장성 정의 Dao : 모델에 대한 기본적인 CRUD 인터페이스 Value Object (Model Object) : Dao를 사용하여 데이터를 저장하는 단순 POJO(실제 데이터를 담는 자바 클래스) -> Dao 가 DBMS서 받은 데이터를 넘겨줄 때는 VO에 담아서 넘겨줌. DaoImpl에서 findById 메소드를 구현한 코드. public Person findById(int id) { Person person = null; try { String fmt = "SELECT * FROM %s WHERE id = %d"; S.. 2021. 12. 4.
[IntelliJ] 로그 한 줄 표시 - 좌우 스크롤, 자동 줄바꿈 위와 같이 로그가 길 경우 화면에 맞춰 자동으로 줄 바꿈이 될 경우 우측에 버튼을 눌러 보기 설정을 변경할 수 있다. 이렇게 화면에 맞춰 자동 줄바꿈 되는 것을 Soft-Wrap이라 한다. 이를 해제하면 자동 줄바꿈이 되지 않고 한 줄에 다 나오고 좌우 스크롤이 생긴다. 2021. 11. 18.
첫 회사 면접 후기 - 신입 백엔드 개발자, 스프링, 산업기능요원 강남의 한 스타트업에서 면접을 봤다. 기술면접 1시간의 경험을 쓰려한다. + 산업기능요원으로 검색 유입이 되길래 이를 알아보는 사람들을 위해 지원과정을 얘기하자면 로켓펀치, 원티드, 프로그래머스에서 병역특례를 모집하는 공고를 찾고, 해당 플랫폼의 이력서로 지원했습니다. 해당 기업에 지원하고 코테를 보라는 메일이 왔고, 이 코테에 합격하고 면접을 보게 됐습니다. 내가 했던 프로젝트 먼저 물어본 것은 내가 이력서에 제출한 프로젝트의 내용들이다. 로켓펀치 이력서에는 내가 했던 프로젝트들을 모두 넣지 않고, 세 가지를 넣었는데 모두 분야가 달랐다. 의외였던 것은 백엔드로 지원했기 때문에 백엔드에 관한 질문 위주로 할 줄 알았는데, 가장 먼저 물어보신 것은 AI 대회에서 상을 받았던 언택티콘에 대한 것이었다. 나.. 2021. 11. 10.
[데이터베이스] SQL 총정리 1 DB 생성 및 테이블 생성 releation=테이블, 컬럼=필드=열=속성, 튜플=행=로우=레코드 create database [DB명] create table [테이블명]( [필드명] [type(n)] [option], ... , [option]); type char(n) : n 만큼 고정된 크기 할당 varchar(n) : 필요한 만큼만 크기 할당. 최대 n만큼 할당함 int, smallint : 보통 int는 8바이트 smallint는 4바이트 numeric(d,p): 소수 d는 총 길이, p는 소수 몇 째 자리 까지표시할 지 numeric(7,3) → 0000.000 option not null, primary key, foreign key 등이 있음 여러 필드를 pk 또는 fk 지정할 경우 필드에.. 2021. 10. 27.
[디자인패턴] 반복자 패턴 (Iterator Pattern) 목적 여러 요소들을 담고 있는 객체이 내부 구조에 대한 이해 없이 각 요소를 순서대로 접근하고 사용할 수 있도록 방법을 제공 요소 문제: 자료 구조 클래스의 요소를 한 개씩 접근하는 API가 서로 다름 해결: 반복자 객체를 중간에 넣음 결과: 변경 최소화 구현 iterator(): 반복자에 대한 참조를 반환 (Iterator 자료형) hasNext(): 요소가 더 존재하는지 확인 (true / false) next(): 다음 요소 가져오기. Object를 반환하므로 변환해서 사용 // Iterator 사용 Iterator iter = cities.iterator(); while (iter.hasNext()){ String s = (String)iter.next(); System.out.println(s).. 2021. 10. 18.
[디자인패턴] 싱글턴 패턴 (Singleton Pattern) 목적 클래스가 한 개의 인스턴스만을 만들 수 있도록하고, 어디서나 생성된 인스턴스에 접근할 수 있도록 요소 문제: 여러 객체가 생성되면 상태 관리 어려움 해결: 객체 생성자를 중앙 관리 결과: 객체가 한 개임을 보장 구현 1. 기본 생성자을 private 으로 막는다. 2. static 함수로 객체를 생성하도록 함 public class Singleton{ private static Singleton uniqueInstance; private Singleton(){} // private으로 생성자 막음 public static Singleton getInstance(){ if (uniqueInstance==null){ uniqueInstance = new Singleton(); } return uniqu.. 2021. 10. 18.
[디자인패턴] 팩토리 패턴 (Factory Pattern) 목적 객체 생성용 인터페이스 정의 구체적인 클래스를 명시하지 않고 관련되거나 의존적인 객체들을 생성할 수 있는 인터페이스 제공 new는 인터페이스가 아니라 실제 클래스(concrete class)의 객체를 생성 OCP에 어긋남 (변경에 대해서 닫혀있지 않다) 생성할 객체가 늘어나면 코드 수정 필요 요소 문제: 실제로 구현되는 클래스의 객체를 생성할 때 객체의 종류가 달라지면 클라이언트 코드를 많이 수정해야함 해결: 생성을 분리해서 캡슐화 시킴 결과: 사용할 객체가 많거나 객체를 생성하는 방법이 변경 되어도 연쇄적인 수정이 적어짐 정의 Creator가 Factory에 해당한다. ConcreteCreateor는 Product타입의 ConcreteProduct들을 가져와 factoryMethod로 작업한다. .. 2021. 10. 18.