전체 684

[java] int의 오버플로우, long 형 변환

int의 범위 자바에서 인트의범위는 -2147483647 ~ 2147483647 이다. 그 이상의 값이 들어가면 에러가 발생하거나 쓰레기값이 나온다. int a = 1233235*2351; System.out.println(a); 결과값 : -1395631811 long 형변환 숫자뒤에 L을 붙이면 형변환이 되고 long타입으로 받을 수 있다. long a = 1233235L*2351L; System.out.println(a); 결과값 : 2899335485 L을 하나에만 해도 된다. long a = 1233235*2351L; System.out.println(a); 결과값 : 2899335485 나누기를 할 경우 곱셈되는 숫자에 L을 붙여줘야지, 나눗셈에 붙이면 또 터진다. long a = 1233..

[SQL] 연속된 년도 구하기

연속된 년도 구하기 DB에 다음과 같은 데이터가 있다고 가정했을 때, 연속된 년도(혹은 어떤 숫자든)가 얼마나 있는지 확인하는 쿼리 ex ) [인원별 수상내역]테이블이 아래와 같을때 2년이상 연속으로 수상한 사람을 구하시오 수상년도 성명 2014 A 2013 A 2016 B 2020 B 2020 C 2021 C 2019 C => A(2013, 2014 2년연속 수상), B(2019, 2020, 2021 3년 연속 수상)를 출력해야 한다. 방법 핵심 아이디어는 "년도를 오름차순으로 정리하고 순서대로 인덱스를 매기는것" 그 후 현재년도(혹은 수상년도 컬럼에서 가장 max값)에서 수상년도값을 뺀값과 index를 더하는것 1. 수상년도와 이름을 오름차순으로 정렬 수상년도 성명 2013 A 2014 A 2016 ..

DB/SQL 2024.02.26

[패스트캠퍼스] 한 번에 끝내는 데이터 엔지니어링 초격차 패키지 Online. 수강후기

패스트캠퍼스 올해 중순부터 '한 번에 끝내는 데이터 엔지니어링 초격차 패키지 Online.'를 수강하고 있습니다. 현재까지 프로그래밍 관련 공부를 하면서 패스트캠퍼스를 많이 이용했습니다. '한 번에 끝내는 데이터 엔지니어링 초격차 패키지 Online.'는 제가 패스트캠퍼스에서 수강한 10번째 강의입니다. 프로그래밍 공부를 하며 특정 분야를 공부할때는 모르는것이 있으면 구글링을 하며 새로운 것들을 배워나갔습니다. 하지만 새로운 분야에 전체적인 틀을 잡고 개념을 이해하기 위해선 실무경험을 할 기회가 없다면, 강의가 가장 큰 도움이 되었습니다. 그 중 패스트캠퍼스의 강의들은 IT현직자들이 본인들이 현업에서 경험한것들을 체계적인 커리큘럼을 통해서 만든 것이므로 개념을 잡고 현업을 경험하기에도 좋았습니다. 또한 ..

카테고리 없음 2023.12.11

암호화 방법

암호화 리스트 정리 양방향 암호화 1. 대칭키 : 암호화키와 복호화 키가 같은 것. - 스트림기반 : 비트단위 암호화 방식 - 블록기반 : 블록단위 암호화 방식. 문자열 단어 하나하나를 블록으로 나누어서 암호화 2. 비대칭키 : 암호화키와 복호화 키가 다름 - ECC(Elliptic Curve Cryptography) : 타원곡선 암호화. 비트코인에 사용 - RSA : 소인수분해 - DH 단방향 암호화 - Hash를 이용

트랜잭션 격리수준(isolation level)

트랜잭션 격리수준 발생에러 \ 트렌잭션 격리수준 Dirty Read Non-Repeatable read Pantom Read 격리수준 낮음 . . . . . 격리수준 높음 READ UNCOMMITED 발생 가능 발생 가능 발생 가능 READ COMMITED 없음 발생 가능 발생 가능 REPEATABLE READ 없음 없음 발생 가능 SERIALIZABLE 없음 없음 없음 READ UNCOMMITED 가장 낮은 격리수준으로서 커밋되지 않은 데이터를 볼 수 있음. 따라서 dirty read오류 발생 READ COMMITED 커밋된 데이터만 읽는것. 다른 A 트랜잭션에서 변경한 데이터를 읽을 때 B 트랜잭션에서 일관되게 읽지 않을 수 있음. 즉 unrepeatable read가 발생할 수 있음. 오라클의 ..

DB/[이론] 2023.11.19

데이터 무결성

데이터 무결성이란 - 데이터 무효갱신으로 부터 데이터를 보호하여 정확성, 유효성, 일관성, 안정성 등을 유지하는것 무결성의 종류 * 개체무결성 : 기본키로 선택된 필드는 빈 값을 허용하지 않음 * 참조 무결성 : 서로 참조 관계에 있는 두 테이블의 데이터는 항상 일관되어야 함 - 외래키는 Null이거나 참조하는 테이블의 기본키에 존재하는 값이여야 함 - 기본키 중 자신을 참조하는 외래키가 존재하면 기본키를 삭제할 수 없다. * NULL 무결성 : not null인 컬럼의 경우 not null이 지켜져야 함 * 영역 무결성(Domain Integrity) : 테이블에 존재하는 필드의 무결성을 보장하는것. 데이터타입, NULL 허용 등의 여부 정의. 속성값은 원자성을 가지며, 해당 도메인에서 정의된 값이여야..

DB/[이론] 2023.11.13

메모리 단편화

내부단편화 주 기억장치에서 가용한 공간에 프로세스를 할당하고 남은 영역이 생기는 것 외부단편화 주 기억장치에서 가용한 공간의 합은 프로세스의 크기보다 크지만, 나누어져 있어서 프로세스를 올릴 수 없는 경우. 해결방법 1. 압축 : 주기억장치 내 분산되어 있는 공간을 압축하여 큰 공간 하나를 만드는것 2. 페이징기법 : 프로세스를 "페이지"로 나누고, 주기억 장치를 "프레임"으로 나누어 프로그램을 실행시 페이지 단위로 프레임에 옮기는 기법

CS/운영체제 2023.11.13

데이터베이스의 구성요소

데이터베이스의 구성요소 1. 데이터베이스 관리시스템 : 데이터베이스를 구축하고 이용하는 기능을 제공하는 시스템 소프트웨어 2. 데이터베이스(DB) : 한 조직의 여러 응용프로그램이 공용하기 위해 최소의 중복으로 저장한 데이터의 집합 3. 데이터베이스 언어 : 사람과 시스템의 인터페이스를 제공하는 도구 4. 사용자 : 데이터베이스 관리자(DBA), 데이터베이스 응용 프로그래머, 데이터 베이스 사용자 등

DB/[이론] 2023.10.15

로드벨런서(loadbalancer)의 정의 및 종류

로드벨런서란 특정 서비스에서 어떤 작업을 컴퓨팅 리소스 단위로 분산해서 처리하는 것. 부하가 한 곳에서 처리할 수 있는 용량을 넘으면, 처리를 못하거나 처리가 기대보다 낮아지기 때문에 이것을 방지하기위해서 부하를 분산시키는 것. 로드벨런서 종류 1. round-robin 순서대로 돌아가면서 서버를 하나씩 할당 하는 것. 2. IP hashing 같은 IP의 요청을 같은 서버에 연결하므로써 cache를 최대한으로 활용하여 속도를 최대한 높히는 것. 이때 아래와 같이 단순히 IP의 범위로 할당할 서버를 나누면, 특정 IP의 접속이 몰렸을 때 한 서버에 과부하가 걸릴 수 있다. ip 서버 1~5 1 5~10 2 10~15 3 15~20 4 따라서 해싱을 통해 랜덤하게 ip를 서버로 할당한다. (하지만 이 ..

백엔드 2023.09.17

DNS서버

DNS란 Domain Name Service의 약자로서, 컴퓨터가 인식할 수 있는 IP주소와 사람이 기억하기 쉬운 도메인이름을 서로 치환해주는 서비스. DNS의 네가지 서버 1. DNS recursor 클라이언트로 부터 요청을 받는 서버. 이미 처리한 적이 있는 주소의 경우 캐시를 통해 빠르게 응답 2. Root nameserver 요청받은 host이름의 TLD서버의 위치를 알려준다 (.com .net 최상위 확장자 서버의 dns위치를 알려준다) * .com이 top 래밸인 이유? 맨뒤 도메인이름(.com .net .kr 등)의 개수는 많지 않지만 앞에 도메인이름은 무수히 많다. 따라서 시작부터 적은수의 분기를 타기위해 뒤에서부터 계층적으로 도메인이름은 구성되어 있다. 3. TLD server 요청받은..

CS/네트워크 2023.09.10

스크럼

스크럼이란? - 프로젝트 관리를 위한 에자일 방법론 - 3가지 산출물, 3가지 미팅이 있음 - 15분의 제한된 시간 동안 서로의 문제점을 투명하게 공유하고 커뮤니케이션하며, 정형화된 틀이 아닌 개개인의 경험을 중시하여 유동적으로 프로젝트 방향을 이끌어나가는 것을 인정한다. 3가지 산출물 1. 제품 백로그 : 제품에 담고자 하는 "기능"들을 정리한 목록. 제품 책임자가 우선순위 결정. 2. 스프린트 백로그 : 스프린트 동안 개발할 "과업"을 정리한 목록. 3. 소멸차트 : 개발을 왈료하기까지 남은 작업량을 보여주는 그래프 3가지 미팅 1. 일일 스크럼 : 매일 진행하는 15분간의 프로젝트 진행상황 공유 회의. 각자가 한 일, 문제점 등을 이야기 함. 2. 스프린트 계획 : 스프린트에 대한 목표를 세우고백..

redis 명령어

MAP - GET SET 함수 명령 설명 SET mykey "myvalue" key: mykey, value:myvalue 값을 가지는 객체 SET mykey "myvalue" EX 10 10s뒤에 삭제 SET mykey "myvalue" PX 10 10ms뒤에 삭제 SET mykey "myvalue" XX 키가 존재하면 SET을 실행 SET mykey "myvalue" GET 이전에 있던 value값을 return한후 SET을 실행 SET mykey "myvalue" NX SETNX mykey "myvalue" 키가 존재하지 않으면 SET을 실행 MSET key1 val1 key2 val2 ... 여러값을 SET MGET key1 key2 여러값을 GET - counter command 명령 설명 I..

DB/[이론] 2023.07.12

mac redis 설치 및 실행

redis란 cacheDB의 한 종류로서 다양한 자료구조를 제공하는 in memory database이다. 싱글스레드라는 특징이 있고 하나의 한 클라이언트만 자료를 저장/조회하기 때문에 데이터 lock없이 빠르게 데이터를 조회가능하다. cacheDB로 redis를 많이 사용하는 이유는 자료구조의 설계와 사례가 용도에 따라 명확하기 때문이다. 또한 분산 클러스터 모드를 지원하므로 확장성도 제공할 수 있고 레퍼런스가 충분히 많다. redis설치 및 실행 1. brew를 이용한 redis설치 brew install redis 2. redis 실행 redis-server //일반실행 brew services start redis //백그라운드실행 3. 실행됐는지 확인 brew services info re..

DB/[이론] 2023.07.02

foreign key의 설정에 따른 update, delete 영향

foreign 설정 종류 1. ON DELETE/UPDATE CASCADE : 부모 테이블의 값이 지워지면(업데이트되면) 자식 테이블의 해당 row도 지워(업데이트)진다 CREATE TABLE foreign_key_test ( id int NOT NULL, content varchar(2048) DEFAULT NULL, user_id int DEFAULT NULL, product_id int unsigned NOT NULL, PRIMARY KEY (id), FOREIGN KEY (product_id) REFERENCES product (id) on delete cascade ); 2. ON DELETE/UPDATE SET NULL : 부모 테이블의 값이 지워지면(업데이트되면) 자식 테이블의 해당 row의..

DB/SQL 2023.06.21

SQL update에러(Error Code: 1175. You are using safe update mode)

SQL update 에러 SQL에서 UPDATE시에 다음과 같은 에러가 나는 경우가 있다. Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect. 이는 update를 할 때 where 절에 key 컬럼을 사용하지 않았을 때 발생하는 경고 에러이다. 예시) update product set price = price-1000 where name like 'shoes%'; 해결책 key 칼럼을 사용하..

DB/SQL 2023.06.20

studio 3T Visual Query Builder를 이용한 쿼리 역추출

Studio 3T의 Visual Query Builder기능 studio 3t에서 Visual Query builder를 이용하면, GUI로 원하는 검색을 하고, 그에 맞는 쿼리를 역으로 추출받을 수 있다. Visual Query Builder 사용법 1. GUI쿼리설정 1. Drag and drop field here or double-click를 더블클릭한다 2. 원하는 필드를 설정하고 해당 필드의 특정값과 같은, 혹은 포함하는(혹은 포함하지 않는..등등)의 조건을 설정한다. 2. 쿼리확인 query code를 눌러서 쿼리확인

DB/MONGODB 2023.06.19

java를 이용한 소켓프로그래밍

TCP IP 소켓 프로그래밍 - TCP IP 프로그래밍을 통한 통신 실습 - client에서 데이터를 주고, server에서 받고, 다시 server에서 데이터를 주고 client에서 데이터를 받는 순서 예시코드 TcpServer.java package clip18; import java.io.*; import java.net.ServerSocket; import java.net.Socket; import java.time.LocalTime; public class TcpServer { public static void main(String[] args) { ServerSocket serverSocket = null; try { serverSocket = new ServerSocket(8888); Sy..

CS/네트워크 2023.06.13