[아이티센 AIE 부트캠프 1기] ITCEN 타워 탐방 Career Day
·
대외활동
2026.7.2 오늘은 교육장에서 나와 아이티센 본사를 탐방하는 날이다.말과 사진으로만 보고 들은 아이티센 타워를 직접 보고, 직원분들과 대화도 깊게 할 수 있는 날이라 많이 떨린다!부사장님의 특강, 그룹사별 특강이 있기 때문에 ITCEN에 대해 자세히 알 수 있어 기대되기도 한다.어떤 질문을 드릴지 고민이 많지만, 최대한 궁금한 것을 여쭙고 알고 싶어 미리 작성해 놨다.굉장히 동기부여가 되고, 행복한 시간이었기에 후기 글을 작성할 것이다! 버스 출발먼저 오전 수업을 들은 후에 회사에서 보내주신 버스를 타고 과천까지 이동할 예정이다.다들 단정히 입고 버스를 기다리는데 부푼 기대감이 느껴졌다.버스가 오자마자 다들 우와.. 오!!! 이런 반응이었다.왜냐하면 버스에 아이티센!이 적혀있고, 사진도 붙여있었기 ..
[Spring Boot] 조회와 수정의 분리(같이 했을 때 문제점과 리팩토링)
·
Java
공동구매 마감 로직 리팩토링 및 성능 개선기 개발을 하다 보면 종종 "돌아가니까 괜찮겠지?" 하고 넘어갔던 코드가 나중에 스노우볼이 되어 돌아오는 경험을 하게 됩니다.이번 프로젝트에서 '공동구매 목록 조회' 기능을 구현하며 겪었던 "조회 로직 내의 상태 변경"이라는 안티 패턴과,이를 스케줄러(Scheduler)를 통한 백그라운드 처리로 리팩토링하여 아키텍처를 개선한 과정을 공유하고자 합니다. 1. 문제 발생: "존재하지 않는 채팅방입니다"사용자의 동네를 기반으로 진행 중인 공동구매 목록을 보여주는 getGroupBuyings API를 개발하고 있었습니다. 이때 각 공구의 마감 시간(deadline)을 계산해 D-Day를 반환해야 했는데, 만약 조회 시점에 마감 시간이 지났다면 해당 공구의 상태를 CLOS..
[JDBC] JDBC의 배경 / JDBC 인터페이스와 메서드 / 동작원리
·
Java
JDBCJava 프로그램에서 DB 서버를 접속하여 데이터를 처리하는 기능을 구현하고자 할 때 사용되는 Java 기술 구성: JDBC API / JDBC Driver JDBC Driver특징: DB 서버마다 달라짐구성: 대부분 인터페이스로 구성 (DB마다 다르게 구현해야 하기 때문)배경: 여러 DB 서버에 알맞게 구현해줘야 하는데, 이 일을 개발자가 직접 하기 어려움해결 방안: 드라이버가 대신해 줌 → 자식 클래스를 만들어 객체를 대신 생성하여 사용할 팩토리 메서드가 모두 정의되어 있음결론: API로 구성된 JAVA와 달리, JDBC는 드라이버가 꼭 필요함사용법 및 주의사항:API에서 제공되는 메서드 호출예외처리 필수! → SQLException (try-catch 또는 throws)커넥션 반환 필수: 수..
[Java] JVM 메모리 구조로 보는 자바의 본질 / 객체지향의 특성별 예시
·
Java
자바를 공부하다 보면 수많은 문법과 규칙들을 마주하게 됩니다.처음에는 단순히 개념을 암기하기 바쁘지만, 그 안의 배경과 필요성을 들여다보면 이유 없는 규칙은 하나도 없다는 것을 깨닫게 됩니다.특히 개발자로서 견고하고 효율적인 코드를 설계하기 위해서는 암기식 문법이 아닌 '본질'을 이해해야 합니다.오늘은 자바가 어떻게 동작하는지 그 근본적인 원리부터 시작해, 객체지향의 4가지 특성이 가지는 진짜 의미를 정리해 보려 합니다. 자바는 왜 '컴파일+인터프리터' 언어일까? 그리고 혁신적인 JVM 메모리 구조 자바의 가장 큰 특징 중 하나는 컴파일과 인터프리터 방식을 혼합하여 사용한다는 점입니다.우리가 작성한 소스 코드(.java)는 먼저 컴파일러에 의해 바이트 코드(.class)로 변환됩니다.이 바이트 코드를 ..
[Java] 배열 / 2차원 배열 / 가변 배열
·
Java
배열생성만 할 때: new 데이터타입[크기]생성 시 기본값으로 구성(int = 0, boolean = false, …)ex) new int[10], new boolean[24]생성과 초기화를 동시에 할 때: new 데이터타입[ ] {요소1, 요소2, …}{요소1, 요소2, …}만 대입하는 것도 가능!변수 선언: 데이터타입[ ] 변수명, 데이터타입 변수명[ ]배열 변수는 데이터타입과 상관없이 4byte생성 과정 배열 객체 생성배열 변수 선언 후 객체 대입배열 요소에 기본값 주입 ( 요소 선언하지 않았을 때) for each문→ 배열, 컬렉션 구조일 때 사용읽기 전용(값에 의한 호출이기 때문에 값의 수정은 불가함) 2차원 배열선언 방법타입[ ][ ] 변수 이름;타입 변수 이름[ ][ ];타입[ ] 변수 이름..
[Java] println(char[ ] 배열명)에서 주소 값이 아닌 텍스트가 나오는 이유
·
Java
자바의 실제 JDK 소스 코드(내부 구현체)를 비교해 보면, 다른 함수들과 char[] 함수 사이에 중요한 차이가 딱 하나 있습니다.바로 String.valueOf()의 유무입니다. 요약- 다른 객체나 배열들은 String.valueOf()->toString()이 호출되며 주소값으로 변환함.- char[ ]은 전용 메서드를 통해 그 함정을 우회하여 I/O 스트림에 배열 자체로 전달되어 문자열처럼 변환되어 출력될 수 있음. 다른 배열(예: int[ ], double[ ])이 들어올 때println(int[]) 전용 메서드는 없기 때문에 가장 포괄적인 println(Object x)를 호출함.public void println(Object x) { String s = String.valueO..
[Java] 자바의 원칙 vs 편의성: 철학을 깬 복합 대입 연산자, char 배열 출력과 철학을 지킨 for-each문
·
Java
자바(Java)는 프로그래밍 언어 중에서도 상당히 보수적이고 원칙을 중시하는 언어지만,가끔 원칙보다 편의성을 선택한 문법을 발견했다.편의성을 선택한 계기가 그 기능의 목적과 유사하다는 점이 흥미로웠다. 왜 문법이 이렇게 정해졌는지 알 수 있기 때문이다. 자바의 개발 철학 1. 강력한 타입 안전성: "런타임 에러보다 컴파일 에러가 낫다"자바는 개발자가 실수할 여지를 컴파일 단계(코드를 작성하고 빌드하는 시점)에서 최대한 차단함.변수의 타입을 엄격하게 맞추고, 에러가 날 것 같은 코드는 컴파일러가 빨간 줄을 그어줌.(예: 강제 형변환, 예외 처리 등) 2. 하위 호환성: "과거의 코드를 버리지 않는다"자바는 10년, 20년 전에 짠 코드도 최신 자바 버전에서 무리 없이 돌아가도록 하는 것이 극도로 중요함...
[Java] while문 / 분기 처리-break, continue
·
Java
while문: 선 조건 확인 후 실행 반복문 -> 조건이 참일 때만 반복함형식: while(조건식) { 반복코드 }조건식: boolean타입무한 루프는 주로 break문과 함께 사용해 빠져나오는 조건을 적용함 분기(break, continue)break: 스위치문, 반복문에서만 사용 가능함continue: 반복문에서만 사용 가능함중첩된 반복문에서 한번에 빠져나가는 경우: 라벨로 빠져나갈 반복문 앞에 지정하고, 조건의 실행문에 break 라벨; 작성int result;unico: for(int dan = 1; dan = 30) break unico; System.out.print(dan + "x" + num + "=" + result + "\t"); } System.out.println();} co..