본문 바로가기

분류 전체보기

(108)
2020년 자바에 대한 전망 (JetBrains) 인텔리제이를 개발하는 젯브레인즈 블로그에서 최근에 올려진 글을 아주 대충, 부정확하게 번역, 요약한 것이다. 그것도 일부만...! 더 정확한 글을 읽고 싶다면 여기로....! A Picture of Java in 2020 자바 탄생 25주년 기려서 온라인 Java day event를 열었고, 수많은 전문가가 그들의 경험을 공유하거나 이 언어를 통해 더 많은 것을 얻기 위한 팁을 제공했다. 이것은 우리에게 어떤 영감을 주었고, 자바에 대한 공통적인 상태를 발견하기 위해, 또 여러분의 질문들에 대답할수 있도록 심층적인 데이터를 연구하기로 했다. 이번주에 배포된 Java 15와 함께 자바에 대한 어떤 상태를 함께 묶어 당신에게 보여주기로 헀다. 이 글은 몇가지 다른 소스에서 데이터를 가져왔고, 우리의 Devl..
신흥철 교수의 이산 수학 3, 4 강: 한정자, 논리, 2장 증명 1장 명제 3. 변수를 포함한 명제와 한정자 명제 함수 (Propositional Function) P(x) 명제는 참과 거짓으로 판별할 수 있는 문장, 수식이다. 그런데 변수를 포함한 문장이 되려면 명제가 되려면 명제를 참이나 거짓으로 판별할 수 있는 변수의 범위(한정자, Quantifier)가 지정되어야 한다. 명제에 포함되된 변수가 속하게 될 범위를 논의 영역(Universe of Discourse - D)이라고 한다. 그리고 이 논의 영역 D에 속하는 변수 x를 포함하여 진릿값을 판별할 수 있는 문장이나 수식을 명제 함수(Propositional Function - P(x))라고 한다. 예제) 명제함수 P(x,y)가 x = 2y일 때, P(1,2)와 P(2,1)의 진릿값은? P(1,2) 1 != ..
신흥철 교수의 이산 수학 1, 2강 : 1장 명제와 논리 이산 수학은 불연속을 다루는 수학이다. 대체적으로 1과 0을 다룬다. 1은 전원이 켜져있는 상태(참) 0은 전원이 꺼져있는 상태(거짓) 1장 명제와 논리 명제(Propsition) 명제의 정의 : 참 또는 거짓으로 구분되는 문장이나 수식 (영어 소문자 p,q,r 등으로 표현) ex) 컴퓨터 가격은 비싸다. 참 거짓 구분이 불가능하므로 명제 x x + 1 = 2 -> x 값에 따라 참 거짓이 달라지므로 명제 x 진릿값(Truth Value) : 참 또는 거짓이라는 두 종류의 값 예제) "2**n = n ** 2을 만족하는 정수 n이 하나 이상 존재한다."는 문장은 명제인가? n 이 2, 4인 경우 둘다 만족하므로 이 문장은 명제에 해당하며 진릿값은 참이다. 논리연산자(명제의 결합) : 사칙 연산이 있는 것..
2020.9.25 일자 수업 : JSON, 네트워크 실습 - JSON 형식 git/eomcs-java-project-2020/mini-pms-32 다양한 언어와 플랫폼에서 모두 호환되는 데이터 형식은 xml과 JSON 이 있다. 다만 xml는 메타데이터의 비중이 크기 때문에 메모리 낭비가 심하다. 따라서 JSON 형식에 따라 데이터 파일을 만들어보려고 한다. JSON이란? 속성-값 또는 키-값 으로 된 데이터 객체를 텍스트로 표현하는 개방형 표준 데이터 포맷이다. 예를 들어 다음과 같은 형식을 취한다. {속성:값, 속성:값, ...} {"no":1,"name":"1","email":"1","password":"1","photo":"1","tel":"1"} 텍스트 형식이기 때문에 프로그래밍 언어나 운영체제에 영향을 받지 않는다. 바이너리 방식에 비해 데이터..
2020.9.24 일자 수업 : character stream class 실습 - character stream class git/eomcs-java-project/mini-pms-31-a 바이너리보다는 포맷이 가독성이 높아지고, 다른 언어와 플랫폼 간에도 호환성이 높아지는 장점이 있기 떄문에 이번에는 바이트 단위가 아닌 캐릭터 단위로 데이터를 파일에 입출력해볼 것이다. 이때 사용되는 data sink stream class는 FileWriter / FileReader이다. 텍스트 포맷과 바이너리 포맷의 차이점 가독성 바이너리 포맷은 사람이 보기가 불편하지만 텍스트 포맷은 사람이 직접 보고 편집할 수 있다. 전용 애플리케이션 바이너리 포맷은 그 포맷을 이해하는 애플리케이션을 이용해야만 읽고 쓸 수 있지만, 텍스트 포맷은 메모장과 같은 텍스트 에디터만 있으면 읽고 쓸 수 있다...
2020.9.23 일자 수업 : 파일 입출력 실습 - 파일 바이너리 입출력 git/eomcs-java-project/mini-pms-30-a 저번 실습에는 파일을 Filewriter와 FileReader와 Scanner를 통해 csv파일에 직접 문자를 입출력했으나, 이번에는 모든 데이터를 바이트 형식으로 입출력해볼 것이다. Data Sink Stream Class 중에서도 바이트를 입출력하는 도구인 FileInputStream과 FileOutputStream을 사용하여 save, load 메서드를 구현할 것이다. 프로젝트에서 다루는 boardList, memberList, ProjectList, taskList 에 저장되는 각 인스턴스들의 필드 정보를 .data 파일에 저장하려면 각 필드의 데이터 타입을 고려해서 이것들을 바이트로 적절히 변환해야 ..
2020.9.22 일자 수업 : 데코레이터 패턴, 파일 입출력 파일 입출력 git/eomcs-java-basic/src/main/java com.ecoms.io.ex09 데코레이터 패턴(Decorator Patter) GoF의 디자인 패턴 중 하나. 객체의 타입과 호출 가능한 메소드를 그대로 유지하면서 객체에 새로운 책임을 추가할 때 사용한다. 탈부착 가능한 책임을 정의할 때 사용한다. 상속을 통해 서브클래스를 계속 만드는 방법이 비효율적일 때 사용한다. 특히 조합되는 경우의 수가 많으면 서브클래스 수가 폭발적으로 늘어날 수 있다. Concrete Component : 완제품으로 객체를 생성하는데 다른 객체를 필요로 하지않고, 포함할 수도 없다. FileInputStream, ByteArrayInputStream 등이 이에 속한다. Decorator : Concre..
2020.9.16 일자 수업 : 람다 문법 람다 문법 git/eomcs-java-basic/src/main/java com.eomcs.oop.ex12 람다 문법이 생긴 이유 메서드를 만드려면 클래스를 꼭 만들어줘야하는 객체지향 언어의 번거로움을 해결하기 위한 문법 람다 문법은 인터페이스를 구현한 클래스의 선언부와 메서드의 선언부를 모두 생략할 수 있다. 다음 예제에서 익명클래스로 인터페이스를 구현한 코드와 람다 문법으로 인터페이스를 구현한 코드가 결과적으로 같은 작업을 수행한다. public class Exam0110 { interface Player { void play(); } public static void main(String[] args) { // 익명 클래스로 인터페이스 구현하기 Player p1 = new Player() { @Ov..