목록전체 글 (67)
개발일지
- 자바스크립트는 기본적으로 동기로 실행한다. (실행이 끝나야 다음 코드 실행) - Promise 는 비동기로 처리한다. - 코드를 연속으로 처리하지 않고 중간에 흐름이 끊어졌다가 연결된 코드를 처리할 수 있는 환경이 되었을 때 실행하겠다고 약속하는 느낌 (시멘틱) [ Promise 처리 흐름 ] const obj = new Promise((resolve, reject) => {// pending 상태 resolve(); log("Promise"); }); obj.then((value) => {// settled 상태 log("success"); }, (reason) => { log("fail"); }); log("last"); 위 코드 결과 Promise last success [ Promise 상태 ..
1. implementation : 항상 적용. 2. debugImplementation : 디버그 빌드 시에만 적용. 3. releaseImplementation : 릴리즈 빌드 시에만 적용. 4. testImplementation : 테스트 코드를 수행할 때만 적용

JVM 에 대해 한번 정리해보고 넘어가려고 쓰는 글이다. 운영체제는 자바 프로그램을 바로 실행할 수 없다. 왜냐 자바 프로그램은 완전한 기계어가 아닌 중간 단계인 바이트코드이기 때문에 이것을 해석하고 실행할 수 있는 가상의 운영체제가 필요하다. 이것이 JVM; Java Virtual Machine 이다!! JVM 은 실 운영체제 대신해서 자바 프로그램을 실행하는 가상의 운영체제 역할을 한다. 운영체제별로 프로그램을 실행하고 관리하는 방법이 다르기 때문에 운영체제별로 자바 프로그램을 별도로 개발하는 것보다 운영체제와 자바프로그램을 중계하는 JVM 을 두어 자바프로그램이 여러 운영체제에서 동일한 실행 결과가 나오도록 설계한 것이다!! 그래서 우리 개발자들은 운영체제와 상관없어 자바 프로그램을 개발할 수 있는..
try { val url = URL(URL) // 1. URL 객체 생성 val postconn = url!!.openConnection() as HttpURLConnection // 2. URL 연결 postconn.requestMethod = "POST" // 3. 요청방식 설정 postconn.setRequestProperty("Content-type", "application/json") // 4. 서버 Response Data 를 json 형식의 타입으로 요청 postconn.doOutput = true // 5. OutputStream 으로 POST 데이터를 넘겨주겠다는 옵션 var os: OutputStream = postconn.outputStream os.write(body.toStrin..
- String 객체와 String 객체를 더하는 (+) 행위는 메모리 할당과 메모리 해제를 발생시키며 더하는 연산이 많아진다면 성능적으로 좋지 않다. (str1 + str2 하면 새로운 String 을 생성) 그래서 나온게 StringBuilder 이다. - StringBuilder 는 String 문자열과 더할 때 새로운 객체를 생성하는 것이 아니라 기존 데이터에 더하는 방식을 사용하기 때문에 속도도 빠르며 상대적으로 부하가 적다. StringBuilder encParamStr = new StringBuilder(); encParamStr.append(encStr); System.out.println(encParam.toString())
자바를 사용하면서 과연 잘 사용하고 있는 건가..? 자바에 대해 잘 알고있나..? 생각해보았다. 나의 주 언어가 뭐냐고 물어본다면 자바라고 할 것같은데 뭔가 가슴 한쪽이 찔리는 느낌. 그래서 기본!!!기초!!!! 자바의 특징부터 다시 공부해보자. 이미 알고있는 것일 수도 있으나 한번의 정리는 필요해 보인다. 1. 자바는 이식성이 높은 언어다. 이식성이란 -> 서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것을 말한다. 예를 들어 MS윈도우에서 실행하는 프로그램을 리눅스에서 실행할 수 있다면 이식성이 높은 것이고 실행할 수 없다면 이식성이 낮은 것이다. MS 윈도우 환경에서 실행되는 대부분의 프로그램들은 MS 윈도우 환경에 최적화되어있기 때문에 유닉스나 리눅스에서 실행하려면 프로..
node 패키지를 설치할 때 npm 을 쓰는 사람도 있고 yarn 을 쓰는 사람이 있어 두개의 차이점이 뭔지 궁금하여 찾아본김에 정리해본다. 일단 우리팀은 yarn 을 사용한다. npm; node package manager yarn: 페이스북에서 만든 자바스크립트 패키지 매니저 아래와같이 속도, 안정성, 보안성의 차이점이 약간씩 있는것 같다. 1. Performance 속도 yarn: 다운받는 패키지 데이터를 캐시에 저장해 중복된 데이터는 다운받지 않고 캐시에 저장된 파일을 활용함으로써 이론적으로 npm에 비해 패키지 설치속도가 매우 빠르다. 여러개의 패키지를 설치할 때에는 병렬로 처리하기 때문에 속도가 빠르다. npm: 여러개의 패키지를 설치할 때 순차적으로 설치한다. 2. 안정성, 보안성 yarn:..
[package.json] -모든 npm 프로젝트는 루트에 package.json 파일을 포함하고 있다. -처음 프로젝트 만들 때 npm init 명령어로 package.json 파일을 만든다. -package.json 파일에는 프로젝트와 관련된 메타데이터를 작성한다. 주고받는 패키지에 대한 상세 설명서라고 할 수 있다. -협업을 위해 package.json 을 사용해 각자의 컴퓨터에 같은 패키지들을 성치하여 같은 개발환경을 구성할 수 있다. -그러나 몇가지 조건이 들어맞는 경우 같은 package.json 을 사용하여 npm install 을 하더라도 서로 다른 node_modules 를 생성하는 경우가 발생한다. -> package-lock.json 이 있는 이유 { "name": "@kwjs/scr..
* 자바 내장 옵저버 패턴의 단점과 한계 1. Observable 은 클래스다. - 클래스이기 때문에 서브클래스를 만들어야한다는 문제점이 있다. 이미 다른 수퍼클래스를 확장하고 있는 클래스에 Observable 기능을 추가할 수 없기 때문, 그래서 재사용성에 제약이 생김 2. Observable 클래스의 핵심 메소드를 외부에서 호출할 수 없다 - API 를 보면 setChanged() 가 protected 로 선언되어있다 - Observable의 서브클래스에서만 setChaged() 를 호출할 수 있다. 결국 직접 어떤 클래스를 만들고, Observable의 서브클래스를 인스턴스 변수로 사용하는 방법도 쓸 수 없다. 이런 디자인은 상속보다는 구성을 사용한다는 디자인 원칙에 위배된다. -안드로이드의 뷰나 ..
1. primitive 자료형 - int, float, long, double - 산술연산 가능 - null 로 초기화 할 수 없음 2. Wrapper 클래스 - *Unboxing 하지 않으면 산술연산 불가능, null 값을 처리할 수 있음 - null 값 처리 용이하니 SQL 과 연동할 경우 처리 원활하게 하게 할 수 있음 * Boxing : primitive 자료형 -> Wrapper 클래스 // Integer a = new Integer(b); * Unboxing : Wrapper 클래스 -> primitive 자료형 // int b = a.intvalue(); Integer.valueOf(String) vs. Integer.parseInt(String) Integer.valueOf(String) ..