728x90

1/10~12  공부 (그동안 못했던것)& 생각정리

13~일 이력서, 포트폴리오 작성

14일~ 이력서 작성 & 하고 싶은거 하기. 


매일할일 ... 

1. 영어(1h)

2. IT 상식 공부(1h)

3. 코딩(4h)

일 

월 

화 

수 

목 

금 

토 

 

 

 

 

1.10 

영어공부했음. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



코딩 관련. 

java 8 정리 제네릭 포함

스프링

css javascript 정리 

728x90

6. 의존객체 Dependency injection

- 배터리 일체형(특정 배터리 소멸시 장난감 사야함) vs 배터리 분리형(쓸때 마다 배터리를 넣음 or 처음에 배터리가 있고 추가로 set하여 사용)

- 스프링 설정파일(applicationContext.xml)


7. 다양한 의존 객체 주입

생성자, setter, list, map 타입 DI 방법이 있다. 

7-1 :생성자를 이용한 의존 객체 주입

메소드중 첫자가 대문자면 생성자. 

public StuduntRegisterService(StudentDao studentDao){

this.studentDao= studentDao;

}

<bean id="studentDao" class="ems.member.dao.studentDao"/>

<bean id="registerService" class="ems.member.service.StudentRegisterService">

<constructor-arg ref="studentDao"></constructor-arg>

</bean>

7-2 :setter를 이용한 의존객체 주입

set 뒤의 대문자를 소문자로 바꾸고 찾음. 

 public void setJdbcUrl(String jdbcUrl){

this.jdbcUrl = jdbcUrl;

}

public void setUserId(String userId){

this.userId = userId;

}

public void setUserPw(String userPw){

this.userPw = userPw;

}

 <bean id="dataBaseConnectionInfoDev" class="ems.member.DataBaseConnectionInfo">

<property name="jdbcUrl" value="jdbc:orclae:thin:@localhost:1521:xe"/>

<property name="userId" value="scott"/>

<property name="userPw" value="tiger"/>

</bean>

7-3 :List타입 의존 객체 주입

 public void setDevelopers(List<String> developers){

this.developers=developers;

}

 <property name="developers">

<list>

<value>Cheney.</value>

<value>Eloy.</value>

<value>Jasper.</value>

<value>Dillon.</value>

</list>

</property>

7-4 :Map타입 의존 객체 주입

public void setDevelopers(Map<String, String> administrators){

this.administrators=administrators;

}

<property name="administrators">

<map>

<entry>

<key>

<value>Cheney</value>

</key>

<value>cheny@springPjt.org</value>

//<ref bean=""> 빈주입도 가능. 

<entry>

<entry>

<key>

<value>Jasper</value>

</key>

<value>Jsper@springPjt.org</value>

<entry>

</property>


8. 스프링 설정파일 분리

applicationContext.xml  --> 분리 appCtx1.xml, appCtx2.xml, appCtx3.xml

8-1-1 MainClassUseXmls.java

String[] appCtxs = {

"classpath:appCtx1.xml",

     "classpath:appCtx2.xml",

     "classpath:appCtx3.xml"

};

GenericXmlApplicationContext ctx = new GenericXmlApplicationContext(appCtxs);

8-1-1 appCtximport.xml 연결후 xml 파일에 import

<import resource="classpath:appCtx1.xml"/> 

<import resource="classpath:appCtx2.xml"/> 

<import resource="classpath:appCtx3.xml"/> 


JVM 에서 어플리케이션을 실행할때. main 을 찾아서 실행.. 프로젝트를 실행시키면 메인 메소드 목록을 보여줌. 


8-2 빈(Bean) 범위

싱클톤 singleton : 1개만 생성되며  getBean() 메소드로 호출될 때 동일한 객체가 반환된다. 

             호출1 : getBean("A"), 호출2: getBean("B")   >> 같은 메모리 주소에 있는 객체 1개만 호출. 

프로토 타입 prototype: 싱글톤 범위와 반대의 개념, scope 속성으로 명시해 주면된다. 

<bean id="injectionBean" class="scope.ex.DependencyBean" />

<bean id="dependencyBean" class="scope.ex.DependencyBean" scope="prototype">

<constructor-arg ref="injectionBean"/> 

<property name="injectionBean" ref="injectionBean"/>

</bean>


9. 의존객체 자동 주입

9-1 의존객체 자동주입이란?

스프링 설정 파일에서 의존객체를 주입할 때 Constuctor-org 또는 property 태그로 의존대상 객체를 명시하지 않아도 

스프링 컨테이너가 자동으로 필요한 의존 대상을 찾아서 의존 대상 객체가 필요한 객체에 주입해 주는 기능

구현한 방법은 @Autowired, @Resource 어노테이션을 이용해서 쉽게 구현할 수 있다. 

9-2 @Autowired

프로퍼티, 메소드, 생성자에서 객체의 타입이 일치하는 객체를 자동으로 주입한다. 

*** 프로퍼티, 메소드에 @ autowired사용시에는 반드시 default 생성자를 명시해야 한다. 

ex) sevice 에서 dao java 코드 에서 연결.. 

wordRegisterService.java

//@Autowired

private WordDao wordDao;

@Autowired

public WordRegisterService(WordDao wordDao){

this.wordDao=wordDao;


//@Autowired

//public void setW  

<Context:annotation-config/>

<bean id="wordDao" class="com.word.dao.wordDao"/>

<bean id="registerService" class="com.word.service.wordRegisterService">

<!--<constructor-arg ref="wordDao"/>-->

</bean> 


9-3 @Resource

@Autowired : 스프링컨테이너에서 객체를 찾음. 개체가 엄청많고.. 필요한 데이터 타입을 찾아 알맞은 데이터 타입을 넣어줌 
- 생성자, 프로퍼티, 메소드, 객체의 타입(WordDao를 찾음)이 일치하는 객체를 자동으로 주입한다, 디폴트 생성자 명기

@Resouce  : 객체의 타입을 보지 않고 동일한 이름이 있는지 찾아씀.    

- 프로퍼티, 메소드 객체의 이름(wordDao1를 찾음)이 일치하는 객체를 자동으로 주입한다, 디폴트 생성자 명기

- 생성자에는 못씀. 

@Autowired

public WordRegisterService(WordDao wordDao1){

this.wordDao=wordDao;

}  


10 의존 객체 선택

10-1 의존 객체 선택

동일한 객체가 2개 이상인 경우 스프링컨테이너는 자동주입 대상 객체를 판단하지 못해서 Exception을 발생시킨다. 

@Autowired

@Qualifier("userDao")

private WordDao wordDao; 

 <bean id="wordDao" class="com.word.dao.WordDao">

<qualifier value="usedDao"/>  //퀄리 필러 : 예선통과자

</bean>

<bean id="wordDao2" class="com.word.dao.WordDao"/>

<bean id="wordDao3" class="com.word.dao.WordDao"/>


10-2 의존객체 자동주입 체크

@Autowired(required=false)

10-3 @Inject (java 기능)

@Autowired(spring 기능) 와 유사 의존객체 자동 주입 체크 못함 

@Named  : @Qualifier와 유사  , Qualifier와 달리 xml 작성 안해도 됨. 







728x90

스프링 프레임워크

DI, AOP, MVC, JDBC  : 구조 만들어 나가는 방법론들.

AOP : 관점지향 프로그래밍 : 주요부분만 작업 공통부분 뺐다 더했다. 


- 스프링프레임워크, 모바일 프레임워크(안드로이드)

내비게이션 없음 : 네비게이션 있음 = 다양한 업무 : 본연의 업무

프레임워크가 없다면 모든 기능을 다 만들어야 함.


-스프링 프레임워크 모듈: 과거에는 라이브러리를 직접 다운받았지만, XML 파일 등을 이용 의존설정 함.

스프링 프레임워크 모듈

 기능

 spring-core 

DI, IoC(Inversion of control, 제어의 역전) 기능 제공 

 spring-aop

AOP  

 spring-jdbc

데이터베이스를 적은양의 코드로 다룰 수 있는 기능 제공 

 spring-tx

트렌젝션 관련 기능제공 

 spring-webmvc 

스프링 제공 Controller, View 이용한 스프링 MVC 구현기능제공 


-스프링 컨테이너(IoC)

스프링에 객체를 생성하고 조립하는 컨테이너로 컨테이너를 통해 생성된 객체를 Bean 이라고 부른다. 

XML 문서로 객체 생성 및 속성 데이터 작성 > 스프링 컨테이너에서 객체 생성 및 조립 > 개발문서로 애플리케이션 구현

 

- 개발환경 구축: Java 설치(java.exe: JVM 구동명령, javac.exe: 컴파일러, java -version), 환경변수 설정, 이클립스 다운로드

JDK  ⊃ JRE  ⊃ API  ⊃ JVM


프로젝트 생성

-1. 프로젝트 생성 : Maven Project

Create a simple project(skip archetype selection) 선택

Use default Workspace location 선택

Group id :  내가 사용하고 있는 프로젝트를 감싸고 있는 전체 큰 프로젝트

Artifact id : 현재 해당하는 프로젝트

 >> pom.xml 파일생성  java, resouces 파일 생성 확인

-2. pom.xml 작성

디펜시즈에 spring-context 추가

플러그인에 maven-compiler-plugin 추가. 

에러 : Project configuration is not up-to-date with : 메이븐 과 java의 버전이 맞지 않음.  >> 프로젝트 우클릭 > 메이븐>업데이트 프로젝트 

프로젝트 폴더 > src > main > java, resources

-3 pom.xml 파일의 이해

pom.xml 파일은 메이븐 설정파일로 메이븐은 라이브러리를 연결해주고 빌드를 위한 플랫폼이다. 

Maven Dependencies 폴더 :: 다운된 모듈들 다운. 

resources폴더 > applicationContext.xml :  스프링 컨테이너의 객체를 만들어줌 

                   > XML 파일 생성   : applicationContext.xml

                       Beans  ::  > <bean id="tWalk" class="testPjt.TranspotationWalk"/>

 java 코드  > GenericXmlApplicationContext ctx = new GenericXmlApplicationContext("classpath:applicationContext.xml");

                 TranspotationWalk transpotationWalk = ctx.getBean("tWalk", TranspotationWalk.class)

                 transpotation.move();

ctx.close();


또 다른 프로젝트 생성 방법

<bean/>














728x90

순환(Recursion) 알고리즘 : 재귀함수

- 모든 순환함수는 반복문(Iteration)으로 변경가능, 모든 반복문은 recursion으로 표현가능 

- 순환함수는 복잡한 알고리즘을 단순하고 알기 쉽게 표현하는 것을 가능하게 함, 하지만 오버해드가 있음(매개변수 전달, 엑티베이션 프레임 생성)

   (반복문에 비해 실행속도 불리, 경우에 따라 필요한경우도 있음)

-  순환함수가 되지 않기 위해 : 적어도 하나의 base case 존재,  Recursion을 반복하다보면 결국 base case로 수렴

- 암시적(implicit) 매개변수를 명시적(explicit) 매개변수로 바꾸어라


Factorial : n! 

0! = 1

n! = n x (n-1)! , n>0



Fibonacci Number

f0 = 0

f1=1

fn = fn-1 + fn-2   , n-1



Euclid Method : 최대공약수 

유클리드 방법 : 

m>=n 인 두 양수의 정수 m, n에 대해서 

m이 n 의 배수이면 gcd(m, n) =n 이고 그렇지 않으면  

gcd(m,n) = cde(n, m%n) 이다. 



Recursive Thinking : 순환적으로 사고하기

수학함수 뿐 아니라 다른 많은 문제들을 recursion으로 해결할 수 있다. 

문자열의 길이 계산

문자열 프린트

문자열 뒤집어 프린트

2진수로 변환하여 출력

배열데이터 정수들의 합


순환 알고리즘의 설계 DESIGNING RECURSION

- 암시적(implicit) 매개변수를 명시적(explicit) 매개변수로 바꾸어라

매개변수 암시화 : 순차탐색

// [0, n-1] 보통 생략... 즉 암시적인 매개변수  >>> 생략가능. 

매개변수의 명시화 : 순차탐색 

매개변수의 명시화 : 순차탐색 2

매개변수의 명시화 : 순차탐색 3

매개변수의 명시화 : 순차탐색 4

매개변수의 명시화 : 최대값 찾기

매개변수의 명시화 : 최대값 찾기 2

Binary Search : 이진검색








728x90

알고리즘의 분석 : 시간 복잡도

- 알고리즘의 자원(resource)  사용량을 분석 , cf)자원: 실행시간, 메모리, 저장장치, 통신, 등
- 실행시간의 분석에 대해서 다룸
  • 시간복잡도(time complexity)

- 연산의 실행 횟수를 카운트(실행시간 은 실행환경에 따라 달라짐)
- 연산 실행 횟수는 입력 데이터의 크기에 관한 함수로 표현
- 데이터의 크기가 같더라도 실제 데이터에 따라서 달라짐 
   ex) worst-case analysis vs average-case anaysis :최악의경우 시간복잡도, 평균 시간복잡도 
  • 점근적(Asymptotic) 분석

-  Θ-, Ο-: n→∞일때 수행시간이 증가하는 growth rate로 시간복잡도로 표현

- 상대적으로 간단하고 실행환경에 비의존적이여서 가장 광범위하게 사용

  1. 상수 시간 복잡도 - 시간복잡도 : O(1) 

     ex) n개 데이터 배열 n/2 번째 데이터 반환
  2. 선형 시간 복잡도 - 시간복잡도 : O(n)

    ex) n개 데이터 저장된 배열 sum
  3. 순차 탐색 최악의 경우 - 최악의 경우 시간복잡도 : O(n)

    ex) n개 데이터 저장된 배열 target 있는지 검색

    2차식(Quadratic) : - 최악의 경우 시간복잡도 : O(n^2)

    ex) n개 데이터 저장된 배열 X, n개 데이터 저장된 배열 Y, X[i]=Y[j]의 경우 n(n-1)/2
  • 점근적(Asymptotic) 표기법

-  알고리즘 포함된 연산들의 실행 횟수를 표기하는 하나의 기법, 최고차 항 차수만으로 표시

-  가장 자주 실행되는 연산, 문장의 실행횟수를 고려

  1. Ο-표기 :: upper bound를 표현 

     ex) f(n) = 32n^2 + 17n^2 -32 , f(n) <= cg(n)
  2. Ω-표기 :: lower bound를 표현 : 오메가

    ex)  f(n) = 32n^2 + 17n^2 -32 , f(n) >= cg(n)
  3. Θ-표기 :: upper bound & lower bound를 표현 :세타

    ex) f(n) = 32n^2 + 17n^2 -32 , 0 <= c2g(n) <= f(n) <= c2g(n)
   Big-O 

 O(1)

O(log n) 

O(n) 

O(n log n) 

O(n^2) 

O(n^3) 

O(2^n) 

O(n!) 

 Constant

 Logarithmic

 Linear

 Log Linear

 Quadratic

 Cubic

 Exponential

 Factorial

  • 다항시간(polynomial-time) 알고리즘

다항식일 때 사용. 

'For Real > 알고리즘' 카테고리의 다른 글

Backjoon1000_DrEngineer  (0) 2018.11.23
728x90

728x90
728x90

공공디비 사용. 

도서

https://www.data.go.kr/dataset/15001051/openapi.do

공영 주차장

http://opendata.busan.go.kr/openapi/service/PublicParkingLotService

수출입실적

https://www.data.go.kr/dataset/3046122/openapi.do

Spring-Boot-Vuejs 

http://itstory.tk/entry/Spring-Boot-Vuejs-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0


JPA??? 사용??? 


+ Recent posts