본문 바로가기

전체 글186

[TIL] 유데미 X 사람인 취업 부트캠프 29일차 / node.js 1. Node 서버 생성 (1) 기본 구조 const http = require("http"); const server = http.createServer((req, res) => { console.log(req); }); server.listen(3000); //포트번호는 3000번으로 한다 (2) 실행 - 터미널에 node 파일명.js 입력 - localhost:3000으로 이동하면 아무 일도 발생하지 않지만, 터미널에는 입력된다 - 아직 응답을 반환하지 않는 상태 (3) 정리 - 터미널에서 node 파일명.js를 실행하면 스크립트가 시작되어 Node.js가 파일 전체를 살펴보고 코드를 분석한 후 변수와 함수 등록 - 이벤트루프로 인해 프로그램을 끄지 않은 상태 2. Node의 라이프사이클 및 이벤.. 2024. 1. 26.
[TIL] 유데미 X 사람인 취업 부트캠프 28일차 / spring boot [1. 오늘 배운 것] 1. 첫 스프링 부트 어플리케이션 - CourseController package com.in28minutes.learnspringboot.courses; import com.in28minutes.learnspringboot.courses.bean.Course; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.Arrays; import java.util.List; @RestController public class CourseController { @GetMapping("/course.. 2024. 1. 23.
[TIL] 유데미 X 사람인 취업 부트캠프 27일차 / java, spring [1. 오늘 배운 것] 1. 오늘 배우게 될 것들 - spring container - spring context - ioc container - application context - java bean v spring bean - 일치하는 빈이 여러개라면? 2. 스프링 컨테이너(컨텍스트, ioc 컨테이너) - 스프링 빈 및 빈의 수명 주기를 관리하는 컨테이너 - 준비된 시스템을 출력 - JVM내부에는 우리가 구성한 모든 빈을 관리하는 스프링 컨텍스트가 있음 - 자바 클래스를 만들고 구성을 만들면, ioc 컨테이너가 런타임 시스템을 만듦 3. java bean vs pojo vs spring bean - POJO : 오래된 방식의 간단한 자바 오브젝트 (Plain Old Java Object) - 자바 .. 2024. 1. 22.
[TIL] 유데미 X 사람인 취업 부트캠프 26일차 / java, spring [1. 오늘 배운 것] 1. 자바 모듈화 - 자바 시스템 9부터 도입 - 노출하고 싶은 부분만 골라 제어 가능 - 자바 런타임 감소 - 외부 모듈에 의존성을 구체화할 때 requires 사용 2. 새로운 자바 API - copyOf() : list, map, set의 사본을 생성 - List nameCopy = List.copyOf(names); 3. readString, writeString - readString : 파일의 내용을 읽어오기 위한 메서드, 내용이 없을 경우 IOException 발생 가능 - writeString : 문자열을 파일에 쓰기 위해 사용, 파일이 이미 존재하는 경우 덮어쓰게 되며, 파일이 존재하지 않으면 새로 생성 4. predicate-not - predicate : 주어진.. 2024. 1. 19.
[TIL] 유데미 X 사람인 취업 부트캠프 25일차 / java [1. 오늘 배운 것] 1. 퍼즐 - 아래에서는 예외처리가 제대로 이뤄지지 않는다 - NullPointerException에 관한 내용을 다루고 있지 않으므로 try { AmountAdder.addAmounts(new Amount("Rupee", 5), new Amount("Rupee", 5)); String string = null; string.toString(); } catch (CurrenciesDoNotMatchException e) { System.out.println("Handled CurrenciesDoNotMatchException"); } 2. 플래시카드 복습 - Exception : 예외적인 상황 발생이나 오류로 인해 프로그램 흐름을 중단시키는 것 - ExceptionHandling .. 2024. 1. 18.
[TIL] 유데미 X 사람인 취업 부트캠프 24일차 / java [1. 오늘 배운 것] 1. 함수형 프로그래밍 - 정렬 - 중복값 제거 - map 2. 연습문제 - 1~9의 제곱 출력 - 리스트 내의 단어들을 소문자로 출력 - 리스트 내의 단어들의 길이를 각각 출력 3. 스트림의 종단연산 - 1~10까지의 합 구하기 - 최대값, 최소값 구하기 4. Collerctors.toList 5. Optional - 널 포인터 예외라는 오류를 피하고자 할 때 사용 - 결과에 아무 값도 없다면 null값 환원 - 따라서, object()함수 대신 옵셔널로 값을 환원받을 수 있음 6. 함수형 인터페이스 - Function : 입력값을 받고 어떤 출력값 반환 - Predicate : 입력값이 참인지 거짓인지 확인 7. 코딩 실습 - 홀수 걸러내기 return numbers.strea.. 2024. 1. 17.
제네릭 1. 제네릭이란 - 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능 - Java에서 다양한 데이터 타입을 사용하는 클래스나 메서드를 작성할 때, 코드의 재사용성과 안정성을 향상시키기 위해 도입된 기능 2. 사용 방법 - 선언 방법은 아래와 같음 public class ClassName { ... } public class ClassName { ... } - Key, Value를 사용하는 Map과 같은 경우, 두 가지 변수를 선언할 수 있음 - T, V 등의 타입은 클래스 안에서만 유효 - MyCustomList.class package oop2.jenerics; import java.util.ArrayList; public class MyCustomList {.. 2024. 1. 17.
[DB] index [index] 1. 인덱스란? - 인덱스: 데이터베이스 테이블에 대한 검색 성능(속도)을 높여주는 자료구조 - 책의 목차와 비슷한 개념, 목차 = 인덱스 / 페이지 = 물리적 저장주소 / 내용 = 데이터 2. 작동 방식 - 특정 컬럼에 인덱스를 생성하면 해당 컬럼의 데이터들을 정렬하여 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장 - where조건 등을 통해 생성한 인덱스를 탐색할 수 있음 - 인덱스에 저장되어있는 데이터의 물리적 주소로 가서 데이터를 가져오는 식으로 동작 - 검색 속도의 향상 3. 인덱스의 장점과 단점 장점 - 테이블을 조회하는 속도와 그에 따른 성능을 향상시킬 수 있음 - 시스템의 부하를 줄일 수 있음 단점 - 인덱스를 관리하기 위한 추가작업과 공간이 요구됨 - 인덱스를 잘못.. 2024. 1. 16.
[TIL] 유데미X사람인 취업 부트캠프 23일차 / java [1. 오늘 배운 것] 1. ArrayList 정렬 - Collections.sort(배열이름); 2. Set 인터페이스 - 중복이 허용되지 않음 - 위치 접근을 제공하지 않음 (특정 위치에 요소 추가 불가능) - 요소들을 쉽게 삽입할 수 있고 검색과 제거 또한 쉬움 - 배열에 비해 요소의 삽입이 빠름 3. Tree - 노드를 기준으로 왼쪽에는 더 작은 값이, 오른쪽에는 더 큰 값이 삽입됨 4. HashSet, LinkedHashSet, TreeSet - HashSet의 저장 방식 : modulo - LinkedHashSet의 저장방식 : 저장순서 - TreeSet의 저장방식 : 정렬 - 저장방식 비교 5. 숫자 반환 - floor : 이하값 중 가장 큰 값 - lower : 미만 값 중 가장 큰 값 -.. 2024. 1. 16.
[DB] ORM [ORM의 개념] - Object Relational Mapping, 객체-관계 매핑 - 객체 지향 프로그래밍에서의 객체를 구현한 클래스와 RDB의 테이블을 연결해주는 것 - ORM을 통해 자동으로 SQL문을 생성하여 연결하는 방식 - 즉, 사용자가 SQL문을 짤 필요가 없어진다 [ORM의 장단점] 1. 장점 - 객체지향적인 코드 작성 가능 : ORM을 활용하면 메서드를 통해서 데이터베이스 관리가 가능해지므로, 프로그래밍에 집중할 수 있게 함 - DBMS 종속성 하락 : 대부분의 ORM은 DB에 종속적이지 않기 때문에 구현 방법 뿐만 아니라 자료형 타입까지 유효함 - 재사용 및 유지보수의 편리성 증가 : ORM은 독립적으로 작성되어있고, 해당 객체들을 재활용할 수 있음/ 매핑 정보가 정확하여 ERD에 대.. 2024. 1. 15.
[TIL] 유데미X사람인 취업 부트캠프 22일차 / java 객체지향 [1. 오늘 배운 것] 1. 클래스, 객체, 상태, 행동 - 단순한 템플릿, 이를 바탕으로 객체 생성 MotorBike ducati = new MotorBike(100); MotorBike honda = new MotorBike(100); - ducati는 MotorBike의 인스턴스 - ducati, honda = 객체 - 상태 : 멤버 변수 - 행동 : 메서드 2. 상태와 생성자 결정 - Fan.class package oop2; import java.util.PrimitiveIterator; public class Fan { //state private String make; private double radius; private String color; private boolean isOn; pr.. 2024. 1. 15.
상속 (장/단점) [상속(inheritance)] 1. 개념 및 특징 - 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것 2. 사용방법 - 새로 사용하고자 하는 클래스(하위클래스)의 이름 뒤에 상속받고자 하는 클래스(상위클래스)의 이름을 키워드 'extends'와 함께 쓰기 - 예시 class point { } class circle extends point { } class point { int x; int y; } class circle extends point { int r } 3. 포함관계와의 비교 - 포함관계 : ~을 가지고 있다 class circle { point c = new point(); int r; } - 상속관계 : ~은 이다 class circle extends point { int r; }.. 2024. 1. 15.
[DB] RDBMS/NoSQL [DBMS] 1. 개념 : 데이터베이스 관리시스템/ 실질적인 데이터베이스를 구현할수있는 것으로, 데이터를 조직화하여 효율적으로 관리함 2. SQL : 데이터베이스 관리 시스템에서 데이터를 조작하고 검색하기 위해 표준화된 언어 - 선언적 언어 : 명령어를 이용해서 원하는 결과를 명시하고 그 결과를 얻는 방식의 언어 - RDBMS에서 사용되며, 이를 통해 데이터의 구조와 관계를 정의하고 쿼리를 실행해 데이터를 관리할 수 있음 - 주요 SQL언어 : ANSI SQL, T-SQL, PL/SQL 등 - 주요 구현체 : Oracle Database, MySQL 등 [RDBMS, Relational Database Management System] 1. 개념 : 사전에 엄격하게 정의된 스키마가 있어, 행과 열로 구성.. 2024. 1. 15.
[TIL] 유데미X사람인 취업 부트캠프 21일차 / java [1. 오늘 배운 것] 1. 오토박싱 -기본값을 이용해 코드를 입력할 수 있고 컴파일러가 이것들을 래퍼로 변환시키는 것을 도움 2. Dates - LocalDate : 날짜 - LocalDateTime : 날짜와 시간 모두 - LocalTime : 시간값을 나타냄 3. LocalDate 탐색 4. Dates와 specif 생성 - 날짜 일부 바꿔서 출력하기 - 날짜 생성하기, 비교하기 5. 연습문제 - 문자열 안의 대문자 개수 확인하기 public class StringMagic { public int countUppercaseLetters(String str) { if(str == null){ return 0; } int cnt = 0; for(int i = 0; i < str.length(); i++.. 2024. 1. 12.
[TIL] 유데미X사람인 취업 부트캠프 20일차 / java [1. 오늘 배운 것] 1. 연습문제 - switch-case를 활용하여 문자가 모음인지 확인 public class MyChar { public boolean isVowel(char ch) { switch (ch) { case 'a': case 'e': case 'i': case 'o': case 'u': case 'A': case 'E': case 'I': case 'O': case 'U': return true; } return false; } } 2. 자바 반복문 : for - 기본 구조 : for(초기값; 한계값; 변화값) 3. for_연습문제 : 소수인지 확인하기 - MyNumberRunner package loop_for; public class MuNumberRunner { public s.. 2024. 1. 11.
[java] 짝지어 제거하기 풀이 1. 스택을 생성한다 - 단어를 하나씩 넣어주기 위해 2. 인덱스를 생성한다 - 단어를 하나씩 훑어보기 위해서 3. while문을 사용해서 단어를 하나씩 훑어본다 - 만약 스택이 비어있으면 단어를 push한 후 index++, continue - 위의 과정을 거치지 않으면 peek값을 뽑으려 하기 때문에 컴파일 에러 - 스택의 가장 위의 값(직전 단어)과 현재 단어가 일치하면 pop후 index++ - 둘 다 해당되지 않는다면 push후 index++ 4. while문을 빠져나왔을 때, 스택이 비어있으면 단어가 모두 삭제된 것으로 return 1, 아니면 return 0 회고 . 코드 (접은 글) 더보기 import java.util.*; class Solution { public int solut.. 2024. 1. 11.
[java] 귤 고르기 풀이 1. 받은 귤의 크기는 key값으로, 그 크기의 개수를 value값으로 하여 map에 저장한다 - for문으로 배열을 돌면서 map에 넣음 2. answer=0, sum=0을 선언한다 - answer : 크기 종류의 수 - sum : 크기 종류를 추가할 때마다 늘어나는 귤의 총 개수 3. list에 map의 value값들을 넣고, 역순으로 정렬한다 - 개수가 많은 것부터 고려해야 종류의 수가 줄어들 수 있기 때문이다 4. for문으로 sum에 value값들을 큰 것부터 더해가며 k와 비교한다. 동시에 answer도 1씩 증가시킨다 - sum이 k보다 커지면 answer 반환 회고 - getOrDefault 잊지말자,, 코드(접은 글) 더보기 import java.util.*; class Soluti.. 2024. 1. 11.
[WEB] OSI, TCP/IP [TCP/IP계층과 OSI계층의 비교] [TCP/IP 계층] 1. 애플리케이션 계층 - FTP, HTTP, SSH, SMTP, DNS등의 응용 프로그램이 사용되는 프로토콜 계층 - 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층 - FTP : 장치와 장치 간의 파일을 전송하는 데 사용되는 표준 통신 프로토콜 - SSH : 보안되지 않은 네트워크에서 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜 - HTTP : WWW을 위한 데이터 통신의 기초이자 웹사이트를 이용하는 데 쓰는 프로토콜 - SMTP : 전자 메일 전송을 위한 인터넷 표준 통신 프로토콜 - DNS : 도메인 이름과 IP주소를 매핑해주는 서버 2. 전송 계층 - 송신자와 수신자를 연결하는 통신 서비스를 제공 - 연결.. 2024. 1. 10.
[TIL] 유데미 X 사람인 취업 부트캠프 19일차 / java [1. 오늘 배운 것] 1. 연습문제2 - 인치를 객체로 public class Dimension { private int feet; private int inches; public Dimension(int inches) { if (inches < 0) { this.feet = -1; this.inches = -1; } else { this.feet = inches / 12; this.inches = inches % 12; } } public int getFeet() { return feet; } public int getInches() { return inches; } } - 정사각형 클래스 public class Square { private int side; public Square(int side.. 2024. 1. 10.
[WEB] 3-way-handshake, 4-way-handshake [TCP 통신] - TCP (Transmission Control Protocol) : 인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜 * 가상회선 패킷 교환 방식 : 각 패킷에는 가상회선 식별자가 포함되며 모든 패킷을 전송하면 가상회선이 해제되고 패킷들은 전송된 순서대로 도착하는 방식 [3-way-handshake, 4-way-handshake] 1. 둘의 차이? - 3-way-handshake는 TCP의 연결 과정 - 4-way-handshake는 TCP의 연결 해제 과정 * TCP는 위와같은 과정이 있어 신뢰성이 있지만 느리고, UDP는 위와 같은 과정이 없어서 신뢰성이 없지만 빠르다 2. 포트 상태 정보 - CLOSED : 포트가 닫힌 상태 - LISTEN : 포트.. 2024. 1. 10.
SOLID 단일 책임의 원칙 (SRP, Single Responsibility Principle) - 모든 클래스는 각각 하나의 기능만을 가진다는 원칙 - 클래스나 모듈을 바꿔야 할 이유가 하나여야 한다는 원칙 (-클린코드) - 책임을 적절히 분배하여 관리보수에 용이함 - 다른 클래스들이 서로 연쇄적으로 영향을 미치는 것을 방지 개방-폐쇄 원칙 (OCP, Open-Closed Principle) - 클래스, 모듈, 함수 등이 확장에는 열려있고, 변경에는 닫혀있어야 한다는 원칙 - 쉽게 확장이 가능해야 함 - 요구사항의 변경이나 추가사항이 발생하더라도, 기존 구성요소는 변해서는 안 됨 - OCP를 가능하게 하는 중요한 매커니즘 : 추상화, 다형성 - 변할 수 있는 부분을 추상화하여, 상속하는 클래스가 의존할 수 있게.. 2024. 1. 9.
[TIL] 유데미X사람인 취업 부트캠프 18일차 / 자바, 객체지향 [1. 오늘 배운 것] 1. 이클립스를 사용해서 자바 프로그램 구구단표 짜기 - MultiplicationTable 클래스와 MultiplicationRunner 클래스를 각각 생성한다 - MultiplicationTable 클래스에 구구단표를 출력하는 함수를 생성한다 public class MultiplicationTable { void print(){ for (int i = 1; i < 10; i++) { System.out.printf("%d * %d = %d", 5, i, 5*i).println(); } } } - MultiplicationTableRunner 클래스에 구구단표 출력 함수를 호출하는 코드를 작성한다 public class MultiplicationTableRunner { publi.. 2024. 1. 9.
캡슐, 상속 캡슐화 (Encapsulation) 1. 개념 및 특징 - 모든 변수들과 메소드들을 클래스 단위로 모으는 것, 객체 안에 데이터와 메소드를 숨기는 것, 객체 속성과 메소드를 외부에 노출하지 않음 (정보 은닉) 2. 장점 - 코드의 중복을 제거 - 외부의 잘못된 접근으로부터 필드와 메소드를 보호 - 의도치 않은 변화에서 데이터와 메소드의 안전을 유지 상속 (Inhertiance) 1. 개념 및 특징- 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것 2. 사용방법- 새로 사용하고자 하는 클래스(하위클래스)의 이름 뒤에 상속받고자 하는 클래스(상위클래스)의 이름을 키워드 'extends'와 함께 써주면 됨- 예시 class point { } class circle extends point { } cla.. 2024. 1. 9.
[TIL] 유데미X사람인 취업 부트캠프 17일차 / [1. 오늘 배운 것] 1. 연산자 2. if문 - if (조건문) {명령} ; - 조건문이 참일때만 명령이 실행된다 3. 연습문제 - 변수 a, b, c, d 선언 후 a+b 가 c+d보다 큰지 조건문으로 확인 - 세 변수를 선언 후 세 변수를 각도로 하여 삼각형이 되는지 확인 - 변수를 선언하여 홀수임을 확인 4. 반복문 - 기본 구조 : for(initialisation; condition; update) 구문 - 구구단표 출력 - 변수를 생성해서 다른 구구단표를 출력할 수 있다 - 초기값이나 업데이트 구문에는 다중값을 넣을 수 있지만, 가운데 조건문에는 한 가지 조건만 들어올 수 있다 5. 메서드 - 기본 구조 : void 메서드명(인자) { 명령문 } - void는 반환값이 없는 구조. 실행만 .. 2024. 1. 8.