분류 전체보기82 ssafy 신한 해커톤 지원 결과부터 말하면 해커톤 본선 진출에 실패했지만, 경험이 흥미로워서 한번 포스팅해본다. 기획 배경 21세기 대한민국은 인구 감소와 고령화의 본격적인 가속화를 경험하고 있습니다. 이러한 현상이 점차 사회의 모습을 흔들고 있어 대안을 모색하는 것이 시급한 과제로 떠오르고 있습니다. 저희 “웨딩SOL루션”은 이 개발기획서를 통해 결혼에 대한 경제적 진입 장벽을 낮춰 인구 감소 문제에 대응할 수 있는 금융솔루션을 소개하고자 합니다. 통계청에 따르면 올 23년 2월 출생아가 1만 9939명으로 신고되었습니다. 2월 기준 1981년 이후 처음으로 출생아수 2만명 선이 붕괴된 현실입니다. 연초부터 2만명 고지가 무너졌기 때문에 합계 출산율이 역대 최저였던 지난해(0.78명)보다 출산율이 더 낮아질 것이라는 경고가 나오.. 개발일기 2023. 10. 12. 20. JSP 기본 객체 JSP는 9개의 내장 객체를 기본으로 가지고 있다. 아래는 그 종류와 설명에 대한 나열이다. 기본 객체 실제 타입 설명 기본 객체 실제 타입 설명 request javax(jakarta).servlet.http.HttpServletRequest 클라이언트의 요청정보 저장 response javax.servlet.http.HttpServletResponse 응답정보 저장 pageContext javax.servlet.jsp.PageContext JSP 페이지의 정보 저장 session javax.servlet.http.HttpSession HTTP 세션 정보 저장 application javax.servlet.ServletContext 웹 애플리케이션 정보 저장 out javax.servlet.jspJsp.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 10. 11. 19. Servlet과 JSP의 차이점 Servlet 서버에서 웹페이지를 동적으로 생성하거나 데이터 처리 수행을 위한 자바로 작성된 프로그램이다. servlet은 java 코드 안에 HTML 태그가 삽입된 자바 언어로 되어있다. import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public ThreeParams extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); printWriter out = response... 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 10. 10. [이슈 로그] com.mysql.jdbc.Driver와 com.mysql.cj.jdbc.Driver 스프링 서버와 mysql을 연동하기 위해 application.yml에 DB 정보를 다음과 같이 작성하였다. 서버 구동에는 크리티컬한 문제가 없지만 유독 불편하게 빨간색으로 눈에 띄는 한줄이 있다. Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary. "com.mysql.jdbc.Driver"가 deprecated 되었다고? "com.mysql.cj.jdbc.. 개발일기/이슈 로그 2023. 10. 10. 2. Chatbot 서비스 아키텍처 설정 웹 내에서 구현할 챗봇의 특징은 생각보다 간단하다. 1. 실시간성을 지원하지 않아도 된다. 챗봇 서버는 클라이언트에서 요청이 들어오면 이에 대한 적절한 응답을 Model 서버에서 받고 다시 Client server로 넘겨주는 1대1대화가 될 것이다. 사용자의 요청이 들어오면 응답이 나가는 구조이므로 실시간성을 지원하지 않아도 된다. 2. 채팅 내역을 저장하자. 좀 더 사용자 친화적인 서비스를 기획하기 위해서 채팅 내역을 저장하기로 결정했다. DB는 MySQL을 사용한다. 다만 로그인된 계정에 한해서 대화 내역을 30일간 저장하는 것으로 기준을 잡았다. 기준의 근거는 명확하지 않다. 실제 서비스가 된다면 개선되야겠지... 로그인되지 않은 사용자도 챗봇을 사용할 수 있지만, 이 때, 채팅 내역은 저장되지 않.. 카테고리 없음 2023. 10. 9. 18. Deep Copy vs Shallow Copy 알고리즘을 공부하며 깊은 복사(Deep Copy)와 얕은 복사(Shallow Copy), 이 둘의 차이점을 뼈저리게 느낀 JAVA 사용자가 꽤 많을 것이라 생각한다. 따라서 백 마디 말보다 코드 몇 줄이 더 효과적일 것이라는 생각으로 아래와 같은 코드를 작성하였다. List list = new ArrayList(); list.add(1); List copyList = list; copyList.add(2); System.out.println(list); System.out.println(copyList); /** * list : [1, 2] * copyList : [1, 2] */ 위와 같이 주소 값을 복사하는 의미로 Shallow Copy, 실제 값을 복사하는 의미로 Deep Copy를 구분하여 사용한.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 10. 5. 17. 자바 리플렉션(reflection)이란 무엇인가? 자바 가상 머신(JVM)은 클래스 정보를 클래스 로더를 통해 읽어와 해당 정보를 JVM 메모리에 올린다. 해당 클래스의 정보를 담은 Class 타입의 객체를 생성하여 메모리의 Heap 영역에 저장해 두게 된다. ava에서는 이렇게 만들어진 Class 타입의 객체를 통해 구체적인 클래스 타입을 알지 못해도 그 클래스의 메소드, 타입, 변수들에 접근할 수 있도록 하는 자바 API를 제공하게 된다. 저장된 클래스 정보는 마치 클래스를 거울 앞에 데려가 그 모습을 보여주는 것과 닮아, Reflection이라는 이름을 가지게 되었다. 한가지 특이한 점은 리플렉션은 접근 제어자와는 무관하게 클래스의 필드나 메서드를 호출할 수도 있다. 자바에 그런 것도 있었나? 사실 알게 모르게 우리는 Reflection을 사용하고.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 9. 26. 16.데몬 스레드는 무엇인가요? 멀티태스킹 운영체제에서 Daemon이란 “사용자가 직접 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 수행하는 프로그램”을 의미한다. 일반적으로 윈도우의 서비스나 네트워크 서비스 등을 처리하는 프로그램으로 이해할 수 있다. 🤔여담으로 Daemon의 유래는 과거 MAC 개발자들이 맥스웰의 도깨비 사고 실험(보이지 않는 곳에서 스스로 분자를 골라내는 일을 하는 도깨비)에서 영감을 얻어 도깨비, 악마라는 뜻의 Daemon을 사용했고, 유닉스 시스템이 이 용어를 채용하면서 굳어졌다 한다. 자바의 데몬 스레드 자바의 데몬 스레드도 위 설명과 유사하게 제어 없이도 백그라운드에서 동작하며 애플리케이션(Normal Thread)을 보조하는 역할을 수행하는 스레드이다. JVM이 가질 수 있는 쓰레드의 종류는 크게 N.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 9. 1. 15. 스레드와 프로세스 프로세스 일반적으로 디스크에 존재하는 “프로그램”을 실행시켜서 동작하게 만들면 하나의 “프로세스”가 프로그램의 인스턴스로 메모리에 올라간다. 이때 여러 프로그램을 실행시키는 것은 멀티 프로세스라고 한다. 우리가 컴퓨터를 하는데 보통 워드, 크롬, 웹엑스 등 여러 프로그램을 동시에 실행하는 것이 바로 멀티 프로세스이다. 하나의 프로세스는 내부에 논리적인 저장 공간으로 Code, Data, Stack, Heap 등의 자원과 여러 개의 스레드로 구성될 수 있다. 스레드는 프로세스의 자원을 이용해서 실제로 작업을 수행하는 역할을 한다. 따라서 모든 프로세스에는 최소한 하나의 스레드가 존재한다. 자바 JVM(Java Virtual Machine)은 주로 하나의 프로세스로 실행되며, 동시에 여러 작업을 진행하기 위.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 8. 31. 14. JAVA 병렬과 동시성 자바의 멀티스레드 환경과 동시성 이슈를 알아보기 위하여 몇 가지 개념을 정리해보고자 한다. 동시성 이슈 어떤 두 사건이 같은 시간에 일어날 때 동일한 데이터를 조작하기 때문에 예상했던 결과가 달라질 수 있는 상황이다. 개발에서 주의해야 흔하게 발생할 수 있는 이슈 중 하나가 바로 동시성 이슈다. 동시성(Cocurrency) 여러 작업이 동시에 발생하는 것처럼 보이기 위해 번갈아 가면서(Context Switching) 작업을 수행하는 것이 동시성이다. 겉에서 보기엔 여러 작업이 동시에 실행되고 있는 것처럼 보이지만 실제로는 빠른 시간에 하나씩 번갈아가면서 처리하고 있다. 따라서 동시성은 구현도, 디버깅도 어렵다. 동시성의 목적은 자원의 유휴 시간을 최소화하는 것이다. 컴퓨터가 작동 가능한 상황에서도 아무.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 8. 30. LINE 오픈챗 서버가 100배 급증하는 트래픽을 다루는 방법 - 본론2 서론에서 말했듯 LINE에서 활용하는 이벤트 기반 아키텍처의 개요는 아래와 같다. 🔥 오픈챗 서버에서는 메시지 전송과 메시지 리액션, 메시지 읽음 등과 같은 오픈챗 내 다양한 행위를 모두 이벤트로 간주하고 이벤트가 생성될 때마다 스토리지에 저장한 후 오픈챗에 참여하고 있는 모든 사용자에게 서버 푸시로 ‘새로운 이벤트가 생성됐으니 받아 가세요’라고 알린다. 서버 푸시를 받은 사용자(클라이언트)는 스토리지에 새로 들어온 이벤트를 페치(fetch) 이벤트 API로 받아가고 새 메시지 등을 화면에 추가하는 액션을 실행한다. 이번엔 핫 챗에서 급증하는 트래픽을 다룰 수 있는 LINE 만의 노하우 두 번째 방법을 알아보자. 🎮핫 챗에서 급증하는 트래픽을 다루는 방법 ✅case2. 오픈챗 참여 요청 급증 라인 오픈챗.. 기술블로그 2023. 8. 29. 13. Iterator의 자매품? Enumeration, ListIterator 자바 진영에서는 Collection Framework에 규정된 컬렉션에 저장된 원소 하나하나를 읽어오는 방법을 Iterator 인터페이스로 표준화하고 있다. 컬렉션 인터페이스에서는 Iterator 인터페이스를 구현한 클래스의 인스턴스를 반환하는 iterator() 메서드를 정의하고 있어 이를 통해 각각의 요소로 접근할 수 있다. 따라서 Collection 인터페이스를 상속받는 List, Set 인터페이스에서도 iterator() 메서드를 사용할 수 있다. Iterator란 무엇인가? 에서 다루었듯이 Iterator는 총 네가지 메서드(hasNext(), next(), remove(), forEachReaminaing())로 컬렉션을 모두 순회한다. 순회는 무조건 단방향으로만 반복가능하고 값을 변경하거나 .. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 8. 10. 이전 1 2 3 4 5 6 7 다음