분류 전체보기 193

[Clean Code/클린 코드] - 객체와 자료구조

Chapter.6 객체와 자료구조 💡 이번 CHAPTER에서는 객체와 자료구조에 대한 이야기를 하고 있습니다. 먼저 변수를 Private(비공개)로 만드는 이유를 “남들이 변수에 의존하지 않게 만들고 싶어서”라고 이야기 하고 있습니다.여기서 곰곰히 생각해보았습니다. 왜 변수를 Private으로 만드는가?저는 여기서 떠오르는 키워드가 정보은닉(Data hiding) 밖에 없었습니다.접근을 제한하기 위해서 ( Access Modifier )Public 은 외부에서 접근 가능, Private는 외부에서 접근 불가능코드로 간단히 이해해보겠습니다.public class Test{ public static void main(String[] args) { Car car = new Ca..

책 읽기 2023.06.18

[Clean Code/클린 코드] - 형식 맞추기

예시를 이용한 형식 이해하기들여쓰기5장 형식 맞추기개발은 혼자 하는 것이 아닌, 여러 사람이 진행합니다. 그래서 형식을 논의하고 다 같이 맞추는 것이 매우 중요합니다. 프로젝트의 전반적인 완성도는 사전에 협의된 형식에서부터 시작합니다. 팀 단위로 약속한 형식을 지키는 것이 코드의 품질을 결정하고 향후 Next Step으로 나아가기도 훨씬 수월합니다. 그래서 코드의 형식을 맞춤으로써 우리는 상대방과 의사소통하며 원활하게 맡은 업무를 진행할 수 있습니다. 예시를 이용한 형식 이해하기우리는 코드를 작성하거나, 읽을 때 TOP에서 BOTTOM으로 이동하고 있으며, IDE 내부에 있는 형식을 일반적으로 활용하고 있습니다.  위 코드를 살펴보면 저자가 강조하는 형식이 잘 지켜짐을 확인할 수 있습니다.신문 기사처럼 ..

책 읽기 2023.06.04

[Clean Code/클린 코드] - 주석

목차서론주석은 양날의 검? 저자가 말하는 좋은, 나쁜 주석이란 무엇일까? 4장 주석서론주석이라는 chapter를 읽으면서 주석이 왜 필요한지에 대해 생각해보았습니다. 개발자가 작성하는 코드는 개발자의 배경과 경험, 지식 등을 반영하여 탄생합니다. 그래서 개인이 작성한 코드는 제 각각일 것입니다. 이러한 제 각각의 코드가 하나의 프로그램에 합해진 형태로 존재하는데, 만약 작성자에 비해 경험과 수준이 부족하거나, 다른 협력자들이 코드만 보고 작성자의 의도를 바로 이해할 수 있을까요? 아마 이해하는데 적지않은 시간이 소요되거나, 추가적인 설명 및 잘못된 네이밍으로 코드들은 직관적이지 못할 수 있습니다. 이럴 때 주석은 큰 힘을 발휘합니다. 일반적으로 주석은 작성한 코드에 타인이 이해하기 어렵거나, 해당 로직이..

책 읽기 2023.06.04

[Clean Code/클린 코드] - 함수

3장 함수 chapter에서 가장 중요한 내용은 작게 만들어라, 그리고 한 가지만 해라" 입니다 1. 작게 만들어라, 그리고 한 가지만 해라public static String renderPageWithSetupsAndTearDowns(PageData pageData, boolean isSuite) throws Excetpion{boolean isTestPage = pageData.hasAttribute("test"); if(isTestPage){ WikiPAge testPage = pageData.getWikiPage(); StringBuffer newPageContent = new StringBuffer(); includeSetupPages(testPage, newPageContent, isSu..

책 읽기 2023.05.29

[Clean Code/클린 코드] - 의미있는 이름

해당 chapter에서 가장 강조하는 바는 “의미있는 이름”입니다. 좋은 코드를 만들어 내기 위해서 우리는 하루에 최소 2번은 고민합니다. 왜 좋은 코드를 만들어 내기 위해 고민할까요? 과연 그럼 좋은 코드란 무엇일까요?? 우리는 이 문제의 답을 이미 알고 있습니다. 좋은 코드가 필요한 이유는 다음과 같습니다.향후 제 3자가, 혹은 작성자가 유지 보수를 편히 할 수 있게 하고, 잘못된 이름에서 발생하는 Side Effect를 고려빠르게 변화는 비즈니스 영역에 대응하기 위해서 등등 이러한 문제점을 해결하기 위해 우리는 좋은 코드를 만들도록 노력합니다.그럼 우리가 말하는 좋은코드란 무엇일까요? 흔히 말하는 좋은 코드는 가독성도 좋아야 하고, 변경도 쉬워야 하고, 재사용성이 높고, 효율적인 코드라고 알고 있을..

책 읽기 2023.05.29

기술 면접 스터디 9회차 -( RDB와 NoSQL, 병렬 프로그래밍 )

목차 1. RDB와 NoSQL은 무엇인가요? 차이점 또는 장단점 위주로 설명해주세요. 2. 병렬 프로그래밍에 대해 설명해주세요 1. RDB와 NoSQL은 무엇인가요? 차이점 또는 장단점 위주로 설명해주세요. 1. RDB(Relation DataBase, RDB)란? RDB(Relation DataBase)는 관계형 데이터베이스 입니다. 행과 열을 이용해서 데이터를 저장하고, 공간에 형식이 정해져 있습니다. RDB는 구조화된 테이블을 가지고 있으며, 객체를 이용해 데이터베이스에 저장합니다. 그래서 사전에 데이터베이스 스키마가 정의되어 있어야 합니다. 또한 객체 간의 관계를 이용해 프로그래밍을 구성하는데, 테이블 역시 객체 간의 키를 이용해 테이블을 연결해서 사용합니다. 2. NoSQL(Not Only SQ..

기술 면접 스터디 - 8회차 ( 시간 복잡도와 공간복잡도, 오버라이딩, 오버로딩)

목차 1. 시간복잡도와 공간복잡도란? 중요성까지 2. 오버라이딩과 오버로딩의 차이점 1. 시간복잡도와 공간복잡도란? 중요성까지 복잡도라는 개념은 성능에 대한 평가의 척도입니다. 그래서 시간 복잡도 같은 경우엔 말 그대로 얼마나 수행하는지, 즉 시간의 관점에서 표기하는 방법이고, 공간 복잡도는 얼마나 메모리 공간을 사용하는지 즉 물리적인 관점에서 보는 방법입니다. 1. 시간 복잡도( Time Complexity ) 시간복잡도는 실행 환경에 따라 다르게 측정되기에 연산의 실행 횟수로 수행 시간을 평가합니다. 시간복잡도는 3가지 case로 나타냅니다 1. 최선의 경우 (Best Case) 최선의 경우엔 빅 오메가 표기법을 사용하고, 최선의 시나리오를 의미합니다. ( 가장 좋은 케이스 ) 2. 최악의 경우 (W..

기술 면접 스터디 7회차 - ( Stack, Queue, Array, LinkedList, 절차지향, 객체지향, 함수형 프로그래밍)

목차 1. Stack과 Queue 그리고 Array와 Linked List 자료구조에 대해 말씀해주시고 차이점에 대해 설명해주세요. 2. 절차지향 / 객체지향 / 함수형 프로그래밍이란 무엇이고 차이점은 무엇인가? 1. Stack과 Queue 그리고 Array와 Linked List 자료구조에 대해 말씀해주시고 차이점에 대해 설명해주세요. 1. 스택(Stack)과 큐(Queue)를 비교 스택(stack)과 큐(Queue)는 선형 자료구조입니다. 그러나 데이터의 입, 출력에 있어서 다른점이 있습니다. 스택(Stack)은 데이터를 쌓아 올린 형태의 자료구조입니다. 머릿속으로 구조를 생각해보았을 때, 한정된 공간에 계속해서 데이터를 쌓아 올리면 데이터를 삭제할 때, 가장 최근에 넣은 데이터부터 삭제할 수 있을 ..

기술 면접 스터디 6회차 - ( WAS와 Web Server, 트랜잭션 )

목차 0. 웹 서버는 어떻게 동작하나? 1. Was와 Web Server의 차이 2. 트랜잭션은 무엇인가? 0. 웹 서버는 어떻게 동작하나? 0. 클라이언트는 웹 브라우저를 통해 특정 사이트에 접속하기 위해 웹 서버에 요청을 보냅니다. 1. 요청을 접수한 웹 서버에서는 컨텐츠가 정적인지, 동적인지 판단합니다. 2. 정적 컨텐츠면 웹 서버 내부의 디스크에 있는 정보를 취득해 클라이언트로 보내고, 2.1 동적 컨텐츠면 스위치를 경유해 WAS 서버로 요청을 보냅니다. 3. WAS 에서는 요청을 접수하고 자신이 처리할 수 있는 지, DB 접속이 필요한지 판단합니다. 3.1 자신이 처리가 가능하면 요청을 바탕으로 처리 후 웹 서버(web server)로 결과를 파일 데이터로 반환합니다. 3.2 DB 접속이 필요하..

Reflection(리플렉션)이란?

리플렉션(Reflection)이란? 리플렉션은 JVM 메모리 내에 저장된 클래스의 정보를 가지고와서 필요한 정보를 사용하는 자바 API입니다. (여기서 말하는 클래스는 실행중인 자바 어플리케이션의 클래스와 인터페이스의 정보를 가진 클래스) JVM에 의해 클래스가 자동으로 생성되고, 이 Class를 가지고 오는 방법은 다음과 같습니다. Class의 메서드 사용시 주의점은 다음과 같습니다. getMethods와 getDeclaredMethods를 구분할 것 이유는 getMethods같은경우엔 상위 클래스와 상위 인터페이스에서 상속한 메서드를 포함하여 pulblic인 메서드를 모두 거지고 옵니다. 그러나 getDeclaredMethods는 접근 제어자와 상관없이 상손한 메서드를 제외하고 직접 클레스에서 선언한..

Language/Java 2023.04.01