본문 바로가기

분류 전체보기

(89)
개발취업 관련 조언정리 전필*님 (게임개발)내가 원하는 회사뿐만아니라 다양한 회사를 지원해서 면접경험을 쌓는 것이 꽤 중요하다인터넷 상에서 남들이 하는 부정적인 이야기에 휩쓸리지 말아라, 어차피 본인이 판단해서 될 것은 된다눈을 너무 낮추지말고 시간이 걸리더라도 규모가 크고, 성장할 수 있는 곳으로 가라IT에서는 채용공고보다도 인적네트워크를 통해서 추천을 받고 면접을 보는 곳이 많다주니어라면 사수가 있는 곳을 가라회사를 판단하는 조건은 개발자를 대하는 문화, 면접때의 회사에 대한 인상, 내가 하게될 일이 어떤 일인지에 대해서 탐색한 후에 결정하는 방법 박재*님 (클라우드 엔지니어)채용공고에서 필요한 조건을 위주로 준비를 하고 이를 프로젝트에 녹여내는 것이 가장 빠른 길이다얼마나 바닥에서 시작하던간에 올라가고자하는 마음가짐이 있..
Redis (Redis작동법, Spring 연결) 레디스 DB의 디스크가 아닌 메모리에 저장하여 휘발성이 있지만 영속성 기능을 지원하기도 함. 안정성이 비교적 떨어지기 때문에주로 캐시서버로 사용됨.인덱스방식이 아니라 key-value방식으로 저장다양한 방식의 데이터타입 적용가능 (hash나 list같은 데이터 저장가능)tomcat과는 다르게 embedded방식이 아니라 OS내에 설치하여 별도의 서버로 동작한다.(micro service) 레디스 종류싱글인스턴스방식 센티넬, 클러스터방식 - 마스터 슬레이브 구조을 하여, 서버 한대가 죽더라도 다른 서버가 살아있으면 구동 가능하도록 구현 레디스 활용점1. 캐쉬서버로서 DB로의 직접접근을 최소화시킴2. 동기화 문제를 해결하기 위해서 DB의 Serializable을 대신해서 SpinLock을 구현 OS 내에 레..
매장 테이블 예약 서비스(1) 서비스 요구사항 및 설계 고려할 관점 나열(1) API 설계- 기능과 Input/ Output 명확화 : 정확한 input과 output이 산출되고 이것이 견고해야 변경이 적음- 데이터 validation : - 정책 및 예외 : 꼼꼼하게 예외처리를 할것 (2) 데이터베이스 설계- 테이블 정규화 : 정규화 원칙에 부합되도록 테이블을 설계- 인덱스 설정 : crud의 패턴을 고려하여 인덱스 종류 및 대상칼럼 설정 (3) 최적화 기술고려- 캐쉬 : 데이터베이스 CRUD 패턴을 확인하고 캐쉬 적용포인트 고려- 쓰레드 : 쓰레드는 현재 배우고 있는 중이므로 적용보류- 보안 : 보안도 적용보류 프로그램 요구사항 (주어짐)“매장을 방문할때 미리 방문 예약을 진행하는 기능"을 구현하고자 합니다. 위 예약을 받기 위해서는 “점장(매장의 관리자..
프로젝트 설계 및 문서화 IT비즈니스 프로세스  비즈니스 프로세스는 구체화정도에 따라서 사업 - 기획- 개발의 순서로 이루어진다. 회사의 주요 의사결정자들이 사업을 결정한다. (의사결정이 존재하기때문에 이에 따른 위계질서가 존재함) 사업방향이 결정되면 기획자들과 사업자들이 해당 시장에 대한 데이터를 모으고 논의를 하면서 사업의 구체화가 이루어진다. 사업이 충분히 구체화되면 기획단계로 넘어가고, 서비스의 객체와 기능, 범위, 프로세스 등을 정의한다. 기획단계가 마무리되면 개발자단계로 넘어가고 사업기획의 기술적 관점에서 가능여부를 검토하여 기획의 세부내용을 수정한다. 개발명세서검토 (은행계좌생성 예제)1.  기술스택 결정  개발자는 내부 개발자원을 감안하여 개발언어, 기술스택, DB종류, DBdrive 등을 결정한다. 2. 각 기능..
Java 쓰레드 관리 쓰레드 개념정립 스레드는 어떻게 생성되는가?   자바에서는 모든 것과 마찬가지로 스레드도 객체로 다룬다. 자바는 실행 시점에 `main` 이라는 이름의 스레드를 만들고 프로그램의 시작점인 `main()` 메서드를 실행한다.  스레드를 생성하는 코드는 main 스레드는 main 메서드 내에서 정의된 것처럼, 새로운 스레드 객체를 생성한 후 , 스레드의 start() 메서드를 시작한다. 그러면, JVM이 OS system call을 통해 새로운 스레드를 위한 별도의 스택 공간을 할당한다. 새로운 스레드는 이어서 스레드 인스턴스 내에 정의되어 있는 `run()` 메서드를 실행하여 정의된 작업을 실행한다. 여기까지가 스레드의 start() 동작이다. main 스레드는 새로운 스레드의 start() 메소드를 동작..
디자인패턴 디자인패턴 싱글톤패턴하나의 인스턴스만 사용되는 경우. 하나의 인스턴스가 사용되지 않는 경우에는 인스턴스의 멤버변수에 저장/입력된 값들이 다른 인스턴스에 공유되지 않는다.  이로인해서 예상한 데이터를 찾을 수 없어서 문제가 발생하기도 함.빌더패턴장점1 : Setter대신 빌더패턴을 사용하면, 한번 생성된 instance의 값은 변경되지 못하게 하여 thread safe를 확보할 수 있음장점2 : 순차적으로 field를 하나씩 설정할 수 있어서 readbility가 증진됨. 필요한 데이터만 설정할 수 있어서 유연성이 증가됨장점3 : 필요한 데이터만 설정할 수 있어서 유연성이 증가됨스태틱팩토리패턴  프록시패턴프록시 패턴의 핵심은 바로 인터페이스의 동일성을 유지함으로써, 클라이언트가 실제로 대리 객체를 사용하고..
특정기능 특화알고리즘 트라이(Trie) : 자연어 처리/문자열 검색트라이는 특정 문자열 집합의 접두사를 공유하는 방식으로 문자열 데이터를 저장하고 검색하는데 최적화되어 있습니다. 이 구조는 자동 완성, 스펠 체크, IP 라우팅(가장 긴 접두사 일치를 찾는 데 사용)과 같은 여러 애플리케이션에서 유용하게 사용됩니다.* 대안으로 sql문의 like연산자를 사용가능 (select * from company where name like "keyword%") 노드 구성: 트라이의 각 노드는 자식 노드를 가리키는 포인터 배열을 가지고 있습니다. 배열의 인덱스는 특정 문자를 나타내고, 각 인덱스 위치의 값은 해당 문자로 시작하는 서브트리를 가리킵니다. 노드는 일반적으로 해당 노드가 문자열의 끝인지를 나타내는 플래그도 포함합니다. 장점:문..
개발자로서 개인의 강점 1. 기술의 발전에 크게 관심이 있고 사용해보는 것을 좋아함 내 개발의 가장 큰 선생은 AI이다. 개념과 개념 간의 간극을 AI가 메꾸어 주었다. 필요에 따라서는 Computer Achitecture level에서까지 질문을 들어가기도 함.  2. 공부하는 자세  강사의 한두마디를 이해하기 위해서 하루를 꼬박 공부한 적이 많음. 의존성주입, 제어역전, 트랜잭션과 같은 키워드를 간단히 언급했을 때, 최소한 이것이 어떤 개념인지 이해하고 넘어가기 위해서 스스로 Depth있는 공부를 진행하고 넘어감. 그렇지 않으면 찝찝해서 넘어가질 못함. 그런 개념들을 그물망처럼 넓혀놓고 필요한 순간 해당 개념을 Indexing해서 더 깊은 공부를 통해서 기술을 사용함. -  index가 왜 zero에서 시작하는 지- tra..