이론




자바FX

***혹시 RUN하는데 targetException이 뜬다면,  각 모듈의 id와 UI멤버 변수들이 일치하는지 확인할 것 ***


단위작업 : 하나의 통합된 작업을 세부단위로 분해하여, 가장 작은 단위의 직업을 말한다.


javafx에서의 스레드 핸들링

1.Platform.runLater()( == handler.post)

2.Task(바인딩 개념 : Runnable 인터페이스를 상속)

call() -> 스레드를 핸들링한다(진짜 스레드가 해야하는 일)

successed() -> UI처리 -> Update()/UI값 바인딩

cancle() 

service()

3.Service


안드로이드에서 Thread가 safe한가?

safe하지 않다. 안드로이드 자체에서는, UI Thread를 기본 스레드로 핸들링 했을 때 과부하가 걸릴 수 있기 때문.

Thread UI Handler와 Thread 안에서 handler.post를 이용해 handler와 통신하는 방법이 있고, 두번째로 AsynchTask가 있다.


모델 == 안드로이드의 베이스어댑터



실습


stackpandemo0525.FXMLDocumentController.java


stackpaneex.FXMLDocumentController.java


stackpaneex.Phone.java


threaduidemo0525.FXMLDocumentController.java


threaduidemo0525.threaduidemo0525.java


threaduidemo0525.app.css


'학원수업 > 자바' 카테고리의 다른 글

학원 46일차 복습(5/23)  (0) 2018.05.23
학원 13일차 복습(3/30)  (0) 2018.03.30
학원 12일차 복습(3/29)  (0) 2018.03.30
학원 11일차 복습(3/28)  (0) 2018.03.28
학원 10일차 복습(3/27)  (0) 2018.03.27

이론



http://gluonhq.com/products/mobile/javafxports/get/ 맨 밑에꺼 다운로드

unzip armv6hf-sdk-8.60.9.zip

http://docs.gluonhq.com/javafxports/#anchor-1 참고

> cd armv6hf-sdk/

> cd rt

> cd lib/

> sudo cp ext/jfxrt.jar /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/ext/

> sudo cp arm/* /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/

> sudo cp javafx.platform.properties /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/

> sudo cp javafx.properties /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/

> sudo cp jfxswt.jar /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/


-라즈베리의 dio.jar 파일을 netbeans의 libraries에 넣어준다

자바FX 프로젝트 빌드후 dist안의 파일 복사후 라즈베리에서

> sudo java -jar testpi.jar 



java ME doc

https://wiki.openjdk.java.net/display/dio/Main  

-mercurial (Git같은 것,  소프트웨어 개발을 위한 크로스-플랫폼 분산 버전 관리 도구)

> sudo apt-get install mercurial

> hg clone http://hg.openjdk.java.net/dio/dev

> ls (dev 확인)

> cd dev

> export PI_TOOLS=/usr

> export JAVA_HOME=

> export JAVA_HOME=/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/

> make

> ls -l (build 확인)

> cd deviceio/lib/

>  sudo cp arm/libdio.so /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/

>  sudo cp ext/dio.jar /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/ext/




 sudo nano /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/security/java.policy

permission jdk.dio.DeviceMgmtPermission "*:*", "open";

permission jdk.dio.gpio.GPIOPinPermission "*:*", "open,setdirection";

permission jdk.dio.gpio.GPIOPortPermission "*:*";

permission jdk.dio.i2cbus.I2CPermission "*:*";

permission jdk.dio.spi.SPIPermission "*:*";

permission jdk.dio.spibus.SPIPermission "*:*";

permission jdk.dio.uart.UARTPermission "*:*", "open";

추가하기


fritzing : 회로도 그리는 툴

http://fritzing.org/download/?donation=0 에서 windows 64bit 다운로드



실습


FXMLDocumentController.java


LED.java


'학원수업 > 자바' 카테고리의 다른 글

학원 47일차 복습(5/25)  (0) 2018.05.28
학원 13일차 복습(3/30)  (0) 2018.03.30
학원 12일차 복습(3/29)  (0) 2018.03.30
학원 11일차 복습(3/28)  (0) 2018.03.28
학원 10일차 복습(3/27)  (0) 2018.03.27

평가



60문제 풀이 : 만점

Adapter디자인, URL커낵터 체크하기


  



'학원수업 > 자바' 카테고리의 다른 글

학원 47일차 복습(5/25)  (0) 2018.05.28
학원 46일차 복습(5/23)  (0) 2018.05.23
학원 12일차 복습(3/29)  (0) 2018.03.30
학원 11일차 복습(3/28)  (0) 2018.03.28
학원 10일차 복습(3/27)  (0) 2018.03.27

이론



서버 코드: 클라이언트로부터 소켓의 연결 요청이 오면 accept()메서드가 호출이 되어서 Socket객체를 반환하고

다중 소켓을 처리하기 위해서 ArrayList에 적재한다.

이때 ArrayList에 들어갈 소켓들은 스레드가 담당하게 되며, 접속한 클라이언트당 소켓이 각각 ArrayList에 들어가게 되는 구조이다.

Thread는 결국 각 소켓의 연결된 스트림을 담당하게 되고 서버는 이 스트림을 통해서 각각의 클라이언트에게 응답메세지를 전달하게 된다.



1. 서버 시작을 위해서 port를 9999번으로 입력한 서버객체를 생성한다.

2. 생성자 초기화

3. 생성된 Ex1_Server객체의 execute메서드를 호출한다.

4.무한반복하면서 Socket의 accept() 접속을 대기한다.

5. XXIP의 port서버로 접속을 한다

6.접속해온 클라이언트의 소켓을 ServerThread가 관리하도록 한명이 접속해 올때 마다 생성시켜두고

                이것을 Generic로 가지고 있는 ArrayList에 그 주소를 넣어서 소켓의 주소를 메모리영역에 참조하게 한다.

                 스레드는 start한다

7번 접속후 사용자가 소켓을 통해서 메세지를 전달한다.

        서버의 ServerThread가 관리하는 Socket과 통신한다.

        Output으로 보내면 / 서버에서는 InputStream으로 받는다.

         talk/ 임의로 약속된 서버와 클라이언트의 프로토콜이 된다

8. 지속적인 메세지를 받아내는 블록킹 메서드

9. 결국 클라이언트의 프로토콜을 분석해서 접속한 모든 클라이언트에 전송한다.(브로드캐스팅)

 10.서버로부터 sendMsg가 호출이 되어서 전송되어온  메세지를 받아서 프로토콜을 분석하여 클라이언트가 해야할

            일을 정의한 스레드 익명 내부클래스임

  


실습


ex1.CanvasDemo

ex1.CanvasTemplate

ex1.ServerThread

ex1.Server

ex1.Chat


'학원수업 > 자바' 카테고리의 다른 글

학원 46일차 복습(5/23)  (0) 2018.05.23
학원 13일차 복습(3/30)  (0) 2018.03.30
학원 11일차 복습(3/28)  (0) 2018.03.28
학원 10일차 복습(3/27)  (0) 2018.03.27
학원 9일차 복습(3/26)  (0) 2018.03.26

이론


PrintWriter에서이어쓰기  true ,덮어쓰기 (디폴트) false


서버(Server): 사용자들에게 서비스를 제공하는 컴퓨터 

클라이언트(Client): 서버에게 서비스를 요청해서 사용하는 컴퓨터

소켓(socket): TCP를 사용하여 응용 프로그램끼리 통신을 하기 위한 연결 끝점(end point)

ServerSocket 클래스: 서버를 위한 소켓

Socket 클래스: 클라이언트를 위한 소켓



InetAddress는 get매서드를 호출하여서 필요한 InetAddress클래스를 받아서 사용한다. 싱글턴(new로 생성안함)


URL(Uniform Resource Location): 인터넷에서 접근 가능한 자원의 주소를 표현할 수 있는 형식을 의미한다.

입력한 호스트로 URL을 생성하고 URLConnection을 생성

        http://www.hostname.com:8080/mvtest?cmd=1000&n=300

        프로토콜://호스트:포트/파일?쿼리(param=value)

[프로토콜][host][port][path][query]



서버는 요청을 받아서 클라이언트에게 응답 , 연결된 소켓에서 스트림을 생성해서 사용

1.서버로 요청  -> 2. 서버가 요청을 받고  ->  3. 서버가 클라이언트에게 응답 -> 4.서버로부터 응답받음


블로킹메서드:  accept(), readLine();

  


실습


ex1.Ex1_InetAddr

ex1.Ex2_InetAddr

ex1.Ex1_URL

ex1.Ex2_InputStreamURL

ex1.UrlSearching

ex2.Ex1_Server

ex2.Ex1_Client

ex2.Ex3_Server

ex2.Ex3_Client


'학원수업 > 자바' 카테고리의 다른 글

학원 13일차 복습(3/30)  (0) 2018.03.30
학원 12일차 복습(3/29)  (0) 2018.03.30
학원 10일차 복습(3/27)  (0) 2018.03.27
학원 9일차 복습(3/26)  (0) 2018.03.26
학원 8일차 복습(3/23)  (0) 2018.03.23

이론


Adapter디자인패턴을 적용한->MouseAdapter의 원리파악하기

        인터페이스의 추상메서드를 필터링해서 제공해주는 기능

        활용도 Dao의 인터페이스와 같은 곳에서 적용할수 있다.


  synchronized :동시화

    withdraw를 호출하는 스레드가 안전하게 lock pool에서

    작업을 끝낼 때 까지 다른 스레드의 간섭을 받지 않는다.

    작업이 끝나면 당연히 다음 스레드가 이일을 같은 방식으로 진행

    public synchronized void withdraw(int money) { - wait(), notify()

    GUI , Network 상에서 스레드들을 사용하게 됨

    WebApplication에서 스레드에 의해서 자원이 관리가 되기 때문에

    싱글톤 패턴으로 동기화가 적용되어진다.


스레드가 사용하는 공유자원을 각 스레드들이 사용할 때 임계영역이 발생하고, 동시성 문제가 발생된다.


서비스 운영 방식 (standalone 과 xinetd) 

standalone 요청받으면 끊어야한다.

xinetd 끊어지면안됨


포트: 서비스번호


OS->IP->서비스(대기)->데몬


TCP/IP:양방향, UDP:단방향, ICMP, 포트,프로토콜,URL


클라이언트 2.요청 


게이트웨이,DNS,TCP/UDP,IP,URL


서버 1.대기(host,port,protocol)


실습


ex1.Ex5_MultiThread

ex1.CanvasDemo

ex1.Ex3_canvas1

ex1.MyThread0

ex2.Account
ex2.Bank

ex3.MyCar

ex3.Producer

ex3.Customer

ex3.ProducerMain


'학원수업 > 자바' 카테고리의 다른 글

학원 12일차 복습(3/29)  (0) 2018.03.30
학원 11일차 복습(3/28)  (0) 2018.03.28
학원 9일차 복습(3/26)  (0) 2018.03.26
학원 8일차 복습(3/23)  (0) 2018.03.23
학원 7일차 복습(3/22)  (0) 2018.03.22

이론


한글자 단위로 읽고 쓸수 있는 Reader, Writer계열의 스트림은 내부적으로 버퍼를 내장함

내장된 버퍼는 버퍼가 가득채워질때에만 스트림을 통해서 내보낸다.

flush()는 버퍼가 가득차지 않아도 비우게 한다.


BridgeStream: 바이트 스트림을 문자스트림으로 연결시켜주는 스트림

    

noBridgeStream:   많이 자주 사용 ***** Scanner, PrintWriter


PrintWriter 특징 : autoflush 제공하고

                        println()메서드를 사용해서 한줄단위로 문자열을 전송!

        


StringToken에서 WhiteSpace조차도 인덱스로 취급한다. WhiteSpace를 토큰으로 취급하지 않는다.

StringBuilder sb = new StringBuilder(); //가비지컬렉션의 부담을 줄이기 위해


프로세스 : 프로그램이 실행된 상태
데몬 : 서비스 ,메인스레드에 종속

프로세스의 최소단위: 스레드
스레드 : 별도의 stack 수행

스레드를 상속하는 방법 : extends Thread    
implements Runable
익명내부클래스로 스레드 생성

스레드 생성->스타트메서드호출
start() -> jvm - os의 스케줄러로부터 하나의 스레드를 받아서 ->jvm   --> run()
인터페이스로 구현할때는 start() 메서드가 없으므로 스레드를 새로 생성하고 start해야한다.
생명주기가 끝난 스레드의 주소를 다시 사용할 수 없다.


실습


ex1.Ex1_FileWriteDemo

ex1.Ex1_FileReadDemo

ex1.StringToken

ex1.Ex3_Message

ex1.Ex3_FileWriter

ex1.Ex2_BridgeStream

ex2.Ex2.Th1

ex2.Ex2.Th2

ex2.Ex2.Main

ex2.ExTestThread

ex2.ExTestThread2

ex2.Ex3_Main


'학원수업 > 자바' 카테고리의 다른 글

학원 11일차 복습(3/28)  (0) 2018.03.28
학원 10일차 복습(3/27)  (0) 2018.03.27
학원 8일차 복습(3/23)  (0) 2018.03.23
학원 7일차 복습(3/22)  (0) 2018.03.22
학원 6일차 복습(3/21)  (0) 2018.03.21

이론


NullPoint예외시 객체생성을 확인하라!


trim() : 문자열 앞뒤 공백을 제거함



Map: key와 value로 저장할 수 있는 자료구조.

Properties: 키와와 값을 String 타입으로 제한한 Map 컬렉션

.properties 파일을 읽어들일때 주로 사용


일차스트림(원시스트림): 장치에 직접 연결가능

이차스트림: 장치에 직접연결할수 없음, 기능을 가지고 있음 ,일차스트림으로 연결시켜줘야함

스트림은 자원이므로 finally에서 close() 해줘야한다.


버퍼: 임시저장소로 사용됨


FileInputStream: 파일로부터 바이트 단위로 읽어 들일 때 사용

FileOutputStream: 파일에 바이트 단위로 데이터를 저장할 때 사용


FileReader: 파일로부터 문자 단위로 읽어 들일 때 사용

FileWriter: 파일에 문자 단위로 데이터를 저장할 때 사용


Data(Input,Output)Stream: 자료형까지 저장할 수 있는 기능을 가진 스트림이다. 반드시 입력했을 때 순서가 매우 중요함 *****

데이터에 저장된 자료형의 순서대로 그대로 메서드를 호출할 것



Serializable : 직렬화 시키는 인터페이스 객체->Data

역직렬화: Data->객체

Serializable 인터페이스 내에서 transient입력시 직렬화 대상에서 제외시킨다.


writeObject(ObjectOutputStream out)

- 직렬화 직전 자동 호출 

     - 추가 직렬화할 내용 작성 가능 


readObject(ObjectInputStream in)

     - 역직렬화 직전 자동 호출

     - 추가 역직렬화 내용 작성 가능


추가 직렬화 및 역직렬화 필요한 경우

     - 부모 클래스가 Serializable 구현하지 않고, 자식 클래스가 Serializable 구현한 경우

     - 부모 필드는 직렬화에서 제외

> writeObject() 에서 부모 필드 직렬화 필요

> readObject()에서 부모 필드 역직렬화 필요

> 부모 클래스가 Serializable 구현하도록 하는 게 제일 쉬움






실습


ex1.Ex5_Map

ex1.Ex1_FileOutputStreamDemo

ex1.Ex1_FileInputStreamDemo

ex1.Ex1_FileInputStreamDemo1

ex1.Ex1_TestProperties

ex1.Exam1_FileCp

ex1.Ex2_FileDemo

ex1.Exam3_FileDemo

ex1.Ex2_FileSearch

ex1.DataOutputDemo

ex1.DataInputDemo

ex1.Data

ex1.Ex2.ObjectOutputStreamDemo

ex1.Ex2.ObjectInputStreamDemo

ex1.KostKo



'학원수업 > 자바' 카테고리의 다른 글

학원 10일차 복습(3/27)  (0) 2018.03.27
학원 9일차 복습(3/26)  (0) 2018.03.26
학원 7일차 복습(3/22)  (0) 2018.03.22
학원 6일차 복습(3/21)  (0) 2018.03.21
학원 5일차 복습(3/20)  (0) 2018.03.20

이론


Generic: 객체의 cast를 줄임으로서 불필요한 메모리 낭비를 방지하자는 목적

Collection에 Object형을 사용하지 않고 전용객체로 사용하는 개념!

              JDK5부터 지원, JDK7 버젼부터 생성시 <>로 축약가능!


모든 Collection은 반복자(iterator)를 제공해줌

반복자 객체의 hasNext()와 next() 메소드를 이용하여서 컬렉션의 각 원소들을 접근 하게 된다.


MemberVO: 순수하게 회원의 값만을 가지는 객체


Set구조는 중복을 허용하지 않는다. 중복을 제거하면서 반복자, 향상된 for문에 TreeSet오름차순 정렬을 보장함


event 처리하기 위해서는 이벤트 감지자가 필요하다.

발생하는 이벤트의 종류를 파악한 후 이벤트처리 인터페이스를 구현, 버튼에 이벤트 감지자를 등록 해놔야 한다.


cardLayout 생성해서 이벤트가 발생할 때 마다 자식카드를 호출 하기위함

event처리

입력이 완료된 이후 다음페이지로 이동하기 위해서 card를 호출





실습


ex2.Ex2_Generic

ex2.Ex3_MemArray

ex2.MemberVO

ex1.MemberDemo

ex1.Ex1_HashSet

ex1.Ex2_ArrayVsLinked

team.MemberInfo

team.MemberList

team.GuiJoin

team.ConsoleJoin

'학원수업 > 자바' 카테고리의 다른 글

학원 9일차 복습(3/26)  (0) 2018.03.26
학원 8일차 복습(3/23)  (0) 2018.03.23
학원 6일차 복습(3/21)  (0) 2018.03.21
학원 5일차 복습(3/20)  (0) 2018.03.20
학원 4일차 복습(3/19)  (0) 2018.03.19

이론


오류의 종류: 에러,예외

예외의 종류: 컴파일 예외, 런타임예외

예외(exception): 잘못된 코드, 부정확한 데이터, 예외적인 상황에 의하여 발생하는 오류

예외 처리: try-catch-finally , throws

오류가 발생하였건 발생하지 않았건 항상 실행되어야 하는 코드는 finally 블록에 넣을 수 있다.


throws: 예외 떠넘기기

getMessage(): 예외 발생시킬 때 생성자 매개값으로 사용한 메시지 리턴

printStackTrace(): 예외 발생 코드 추적한 내용을 모두 콘솔에 출력 , 오류 찾을 때 유용하게 활용


list:    순서유지, 중복저장

set:    순서X, 중복X, null은 허용

map:    키값가짐, 키는 set을 따름(중복X)





실습


ex1.Ex0_ArrayIndex

ex1.Ex1.NullPoint

ex1.Ex2.ArrayIndexException

ex1.Ex3.MultiException

ex1.Ex5.ThrowView

ex1.Ex6.UserException

ex1.Ex6.UserExceptionTest

ex1.exam.Exam1_Exception

ex1.exam.Exam2_Exception

ex2.Ex0.GuiTest

ex2.Ex0.Num

ex2.Ex1.ArrayList


'학원수업 > 자바' 카테고리의 다른 글

학원 8일차 복습(3/23)  (0) 2018.03.23
학원 7일차 복습(3/22)  (0) 2018.03.22
학원 5일차 복습(3/20)  (0) 2018.03.20
학원 4일차 복습(3/19)  (0) 2018.03.19
학원 3일차 복습(3/16)  (0) 2018.03.16

+ Recent posts