Category 124

Smart Encoder 프로젝트 후기

Smart Encoder 프로젝트는 새롭게 시작된 프로젝트로 라디오 라이브 생방송의 음성을 실시간으로 캡처해 mp3 파일로 변환하고, 운영서버에 FTP로 전송해 주는 Batch 시스템과 해당 프로세스를 한눈에 볼 수 있는 모니터링 시스템을 개발하는 프로젝트입니다😄 개요 Smart Encoder 프로젝트는 기존에 했던 기술 스택과 다르게 JPA를 사용했고, DB를 2개 사용하는데 MSSQL과 SQLite를 사용했습니다. Batch 시스템 또한 유지보수만 해왔던 터라 신규로 만드는 것은 처음이어서 프로젝트 설정부터 다소 난관이 있었지만 기간 내에 잘 마무리 해서 다행이었던 프로젝트입니다. 모니터링 시스템의 화면 단도 이번에 처음 사용해보는 Thymeleaf로 진행했습니다. 기존에 Jsp를 많이 사용했어서 화..

Project/Team 2023.04.18

Java 신입 개발자 면접 질문 리스트

오늘은 신입 개발자를 대상으로 한 면접 흐름과 예상질문 리스트를 주제로 포스팅하려 합니다. 주관적인 경험을 바탕으로 작성하는 부분들이 많기 때문에 참고만 해주세요😊 📗인사 관련 면접 대부분 개발 직군의 면접은 2:1이나 3:1로 면접을 진행합니다. 면접자들은 인사담당자, 개발 팀장, 임원들로 구성되며 각자 본인 업무에 해당하는 질문을 합니다. 제가 경험했던 면접들에서는 인사담당자님이 먼저 질문을 했습니다. Q. 오시는데 얼마큼 걸리세요? - 있는 그대로 말씀하시되, 만약 거리가 너무 멀다면 '1시간 조금 더 넘게 걸리는데 환승을 안 합니다'라는 긍정적인 멘트를 섞어주는게 좋을 것 같아요. 면접에 큰 영향을 끼치는 질문은 아니지만, 대게 처음 나오는 질문이기 때문에 좋은 인상을 남기는 게 좋습니다. 🌟Q...

국비지원&취업 2023.03.03

Java 알고리즘 모든 아나그램 찾기

오늘은 해쉬맵과 윈도우 미러링을 이용하여 주어진 단어 안에서 모든 아나그램을 찾는 문제를 풀어보려 합니다😄 개요 이번 문제의 핵심은 저번 포스팅과 마찬가지로 해쉬맵을 사용하는 방법과 윈도우 미러링 방식을 사용하여 시간복잡도를 해결하는 것이 관건일 것 같네요😀 Setting📙 public class AllAnagram { public static void main(String[] args) { AllAnagram T = new AllAnagram(); Scanner sc = new Scanner(System.in); String a = sc.next(); String b = sc.next(); System.out.println(T.solution(a,b)); } } 입력값으로는 두 단어가 주어집니다. 첫 ..

Algorithms 2023.02.18

Java 알고리즘 아나그램(해쉬) 풀이

오늘은 해쉬맵을 이용하여 주어지는 두 단어가 아나그램인지 판별하는 문제를 풀어보려고 합니다. 아나그램은 두 단어가 알파벳 나열 순서가 달라고 구성이 같을 때의 경우를 의미합니다😀 개요 이번 문제의 핵심은 서두에서 언급했듯이 해쉬맵의 기능들을 사용하는 것이 될 것 같네요😊 Setting📙 public class Anagram { public static void main(String[] args) { Anagram T = new Anagram(); Scanner sc = new Scanner(System.in); String a = sc.next(); String b = sc.next(); System.out.println(T.solution(a,b)); } } 입력값은 문제에 나와있는 것 처럼 두 단어가..

Algorithms 2023.02.16

Java 알고리즘 격자판 봉우리 개수

오늘은 배열을 이용하여 격자판의 봉우리 개수를 구하는 문제를 풀어보려고 합니다😀 개요 이번 문제는 이중 배열을 이용하는 방법과 각 격자에서 상하좌우를 확인하는 방법 총 2가지가 핵심이 될 것 같네요😊 Setting📙 public class Peak { public static void main(String[] args) { Peak T = new Peak(); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][] arr = new int[n][n]; for(int i = 0; i < n; ++i){ for(int j = 0; j < n; ++j){ arr[i][j] = sc.nextInt(); } } System.out.println(T...

Algorithms 2023.02.06

자바 ORM 표준 JPA 프로그래밍 - JPQL

이전 포스팅에서는 값 타입에 대해 알아보았다. 이번 포스팅은 객체지향 쿼리 언어 중에 JPA의 기본인 JPQL에 대한 포스팅을 진행하려 한다😊 개요 JPQL은 엔티티 객체를 대상으로 쿼리 하는 객체지향 쿼리 언어다. SQL을 추상화해서 특정 데이터베이스 SQL에 의존하지 않는 특징을 가지고 있다. 예제로 사용할 도메인 모델을 살펴보면 회원이 상품을 주문하는 다대다 관계임을 알 수 있다. 또한 Address는 임베디드 타입인데 이것은 값 타입으로 UML에서 스테레오 타입을 사용해 로 정의했다. ERD에서는 ORDERS 테이블에 포함되어 있다. 기본 문법과 쿼리 API📙 JPQL도 SQL과 비슷하게 SELECT, UPDATE, DELETE 문을 사용할 수 있다. 엔티티를 저장하는 INSERT문은 Entity..

Book Review 2023.01.17

Java 알고리즘 DFS 섬 개수 구하기

오늘은 DFS를 활용하여 입력받은 격자판에서 섬의 개수를 구하는 문제를 풀어보려고 합니다😊 개요 이번 문제의 핵심은 DFS 알고리즘 활용, 8가지 방향으로 이동하는 방법, 섬을 만났을 때 체크, 출발점 체크 총 4가지가 될 것 같네요😀 Setting📙 public class Island { static int result = 0, n; static int[] dx = {-1, -1, 0 ,1 ,1 ,1, 0, -1}; static int[] dy = {0 ,1 ,1 ,1, 0, -1, -1, -1}; public static void main(String[] args) { Island T = new Island(); Scanner sc = new Scanner(System.in); n = sc.nextI..

Algorithms 2023.01.16

Java 알고리즘 BFS 토마토 문제 풀이

오늘은 BFS를 활용하여 토마토 문제를 풀어보려 합니다. 토마토 문제는 근방에 익은 토마토가 있다면 하루가 지나 같이 익게 되고, 모든 토마토가 다 익을 때까지의 날짜 수를 구하는 문제입니다😄 개요 이 문제의 핵심은 BFS 알고리즘을 활용과 Queue의 원리, 여러 시작점에서 동시다발적으로 여러개의 토마토가 익는 부분, 상자의 상하좌우 확인 방법, 익은 토마토를 체크 총 5가지가 되겠네요😀 TomatoPoint📙 class TomatoPoint { public int x,y; TomatoPoint(int x, int y) { this.x = x; this.y = y; } } TomatoPoint 클래스는 상자판에서 행,열을 입력할 때 사용합니다. 근방에 익은 토마토에 의해 해당 토마토가 익을 때 큐에 쌓..

Algorithms 2023.01.13

자바 ORM 표준 JPA 프로그래밍 - 값 타입

이전 포스팅에서는 JPA의 프록시와 연관관계에 대해 알아보았다. 이번 포스팅에서는 JPA의 데이터 타입에 대해 포스팅하려 한다😀 개요 JPA의 데이터 타입을 가장 크게 분류하면 엔티티 타입과 값 타입으로 나눌 수 있다. 엔티티 타입은 @Entity로 정의하는 객체이고, 값 타입은 int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체를 말한다. 📌 엔티티 타입은 식별자를 통해 지속해서 추적할 수 있지만, 값 타입은 식별자가 없고 숫자나 문자같은 속성만 있으므로 추적할 수 없다. 쉽게 비유하면 엔티티 타입은 살아 있는 생물이고 값 타입은 단순한 수치 정보다. 기본값 타입📙 @Entity public class Member { @Id @GeneratedValue privat..

Book Review 2023.01.12