전체 글 110

0과 1로 문자를 표현하는 방법

0과 1로 문자를 표현하는 방법 문자 집합과 인코딩 문자집합: 컴퓨터가 인식하고 표현할 수 있는 문자의 모음 문자 인코딩: 문자를 0과 1로 변환하는 과정 문자 디코딩: 0과 1로 이루어진 문자 코드를 사람이 이해할 수 있는 문자로 변환하는 과정 아스키 코드 초창기 문자 집합 중 하나, 영어 알파벳과 아라비아 숫자, 그리고 일부 특수 문자 포함 EUC-KR KS X 1001, KS X 1003이라는 문자 집합을 기반으로 하는 대표적인 완성형 인코딩 방식 유니코드와 UTF-8 다양한 한글을 포함하며 대부분 나라의 문자, 특수문자, 화살표나 이모티콘까지 코드로 표현할 수 있는 통일된 문자 집합 인코딩 방식: UTF-8, UTF-16, UTF-32

0과 1로 숫자를 표현하는 방법

0과 1로 숫자를 표현하는 방법 정보 단위 가장 작은 정보 단위: 비트 (bit) 1바이트 (1byte) 8비트 (bit) 1킬로바이트 (1kB) 1,000바이트 (1,000byte) 1메가바이트 (1MB) 1,000킬로바이트 (1,000kB) 1기가바이트 (1GB) 1,000메가바이트(1,000MB) 1테라바이트 (1TB) 1,000기가바이트 (1,000GB) *** 워드 (word) CPU가 한 번에 처리할 수 있는 데이터 크기 이진법 0과 1만으로 모든 숫자를 표현하는 방법 십진법 0부터 9까지, 열 개의 숫자만으로 모든 수를 표현하는 방법 이진수의 음수 표현 2의 보수를 구해 값을 음수로 간주하는 방법이 있음 쉽게 표현하면 '모든 0과 1을 뒤집고, 거기에 1을 더한 값' 컴퓨터 내부에서 어떤 수..

컴퓨터 구조를 알아야 하는 이유

컴퓨터 구조를 알아야 하는 이유 컴퓨터 구조 개발자가 되려면 반드시 알아야 할 기본 지식 컴퓨터 구조를 이해하면 얻을 수 있는 이점 문제해결 능력 ⬆️ 개발할 때는 문제 없이 작동했던 코드가 실제 사용자들에게 선보이는 자리에서는 작동하지 않는 상황이 많이 생김 컴퓨터 구조를 이해하고 있다면 '미지의 대상' 이 아닌 '분석의 대상'일 테니 문제 해결의 실마리를 다양하게 찾을 수 있음 성능, 용량, 비용 고려해 개발 가능 컴퓨터 구조의 큰 그림 컴퓨터가 이해하는 정보 데이터 명령어 컴퓨터의 4가지 부품 CPU (중앙처리장치): 메모리에 저장된 명령어를 읽고, 해석하고, 실행함 메모리 (주기억장치): 현재 실행되는 프로그램의 명령어와 데이터를 저장함 보조기억장치: 전원이 꺼져도 보관할 프로그램을 저장함 입/출..

탐욕 알고리즘

탐욕 알고리즘 (Greedy) Greedy algorithm 또는 탐욕 알고리즘 이라고 불림 최적의 해에 가까운 값을 구하기 위해 사용 매 순간 최적이라고 생각되는 경우를 선택해 최종적인 값을 구하는 방식 탐욕 알고리즘 예 동전 문제 지불해야 하는 값이 4720원 일 때, 1원, 50원 100원, 500원 동전으로 동전의 수가 가장 적게 지불하시오 가장 큰 동전부터 최대한 지불해야 하는 값을 채우는 방식으로 구현 public class GreedyAlgorithm { public void coinFunc(Integer price, ArrayList coinList) { Integer totalCoinCount = 0; Integer coinNum = 0; ArrayList details = new Arr..

코테/알고리즘 2023.09.12

외부 설정 사용 - @ConfigurationProperties

외부 설정 사용 - @ConfigurationProperties Type-safe Configuration Properties 스프링은 외부 설정의 묶음 정보를 개체로 변환하는 기능을 제공함, 타입 안전한 설정 속성 객체를 사용하면 타입을 사용할 수 있음, 잘못된 타입 입력 방지 등 활용할 수 있는 부분들이 많아짐 설정 정보 그 자체도 타입을 가지게 됨 외부 설정을 주입 받을 객체를 생성, 각 필드의 외부 설정의 키 값에 맞춰서 준비 @ConfigurationProperties 어노테이션이 있으면 외부 설정을 주입 받는 객체라는 뜻 기본 주입 방식은 자바빈 프로퍼티 방식 @EnableConfigurationProperties(MyDataSourcePropertiesV1.class) 스프링에게 사용할 @C..

외부 설정 사용 - @Value

외부 설정 사용 - @Value @Value 어노테이션을 사용하면 외부 설정값을 편리하게 주입받을 수 있음 @Value 에 ${ } 를 사용해서 외부 설정의 키 값을 주입 받을 수 있음 @Value 는 필드에서 사용할 수 있고, 파라미터에 사용할 수도 있음 기본값 키를 찾지 못할 경우 기본값을 사용하려면 : 뒤에 기본값을 적어주면 됨 @Value("${my.datasource.etc.max-connection:1}") 실행 스프링 빈을 2개 등록해서 같은 결과가 두번 나옴 하나하나 외부 설정 정보의 키값을 입력받고 주입을 받아야함 정보의 묶음으로 되있어 객체로 변환해서 사용할 수 있다면 편리할 것 feat. 스프링부트 - 핵심 원리와 활용 (김영한)

docker 엔진 설치와 구성 확인

docker 엔진 설치와 구성 확인 설치 전 확인 / docker 사용에 필요한 패키지 설치 docker 설치 전 확인 사항 리눅스 커널 정보 (3.10 이상), 64 비트 (x86_64) docker 사용에 필요한 패키지 설치 apt-transport-https : docker는 CE 버전 다운 (사용하는 웹 주소 https로 되어 있음) ca-certificates : https는 인증서 필요, 인증서 기능 패키지 curl : api 통신 gnupg-agent : docker는 패키지 가드를 사용함 software-properties-common : docker repository에서 다운, repository 관리 기능을 제공 keyring 을 통한 apt key 관리 curl -fsSL https..

Ubuntu linux 환경 구성

Ubuntu linux 환경 구성 network 환경 구성과 remote 접속 설정 enpOs8 번의 내부 ip 를 수동으로 설정 enpOs3 : NAT enpOs8 : putty 나 winSCP 접속 허 1번 서버 : 101 / 2번 서버 : 102 Gateway : VM 2번 클라이언트 접속용 DNS : 구글 DNS 네트워크 확인 마우스 오른쪽 클릭 > Open in Terminal sudo apt update : apt 를 통해 설치를 진행하기 때문에 처음은 update sudo apt install net-tools vim openssh-server : net-tools설치 ifconfig : ip 확인 ping 테스트 (ping 테스트 실패시 윈도우 방화벽을 해제후 다시 시도) VM 호스트 윈도..

외부설정 사용 - 1

외부설정 사용 - 1 스프링이 지원하는 다양한 외부 설정 조회 방법 Environment @Value - 값 주입 @ConfigurationProperties - 타입 안전한 설정 속성 MyDataSource url , username , password : 접속 url, 이름, 비밀번호 maxConnection : 최대 연결 수 timeout : 응답 지연 시 타임 아웃 options : 연결시 사용하는 기타 옵션들 @PostConstruct 에서 확인을 위해 설정된 값을 출력 외부 속성 설정 데이터를 사용 (application.properties) properties 케밥 표기법 properties는 소문자와 - (dash) 를 사용하는 캐밥표기법을 주로 사용 MyDataSource 에 값 설정 및..

Docker 플랫폼 환경 구성

Oracle VirtualBox 설치 가상화 프로그램 사용 시 설치되는 운영체제의 가상화 기능 활성화를 해줘야함 부팅 시 CMOS 설정에서 CPU 기능 중 VT-x, AMD-V, VMX 등 메인보드에 따라 다름 다운로드 제일 최신으로 다운로드 받으면 됨 설치 후 Next 를 총 3~4번 정도 누르면 설치가 시작됨 다 설치가 된 뒤 실행을 시키지말고 종료 후 윈도우를 재부팅하는게 좋음 Ubuntu 22.04 다운로드 및 설치 다운로드 데스크탑과 서버 차이는 GUI 유무 편의상 Desktop image 로 다운로드함 Docker 는 64비트에서만 동작함 되도록이면 C, D, E 드라이브에 직접 경로를 안잡는게 좋음, OS 가 있는 드라이브는 규모가 있는 애플리케이션이 올라갔을 경우 OS 와 IO 성능 문제가..