Web_Backend/Java2024. 1. 21. 22:10[JAVA] 파일과 디렉토리, 표준 입출력의 대상 변경, RandomAccessFile class, File 클래스의 다양한 메서드

오늘 수강한 강의 : 【한글자막】 완전 초보자를 위한 Java 프로그래밍 : 단기간에 Java 완벽 정복오늘의 강의 정리 📗자바의 파일과 디렉토리표준 입출력클래스 변수입출력 스트림설명System.inInputStream콘솔로부터 데이터를 입력받음.System.outPrintStream콘솔로 데이터를 출력함.System.errPrintStream콘솔로 데이터를 출력함.참고 : 파일의 제거나 디렉터리에 관한 작업 등은 입출력 스트림을 통해서는 수행할 수 없음.  표준 입출력의 대상 변경메소드설명static void setIn(InputStream in)입력 스트림의 대상을 전달된 입력 스트림으로 변경함.static void setOut(PrintStream out)출력 스트림의 대상을 전달된 출력 스트림으..

Web_Backend/Java2024. 1. 21. 22:10[JAVA] java 코드로 보는 스레드와 동시성(스레드의 생성과 실행, 스레드 우선순위와 JOIN), java 코드로 보는 예외처리

자바 프로그래밍의 스레드와 동시성스레드 개념프로세스(process)단순히 실행중인 프로그램이라고 할 수 있음. 즉, 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행중인 것을 말함. PID를 찾아 해당 process를 kill한것을 생각하면 기억하기 쉬울 것.이러한 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원, 그리고 스레드로 구성됨스레드(thread)프로세스 내에서 실제로 작업을 수행하는 주체. 모든 프로세스는 한 개 이상의 스레드가 존재하여 작업을 수행. 또한 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스라고 부름.자바에서 스레드의 생성과 실행Thread 클래스 상속class ThreadWithClass extends Thread { public ..

Web_Backend/Java2024. 1. 21. 22:10[JAVA] java 코드로 보는 제네릭(generic), 람다(Lambda), 스트림(Stream)

자바 프로그래밍의 제네릭(generic) - JDK 1.5자바에서 제네릭이란 데이터의 타입을 일반화 하는것을 의미함.클래스나 메소드에서 사용할 내부 데이터의 타입을 컴파일시에 미리 지정.컴파일time type check 의 장점클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있음.반환값에 대한 타입 변환 및 타입검사에 들어가는 리소스를 줄일 수 있음.JDK 1.5 이전에서는 여러 타입을 사용하는 대부분의 클래스나 메소드에서 인수나 반환값으로 Object 타입을 사용이 경우에는 반환된 Object 객체를 다시 원하는 타입으로 타입 변환해야 하며, 이때 오류가 발생할 가능성도 존재제네릭의 선언 및 생성class MyArray { T element; void setElement(T ..

CS/CS2024. 1. 18. 09:12[DB] Index란?

소유자: 야나 인증: 인증 완료 Main Category: CS Category: DB Status.: In progress Tags: DB, NoSQL, RDB, RDBMS 생성 일시: 2023년 5월 22일 오후 3:31 생성자: 야나 최종 편집자: 야나 Index Index란? 📌 사전 : 색인, 지표, 기호 또는 무언가의 척도 DB관점 : 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조. 데이터베이스 안의 레코드를 처음부터 풀스캔하지 않고, B+ Tree로 구성된 구조에서 Index 파일 검색으로 속도를 향상시키는 기술이다. 테이블의 칼럼을 색인화한다. 마치, 두꺼운 책의 목차와 같다고 생각하면 편함. 인덱스는 항상 최신의 정렬 상태를 유지한다..

CS/CS2024. 1. 16. 10:42[CS] 엣지 케이스와 코너 케이스는 뭘까?(feat.. 조금 더 안정성 있는 서비스를 향하여..)

학습 계기 유데미의 Java 강의에서 객체지향 코드 케이스를 작성하다가, 엣지케이스라는 용어를 마주했다. QA관련해서 API의 테스트코드를 작성 하면서 그리고 정보처리기사를 공부하면서 몇 번 들었던 용어인데 제대로 정리를 해본적이 없는 것 같아 이번 기회에 정리해보고자 한다. 이번 학습으로 인한 기대 효과 API를 짜오면서 테스트를 진행하고자 할 때, 단순히 '성공하는 테스트’와 '명확하게 실패하는 테스트’뿐 아니라 **‘문제가 될 수 있는 부분을 검증하는 테스트’**도 진행해보고싶었는데, 대체 어떤 부분을 어떤식으로 작성해야하는지 막막했던 적이 있었다. 이번 학습을 통해 엣지 케이스와 코너 케이스 같은 용어를 공부하고, 어떤식으로 엣지 케이스를 세울 수 있는지 배워서 조금 더 안정성 있는 서비스를 만드..

Web_Backend/Java2024. 1. 12. 09:12[JAVA] Array, Array List 와 메서드, Date, LocalDate, LocalTime, LocatDateTime과 메서드, DateTimeFormatter

오늘 수강한 강의 : 【한글자막】 완전 초보자를 위한 Java 프로그래밍 : 단기간에 Java 완벽 정복오늘의 강의 정리 📗Array배열이란?Java의 배열은 고정 크기의 데이터 구조로, 동일한 데이터 형식의 요소를 담을 수 있음.배열의 크기는 생성 시에 지정되며, 한 번 생성된 배열의 크기는 변경할 수 없음배열의 생성과 초기화, 요소로의 접근// 정수형 배열 생성과 초기화int[] intArray = {1, 2, 3, 4, 5};// 문자열 배열 생성과 초기화String[] stringArray = {"apple", "banana", "orange"};// 배열 요소에 접근int firstElement = intArray[0];String fruit = stringArray[1];대표적인 메서드len..

Web_Backend/Java2024. 1. 12. 09:12[JAVA] String 과 functions, String Buffer, String Builder

오늘 수강한 강의 : 【한글자막】 완전 초보자를 위한 Java 프로그래밍 : 단기간에 Java 완벽 정복오늘의 강의 정리 📗String자바에서 String은 참조형 타입참조형이므로 실제 데이터가 아닌 메모리 내에서의 주소를 저장하며, 불변(immutable)성을 가지고 있음즉, 한 번 생성된 문자열은 변경할 수 없음을 의미하며, 새로운 문자열이 필요할 때마다 새로운 객체를 생성concat(String str)현재 문자열에 인자로 전달된 문자열을 덧붙여 새로운 문자열을 반환String str1 = "Hello";String str2 = " World";String result = str1.concat(str2);// 결과: "Hello World"replace(CharSequence target, Cha..

Web_Backend/Java2024. 1. 12. 09:12[JAVA] Data Type, wrapper class와 사용 예시, BigDecimal, 산술연산자, 논리연산자, 비트연산자, 관계연산자, intanceof연산자, 비교연산자, 화살표연산자, 삼항연산자)와 연산자 우선순위

오늘 수강한 강의 : 【한글자막】 완전 초보자를 위한 Java 프로그래밍 : 단기간에 Java 완벽 정복오늘의 강의 정리 📗wrapper class기본 자료형을 객체로 감싸는 역할자료형에 대한 추가적인 기능을 제공하거나, 객체로서의 특징을 갖게 해줌wrapper class 사용 예시// 기본 자료형 사용int primitiveInt = 10;// Wrapper 클래스 사용 (Autoboxing: 기본 자료형을 Wrapper 클래스로 자동 변환)Integer wrapperInt = 10;// Autoboxing을 통해 기본 자료형을 Wrapper 클래스로 변환// Unboxing을 통해 Wrapper 클래스를 기본 자료형으로 변환int result = primitiveInt + wrapperInt;pub..

Web_Backend/Java2024. 1. 12. 09:12[JAVA] 자바에서 객체지향형 프로그래밍(OOP)과 함수형 프로그래밍(FP), java 코드로 보는 SOLID(단일 책임 원칙, 개방/폐쇄 원칙, 리스코프 치환 원칙, 인터페이스 분리 원칙, 의존 역전 원칙)

오늘 수강한 강의 : 【한글자막】 완전 초보자를 위한 Java 프로그래밍 : 단기간에 Java 완벽 정복오늘의 강의 정리 📗자바에서의 객체지향형 프로그래밍과 함수형 프로그래밍오늘 강의에서는 자바의 캡슐화와 객체지향 프로그래밍, 함수형 프로그래밍에 대해서 다루었다.그 중 자바의 객체지향 프로그래밍과, 캡슐화에 대해서 기존에 정리한 글을 첨부한다.자바의 패키지(package), import, 클래스패스(CLASSPATH,-d,-cp), 접근 제어자(private, public, defalt, protected), 캡슐화(데이터하이딩, 객체지향, 겟터getter,셋터setter)자바의 함수형 프로그래밍에 대해서는, 사실 여태 한번도 사용해본 바가 없어 이번 기회에 코드를 통해 한번 비교해보고자 한다.자바 객..

Web_Backend/Java2024. 1. 8. 14:15[JAVA] System.out.print~의 사용을 지양해야만 하는 이유를 알아보자(feat,, IO, 휘발성, 출력레벨, 성능저하..)

사실 전부터 'System.out.print()를 사용하면 성능에 좋지 않고 logger가 조금 더 프로젝트 내부에서 출력을 하는 목적에 맞으니 logger를 사용해보세요’라는 피드백을 받고 "System.out의 사용을 지양해야겠구나"라고는 생각하였으나 제대로 파헤쳐 보지 못했는데, 오늘 JAVA교육 수강 중 System.out이 나와 이참에 “대체 왜 System.out은 운영 및 개발환경에서 사용을 지양해야하는지” 알아보고자 한다. +[게시글 작성 마무리 작업 중 추가하는 한 마디] 한번 제대로 파헤쳐보니, 왜 System.out의 사용을 지양해야하는지 이해가 가기 시작했다. 습관적으로, 그리고 logging 프레임워크를 불러와 사용하기 귀찮다는 이유로, 디버깅 상황에서 Sout을 호출하던 습관을 ..

Web_Backend/DB2024. 1. 7. 23:28[SQL] 제약조건, DB와 TABLE의 생성과 수정 삭제(CREATE, ALTER, DROP), CASE, NULLIF, NVL/ISNULL, COALESCE, CAST(데이터 유형 변환), VIEWS(가상 테이블)

오늘 수강한 강의 : 【한글자막】 데이터 역량 강화를 위한 SQL 부트캠프오늘의 강의 정리 📗Data typesPostgresql의 데이터 타입 참조제약조건(Constraints)컬럼 제약조건NOT NULL: 해당 null 값이 들어갈 수 없다UNIQUE: 해당 컬럼에는 중복되는 값이 들어갈 수 없다PRIMARY KEY : 기본키 UNIQUE + NOT NULL 의 결합과 같음FOREIGN KEY : 기본키를 참조하는 컬럼 or 컬럼들의 집합 (외래키는 기본키나 유니크가 아니면 생성 제약)REFERENCES: Foreign key 에서 참조되는 테이블의 이름은 REFERENCES 키워드 다음에 명시CHECK: 컬럼의 값을 어떤 특정 범위로 제한EXCLUSION: ?테이블 제약조건CHECK (condit..

Web_Backend/DB2024. 1. 5. 13:21[작성중]GraphQL - 프론트엔드에서 쿼리를 마음껏 날릴 수 있다고? (보안과 권한은 어디로 가는가.. Injection은? REST와의 차이점은 뭘까?)

프론트엔드와 백엔드 개발자의 협업에 대해 이야기 나누던 도중, 기능 개발 분업 관련 이슈에 대한 대응방법중 하나로 GraphQL에 대한 이야기가 나왔다. 사실 GraphQL이라는 키워드는 몇번 들어 본 적이 있는데 graphQL이라는 이름만 듣고 'SQL과 같은 RDBMS를 다루는 일종인가?'라는 추측만 해왔던지라, 어떻게 graphQL이 프론트엔드와의 협업에서 하나의 방인이 될 수 있는지 궁금해져 찾아보게 되었다. GraphQL 페이스북(Meta)에서 만든 쿼리 언어 : 또 페이스북인가…! Graph QL(이하 gql)은 Structed Query Language(이하 sql)와 마찬가지로 쿼리 언어 SQL과 GraphQL 차이 목적 SQL : 데이터베이스 시스템에 저장된 데이터를 효율적으로 가져오는 ..

image