29

서블릿

서블릿에 대해 알아보자. 회원 가입 웹페이지에 HTML Form이 있고, 이름이랑 나이를 넣고 전송을 한다고 가정해보자. 이 과정을 HTML POST로 데이터를 저장하려고 하면 서버에서 처리해야 하는 업무는 정말 많다. ---------------------------------------------- ~ 서버에서 처리해야 하는 업무 순서 ~ 1. 웹 애플리케이션 서버 직접 구현 2. 서버 TCP/IP 연결 대기, 소켓 연결 3. HTTP 요청 메시지를 파싱 해서 읽기 4. POST 방식, /save URL인지 확인 5. Content-Type 확인 6. HTTP 메시지 바디 내용 파싱 7. 저장 프로세스 실행 8. 비즈니스 로직 실행 (

🌱 Spring 2021.05.17

웹 서버, 웹 애플리케이션 서버 (WAS), 웹 시스템 구성

웹은 다 HTTP 기반으로 통신을 한다. 웹 브라우저에서 URL을 치면 인터넷을 통해서 서버에 접근을 하고 서버에서는 HTML을 만들어서 클라이언트에게 내려주면 웹브라우저가 받은 HTML로 우리에게 보여준다. 그런데 클라이언트에서 서버로 데이터를 전송할때 서버에서 클라이언트로 데이터를 응답할때 이때 다 http 기반으로 동작하게 된다. 모든것이 Http를 기반으로 데이터를 주고 받는다. HTML, Text, Image, 음성, 영상, 파일, JSON, XML, API ... 거의 모든 형태의 데이터를 전송 가능하다. 서버간에 데이터를 주고 받을때도 HTTP를 대부분 사용한다. 웹 서버란? HTTP 기반으로 동작한다. 정적 리소스와 기타 부가기능을 제공한다. 정적 리소스라는것은 특정 폴더 디렉토리에 이미지..

🌱 Spring 2021.05.10

ES2020 강좌 2-1. 끝말잇기 순서도 그리기

자바스크립트의 버전에 관하여 간단히 ES6는 2015년도에 나왔고 이후 버전부터 ES2016 = 2016년 버전 ES2017 = 2017년 버전 ES2018 = 2018년 버전 … 현 강의는 ES2020 브라우저를 최신화하면 브라우저에 자바스크립트 버전도 최신화가 된다. 최신화를 하면 추가로 지원되는 기능을 사용할 수 있는데 이 추가되는 기능들이 매우 편리하다. 개발자 사이에서 인터넷 익스플로러는 악명이 높은데, 익스플로러는 자바스크립트 버전이 너무 낮다. 그래서 최신 코드를 옛날 코드로 바꿔주는 트렌스파일러를 사용해야한다. 개발은 일단 최신 버전으로 해주고 트랜스파일러를 사용해서 IE에 적용하면 된다. 그래서 왜 IE에서만 사용 가능한 프로그램이 존재하는지 이해할 수 없다. 끝말잇기 강의 시작 지난 시..

JVM의 Garbage Collector

[10분 테코톡] 👌던의 JVM의 Garbage Collector https://www.youtube.com/watch?v=vZRmCbl871I 내가 이해한만큼 정리 Garbage Collection 과정 1. Garbage Collector 가 Stack 의 모든 변수를 스캔하면서 각각 어떤 객체를 참고하고 있는지 찾아서 마킹한다. 2. Reachable Object 가 참조하고 있는 객체도 찾아서 마킹한다. 3. 마킹되지 않은 객체를 Heap 에서 제거한다. 1,2번을 Mark , 3번을 Sweep 작업이라고 한다. 그래서 Garbage Collection의 과정을 Mark & Sweep 과정이라 한다. Heap 은 New Generation 과 Old Generation 으로 구분되는데, New G..

🌱 Spring 2020.12.20

[이펙티브자바] 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라

*정적 유틸리티 클래스: 맞춤법 검사기가 '사전(dictionary )'에 의존하는 것 같이 하나에 의존하는 클래스 정적 유틸리티를 잘못 사용한 예 - 유연하지 않고 테스트하기 어렵다. public class SpellChecker { private static final Lexicon dictionary = ...; private SpellChecker() {} // 객체 생성 방지 public static boolean isValid(String word) { ... } public static List suggestions(String type) { ... } } 위 코드에선 사전을 하나만 사용하고 있다. 맞춤법 검사를 할 때 어떤 언어가 들어올지 모르는데 하나의 사전을 정해놓고 사용하는 것이 아쉽..

[오브젝트] 04 설계 품질과 트레이드오프 : 캡슐화

[오브젝트] 04 설계 품질과 트레이드오프 요약과 나의 생각 데이터 중심 설계와 책임 중심 설계의 장단점을 비교하기 위해 캡슐화, 응집도, 결합도를 사용. #캡슐화 상태와 행동을 하나의 객체 안에 모으는 이유는 객체의 내부 구현을 외부로부터 감추기 위해서. 변경될 가능성이 높은 부분을 구현이라 하고 상대적으로 안정적인 부분을 인터페이스라고 부른다. 객체를 설계하기 위한 가장 기본적인 아이디어는 변경의 정도에 따라 구현과 인터페이스를 분리하고 외부에서는 인터페이스에만 의존하도록 관계를 조절하는 것이다. 캡슐화는 외부에서 알 필요가 없는 부분을 감춤으로써 대상을 단순화 하는 추상화의 한 종류다. 캡슐화가 중요한 이유는 불안정한 부분과 안정적인 부분을 분리해서 변경의 영향을 통제할 수 있기 때문이다. 정리하면..

리눅스 swap memory 설정 (스왑 메모리)

** 블록사이즈 1024로 하여 스왑메모리 8GB를 잡을 때 예시 ** Step1. 기가바이트 킬로바이트 계산기를 사용해 내가 잡을 수를 알아낸다. (계산기 링크) 8GB = 8388608 Step2. 아래 명령어에 대입하여 입력한다. dd if=[스왑파일을 생성할 경로] of=[스왑파일명] bs=[블록사이즈] count=[킬로바이트로 환산한 값] 예시 dd if=/home of=/swapfile bs=1024 count=8388608 Step3. 위에서 생성한 파일을 스왑파일로 설정한다. mkswap /swapfile Step4. 설정한 스왑파일 즉시 적용한다. swapon /swapfile Step5. 확인 free 번외1. 재부팅 후에도 반영 vi /etc/fstab 에 들어가 맨 밑줄에 스왑파일 ..

🐧 리눅스 2020.03.16

MySQL DB 백업 & 복원 (Backup & Restore)

디비 데이터까지 통으로 전부 백업 mysqldump -u [계정] -p [데이터베이스명] > [백업파일이름].sql 비밀번호입력: **** mysqldump -u root -p mydb > mydb_back2020.sql 비밀번호입력: 0000 디비 스키마만 백업 (옵션 -d 추가) mysqldump -u [계정] -p [데이터베이스명] -d > [백업파일이름].sql 비밀번호입력: **** mysqldump -u root -p mydb -d > mydb_schema2020.sql 비밀번호입력: 0000 mysqldump -u [계정] -p [데이터베이스명] > [백업파일이름].sql 비밀번호입력: **** mysqldump -u root -p mydb > mydb_back2020.sql 비밀번호입력: ..