전체 글
많은 것을 알고 싶고 변화하는 나의 과정을 기록하고, 공유 하는
-
가야 할 때가 언제인가를 분명히 알고 가는 이의 뒷모습은 얼마나 아름다운가 봄 한 철 격정을 인내한 나의 사랑은 지고 있다 한 잔은 떠나간 너를 위하여 한 잔은 너와 나의 영원했던 사랑을 위하여
4. 나의 마음에 새겨진 문구가야 할 때가 언제인가를 분명히 알고 가는 이의 뒷모습은 얼마나 아름다운가 봄 한 철 격정을 인내한 나의 사랑은 지고 있다 한 잔은 떠나간 너를 위하여 한 잔은 너와 나의 영원했던 사랑을 위하여
2022.07.14 -
간단하게 알아보는 웹 개발 방식 3가지 1. 정적 페이지 : 웹브라우저 localhost:8080/hello-static.html을 url에 입력 -> 내장 톰캣 서버가 요청을 받고 이를 스프링에 전달 -> 그러면 controller에서 우선순위로 hello-static이 있는지 검색 후 존재하지 않다면 resources에서 검색 -> 찾으면 이를 변환하지 않고 그대로 웹브라우저로 처리 2. MVC (Model, View, Controller) : localhost:8080/hello-mvc을 url에 입력 -> 내장 톰캣 서버 -> helloController에서 hello-template(View로 지정한 html 파일명)를 return, (model의 키는 name이고 값은..
3. 스프링 웹 개발 기초간단하게 알아보는 웹 개발 방식 3가지 1. 정적 페이지 : 웹브라우저 localhost:8080/hello-static.html을 url에 입력 -> 내장 톰캣 서버가 요청을 받고 이를 스프링에 전달 -> 그러면 controller에서 우선순위로 hello-static이 있는지 검색 후 존재하지 않다면 resources에서 검색 -> 찾으면 이를 변환하지 않고 그대로 웹브라우저로 처리 2. MVC (Model, View, Controller) : localhost:8080/hello-mvc을 url에 입력 -> 내장 톰캣 서버 -> helloController에서 hello-template(View로 지정한 html 파일명)를 return, (model의 키는 name이고 값은..
2022.07.14 -
🏴☠️ TDD Tip 실패하는 테스트를 만들어라 → 빨간색 꼼수를 써서 테스트를 통과하게 만들어라 → 그린 리팩토링을 하라 → 블루 👉🏻Tip 2 ❗ ctrl + 함수 클릭 수정할 곳 드래그 후 alt + shift + r 누르고 이름 변경하면 한번에 모두 변경됨. 리팩터링은 동작을 변경하지 않으면서도 보다 간편하게 유지 관리하고 파악하며 확장할 수 있도록 코드를 수정하는 프로세스리팩토링의 목적은 소프트웨어를 보다 이해하기 쉽고, 수정하기 쉽도록 만드는 것이다. 👉🏻왜 리팩토링을 해야 하는가? 코드의 구조가 망가지는 효과는 누적된다. 코드의 디자인을 유지하도록 도와준다. 중복을 제거함으로써 각각의 작업에 대한 코드가 오직 한 곳에만 있게 할 수 있다. 소프트웨어의 디자인을 ..
2. Java (TDD, GCC)🏴☠️ TDD Tip 실패하는 테스트를 만들어라 → 빨간색 꼼수를 써서 테스트를 통과하게 만들어라 → 그린 리팩토링을 하라 → 블루 👉🏻Tip 2 ❗ ctrl + 함수 클릭 수정할 곳 드래그 후 alt + shift + r 누르고 이름 변경하면 한번에 모두 변경됨. 리팩터링은 동작을 변경하지 않으면서도 보다 간편하게 유지 관리하고 파악하며 확장할 수 있도록 코드를 수정하는 프로세스리팩토링의 목적은 소프트웨어를 보다 이해하기 쉽고, 수정하기 쉽도록 만드는 것이다. 👉🏻왜 리팩토링을 해야 하는가? 코드의 구조가 망가지는 효과는 누적된다. 코드의 디자인을 유지하도록 도와준다. 중복을 제거함으로써 각각의 작업에 대한 코드가 오직 한 곳에만 있게 할 수 있다. 소프트웨어의 디자인을 ..
2022.07.14 -
객체지향의 4대 특성인 캡슐화, 상속, 추상화, 다형성 을 이용하여 객체 지향을 올바르게 설계할 수 있도록 도와주는 원칙 객체 지향을 공부해봤고, 객체 지향으로 향 후 프로그래밍을 하려면 반드시 알아야 하는 중요한 원칙들이어서. 굉장히 중요하기 때문에 하나하나 원칙들을 정리해봤다. 아무리 객체 지향 4대 특성인 캡슐화, 상속, 추상화, 다형성을 잘한다고 해서 설계를 잘하는 것은 아니다. 물론 4대 특성의 묘미를 잘 살릴수록 설계가 좋다. 하지만 설계 원칙이라는 게 엄연히 존재하고, 또 나름 중요하기 때문에 각 원칙의 맨 앞 알파벳만 따와 "SOLID"라고까지 했을까? SOLID 원칙들은 결국 자기 자신 클래스 안에 응집도는 내부적으로 높이고, 타 클래스들 간 결합도는 낮추는 High Cohesion - ..
1. 객체지향 Java객체지향의 4대 특성인 캡슐화, 상속, 추상화, 다형성 을 이용하여 객체 지향을 올바르게 설계할 수 있도록 도와주는 원칙 객체 지향을 공부해봤고, 객체 지향으로 향 후 프로그래밍을 하려면 반드시 알아야 하는 중요한 원칙들이어서. 굉장히 중요하기 때문에 하나하나 원칙들을 정리해봤다. 아무리 객체 지향 4대 특성인 캡슐화, 상속, 추상화, 다형성을 잘한다고 해서 설계를 잘하는 것은 아니다. 물론 4대 특성의 묘미를 잘 살릴수록 설계가 좋다. 하지만 설계 원칙이라는 게 엄연히 존재하고, 또 나름 중요하기 때문에 각 원칙의 맨 앞 알파벳만 따와 "SOLID"라고까지 했을까? SOLID 원칙들은 결국 자기 자신 클래스 안에 응집도는 내부적으로 높이고, 타 클래스들 간 결합도는 낮추는 High Cohesion - ..
2022.07.14 -
🦤 JAVA 일반 변수 값 할당👉🏻1️⃣ 오직 정수만 담을 수 있는 변수 x 생성. 규칙상 x에 정수 아닌 값이 들어있으면 안 되기 때문. 👉🏻2️⃣ x에 기존에 저장되어 있던 쓰레기값이 사라지고 20이 저장된다. 초기에는 x에 쓰레기 값인 0이 들어간다. 레퍼런스변수 값 할당👉🏻1️⃣ 오직 자동차 리모컨만 저장할 수 있는 변수 a자동차를 만든다.👉🏻2️⃣ 자동차 설계도(클래스)로 자동차 객체를 변수 외! 부! 에 만든다. 자동차 객체는 자신을 조종할 수 있는 리모컨(this)을 가지고 태어난다.👉🏻3️⃣ a자동차 변수에 안에 있는 리모컨의 달리다 버튼을 누른다. 해당 신호가 리모컨과 연결되어 있는 자동차 객체에 전달되어 달리다 기능이 실행된다.👉🏻5️⃣ 달리다 함수. 메서드 (함수). 👉🏻4️⃣ 자동차..
4. Java🦤 JAVA 일반 변수 값 할당👉🏻1️⃣ 오직 정수만 담을 수 있는 변수 x 생성. 규칙상 x에 정수 아닌 값이 들어있으면 안 되기 때문. 👉🏻2️⃣ x에 기존에 저장되어 있던 쓰레기값이 사라지고 20이 저장된다. 초기에는 x에 쓰레기 값인 0이 들어간다. 레퍼런스변수 값 할당👉🏻1️⃣ 오직 자동차 리모컨만 저장할 수 있는 변수 a자동차를 만든다.👉🏻2️⃣ 자동차 설계도(클래스)로 자동차 객체를 변수 외! 부! 에 만든다. 자동차 객체는 자신을 조종할 수 있는 리모컨(this)을 가지고 태어난다.👉🏻3️⃣ a자동차 변수에 안에 있는 리모컨의 달리다 버튼을 누른다. 해당 신호가 리모컨과 연결되어 있는 자동차 객체에 전달되어 달리다 기능이 실행된다.👉🏻5️⃣ 달리다 함수. 메서드 (함수). 👉🏻4️⃣ 자동차..
2022.07.13 -
재귀(recursion)는 어떠한 이벤트에서 자기 자신을 포함하고 다시 자기 자신을 이용하여 정의되는 경우를 의미합니다. 재귀를 효과적으로 사용하면 프로그램을 간결하고 효율성 좋게 작성할 수 있습니다. 재귀를 사용하는 대표적인 예로 양의 정수 곱을 구하는 팩토리얼(factorial) 문제가 있습니다. 팩토리얼은 양의 정수를 순서대로 곱한다는 의미로 순차 곱셈이라고도 합니다. 팩토리얼 n! 의 정의(n은 양의 정수)는 1) 0!=1 2) n>0이면 n!=nx(n-1)! #factorial.py factoial함수는 매개변수 n에 전달받은 값이 0보다 크면 n*factorial(n-1)의 값을 반환하고, 그렇지 않으면 1을 반환합니다. 파이썬에서는 팩토리얼 값을 구하는 표준 라이브러리로 math모듈에서 fa..
Python 재귀 알고리즘재귀(recursion)는 어떠한 이벤트에서 자기 자신을 포함하고 다시 자기 자신을 이용하여 정의되는 경우를 의미합니다. 재귀를 효과적으로 사용하면 프로그램을 간결하고 효율성 좋게 작성할 수 있습니다. 재귀를 사용하는 대표적인 예로 양의 정수 곱을 구하는 팩토리얼(factorial) 문제가 있습니다. 팩토리얼은 양의 정수를 순서대로 곱한다는 의미로 순차 곱셈이라고도 합니다. 팩토리얼 n! 의 정의(n은 양의 정수)는 1) 0!=1 2) n>0이면 n!=nx(n-1)! #factorial.py factoial함수는 매개변수 n에 전달받은 값이 0보다 크면 n*factorial(n-1)의 값을 반환하고, 그렇지 않으면 1을 반환합니다. 파이썬에서는 팩토리얼 값을 구하는 표준 라이브러리로 math모듈에서 fa..
2021.08.10 -
스택(stack)은 데이터를 임시 저장할 때 사용하는 자료구조로, 데이터의 입력과 출력 순서는 LIFO 방식입니다. 데이터를 넣는 작업을 푸시(push), 데이터를 꺼내는 작업을 팝(pop), 푸시와 팝이 이뤄지는 윗부분을 꼭대기(top)이라 하며 아랫부분을 바닥(bottom)이라고 합니다. 스택 배열은 stk, 푸시한 데이터를 저장하는 스택 본체인 list형 배열입니다. 인덱스가 0인 원소를 스택의 바닥이라고 하고, 가장 먼저 푸시하여 데이터를 저장하는 곳은 stk[0]입니다. 스택 크기는 capacity, 스택의 최대 크기를 나타내는 int형 정수이고 이 값은 배열 stk의 원소 수인 len(stk)와 일치합니다. 스택 포인터는 ptr, 스택에 쌓여 있는 데이터의 개수를 나타내는 정숫값을..
Python Stack,Queue스택(stack)은 데이터를 임시 저장할 때 사용하는 자료구조로, 데이터의 입력과 출력 순서는 LIFO 방식입니다. 데이터를 넣는 작업을 푸시(push), 데이터를 꺼내는 작업을 팝(pop), 푸시와 팝이 이뤄지는 윗부분을 꼭대기(top)이라 하며 아랫부분을 바닥(bottom)이라고 합니다. 스택 배열은 stk, 푸시한 데이터를 저장하는 스택 본체인 list형 배열입니다. 인덱스가 0인 원소를 스택의 바닥이라고 하고, 가장 먼저 푸시하여 데이터를 저장하는 곳은 stk[0]입니다. 스택 크기는 capacity, 스택의 최대 크기를 나타내는 int형 정수이고 이 값은 배열 stk의 원소 수인 len(stk)와 일치합니다. 스택 포인터는 ptr, 스택에 쌓여 있는 데이터의 개수를 나타내는 정숫값을..
2021.08.08 -
선형 검색이란(Linear search) 직선 모양으로 늘어선 배열에서 검색하는 경우에 원하는 키값을 가진 원소를 찾을 때까지 맨 앞부터 스캔하여 순서대로 검색하는 알고리즘입니다. 배열 맨 앞부터 순서대로 원소를 스캔하는 원소의 값이 정해지지 않은 배열에서 검색할 때 사용하는 유일한 방법이다. #ssearch_while.py for i in range(len(a)): 이진 검색(binary search)은 원소가 오름차순이나 내림차순으로 정렬된 배열에서 좀 더 효율적으로 검색할 수 있는 알고리즘입니다. 이진 검색 범위는 맨 앞, 맨 끝, 중앙의 인덱스를 각각 pl, pr, pc라고 한다면 값은 0, n-1, (n-1)//2로 초기화시킵니다. 하나씩 이동하여 검색하는 선형 검색과 달리 주..
Python 검색 알고리즘선형 검색이란(Linear search) 직선 모양으로 늘어선 배열에서 검색하는 경우에 원하는 키값을 가진 원소를 찾을 때까지 맨 앞부터 스캔하여 순서대로 검색하는 알고리즘입니다. 배열 맨 앞부터 순서대로 원소를 스캔하는 원소의 값이 정해지지 않은 배열에서 검색할 때 사용하는 유일한 방법이다. #ssearch_while.py for i in range(len(a)): 이진 검색(binary search)은 원소가 오름차순이나 내림차순으로 정렬된 배열에서 좀 더 효율적으로 검색할 수 있는 알고리즘입니다. 이진 검색 범위는 맨 앞, 맨 끝, 중앙의 인덱스를 각각 pl, pr, pc라고 한다면 값은 0, n-1, (n-1)//2로 초기화시킵니다. 하나씩 이동하여 검색하는 선형 검색과 달리 주..
2021.08.07