전체 글

꾸준하게
객체지향의 사실과 오해 스터디

[객체지향의 사실과 오해] Chapter 2

이상한 나라의 객체 챕터의 도입부는 아기들의 객체 인지에 대한 소개로 시작한다. 가림막 뒤에 막대 두개를 동일한 방향으로 움직이게 하면서 지루할 때까지 반복한다. 가림막을 치웠을 때 막대가 하나만 있다면 지루함으로 시선을 옮길 것이다. 만일 두개의 짧은 막대로 나타난다면 아기는 놀란 나머지 오랜 시간 동안 막대를 쳐다볼 것이다. 여기서 얘기하고자 하는 바는 태어난지 얼마 안된 사람도 뚜렷한 경계를 가지고 함께 행동하는 물체를 하나의 개념으로 인지한다는 사실이다. 아기들 역시 뚜렷한 경계를 가진 객체들의 집합으로 세상을 바라본다. 객체지향의 인지 능력 많은 사람들이 객체지향을 직관적이고 이해하기 쉬운 패러다임이라고 말하는 이유는 인간의 기본적인 인지 능력에 기반을 두고 있기 때문이다. 예를 들어 컴퓨터, ..

객체지향의 사실과 오해 스터디

[객체지향의 사실과 오해] Chapter 1

우리가 생각한 객체란 현실 세계에 존재하는 사물에 대한 추상화라는 것이다. 자바에서 객체에 대하여 처음 배울 때 보통 실사물에 빗대어 예시를 들어줬다. 예를 들어 자바의 정석에서 Tv와 리모컨과의 객체 관계를 많이 설명해 줬었다. 아쉽게도 실세계의 모방이라는 개념은 객체지향의 기반을 이루는 철학적인 개념을 설명하는 데는 적합하지만 유연하고 실용적인 관점에서 객체지향 분석, 설계를 설명하기에는 적합하지 않다. 이 부분을 읽으면서 꽤 흥미로웠다. 위에서 설명한 것처럼 실세계의 사물에 대한 모방을 개념으로 학습했으니까.. 그럼 저자는 왜 이런 말을 했을까? 소프트웨어 개발자의 역할은 단순히 실세계를 소프트웨어 안으로 옮겨 담는 것이 아니라 고객과 사용자를 만족 시킬 수 있는 신세계를 창조해야 하는 것이다. 그..

개발

[자바 ORM 표준 JPA 프로그래밍] 영속성 관리

김영한님의 강의를 복습하면서 평소 애매하게 알던 부분들을 기록하려고 합니다. JPA가 ORM 기술에 대한 표준 명세 API 입니다. JPA의 내부 동작 원리를 알기 위해 영속성 컨텍스트에 대해 학습하여야 합니다 JPA의 원리를 이해하기 위해 강사님은 Spring 없이 JPA로만 설명 합니다. JPA의 알아야 될 2가지 1. ORM - 자바의 객체와 DB 테이블 사이의 매핑 관계 2. 영속성 컨텍스트 - JPA의 내부 동작 원리 엔티티매니저팩토리를 통해 엔티티 매니저를 생성합니다. 엔티티 매니저를 통해 영속성 컨텍스트에 접근할 수 있습니다. 영속성 컨텍스트 📍 JPA에서 가장 중요함 📍 "엔티티를 영구 저장하는 환경"이라는 뜻 📍 EntityManager.persist(entity); → DB에 저장하는게..

자바 스터디

자바 스터디 끝

https://github.com/uijin-j/Java_Study GitHub - uijin-j/Java_Study: Tools Java Study for Spring 🪴🐶 Tools Java Study for Spring 🪴🐶. Contribute to uijin-j/Java_Study development by creating an account on GitHub. github.com 3월 부터해서 8월까지 끝까지 낙오자 없이 스터디 마무리하게 돼서 정말 뿌듯하다. 복학하고 학교다니면서 첫 스터디인데 끝맺음까지 해서 더욱 값진 것 같고 앞으로 스터디를 하게 될 때도 좋은 영향을 끼칠 것 같다. 사실 5월까지해서 교내 동아리 Tools에서 진행하는 스터디들은 마무리 됐는데 조장님께서! 6월 방학시작하..

자바 스터디

[자바의 정석] CH 16

네트워킹 두 대 이상의 컴퓨터를 케이블로 연결하여 네트워크를 구성하는 것을 말한다. 1. 클라이언트/서버(client/server) 클라이언트 : 서비스를 사용하는 컴퓨터 서버 : 서비스를 제공하는 컴퓨터 서비스의 종류에 따라 파일서버, 메일서버, 어플리케이션 서버 등이 있다. 서버기반 모델 : 네트워크를 구성할 때 전용서버를 두는 것 P2P 모델 : 별도의 전용서버없이 각 클라이언트가 서버역할을 동시에 수행하는 것 1.5 URLConnection 어플리케이션과 URL간의 통신연결을 나타내는 클래스의 최상위 클래스로 추상클래스 이다. URLConnection을 상속받아 구현한 클래스로는 HttpURLConnection과 JarURLConnection이 있다. public class NetworkEx3 {..

자바 스터디

[자바의 정석] CH10 1,2

1.1 날짜와 시간 1.2. Calendar클래스 추상 클래스이므로 getInstance()를 통해 구현된 객체를 얻어야 한다. - get()으로 날짜와 시간 필드 가져오기 - int get(int field) Calendar cal = Calendar.getInstance(); // 현재 날짜와 시간으로 셋팅됨 int thisYear = cal.get(Calendar.YEAR); // 올해가 몇년인지 알아낸다. int lastDayOfMonth = cal.getActualMaximum(Calendar.DATE); // 이 달의 마지막날 - Calendar에 정의된 필드 ... Calendar today = Calendar.getInstance(); // Calendar객체를 생성 System.out.p..

자바 스터디

[자바의정석] CH14 2.6~2.8

1. collect()와 Collectors() collect()는 스트림의 요소들을 컬렉션으로 변환하거나, 요소들을 그룹화, 집계, 문자열로 결합하는 등의 작업을 수행하는데 사용 됨 ‣ collect()는 Collector를 매개변수로 하는 스트림의 최종연산 (map은 중간연산) Object collect(Collector collector) // Collector를 구현한 클래스의 객체를 매개변수로 Object collect(Supplier supplier, BiConsumer accumulator, BiConsumer combiner) // 잘 안쓰임 ‣ Collector는 수집(collect)에 필요한 메서드를 정의해 놓은 인터페이스 public interface Collector { Suppli..

자바 스터디

[자바의 정석] CH13.8 쓰레드의 실행제어

20. 쓰레드의 상태 - NEW : 쓰레드가 생성되고 아직 start()가 호출되지 않은 상태 - RUNNABLE : 실행 중 또는 실행 가능한 상태 - BLOCKED : 동기화블럭에 의해서 일시정지된 상태(lock이 풀릴 때까지 기다리는 상태) - WATING, TIMED_WATING : 쓰레드의 작업이 종료되지는 않았지만 실행가능하지 않은(unrunnable) 일시정지상태, TIMED_WATING은 일시정지시간이 지정된 경우를 의미 - TERMINATED : 쓰레드의 작업이 종료된 상태 21. 쓰레드의 실행제어 쓰레드의 실행을 제어할 수 있는 메서드가 제공된다. static 메서드 2개는 자기자신에게만 가능하다. 남을 재울 수 없고 자기를 재울 수 있다고 예시 들어줌 22. sleep() 현재 쓰레드..

개발

[Spring Boot] AccessToken, RefreshToken을 이용한 로그인 구현

이번에 팀 프로젝트 로그인 구현 방식으로 JWT를 적용해봤습니다 다른 완성도 높은 방식들도 많지만 아직 완벽히 이해하진 못해서 스스로 이해 가능할 정도 수준으로 구현 했습니다😅 package구조 - 개인 패키지 이름 - config - controller - dto - entity - repository - service - jwt Build.Gradle plugins { id 'java' id 'org.springframework.boot' version '2.7.13' id 'io.spring.dependency-management' version '1.0.15.RELEASE' } group = 'com.donggram' version = '0.0.1-SNAPSHOT' java { sourceComp..

자바 스터디

[자바의 정석] CH 12 (Generics, Enum, Annotation)

지네릭스 - 컴파일시 타입을 체크해 주는 기능 public class GenericTset{ public static void main(String[] args){ // ArrayList list = new ArrayList(); ArrayList list = new ArrayList(); list.add(10); list.add(20); // list.add("30"); list.add(30); //컴파일 처크 // 컴파일 OK, But 실행시 에러발생 // Integer i = (Integer)list.get(2); System.out.println(list); } } 장점 1. 타입 안정성을 제공한다. 2. 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해 진다. RuntimeException을..

changha.
꾸준하게