본문 바로가기

CS 지식

(13)
JavaScript - Promise 😂 Promise가 도대체 뭐야.. async / await 그리고 bluebird에 대해 공부하면서 필수적으로 따라붙는 것이 바로 "promise"였다. promise에 대한 이해를 하지않으면 안될 것 같아 해당 포스트를 작성합니다. 🤔 Promise ? - 왜 생겼는가 ? 비동기 처리가 기본인 JavaScript에서의 동기적 처리를 위해?! - Promise는 '객체'이다. 어떤, 객체냐 하면.. 어떤 작업에 대한 결과를 객체로 나타낸 것입니다. - new로 생성하며,, const promiseTest = new Promise(function(resolve, reject) { setTimeout(function() { resolve('promise테스트'); }, 1000); }); promiseTe..
Git Clone이 되지않았던 문제 GitHub의 Repo를 clone 받을 당시, 내 username과 pwd를 쳤음에도 불구하고 계속해서 비밀번호가 다르다는 에러가 발생했다. 인터넷을 뒤져보니 2FA의 문제라고 했다. (회사의 git에 접근하려면 필수적으로 2단계 보안을 해야했기 때문) 따라서, Settings - Developer settings - Personal access tokens에서 token을 발급해주었다. (어디 메모장에 적어놓자!) 하지만.... 이번엔 레파지토리를 못찾겠단다........ 알고보니, access token 발급과정에서 repo를 체크하지 않아 발생한 것이었다. 체크하여 다시 발급하고 패스워드에 github의 내 기존 패스워드 대신 발급받은 accesstoken을 넣었더니 정상적으로 git clone이..
싱글톤 패턴 (singleton pattern) 앞선 게시물에서 static에 대해 알아보았다. 그 결과로서 싱글톤 패턴에 대해 이해를 진행할 수 있게 되었다. 싱글톤은 하나의 객체만을 생성하도록 강제하는 패턴이다. 다음의 예를 보게되면, 컴파일 에러가 발생한다. class Singleton { private Singleton() { } } public class SingletonTest { public static void main(String[] args) { Singleton singleton = new Singleton(); } } 왜냐하면 Singleton 클래스의 생성자에 private 키워드로 외부 클래스에서 Singleton 클래스의 생성자로의 접근을 막았기 때문이다. 이렇게 생성자를 private 으로 만들면 외부 클래스에서 Singl..
Static이란? 1) static static은 프로그램이 시작되고 종료될 때까지 살아있으며, 한 번만 생성이 되어 메모리에 미리 그 값을 고정한다. 초기화 필요없이 곧장 접근이 가능하다. 그렇다고, 불변인가?라고 물었을 때는 불변은 아니다. 해당 객체를 메모리에 올려놓는 역할로 해당 class의 해당 static변수, 메소드는 다른 어떤 class에서 참조했을 때, 똑같은 객체를 참조하고 있다. 다음은 간단한 예제이다. 위에서 말하고 싶은 것은 1. static 변수는 같은 객체를 공유한다. 따라서, new를 통해 새로 생성했다하더라도 static이기 때문에 처음 sysout인 test1~3 모두 같은 값 5가 도출되며, 두 번째 sysout인 test1~3은 test.value로 인해 변경된 1로 도출이 된다. 2...
JPA 연관관계 맵핑 1 : N / N : 1 단방향 연관관계 일대다, 다대일에서 외래 키가 존재하는 곳이 연관관계의 주인이다. 일대다 / 다대일 단방향 관계를 매핑할 때는 @JoinColumn을 꼭 사용해야한다. 1 : N N 쪽인 Post 엔티티에는 FK를 매핑할 수 있는 참조 필드가 없다. 대신에 반대쪽인 Blog 엔티티에만 참조 필드인 posts가 있다. //blog 일대다 mapping @OneToMany @JoinColumn(name = "blog_id") // post 테이블의 blog_id private List posts = new ArrayList(); N : 1 //Post 다대일 Mapping @ManyToOne @JoinColumn(name="blog_id", nullable = false) priva..
JVM (Java Virtual Machine) ( & JRE, JDK) JRE vs JDK vs JVM 1. JDK (Java Development Kit) JDK = JRE + Java Compiler 자바의 '개발'을 원한다면 JDK를 설치해야 한다. *Java Compiler : Java file을 컴퓨터가 이해할 수 있게 바꿔줌. .java 파일을 빌드한다면 .class 라는 파일이 자동으로 생성된다.* 2. JRE (Java Runtime Environment) JRE = JVM + Class Library + Class Loader Java 프로그램의 '실행'을 원한다면 JRE만 설치해도 된다. Class Library & Class Loader를 통해 Java File을 Library와 결합한 후 JVM에 넘겨줌. 3. JVM 아래에서 설명 예정 자바프로그램 실..
네트워크 구성요소 1. 네트워크 인터페이스 카드(=랜카드) - 2계층 장비 - 컴퓨터를 네트워크에 연결하기 위한 하드웨어 장비 - 직렬화 : 전기적 신호 -> 데이터 신호(패킷) / 데이터 신호(패킷) -> 전기적 신호로 상호변환 패킷: 데이터 전송단위 - NIC는 MAC주소를 갖고 있다. 따라서, 받은 패킷의 도착지 주소 =/ NIC의 MAC주소이면, 패킷을 폐기하고 맞으면 이를 CPU에 전송 MAC 주소 : 네트워크 하드웨어마다 하나씩 할당 된 물리적 주소로 유일해야하지만, 최근에는 변경이 가능하다 - 흐름 제어 : 데이터를 받지 못할 때, 통신 중지 요청을 할 수 있음 - 네트워크 하드웨어를 식별하는 주소 2. 허브 - 1계층 장비 - 거리가 멀수록 줄어드는 전기 신호를 재생성 - 여러 대의 장비를 연결 - 들어온 ..
Docker에 대한 고찰 처음에는 SpringBoot의 Docker Image를 생성하고 내 세컨컴에서 Image를 pull 받아 springboot이미지의 개발환경 위에서 개발을 진행하려는 생각이었다. (즉, 가상환경이라고 생각하고 있었던것 같다...) 하지만, 이미지를 pull 받아 실행해보니.. 기존 소스코드를 바탕으로 돌아가는 것이었다.... (gradlew build를 해서 jar만든게 돌아가고 있었던 것...) 이걸 보고 혼란이 왔다... "docker가 개발환경을 설치해주는 것이 아니었나..? 나는 그래서 그 위에서 작업하려고 했는데.. 이러면 코드 수정을 못하는데...?"라고... 그래서 지인과 이 현상에 대해 토론을 했다. (지인이 나를 이해시켜주려 2시간동안 노력한건가,,,) 여튼 그래서 얻게 된 건 sprin..