전체 글124 📚 객체지향의 사실과 오해(FIN) (책의 내용 중 일부분과 개인적으로 요약한 부분이 같이 있어 저자분의 내용과 다르게 요약되었을 수 있습니다.) 1장 "협력하는 객체들의 공동체" 객체 지향의 목표는 실세계를 모방하는 것이 아니다. 오히려 새로운 세계를 창조하는 것이다. 소프트웨어 개발자의 역할은 단순히 실세계를 소프트웨어 안으로 옮겨 담는 것이 아니라 고객과 사용자를 만족시킬 수 있는 신세계를 창조하는 것이다. 역할, 책임, 협력 역할이라는 단어는 책임이라는 개념을 내포한다. 역할에 적합한 책임을 수행한다 - 여러 사람이 동일한 역할을 수행할 수 있다 ( 여러 명의 바리스타, 여러 명의 손님 ) - 역할은 대체 가능성을 의미한다. (일하고 있던 바리스타가 일을 그만두어도 다른 사람으로 대체 가능하다) - 책임을 수행하는 방법은 자율적으로.. 책 리뷰/객체지향의 사실과 오해 2023. 4. 28. JVM의 동작 방식과 메모리 구조 1. JVM의 동작 순서 1. 자바를 실행 시키면 자바 컴파일러에 의해 자바(. java) 파일이 클래스 파일(. class)로 컴파일된다. 2. 이후에 클래스 로더에 .class 파일(바이트 코드)을 로드한다. - 이 과정에서 클래스 파일은 메모리에 저장되고 파일 정보가 JVM내부에 유지된다. 3. class loder를 통해 JVM Runtime Data Area(메모리 영역)을 구성한다. (메소드 영역, 힙영역, 스택영역) -> 아래에 나오지만 간단하게 설명하면 - 1. 메소드 영역 : 클래스 수준의 정보(클래스 이름, 부모 클래스 이름, 메소드, 변수) - 2. 힙 영역 :객체, 배열이 생성되는 영역 (new 생성자로 생성되는) - 3. 스택 영역 : 각 스레드 마나 하나씩 존재, 메소드 호출 시.. JAVA 2023. 4. 26. 스택 두개로 큐 만들기 큐: FIFO(First in first out) 1,2 차례로 push하면 1,2 순서로 출력 스택 : LIFO(Last in first out) 1,2 차례로 push하면 2,1 순서로 출력 스택은 마치 하노이탑과 같이 물건을 쌓아 올린 후에 빼는 것과 같고, 큐는 빨대에 구슬을 넣었을 때 나오는 순서와 같다. 두개의 스택으로 큐 만들기 stack 1은 push용 stack2는 pop용이라 생각하는 것이 편하다. 스택 두 개를 활용해서 큐를 만들 수 있다. 1. 스택에 enqueue 하는 경우 스택 1에 데이터를 넣는다. 2. 스택 2에서 dequeue 한다(pop 한다) 2-1. 만약 스택 2가 비워져 있는 경우 스택 1에 있는 모든 데이터를 스택 2로 옮긴다. (이 과정에서 stack의 값이 re.. 알고리즘 2023. 4. 25. [Java 백준] 2887 행성터널 플래티넘5 🔗 문제링크 🔗 2887번: 행성 터널 첫째 줄에 행성의 개수 N이 주어진다. (1 ≤ N ≤ 100,000) 다음 N개 줄에는 각 행성의 x, y, z좌표가 주어진다. 좌표는 -109보다 크거나 같고, 109보다 작거나 같은 정수이다. 한 위치에 행성이 두 개 이 www.acmicpc.net 🌟 생각 흐름 🌟 오랜만에 그래프 문제 푸니까 재미있었다. 1. 모든 행성의 경우에 대해서 계산하기 -> 100,000 * 99,999 /2 하니까 메모리 에러가 났다. 2. 고민을 하다가 메모리 초과가 난경우에 대해서 생각을 해봤다. 문제를 다시 읽다 보니 터널생성에는 x, y, z 중 제일 작은 차를 이용한다. 즉 x, y, z의 제일 작은 값들만 비교하면 다른 값들은 의미가 없다는 생각이 들었다. 따라서 x,.. 알고리즘 2023. 4. 20. [백준 java] 1941 소문난 칠공주, 조합, bfs 🔗 문제링크 🔗 1941번: 소문난 칠공주 총 25명의 여학생들로 이루어진 여학생반은 5×5의 정사각형 격자 형태로 자리가 배치되었고, 얼마 지나지 않아 이다솜과 임도연이라는 두 학생이 두각을 나타내며 다른 학생들을 휘어잡기 시작 www.acmicpc.net 🌟 생각 흐름 🌟 25자리의 자리 중 7개의 자리를 선택하고 해당 자리들끼리 연결되어 있는지, 이다솜 편이 4명 이상인지 확인한다. 🍳 코드 🍳 package 백준.구현; import java.awt.*; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.. 알고리즘 2023. 4. 18. JDBC, JPA, ORM JDBC(Java Database Connectivity) 자바에서 데이터베이스에 접속하고 쿼리문을 실행하는 자바 API이다. 데이터베이스 종류에 상관없이 일관된 방식으로 데이터베이스에 접속하고 데이터를 관리할 수 있도록 하며, 이를 통해 데이터베이스와 자바 애플리케이션 간의 상호작용을 간단하게 만들어 준다. Spring JDBC 스프링 프레임워크에서 제공하는 JDBC 추상화 계층이다. JDBC API를 좀 더 쉽게 사용할 수 있도록 추상화 계층을 추가하여 JDBC 코드 작성의 번거로움과 복잡성을 줄여준다. 그러나 JDBC를 사용하면 데이터베이스에 대한 직접적인 제어를 할 수 있어 필요한 경우에 더 세밀한 작업을 수행할 수 있는 장점이 있다. JDBC의 기본 기능 뿐 아니라 데이터베이스 연결, 트랜잭션 .. JPA 2023. 4. 12. SQL 1. CONCAT(): 문자열을 결합하여 하나의 문자열로 만드는 함수 SELECT CONCAT(first_name, ' ', last_name, ' (', email, ')') AS user_info FROM users; 2. SUBSTR() : 문자열에서 일부분을 추출하여 반환하는 함수 SUBSTR(문자열, 시작 위치, 길이) /* 시작위치는 1부터 시작한다. 길이를 생략하는 경우 마지막까지 찾는다*/ SELECT SUBSTR(name, 1, 3) FROM users; 3.INSTR() : 문자열 내에서 특정 문자열이 나타나는 위치를 찾아주는 함수 ( 없는 경우 0이 반환된다) INSTR(원본 문자열, 찾을 문자열 , 시작 위치 , 발견 위치) /* 원본 문자열 : 찾을 문자열 시작 위치: 검색을 시작.. SQL 2023. 4. 10. Spring 예외 처리 SPRING 예외 처리 ( 이상하게 한 부분 있으면 조언 부탁드립니다. 🥲 ) 기존코드 지금까지는 그냥 모든 컨트롤러 위에 이렇게 ExceptionHandler을 달아서 에러가 발생하면 처리할 수 있도록 했다. 근데 어차피 전역적으로 똑같은 예외처리를 하면 한 번에 묶어서 처리하는 것이 낫다고 생각해서 관련 방법 찾았다. 수정코드 @RestControllerAdvice는 Exception Handling을 위한 어노테이션으로 @ControllerAdvice와 @ResponseBody의 기능을 합쳐 놓은 것이다. 해당 어노테이션을 활용하면 컨트롤러에서 발생하는 예외를 전역적으로 처리할 수 있게 도와주고 @ResponseBody를 통해서 메서드 반환값을 HTTP 본문에 제공해 json과 같은 형태로 반환이 .. Spring,SpringBoot 2023. 4. 8. [0406] SPRING CS 공부 Bean/Component 어노테이션 @Bean, @Component 어노테이션은 스프링에서 빈(Bean)으로 등록하기 위한 어노테이션이다. 하지만 둘의 용도가 다르다. @Component 어노테이션 @Component(value="mystudent") 개발자가 직접 생성한 클래스를 빈으로 등록하는 경우 클래스 수준에서 사용되며 해당 클래스가 구성 요소(Component) 임을 나타내서 Bean으로 등록 Component 어노테이션이 붙은 클래스는 스프링 콘텍스트에 등록되어, 다른 클래스에서 이를 참조할 수 있다. @Controller, @Service, @Repository 어노테이션들은 @Component 어노테이션의 구체화된 형태이다. @Bean 어노테이션 @Configura.. 2023 2023. 4. 7. [백준, JAVA] 17281 공 ⚾️ (골드 4, 구현) 🔗 문제링크 🔗 https://www.acmicpc.net/problem/17281 17281번: ⚾ ⚾는 9명으로 이루어진 두 팀이 공격과 수비를 번갈아 하는 게임이다. 하나의 이닝은 공격과 수비로 이루어져 있고, 총 N이닝 동안 게임을 진행해야 한다. 한 이닝에 3아웃이 발생하면 이닝이 종 www.acmicpc.net 🌟 생각 흐름 🌟 모든 가능한 선수들의 번호수를 깊이 우선탐색을 이용해서 구한다 ( 4번 타자는 1번으로 정해져 있다 ) 선수들이 정해지면 점수를 매긴다. 쓰리아웃이면 다음 이닝으로 넘어가고 그다음 플레이어(타자? 투수?)가 이어서 진행한다. 만약 0점이면 바로 아웃점수를 체크하고 넘어간다. 점수가 있는 경우 홈런인 경우는 1,2,3루수에 사람이 있는 경우 모두 점수로 체크한다. 1,2.. 알고리즘 2023. 4. 6. [0405] TIL 객체지향의 사실과 오해 3장 "타입과 추상화" [개인적으로 요약하여 저자님의 생과가 다르게 전달될 수 있습니다..] 객체지향의 핵심은 추상화이다. 추상화란, 현실 세계에서 출발하지만 필요한 정보만을 추출하여 단순화하는 것이다. 분류와 일반화는 추상화를 위한 도구이다. 이를 통해 객체를 단순화하고, 객체 간의 관계를 명확하게 정의할 수 있다. 분류는 객체를 특정 그룹으로 분류하는 것이다. 예를 들어, 사람을 여성과 남성으로 분류하거나, 동물을 포유류와 조류로 분류할 수 있다. 분류를 통해 객체를 그룹화하고, 이를 기반으로 객체 간의 관계를 파악할 수 있다. 객체를 잘 설계하여야 유지보수가 편리한 애플리케이션을 설계할 수 있다. 최대한 직관적으로 설계하자. 일반화는 객체 간의 공통점을 찾아내서 이를 상위 개.. 2023 2023. 4. 6. [0404] TIL 저번주 일요일 부터 사랑니가 너무너무 아프다아아 뽑고 싶은데 예약이 계속 있어서 다음 주 화요일에 예약했는데 진통제 먹으면서 버티는 중.. 왜 하필 이번주니이 ㅠㅜㅜㅠ 1. 구현 알고리즘을 풀었다. 구현 알고리즘을 잘풀리면 즐겁고 안 풀리면 늪에 빠지는 신기한 문제란 말이지.. 오늘은 잘 풀려서 즐거웠다 😄 (근데 아픔) [백준 Java] 17472 다리만들기2 구현, 골드 1 🔗 문제링크 🔗 17472번: 다리 만들기 2 첫째 줄에 지도의 세로 크기 N과 가로 크기 M이 주어진다. 둘째 줄부터 N개의 줄에 지도의 정보가 주어진다. 각 줄은 M개의 수로 이루어져 있으며, 수는 0 또 lahezy.tistory.com 2. 객체지향의 사실과 오해 2장을 읽었다 객체와, 행동, 상태에 대한 이야기를 하였다... 2023 2023. 4. 5. 이전 1 2 3 4 5 6 7 8 ··· 11 다음