일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Elk
- ajax
- github
- reactor
- 데이터통신
- mongodb
- mybatis
- effective
- VCS
- reactive
- r
- spring
- AWS
- cache
- Heap
- HTTP
- Lombok
- NoSQL
- Linux
- socket
- redis
- Java
- Static
- html
- 네트워크
- nodejs
- javascript
- libuv
- network
- git
- Today
- Total
목록분류 전체보기 (187)
빨간색코딩
참조문서 : https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html1. 쓰레드란?자바의 메인메소드 역시 하나의 실행흐름으로서, 메인 쓰레드에 해당한다. 이것은 main() 메소드에서 Thread.currentThread().getName(); 를 통해 확인이 가능하다. 쓰레드를 이용하면 하나의 프로세스에서도 병렬적(동시적)으로 처리, 즉 여러 개의 처리 루틴을 가질 수 있다. 단순 반복의 코드를 실행할 때도 여러 개의 쓰레드를 만들어서 분리 시킨 뒤 결과 데이터를 받아 합치면 그만큼 시간을 절약할 수 있다. 특히 짧은 시간 내에 많은 사용자를 처리해야하는 대용량 시스템이나 CPU 활용을 극대로 해서 처리해야 하는 복잡한 연산 작업 등에 많이 쓴다..
참조문서 : https://docs.oracle.com/javase/8/docs/api/java/io/package-frame.htmlio 부분에서 JDK 1.4 이전 방식을 클래식 I/O 라고 하고, 이후 방식을 NIO(Non-blocking I/O)라고 한다. 이제는 클래식 IO를 사용한다 해도 내부적으론 NIO를 활용하기 때문에 성능차이는 크게 없다.1. java에서 I/O란?I/O를 스트림(Stream)이라고 부르기도 한다. 접두어로 in, read 가 붙으면 입력관련이고, out, write 가 붙으면 출력관련이다. 데이터를 읽고 쓰는 대상으로는 디스크, 사용자 입출력, 네트워크 등이 있다.읽기 전용쓰기 전용1 Byte 단위 처리InputStreamOutputStream2 Byte 단위 처리Re..
참조문서 https://developer.mozilla.org/ko/docs/Web/JavaScript http://www.ecma-international.org/ecma-262/6.0/ https://www.slideshare.net/WooyoungCho/ecmascript-6-64456124 흔히 생각하는 javascript는 2009년에 제정되고 11년에 개정된 ECMAScript 5.1 표준이다. ES6에서는 arrow functions, class, 향상된 객체리터럴, let과 const, iterator, for-of 등이 추가되었다. 좀더 나은 fp와 oop를 가능하게 해준다. 또한 기존 ES5코드와 모두 하위호환이 된다. 여기서는 ES6에 추가된 사항을 중점적으로 정리한다. 또한 몰랐던 ..
참조문서 : https://www.w3schools.com/xml/1. 문서 분류XML 문서에는 정형식 문서(well-formed)와 유효한 문서(valid)가 있다.정형식 문서 : XML 문법과 규칙에 맞게 만들어진 오류가 없는 문서.유효한 문서 : XML 문서를 표준화할 목적으로 문서형태정의(DTD)에 따라 만든 문서2. 문서 구조XML 문서는 아래와 같은 구조로 이루어져 있다.XML 선언부DTD, XML 스키마 선언, 네임스페이스 선언XML 태그와 데이터XML 선언부인코딩과 독립형 여부는 선택 속성이다. 인코딩 기본값은 UTF-8이다. 독립성 여부는 yes가 기본 값이며 해당 문서를 해석할 때 외부 DTD 문서 참조해야하는 지 여부를 XML 파서에게 전달한다는 뜻이다.주석 를 사용한다. 주석은 XM..
참조문서 : https://www.w3.org/TR/REC-xml/json 만세 시대에 XML을 왜 학교에서 가르치는지 의문이 들지만.... 기존 서비스들이 XML로 된 경우도 꽤 있을꺼고.. 그래도 알아야하지 않겠나! 하며 시작해본다ㅋㅋ1. XML 이란?Extensible Markup Language의 약자이다. 웹에서 구조화한 문서를 표현하고 전송하도록 설계한 마크업 언어이다. XML은 문서내용에 대한 구조와 의미를 기술하기 위한 언어이다. W3C에서 개발됐고, 다른 특수한 목적을 갖는 마크업 언어를 만드는데 사용하도록 권장하는 다목적 마크업 언어(메타언어)이기도 하다. 다양한 표현이 가능하고, 확장성이 뛰어나며 간단하다.이러한 XML을 이용해 수학용 마크업 언어인 MathML, 화학용 마크업 언어인..
아래 입출력 함수들 말고도, 여기에는 없지만 외부 패키지를 이용해서 엑셀, XML 등에서도 입출력이 가능하다.1. 경로설정getwd() : 작업공간 확인setwd("절대경로") : 작업공간 설정2. 입력2-1. 키보드 입력scan() : 데이터를 직접 키보드로 입력할 수 있다. 입력을 중단하려면 빈칸을 두고 엔터를 치면 된다. 문자를 입력받으려면 인자에 what="" 를 넣어준다. 파일읽기에도 쓸수있는데, 첫번째 인자로 작업공간에 있는 파일명을 써주면 된다. > x x [1] 10 30 99 readline() : 다음 한줄을 입력으로 받는다. > x x [1] "yes" edit(객체) : GUI적으로 데이터를 수정할 수 있다. 데이터프레임의 경우 엑셀시트와 유사한 윈도우창이 뜬다. 벡터의 경우 메모장..
1. 함수 정의 다른언어와 마찬가지로 코드가 반복되거나 가독성을 높히려면 함수를 작성할 수 있다.함수명 test1 function(...) { args test1(1,2,3,4,5) [1] 1 [1] 2 [1] 3 [1] 4 [1] 5 3. 스코프 다른언어와 마찬가지로 블록 스코프를 따른다. 그냥 콘솔에서 변수를 선언하고 할당하면 전역변수가 된다. 하지만 함수 내에 변수선언을 하게되면 지역변수가 된다. 만약 전역변수와 지역변수가 이름이 겹치면 지역변수가 우선한다. 여기서
1. 산술연산 사칙연산 : +, -, *, / 나머지연산 : %% 몫연산 : %/% 제곱 : n^m e의 n승 : exp(n) 삼각함수 : sin(x), cos(x), tan(x) 로그계산 log2(x), log10(x) log(x, base=exp(1)) : base가 밑이고 x가 진수 나눗셈연산에서 /와 %/%는 아래와 같은 차이가 있다.> 5/3 [1] 1.666667 > 5%/%3 [1] 1 2. 벡터 연산 다른 언어들은 여러 데이터를 처리할 때 반복문을 사용하여 읽어들여 처리하지만, R언어는 전체 데이터를 한번에 다루는 벡터 연산을 주로 사용한다.> x x + 1 [1] 2 3 4 5 6 R의 많은 함수들이 이러한 벡터기반 연산을 지원한다. 3. NA 연산 NA는 값이 기록되지 않았거나 관측되지..
1. 조건문 1-1. if문 전형적인 if문이다.if (조건1) { 조건1이 참일 때 실행할 문장 } else if (조건2) { 조건2가 참일 때 실행할 문장 } else { 모든 조건이 거짓일 때 실행할 문장 } 1-2. ifelse() 함수 다수의 데이터를 한번에 처리할 수 있다.ifelse( test, # 참, 거짓을 저장한 객체 yes, # test가 참일 때 선택할 값 no # test가 거짓일 때 선택할 값 ) 예를들어> x ifelse(x %% 2 == 0, "even", "odd") [1] "odd" "even" "odd" "even" "odd" 2. 반복문 for문, while문, repeat문이 있다. 반복문 내에서는 아래 문장을 통해 수행을 조정한다. break : 루프를 빠져나간다..
참조문서 : R을 이용한 데이터 처리 & 분석 실무 1. 변수 변수의 타입은 명시적으로 지정을 안해줘도 사용이 가능하다. 1-1. 명명규칙 명명규칙으로 변수명은 알파벳, 숫자, _(언더스코어), .(마침표)로 구성되며, -(하이픈)은 사용할 수 없다. 첫 글자는 알파벳 또는 .(마침표)으로 시작해야 한다. 만약 .(마침표)으로 시작한다면 .(마침표)뒤에는 숫자가 올 수 없다. R 1.9.0 이전에는 변수명에 _를 사용할 수 없었다. 이런 이슈로 다른 언어에서 흔히 _를 사용할 만한 상황에서 R은 .(마침표)을 사용한다. 예를 들어, training_data, validation_data 같은 변수명 대신 data.training, data.validation과 같이 마치 객체의 속성을 접근하는 것처럼 보..
CRAN은 the Comprehensive R Archive Network의 약자이다. R은 사람들이 제작한 패키지를 추가하여 기능을 확장할 수 있다. R에는 방대한 R Add-On Packages 들이 있다. RGui에서 Packages 메뉴를 통해 확인할 수 있다. 웹에서는 CRAN Task Views 페이지에서 확인할 수 있다. 각 패키지들은 대분류로 Cluster, Finance, NLP, TimeSeries 등으로 나뉘어져 있다. 들어가보면 CRAN packages 리스트를 통해 해당 패키지에 속한 라이브러리들을 볼 수 있다. 1. 패키지 확인 설치 위치 : .libPaths() 설치된 패키지 확인 : installed.packages() 패키지 도움말 : library(help="패키지명") ..
참조문서 : An Introduction to R1. R언어란?통계 계산과 그래픽을 위한 프로그래밍 언어이다. 뉴질랜드의 로버트 잰틀맨과 로스 이하카가 개발하였다. 1993년 처음으로 공개되었다. R은 GPL 하에 배포되는 S 프로그래밍 언어의 구현으로 GNU S라고도 한다.장점오픈소스, 무료 소프트웨어포괄적인 통계플랫폼 : 다양한 라이브러리, 다양한 분석기법, 정형/비정형시각화 기능으로 수학 기호를 포함할 수 있는 출판물 수준의 그래프를 제공단점통계 최적화를 위해 성능을 희생했다인터프리터언어로서 R코드가 실행될때, 변경될 때마다 다시 해석하므로 비교적 느리다.2. 동작원리R은 싱글스레드이므로 1개의 CPU코어만 사용한다. 멀티코어를 활용하려면 병렬프로그래밍 기법이 필요하다.R은 R코드를 메인메모리에 올..
참조문서https://www.slideshare.net/unitimes/sync-asyncblockingnonblockingio http://djkeh.github.io/articles/Boost-application-performance-using-asynchronous-IO-kor/ 참 많이 보고, 써먹는 용어다. 확실히 정리를 해보자.일단 IO 작업은 사용자레벨에서 직접 수행할 수 없다. 실제 IO를 수행하는 건 커널에서만 가능하다. 따라서 사용자 프로세스(또는 쓰레드)는 커널에게 IO를 요청해야한다.1. IO모델블로킹 : 애플리케이션 실행 시 운영체제 대기 큐에 들어가면서 요청에 대한 system call이 완료된 후에 응답을 보낸다.논블로킹 : 애플리케이션 실행 시 운영체제 대기 큐에 들어가지 ..
참조문서 : https://developers.google.com/web/tools/chrome-devtools/rendering-tools/js-execution웹어플리케이션 분석할 때 쓰지만, V8_inspector을 이용하여 노드에서도 쓸 수 있다.1. CPU ProfileCPU 사용량을 기록한다.Self Time : 함수의 현재 호출을 완료하는 데 얼마나 걸린 시간Total Time : 이 함수와 해당 함수가 호출한 모든 함수의 현재 호출을 완료하는 데 걸린 시간2. Heap Snapshot클릭시점에서 스냅샷 기록Shallow Size : array string과 같이 직접적으로 메모리를 점유하고 있는 js 객체들의 크기, 실제 데이터가 있는 영역Retained Size : GC 이후 남겨진 메모..
참조문서https://nodejs.org/ko/docs/guides/simple-profiling/https://nodejs.org/api/debugger.html#debugger_v8_inspector_integration_for_node_js node에서 힙덤프 뜨기, CPU프로파일링 등을 하려면 몇가지 방법이 있지만, 이게 제일 쉽고 편한 것 같다.1. 디버거 붙이기node --inspect 소스명.js로 실행한다. 그러면 아래와 같이 나온다chrome-devtools://devtools/remote/serve_file/@11cd6e111b9f111d1111f5bf532f6aec5f1111111/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9..