전체 글

소프트웨어 공학학문적 의미높은 품질의 소프트웨어를 효율적으로 개발하는 방법을 탐구하는 학문/연구 분야실천적 의미소프트웨어를 제품화함에 있어서 적용할 수 있는 품질보증 및 개선 활동을 규현하는 프로세스 CMMI (Capability Maturity Model Integrated)미국 국방부에 의하여 개발되어 지금까지 수천 개의 기업이 평가/인증받고 있음Level 존재SPICE(Software Process Improvement and Capability Determination)ISO/IEC 15504에 의하여 규정되어 프로세스 개선과 조직 평가 모델로 활용  소프트웨어 개발 및 유지관리 프로세스개발 방법론소스코드를 포함한 형상관리단계별 산출물 관리요구사항 관리테스트 및 검증  소프트웨어 개발 방법론 폭포..
· CS/Network
이더넷의 다중 접근 제어CSMA/CD (Carrier-Sense Mutiple Access with Collision Detection)노드는 데이터 전송 이전에 회선이 사용 중인지 점검회선이 사용 중이면 임의의 시간만큼 기다린 뒤 다시 시도회선이 사용 중이 아님이 확인되면 데이터 전송 시작데이터 전송 중 충돌이 검출되면 충돌 발생 사실을 모든 노드에게 통보충돌이 발생하면 임의의 시간 동안 대기한 후 다시 시도 무선 랜의 다중 접근 제어CSMA/CA (Carrier-Sense Multiple Access with Collision Avoidance)RTS(Request To Send)와 CTS(Clear To Send)를 이용하여 어느 순간이든 허락된 한 쌍의 노드들 사이에만 데이터 전송 (매체 이용)이..
· Database
키참조 무결성 : 참조할 수 없는 외래키 값을 가질 수 없음개체 무결성 : 기본키에 속하는 속성은 비어 있을 수 없음  테이블 vs 릴레이션테이블 : 데이터베이스의 데이터가 저장된 물리적 구조를 가리키는데 주로 쓰이는 용어릴레이션 : 데이터베이스 모델링에서 주로 쓰이는 용어  트랜잭션이 가지는 속성ACID원자성 (atomicity) : 하나의 트랜잭션은 모두 실행되거나 전혀 실행되지 않아야 함일관성 (consistency) : 트랜잭션의 실행 전후에 데이터베이스 상태가 일관되어야 함독립성 (isolation) : 여러 트랜잭션이 병렬 실행되는 경우에도 서로 간섭하지 않도록 격리 되어야 함영구성 (durability) : 완료된 트랜잭션의 실행 결과는 데이터베이스에 영구 보존되어야 함 ORM (Object..
바이트 입출력 // 문자 동일(try catch)InputStream is = new FileInputStream("파일경로");OutputStream os = new FileOutputStream("파일경로");byte[] array = new byte[1024];while(true) { int num = is.read(data) if (num == -1) break; os.write(array, 0, num);}os.flush();os.close();is.close();  보조 스트림// InputStream To ReaderReader reader = new InputStreamReader(new FileInputStream("경로"));// OutputStream To WriterWri..
표현 및 기호설명[]한개의 문자[abc] // a,b,c 중 하나의 문자[^abc] // a,b,c 이외의 하나의 문자[a-zA-Z] // a~z, A-Z 중 하나의 문자\d한 개의 숫자, [0-9]와 동일\s공백\w한 개의 알파벳 또는 한 개의 숫자, [a-zA-Z_0-9]와 동일\...모든 문자 중 한 개의 문자?없음 또는 한개의 문자*없음 또는 한 개 이상+한 개 이상{n}정확히 n개{n,}최소한 n개{n,m}n개부터 m개까지a|ba 또는 b()그룹핑  String regExp = "(02|010)-\\d{3,4}-\\d{4}";String data = "010-123-4567";boolean result = Pattern.matches(regExp, data); // true
String category 매개변수로 값을 받아올 경우Null을 받아올 수 있기 때문에"title".equals(category) 형태로 기준점을 잘 세팅하면 NPE를 피할 수 있음 반대일 경우는 null을 기준으로 비교하게 됌
Kotlin에서의 var 개념 도입 switch문의 Null 처리switch(object) { case null -> {} // object가 null일 경우 case null, default -> {} // object가 null이거나 선택되지 않은 경우}  switch문의 Instance 확인String data = switch(obj) { case Integer i -> String.valueOf(i); case String s -> "\" + s + "\"; case null, default -> "unknow";};// 이런식으로 obj의 타입을 확인해서 case에 있는 해당 변수로 return할 수 있음  가상 스레드
외운다기 보다 이 흐름을 생각하면 더 좋을 것 같다Connection으로 부터 conn을 받아온다이때 DriverManager의 도움을 받아 사용하고자 하는 DB와 Connection을 생성한다Connection이 생겼으면 하고자 하는 동작에 대한 것이 필요해진다PreparedStatement를 준비하고 원하는 동작(SQL)문을 등록해준다PreparedStatement(pstmt)에 필요한 것들을 setXXX를 통해 세팅해준다이후 execute를 해주면 된다  public class Main4 { public static void main(String[] args) throws IOException { String SQL; PreparedStatement pstmt = nu..
INDEXIndex는 테이블에서 특정 찾기 작업을 빠르게 수행하기 위해서 MySQL이 별도로 만드는 데이터 구조를 말함컬럼별로 만들어짐PK나 FK로 지정된 컬럼은 기본적으로 Index를 갖게됌특정 컬럼을 바탕으로 자주 검색시 Index 생성은 큰 도움이 될 수 있음SELECT / DELETE / JOIN 빠르게 하고 INSERT / UPDATE는 느리게 함테이블에 너무 많은 INDEX를 추가하면 인덱스의 로딩으로 인한 오버헤드로 인해 시스템이 전체적으로 느려질 수 있음CREATE TABLE ryu_index ( id int NOT NULL auto_increment, user_id int not NULL, created timestamp not NULL default CURRENT_TIMESTAMP, c..
Stored ProcedureStored ProcedureDROP PROCEDURE IF EXISTS return_ryu;DELIMITER //CREATE PROCEDURE return_ryuBEGIN SELECT * FROM ryu;END //DELIMITER ;-- 띄어쓰기 중요하고 //는 $$도 상관없음 IN 파라미터 (입력 전용)DELIMITER //CREATE PROCEDURE return_ryu(IN channelName varchar(64))BEGIN SELECT * FROM ryu WHERE channel = channelName;END //DELIMITER ;CALL return_ryu('Facebook');-- 데이터를 직접 집어넣어서 프로시저를 돌릴 수 있음 INOUT 파라..
아래의 select를 자주 쓴다면SELECT s.id, s.user_idFROM session sJOIN channel c ON c.id = s.channel_id;아래처럼 등록 가능CREATE OR REPLACE VIEW test.session_details ASSELECT s.id, s.user_idFROM session sJOIN channel c ON c.id = s.channel_id;SELECT * FROM test.session_details;  View에 값 대입view에 값을 대입했는데 대입이 된다면 원래 테이블에 null 조건이 안걸려서 대입 된거원본 테이블을 확인하면 id만 들어가 있고 나머지 것들은 null이 들어감즉, 접근을 못하게 하거나 not null 형식 등등 제약을 해주어야 함
INNER JOIN양쪽 테이블에서 매치가 되는 레코드들만 리턴함양쪽 테이블의 필드가 모두 채워진 상태로 리턴됨대부분의 조인은 INNER JOIN LEFT JOIN왼쪽 테이블의 모든 레코들을 리턴함오른쪽 테이블의 필드는 왼쪽 레코드와 매칭되는 경우에만 채워진 상태로 리턴됨 FULL JOIN왼쪽 테이블과 오른쪽 테이블의 모든 레코드들을 리턴함매칭되는 경우에만 양쪽 테이블들의 모든 필드들이 채워진 상태로 리턴됨LEFT JOIN(UNION VS UNION ALL) => 중복제거 / 중복 포함RIGHT JOIN CROSS JOIN왼쪽 테이블과 오른쪽 테이블의 모든 레코드들의 조합을 리턴함 SELF JOIN동일한 테이블을 alias를 달리해서 자기 자신과 조인함 -- InnerJoinSELECT * FROM vit..
류가든
장난감정원