728x90

1. 공백이 보이게 설정

Window > Preferences > General > Editors > Text Editors > show whitespace characters에 체크 저장

다른 블로그 설명보기 [오니님의짱꺤뽀] 


2. 단축키 변경 : Next Editor Ctrl + Tab

Window > Preferences > General > Keys > [type filter text]에 Next Editor 검색  Binding 부분에 Ctrl +Tab 입력 저장

다른 블로그 설명보기 


3. 저장 할 떄마다 실행

Window > Preferences > Java > Editor > Save Actions  Perform the selected action on save 선택, Additional actions 선택 configure 클릭하고 필요한것 추가

code Style : Variable declarations

Missing Code : Annotations

Unnecessary Code :  Remove redundant typo argument  1.7 이후..

다른 블로그 설명보기[FreeLife의 저장소]


4. 언어 설정  UTF-8

Window > Preferences > General > Workspace > Textfile encoding 에 Other 선택후 UTF-8

Window > Preferences > Web> CSS Files > Encoding UTF-8  선택

Window > Preferences > Web> HTML Files > Encoding UTF-8  선택

Window > Preferences > Web> JSP Files > Encoding UTF-8  선택

Window > Preferences > XML> XML Files > Encoding UTF-8  선택


5. 주석 설정 

Window > Preferences > Java > Code Templates > Configure generated code and comments : 의 Types,  Methods,  등 수정

type

/**

 * ${file_name}

 * - 설명을 써주세요

 * 

 * @version 1.0 / ${date}

 * @author ${user}

 *

 */

methods

/**

 * ${enclosing_method}

 * -설명을 써주세요

 *

 * ${tags}

 * @author ${user}

 */







'For Real > Java & Spring' 카테고리의 다른 글

javax.net.ssl.SSLHandshakeException  (0) 2018.07.03
java.security.InvalidKeyException: Illegal key size  (0) 2018.07.02
Head First Java  (0) 2018.06.26
이클립스 공백 문자 보이기 설정  (0) 2018.06.18
[SQL]  (0) 2018.06.14
728x90

2. 클래스와 객체

- 인스턴스 변수 : 객체에서 자신에 대해 아는 것

- 메소드 : 객체에서 자신이 하는 것. 인스턴스란 객체를 부르는 다른이름.

- main 메소드의 두가지  용도 : 클래스를 테스트 하기 위한 용도, 자바 에플리케이션을 시작하기 위한 용도.

- 자바의 청소

자바는 객체가 만들어지면 힙이라는 메모리 공간에 저장 - 가비지 컬렉션 기능이 있는 힙

JVM에서 어떤 객체가 절대로 다시 쓰이지 않을 것이라 생각되면 가비지 컬렉션대상이 됨.

- 나는 누구일까요?

.java파일 컴파일 하면 ? 클래스

내 인스턴스 변수의 값은 다른 친구의 값과 다를 수 있습니다 .? 객체

템플릿 같은 역할 ? 클래스

저는 무너가 하는 것을 좋아합니다 ? 객체 메소드

저는 메소드 여러개를 가질 수 있습니다. ? 클래스 객체

저는 상태를 나타냅니다. ? 인스턴스 변수

저는 특정행동을 할 수 있습니다. ? 객체 클래스

저는 객체 안에 들어있습니다. ? 메소드 인스턴스 변수

저는 객체 인스턴스를 만들기 위한 용도로 쓰입니다. ? 클래스

제 상태는 바뀔 수 있죠 ? 객체 인스턴스 변수

 클래스와 객체는 모두 상태와 행동이 있다. 이 둘은 모두 클래스에서 정의 . 


3. 원시 변수와 레퍼런스 

-원시유형

char 16bit   char  f = 'f';

byte 8bit

short 16bit

int 32bit

long 64bit

float 32변동 가능    float f = 32.5f;

double 64bit 변동가능

-래퍼런스 유형

예약어 (reserved word) 컴파일러 인식 할 수 있는 키워드를 비롯한 단어

배열도 객체


4. 메소드에서는 인스턴수 변수를 사용합니다. 

- 클래스에서는 객체가 아는 것과 객체가  하는 것을 기술한다. 

- 메소드에서 사용하는것은 매개변수 호출하는 쪽에서 전달하는 것은 인자. 

(인자와 매개변수는.. 입장 차이군... 인스턴스 생성후 메소드에 인자를 전달함... 메소드의 매개변수 자리에)

- 캡슐화

다른 코드에서 직접 접근하지 못하게 geter setter메소드 이용

- 인스턴스 변수(전역변수) 지역변수 차이점.

1. 인스턴스 변수는 클래스 내에서 선언. 

2. 지역변수는 메소드 내에서 선언'

3. 지역변수는 사용전 반드시 초기화   --컴파일과정 에러

- 레퍼런스 변수 가 같은지 확인할 때 > .equals()

- 원시 유형 같은지 확인할 때  ==

- 나는 누구일까요?

인스턴스 변수 , 게터, 세터, 메소드 : 클래스에 들어갈 수있는 제한없음

return문 : 메소드에 이것은 하나뿐

리턴값 인자  이것은 자동으로 더 큰 유형이 될 수 있다. 

캡슐화 : 저는 인스턴스변수가  private인 것을 좋아합니다. 

값으로 전달 : 


5. 프로그램 만들기

- 익스트림 프로그래밍 (XP) 

  조금씩 자주 발표

 사이클을 반복해서 돌리면서 발표

스펙에 있는것만 집어 넣는다. 

테스트 코드를 먼저 만든다. 

정규일과 시간에만 작업

기회가 생기는 족족 어디서든 코드를 개선

모든 테스트를 통과하기 전에는 어떤 것도 발표하지 않는다. 

현실적인 작업 계획을 만든다. 

단순하게 일처리 

두명씩 팀 편성 모든 사람이 대부분의 코드를 알 수 있도록 돌아가면서 작업

--> 

1. 고수준 설계부터 시작

2. 준비코드, 테스트코드, 실제 자바코드  세가지를 만든다. 

3. 준비코드는 무엇을 해야할지. 

4. 테스트 코드는 준비코드 활용

3. 메소드 구현전에 테스트 코드 제작 

4. 순환문코드는 반복문 횟수를 미리 알수 있으면 while보다 for 사용

5. 변수에 1을 더할 때 선/후 증가 연산자사용


6. 자바 API를 알아봅시다. 

-arrayList


7. 상속과 다형성

접근 제한자. 

오버라이드 규칙

메소드 오버로딩


8. 인터페이스와 추상클래스

-추상클래스

-추상 클래스 아닌 것 구상클래스.

-추상메소드

-구상메소드

-Object

 Object로 선언된 변수로 참조되는 객체를 실제 객체 유형으로 선언된 변수에 대입할 수 없다. 

 모든 객체는 Object클래스의 인스턴스

-캐스팅

-컴파일러는 레퍼런스가 참조하는 실제 객체의 클래스가 아닌 레퍼런스 변수를 성넝ㄴ할 때 지정한 유형의 클래스를 확인

- 상속

- 다중상속 : 죽음의 다이야몬드.

- 인터페이스

- 인터페이스? 하위클래스?


9. 생성자와 가비지 컬랙션

- 인스턴스 변수는 각 개별 객체가 가지고 있는 fileld를 나타냅니다. 

- 메소드가 호출하면 그 메소드는 스택 맨위에 올라감... 현재 실행중인 메소드  

- 실제 스택에 들어가는 것은 스택 프레임. ...

- 객체는 실제 힙안에 들어가있음.  르것의 변수만 스택에 들어감. 

. - 생성자에는 객체를 생성할 때 실행되는 코드가 들어있다. 

      new  키워드 사용해씅ㄹ 때 실행되는 코드

     직접만들지 않아도 기본생성자는 자동으로 만듬 .. 만약 인자를 제공하는 생성자가 1나라도 있고. 인자없는 생성자가 없는 상태에서 인자없이 생성 못함

- 인스턴스 생성시 상위 클래스에 대한 공간도 같이 생김. -- 객체 상속트리에 들어있는 모든 생성자 실행.  - 연쇄 (constructor chaining)라는 과정

1)  생성자를 만들지 않았을 경우 생성자에서 상위 생성자를 호출하는 super() 메소드를호출하는 선언문 포함된 기본생성자 생성

2)  생성자를 만들었을 경우 super미포함.  컴파일러에서 super() 선언문 추가해줌.

- super()를 호출하는 선언문은 모든 생성자의 첫번째 선언문이어야함

- 모든 생성자에는 super(), this()를 호출하는 선언문이 들어갈 수 있지만 둘다 쓸수 없다. 

- this()는 가틍ㄴ 클래스에 있는 다른 생성자를 호출할때 사용. this()는 생성자에서만 호출할 수 있으며 반드시 그 생성자의 첫번째 선언문 

- 지역변수의 삶과 영역의 차이점

삶 : 지역변수는 스택 프레임이 스택에 들어있는 동한 계속 살아있다. = 메소드가 종료될때까지 살아있다. 

영역 :변수를 선언한 메소드 내부로 제한. 그 메소드에서 다른 메소드를 호출하면 그 변수는 아직 살아이씾만 원래 매소드가 계속해서 실행되기 전까지 영역밖에 있기 떄문에 쓸수가 없다. == 스택 제일 위에 있을 때만사용

가비지 컬렉션 대상이 된다 : 프로그램에서 쓸 메모리가 부족해지면 GC 에서 대상이 되는 객체들 중일 일부 또는 전체를 없애버리고 램이 다 떨어지는 사태를 미연에 방지. 

레퍼런스 제거 3가지 : 영역 벗어남, 레퍼런스에 다른객체 대입, 레퍼런스를 null 로 주입


10. 숫자와 정적변수, 정적 메소드

Math : 거의 전역 메소드...

static : 클래스의 인스턴스 없이 메소드 실행가능, 정적 메소드 호출시 클래스명 사용.  정적메소드가 아닌 메소드 호출시 레퍼런스 변수명 사용.


정적 메소드가 아닌 메소드가 하나라도 있으면 그 클래스의 인스턴스를 만들 수 있는 방법이 반드시 하나 있어야. 새로운 객체를 구하는 방법은  new 를 사용하는 역직렬화 를 이용하는 방법....

정적변수는 공유됩니다. 같은 클래스에 속하는 모든 인스턴스에서 그 정적변수의 하나뿐인 복사본을 공유합니다. 

인스턴스 변수 : 인스턴수마다 한 개씩

정적변수 : 클래스 마다 한개씩

정적변수는 클래스에 속하는 객체가 처음으로 만들어지기 전에 초기화된다. 

정적변수는 그 클래스에 속하는 정적 메소드가 실행되기 전에 초기화 된다. 


static final로 선언된 변수는 상수 입니다.  상수의 변수명은 모두 대문자로 씁니다. 

final클래스는 하위클래스를 만들수 없다. 

final 메소드는 오버라이드 할수 없다. 

정적메소드는 힙에 그 메소드가 들어있는 클래스의 인스턴스가 없어도 호출할 수 있다. 


Math.random() 메소드  

random() 0.0이상 1.0미만 dougle 값

abs() 절대값

round() 반올림

min()작은값

max()큰값 리턴


wrapper 클래스

ArrayList HashMap 같은것에 넣을 때 사용  자바 5.0 이전.. 원시변수 객체 레퍼런스 분리로 맞바꿔사용 불가. 


오토박싱 : 원시값과 객체 사이의 경개를 없애다

자바 5.0 도입  

오토박싱 사용 예 : 메소드 인자, 리턴값, 부울표현식 수에대한 연산, 대입, 

부울표현 : 참거짓 , 논리표현

Integer.parsInt()

.toStriingString.format("%,d",1000000);

"%,d" : v포멧팅 지시사항...  : 10진정수 쉼표

%는 인자가 들어갈 자리 

%,2f  쉼표를 집어넣고 소수점 아래 둘째 자리까지 나오는 부동소수점 수로 포매팅하라. 

포멧 지시자. 

% 인자번호, 플래그, 너비, .정밀도 유형

format ("%,6.1f",42000)

인자번호 : 인자가 두개 이상일 떄 어떤 인자를 쓸지 지정 

, :플래그

6 : 넓이

.1 : 정밀도

f , d: 유형 변경자 

%d : 십진정수 fomat("%d",42); 42

%f 부동소수점 fomat("%.3f",42.000000)  ; 42.000

%x 16진수 format("%c".42);  2a

%c 문자  format("%c",42) *


the num 2000 , and 3000

int one = 2000

double tow = 30000.00 

String.format("the num %,d, and %,.2f,one,two);


날짜

날짜 시간 전부 표시  : %tc

String.format("$tfc",  new Date())

시간만 표시 : %tr

요일 월일 : %tA %tB %td

< : 포메터에게 이전인자 다시 써주세요 .

format("%tA, %tB %td", today, today, today)

format("%tA, %<tB %<td",  today)


Calendar

- 지금 날짜와 시각 은 Date 다른 용도는 calendar

Calendar cal = Calendar.getInstance()

add

get

getInstance

getTimeInMillis

roll

set

set

setTimeInMllis

ZONE_OFFSET : 그리니치 표준시와의 차이(밀리초 단위)

HOUR/HOUR_OF_DAY

12 / 24


정적임포트 

** 가독성이 떨어질 수 있음

import static java.lang.System.out;

import static java.lang.Math.*


11. 예외 처리

예외도 객체. Exception 유형의 객체

try catch  : 예외적인 상호아 처리...

tjrpw mew Exception

RuntimeException은 try/catch 사용여부 상관없이 어디선든 사용가능

* finally  : try catch 블록에 return 선언문이 있어도 finally 블록은 실행된다. 


메소드에서 예외를 두 개 이상 던질 수 도 있다. 

public void doLaundary() throws PantsException, LingerieException(


)  --> catch 블록 순서의 중요성.  작은것 --> 큰것으로 나열

1.exception 발생  -> 메소드 try catch 미사용 ...  --> main ... 해당 메소드 스택에서 제거..---> jvm 종료



javax.sound,midi.*;


12 GUI

swing

13스윙 사용방법


 14 직렬화와 파일 입출력

자바프로그램에서만 데이터 사용 : 직렬화 이용

다른 프로그램에서도 사용하면 : 일반 텍스트로 저장

1. FileOutputStream 만든다. 

FileOutputStream fileStream = new FileOutputStream()"MyGaime.ser";

2. ObjectOutputStream을 만든다. 

ObjectOutputStream os = new ObjectOutputStream(fileStream);

3. 객체를 저장한다. 

os.WriteObject(characterOne)

4. ObjectOutputStream 닫는다. 

os.close();


연결 스트림 : connection stream   : 출발지 목적지 연결 나타냄

연쇄 스트림 : chain stram       : 다른스트림에 연쇄되어사용

FileOutputStream  : 연결 스트림에는 바이트를 저장하기위한 메소드가 있지만 직접 저장하지 않는다. 

ObjectOutputStream : 연쇄 스트림 : 객체를 스트림으로 보낼수 있는 형태로 바꿈. 

객체 ------>  ObjectOutPutStream-연쇄스트림 (객체 직렬화) -----> fileOutpoutStream-연결스트림(객체 바이트형태저장)  --->01001101010-파일(목적지)

       (전달)                                                                (연쇄)


객체 직렬화 

Serializable

objectOutputStream.writeObject(a)

   ; a는 반드시 직렬화  아니면 런타임 오류. 


객체 복구


728x90

Eclipse 메뉴에서
Window -> Preference -> General -> Editors -> Text Editors에서 show whitespace characters를 체크한다.


http://zolasse.blogspot.com/2012/04/eclipse.html


728x90

EXEC, byte 크기

EXEC 저장 프로시저 실행

두 가지 방법으로 저장 프로시저를 실행할 수 있습니다. 가장 일반적인 첫 번째 방법은 응용 프로그램 또는 사용자가 프로시저를 호출하는 것입니다. 두 번째 방법은 SQL Server 인스턴스가 시작될 때 자동 실행되도록 프로시저를 설정하는 것입니다. 응용 프로그램이나 사용자가 프로시저를 호출할 때Transact-SQL EXECUTE 또는 EXEC 키워드가 호출에서 명시적으로 지정됩니다. 

https://docs.microsoft.com/ko-kr/sql/relational-databases/stored-procedures/execute-a-stored-procedure?view=sql-server-2017


 byte 크기 

  select datalength('글자') as byteSize;



network adapter could not establish the connection

>> 다른계정 설치 원인 

>>http://blog.naver.com/PostView.nhn?blogId=vincentkim11&logNo=221220297659&parentCategoryNo=&categoryNo=13&viewDate=&isShowPopularPosts=true&from=search


microsoft sql server management studio  auto commit 해제

  https://suneethasdiary.wordpress.com/tag/disabling-auto-commit-mode-in-sql-server-management-studio/

Disabling Autocommit mode in SSMS

By default as we know SSMS (SQL Server Management Studio) is in a Autocommit mode, which means whenever a transaction is executed then that is committed by default. If we want to disable Auto commit mode in SSMSL, then follow below steps:

  1. Connect to SQL Server using SSMS
  2. From the Menu bar, select Tools –> Options
  3. Select Query Execution –> SQL Server –> ANSI
  4. Make sure that you check the check box SET IMPLICIT_TRANSACTIONS
  5. Click on OK

Now, open a new Query window and start executing the scripts. 



728x90

짧은 정리 :::

abstract superClass(

static  void  factoryMethod();

protected static void templateMethod(){

system.out.println("실행")

}

)

 추상 클래스를 상속받았을 때... 시작이 추상메소드면 팩토리 메소드 패턴

                            시작이 default 메소드면 템플릿 메소드 패턴. 이라고 부르는듯... 이 defaut 메소드는 템플릿 메소드라고 부른다.

* 추상 메소드는 하위클래스를 위한 교약(protocol)의 일부를 정의하기 위해 사용 (추상 <--> 구상)


  




디자인 패턴 : 소프트웨어 설계시 특정 상황에서 자주 만나는 문제를 해결하기 위해 사용할 수 있는 재사용 가능한 솔루션

               GoF의 디자인 페턴 에릭감마, Head First Design Patterns 에릭 프리먼 추천 


템플릿 메소드 패턴. 

: 상속을 통해 슈퍼 클래스의 기능을 확장할 떄 사용하는 가장 대표적인 방법

 : 슈퍼클래스에서 디폴트 기능을 저으이해 두거나 비워뒀다가 서브클래스에서 선택적ㅇ로 오버라이드 할 수 있도록 만들어둔 메소드.   훅(Hook) 메소드라고 한다. 

: 서브클래스에서는 추상메소드를 구현하거나 훅 메소드를 오버라이드 하는 방법을 이용해 기능의 일부를 확장한다. 

* 기본 알고리즘 골격을 담은 메소드를 템플릿 메소드라고 브른


팩토리 메소드 패턴

:  이 메소드는 주로 인터페이스 타입으로 오브젝트를 리턴, 정확히 어떤 클래스의 오브젝트를 만들어 리턴할지 슈퍼클래스는 모름. 슈퍼클래스의 기본 코드에서 독립시키는 방법. 



출처 : 토비의 스프링 

728x90

주요질문 :

DI 란?

IOC 컨테이너란?




강의 : https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EC%8A%A4%ED%94%84%EB%A7%81-%EA%B0%95%EC%A2%8C/

1강 스프링이란?

1-1 프레임워크

프레임워크란, 특정한 목적에 맞게 프로그래밍을 쉽게 하기 위한 약속

ex) 스프링 프레임워크 안드로이드 프래임워크


1-2 스프링

자바언어를 기반으로 다양한 어플리케이션을 제작하기 위한 약속된 프로그래밍 틀

스프링의 경우 톰캣을 이용할 수있고 EJB에 비해 코드의 경량화, 개발중 테스트가 쉽다. 

국내 자바개발자의 표준 프레임워크


스프링학습 이전에 자바 jsp Servlet에 대한 선행학습이 반듯이 필요하며 그외 html javascript jquery css등의 스크립트 언어도 기본적인 학습이 필요

스프링은 계속 업데이트되어 있고, 그 내용에 대한 학습이 필요함.


웹 컨테이너

1. 웹 서버의 컴포넌트 중하나로 자바 서블릿과 상호작용한다. 

2. 웹 컨테이너는 서블릿 생명주기를 관리하고 URL과 특정 서블릿을 맵핑하며 URL 요청이 올바른 접근 권한을 갖도록 보장한다. 

오픈소스 웹 컨테이너 : 아파치 톰캣, 등


톰캣 7.0 (강의 권장)

Servers탭>tomcat v9.0 Server at localhost  더블클릭

Server Options >

use tomcat installation 체크 

publish module contexts to separate xml files 체크

Ports>

html/1.1  8181 로 변경... 8080은 오라클 내부에서 사용 부딧칠 수 있음


2강 스프링 프로젝트 만들기

2-1 이클립스에 스프링 플러그인 설치

Spring Tool Suite

2-2 Spring Project 퍼스펙티브 추가. 

2-3 DI  , IOC 컨테이너 ==spring
Dependency Injection
; A객체가 일을 할때 다른 객체 B, C를 이용해서 일을한다....
방법 1 : new B() , new C()  A가 직접 생성
방법 2 : setter() or construct()   --> new B() , new C()  
: DI  B/C 객체 외부에 생성하여 A객체에 넣어(주입)준다. ;스프링이 채택
ex) 인터페이스를 통한 부품화
IOC 컨테이너 Inversion of Control : 객체를 제외하고 부품들을 넣어둔 집합체, 결합도를 낮춰줌

결국 스프링이란? 부품을 생성하고 조립하는 라이브러리 집합체라고 할수 있습니다. 


3강. DI Dependency Injection

3-1 스프링을 이용한 객체 생성과 조립

스프링 === 생성과 조립










728x90

상황:

java.net.BindException: Address already in use: JVM_Bind <null>

원인: 해당 포트를 이미 사용중.. 

해결 :   포트 킬..(출처 : http://welcomejini.blogspot.kr/2014/01/1.html)

1. 특정포트가 열려있는지 확인
- netstat -na | findstr "포트"

2. 열려 있는 포트의 PID 확인
- netstat -nao | findstr "포트"

3. PID 찾기
- tasklist | findstr "PID번호"

4. 프로세스 죽이기
- taskkill /f /pid "PID번호"



728x90



+ Recent posts