어떤 문제가 있었는지 내가 시도해본 것들 어떻게 해결했는지 뭘 새롭게 알았는지 오늘은 html과 css 작업을 했다. 박스 사이즈를 조절할 때의 크기 조절을 고민했었는데, > box-sizing: border-box; 을 사용하면 너비와 높이를 균일하게 유지해준다
오늘은 토이프로젝트 중 백엔드를 구현할 차례이다. 첫번째로 저장을 눌렀을 때, 내가 어떤 정답을 눌렀는지 알 수 있게 alert창에 띄어놨다. > function save(){ let obj_length = document.getElement
오늘은 토이프로젝트 내 할당량을 거의 다 끝내서, 코딩테스트 공부를 좀 하다가 팀원의 오류를 찾아주었다. db에서 가져온 id...값들이 json값으로 출력이 안되었는데 return str(response)이렇게 string값으로 변환시켜주니까 json형식으로 변환이
{% for ml, ml2 in zip(all_toy_ids2, all_toy_ids) %} {% endfor %} @app.route('/')def home(): all_toy = list(db.toy.find({})) all_toy_ids = \[]
blueprint는 flask에서 제공하는 라이브러리로, 페이지나 기능에 맞게 벡엔드를 분류해서 사용하게 편하게 해준다.우리가 협업을 할때 app.py라는 파일에 벡엔드 구현을 대부분 했는데,알아보니 blueprint라는걸 사용해서 협업을 편하게 해주는게 있다는 것을
오늘 console 체크의 중요성을 깨달았다. @app.route("/main", methods="POST")def save_main(): titles_receive = request.form'titles_give' descs_receive = request
*객체지향 언어(객체지향 언어의 중심에는 Class가 존재) -> Java는 클래스 없이 개발 불가능. 개발의 시작과 끝 모두 클래스에서 시작하고 클래스에서 끝난다.
단 하나의 값을 저장할 수 있는 메모리 공간메모리 공간은 정보처리 기초단위인 1byte로 구성메모리 공간은 각각이 구분될 수 있도록 메모리 주소를 가짐(Java에는 클래스 명만 대문자로 시작하자는 암묵적인 규칙 존재)상수 한번만 값이 저장 가능한 변수final 변수타입
Flowchart(흐름도) 어떠한 일을 처리하는 과정을 순서대로 간단한 기호와 도형으로 도식화한 것 알고리즘이나 프로그램의 논리 혹은 흐름을 그림으로 표현하는 방법 [Flowchart
for(초기화 ; 조건식 ; 증감식){ 조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 문장;}실행 순서1\. 초기화2\. 조건식3\. 조건식이 참일 경우 문장 수행4\. 증감식5\. 조건식이 거짓이 될 때 까지 반복class Control3_3 { publ
Math.random() -> 0.0과 1.0 사이의 임의의 double 값을 반환\*0.0 <= Math.random() < 1.0while(조건식){ 조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 문장;}실행 순서 1\. 조건식2\. 조건식이 참일
배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것 배열의 선언배열을 다루기 위한 참조변수의 선언선언 방법: 아래 두 가지 방법 모두 지원 \* 타입\[] 변수이름; int\[] age; 타입 변수이름\[]; \*\*\* string
알고리즘은 어떠한 문제를 해결하려는 방법과 절차. 우리가 하려는 프로그래밍에 필요한 요소로 볼 수 있다.알고리즘에 대한 조건1\. 입력: 외부에서 제공되는 자료2\. 출력: 적어도 2개 이상의 서로 다른 겨로가 출력3\. 명확성: 수행과정은 무엇을 하기 위한 것인지 명
클래스: 객체를 정의해 놓은 것 / 객체를 생성하는데 사용객체 : 모든 인스턴스를 대표하는 일반적인 용어(Tv 객체)인스턴스: 특정 클래스로부터 생성된 객체(Tv 클래스를 사용해서 만든 TV 인스턴스)인스턴스화: 클래스 => 인스턴스(객체)객체 = 속성(변수) + 기능
기존의 클래스로 새로운 클래스를 작성하는 것.두 클래스를 부모와 자식으로 관계를 맺어주는 것extends키워드를 사용해 관계를 맺음.자손은 조상의 모든 멤버를 상속. \- 생성자와 초기화 블럭 제외자손의 멤버 개수는 조상보다 적을 수 없다. \- 항상 같거나 많음
물이 아래로 흐르는 것 처럼 프로그램의 순차적인 처리를 중요시함. 프로그램 전체가 유기적으로 연결 되도록 개발하는 것을 뜻함컴퓨터의 작업 처리 방식과 유사해 처리 속도가 빨라 시간적 유리프로그램의 기능을 중심으로 개발 진행'함수를 사용해서 개발' 함수를 사용하면 중복
추상 클래스는 클래스 내 '추상 메소드'가 하나 이상 포함되거나 abstract로 정의된 경우.abstract와 final 키워드를 동시에 표기할 수 없다. 추상클래스는 일반적인 메소드도 있을수 있고 추상 메소드가 있을 수 있다.추상클래스는 일반변수들을 가질 수 있다.
IP 주소 : 거대한 네트워크 망에서 컴퓨터를 식별하기 위한 위치 주소. 네트워크 상 데이터 송/수신은 이 주소를 기준으로 이루어짐 브라우저: 크롬, 사파리, 엣지와 같이 웹페이지, 이미지, 비디오 등 컨텐츠를 송/수신하고 표현해주는 소프트웨어 브라우
두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스.안전하고 신뢰할 수 있으며 효율적인 소프트웨어 통신 표준을 따르므로 정보교환 지원어플리케이션 프로그래밍 인터페이스는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙 정의. 개발
소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책. 소스나 기계코드로 바로 전환될 수 있는 완성된 디자인은 아니며, 다른 상황에 맞게 사용될 수 있는 문제들을 해결하는데에 쓰이는 서술이나 템플릿. 디자인 패턴은 프로그래머가 어플리
"데이터의 집합" DB는 정보를 저장하고 관리를 해준다.Database Management System 데이터베이스를 관리하고 운영하는 소프트웨어Relational DBMS 관계형 데이터베이스테이블(table)이라는 최소 단위로 구성, 이 테이블은 열(column)과
객체지향 모델과 관계형 데이터베이스의 패러다임 불일치 밀도문제는 데이터베이스의 데이터가 더 정형화되어있고 까다롭다 관계형 데이터 베이스에는 상속의 개념이 x. 하지만 우리가 이미 배웠던 것처럼 상속은 객체의 역할과 구현을 분리해주기 위해 객체 지향 프로그래밍에서
JPA 객체 - ORM - DB객체 - 영속성 컨텍스트 매니져(entity context manager) - DB영속성 컨텍스트 매니져 -> 객체와 DB사이의 소통을 효율적으로 관리.PK(Primary Key)테이블에서 각 row 마다 가져야 하는 유일무이한 값(Nul
여는 태그, 닫는 태그가 쌍으로 조재.교차가 불가능head, body 태그로 구분 \- head 태그는 CSS, Javascript 코드를 포함body 태그는 뼈대 전체를 포함 \*\* 대표적인 HTML 태그h1 ~ h6 - headline의 약자, 신문 제목 같은
브라우저를 살아 숨쉬게 만드는 친구.클릭, 마우스 오버 시 색 변화, 숨기기, 나타내기 등 수많은 일을 한다.미리 작성된 자바스크립트 함수 모음집많이 쓰는 HTML, CSS 조작 함수를 미리 만들어 제공사용법만 알면 된다head 태그 사이에 jQuery 임포트
MVC(Model - View - Controller) 디자인 패턴Server 에서 HTML 을 내려 주는 경우 ControllerClient의 요청을 Model로 받아 처리ex) 회원가입을 위한 개인 정보들(id, password, name)Client에게 View(
IoC, DI 는 객체지향의 SOLID 원칙 그리고 GoF의 디자인 패턴과 같은 설계 원칙 및 디자인 패턴 IoC - 설계원칙 / DI - 디자인 패턴좋은 코드를 위한 Spring의 IoC와 DI좋은코드란?논리가 간단중복을 제거, 표현 명확코드를 처음 본 사람도 쉽게
열거형은 여러 상수를 선언해야 할 때, 편리하게 선언할 수 있다. 이런게 열거형의 방식인데, 따로 값을 지정해주지 않아도, 자동적으로 0부터 시작하는 정수값이 할당된다. ex) clover = 1 , heart = 2, diamond = 3 .... if(Card.
람다식은 간단히 말해 메서드를 하나의 '식(expression)'으로 표현한 것함수를 간략하면서도 명확하게 표현할 수 있게 해줌.메서드를 람다식으로 표현할 시 메서드의 이름과 반환값이 없어지므로, 람다식을 '익명 함수(anonymous function)'라고도 함.위는
final은 마지막의 or 변경될 수 없는 의미.거의 모든 대상에 사용변수에 사용시, 값을 변경할 수 없는 상수가 됨.메서드에 사용시, 오버라이딩을 할 수 없게됨. 클래스에 사용시, 자신을 확장하는 자손클래스를 정의하지 못함.final이 사용될 수 있는 곳 - 클래스,
@SpringBootApplication -> 우리가 아무런 설정을 안해줘도 스프링에 필요한 디폴트 설정들을 다 설정해줌 SpringApplication.run 을 통해 서버가 실행된다! 3계층으로 분리 controller - 요청에 대한 처리와 반환, 즉 입구이자
변수의 종류를 결정짓는 중요한 요소 -> 변수의 선언 위치. 멤버변수를 제외한 나머지 변수는 모두 지역 변수. 멤버변수 중 static이 붙은 것은 클래스 변수(공유 변수), 붙지 않은 것은 인스턴스 변수 지역변수는 클래스 영역 이외의 영역에서 선언 인스턴스 변
프로젝트 진행과정에서 특정할 만한 건이나 표.ex) 프로젝트 계약, 착수, 인력투입, 선금 수령, 중간보고 등 프로젝트 성공을 위해 반드시 거쳐야 하는 중요한 지점!마일스톤은 프로젝트 일정관리를 위해 반드시 필요한 지점을 체크하기 위해 사용.프로젝트 성공을 위해 필수적
엔티티를 영구 저장하는 환경어플리케이션이 DB에서 꺼내온 데이터 객체를 보관하는 역할.영속성 컨텍스트는 엔티티 매니저를 통해 엔티티를 조회하거나 저장할때 엔티티를 보관, 관리비영속(New) 영속성 컨텍스트와 관계가 없는 새로운 상태.해당 객체의 데이터가 변경되거나 말거
Service, Repository 없이 Controller 한 개로도 잘 작동하는 코드.관심상품 등록 API관심상품 조회관심상품 최저가 업데이트 API이런 것을 봤을때,한 개의 클래스에 너무 많은 양의 코드가 존재한다.a. 코드 이해가 어려움: 처음부터 끝까지 다 읽
서버 개발자들은 처리 과정을 크게 3가지로 분리. Controller, Service, Repository Controller
IoC(제어의 역전)용도에 맞게 필요한 객체를 그냥 가져다 사용.\*\* DI(Dependencyy Injection) - 의존성 주입 \- 사용할 객체가 어떻게 만들어졌는지 알 필요 없음.스프링 IoC 컨테이너DI를 사용하기 위해서 객체 생성이 우선되어야 함.객체 생
스프링 시큐리티 -> 스프링에서 인증과 인가를 관리해줌 해당 유저가 실제 유저인지 인증하는 개념.해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 개념.일반적으로 서버-클라이언트의 구조. Http 프로토콜을 이용해 통신. -> 비연결성(Connectionles
HTTP는 상태를 저장하지 않는다.(stateless)쿠키와 세션은 HTTP에 상태 정보를 유지(stateful)하기 위해 사용.쿠키와 세션을 통해 서버는 클라이언트 별로 인증 및 인가 가능쿠키클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일구성요소Name(이
JWT? JWT(JSON Web Token). Json포맷을 이용해 사용자에 대한 속성을 저장하는 Claim 기반의 web token. 보통 쿠키 저장소에 담김 JWT 사용 로그인 정보를 server에 저장하지 않고, Client에 로그인 정보를 JWT로 암호화해 저
HTTP는 요청과 응답으로 이뤄지는 한 사이클이 끝나면 연결이 끊어짐 -> 무상태성=> 클라이언트의 상태를 보존 x클라이언트의 상태를 서버가 아닌 클라이언트에 저장해두고 필요시마다 데이터를 꺼내 서버에 전달하는 방식으로 HTTP 단점을 보완하고자 쿠키와 웹 storag
일부 객체 지향 프로그래밍 언어에서 필드(데이터 멤버)와 메소드 간 기능의 중간인 클래스 멤버의 특수한 유형. 프로퍼티의 읽기와 쓰기는 일반적으로 getter와 setter 메소드 호출로 변환java bean 클래스 외부에서 필드에 접근할 시 반드시 메소드 통해 접근.
CORS CORS 관련 이슈 -> CORS 정책을 위반해 발생. CORS(Cross-Origin Resource Sharing) - 교차 출처 리소스 공유. 출처(Origin)? Protocol, Host, 포트번호까지 모두 합친 것. 즉, 서버 위치까지 찾아가기
사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)을 특정 웹사이트에 요청하게 하는 공격
웹 해킹 공격 중 하나.Cross Site Scripting의 약자지만 이미 CSS가 존재해 XSS라고 부른다. XSS는 게시판이나 웹 메일 등에 자바 스크립트와 같은 스크립트 코드를 삽입하여 개발자가 고려하지 않은 기능이 작동하게 하는 치명적인 공격.대부분의 웹 해킹
컴퓨터 프로그램을 사용해 모델 또는 이들을 모아놓은 장면인 씬 파일(scene file)로 부터 영상을 만들어내는 과정.PHP, JSP, ASP, Node.js 등 Server-Side Script 언어 기반의 템플릿 엔진을 이용해 동적인 웹 콘텐츠(html) 문서를
데이터베이스에 명령을 내리는 것을 의미Select 쿼리문 -> 데이터베이스에서 '데이터를 선택해서 가져오겠다'는 의미Select쿼리문1) 어떤 테이블에서 2) 어떤 필드의 데이터를 가져올지로 구성데이터가 담긴 엑셀 시트와 동일함. 목록
@Valid는 JSR-303 표준 스펙(자바 진영 스펙)으로써 빈 검증기(Bean Validator)를 이용해 객체의 제약 조건을 검증하도록 지시하는 어노테이션JSR 표준의 빈 검증 기술의 특징 - 필드에 달린 어노테이션으로 편리하게 검증 가능모든 요청은 프론트 컨트롤
Hibernate? Hibernate는 자바 언어를 위한 ORM 프레임워크. JPA의 구현체로, JPA 인터페이스를 구현, 내부적으로 JDBC API 사용. JPA는 관계형 데이터베이스와 객체의 패러다임 불일치 문제를 해결할 수 있다는 점과, 영속성 컨텍스트(엔티티
데이터베이스에 저장하기 위해 유저가 정의한 클래스. -> Domain과 비슷함.RDBMS에서 Table을 객체화시킨 것.\-> Table의 이름이나 컬럼들에 대한 정보를 가짐.primary key를 가지는 변수를 선언.@GeneratedValue 어노테이션은 해당 Id
Spring Security 프레임워크는 스프링 서버에 필요한 인증 및 인가를 위해 많은 기능을 제공.Spring Security 적용하는 법.build.gradle에 implementation 추가// 스프링 시큐리티implementation 'org.springfr
사용자는 회원가입 진행해당 URI 요청은 permitAll 처리, 사용자의 입력값으로 service에서 회원가입 진행.사용자의 정보를 저장할 때 비밀번호 암호화해 저장PasswordEncoder를 사용해 비밀번호를 암호화 한 후 저장사용자는 로그인 진행해당 URI 요청
개방형 Authorization의 표준. API 허가(Authorize)를 목적으로 JSON 형식으로 개발된 HTTP 기반의 보안 프로토콜.사용자들이 사용하고자 하는 웹사이트 및 애플리케이션에 비밀번호를 제공하지 않고 접근 권한을 부여 받을 수 있게 해주는 공통적 수단
소프트웨어가 예상하지 못한 결과를 내는 것.버그 - '소스 코드'나 '설계과정에서의 오류' 때문에 발생.소프트웨어 내부 구조나 동작원리를 모르는 블랙박스와 같은 상태에서, 즉, 웹 서비스의 사용자 입장에서 동작을 검사하는 방법장점: 누구나 테스트 가능 - 개발자, 디자
ex) 상품 키워드 검색, 관심상품 등록, 회원 가입, 관심상품에 폴더 추가...ex) 회원 패턴 분석을 위한 로그 기록, API 수행시간 저장모든 핵심기능의 Controller에 부가기능 코드 추가 시, \- 핵심기능이 100개? -> 100개의 핵심기능에 동일한
데이터베이스에서 데이터에 대한 하나의 논리적 실행단계.ACID(원자성, 일관성, 고립성, 지속성)는 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어 더 이상 쪼갤 수 없는 최소단위의 작업.하나의 최소 단위의 작업에 여러가지 데이터 변
ORM은 객체 지향 프로그래밍과 관계형 데이터베이스 사이에서 데이터를 변환하고 전달하기 위한 기술.ORM 사용시, 개발자는 객체지향적인 코드를 작성하며 DB와 연동할 수 있다.즉, ORM은 개발자가 DB에 직접 SQL쿼리를 작성하지 않아도 되도록 도와줌.ORM은 객체를
데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터 특성.영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에 프로그램을 종료하면 모두 잃어버림.메모리 상의 데이터를 파일 시스템, 관계형 DB 혹은 객체 DB 등을 활용해 영구적으로저장해 영속성 부여데
Interceptor(인터셉터)? 컨트롤러(Controller)의 '핸들러(Handler)'를 호출하기 전과 후에 요청과 응답을 참조하거나 가공할 수 있는 일종의 필터 애플리케이션에서 발생하는 요청과 응답을 가로채는 기능을 제공하는 프로그래밍 컴포넌트. 주로 웹 애플
URL은 흔히 웹 주소라고 하며, 컴퓨터 네트워크 상에서 리소스가 어디있는지 알려주기 위한 규약. 인터넷 상의 리소스의 위치를 나타내기 위해 사용.URL은 일반적으로 인터넷에서 웹 페이지, 이미지, 동영상 등을 찾을 때 사용.URL은 프로토콜(ex. http, http
지속적인 통합(Continuous Integration)한마디로 "빌드와 테스트 자동화"모든 개발이 끝난 후 코드 품질을 관리하는 고전적 방식의 단점을 해소하기 위해 나타난 개념."지속적인 통합" 이라는 말 그대로 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유
\-> 정확한 /test URL만 일치.\-> /test, /test/, /test.html/, /test.xyz 등 다양하게 일치스프링 시큐리티는 자바 애플리케이션에 인증과 인가를 제공하는 데 중점을 둔 프레임워크 기존 서블릿 필터에서 인증처리 한 것 보다, cust
save기능\-> 객체지향 설계 중심에서의 Entity 객체를 ORM을 이용하여 데이터베이스에 저장하는 기능save() 메소드는 entity를 DB에 저장하는 기능을 수행.save() 메소드는 Spring Data에서 정의한 CrudRepository 인터페이스의 메소
프로토콜 상에서 무엇인가를 대신하는 것.클라이언트에서 서버로 접속을 할 때, 직접적으로 접속하지 않고 중간에 대신 전달해주는 서버 의미.클라이언트에서 프록시 서버로 전달할 요청 보냄프록시 서버는 클라이언트로부터 전달 받은 요청을 서버에 요청서버는 요청에 맞게 데이터를
SOP(Same Origin Policy) '동일 출처 정책' CORS(Cross Origin Resource Sharing) '교차 출처 자원 공유'
비즈니스 로직에서 연관관계가 걸려있을 때, 함께 조회하지 않게 하는 방법은JPA의 지연로딩 LAZY를 사용해 프록시로 조회하는 방법으로 해결가능.Entity 사이의 관계가 다대일 @ManyToOne 관계로 매핑되어있는 상황에서, @ManyToOne 어노테이션에 fetc
HTTP? Hyper Text Transfer protocol HTTP는 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜 즉, HTTP는 인터넷에서 하이퍼 텍스트를 교환하기 위한 통신 규약, 80번 포트 사용. HTTP의 구조 HTTP는 애플리케이션 레
DB에서 유저 정보를 가져오는 역할을 한다. 해당 인터페이스의 메소드에서 DB의 유저 정보를 가져와 AuthenticationProvider인터페이스로 유저 정보를 리턴하면, 그 곳에서 사용자가 입력한 정보와 DB에 있는 유저 정보를 비교.Spring Security에
데이터베이스에서 데이터를 삭제하는 방법 \-> 물리삭제와 논리삭제SQL DELETE 명령어를 사용해 직접 데이터를 삭제하는 방법삭제 대상인 데이터가 필요없을때 (추후에 조회할 필요가 없을때) 사용SQL의 UPDATE 명령어를 사용해 삭제 여부를 알 수 있는 컬럼에 데이
DTO는 데이터를 전달하기 위한 객체.계층 간 데이터를 주고 받을 때, 데이터를 담아 전달하는 바구니로 생각할 수 있다.주로 View와 Controller 사이에서 데이터를 주고 받을 때 활용.Getter/Setter 메소드 포함. 이외의 비즈니스 로직 포함XSette
실행 시(runtime) 발생할 수 있는 프로그램 오류'에러(error)'와 '예외(exception)' 두 가지로 구분에러 - 프로그램 코드에 의해 수습될 수 없는 심각한 오류예외 - 프로그램 코드에 의해 수습될 수 있는 다소 미약한 오류Exception 클래스들 -
Thread.sleep() 메서드를 사용할 때 InterruptedException을 처리하지 않으면 컴파일러 에러 발생. (기타 등등 메서드도 포함하지만 아직 하나밖에 모른다.)Thread를 종료하기 위한 메커니즘.일반적인 java 프로그램 -> 하나의 작업을 각각
단순히 실행중인 프로그램(program).즉, 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것을 말함.이러한 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 스레드로 구성.프로세스 내에서 실제로 작업을 수행하는 주체.모든
동시에 일어나지 않는다.작업이 완료되는대로 결과를 넘겨줌.요청과 결과가 동시에 일어나지 않음 -> 멀티쓰레드(Multi-thread)를 사용한 처리방식이 해당동시에 일어난다.요청이 들어오면 바로 처리를 거쳐 결과를 줌.시간이 얼마나 걸리든 결과를 줌 -> 특정 작업이
서비스 및 플랫폼을 개발하기 위해 필요한 모든 자원을 관리하는 기반.서비스를 운영하기 위한 IT 리소스(서버, DB, 네트워크, 스토리지 등) 구축, 운영하기 위한 모든 개념 통칭. 즉, 데이터를 주고받기 위한 물리적 장비.데이터 센터 및 전산실에 장비가 위치, 서비스
도커는 애플리케이션 뿐만 아니라 실행에 필요한 시스템 환경을 모아 컨테이너로 관리이렇게 만든 것을 도커 이미지라고 함. 이 이미지로 만든 컨테이너는 도커가 설치된 곳이라면 어디든 똑같이 동작. 이를 이용시, 개발자가 커밋할 때마다 Jenkins와 같은 지속적인 통합(C
서버가 제공하는 성능 및 부하를 측정할 수 있는 테스트 도구서버나 네트워크 또는 개체에 대해 과부하를 시뮬레이션하여 강도를 테스트하거나 다양한 부하 유형에서 전체 성능을 분석하는 데 사용Thread Group - 몇 개의 쓰레드가 동시에 요청을 보내는 지sampler
SQL(Structured Query Language) - 데이터베이스 제어언어DML - Data Manipulation LanguageINSERT SELECTUPDATEDELETE DDL - Data Definition LanguageCREATE DROPALTER -
Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈소스 기반의 비관계형 데이터 베이스 관리 시스템(DBMS)데이터베이스, 캐시, 메세지 브로커로 사용, 인메모리 데이터 구졸를 가진 저장소고성능 Key-Value 저장소, String, list, ha
테이블의 row에 접근 시 Lock을 걸고 다른 Lock이 걸려 있지 않을 경우에만 수정을 가능하게 할 수 있다.수정할 때 내가 먼저 이 값을 수정했다고 명시해 다른 사람이 동일한 조건으로 값을 수정할 수 없게 하는 것.비관적 락은 Repeatable Read 또는 S
오픈소스, In-Memory 데이터베이스로써 다양한 자료구조 제공메모리 접근이 디스크 접근보다 빨라 DB보다 빠름Redis 캐싱을 이용하여 성능을 개선하고자 할 때, 캐싱 데이터는 update가 자주 일어나지 않는 데이터가 효과적너무 많은 update가 일어나는 데이터
Java 기반의 오픈소스 프레임워크타입 세이프(type-safe)한 쿼리 구성이 가능하게 해줌. 이 프레임워크는 SQL, JPQL, JDOQL 및 다른 쿼리 언어와 함께 사용 가능. QueryDSL 사용시, 쿼리 쉽게 작성 및 리팩토링, 컴파일 시점에서 발생할 수 있는
컨테이너를 사용해 응용 프로그램을 더 쉽게 만들고, 배포하고 실행할 수 있게 설계된 도구. 컨테이너 기반의 오픈소스 가상화 플랫폼일반 컨테이너 개념에서 물건을 손쉽게 운송해주는 것처럼 \-> 애플리케이션 환경에 구애받지 않고 손쉽게 배포 관리컨테이너 기반 배포 방식은
version -> 도커 컴포즈 버전services -> 이곳에 실행하려는 컨테이너들을 정의 \* pharmacy-recommendation-app -> 서비스 명(네트워크 호스트명)/ 같은 네트워크에 속한 컨테이너끼리 서비스 명으로 접근 가능 container_
kakao developers 외부 API 사용 전 아래 내용 검증 API 호출제한 확인 API 호출제한 REST API 테스트 도구 활용해 API 테스트
Jackson에서 제공하고 있는 어노테이션. json으로 응답을 받을 때 현재 매핑된 필드와 매핑시켜준다.
프로그래밍에 있어 재사용이 가능한 각각의 독립된 모듈.소프트웨어의 재사용의 중요성과 필요성을 위해 나온 기술.하드웨어처럼 독립적인 기능 수행, 추후에 교환될 수 있도록 해야함. 컴포넌트의 세부사항은 겉으로 드러나선 안됨. 필요한 것 -> 해당 컴포넌트를 쓰기 위해 제공
Spring에서 지원하는 객체, 간편하게 Rest방식 API를 호출할 수 있는 Spring 내장 클래스json, xml, String 응답을 모두 받을 수 있다. Rest API 서비스를 요청 후 응답 받을 수 있도록 설계,HTTP 프로토콜의 메소드(GET, POST,
기능에 대한 불확실성을 감소, 개발자가 만든 기능을 안전하게 보호.테스트 코드 작성은 개발 단계 초기에 문제 발견에 도움을 줘서 개발 시간을 단축시킨다.
문서화 역할코드에 결함을 발견하기 위함리팩토링 시 안정성 확보테스트 하기 쉬운 코드를 작성하다 보면 더 낮은 결합도를 가진 설계를 얻을 수 있음 Test Driven Development (테스트 주도 개발)프로덕션 코드보다 테스트 코드를 먼저 작성하는 개발 방법TFD
시스템의 나머지 부분과 분리된 1개 이상의 프로세스 세트. 이러한 프로세스를 실행하는 데 필요한 모든 파일은 개별 이미지에서 제공,Linux 컨테이너는 개발 단계에서 테스트, 프로덕션에 이르기까지 이식성과 일관성 유지. 서버 환경을 재구축하는 부가적인 작업 없이 애플리
여러 개의 컴퓨터 시스템, 애플리케이션 및 서비스를 조율하고 관리하는 것. 여러 개의 작업을 함께 연결해 크기가 큰 워크플로나 프로세스를 실행하는 방식을 취한다. 이러한 프로세스는 여러 개의 자동화된 작업으로 구성, 관련되는 시스템도 여러 개일 수 있다. 오케스트레이션
https://inpa.tistory.com/entry/REDIS-%F0%9F%93%9A-%EC%BA%90%EC%8B%9CCache-%EC%84%A4%EA%B3%84-%EC%A0%84%EB%9E%B5-%EC%A7%80%EC%B9%A8-%EC%B4%9D%EC%A0%95%
캐싱 전략 - 웹 서비스 환경에서 시스템 성능 향상을 기대할 수 있는 기술.일반적으로 캐시(cache)는 메모리(RAM)사용. \-> DB보다 훨씬 빠르게 데이터를 응답할 수 있어 이용자에게 빠르게 서비스를 제공 가능. 캐시를 효율적으로 이용하기위해서 캐시에 저장할 데
https://novemberde.github.io/post/2017/04/30/VPC_Redis_0/
추상화(Abstraction)불필요한 부분을 제거함으로써 필요한 핵심만 나타낸 것. 일반화, 단순화목적: 복잡성을 낮추기 위한 도구 다형성(Polymorphism)다양한 형태를 가지는 것하나의 타입으로 여러 종류의 객체를 참조. 캡슐화(Encapsulateion) 객체
DB 조회 쿼리 최적화 Projection을 통해 필요한 값만 가져오기 전체 필드가 아닌 필요한 필드만 받아오기 적용 전: SELECT * FROM User; 적용 후: SELECT username, profileImageUrl FROM User; 위의 코드는 re
Grafana 설치 명령어 sudo apt-get updatesudo apt-get install -y software-properties-common wgetwget -q -O - https://packages.grafana.com/gpg.key | sudo
단위 테스트는 응용 프로그램에서 테스트 가능한 가장 작은 소프트웨어를 실행해 예상대로 동작하는지 확인하는 Test일반적으로, 클래스 또는 메소드 수준으로 정해짐. 단위의 크기가 작을수록 단위의 복잡성이 낮아짐. 테스트 대상 단위의 크기를 작게 설정해 단위 테스트를 최대
타입 세이프: 컴파일 시점에 오류를 발견할 수 있어, 쿼리 작성 오류를 줄인다. 코드 자동완성: IDE에서 코드 자동완성을 지원해 쿼리 작성이 더 쉽고 빠르다. 동적 쿼리 작성: 쿼리 조건이 복잡하거나 선택적인 경우, 동적으로 쿼리를 생성하는데 유용하다. 간결성: 쿼리
가장 단순한 형태의 망 구성 방식(Linear Topology) \- 양 노드 또는 네트워크가 (1:1) 점대점으로 상호 연결된 구조 \- 통신 양단 간에 1:1 데이터링크로 연결된 형상(Point to Point connection)점대점(1:1) 형태가 아닌
코드 배포를 자동화해 애플리케이션 가동 시간 유지 애플리케이션을 자동화하고 개발, 테스트, 프로덕션 환경에 일관되게 배포할 수 있다. 플릿 상태를 모니터링하고 필요에 따라 업데이트를 자동으로 롤백 AWS Management Console or AWS Command Li
쏟아지는 트래픽을 여러 대의 서버로 분산시켜주는 기술.한 곳의 서버에 모든 트래픽이 몰리는 상황을 방지. 로드밸런서는 서버에 가해지는 부하(=로드)를 분산(=밸런싱)해주는 장치 or 기술.클라이언트와 서버풀(Server Pool, 분산 네트워크를 구성하는 서버들의 그룹
애플리케이션과 네트워크 계층 사이에 존재하는 네트워크 구조의 핵심역할 하는 계층서로 다른 호스트에서 동작하는 애플리케이션 프로세스 간의 논리적 통신 제공애플리케이션 관점에서 보면 프로세스들이 동작하는 호스트들이 직접 연결된 것처럼 보인다는 것 의미서로 다른 컴퓨터의 카
select \* 사용 금지\-> 필요한 컬럼만 조회해서 불필요한 리소스 방지Like 검색 시 와일드카드(%) 끝에 작성Like 검색 시 와일드카드가 시작 부분에 있으면 인덱스를 활용하지 않는다. \-> 모든 레코드를 검색해 검색 속도 저하중복 제거UNION과 DIST
애플리케이션 트래픽을 여러 대상에 자동으로 분산시켜 안정적인 AWS 서버 환경을 운영하는데 도움을 주는 서비스.EC2 뿐만 아니라 컨테이너(ECS), AWS Lambda 등으로 다양한 서비스와 언계해 부하 분배 ELB는 서로 다른 EC2 인스턴스에 대한 하나의 엔드포인
특정 서비스나 기능만으로 특화해 만든 서버. 도입이 간단하며 운용 관리도 쉬워 많은 기업에서 사용 최근 웹서버, DNS 서버, 프락시 서버, 방화벽, 로드밸런서 등 여러 용도로 된 어플라이언스 서버가 나옴. 어플라이언스 서버는 OS나 서버 소프트웨어가 설치된 상태로 출
사용자가 브라우저의 URL 표시줄에 도메인 이름을 입력시, DNS 서버에서는 해당 도메인 이름을 숫자 IP 주소로 변환해 올바른 웹 사이트로 안내. 도메인 네임 시스템(DNS)는 인터넷의 전화번호부. 사용자가 google.com과 같은 도메인 이름을 웹 브라우저에 입력
JPA란 자바 어플리케이션에서 관계형 데이터베이스
스프링에서 트랜잭션 처리를 @Transactional 어노테이션을 이용해 처리@Transactional은 스프링 AOP 기반스프링 AOP는 Proxy 기반으로 동작
객체지향 프로그래밍(OOP)에 대해 설명해주세요. (알고있는 원칙이나 키워드를 언급)객체지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체로 만들고, 객체들간의 상호작용을 통
백엔드(스프링)DI(Dependency Injection)에 대한 설명과 해당 기술의 장점에 대해 설명스프링에서 의존성 주입(DI)란, 객체간 의존성을 개발자가 객체 내부에서 직접 호출(new 연산자)하는 대신, 외부(스프링 컨테이너)에서 객체를 생성해서 넣어주는 방식
JPA의 영속성 컨텍스트영속성 컨텍스트는 엔티티를 영구 저장하는 환경이다. 애플리케이션과 DB 사이에서 객체를 보관하는 가상의 DB 역할을 한다. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리하게 된다. 제네
의존성 주입(Dependency Injection)은 객체 간의 의존 관계를 느슨하게 만들기 위한 디자인 패턴. 의존성 주입은 객체가 직접 필요로 하는 의존 객체를 생성하는 대신, 의존 객체를 외부에서 주입해 사용하는 방식. 주로 생성자, setter, 필드 세 가지
Spring의 핵심 기능 AOPAOP에는 2명의 형제가 있다. ??AOP와 그의 형제인 Filter, Interceptor는 뭘까?그리고 이건 무엇이 똑같고 무엇이 다를까? 우리는 비즈니스 로직을 위에서부터 아래로 짠다. 예를 들면 컨트롤러 -> 로그 -> 서비스 ->
List, Set, Map, HashMap의 차이순서가 있는 데이터 컬렉션데이터를 중복으로 저장 가능인덱스를 사용해 원하는 위치의 데이터에 직접 접근 가능순서가 없는 데이터 컬렉션데이터의 중복을 허용X주로 데이터의 존재 여부를 확인하기 위해 사용키-값(Key-value
Spring 에서 사용하는 Rest Client란?HTTP기반의 RESTful 웹 서비스와 상호작용 하기 위한 도구.Spring은 RestTemplate와 WebClient 두 가지 주요 RestClient 제공Blocking I/O 기반의 Synchronous API
절차지향 / 객체지향 / 함수형 프로그래밍이란? 차이점?절차지향 프로그래밍은 일련의 절차(함수, 서브루틴)들로 구성됩니다.프로그램의 흐름은 단계적인 절차에 의해 결정됩니다.데이터와 해당 데이터를 조작하는 함수 간의 분리가 적습니다. 객체지향 프로그래밍은 객체들의 집합으
웹 어플리케이션은 Tomcat(대표적인 서블릿 컨테이너)이라는 WAS서버에 배포. 브라우저의 요청은 WAS에 전달, 응답도 WAS로 받음.Web API 테스트 -> WAS를 실행해야함.스프링 3.2부터 스프링 MVC를 모킹해 웹 어플리케이션을 테스트하는 라이브러리\->
엔티티 객체를 조회하는 객체지향 쿼리.테이블 대상으로 쿼리하는게 아닌, 엔티티 객체를 대상으로 쿼리.JPQL은 SQL로 변환됨.JPA에서 제공하는 메소드 호출만으로 섬세한 쿼리 작성이 어렵다는 문제에서 JPQL 탄생.대소문자 구분 엔티티와 속성은 대소문자 구분(엔티티
DB-Engines 어떤 DB를 선택할지 결정할 때 보기 좋은 사이트 DB-Engines 새로운 데이터베이스 기술 동향 분석해서 순위를 매기는 중. 어떻게 점수를 매기는지 정리한 사이트 https://en.wikipedia.org/wiki/DB-Engines_rank
JPA Auditing? Java에서 ORM 기술인 JPA를 사용해 도메인을 관계형
일반적으로 무언가를 잘게 쪼갠 후 결과물을 생성하는 과정 의미. 해시 브라운은 잘게 쪼개 모양을 잡아 튀긴 음식인데, 이와 유사한 개념을 컴퓨터 과학에 적용해 데이터를 임의의 크기로 입력받아 고정된 크기의 출력값을 생성하는 함수!\-> 나머지 연산을 생각해보자! 7
애플리케이션 서버에서 DB를 연결하기 위해 동작이 필요커넥션 연결주로 TCP/IP를 사용해 애플리케이션 서버와 DB서버가 연결SQL 전달애플리케이션 서버는 DB가 이해할 수 있는 SQL을 연결된 커넥션을 통해 DB에 전달결과 응답DB는 전달된 SQL을 수행하고 그 결과
IP주소?인터넷 및 네트워크상에 연결된 컴퓨터, 모바일 기기등에 할당된 고유의 주소. 보통 집이나 컴퓨터 사무실에서 인터넷 사용 시,환경을 생각해보면 아래 그림과 같이 통신회사에서 인터넷 회선 1개가 들어오고, 우리는 이것을 공유기를 통해 여러대의 컴퓨터와 휴대폰에 유
apache 소프트웨어 재단(ASF)의 오픈소스 java servlet container톰캣은 servlet, JSP, EL, JSTL, WebSocket 등 여러가지 javaEE 기술을 구현tomcat은 여러개의 기능(부품)으로 구성. 톰캣의 코어 컴포넌트 = 카탈리
@Autowired 필드 주입 방식의 문제점. 순환 참조 발생 가능성 순환 참조가 발생 시, 컴파일 타임 시 에러가 잡히지 않다가 로직이 실행되는 런타임 시에 에러가 잡힘. 컴파일 때 에러가 잡히지 않아, 애플리케이션이 정상적으로 작동하는 것으로 보이나, setter
Java 프로그래밍 언어는 4가지 플랫폼 존재 모든 Java 플랫폼은 JVM(Java Virtual Machine)과 API(응용 프로그래밍 인터페이스)로 구성 각각 플랫폼은 JVM과 API 제공.API의 경우 개발에 도움이 되는 함수들을 모아둔 곳. 가장 기본이 되는
유연성과 확장성데이터베이스를 사용해 메뉴 항목들과 구조를 쉽게 추가, 수정, 삭제 가능.새로운 메뉴 항목이 필요하거나 기존 메뉴를 개선해야 할 때, 데이터베이스를 업데이트함으로써 더욱 유연하게 대응가능.보안 및 권한 관리 데이터베이스를 사용하면 메뉴 항목과 기능에 대한
좋은 데이터베이스 설계 무결성 - 데이터베이스 내에 모든 값은 언제나 정확한 값 유지 유연성 - 데이터베이스 구조는 요구사항 변화에 대해 수정이 쉬워야함 확장성 - 데이터베이스 구조는 기능 확장에 대해 수정이 쉬워야함 기본키 자연키 vs 인조키 자연키 장점 MySQL
회사에서 현재 사용하는 PostgreSQL과, 내가 사용했던 MySQL의 차이점을 알아보고자한다.PostgreSQL은 복잡한 쿼리와 대규모 데이터베이스를 다룸 MySQL은 설치와 관리가 비교적 쉽고, 빠르고, 신뢰할 수 있고, 쉽게 파악 가능한 간단한 DBPostgre
B-tree와 비슷한데, 다차원의 공간 데이터를 저장하는 색인 '현재 위치에서 200km 이내의 모든 도시를 찾아라'와 같은 질의에 대해 빠르게 응답. R-tree는 공간을 최소 경계 사각형(MBR, Minimum Bounding Rectangle) 들로 분할해 저장.
회사에서 프론트 리팩토링을 하다 막혀버렸다... 그래서 DOM을 공부해보라는 과제를 받았다... react가 그리워지는 순간이다... DOM(문서 객체 모델) 웹 페이지(HTML이나 XML 문서)의 콘텐츠 및 구조, 스타일 요소를 구조화 시켜 표현하여 프로그래밍 언어
클라이언트가 요청을 계속해야 하거나 요청이 이미 완료된 경우 응답을 무시해야함 클라이언트의 요청 헤더에 대한 응답으로 전송, 서버가 전환하는 프로토콜 서버가 요청을 수신해 처리 중 이지만, 아직 응답X주로 헤더와 함께 사용, 서버가 응답을 준비하는 동안 Link사용자가
DOM 페이지 로딩에 관해서 추가 스터디를 하고자 한다. 사용자가 선택한 자원을 서버에 요청하고 브라우저에 표시하는 것 자원은 HTML 문서, PDF, 이미지 등 다양한 형태를 띌 수 있다. 자원의 주소는 URL(Uniform Resource Identifier)에 의
Asynchronous JavaScript and XMLAJAX를 사용 시 웹 페이지에서 비동기적으로 데이터를 가져오고 업데이트할 수 있다. Asynchronous(비동기적)AJAX는 비동기적인 방식으로 동작. 브라우저가 웹페이지를 계속 실행하며 서버로 요청을 보내고
Apache POI 라이브러리 일부인 클래스. Excel workbook을 생성하고 편집하기 위한 기능을 제공. 워크북은 Excel 문서의 가장 높은 수준의 컨테이너, 시트(Sheet) 및 data 포함. Apache POI를 사용해 HSSFWorkbookk 객체를 생
Spring Batch 큰 단위의 작업을 일괄처리 대부분 처리량이 많고 비 실시간성 처리에 사용 -> 대용량 데이터 계산, 정산, 통계, 데이터베이스, 변환... 컴퓨터 자원 최대로 활용 -> 컴퓨터 자원 사용이 낮은 시간대 배치 처리 or 배치만 처리 위해 사용자
Java에서 속성(property) 데이터를 다루는 데 사용되는 클래스 주로 설정파일이나 구성 정보를 관리. Key-Value 쌍의 데이터를 저장, 로드하는 기능 제공
안드로이드 및 Java 기반 애플리케이션에서 RESTful 웹 서비스를 쉽게 호출하고 통신하기 위해 만들어진 라이브러리. TypeSafe해 네트워크로부터 전달된 데이터를 필요한 형태의 객체로 받을 수 있음. HTTP Client library인 OkHttp 와 함께 사
주로 암호화(cryptography)와 관련된 작업에서 발생. 이 예외는 key가 잘못된 경우 throw 일반적으로 암호화 작업에서 사용되는 key는 특정한 형식과 길이를 가짐. 만약 암호화 or 복호화 작업 중 제공된 키가 기대한 형식이나 길이와 일치하지 않을 시In
네트워크 요청과 응답을 로깅하고 디버깅하는데 사용되는 interceptor OkHttp library에서 제공 네트워크 통신을 추적 및 디버깅하는데 도움 앱이 서버로 보내는 HTTP 요청과 서버에서 받는 HTTP 응답을 자세하게 로깅하고 기록 가능. 요청과 응답의 본문
Retrofit interface. API method는 본래의 응답을 여러 번 사용하기 위해 복제(cloned)를 함. Retrofit에서 비동기 HTTP 요청을 나타내는 객체 -> Call.enqueue() Retrofit 으로 생성한 API 인터페이스의 메서드를
Spring Batch 설정하고 사용하는 방법을 정의한 인터페이스 Job 관련 정보와 실행 내역을 저장 및 관리하는 요소 Job의 실행 상태, 파라미터, 실행 이력 등 JobRepository에 저장 및 Job 실행 중에 발생하는 데이터 관리 Spring batch에서
Spring Batch 어노테이션 배치의 인프라스트럭처를 부트스트랩하는데 사용 인프라스트럭처 레이어 : ItemReader, ItemWriter 를 비롯해, 재시작과 관련된 문제를 해결할 수 있는 클래스와 인터페이스 제공. 제
Mybatis를 사용할 때 SqlSessionTemplate 라는걸 사용한다. 여기서 ExecutorType 모드가 있다는걸 알게 되었는데 지금 알게된 두가지 방식을 정리해보고자 한다. 이 모드에서는 각 SQL 문이 실행될 때마다 DB 연결을 열고 실행.각 SQL 문이
파라미터가 null -> 문자열 null을 담음 대상이 null -> NullPointerException Object가 String이 아니면 ClassCastExceptiion대상 값이 Null이면 NullPointerExceptionObject에 담긴 값이 Stri
JDBC ResultSet 기본기능 JDBC(Java Database Connectivity) 자바 프로그램에서 데이터베이스와의 연결을 관리하고 SQL 쿼리를 실행하기 위한 자바 API ResultSet? JDBC에서 쿼리 결과를 나타내는 인터페이스 ResultSet
JDBC ResultSet 기본기능 JDBC(Java Database Connectivity) 자바 프로그램에서 데이터베이스와의 연결을 관리하고 SQL 쿼리를 실행하기 위한 자바 API ResultSet? JDBC에서 쿼리 결과를 나타내는 인터페이스 ResultSet