분류 전체보기 141

[생각들] 개발자에 관하여...

본 포스팅은 22년 12월에 제 Velog에 작성한 글입니다. 이것저것 느낀점과 알게된 것들 나의 부족한 부분을 인식하고 개선해나가는 태도를 가지자 나로부터 해결해나가자. 변명하지 않는다. 성장하기 위해 노력하는 자세를 가진다. 자기 주도적으로 환경을 개선하고 문제를 해결하는 개발자가 되자 클린코드를 구현하는 연습을 한다. 클린코드를 구현하는 역량을 기르자 참 좋은 글 개발자의 이력서를 예로 든다면 '이런 기술을 썼고 이렇게 처리했다.' 가 99% 정도다. 그 와중에 '그 결과는 이랬다'라고 적어주신 1% 만이 면접이 주어진다.

생각들 2024.02.04

[Java] String, StringBuffer, StringBuilder

String, StringBuffer, StringBuilder 분류 String StringBuffer StringBuilder 변경 Immutable (불변) Mutable (가변) Mutable 동기화 Synchronized 가능 (Thread-safe) Synchronized 불가능 1. String 클래스의 특징 (객체 생성 방법에 따른 차이) String은 기본형(int, floa, char 등)과는 다르고, 첫 글자가 대문자로 시작하는 클래스이다. 1. new 연산을 통해 생성된 인스턴스의 메모리 공간은 변하지 않음 (Immutable) 값이 같은 String은 String Pool 내에서 String 객체를 공유 // 1. String s1 = "Hello"; // 2. String s2 ..

CS/Java (CS) 2024.02.04

[Network] 웹페이지 요청에 대한 처리

갑자기 급 궁금해져서 전공책을 뒤적거려 봤다. (나의 마지막 발악이랄까) 그림 6.32는 학생 Bob이 학교의 이더넷 스위치에 랩톱을 연결하고 웹 페이지(www.google.com)를 다운로드하는 것을 보여준다. 💡 이렇게 단순한 요청을 처리하는 데 많은 것들이 "아래에서" 진행되고 있다! ✔️ 시작하기: DHCP, UDP, IP 그리고 이더넷 그림 6.32처럼 Bob은 랩톱을 켠 후, 학교 이더넷 스위치(학교 라우터에 연결되어 있음)에 연결되어 있는 이더넷 케이블에 연결한다. (이 예제에서 학교 라우터는 ISP com-cast.net에 연결되어 있고, comcast.net은 이 학교에 DNS 서비스를 제공하며, DNS 서버는 학교 네트워크가 아닌 콤캐스트(Comcast) 네트워크에 있다.) (DHCP ..

CS/Network 2023.11.08

[Java] 객체지향 프로그래밍 (OOP)

0. 객체지향 프로그래밍(OOP)이란? 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 '객체'를 만들고, 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 💡 객체란? → 객체란 하나의 역할을 수행하는 '메소드와 변수(데이터)'의 묶음 ※ 참고 : OOP란? → Object-Oriented Programming 1. 객체지향의 장단점 ➕ 장점 ▶ 코드 재사용이 용이 남이 만든 클래스를 가져와서 이용할 수 있고 상속을 통해 확장해서 사용할 수 있음. ▶ 유지보수가 쉬움 절차 지향 프로그래밍에서는 코드를 수정해야할 때 일일이 찾아 수정해야하는 반면, 객체 지향 프로그래밍에서는 수정해야 할 부분이 클래스 내부에 멤버 변수 혹은 메서드로 존..

CS/Java (CS) 2023.11.07

[Java] 오토 박싱 & 오토 언박싱

✔️ 오토 박싱 & 오토 언박싱 자바에는 기본 타입(primitive type)과 Wrapper 클래스가 존재한다. 기본 타입 (primitive type) : stack 에 값을 저장 정수 타입(byte, short, int, long) 소수 타입(float, double) bool 타입(boolean) 문자 타입(char) Wrapper 클래스 : stack 에 주소를 저장하고 heap 에서 값을 참조 정수 타입(Byte, Short, Integer, Long) 소수 타입(Float, Double) bool 타입(Boolean) 문자 타입(Character) 값 비교에는 equals를 사용합니다. ==는 인스턴스의 주소비교에 사용 ✔️ 박싱 기본 타입 데이터에 대응하는 Wrapper 클래스로 만드는 ..

CS/Java (CS) 2023.11.07

객체, 설계 (중요한 건, 꺾였는데도 그냥 하는 마음)

(지금 내 심정.. 지푸라기라도 잡고싶다. 잡을 지푸라기라도 남아있지 않다는 게 문제지만) 중요한 건, 꺾이지 않는 마음? ㄴㄴ 꺾였는데도 그냥 하는 마음이다. 안녕하세요. 오늘은 객체의 설계에 대해 학습할 겁니다. 먼저 들어가기 전, 기억에 남는 구절이 있네요. 이론보다 실무가 먼저다. 어떤 분야를 막론하고, 이론을 정립할 수 없는 초기에는 실무가 먼저 급속한 발전을 이룬다. 프로그래밍을 통해 개념과 이론을 배우는 것이 개념과 이론을 통해 프로그래밍을 배우는 것보다 더 훌륭한 학습 방법이라고 생각한다. 개발자는 구체적인 코드를 만지며 손을 더럽힐 때 가장 많은 것을 얻어가는 존재다. ✔️ 변경에 취약한 코드 💡 객체 사이의 의존성(dependency)과 관련된 문제다. 의존성은 변경에 대한 영향을 암시..

객체와 자료 구조

안녕하세요. 오늘은 Clean Code의 '객체와 자료 구조'에 대해 학습할 겁니다. 객체를 추상화하고... 이러한 과정들이 어렵게 느껴집니다. (객체지향은 파면 팔 수록 신세계지만, 참 어렵네요) ✔️ 들어가기 전 자료 / 객체 객체는 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개한다. 자료 구조는 자료를 그대로 공개하며 별다른 함수를 제공하지 않는다. ✔️ 자료 추상화 💡 변수를 private으로 하는 이유가 있다. → 변수에 의존하지 않게 만들고 싶고, → 변수 타입이나 구현을 맘대로 바꾸고 싶기 때문이다. ❓ 근데 왜, get(조회) 함수와 set(설정)함수를 당연하게 public해서 private 변수를 외부에 노출하는 것일까? 다음 두 클래스의 차이를 비교해보자. 두 클래스 모두 2차..

내가 할 수 있는 것은

주절주절 글. 요즘 생각이 많다. 어디서부터 글을 써야 할지도 모르겠다. 다 쓰기엔 그간 내가 경험하고 느낀 것들이 너무 많다. 요즘 좀 많이 힘들다. 원래 힘든 거 말 안 하는 성격이라 아무도 나를 모르고, 아무도 안 보는 블로그에라도 써본다. 지금 쓰는 이 주절주절이 가까운 미래의 내가 봤을 때 흑역사가 되었으면 좋겠다. 내가 고등학교 때 마음속에 새기고 다녔던 말이 있다. 안광지배철 眼光紙背撤 '눈빛이 종이의 뒤까지 꿰뚫어본다'는 뜻이다. 내가 좋아했던 한석원 수학 강사님이 하셨던 말씀이다. 수학 문제를 풀다가 답이 도저히 나오지 않을 때, 그냥 뚫어져라 문제만 보고 있었지. 그러면 어느샌가 풀이가 떠오를 때가 있었다. 누군가가 나에게 '나의 노력을 믿고 기다리라'는 말을 해주는 것 같아 그냥 좋았..

잡담 2023.04.13