분류 전체보기 439

DB 7강. SQL 문법

이 테이블에서 데이터를 찾아볼 것이다. SELECT는 데이터를 찾겠다는 문법이다. 어떤 프로젝션을 찾을지 알려준다. FROM은 어디에서 찾을 것인지 알려주는 문법이다. 하드디스크의 DBS에 있는 테이블을 퍼올릴 때 사용한다. SELECT job FROM emp; SELECT empno, ename, job, mgr, hiredate, sal, comm, deptno FROM emp; 일일이 레코드의 이름을 써주지 않아도 테이블의 모든 레코드를 다 선택할 때는 아스트리크(*)를 사용한다. 웬만하면 아스트리크(*) 쓰지 말고 모든 레코드가 필요하다면 필요한 프로젝션 다 써주는 것이 좋다. SELECT * FROM emp; 전체 테이블의 스키마를 확인하기 위해서 DESC를 사용한다. DESC dept; 위의 ..

DB/Oracle 2022.02.03

DB 6강. SQL 자료형

데이터베이스의 자료형 COLUMN_NAME 변수 이름 DATA_TYPE 타입 NULLABLE 비어있어도 되나? -> no면 무조건 초기화 -> yes면 선언만 해도 됨 테이블에 어떤 데이터가 들어가는지를 확인하는 구조 -> 스키마(중요) 데이터베이스에서는 int가 아니라 number String이 아니라 varchar varchar( ) 괄호 안에 숫자가 적혀있는데 이건 문자열의 max 길이를 말한다. 이 큰 틀이 테이블이다. 8개의 열과 14개의 행을 가진 테이블인 것이다. 데이터베이스는 엄격하게 자료형을 제한하기 때문에 varchar에도 number가 들어갈 수 없다. 데이터베이스에서 하나의 가로 행을 레코드라고 한다. 하나의 세로 열을 프로젝션이라고 한다. [출처] https://cafe.naver..

DB/Oracle 2022.02.03

DB 5강. 데이터베이스 복습

1521 포트로는 연결만 한다. 버퍼를 연결하고 아이디와 패스워드를 전달한다. 1521 리스너는 누군가가 로그인하는 걸 기다리는 포트이고, 들어오면 받은 아이디 패스워드로 커넥션이 되는지 확인한 후 응답해준다. 잘 커넥션이 되었다면 세션이 만들어진 것이다. 이 세션은 OSI 7계층 중 세션 계층에서 일어난다. 인증이 완료되면 다른사람의 연결도 받아야 하기 때문에 1521 포트와 연결된 선이 끊기게 된다. 끊기고 나면 다른 포트(8080)로 새로운 버퍼가 연결이 되어 통신이 가능한 상태가 된다. A SD와 B SD가 모두 커넥션에 승인이 되어 8080 포트에 연결되면 동시에 통신하게 되는데 hello, hi를 누가 보냈는지 어떻게 구별할까? 헤더가 필요하다 헤더는 아무렇게나 만들어도될까? 프로토콜이 필요하..

DB/Oracle 2022.02.03

스레드 실습

스레드는 컨텍스트 스위칭(문맥 교환)을 한다. 조건 : 컨텐스트 스위칭은 다른 스레드의 제어권을 뺏는 행위 -> 스레드가 잠시라도 멈춰있어야 함. 스레드가 컨텍스트 스위칭을 할 때는 내부적으로 0.0000000001초라도 졸고 넘어간다. 스레드는 OS가 관리하기 때문에 이는 모든 언어가 공통적이다. RR : 1초마다 제어권이 뺏기기로 되어 있음. 제어권이 넘어가지 않으면 직접 재워줘야 한다. cpu가 엄청 집중하고 있으면 넘어가야 하는 것을 까먹어버리기 때문에 OS가 인터럽트를 걸어서 잠깐 재워준다. 새로운 클래스를 만들어 run 메서드를 구현한 코드▽ package site.metacoding.ex23; // Host가 Monster 좌표에 도달하면 Monster 죽음 // Monster는 2초씩 자고..

JAVA/실습 2022.02.03

자바 40강. 화살표 함수(람다식)

결국 스레드는 run 메서드(타겟)를 넘기는 게 목적이다 Thread t1 = new Thread(() -> { }); ( ) -> { } 이 화살표를 화살표 함수(arrow function)라고 한다. 어차피 스레드 타겟 자리에는 Runnable 타입만 들어올 수 있기 때문에 화살표 함수가 들어오면 중괄호 내부를 run 메서드라고 인식하게 된다. OS가 알고 있는 메서드는 하나밖에 없기 때문이다. 이 화살표 함수는 메서드만 넘기기 위한 방법이다. 실제로는 익명 클래스가 넘어가는 것이다. 중괄호 내부는 run메서드이다. 괄호 부분은 run메서드의 매개 변수 자리이다. 계속 new 하기 불편해서 나온 문법이다. package site.metacoding.ex23; interface Remocon { pub..

JAVA 2022.02.03

자바 39강. 익명 클래스

추상적인 애들은 행위를 정의할 수 없다. 행위의 뼈대를 만들어놓고 구체적인 애들이 행위를 정의하는 것. Runnable 타입을 만들기 위한 필요없는 클래스를 만들지 않아도 됨 package site.metacoding.ex23; import java.util.Scanner; // 익명 클래스를 만들어보자. // 추상 클래스와 인터페이스를 new할 수 없는 이유? // => 개념 : 추상적이기 때문 // => 문법 : 추상 메서드를 가지고 있기 때문에 // 추상 클래스를 가지지 않게 하기 위해 만드는게 익명 클래스 public class ThreadEx03 { public static void main(String[] args) { // Scanner sc = new Scanner(System.in); T..

JAVA 2022.02.03

자바 38강. synchronized

메서드에 synchronized가 붙으면 동기화된다. 동시에 접근이 불가능한 것이다. 이런 구역을 임계 구역(critical section)이라고 한다. 동시에 접근하면 위험한 구역이라는 의미이다. StringBuffer는 동기화되어 있어 동시에 접근이 불가능하다. synchronized가 붙어있어 임계 구역인 것이다. 세마포어(semaphore) : 공유 자원에 대한 접근을 제어하는 방법 세마포어 하면 교착상태라는 말이 따라온다. 100명이 공유자원을 사용하려고 찾아왔을 때, 아무도 사용하지 못하고 엉켜버리면 OS가 멍 때리게 된다. 이 상황을 교착 상태(Deadlock)라고 한다 어떤 프로그램이든 OS가 멍 때리게 된다면 컴퓨터를 재부팅하는 방법밖에는 없다. 교착상태가 안 걸리게 예방하여 프로그램을 ..

JAVA 2022.02.03

Git 7강. rebase 로그 관리

로그인 파일을 작성 중 어쩔 수 없는 사정으로 중단하고 집으로 가서 마저 작업하는 경우가 생길 것이다. 이때 commit을 해두어야 다른 컴퓨터에서 마저 할 수 있기 때문에 하나의 파일을 만들기 위한 log가 여러 개가 생길 수 있다. 예쁘지 않은 log를 rebase로 정리가 가능하다. 이때 rebase의 squash 옵션을 사용해준다. squash는 찌그러트린다는 말, 즉 압축한다는 말이다. log를 찌그러트릴 때는 원하는 log의 두 끝점 중 가장 과거의 log로 압축해야 한다. 위 브랜치의 3가지 로그인 log의 경우에는 아래 두 개의 log를 날리고 코드를 가장 과거인 로그인 완료 log로 모으는 것이다. git rebase -i HEAD~3 HEAD가 가리키는 곳에서 3개의 log를 rebas..

Git 2022.02.02

Git 6강. merge 충돌

같은 로그인 파일을 두 개의 브랜치에서 수정한 후 merge 하게 되면 충돌(conflict)이 일어난다. 3-way merge를 하게 될 텐데 git이 로그인 체크박스로 병합할지, 로그인 라디오 버튼으로 병합할지 혼란이 오게 되는 것이다. 이런 충돌은 git이 해결할 수 없다. 내가 직접 코드를 수정하고 다시 commit 해주어야 한다. 협업을 할 때 충돌을 방지하기 위해 하나의 파일을 한 명에게 권한을 준다. 웬만하면 같은 파일은 건드리지 않는 게 좋다! [출처] https://inf.run/3Xiz [무료] 지옥에서 온 관리자 Git - 인프런 | 강의 “소규모 협업을 통해 프로젝트 개발을 하고 싶은데 어떻게 해야 할지 모르겠어요!” “취업을 앞둔 취준생인데 Git을 몰라요!” 취준생, 주니어 개발..

Git 2022.02.02

Git 5강. branch, merge

블로그 프로젝트를 만든다고 가정해보자. main branch에서 회원가입 파일을 만들고 commit, 로그인 파일을 만들고 commit 한 상태이다. 직원 한 명이 아이디어를 냈다. 아이디 중복체크를 구현해보는 게 어때요? 하고. 그럼 너 그거 만들어봐! 하고 idea branch를 따로 만들었다. idea 브랜치는 로그인에서 파생되어 main 브랜치의 모든 히스토리(회원가입, 로그인)를 갖고 있는 브랜치이다. 이때 로그인이 main 브랜치의 분기점이 되는것이고 main과 idea 브랜치의 공통 조상, 뿌리가 된다. idea 브랜치에서 아이디 중복체크를 완료하고 완성된 중복체크 프로그램이 마음에 들어서 main 브랜치와 합치고 싶을 때 merge를 사용해준다. 그런데 main 브랜치와 idea 브랜치의 ..

Git 2022.02.01