전체 글 (81) 썸네일형 리스트형 다중 WAS 환경에서 Ehcache 캐시가 서로 달라 발생한 문제 해결 1. 문제 상황운영 중인 웹 서비스에서 팝업을 등록하거나 수정했는데 사용자마다 결과가 다르게 보이는 문제가 발생했다.증상은 다음과 같았다.관리자에서 팝업을 등록했는데 어떤 사용자는 바로 보임다른 사용자는 동일한 팝업이 보이지 않음메모리 초기화를 하면 정상적으로 보이는 경우가 있음일정 시간이 지나면 별도 조치 없이 정상적으로 보임개발 환경에서는 문제가 발생하지 않음처음에는 브라우저 캐시나 쿠키 문제를 의심했다.하지만 시크릿 모드, 브라우저 캐시 삭제 등을 테스트해도 특정 환경에서는 계속 이전 데이터가 조회됐다. 2. 원인 확인운영 환경은 WAS가 한 대가 아니라 다음과 같이 여러 WAS가 Load Balancer 뒤에서 동작하는 구조였다. Load Balancer .. Java UnsupportedClassVersionError 원인과 해결 방법 - class 파일 컴파일 버전 확인 운영 중인 Tomcat 서버에 수정한 Java .class 파일을 배포한 뒤 홈페이지가 정상적으로 출력되지 않는 문제가 발생했다.처음에는 수정한 Java 코드에 문제가 있다고 생각했지만, Tomcat 로그를 확인해보니 원인은 개발 환경에서 컴파일한 Java 버전과 운영 서버의 Java 버전이 맞지 않았기 때문이었다.이번 글에서는 UnsupportedClassVersionError가 발생하는 이유와 .class 파일의 Java 버전을 확인하고 해결하는 방법을 정리한다. 1. 발생한 오류Tomcat 로그에서 다음과 같은 오류가 발생했다.java.lang.UnsupportedClassVersionError:com/example/web/CustomTag 실제 로그는 대략 다음과 같은 형태로 나타난다.Servl.. Node로 양방향 연결 리스트 구현하기 Java에서 연결 리스트를 직접 구현하려면 데이터를 저장하는 Node 클래스와 노드 사이의 연결을 관리하는 메서드가 필요하다.일반적인 양방향 연결 리스트의 노드는 다음 정보를 가진다.실제 데이터이전 노드를 가리키는 prev다음 노드를 가리키는 nextclass Node { // 노드에 저장할 실제 값 int value; // 이전 노드 Node prev; // 다음 노드 Node next; /** * 기본 생성자 * * head, tail처럼 실제 데이터를 저장하지 않는 * 더미 노드를 만들 때 사용할 수 있다. */ public Node() { } /** * 데이터를 저장하는 노드를 생성한다. */ .. DB Lock Session 조회 및 종료 방법 정리 문제 상황운영 중 특정 기능이 갑자기 느려지거나 저장, 수정, 삭제가 되지 않는 경우가 있다.이때 원인 중 하나로 DB Lock을 의심할 수 있다.대표적인 상황은 다음과 같다.UPDATE, DELETE 쿼리가 끝나지 않음특정 테이블 저장이 계속 대기 상태트랜잭션이 종료되지 않아 다른 세션이 대기배치 또는 관리자 기능 실행 후 화면 응답 지연Lock은 데이터 정합성을 위해 필요한 기능이지만 트랜잭션이 비정상적으로 오래 유지되면 장애로 이어질 수 있다. 1. Oracle Lock Session 조회Oracle에서는 V$LOCKED_OBJECT, V$SESSION, DBA_OBJECTS를 조인하여 Lock이 걸린 객체와 세션 정보를 확인할 수 있다.SELECT S.SID, S.SERIAL#, .. Tomcat 세션이 간헐적으로 풀리는 문제 원인 분석 Set-Cookie를 직접 설정하다가 세션 쿠키가 깨진 사례운영 중이던 홈페이지에서 이상한 문제가 발생했다.관리자 로그인 후 페이지 이동 시 로그아웃게시판 글쓰기 진입 시 세션 끊김공지사항 진입 중 간헐적 로그아웃로컬 환경에서도 동일 증상 발생처음에는 단순 세션 타임아웃 문제인 줄 알았다.하지만 로그를 추적해보니 원인은 전혀 다른 곳에 있었다. 증상처음 로그인 직후에는 세션이 정상적으로 유지되었다.FMCSSESSIONID=B9D1F35A...sessionId=B9D1F35A...sessionDataNull=false 하지만 특정 페이지 이동 이후 기존 세션 ID와 다른 새로운 세션 ID가 생성되었다. COOKIE BEFORE : locale=pt-BRSESSION ID AFTER : D9717813.... 1장. 파운데이션 모델을 활용한 AI애플리케이션 입문 1.1 AI 엔지니어링의 부상2020년 이후 AI를 설명하는 핵심 키워드는 규모다.모델은 점점 커졌고 더 많은 데이터를 사용했으며, 더 많은 컴퓨팅 자원을 필요로 하게 되었다.그 결과 두 가지 현상이 생겼다.모델이 강력해져서 더 많은 작업을 수행할 수 있게 되었다.모델을 직접 학습시키는 비용이 너무 커져서 소수의 대기업만 직접 모델을 만들 수 있게 되었다.그래서 등장한 방식이 Model as a Service, 즉 모델을 서비스처럼 API로 사용하는 방식이다.이제 개발자는 직접 모델을 학습하지 않아도 OpenAI, Google, Anthropic 같은 회사가 만든 모델을 API로 사용할 수 있다.이 변화로 인해:AI 애플리케이션 수요 증가개발 진입 장벽 감소다양한 서비스 등장이라는 결과가 나타났다.1.1.. 11장. 자주 쓰는 서버 구조와 설계 패턴 1. MVC 패턴Model-View-Controller의 약자모델(Model): 비즈니스 영역의 로직을 처리뷰(View): 사용자에게 보여줄 결과를 생성컨트롤러(Controller): 사용자의 요청을 받아 흐름을 제어사용자의 요청이 컨트롤러로 들어오면, 컨트롤러는 요청을 해석하고 모델에 비즈니스 로직 수행을 위임한다.모델이 처리 결과를 반환하면, 컨트롤러는 그 결과를 바탕으로 적절한 뷰를 선택하여 사용자에게 응답한다. 2. 계층형 아키텍처계층형 아키텍처는 각 계층이 명확한 역할을 가지며, 자신보다 하위 계층에만 의존하는 구조를 가진다.간단한 레이어 구조 예시controller/└── UserController.javaservice/└── UserService.javarepository/└── UserRe.. 10장. 모르면 답답해지는 네트워크 기초 1. 노드, 네트워크, 라우터노드 (Node)노드는 네트워크에서 데이터를 송수신할 수 있는 모든 장치를 의미한다.대표적인 예로는 다음과 같은 장치들이 있다.스마트폰노트북서버라우터IoT 장비즉, 네트워크에 연결되어 데이터를 주고받는 모든 장치가 노드에 해당한다.네트워크 (Network)네트워크는 두 개 이상의 노드가 서로 데이터를 주고받기 위해 연결된 구조를 의미한다.인터넷은 전 세계 수많은 네트워크가 서로 연결되어 만들어진 거대한 네트워크 시스템이다.패킷 (Packet)패킷은 네트워크를 통해 전송되는 데이터의 기본 단위이다.대용량 데이터를 그대로 보내는 것이 아니라 작은 단위로 쪼개서 전송한다.패킷은 다음 두 가지로 구성된다.Header패킷의 출발지 IP목적지 IP프로토콜 정보패킷 순서 정보 등 네트워크.. 이전 1 2 3 4 ··· 11 다음