본문 바로가기

분류 전체보기

(66)
JVM 가비지 컬렉터(GC) Garbage Collector JVM (Java Virtual Machine) 어떠한 운영체제나 CPU 아키텍처 환경에서도 자바 바이트 코드를 실행 할 수 있도록 만들어진 자바 가상 머신이다. 자바 컴파일 후 나오는 class 파일이 자바 바이트 코드를 담고있다. JVM 구조 JVM은 크게 4가지로 구성되어있다. Class Loader : 컴파일러(javac)에 의해 만들어진 자바 바이트 코드를 Runtime Data Areas로 적재를 수행한다. Execution Engine : Runtime Data Areas에 적재된 자바 바이트 코드를 기계어로 변경하고 이를 실행한다. 하나읽고 하나 실행하는 인터프리터 방식과 이를 보완한 JIT(Just-In-Time) 방식이 있다. Runtime Data Areas : 운영체제로부터 메모리를..
HTTP 스펙과 버전 HTTP(HyperText Transfer Protocol)란 웹 상에서 서버와 클라이언트간 통신의 하이퍼텍스트에 대한 프로토콜로, 하이퍼 텍스트는 웹에 표시되는 컨텐츠들을 말한다. osi 7계층과 tcp/ip 4계층의 Application 계층에 해당하고, 신뢰성 있는 연결을 사용하기 때문에 통신을 위한 전송 프로토콜로 TCP를 사용한다. 따라서 TCP에 영향을 많이 받았다. 간단히 TCP (Transmission Control Protocol)에 대해 서버와 클라이언트간 신뢰성에 중심을 둔 전송 프로토콜. 3-way handshake로 연결, 4-way handshake로 연결 해제, 데이터 전송할때 응답에 따라 *패킷을 더 보내거나 안보내기 때문에 신뢰성이 높다. *패킷 : 네트워크 데이터 블록 T..
Mysql, MariaDB Incorrect string value 이모티콘 이모지 에러 푸핫에 맛집을 업로드 하면서 설명에 이모티콘을 넣었는데 컬럼에 데이터를 저장할 수 없다는 Incorrect string value 에러가 나왔다. 원인은 간단했다. 테이블에 설정되어있던 charset은 UTF-8이었는데 Mysql과 Mariadb의 경우 UTF-8은 3바이트 가변 인자로 구현되어 최대 3바이트 지원이지만 이모지 문자열이 UTF-8로 인코딩 되는 경우 4바이트가 필요하기 때문이다. 이런 문제 해결을 위해 2010년 3월에 가변 4바이트 자료형인 uf8mb4가 나오게 되었다. 따라서 테이블과 컬럼의 charset을 utf8mb4로 collation은 utf8mb4-unicode-ci로 변경하면 된다. 테이블 수정 쿼리 alter table 테이블명 convert to character set..
eclipse 스프링 레거시 프로젝트 생성 및 나의 기본 세팅 스프링 레거시로 만들고 싶은게 생겨서 새로 프로젝트를 만든다. ide는 eclipse 2020-09 버전 당연히 market으로 스프링이 설치되어있고 perspective는 spring으로 선택되어있어야 한다. 프로젝트 생성 File > New > Spring Legacy Project 선택 프로젝트명을 입력해주고 Spring MVC Project 선택 > Next 누르면 패키지명 입력하는게 나오는데 com.회사명.프로젝트명이 국룰이다. 입력 후 Finish 클릭 조금 기다리면 프로젝트가 생성된다. 프로젝트 구조를 나중에 자기가 편한대로 세팅해주자 프로젝트 기본 수정 먼저 pom.xml 4.0.0 com.poozim jobcall jobcall war 1.0.0-BUILD-SNAPSHOT UTF-8 UT..
React-native expo-cli webview 사용 apk파일 만들기 webview 패키지를 먼저 설치해준다 > expo install react-native-webview 설치 완료후 App.js를 수정 import { StatusBar } from 'expo-status-bar'; import React from 'react'; import { StyleSheet, Text, View } from 'react-native'; import { WebView } from 'react-native-webview'; export default function App() { return ( ); } marginTop : 20은 핸드폰의 맨위 상태바 때문에 조금 띄워준다 app.json에서 빌드할 앱 정보 변경 { "expo": { "name": "poohot",
React-Native Expo-cli 시작해보기 웹페이지를 WebView를 이용해 쉽게 어플로 만들 수 있는걸 알게되었다. 호기심에 Expo-cli를 맛만 본다. 툴은 Vscode 사용 >npm install -g expo-cli 설치 완료 후 > expo init 프로젝트명 명령어를 입력하면 권한 관련 이 시스템에서 스크립트를 실행할 수 없으므로 머시기 저시기 에러가 뜬다. > Get-ExecutionPolicy 를 입력하면 Restricted라고 뜨는데 디폴트로 적용되어있는 제한된 정책값 이라고한다. > Set-ExecutionPolicy RemoteSigned 로컬에서 생성한 스크립트 혹은 신뢰된 배포자의 서명이 있는 스크립트만 가능한 정책값이다. 설정후 다시 expo init 프로젝트명을 입력해준다. 캡처는 못했지만 template 선택이 나오..
Nginx request 제한 설정하기 서버를 돌리면 무지성으로 해외에서 봇을 통해서 크롤링하는건지 무수한 요청을 하는 아이피가 종종 보인다. 그 때문에 백그라운드로 express서버를 돌려놓으면 어느새 서버가 꺼져있는 경우가 있다. nginx에서 요청 제한을 설정해봤다. 1. limit_req_zone 설정 시간당 request 개수를 설정한다. limit_req_zone $binary_remote_addr zone=ddos_req:10m rate=5r/s; server { # ... location / { limit_req zone=ddos_req; # ... } } $binary_remote_addr => 클라이언트 ip 주소 정보 zone=ddos_req:10m => 클라이언트의 request를 저장하는 메모리 영역 확보, 메모리 영역..
Mysql 문자열 나누기 SUBSTRING, SUBSTRING_INDEX Mysql의 문자열을 나누는 함수는 글자 수로 나누는 SUBSTRING, 구분자로 나누는 SUBSTRING_INDEX가 있다. SUBSTRING 사용 형태 SUBSTRING(문자열, 시작위치, 가져올 문자수) 3번째 인덱스인 가져올 문자수를 비워두면 문자열의 끝까지 가져온다. 시작위치가 음수라면 끝에서부터 역순으로 가져온다. SUBSTRING 예제 SELECT SUBSTRING('가나다라마바사임마', 3) > 다라마바사임마 SELECT SUBSTRING('가나다라마바사임마', -3) > 사임마 SELECT SUBSTRING('가나다라마바사임마', 3, 5) > 다라마바사 SELECT SUBSTRING('가나다라마바사임마', 3, 1) > 다 SELECT SUBSTRING('가나다라마바사임마', -3, 2..