본문 바로가기

전체 글

[드림코딩 앨리 강좌] 타입스크립트 + OOP 마스터 과정 - Chap 4. 객체지향 프로그래밍 2021.07 ~ 2021.09 진행 본 글은 드림코딩 앨리 - 타입스크립트+OOP 마스터 과정 인강을 들은 후 정리한 내용입니다 Imperative and Procedural Programming 명령&절차적 프로그래밍 모든 함수가 전역변수에 접근 가능 정의된 순서대로 함수가 호출되는 형태 절차적 프로그래밍 단점 전체적인 애플리케이션 동작 방식을 이해해야 됨 하나를 코드 수정하면 → 사이드 이펙트 발생 확률 높아짐 한 눈에 애플리케이션 이해하기도 어렵 결국 유지보수, 확장성 떨어짐 Object Oriented Programming 객체 지향 프로그래밍 프로그램을 객체로 정의해서 객체들끼리 서로 의사소통하도록 디자인 객체 지향은 서로 관련있는 데이터와 함수를 Object 단위로 만들어나감 학생, 은행, .. 더보기
백준 3273. 두 수의 합 문제 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 (ai, aj)쌍의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수열의 크기 n이 주어진다. 다음 줄에는 수열에 포함되는 수가 주어진다. 셋째 줄에는 x가 주어진다. (1 ≤ n ≤ 100000, 1 ≤ x ≤ 2000000) 오답 원인 이 문제를 봤을 때, 이중 for문을 생각했다. 시간복잡도는 O(N^2) 이므로 시간 초과가 났다. // 시간초과 for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j.. 더보기
[Oracle] docker로 oracle 실행 후, DB 한글깨짐현상 해결 데이터를 AS-IS → TO-BE 로 이전하면서 가장 많이 발생하는 문제 중 하나가 데이터의 변경과 손실이다. 데이터 이관 후 조회했을 때 글자가 다 깨져서 알아볼 수 없는 상황이 발생하는 이유는 서로의 Character Set이 일치하지 않아서가 거의 대부분의 이유이다. Character Set이란 데이터베이스 내부에 데이터가 저장될 때 참조되는 글자의 종류를 적어 놓은 일종의 사전이다. 사용자가 어떤 데이터를 Insert 하게 되면 Server Process가 Insert할 때 Character Set을 보고 글자를 확인하고 입력 해 주는 원리이다. 만약 사용자가 입력한 글자가 Character Set에 없는 글자라면 Server Process는 무슨 글자인지 몰라서 그냥 ?로 저장하게 된다. 이 C.. 더보기
Log4j 설정법 (log4jdbc-log4j2 라이브러리 이용) MyBatis는 내부적으로 JDBC의 PreparedStatement를 이용해서 SQL을 처리합니다. 따라서 SQL에 전달되는 파라미터는 JDBC에서와 같이 '?' 로 치환되어서 처리됩니다. 따라서 SQL 로그를 제대로 보기 위해서는 log4jdbc-log4j2 라이브러리를 사용해야 합니다. 1. mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4.1/1.16 Maven Repository: org.bgee.log4jdbc-log4j2 » log4jdbc-log4j2-jdbc4.1 » 1.16 org.bgee.log4jdbc-log4j2 log4jdbc-log4j2-jdbc4.1 1.16 // https://mvnreposi.. 더보기
[Java] 제네릭 1.1 왜 제네릭을 사용해야 하는가? 컴파일 시 강한 타입 체크를 할 수 있다. 실행 시 타입 에러가 나는 것보다는 컴파일 시에 미리 타입을 강하게 체크해서 에러를 사전에 방지하는 것이 좋다. 타입 변환(casting)을 제거한다. 비제네릭 코드는 불필요한 타입 변환을 하기 때문에 프로그램 성능에 악영향을 미친다. 1.2 제네릭 타입을 살펴보자 제네릭 타입은 타입을 파라미터로 가지는 클래스를 말한다. 타입을 파라미터로 가진다는 말이 무슨말일까? 다음 예시를 보자. 다음과 같이 필드 타입을 Object로 가지고 있는 Main 메소드가 있다. class Box { private Object object; public void set(Object object) { this.object = object; } p.. 더보기
[Java] StringBuffer, StringBuilder 클래스 문자열을 저장하는 String은 내부의 문자열을 수정할 수 없다. 예를 들어 String의 replace() 메소드는 내부의 문자를 대치하는 것이 아니라, 대치된 새로운 문자열을 리턴한다. String 객체를 + 연산할 경우에도 마찬가지다. String data = "ABC"; data += "DEF"; String 객체는 내부 데이터를 수정할 수 없으므로 "ABC" 에 "DEF" 가 추가된 "ABCDEF" 라는 새로운 String 객체가 생성된다. 그리고 data 변수는 새로 생성된 String 객체를 참조하게 된다. 문자열을 결합하는 + 연산자를 많이 사용할수록 그만큼 String 객체의 수가 늘어나기 때문에 프로그램 성능을 느리게 하는 요인이 된다. 문자열을 변경하는 작업이 많을 경우에는 Strin.. 더보기
상대방의 소스를 받았는데 한글이 깨지는 경우 (Encoding 깨짐 현상) Window를 쓰고 있는 상대방의 소스를 Mac을 쓰고 있는 내가 받았더니 한글이 깨졌다. 물론, Encoding은 OS와 상관이 없다. 하지만 Window의 경우, 보통 이클립스나 sts.. 등 기본 인코딩이 MS949 로 되어 있는 경우가 있다. 사용자가 직접 UTF-8로 바꾸지 않는 이상, MS949 인코딩으로 저장되는 것이다. 이 경우, 우리는 소스 파일을 받고 어디서 고쳐줘야 할까? 프로젝트 우클릭 > Properties > Resource > MS949 (선택지에 없다면 직접 입력) 그리고 우리가 앞으로 작성할 코드가 UTF-8로 저장되게 하기 위해서는 Window > Preferences > Workspace > Text file encoding > UTF-8 로 지정해져 있는지 확인하자 더보기
[Maven 에러] oracle 라이브러리 추가 시 Missing artifact 오류 발생 에러 원인 oracle jdbc 라이브러리인 ojdbc6을 스프링 프로젝트에 추가하기 위해서 maven 설정을 하려고 할 때, Maven Repository 에서 가져온 dependency를 입력하면 아래와 같은 오류가 발생한다. 이유는maven 중앙 저장소에서 ojdbc6.jar를 제공하지 않기 때문에 파일을 가져올 수 없다는 것이다. 즉, 저장소 인증 문제이다. (이런 경우 제공은 하는데, 버전이 호환이 되지 않는 경우일 수도 있다.) 아무튼, 이렇게 dependency 설정 관련해서 에러가 났을 때는 해당 라이브러리가 확실하게 생성되어 있는지 확인해주어야 한다. 역시 ojdbc6.jar 파일은 없는 걸 볼 수 있다. 해결 방법 maven repository 에서 다른 ojbc6 을 이용한다. Mvn.. 더보기