전체 글131 디자인패턴에서 자주 쓰이는 용어 정리(GPT)(2) 포워딩 (Forwarding):한 객체의 메소드를 호출할 때 다른 객체의 메소드를 호출하여 작업을 위임하는 것.예: 프록시 패턴에서 프록시 객체가 실제 객체의 메소드를 호출하는 경우.데모테이션 (Demotion):객체의 책임이나 역할을 더 낮은 수준의 객체로 이동시키는 것.예: 복잡한 로직을 더 단순한 객체로 분리하여 책임을 줄이는 것.콜레이터 (Cooperator):특정 작업을 수행하기 위해 협력하는 여러 객체들.예: 콜레이터 패턴에서 여러 객체가 협력하여 작업을 수행하는 경우.컨슈머 (Consumer):데이터를 소비하는 객체.예: 생산자-소비자 패턴에서 데이터를 소비하는 객체.프로듀서 (Producer):데이터를 생성하는 객체.예: 생산자-소비자 패턴에서 데이터를 생성하는 객체.루프 (Loop):반복.. 2024. 7. 16. 디자인패턴에서 자주 쓰이는 용어 정리(GPT)(1) 컨텍스트 (Context):객체가 속한 환경이나 상황을 의미합니다. 주로 전략 패턴이나 상태 패턴에서 많이 사용됩니다.예: 전략 패턴에서 Context는 전략을 사용하는 객체를 의미합니다.컴포넌트 (Component):구조적 패턴에서 자주 사용되는 용어로, 기본 인터페이스나 추상 클래스를 의미합니다.예: 데코레이터 패턴에서 Component는 기본 인터페이스로, 데코레이터와 실제 객체가 이 인터페이스를 구현합니다.구성 (Composition):객체가 다른 객체를 포함하는 것을 의미합니다. 객체 간의 "has-a" 관계를 나타내며, 상속 대신 구성의 사용을 권장합니다.예: 데코레이터 패턴에서 데코레이터는 구성 관계를 통해 원래 객체를 포함합니다.전략 (Strategy):특정 행위를 캡슐화하여, 동적으로 교.. 2024. 7. 16. 멀티스레딩과 비동기I/O 차이점 멀티스레딩멀티스레딩은 하나의 프로세스 내에서 여러 스레드를 생성하여 동시에 여러 작업을 수행하는 방식입니다.작동 방식: 각 스레드는 독립적으로 실행되며, 자신의 호출 스택을 가집니다. 여러 스레드가 동시에 실행될 수 있으므로 CPU 코어 수에 따라 실제 병렬 처리가 가능합니다.사용 사례: 멀티스레딩은 CPU 바운드 작업, 즉 계산이 많이 필요한 작업에 적합합니다. 또한 I/O 바운드 작업에도 사용될 수 있지만, 스레드 생성과 관리 오버헤드가 있을 수 있습니다.장점:단순성: 스레드 생성 및 관리가 상대적으로 간단합니다.병렬 처리: 실제 병렬 처리로 CPU 성능을 최대한 활용할 수 있습니다.직관적 프로그래밍: 각 스레드가 독립적으로 실행되므로 직관적으로 프로그래밍할 수 있습니다.단점:자원 소모: 많은 스레드.. 2024. 7. 8. ExecutorService 기반 스레드 생명주기와 자원관리 생성 (Creation)ExecutorService 인스턴스를 생성합니다. 이는 스레드 풀을 초기화하는 과정입니다.예: ExecutorService executor = Executors.newFixedThreadPool(4);작업 제출 (Task Submission)작업을 스레드 풀에 제출합니다. submit() 또는 execute() 메서드를 사용하여 Runnable 또는 Callable 작업을 제출할 수 있습니다.예: executor.submit(new SimpleTask());작업 실행 (Task Execution)스레드 풀 내의 스레드가 대기 중인 작업을 실행합니다. 스레드는 작업을 처리하고 완료하면 다시 대기 상태로 돌아가 다른 작업을 기다립니다.예: new SimpleTask().run();종.. 2024. 7. 8. JAVA Beans 패턴 자바답게 코드짜는데 국룰 패턴이 존재하더라.소스코드를 보다가 이게 뭔가 싶어서 확인해보니 JAVA Beans라고 하는것을 보고 제대로 알기위해 찾아봤다. JAVA Bean의 규칙1. 기본생성자클래스는 기본 생성자를 가져야 한다. ( 기본 생성자는 매개변수가 없는 생성자를 의미함)기본 생성자가 없으면, 외부 코드가 이 클래스를 쉽게 인스턴스화 할 수 없게됨. 2. 접근자 메소드(getter)와 설정자 메소드(setter)클래스의 속성(필드)는 private로 선언하고, 외부에서 접근할 수 있도록 public 접근자(getter)와 설정자(setter)메소드를 제공해야 한다.이 접근자 메소드의 이름은 get또는 is로 시작하고, 설정자 메소드는 set으로 시작해야 한다. 3. 직렬화 (serializatio.. 2024. 7. 5. JAVA Servlet 주요 인터페이스 정리 (GPT ver) 자바 서블릿 API의 주요 인터페이스Servlet서블릿을 구현하기 위한 기본 인터페이스예요.서블릿 생명주기를 정의하는 메서드들을 포함하고 있어요.주요 메서드: init(), service(), destroy()ServletRequest클라이언트의 요청 정보를 제공하는 인터페이스예요.주요 메서드: getParameter(), getAttribute(), getInputStream()ServletResponse서버가 클라이언트에게 응답을 보낼 때 사용되는 인터페이스예요.주요 메서드: getWriter(), setContentType(), getOutputStream()HttpServletRequestServletRequest를 확장하여 HTTP 프로토콜의 요청 정보를 제공하는 인터페이스예요.주요 메서드: g.. 2024. 7. 4. System.arraycopy vs Arrays.copyOfRange 비슷한 것 같아서 GPT에게 자세한 비교를 부탁했다.System.arraycopySystem.arraycopy는 저수준 배열 복사 메서드로, 특정 위치에서 다른 위치로 배열의 내용을 복사하는 데 사용됩니다. 이것은 복사할 원본 배열, 복사를 시작할 위치, 대상 배열, 대상 배열의 시작 위치, 그리고 복사할 요소의 수를 명시해야 합니다.Arrays.copyOfRangeArrays.copyOfRange는 배열의 특정 범위를 새로운 배열로 복사하는 고수준 메서드입니다. 이 메서드는 원본 배열의 일부를 복사하여 새로운 배열을 반환합니다. 이 메서드는 주로 배열의 슬라이싱에 사용됩니다.주요 차이점용도:System.arraycopy는 배열의 특정 부분을 같은 배열 내에서 또는 다른 배열로 복사할 때 사용됩니다.Ar.. 2024. 6. 27. 내 마음의 위험한 배열 자바 배열쓰기가 너무 어렵다.파이썬에서 list 하나로 웬만한건 다 처리가 가능했어서 더욱 어렵다.계속 써보는중이긴한데 내 마음의 위험한 녀석이다. 속이 터져버릴지도...그래서 일단 GPT형님에게 배열 관련된것좀 다 정리해달라고 했다. 배열 생성 및 초기화자바에서 배열을 생성하고 초기화하는 방법은 다음과 같습니다.정수 배열 생성 및 초기화public class Main { public static void main(String[] args) { // 정수형 배열 선언 및 크기 지정 int[] numbers = new int[5]; // 배열 초기화 numbers[0] = 1; numbers[1] = 2; numbers[2] .. 2024. 6. 27. ArrayList의 toArray() Array가 있고 ArrayList가 있고 List가 있다.쉽지않다.StringBuilder로 문자열을 동적으로 조작하는건 익혔다.배열은 쉽지가 않았다.List name = new ArrayList(); 로 ArrayList를 생성하는건 알았다.그런데 다시 배열로 돌려보낼 때 단순 toArray()를 사용하는것이 아니라toArray(new type[0]); 을 사용하더라.왜 크기가 0인 배열을 전달하는지 도저히 이해가 안되어서 GPT형님의 도움을 받았다.단계별 설명배열 크기 확인:new String[0] 배열을 전달했기 때문에, 이 배열의 크기는 0입니다.resultList.size()는 3입니다.따라서 new String[0] 배열의 크기는 resultList.size()보다 작습니다.새 배열 생성 및.. 2024. 6. 25. 이전 1 2 3 4 5 6 7 ··· 15 다음