전체 글 111

java :) abstract, abstract class(추상클래스)/abstract method(추상메소드) [수정 1]

goal abstract class와 method에 대해서 이해한다. [수정전 내용 : 2022.03.13 작성] 1] abstract method child class에서 반드시 Overriding해야만 사용할 수 있는 메소드를 의미한다. abstract class에 선언된 abstract method를 반드시 선언하게하는 강제성 부여 추상 메소드는 선언부만 존재하며 구현부는 작성되지 않는다. (동작을 정의하지 않는다.) abstract 반환타입 메소드이름(); 1. 사용이점 모듈처럼 중복되는 부분, 공통적인 부분은 미리 다 만들어진 것을 사용하고 이를 받아 사용하는 쪽(child class)은 자신에게 필요한 부분만을 재정의하여 사용함으로써 생상선 향상, 배포 등이 쉬워진다는 이점을 갖는다. 2. a..

Java/java 2022.05.13

java 이론(?) :) 접근제어자, pulbic > protected > default > private

goal 접근제어자에 대해서 이해한다 1. 제어자의 종류 접근 제어자 public, protected, (default), private 기타 제어자 static, final, abstract, native, trasnsient, synchronized 등 [1] 접근 제어자 (Access Modifier) 접근 제어자 접근 제한 범위 private 동일 클래스에서만 접근 가능 default 동일 패키지 내에서만 접근 가능 protected 동일 패키지 + 다른 패키지의 하위 클래스에서 접근 가능 public 접근 제한 없음 1. 접근 제한의 구분 public(접근 제한 없음) > protected(동일 패키지 + 하위클래스) > default(동일 패키지) > private(동일 클래스) 접근 제어자 ..

Java/java 이론 2022.05.12

java 이론 + Object 대표 메소드 :) 간단한 정리, 메소드 오버라이딩 3가지 조건/Object class의 대표 메소드/캡슐화/package/import

goal 메소드 오버라이딩의 3가지 조건/Object class의 대표 메소드 1 ] 메소드 오버라이딩의 3가지 조건 메소드의 선언부 (메소드 이름, 매개변수, 반환타입)이 상위 클래스의 그것과 완전한 일치 접근 제어자의 범위가 상위 클래스의 메소드보다 같거나 넓어야한다. 예외는 상위 클래스의 메소드보다 많이 선언할 수 없다. 2 ] Object class의 대표 메소드 메소드명 반환타입 주요내용 toString() String 객체 정보를 문자열로 출력 equals(Object obj) boolean 등가 비교 연산(==)과 동일하게 스택 메모리값을 비교 hashCode() int 객체의 위치정보 관련. Hashtable 또는 HashMap에서 동일 객체여부 판단 wait() void 현재 쓰레드 일시..

Java/java 이론 2022.05.12

코드스테이츠 블로깅 세션 :) 첫 번째 - 자바의 기초를 배우다. 자바의 특징/String클래스/타입/변수/상수/리터럴/타입변환/입출력/제어문/배열

코드스테이츠, 블로깅세션 자바의 특징 자바의 타입 자바의 String클래스 자바의 변수, 상수, 리터럴, 타입변환 자바의 연산자, 입출력, 제어문, 배열 요약 헷갈리거나 몰랐던 내용 자바의 타입 / 기본타입의 크기와 표현, 범위 자바의 String클래스 / StringTokenizer 클래스 자바의 String클래스 / StringBuilder와 StringBuffer (+차이점 => 따로정리) 첫 번째(?) 여정 - 자바의 기초를 학습하다. 1. 자바의 특징 학습내용 학습 전 이해 여부 학습 후 이해 여부 이해하지 못한 이유 학습내용 학습 전 이해 여부 학습 후 이해 여부 이해하지 못한 이유 JVM동작 방식 O O JRE & JDK O O [학습목표] JVM 동작 방식 : JVM이 운영체제에서 어떻게 ..

운영체제 + java관련 + 개발자라면 :) thread란 무엇이고 왜 알아야 하는가??????????????

goal 쓰레드(thread)에대해서 이해한다. keyword 쓰레드(thread) & 멀티쓰레드(multi-thread) 1 ] thread란? 1. thread란? 스레드란, 프로세스 내에서 실제로 작업을 수행하는 주체를 의미한다. 모든 프로세스는 한 개 이상의 스레드가 존재하여 작업을 수행한다. 그리고, 프로세스 내에서 실행되는 흐름의 단위라고 스레드를 말하기도 한다. 2. multi-thread란? 멀티스레드란, 프로세스 내부에서 작업을 주체하는 스레드가 두 개 이상인 것을 말한다. 또한, 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threaded process)라고 한다. 2 ] 나의 정리 1. thread를 알아야하는 이유 (메모리에 올라간) 프로세스는 목적을 갖고..

CS/운영체제 2022.05.11

운영체제 + java관련(?) + 개발자라면? :) 쓰레드를 알기전에, 멀티프로세싱/멀티프로그래밍/멀티태스킹

goal thread의 개념을 이해하기 전에 선행 1 : 멀티프로세싱이란? 선행 2 : 멀티프로그래밍이란? 선행 3 : 멀티태스킹이란? goal : thread란? ->포스팅예정 선행개념을 넣는 이유 사실 쓰레드만 이해해서, 쓰레드가 어떤 역할을 하는지만 이해해도 코드를 작성하는데 큰 문제는 없을 것이라 생각한다. 하지만 파고들고 파고들수록 더 큰 부분의 개념을 알게 되었고, 지금 이해한 내용을 까먹지 않기 위해 기록하는 동시에 운영체제 위에서 일반적으로 프로그램이 돌아가는 방식을 이해하기 위해 글을 적어본다. 난 개발자니까 프로그램이 시스템에서 어떻게 도는지는 알아야겠지? 근데, 이거 CS아니야?????????????????? -> 그냥 운영체제에 기입 CS내용이다. 근데, java프로그램에서는 thr..

CS/운영체제 2022.05.10

java :) 자바의 메모리 구조 (static, stack, heap)

goal 자바의 메모리 구조(JVM구조)를 이해한다. * 자바의 메모리구조 (static / stack / heap) 개념 설명 static 클래스들의 놀이터 - 클래스 멤버 변수가 할당되며 JVM이 종료될 때 까지 존재한다. stack 메서드들의 놀이터 - 메소드들의 각각은쓰레드라 볼 수 있다. - 메소드로 넘겨 받은 매개변수, 메소드 안의 지역변수가 할당 heap 객체들의 놀이터 - 객체 멤버 변수가 할당된다. (참조변수) - 객체는 사용되지 않을 경우 가비지 컬렉터에 의해 소멸 - 객체 소멸시에, Heap에 저장된 객체 멤버 변수도 같이 소멸된다. [1] static static - "정적" 컴파일 시간동안 할당 된 메모리이며, 고정된 공간을 차지한다. 런타임 중에 변경할 수 없는 특징을 가진다. ..

Java/java 2022.05.10

java :) java에서 정규표현식 사용하기, Pattern 클래스

goal java.util.regex의 Pattern 클래스의 static method인 matches를 알아본다. 참고자료 java 1.8 documentation, https://docs.oracle.com/javase/8/docs/api/index.html 기타 사용법 : Pattern 어렵지 않게 사용하기, https://gngsn.tistory.com/53, pageseo 금일 페어프로그래밍을 하며 알게된 클래스 페어프로그래밍의 페어님께서 java도 정규 표현식을 나타낼 수 있다는 것을 알려주셨고, 우연히 Patten클래스를 알게 되어 작성한다. 언젠가는 써먹을 일이 있을거라 생각한다. 하 api 문서를 보고 작성해보려고 시도했으나 영어가 너무 부족하여 패스 공부해야겠다. * Pattern 클래..

Java/java 2022.05.10

22/0510 회고 with 코드스테이츠 :) 배열을 배우다. replace()/replaceAll()/Arrays.toString()/Arrays.copyOf()/Arrays.copyOfRange()/System.arraycopy()

* 요약 빨간색 : 모르는 개념 코드스테이츠 학습 내용 개인공부 내용 배열 java, Pattern클래스 1 ] 코드스테이츠 교육관련 1. 학습 키워드 배열 2. 학습 목표 배열이 무엇인지 이해한다. 1차원 배열과 다차원 배열의 차이는? 문자열 배열을 이해한다 배열의 초기화 방법? 배열을 탐색하고 값을 사용하는 방법은? 3. 학습 요소 [1] 학습전 정리 요소정리 기술 학습 전, 요소 이해여부 학습 후, 요소 이해여부 이해하지 못한 이유 Arrays.copyOf() java x o Arrays.copyOfRange() java x o System.arraycopy() java x o String.replace() java x o String.replaceAll() java x o [2] 학습후 알게된 것..

java :) 문자열의 문자 변경, replace() & replaceAll() 메소드 설명 ( + 정규표현식 [외부자료])

goal 문자열 치환을 돕는 replace()와 replaceAll()을 이해하고 사용법을 숙지한다. 문자열 치환을 어떻게 해야할까? 그냥 source에서 바꿔주지 뭐... 사실 틀렸다고 보긴 힘들다. 하지만, 필요에 의해서 많은 문자를 바꿔줘야할 때, 모든 문자열을 바꿔주기에는 큰 어려움이 있을 것이다. 아래에서 설명하겠지만 맛보기 아닌 맛보기를 보고 들어가보자. 아래 코드는 오늘 학습한 내용과 함께 더불어 작성해본 것이다. StringReplace.java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class StringReplace { public static vo..

Java/java 2022.05.09

java :) System.arraycopy(), 매개변수가 5개가 들어가?(원본배열, 원본의복사시작점, 복사받을 배열, 복사받을 시작점, 복사받을 끝점)

goal System.arraycopy를 이해하고 사용법을 안다. * System.arraycopy() 사용방법 참고자료 : [Java] System.arraycopy 사용법, https://eunplay.tistory.com/118, 어제, 오늘 그리고 내일 SystemArraycopy.java import java.util.Arrays; public class SystemArraycopy { public static void main(String[] args) { int[] arr = new int[] {10,20,30,40,50}; int[] sys = new int[arr.length]; System.arraycopy(arr, 0, sys, 0, arr.length); System.out.prin..

Java/java 2022.05.09

java :) 얕은복사와 깊은복사, Arrays.copyOf()와 Arrays.copeOfRange() 사용방법

goal 배열의 복사와 다양한 배열의 복사 방법에 대해서 이해한다. 요약 개념 설명 얕은 복사 (Shallow copy) 얕은 복사가 된 경우, 원본배열 또는 복사된 배열의 값이 변경된다면 영향을 준다. - 영향이란, 같은 메모리를 가리키고 있다는 말이다. - 같은 메모리를 공유한다는 의미 깊은 복사 (Deep copy) 깊은 복사가 된 경우, 원본배열 또는 복사된 배열의 값이 변경이 있더라도 영향이 x - 각각 독립적인 메모리를 가진다. 얕은 복사와 깊은 복사를 알아야 하는 이유 기본타입(primitive type)의 변수 경우, 얕은 복사로도 사용이 가능하지만 참조타입(reference type)의 변수인 경우 깊은 복사를 사용해야 객체의 실제 데이터를 복사할 수 있다. 내용 설명 import jav..

Java/java 2022.05.09

java :) Arrays.toString으로 배열 간편하게 출력하기 ( + 출력할 때 괄호 없애는 방법)

goal Arrays.toString()을 이용한 배열의 값 출력방법을 이해한다. * 배열 출력하기 : Arrays.toString(arr) import java.util.Arrays; public class Note { public static void main(String[] args) { int[] arr = new int[]{20,51,23,56,78}; String arr_toString = Arrays.toString(arr); String repl = arr_toString.replaceAll("\\[","").replaceAll("\\]",""); System.out.println("Arrays.toString을 활용한 배열 출력 : " + arr_toString); System.out.p..

Java/java 2022.05.09

java :) StringBuilder, StringBuffer의 개념과 사용의 이해

goal StringBuilder와 StringBuffer의 이해 1 ] StringBuilder 기본적으로 String클래스의 연산은 연산이 진행될 때 마다 새로운 인스턴스를 생성한다. 이는 시스템의 악영향을 끼칠 수 있고 대안으로 나온것이 StringBuilder이다. StringBuilder는 String과 달리 기존의 데이터에 값을 더하는 방식을 사용한다. String클래스 연산보다 빠르다 메모리가 차지하는 부하가 적어진다. StringBuilder builder = new StringBuilder(); builder.append("자바는 ").append("조금 빡쳐"); String str = builder.toString(); System.out.println(str); StringBuild..

Java/java 2022.05.04

객체지향 설계 :) 판매할 Database API UML 설계로로 알아본 객체지향 설계의 방법과 이해

goal 판매할 Database API의 UML을 보며 객체지향설계의 중요성에 대해서 생각해보자 글을 적는 이유 지금까지 객체지향 설계에 대해서 깊게 생각해본적이 없었다. 스터디를 시작하며 토비의 스프링의 책을 공부하게 되었는데 스프링을 공부하기 앞서서 저자는 책 초반부에 객체지향설계의 중요성을 강조함과 동시에 단계별로 Refactoring을 통해 객체지향 설계를 하는 방법을 나름 친절하게 설명하고 있다. 저자가 친절하게 설명해주고 있지만 생각보다 딱딱한 내용이고 직관적으로 이해가 되지 않는게 사실이다. 현재 포스팅하려는 부분은 Refactoring과정중에 있는 일부 단계이다. 비록 완성 단계는 아니지만, 객체지향 설계에 대해서 많은 것을 배울 수 있었고 현재 내가 이해한 것이 휘발될까봐 글을 적는다. ..

22/0503 회고 with 코드스테이츠 :) git의 기초 사용

* 요약 빨간색 : 모르는 개념 코드 스테이츠 학습 내용 개인적 공부 학습 내용 git의 기초 사용방법 1 ] 코드스테이츠 교육관련 1. 학습 키워드 원격저장소, 로컬저장소, fork, 협업 2. 학습 목표 git을 이해한다. 3. 학습 요소 [1] 학습전 정리 요소정리 기술 학습 전, 요소 이해여부 학습 후, 요소 이해여부 이해하지 못한 이유 git add git O O git commit git O O git push git X O git pull git X O git clone git O O fork git X O PR git X O git init git O O git remote (add 등) git O O ※ git restore 파일명=> git clone 초기상태로 돌리는 명령어 ​ git..

spring 이론 :) Jar(java Archive)와 War(Web Application Archive)

goal war, jar의 차이점과 특징 참고자료 [Java] JAR WAR 차이점 및 특징 ( + EAR ), https://ifuwanna.tistory.com/224, IfUWanna JAR와 WAR의 공통점 두 파일 모두 Archive파일이다. Archive파일이란 우리가 자주 접해본 zip파일과 같다고 생각해도 무방하다. jar와 war를 사용하는 목적으로는 어플리케이션을 쉽게 배포하고 동작시킬 수 있도록 관련 파일(리소스, 속성파일 등)들을 패키징해주는 것이다. 1. JAR (Java Archive) Java 리소스와 속성 파일, 라이브러리 및 액세서리 파일이 포함되어있다. 쉽게 자바 프로젝트를 압축한 파일로 생각하자 jar파일은 플랫폼에 귀속되는 것만 제외하면 zip파일과 동일한 구조 JAR..

Spring + java 이론 :) SOLID원칙, 객체지향 설계 5원칙 **백번천번만번십만번 보기**

goal 객체지향 설계 원칙 (객체지향 설계 5원칙)의 SOLID원칙을 이해한다. 1 ] 객체지향 설계의 5원칙, SOLID원칙 명칭 번역 SRP (The Single Responsibility Principle) 단일 책임 원칙 OCP (The Open Closed Principle) 개방 폐쇄 원칙 LSP (The Liskov Substitution Principle) 리스코프 치환 원칙 ISP (The Interface Segregation Principle) 인터페이스 분리 원칙 DIP (The Dependency Inversion Principle) 의존관계 역전 원칙 1. SRP (단일 책임 원칙) [1] 개념 모든 클래스는 하나의 책임만 가지며, 그 책임을 완전히 캡슐화해야 함을 말함 클래스..

window :) 환경변수 설명 및 실습진행 (Java JDK path 설정)

goal window 환경변수 설정방법을 알아본다 1 ] 환경변수란? 프로그램의 동작에 영향을 미치는 값들을 의미한다. 프로그램 A가 실행되기 위해서는 B라는 폴더에 저장된 값을 읽어와야 작업을 처리할 수 있다. 즉, B라는 폴더를 못읽어오면 프로그램이 실행이 되지 않는데, 이는 프로그램 동작에 영향을 준다. 프로그램 동작에 영향을 줄 수 있는 값들을 환경변수라고 한다. 2 ] window에서 환경변수 설정하기 Window에서 지역 환경변수는 특정 계정(사용자)의 환경변수를 편집한다. Window에서 전역 환경변수는 특정 계정에 국한되지 않은 모든 사용자 계정에 영향을 준다. 환경변수 설정 목표 : Java JDK를 동작하게 하는 "전역 환경변수"를 설정한다. ※ JDK가 동작하기 위해서는 컴퓨터가 Ja..