반응형

전체 글 121

[자바] java 기본 타입와 wapper(래퍼) 클래스, 박싱과 언박싱

자바에서 타입은 기본 타입과 wapper타입(클래스)로 나뉘게 됩니다. 이는 언뜻보면 비슷하지만 차이가 있으며 wrapper 클래스를 사용하므로서 더 객체지향적인 프로그래밍이 가능하다는 장점이 있습니다. wrapper 클래스란? 실제 값을 가지는 것이 아니고 그 값을 가리키는 주소 값을 가진 껍데기입니다. 기본 타입을 참조 타입으로 사용하려고 할 때 쓰이는게 wrapper 클래스입니다. 계란과 계란껍데기로 비유를 하면 계란이라는 기본 타입이 존재하고 이를 감싸는게 래퍼 클래스인 계란 껍데기입니다. 이를 통해 기본 타입을 객체로 사용할 수 있습니다. 굳이 왜 이렇게 사용할까요? 그건 밑에서 보겠습니다. wrapper 클래스의 특성 ==으로 값을 비교할 수 없습니다. 실제 값을 가지고 있는게 아닌 주소를 가..

자바&스프링 2023.04.12

[자바] java의 특징, 객체지향 언어의 특징

자바는 대표적인 객체지향언어이며 특히 한국에서 주 언어로 사용하는 비율이 굉장히 높습니다. 그래서 자바공화국이라는 말도 생겨났죠 그런 자바의 특징은 어떤 것들이 있는지 알아보겠습니다. 자바의 특징 - 객체지향 언어 - 플랫폼 독립적 - 자동 메모리 관리(가비지 컬렉터) 크게 이 3가지를 꼽을 수 있습니다. A)객체지향 언어 1. 캡슐화 : 관련된 데이터 및 메서드를 하나로 묶어 외부 접근을 제한하며, 이를 통해서 코드의 유지보수성을 높입니다. 2. 상속 : 부모 클래스의 속성을 자식 클래스가 물려받아 사용이 가능하며, 이를 통해 코드를 간결하게 할 수 있습니다. 3. 다형성 : 하나의 변수 혹은 메서드가 다양하게 동작 가능하며, 이를 통해 코드의 확장성 및 유연성을 높일 수 있습니다. 4. 추상화 : 현..

자바&스프링 2023.04.11

[읽을거리] chatgpt의 시대

래퍼런스) https://jojoldu.tistory.com/709 ChatGPT와 함께 춤을 최근 여러 개발 리더분들을 뵐 기회가 있어서 이런 저런 이야기를 나눴다. 그러다보면 공통적으로 하는 이야기가 ChatGPT 로 인한 개발자의 자리에 대한 것이다. 어떤 분들은 그간 시니어들이 설 jojoldu.tistory.com chatgpt가 등장하면서 정말 다방면으로 생산성이 올라간 것 같다. 그래서 이제는 정말 한 번이라도 해봤냐 안해봤냐의 차이가 크다고 느껴진다. 설계 단계의 시니어 레벨로 올라갔을 때도 물론 중요하지만 나처럼 극 주니어인 사람들에게는 사실 chatgpt가 있어도 머릿속에 들어있는 key값 자체가 적은 경우가 많다. chatgpt는 value를 뽑아내도록 도와주는데 어떠한 상황이 들이닥..

ETC/읽을거리 2023.04.11

[자바] java에서 자주 쓰이는 문자열 함수 10가지 indexOf, substring, replace 등

언어를 가장 처음 접할 때 문자열을 처리하는 함수들은 꽤 헷갈리곤 합니다. indexOf, substring 등 자주 쓰이지만 정리를 안하면 정확히 어떤 기능을 하는건지 헷갈리기 때문에 정리를 해봤습니다. IDE로 보는게 더 깔끔한거 같아서 사진위주로 올렸고, 혹시나 쓰실 수도 있기 때문에 복사 가능하도록 코드를 따로 남깁니다. /** 자바에서 자주 쓰이는 문자열 처리 함수 10가지 */ // 1. length() 문자열의 길이 반환 String str = "Hello I am good!"; int len = str.length(); // 9 // 2. substring(시작, 끝) 문자를 지정한 길이만큼 자름(시작점, 끝점) String str2 = "Hello I am good!"; String su..

자바&스프링 2023.04.08

[자바] java 가비지 컬렉터란? 장단점

자바 면접 질문에서 자주 등장하는 가비지 컬렉터에 대해서 간략하게 알아보겠습니다. a) 가비지 컬렉터란? 가비지 컬렉터는 자바에 존재하는 자동 메모리 관리 기능입니다. C언어와 같은 언어는 메모리를 직접 할당/해제 해야하기 때문에 잘 활용하면 매우 좋겠지만 잘 모른다면 메모리 낭비가 될 수 있습니다. 자바에서 가비지 컬렉터는 자동 메모리 할당, 해제를 담당하고 있기 때문에 이를 편리하게 도와줍니다. b) 장단점 장점 - 자동 메모리 관리 - 메모리 누수 방지 자동으로 메모리를 관리해주기 때문에 자동 메모리 관리와 이로 인한 메모리 누수 방지에 장점을 가지고 있습니다. 단점 - 성능 저하 - 예측 불가능한 지연 자동으로 해준다는건 그만큼 편하지만 가비지 컬렉터를 위한 자원이 소비된다는 것이기도 합니다. 또..

자바&스프링 2023.04.07

메뉴 줄여나가기

개발을 한 지 어느덧 7개월차가 되었습니다. 공부를 시작한지는 1년이 넘었는데 개발이 나한테 맞나? 싶던 시기도 있었고 재미를 느끼는게 맞나? 싶던 시기들 다양한 시기들이 있었지만 하다보면 재밌는 때가 있고 직업으로 삼는데 싫은 것보다 좋은 게 크다면 문제가 없다고 생각합니다. 하지만 요즘들어 곰곰히 생각해본 것중 하나가 바로 메뉴가 많다는 것입니다. 일을 하면서 다양한 걸 배우고 있고 개인 공부로도 보충을 하고 있지만 T자형 인재가 되지 않고 _ 언더바형 인재가 되어가는 느낌이랄까요 이렇게 많은 카테고리는 그걸 반증하는 듯 합니다. 이전 블로그를 폐쇄하고 기똥차게 새로 만들어 메뉴부터 잡고 갔는데 정작 쓰지도 못한게 수두룩합니다. 가장 자신있는 메뉴가 무엇인지 모르는데 메뉴가 다양한게 좋은게 있을까 싶..

생각정리 2023.04.05

[읽을거리] 자바 예외처리(Exception)의 유형

레퍼런스) https://ducktopia.tistory.com/85 Java 예외에는 어떤 유형이 있을까? 코딩을 하다 보면, 정말 수많은 예외와 마주치게 됩니다. 그러나 예외에는 어떤 종류가 있는지, 어떤 상황에서 예외가 발생하는지 자세히 들여다볼 기회가 없었습니다. 이번 포스팅에서는, 자바 ducktopia.tistory.com 예외처리를 잘해야 잘하는 개발자라는 얘기를 꽤 들어보았습니다. 하지만 코딩을 하기 급급해서 뭐가 예외인거지? 라는 생각이 스쳐 지나갔던 적이 꽤 있습니다. if문으로 감싸서 다른 케이스를 처리하는 경우도 포함되는가? 라는 생각도 해보고 말이죠(저만 했을수도..) 예외는 크게 두 가지로 나뉘게 됩니다. A) Checked Exception vs Unchecked Excepti..

ETC/읽을거리 2023.04.05

읽을거리 카테고리의 목적

이전 블로그에서 옮기면서 어느정도 노하우가 생겼다고 생각하면서 이런 카테고리는 있어야겠지? 라는 생각으로 여러 카테고리를 만들었습니다. 하지만 카테고리만 많을뿐 정작 채워줄 양질의 글을 발행하고 있지는 않았고 스쳐가는 정보가 많았습니다. 어떤 정보를 보고 괜찮다고 생각하면 여기저기 흩뿌려져 있고 사진도 사진첩을 찾아보면서 기억하는 스토리가 있듯 글에도 그런 공간이 필요하다고 생각했습니다. 그간 노션에 괜찮은 글들을 링크해놓기는 했지만 보관용 창고에 넣어놓기만 하는 느낌이었습니다. 체대 개발자 분이 운영하는 출퇴근길 개발방을 보면서 조금 더 잘 찾을 수 있는 곳을 생각해봐야 하는거 아닌가? 하다가 티스토리를 떠올리게 되었습니다. 추가로 간단하게 글을 읽을 당시 생각과 다시 찾아봤을 때 스스로 이해하기 좋은..

ETC/읽을거리 2023.04.05

[오류대처] TypeError: String.prototype.replaceAll called with a non-global RegExp argument

let regex = /00000000000(\d+)/ 위와 같은 코드를 사용하는데 정규식으로 특정 문자열을 변환하는 도중 String.prototype.replaceAll called with a non-global RegExp argument 이런 에러가 발생했습니다. 글로벌하지 않다는건 알겠는데 해당 변수는 블록스코프를 지키면서 선언되었기 때문에 뭐가 문제지? 하면서 공식문서를 참고했는데 전역변수로 설정을 따로 해줘야한다는걸 알았습니다. 매번 필요할 때 찾아보고 썼는데 이전에 작성된 코드에서 바로 문제점을 찾지 못해서 찾는데 시간이 다소 소요된 문제였습니다. gpt도 정말 명확한 답변을 해줍니다. let regex = /00000000000(\d+)/g; 전역 플래그를 붙여주면서 문제를 해결했습니다.

오류대처 2023.04.04

113. Path Sum II 정답 및 문제풀이 C++

이 문제는 이진트리가 주어지고 targetSum에 맞는 경로를 찾는 문제입니다. 경로를 구하는 문제의 경우 BFS, DFS 등을 이용하지만 최단거리를 구하는게 아닌 경우 DFS를 보통 활용하기 때문에 트리, 경로 라는 힌트로 DFS를 써야겠구나 정도는 먼저 떠올릴 수 있습니다. 사실 저는 한번에 풀지 못했고 풀이를 보면서도 많이 헷갈렸습니다. DFS 숙달이 아직 안되었다는 얘기인데 여러 풀이를 보면서 가장 괜찮은 방법이라고 할 만한 것을 찾았습니다. 포인트는 크게 다음과 같습니다. 1. 경로를 담기위한 path 벡터, 답변을 담기위한 2차원 벡터 v 2. path에 담아주고 targetSum 연산 3. 리프노드 인지 검증합니다. 4. 리프노드가 아닐경우 처리 // https://leetcode.com/p..

코테/문제풀이 2023.03.18