My footsteps

CS 스터디 본문

Develop/곤부📙

CS 스터디

밀김 2023. 4. 11. 10:03
728x90

 
 
 
 
 
 
 
 
 
 
 
 

 

API

소프트웨어 구성요소들이 서로 상호작용할수 있는 인터페이스
중간에 위치해서 양쪽으로 서버를 연결해준다 가게의 주문받는 점원같은 역할
 
 
 

스택 / 힙

컴퓨터 메모리 영역을 의미하며 
스택은 정적(LIFO:마지막에 들어간게 첫번째로 나온다)이고 힙은 동적영역(FIFO:첫번째로 들어간게 첫번째로 나온다)이다 
스택: 함수의 호출과 관계되는 지역변수와 매개변수(인자)가 저장 /
힙: 객체나 배열이 저장된다 (프로그래머가 직접 공간을 할당,해제함)
 
 
 
 
 

오버라이딩과 오버로딩

오버로딩은 같은 이름의 매서드 여러개를 가지면서 매개변수의 유형과 개수가 다르도록 함(쓰는 이유는 같은 기능을 하는 매서드 이름을 절약할수 있기 때문에)
* 오버로딩의 조건 매소드의 이름이 같아야 하고,매소드의 매개변수 개수 또는 타입이 달라야 한다
 
오버라이딩은 상속받은 매서드의 내용만 변경하는것이다
사용 이유는 자식클래스가 부모클래스의 매서드를 상속 받아서 다른 기능을 사용하고자 할때 
(상위 클래스가 가지고 있는 매서드를 하위 클래스가 "재정의" 해서 사용) 
* 오버라이딩의 조건은 이름이 같아야 하고,매개변수가 같아야 하고, 반환타입이 같아야 한다

 
 
 
 
 

객체지향

각 프로그램을 수많은 객체라는 기본단위로 나누고 이들의 상호작용을 서술하는것
 
 
 
 

객체

하나의 역할을 수행하는 메소드와 변수의 묶음
프로그램에서 사용되는 속성과 기능이 묶인 프로그래밍 단위 
할당까지는 객체
 
 
 
 
 

클래스

객체를 정의하는 틀 또는 설계도를 의미한다
 
 
 
 
 

인스턴스

클래스의 정의를 통해 만들어진 객체를 의미한다
객체가 메모리에 할당되어 실제 사용이 될때 = 인스턴스 
사람은 = 객체, 김철수,김영희는 인스턴스 (실제로 사용이 되고 실체할때)
 
 
 
 
 
 
 

JVM의 구조와 Java의 실행방식

- jvm은 클래스로더, 엑스큐션 엔진, 가비지 콜렉터, 런타임 에어리아 로 구성되어 있다
컴퓨터에서 프로그램이 실행되려면, 컴퓨터가 읽을 수 있는 기계어로 변환이 필요한데,
자바에서 기계어로 변환하는 이 역할을 jvm이 한다.

 
 
- 자바의 실행방식은 자바코드 > javac 컴파일러 > 바이트코드 변환 > jvm > 각각 컴퓨터에 전달
- JVM + 프로그램을 실행시키기위해 필요한 각종 라이브러리와,api = JRE
 
 
 
 
 
 
 

자바와 자바스크립트의 차이 

-  자바는 oop프로그래밍 언어인 반면, 자스는 oop스크립팅 언어이다.
(oop:객체 지향 프로그래밍)
스크립팅(Scripting)은 컴퓨터 프로그래밍 언어의 하나로, 대개 인터프리터에 의해 실행되는 프로그래밍 기술을 가리킵니다. 스크립팅 언어는 C, 자바, 파이썬 등의 프로그래밍 언어와 달리, 컴파일 과정이 필요 없고 소스 코드를 수정하면 바로 결과를 확인할 수 있어 편리합니다. 자바는 객체 지향 프로그래밍(OOP) 언어로, 대규모 응용 프로그램 개발에 적합합니다. 반면에 자바스크립트는 웹 브라우저에서 동적으로 웹 페이지를 제어하기 위해 사용되는 스크립팅 언어이며, 주로 웹 개발에 사용됩니다.
 
 
 
 
 

자스 app.js가 수행하는 작업

- 초기화 로직들을 관리할수 있게 도와주는 파일
 
 
 
 
 
 

구조화, 상속, 캡슐화, 오버로딩, 콜백의 의미

- 구조화 : 의미하는 것이 비슷한 코드들끼리 묶어서 유지보수에 용이하게 관리하는것
- 상속 : 기존 클래스에 기능을 추가하거나 재정의 하여 새로운 클래스를 정의하는것
- 클래스 안에 서로 연관있는 속성과 기능들을 하나의 캡슐로 은닉화하여 외부로부터 데이터를 보호하는것
- 오버로딩 : 기존에 없던 매서드를 새로이 정의하는것
- 콜백 : 다른 클래스에서 사용할수 있도록 함수 자체를 인자로 넘겨주는것
 
 
 
 

캡슐화의 의미와 장점

의미 : 클래스 안에 서로 연관있는 속성과 기능들을 하나로 묶어 외부로부터 보호하는것
장점 : 정보 은닉을 하기에 유용하기 때문에 보안성이 보장되며 코드 재사용성이 높아져, 유연하게 코드 관리를 할수 있다
 
 
 
 
 

자바 컴파일 과정

자바 언어로 코드 작성 > JAVAC로 컴파일(이때 확장명은 .class)  > JVM의 기계어 번역
 
 
 
 
 

컴파일과 인터프리터의 차이

컴파일 : 소스코드를 기계어로 컴파일한뒤 실행파일을 만들고 그것을 실행하는 방식이다
인터프리터 :  코드를 한줄씩 읽어 내려가며 실행하는 방식이다. 기계어로 변환하는 과정 없이 한줄씩 해석하여 바로 명령어를 실행하는 언어를 말한다
 
 
 
 
 
 

has a 상속의 의미와 종류

has a 상속 의미 : 어떠한 객체가 다른 객체를 갖고 있는것 
has a 상속 종류 : 어그리게이션과 컴포지션 두가지가 존재하는데 어그리게이션은
객체 배열 형태를 갖고 있으면서 내가 필요할때마다 객체를 생성해주는것이고,
컴포지션은 생성자가 객체를 생성하는것을 의미한다. 그래서 어그리게이션과 컴포지션은 같이 많이 쓰인다.
 
 
 
 
 
 

추상화란?

불필요한 세부사항들은 제거하고 가장 본질적이고 공통적인 부분만 추출하여 표현
핵심 개념은, "공통성과 본질을 모아 추출" 하는것이다

-  개체들의 공통서비스를 집중화하는 것. 즉 공통분모화작업이다
- 캡슐 단위의 공통 기능의 집중화 

- 공통분모(추상화)화된 것은 (객체화)실체화되어서는 안된다 아직 완성되지않은 뼈대이기 때문이다   

- abstract를 클래스 앞에 붙여서 해당 클래스를 공통분모로만 사용할 수 있게한다 (다른클래스에서 new로 생성x)
- is a상속으로 틀로만 사용할 수 있게된다

- 추상화의 장점으로는 코드집중화, 일괄처리
 
 
 
 
 
 

브라우저 렌더링 원리

1. HTML문서를 파싱하여 DOM트리 구성
2. CSS의 스타일 요소 파싱
3. DOM트리와 2번의 결과물을 합쳐 렌더 트리 구축
4. 화면상 배치 위치 결정
5. UI 백엔드에서 렌더 트리의 각 노드를 그림
(렌더 트리: HTML이나 CSS의 결과를 나타내는 노드의 계층 구조)
(노드 : 데이터의 구성 요소 중 하나로서, 그래프나 트리 같은 자료 구조에서의 하나의 원소를 나타냄)
 
 
 
 
 

HTTPS의 동작과정

1. 클라이언트가 HTTPS를 이용해, 연결하고자 하는 서버에 요청을 보냄
2. 서버가 클라이언트에게 TLS(암호화 프로토콜을 일컫는 말)암호화를 하라고 제안함
3. 저 제안의 응답으로 클라이언트는 자신의 공개키를 서버에게 보냄
4. 서버는 클라이언트에게 받은 공개키로 암호화가 완료된 랜덤 데이터를 클라이언트에게 보냄
5. 이 데이터를 다시 복호화(암호화 된걸 되돌리는것)하기 위해, 클라이언트는 자신의 개인키를 사용해 다시 복호화 한뒤 
또 다른 랜덤 데이터를 생성한다
6. 그리고 이 데이터를 다시 서버에게 전송하고
7. 서버는 그 데이터를 받아서 다시 복호화 한뒤, 클라이언트와 서버 간에 대칭키(암호화된 모든 데이터를 해독할때 사용됨)를 생성함
8. 이제 클라이언트와 서버는 TLS를 이용해 보안도 유지하면서 안전하게 통신을 할수 있게 된다
https://velog.io/@alscjf6315/HTTPS-%EC%9D%98-%EB%8F%99%EC%9E%91%EC%9B%90%EB%A6%AC
 
 
 
 
 

JDBC란?

자바언어를 이용하여 데이터베이스에 접속하고 데이터를 처리하는데 사용되는 API
JDBC는 데이터베이스 종류에 상관없이 사용가능하고, JDBC를 사용하여 데이터베이스에 접속하면
자바 언어를 이용하여 데이터를 읽고 쓰고 수정할수 있다
Java 로 작성한 프로그램을 통해 DB에 접속해서 CRUD(Create, Read, Update, Delete) 작업을 할 수 있게 도와주는 API
 
 
 
 
 

절차지향 프로그래밍,객체지향 프로그래밍 차이점

절차지향 : 함수의 호출을 사용하여 문제를 해결(단순한 함수 호출의 집합)
객체지향 : 해당 객체들이 상호작용을 하며 문제를 해결(데이터,메소드를 포함하는 객체들의 집합) 
 
 
 
 
 

서블릿이란?

자바를 기반으로 하는 서버 웹 어플리케이션 개발에 사용되는 기술이며
http 요청과 응답을 처리하는데 사용된다. 클라이언트 요청에 대해 웹페이지를 생성하고 반환할수 있어서 동적이다.

 

 
 
 

jsp란?

서버 측 웹 어플리케이션 개발에 사용되는 기술 중 하나로, html코드와 자바코드를 혼합하여
동적으로 웹 페이지를 생성할 수 있다.
서블릿과 jsp의 대표적인 차이점은 코드 작성 방식인데 서블릿은 자바로 작성되고,
jsp는 html 태그를 사용한다
 
 
 
 
 

컴퓨터의 정의와 컴퓨터 구성

컴퓨터란, 입력(Input)받은 정보를 처리(Processing)하고, 출력(Output)하는 일련의 과정을 수행하는 전자 장치이며
구성요소에는,
중앙처리장치(CPU)
기억장치(Memory)
입력장치(Input Devices)
출력장치(Output Devices)
저장장치(Storage Devices)
 
 
 
 
 

제 1,2,3차 정규화란?

1차 정규화 : 한 칼럼에는 한개의 속성만 있을수 있게 하는것 (제1차 정규형)
2차 정규화 : 독립적으로 존재해도 되는 컬럼들의 테이블을 따로 분리해놓는것 (제2차 정규형)
3차 정규화 : 바뀔수 있는 속성들의 테이블을 따로 분리해놓는것(프라이머리키에 종속되는 컬럼이 아닌,서브 컬럼에 종속되는 컬럼들) (제3차 정규형) 
* 프라이머리 키 : 데이터베이스에서 각 레코드(행)을 식별하는데 사용되는 고유한 식별자
각 레코드는 하나의 프라이머리키를 가지며, 이 값은 데이터베이스 테이블에서 해당 레코드를 찾을때(식별) 사용된다
 
 
 

배열과 컬렉션의 차이점

배열은 정해진 크기 내에서만 사용할수 있고,
크기를 늘릴수 있지만 추가적인 코드를 작성해줘야해서 나중에 코드의 길이가 길어지면 성능저하의 이유가 될수도 있다. 하지만 컬렉션은 가변 크기로서 크기를 염려할 필요가 없고 컬랙션 내의 한 객체가 삭제되면 컬렉션이 자동으로 자리를 옮겨준다.
 
 



변수와 자료형


프로그래밍에서의 변수는 값을 나타내는
문자나 문자들의 집합이며
하나의 값을 저장할수 있는 저장공간이다.
프로그래밍에서의 자료형이란
프로그래밍 할때 쓰이는 숫자,문자열등
자료형태로 사용하는 모든 것을 뜻한다.
종류에는 정수형을 표현하는 int,실수형을 표현하는
float,문자열을 표현하는 string등이 있다.





 

static, final, static final 차이

static : 클래스 변수 또는 메서드를 정의할때 사용

final : 변경할수 없는 값을 나타냄 

static final : 변경할수 없는 정적 변수 (대개 상수로 사용)

 

 

변경할수없는 final이 있는데 static final이 존재하는 이유

 

 

 

 

 

 

길이 5의 배열을 데이터 손상없이 길이 6으로 만드는 방법

가변길이인 컬렉션을 이용하여 데이터 손상 없이 배열 길이를 늘린다

String[] str = {"a","b","c"};

//기존 배열을 컬렉션 list로 변환
List<String>list = new ArrayList<>(Arrays.asList(str));
//늘린 list 배열에 값 추가 Arrays.asList:배열을 리스트컬렉션으로 변환해주는 메서드
list.add("d");
//list를 다시 배열로 변환
String[] newStr = list.toArray(new String[0]);

 

 

 

 

 

 

오버플로우란?

프로그래밍에서 변수나 데이터 구조가 저장할 수 있는 범위를 초과하여 값이 넘치는 현상을 말한다.

주로 정수형 변수에서 발생한다. 반대로, 값이 작으면 언더플로우 라고 칭한다.

 

 

 

 

 

 

 

시스템버스의 정의와 시스템버스의 종류 3가지 간략하게 알아보기

시스템 버스란 컴퓨터 시스템 내에서 정보를 전송하는데 사용되는 중요한 구성 요소이다.

알기 쉽게 설명하자면 일종의 데이터 고속도로로 생각하면 된다 이 시스템버스를 통해

cpu,메모리,입출력장치등 컴퓨터 시스템의 다양한 구성 요소들이 데이터를 주고 받는다.

 

- 데이터 버스: 데이터간의 이동을 담당한다

- 주소 버스: 구성 요소들이 주소버스를 통해 주소를 받아 해당 위치에서 데이터를 읽거나 쓴다

- 제어 버스: 시스템의 상태와 동작을 제어한다

 

 

 

 

 

List, Set, Map 차이점 

list,set,map은 데이터를 저장하고 관리하는 컬렉션의 종류들이다

list : 순서가 있는 저장공간을 의미(중복 허용O)

인덱스를 사용하여 요소에 접근한다

set : 순서가 없는 저장공간을 의미 (중복 허용X)

요소에 빠르게 접근하고 검색하는데 최적화

map : 키-값 쌍으로 데이터를 저장함(키 중복 허용X)

동일한 키에 다른 값을 저장하면 이전 값이 덮어씌워진다

 

 

 

 

 

명령어의 구조

* 명령어 : 어떤 연산이나 데이터 변동 등의 행위를 지시하는 명령코드와,

그 행위의 대상인 데이터를 지적하는 주소 또는 피연산자로 구성됨

1. 동작코드 (cpu가 수행할 동작 / add,multi,load 등)

2. 피연산자 (cpu가 명령어를 수행할 대상)

3. 분기 목적지 주소 (분기 명령을 수행할 때, 다음 처리할 명령어의 주소)

 

 

 

 

 

 

조인과 유니온의 차이

* JOIN과 UNION은 둘 이상의 관계의 데이터를 결합하는 데 사용되는 SQL 구문

UNION : 하나의 결과 세트만 나타남

JOIN : 두 테이블 속성을 결합할때 사용하지만 적어도 하나의 속성이 공통되어야 한다

 

 

 

 

 

 

 

프로그래밍에서 Front Controller와
Controller(입력 검증 및 서비스 호출), 
Service(업무로직) 그리고DAO에 대해 각각의 개념과 역할

프론트 컨트롤러 : 소프트웨어 디자인 패턴 중 하나로, 

웹 애플리케이션에서 사용되는 컨트롤러의 한 유형입니다. 

웹 애플리케이션은 일반적으로 다양한 요청과 응답을 처리해야 하며, 

프론트 컨트롤러는 이러한 요청을 중앙 집중적으로 관리하고 처리하는 역할을 수행

 

컨트롤러 : 프로그래밍에서 컨트롤러(Controller)는 소프트웨어의 구성 요소 중 하나로, 

주로 사용자 인터페이스(UI)와 비즈니스 로직 사이의 상호 작용을 관리하고 조정하는 역할을 합니다. 

컨트롤러는 사용자의 입력이나 외부 이벤트를 감지하고, 이를 기반으로 적절한 동작을 수행하거나 

다른 컴포넌트와의 상호 작용을 조정합니다.
컨트롤러는 애플리케이션의 흐름을 관리하고 사용자 인터페이스와 비즈니스 로직 간의 결합도를 낮추는 데 

도움을 줍니다. 또한, 여러 개의 뷰가 있는 경우에도 하나의 컨트롤러를 사용하여 일관된 동작을 구현할 수 있습니다. 

이를 통해 코드의 재사용성과 유지보수성을 향상시킬 수 있습니다.

 

 

서비스 : 프로그래밍에서의 "서비스"는 일반적으로 특정 기능이나 작업을 수행하기 위해 제공되는 

독립적인 모듈 또는 컴포넌트를 말합니다. 서비스는 다른 컴포넌트나 모듈에서 호출되거나 사용될 수 있는 

인터페이스를 제공하며, 주로 비즈니스 로직이나 데이터 액세스와 같은 공통 작업을 수행하는 데 사용됩니다.

 

 

DAO : DB의 데이터에 접근하기 위한 객체이며 실제 DB에 접근하는 객체이다

프로젝트의 서비스 모델과 실제 DB를 연결하는 역할을 한다

DB에 데이터를 CRUD하는 레포지토리 객체들이 곧 DAO이다

 

 

 

 

 

 

 

 

 

 

 

728x90

'Develop > 곤부📙' 카테고리의 다른 글

getter / setter  (0) 2023.04.21
토요스터디 / 8주차  (0) 2023.04.15
토요스터디 / 7주차  (0) 2023.04.08
토요스터디 / 6주차  (0) 2023.04.01
일요일 혼공 / (자바스크립트 onclick)  (0) 2023.03.26