전체 글 410

2022 하반기 현대자동차 CCS서버개발팀 백엔드 합격 후기

1. 서류 준비 현대자동차라는 회사는 사실 서류에서 엄청나게 사람을 거르는 것 같다. 2022 하반기 채용은 팀별 지원이었기 때문에 해당 팀에의 기준이 맞는지가 중요하다고 생각한다. 그리고 "서류에서 엄청 떨어짐" + "팀의 기준이 확실함"에 비해, 자소서의 항목은 그리 많은 편이 아니기에 자신이 했던 경험을 이에 잘 녹여내는 것이 중요할 것 같다. 나의 경우에는 이전에 짧은 기간 동안 IT회사에 근무했던 경험과 여러 개발 동아리에서의 공부, 개인적으로 운영하는 블로그와 Git계정을 첨부하였고 이외에도 자소서 항목 중간에 Notion으로 작성한 개인 포트폴리오를 첨부하였다. 자소서 항목만 사용하는 것이 아니라 이외에도 여러 방법을 통해 자신의 스펙이나 경험을 보여주는 것이 주요할 것이라 생각한다. 추가로..

기타/일상 2023.11.15

Spring 기본(IoC, DI, Bean)

IoC 컨테이너 Inversion of Controll 말하자면 제어의 역전 이라는 것이다. 그래서 그게 뭔데? 라고 하면 말하자면 "주도권을 뺴앗겨서, 그 주도권이 Spring에게 있다."는 뜻이다. 예를 들어 Class 설계도 Object 실체화가 가능한 것 예를 들어 abstract class처럼 실제로 존재하지 않는 것들은 Object가 될 수 없다. Instance 실체화 된 것 이런 3개에 대하여 생각해 보았을 때에 보통은 java에서 Public void MakeHandsomeMan() { Ryoochan ryoochan = new Ryoochan(); }이런 식으로 직접 heap영역에 만들었을 것이다. 그러면 MakeHandsomeMan 에서만 ryoochan이 존재하고, 다른 곳에서는 사..

Kafka 아는척하기 강의 정리

-> https://www.youtube.com/watch?v=xqrIDHbGjOY&t=4s 카프카를 공부해보기 위해 찾아보다가 정말 좋은 강의가 있어 이론에 대한 기초를 알기 위해 보고 정리해 보았다. 데이터 스트리밍 및 이벤트 기반 데이터 파이프라인을 위한 메시지 큐 시스템. 기본 모양 카프카 클러스터 메세지를 저장하는 저장소 하나의 카프카 클러스터는 여러개의 브로커로 구성된다. 각 브로커는 메세지를 나눠서 저장하고(이중화 처리 / 장애시 대체 등등도 여기서 한다) 한다. 주키퍼는 클러스터를 관리하는데에 쓰인다. 프로듀서 카프카 클러스터에 메세지를 보낸다. 컨슈머 메세지를 카프카에서 읽어오는 역할을 한다. 토픽과 파티션 토픽 메시지를 구분하는 단위 파일시스템의 폴더와 유사 프로듀서가 메시지를 카프카에..

이론 정리 2023.11.08

스트림 활용법

정리 스트림을 활용하는 방법에 관한 내용인데, 사실 이 부분은 어느 정도 알고 있기 때문에 정리하고자 한다. 이전에서 보았듯, 스트림은 내부 반복 뿐 아니라 코드를 병렬로 실행할지 여부를 알고 있다. 그래서 내부적으로 다양한 최적화가 가능하다. 필터링 프레디케이트 필터링 (filter) 프레디케이트를 사용해서 필터핑을 한다. 고유 요소 필터링 (distinct) 이름에서 알 수 있듯, 중복된 값을 제거하는것 객체의 Equals, HashCode를 통해 진행한다. 슬라이싱 요소의 선택이나 스킵 프레디케이트 활용 슬라이싱 Takewhile predicate결과값 이외는 모두 버리는 연산 즉, 결과값이 TRUE일 때까지는 값을 가져오지만 false가 되는 순간 스트림이 중지되고 반환 filter와의 차이점은 ..

이론 정리/java 2023.11.04

레디스를 로컬이 아닌 외부에 두는 이유

레디스를 로컬이 아닌 외부에 두는 이유 보통 우리가 공부할 때에는 레디스를 로컬에서 실행한다. 근데 회사를 가면 열에 아홉은 외부 레디스를 쓸 것이다. 로컬에서 실행할때 얻을 수 있는 장점은 빠른 속도 외부 레디스의 경우 통신 과정이 필요하므로 레이턴시가 걸리게 된다. 개발 및 테스트 개발 환경에서의 접근과 설정, 테스트가 용이하다. 정도일 것이다. 단점은 무엇일까?? 어쩌면 뻔하다고 생각될 수 있지만 다음과 같다. 데이터 손상 로컬에 레디스가 존재하는 경우 데이터가 손실될 염려가 더 크다. ex) 서버가 중단되는 경우 데이터의 손상 또 외부에 두게 되면 Redis자체적으로 제공되는 스냅샷을 백업하거나 디스크 로그에 저장하는 등등을 통해 데이터를 조금 더 편하게 저장 가능하다. 확장성 결국 로컬 컴퓨터에..

MySQL 페이징 해보자(feat offset, infinite scroll)

보통 개발할 때에 반드시 공부하고 적용하는게 페이징일 것 같다. 그리고 아마... 처음에는 offset limit을 써서 적용을 할 것 같다. 이 offset limit에 대해, 그리고 offset limit의 문제점에 대해, 해결 방안에 대해 써보려고 한다. 일단은 간단한 테스트를 위해 CREATE TABLE board ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, heart INT DEFAULT 0 );이런 테이..

스트림 소개

정리 스트림과 컬렉션의 차이가 뭘까? 사실 회사에서 스트림을 쓰고 있는데 사용하면서도 이게 컬렉션보다 보기 편하고 쓰기 편하군ㅇㅇ 이정도 감상이었는데 이번에 확실히 감이 잡히더라 스트림 시작 여기서 제일 인상깊었고, 컬렉션과의 차이에 대해 쉽게 접근할 수 있었던게, 컬렉션의 주제는 데이터고 스트림의 주제는 계산 이라는 점이었다. 말하자면 컬렉션은 요소 저장 및 접근, 스트림은 그걸 가지고 계산하는 것이 주가 된다는 것이다. 그리고 스트림이 가진 두가지 중요 특징이 파이프라이닝 대부분의 스트림 연산은 스트림 연산끼리 연결해서 커다란 파이프라인을 구성할 수 있도록 스트림 자신을 반환함 lazy(결과값이 필요할 때에 계산하도록... 그니까 알아서 스트림의 중간/최종 연산을 통해 안쓸거는 안쓰게 하는 최적화 같..

이론 정리/java 2023.09.30

채널(channel), 컨텍스트(Context)

채널(channel), 컨텍스트(Context) 이전에 고루틴을 나누는 방법을 보았는데, 동시성을 제어하는 방법들을 살펴봤다. 그리고 거기서 역할을 나누는 것이 있었고... 이 때에 쓰이는게 채널이다. 채널 : 고루틴끼리 메세지를 전달할 수 있는 메세지 큐 데이터를 FIFO로 넣고 -> 빼고 이렇게 하는거임 이거 다른말로 Thread-safe Queue이다. 채널의 크기 기본 크기 0 처음 만들면 크기가 0으로 생성된다. 그리고 make(chan int, 20) 이런 식으로 크기를 정해줄 수 있다(이러면 20개짜리 크기) 이거 그래서 채널 만들어놓고 데이터 넣은 다음에 안빼주면 무한히 대기하게 된다ㄷㄷ 이런것을 좀비 고루틴, 록은 고루틴 릭이라고 하는데(채널을 닫아주지 않아 무한 대기를 하는 고루틴) 이..

고루틴(goRoutine)

고루틴(goRoutine) 쓰레드 먼저 쓰레드는 실행 흐름을 의미. 프로그램은 사실 기계어 명령의 다발인데, 이게 로드되면 메모리로 올라가게 된다. CPU는 이 명령어를 실행하는 주체이고 그냥 연산해서 결과를 보내주는 녀석이다. 그래서 이제 원래는 하나의 CPU가 이 명령어의 다발(쓰레드)를 실행해 주었다. 멀티 쓰레드 근데 이제 멀티쓰레드 어쩌고를 들어본적이 있을텐데, 그거는 코어가 빠르게 쓰레드를 교체하게 된다. (실행 흐름이 여러개가 돌아감) 이게 어떻게 가능할까? 각 쓰레드는 자신만의 IP포인트가 있다. CPU가 각 IP포인트에 있는 명령을 수행한다. 그러다가 다음 쓰레드의 IP포인트에서부터 증가하면서 수행한다. 그러고 또 다음 쓰레드를 찾아간다. 그니까 사실 동시에라기 보다는 각 쓰레드의 명령을..

공부한거를 정리하는 습관을 들이려고요

그동안 공부한거를 블로그에 올리거나 했는데... 이게 내용을 정리해서 막 올리려고 하니까 생각보다 쓰는게 귀찮다. 책을 봐서 그 내용을 내꺼로 만들고, 궁금한 점 등을 정리하면 되는데 지금은 그게 아니라 걍 요약본인 느낌?? 앞으로는 책을 읽으면서 궁금했거나 / 이해가 안갔거나 / 내 상황에 맞춰서 내용을 정리하고 간단하게 노션등에 정리해보려고 한다. 화이팅! 해야지

기타/일상 2023.08.27