본문 바로가기

Etc

02/08 공부기록!

✔ 봤던 것들 정리하기
내가 공부하던 것, 질문받거나 질문했던 것까지 다 정리할거라 내용에 일관성은 없겠지만!!

정리하면서 한 번 더 보는 시간을 가져야지😃

 

 

 

 

💬DBCP가 뭐예요?

자바에서 DB 커넥션을 할 때 사용하는 방법 중 하나로, 다른 방법들로는 JDBC, JNDI가 있다.


❔ Connection과 Connection pool


DriveManager.getConnection()은 실제 프로그램과 데이터베이스를 네트워크상에서 연결해주는 메소드이다. Connection은 네트워크상의 연결 자체를 의미한다.
Connection pool은 데이터베이스와 연결된 Connection객체를 사용하고 작업이 끝나면 다시 반환하는 것을 말한다. Connection pool을 사용하면 풀 속에 미리 Connection이 생성되어 있기 때문에 Connection을 생성하는 데 드는 연결시간이 소비되지않는다. 또, Connection 재사용이 가능하기 때문에 사용자가 접속할 때마다 계속해서 Connection을 생성할 필요가 없다. 즉, Connection pool을 사용 시 프로그램 효율과 성능이 전체적으로 증가한다.


❔ JDBC (Java DataBase Connectivity)란?


자바와 데이터베이스의 DBMS를 연결시켜주는 응용프로그램 인터페이스이다.
데이터베이스의 DBMS 종류에 상관없이 독립적으로 사용이 가능하다는 장점이 있으며 DB커넥션 방법 중 기본이라고 할 수 있다.
데이터베이스풀 방식을 사용하지않고 DB에서 정보를 가져올 때마다 매번 디비 연결을 열고 닫는 방식을 사용한다. 이 방식은 각 페이지에 database통신이 필요한 부분이 있을 때마다 디비 객체 생성, 커넥션 연결, 종료 등을 반복하기 때문에 효율성이 떨어진다는 단점이 있어 기본이 되긴해도 잘 사용되지않는다.


❔ DBCP (DataBase Connection Pool)란?


DB와 커넥션을 맺고 있는 객체를 관리하는 역할을 한다. 어플리케이션을 시작할 때 원하는만큼 커넥션객체를 만들어서 pool에 넣어놓았다가 필요할 때 갖다쓰고 pool에 반납하는 방식을 사용한다.
다중스레드를 스레드풀로 관리하는 것과 비슷한 방식이다.
상용 어플리케이션에는 보통 pool방식을 사용한다.


❔ JNDI (Java Naming and Directory Interface)란?


데이터베이스 커넥션 풀을 이용하는 방식으로, DBCP는 DB커넥션 풀을 어플리케이션 소스단에 설정해놓은 방식이지만 JNDI는 WAS단에 DB커넥션풀을 미리 네이밍 해두는 방식을 사용한다.
이와 같은 방식은, DB설정 정보 파악이 쉽고 DB 커넥션풀을 효율적으로 사용할 수 있다.

 

Reference.
https://zunoxi.tistory.com/58
https://eongeuni.tistory.com/43
모델2로 구현하는 자바 웹 프로그래밍 JSP 2.2&servlet 3.0




 

💬Servlet과 Controller는 같은 건가요?

결론부터 말하자면 당연히.. 다르다.
어떻게 해석하냐에 따라 동일하게 보일 수 있지만 원초적인 목적이 다르다. 컨트롤러는 다른 요청을 받고 처리결과를 어떤 화면에 전달해줄지 전달자 역할만 하고, 서블릿은 요청을 받는 건 동일하나 처리결과를 직접 화면으로 만들어서 전달한다. 그래서 컨트롤러는 전달해줄 html파일이 실제 필요하고 서블릿은 html파일이 필요없이 바로 화면을 리턴할 수 있다. 근데 서블릿은 코드가 너무 복잡하고 디버깅이 어려워서 잘 쓰이지않는다. 대신 서블릿의 단점을 보완하고자 만든 서블릿 기반의 서버 스크립트 기술인 JSP를 사용한다. 이 jsp는 컨트롤러와 같이 쓰인다.

Reference.
👍🏻동료



💬Javascript에서 변수 var 선언하지않아도 되는 이유?

var 문으로 선언되지 않는 변수에 대입하면 오류가 발생하지 않는다. 이유는 자바스크립트가 해당 변수를 자동으로 전역 변수로 선언 하기 때문인데(변수의 의도하지 않은 전역화), 이는 함수의 유효 범위와 관련이 있다.

 

 

그렇다면 전역변수 사용은... 괜찮을까?

전역변수를 반드시 사용해야할 이유가 없다면 지역변수를 사용해야한다.

❔전역 변수?
모든 영역에서 사용할 수 있는 변수이다. 함수 호출과 같이 전역 코드를 실행하는 특별한 진입점이 없고 코드가 로드되자마자 곧바로 해석되고 실행된다.

브라우저 환경에서 전역 객체는 window이며 이 환경에서 var로 선언한 전역변수는 전역 객체 window의 프로퍼티다. 전역객체 window는 웹 페이지를 닫기전까지 유효하다. 즉, 전역객체의 생명주기와 일치한다.

이러한 전역변수의 문제점은
📌전역변수는 모든 코드가 전역변수를 참조하고 변경할 수 있는 암묵적 결합을 허용한다. 즉, 유효 범위가 크면 코드의 가독성이 나빠지고 의도치 않게 상태가 변경되어 위험성이 높아진다.
📌긴 생명주기 때문에 메모리 리소스도 오랜 기간 소비하고 상태 변경에 의한 오류가 발생할 확률이 높다.
📌스코프 체인 상에서 종점에 존재 하기 때문에 가장 마지막에 검색된다. 즉, 검색 속도가 가장 느리다.
📌자바스크립트의 문제 중 하나는 파일이 분리되어있다 해도 전역 스코프를 공유한다. 따라서 다른 파일 내에서 동일한 이름으로 전역 변수나 전역 함수를 재할당할 경우 예상치 못한 결과를 초래할 수 있다는 것이다.

 

Reference.
https://creatijin.tistory.com/241
행복해지는 HTML+CSS+JAVASCRIPT

 

 

 

 

 

 

✏ Javascript 기초

자바스크립트를 사용하는 이유는 서버가 아닌 클라이언트에서 간단한 작업이 이루어지도록 하기 위한 것이다.
html에서 script태그는 자바스크립트 전용 태그가 아니므로 language속성에 "javascript"를 작성해야한다. 

작성법은 3가지(head/body/외부파일(.js)로 source 속성이용)가 있다.

 

작성방법:
1. head에 작성  
head에 작성 시 다른 문장들에 비해 먼저 해석되어 처리된다.
페이지 읽는 도중 중단될 경우 에러가 발생한다. 그래서 특별한 경우가 아니면 페이지 읽혀지기 전 수행되는 head영역에 자바스크립트를 기술한다.  

2. body에 작성  
일반적이진 않지만 body부분의 문장이 수행되는 도중에 자바스크립트 문장들이 반드시 기술되어야할 때 
body영역에 자바스크립트를 기술한다.  

3. 외부파일로 작성  
자바스크립트로 구성된 내용을 완전히 다른 파일(.js)로 작성한다.
파일 작성 시 script태그는 html 문서 내에서 스크립트 구문이 시작되는 위치를 알려주는 html태그이므로
자바스크립트 파일에서는 제외한다. 
 
html문서에 삽입하는 방법은 script 속성에서 src=".js"를 작성해주면 된다. 
반복되는 내용일 경우 파일만 삽입하면 재사용이 가능하다는 장점이 있다.

 

자바스크립트 주석은 <!-- -->을 사용하면 된다. 자바스크립트를 사용하지않을 경우 코드가 그대로 노출될 수 있으므로 항상 주석을 같이 작성해주는 게 좋다.

 


자료형이란 사람과 컴퓨터(2진법으로만 구성) 사이의 차이를 극복하기 위해 사람과 컴퓨터 사이의 절충 선에서 사람들의 정보들을 간추려 정리한 것이다. 즉, 컴퓨터가 정보를 기억하고 처리하는 규칙을 지정하여 자료형으로 정의한 것.
자료형에는 정수형, 실수형, 논리형, 문자형이 있다.

정수형 10진수, 8진수, 16진수
실수형 소수점을 가진 숫자(소수형/정수형 실수)
논리형 True, false
문자형 ‘’ , “”

그 외로 null형이 있는데 내용이 전혀 없을 때를 말한다. 주로 문자형에서 사용됨.

 

 

특수문자

이스케이프 시퀀스의미

\b 커서를 앞으로 한 칸 이동. Basck space
\f 커서를 다음 페이지로 이동. Form Feed
\n 커서를 다음 줄로 이동. Newline
\t 커서를 한 탭만큼 이동. Tab
\r 커서를 그 줄의 처음으로 이동. Return
'표시
" "표시

 


변수
네이밍규칙. 변수 시작은 영문자 or underBar(_). 숫자는 사용할 수 없다. 두번째 문자부터는 영문자, 숫자, underBar 모두 사용 가능하며 대소문자를 구분한다. 변수명을 구성하는 문자들 사이의 공백은 올 수 없고 두 단어 연결 시 underBar를 사용하여 표현한다. 미리 정해진 예약어(keyword)는 변수로 사용할 수 없다.
변수를 사용만 하면 자동적으로 생성되므로 굳이 신경써서 선언하지않아도 된다. 자료형은 값을 대입하는 순간에 자동으로 결정된다. 명시적으로 사용할 경우, 자료형을 구분하지 않기 때문에 var로 선언한다.

 

 

연산자
산술연산자 : +, -, *, /, %
관계연산자 : >, >=, <, <="," =="," !="
논리연산자(Ture, false)가 있다.

논리값!(논리부정)

T F
F T

논리값1논리값2||(논리합)&&(논리곱)

T T T T
T F T F
F T T F
F F F F

 


내장된 대화상자를 이용한 인터페이스
* alert
경고메시지를 전달하기 위한 대화상자 표시.
* confrim
사용자의 확인을 받기위한 대화상자 표시. 반환값이 T이면 확인, F면 취소를 누르면 된다. 값은 answer = confirm() 이런식으로 변수에 담아서 사용.
* prompt
사용자로 내용을 입력받을 수 있는 대화상자 표시.
메시지 : 대화상자에 나타날 설명 / 초기값 : 텍스트박스에 기본적으로 나타나는 문자열이나 숫자를 설정 / 반환값 : 텍스트박스에 입력된 내용. 문자열로 처리한다. name = prompt("이름을 입력하세요","") 이렇게 사용한다. 초기값에 아무런 내용이 없도록 하려면 ""을 작성하면 된다.

Reference.
행복해지는 HTML+CSS+JAVASCRIPT

 

 

 

'Etc' 카테고리의 다른 글

02/15 공부기록!  (0) 2022.03.06