전체 글

· CS/Network
트리 토폴로지노드의 추가 삭제가 쉬우며 특정 노드에 트래픽이 집중될 때 하위 노드에 영향을 끼칠 수 있음 버스 토폴로지중앙 통신 회선 하나에 여러 개의 노드가 연결되어 공유하는 네트워크 구성노드를 추가하거나 삭제하기 쉬움LAN에서 활용설치 비용이 적음신뢰성 우수스푸핑이 가능함... 스타 토폴로지중앙에 있는 노드에 모두 연결된 네트워크 구성노드를 추가하거나 에러를 탐지하기 쉬움패킷의 충돌 발생 가능성이 적음중앙 노드에 장애가 발생하면 전체 네트워크를 사용할 수 없고 설치 비용이 고가임 링형 토폴로지각각의 노드가 양 옆의 두 노드와 연결하여 전체적으로 고리처럼 하나의 연속된 길을 통해 통신하는 방식데이터는 노드에서 노드로 이동각각의 노드는 고리 모양의 길을 통해 패킷을 처리노드 수가 증가되어도 네트워크 상의..
프록시 패턴대상 객체에 접근하기 전 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴 프록시 서버서버와 클라이언트 사이에서 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해줌 Nginx비동기 이벤트 기반의 구조와 다수의 연결을 효과적으로 처리 가능한 웹 서버Node.js 서버 앞단의 프록시 서버로 활용 CloudeFlare전 세계적으로 분산된 서버가 있고 이를 통해 어떠한 시스템의 콘텐츠 전달을 빠르게 할 수 있는 CDN 서비스CDN (Content Delivery Network) : 지리적으로 분산된 서버들을 연결한 네트워크웹 서버 앞단에 프록시 서버로 두어 DDOS 공격 방어나 HTTPS 구축에 쓰임 CORS (Cross-Origin Re..
하드 디스크 데이터 읽을 때의 프로세스 진행 과정파일을 읽으라는 메서드를 자바에 전달파일명을 전달 받은 메서드가 운영체제의 커널에게 파일을 읽어 달라고 요청커널이 하드 디스크로부터 파일을 읽어서 자신의 커널에 있는 버퍼에 복사 (DMA에서 작업)DMA (Direct Message Access)CPU의 개입 없이 주변장치와 주기억장치와의 데이터 직접 전송자바에서는 마음대로 커널의 버퍼를 사용하지 못하므로, JVM으로 그 데이터를 전달JVM에서 메서드에 있는 스트림 관리 클래스를 사용하여 데이터를 처리 NIO (New Input/Output)  / Java 4 [Java] IO와 NIO의 차이점? / IO와 NIO의 선택NIO ? 자바 4부터 새로운 입출력(New Input/Output)이라는 뜻에서 jav..
static이거 정처기 문제에 대표적으로 나오는 내용public static int value = 0a = new StaticEx();a.value++;b = new StaticEx();b.value++;c = new StaticEx();c.value++;print(a, b, c) // 3, 3, 3// 서로 다른 객체를 생성했지만 최종적으로 static 값은 3이므로  static 초기화 블록static { staticVal = "Value"; staticVal = StaticEx.staticInt;}  자주 사용하고 절대 변하지 않는 변수는 final static으로 선언하자설정 파일 정보도 static으로 관리하자코드성 데이터는 DB에서 한 번만 읽자  Static 주의해야 하는 상황publi..
Stringfinal String aValue = "abcde"for(int i = 0; i 위와 같이 테스트를 진행할 때 아래와 같이 시간이 소요가 됩니다.a95초b0.24초c0.17초  Stringabcdeabcde  abcdeabcdeabcde 위와 같이 새로운 객체가 계속 생성되면서 이전 객체를 쓰레기로 만듭니다.많은 GC를 하게 하여 시간이 많이 소요됩니다. StringBuffer, StringBuilderabcdeabcdeabcde위와 같이 새로운 객체를 생성하지 않고 기존에 있는 객체의 크기를 증가시키면서 값을 더하기 때문에 시간이 조금 소요됩니다.  Charsequence인터페이스구현 객체로 CharBuffer, String, StringBuffer, StringBuilder가 있음Stri..
프로파일링 툴 / APM 툴 프로파일링 툴소스 레벨의 분석을 위함애플리케이션의 세부 응답 시간까지 분석 가능메모리 사용량을 객체나 클래스, 소스의 라인 단위까지 분석 가능가격이 APM 툴에 비해 저렴보통 사용자수 기반으로 가격이 정해짐자바 기반의 클라이언트 프로그램 분석을 할 수 있음 응답시간 프로파일링 기능하나의 클래스 내에서 사용되는 메서드 단위의 응답 시간 측정메모리 프로파일링잠깐 사용하고 GC의 대상이 되는 부분을 찾거나 메모리 부족 현상이 발생하는 부분을 찾기 위함  APM 툴애플리케이션의 장애 상황에 대한 모니터링 및 문제점 진단이 주 목적서버의 사용자 수나 리소스에 대한 모니터링이 가능실시간 모니터링을 위한 툴가격이 프로파일링 툴에 비해 비쌈보통 CPU 수를 기반으로 가격이 정해짐자바 기반의..
각 패턴들에 대한 내용 / 핵심은 아래에서더보기Intercepting Filter요청 타입에 따라 다른 처리를 하기 위한 패턴 Front Controller요청 전후에 처리하기 위한 컨트롤러를 지정하는 패턴 View Helper프레젠테이션 로직과 상관 없는 비즈니스 로직을 헬퍼로 지정하는 패턴 Composite View최소 단위의 하위 컴포넌트를 분리하여 화면을 구성하는 패턴 Service to WorkerFront Controller와 View Helper 사이에 디스패처를 두어 조합하는 패턴 Dispatcher ViewFront Controller와 View Helper로 디스패처 컴포넌트를 형성한다. 뷰 처리가 종료될 때까지 다른 활동을 지연한다는 점이 Service to Worker 패턴과 다르다..
· Spring/Basic
의존 관계public interface DiscountPolicy { int discount(Member member, int price);}public class FixDiscountPolicy implements DiscountPolicy { private int discountFixAmount = 1000; @Override int discount(Member member, int price) { if (member.getGrade() == Grade.VIP) { return discountFixAmount; } else { return 0; } }}public class RateDiscountPolicy implements ..
· Spring/Basic
Controller 동작 관련@Controllerclass ~ { @GetMapping("test") public String ~ (@RequestParam("a") String a, Model model) { model.addAttribute("a", a); return "test_view"; }}// Controller로 등록하고// @GetMapping 안에 적어준 경로가 요청되면// ?a=test 이런식으로 @RequestParam에 들어갈 내용을 받아주고// model에 a라는 이름으로 받아온 값을 저장해서// test_view로 던져주면// test_view에서는 던져준 a를 view에 원하는 곳에 활용@Controller@ResponseBody // 얘 추가됌c..
· Spring/Basic
Servlet 실행 안되거나jsp 실행이 안된다?   maven, java17, tomact10.1.28 사용jakarta EE 10 사용 Tomcat 다운https://tomcat.apache.org/download-10.cgiEdit configuration 설정Edit Configuration => tomcatServer local => Server에 Configure 누르고 다운한 파일 경로 추가deployment + artifacts => application context "/"로 설정 Edit Configuration 설정 과정 중 Artifact가 없을 경우Project Structure => Artifacts => 왼쪽 위 "+" 버튼 => web Application: Exploded ..
개선전 코드 (코드 리뷰 및 개선점을 요청받은 코드)더보기import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.Collection;import java.util.List;import java.util.Optional;import kwan.utility.customException.CustomReflectionException;public class Utility { static Connection con; static PreparedStatement ps; s..
· CS
보호되어 있는 글입니다.
류가든
장난감정원