여태 몰랐던 내용인데 알게되어서 적어본다.

String은 자료형이 아니라 객체라는 사실은 알고 있었을텐데

String만 예외적으로 new를 이용해 객체를 생성하지 않아도 된다한다.


1
2
String str1 = new String("str"// String Object generate
String str2 = "str" // simple case
cs




문자열을 비교할 때 equals()함수를 쓰는 이유를 알아봤다.

결론만 말하자면 == 연산자로는 String객체에 저장된 문자열을 비교할 수 없기 때문이다.

한마디로 "str"이라는 문자열은 리터럴이라 주소를 가지고 메모리에 할당 되는데

new를 이용해 문자열을 저장하면 메모리에 할당되는 동시에 그 메모리에 문자열이 저장된다.

2번째 줄과 같이 단순 대입을 한다면 "str"의 주소를 가져오는 꼴이다.


따라서 str1, str2의 내용은 같아 보여도 ==연산자는 주소를 가지고 비교하기에 (이때 주소는 JVM에 할당된 영역이다.)

서로 다른 것으로 인지한다.

1
2
3
4
5
6
7
8
9
String str1 = new String("str"// String Object generate
String str2 = "str" // simple case
 
str1 == str2 // false
str1 == "str" // false
str2 == "str" // true
str1.equals(str2) // true
str1.equals("str"// true
str2.equals("str"// true
cs



일단 sqlite3 라이브러리가 필요하다.

없다면 다운받아서 사용하도록.



사용하려면 아래와 같이 import를 시켜줘야한다.

import sqlite3

다음으로 연결을 시켜줘야하는데 db가 생성되있지 않다면 생성을 해주니까 걱정 안해도 된다.


conn_db = sqlite3.connect("~.db")

연결이 되었다면 Cursor을 생성해줘야하는데 

Cursor는 데이터베이스에 SQL문을 작성하도록 해주는 역할이라 생각하믄 된다.


cur = conn_db.cursor()

SQL문을 작성을 해서 보내면 됩니다! 이땐 execute함수를 사용한다.


cur.execute(SQL문)

SQL문을 작성한 결과를 보고 싶다면 fetchall함수로 볼 수 있다.


result = cur.fetchall()

전체적인 코드를 보면 아래와 같다.


import sqlite3

conn_db = sqlite3.connect("~.db")
cur = conn_db.cursor()
cur.execute(SQL문)
result = cur.fetchall()


개발할 때 사실상 저렇게 사용하지 않는다.

리소스를 아끼기 위해서 with문을 사용한다.

db에 connect를 하고 cursor로 접근한 것을 with문이 끝나면 리소스 정리를 통해 disconnect를 시켜주기 때문.



import sqlite3

conn_db = sqlite3.connect("~.db")

with conn_db:
    cur = conn_db.cursor()
    cur.execute(SQL문)
    result = cur.fetchall()

OSI 7계층



 물리층(Physical layer)

네트워크 지원 

데이터 링크 층(Data-Link layer) 

네트워크층(Network layer) 

전송층(Transport layer)

 전송

세션층(Session layer) 

사용자 지원 

표현층(Presentation layer) 

응용층(Application layer) 




1. 물리층(Physical layer)


-물리적인 장치와 전송을 하기 위한 인터페이스의 기능과 필요절차를 규정하는데, 이때 물리적 장치간 연결의 활성화/비활성화, 물리적 특성을 규정한다.


2. 데이터 링크층(Data-Link layer)


-물리적인 전송링크를 통해 데이터를 전송하는 계층


3. 네트워크층(Network layer)


-발신지로부터 목적지까지의 최적의 경로를 선택하여 데이터를 전송해주는 계층



*네트워크 지원?

-장치에서 장치로 데이터를 전달 할 때 필요한 물리적인 면을 처리

-물리적 특성은 전기 규격 , 물리적 연결, 시간, 신뢰도, 물리주소 등등..


4. 전송층(Transport layer)


-통신하는 단말기 사이에서 데이터를 전송해주는 계층


5. 세션층(Session layer)


-응용층 사이에서 연결을 설정해주고 유지시켜주며, 종료를 시켜주는 계층


6. 표현층(Presentation layer)


-데이터의 형식을 변환하거나 일관된 형식을 제공하여 데이터를 호환가능하게 만들어주는 계층


7. 응용층(Application layer)


-데이터를 송수신 할 수 있는 인터페이스를 제공하는 계층




TCP/IP 4계층




 물리층(Physical layer)

네트워크 엑세스 계층

데이터 링크 층(Data-Link layer) 

네트워크층(Network layer) 

 인터넷 계층

전송층(Transport layer)

 전송 계층

세션층(Session layer) 

응용 계층

표현층(Presentation layer) 

응용층(Application layer) 


1. 네트워크 엑세스 계층(Network Access layer)


-OSI 1,2계층에 해당

-CSMA/CD, MAC 프로토콜 등에 사용


2. 인터넷 계층(Internet layer)


-OSI 3계층에 해당

-통신 노드간 IP패킷 전송과 라우팅을 담당


3. 전송 계층(Transport layer)


-OSI 4계층에 해당

-통신 노드 간의 연결을 제어, 데이터 송수신 담당


4. 응용 계층(Application layer)


-OSI 5,6,7계층에 해당

-HTTP,Telnet, FTP, SMTP 프로토콜을 이용하여 TCP/UDP 기반의 응용프로그램을 구분한다.






+ Recent posts