본문 바로가기

Language19

윈도우에서 VSCODE C/C++설정 tasks.json { "version": "2.0.0", "runner": "terminal", "type": "shell", "echoCommand": true, "presentation" : { "reveal": "always" }, "tasks": [ //C++ 컴파일 { "label": "save and compile for C++", "command": "g++", "args": [ "${file}", "-g", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "group": "build", //컴파일시 에러를 편집기에 반영 //참고: https://code.visualstudio.com/docs/editor/tasks#_defining-a-pro.. 2020. 6. 28.
BOM(byte order mark) 문제 fatal error: UTF-16 (LE) byte order mark detected in http://blog.wystan.net/2007/08/18/bom-byte-order-mark-problem wystan's tales > UTF-8 인코딩에서의 BOM(Byte Order Mark) 문제 다양한 언어를 표현할 수 있도록 해주는 유니코드(Unicode) 인코딩에는 여러가지 방식이 있습니다. 최근 웹 환경에서 많이 쓰이는 UTF-8을 비롯해서 UTF-16, UTF-32 등이 이런 인코딩 방식을 나타내지요 blog.wystan.net 2020. 6. 28.
맥에서 VS code로 C/C++ 빌드, 실행 개발 환경설정 tasks.json(컴파일과 실행 설정) { // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ { "label": "build_gcc", "type": "shell", "command": "gcc", "args": [ "-g", "-o", "${fileDirname}/${fileBasenameNoExtension}.out", "${file}" ], "group": { "kind": "build", "isDefault": true }, "problemMatcher": [ "$gcc" ] }, { "label": .. 2020. 6. 26.
LOG4J2와 로깅 라이브러리 Log4j의 로깅 레벨 (지정한 것 이상의 레벨메시지가 출력) ① FATAL : 가장 크리티컬한 에러가 일어 났을 때 사용한다. ② ERROR : 일반 에러가 일어 났을 때 사용한다. ③ WARN : 에러는 아니지만 주의할 필요가 있을 때 사용한다. ④ INFO : 일반 정보를 나타낼 때 사용한다. ⑤ DEBUG : 일반 정보를 상세히 나타낼 때 사용한다. ⑥ TRACE : 경로추적을 위해 사용한다. 출처: https://goddaehee.tistory.com/45 [갓대희의 작은공간] 2020. 6. 11.
얕은 복사를 피하기 위해서 참조객체는 clone을 재구현해야 한다? package sec03.exam04_clone; public class Member implements Cloneable { private String id; private String name; private String password; private int age; private boolean adult; public Member(String id, String name, String password, int age, boolean adult) { this.id = id; this.name = name; this.password = password; this.age = age; this.adult = adult; } public Member getMember(){ Member cloned = nu.. 2019. 10. 21.
타입파라미터를 제한하는 방법은 두가지이다. 이것이 자바다 - 13장 제네릭-제한된 타입 파라미터 으로 작성해서 제한하는 내용을 타입파라미터에 명시하는 방법과 public static V getValue(P p, K k) { if(p.getKey() == k) { return p.getValue(); } else { return null; } 제한하는 내용을 그냥 파라미터의 다형성을 활용하는 방법 두가지 다 활용될 수 있다. public static V getValue(Pair p, K k) { if(p.getKey() == k) { return p.getValue(); } else { return null; } } 참조: https://cafe.naver.com/thisisjava/14898 이것이 자바다 13제네릭 4번문제 대한민국 모임의 시작.. 2019. 9. 2.
Thread상태상수인 WAITING, BLOCKED와 상태제어 메소드인 wait()과 notify()의 관계 이것이 자바다 - 12장 멀티스레드 - 스레드 상태 제어 notify()메소드와 wait()메소드는 스레드에서 사용하는 것이 아니라 공유객체에서만 사용된다. 스레드 상태중에 일시정지를 의미하는 상수로 WAITING, BLOCKED, TIMED-WAITING이 있다. 상태를 중심으로 생각해보면, TIMED-WAITING은 sleep()메소드를 사용하면 이뤄지는 상태변화이다. WAITING은 wait()메소드나 join()메소드를 사용하면 이뤄지는 상태변화이다. BLOCKED는 공유객체의 synchronized메소드나 synchronized블록을 수행하는 스레드가 있는 상황에서 이 공유객체에 접근하는 다른 스레드들이 얻게되는 상태변화이다. 이제 거꾸로 wait()메소드나 notify()메소드 같이 메소드를 .. 2019. 9. 1.
Future<T> submit(Runnable task, T result)는 무엇을 리턴하나? 이것이 자바다 - 12장 멀티스레드 - 리턴값이 있는 작업 완료 통보 책에서 Runable은 작업에 리턴값이 없을때 사용하고, Callable은 작업에 리턴값이 있을 때 사용한다고 한다. submit(Runnable task) future.get() -> null future.get() -> 예외 발생 submit(Runnable task, Integer result) future.get() -> Integer 타입 값 future.get() -> 예외 발생 submit(Callable task) future.get() -> String 타입 값 future.get() -> 예외 발생 그러나 책에서 제공하는 위의 표에 가운데에 있는 있는 submit은 Runnable임에도 불구하고 두번째 파라미터가 re.. 2019. 8. 31.
CompletionService의 take()의 용도 이것이 자바다 - 12장 멀티스레드 작업 - 완료 순으로 통보 스레드 풀의 스레드가 꼭 의도한 작업처리를 위해서만 사용된다는 관점에서 벗어나서 다른 작업들의 완료된 작업을 콘솔로 출력하는 코드도 작업으로 만들어 스레드 풀의 작업큐에 넣으므로써 스레드풀의 스레드가 결과 값을 받아 내는 작업을 실행하도록 한다. 즉, 기존에 ExcutorService의 get()만으로 사용하던 방식에서는 Future future1 = excutorService.submit(task1, result); Future future2 = excutorService.submit(task1, result); result = future1.get(); result = future2.get(); future2 작업이 먼저 끝났다 하더라도 .. 2019. 8. 30.