CS
-
IntelliJ 간단한 환경설정CS/기타 2023. 10. 25. 09:14
테스트 빌드 실패시 https://m.blog.naver.com/varkiry05/221806279836 [intellij] junit 으로 작성한 테스트가 gradle 로 실행될때Junit 으로 작성된 클래스를 GUI로 실행하면 콘솔창에 다음과 같이 실행된다. 내용을 확인하면 Gradle...blog.naver.com테스트가 gradle이 아닌 IntelliJ 환경하에 실행되게 하면 된다 한글 깨짐https://yungenie.tistory.com/5 [IntelliJ] Tomcat Console, File Encodings 한글깨짐 해결방법한글 깨짐 해결 방법 톰캣 서버 설정 수정 (UTF-8 설정) 인텔리제이 JVM 실행 옵션 파일 수정 (UTF-8 설정) 톰캣 콘솔창 인텔리제이에서 톰캣 실행..
-
디자인 패턴 요약CS/기타 2023. 10. 6. 18:12
생성 패턴 - 객체의 생성 싱글톤 패턴 (Singleton Pattern): 클래스가 하나의 인스턴스만 갖도록 하는 패턴. 인스턴스가 필요한 경우 항상 동일한 인스턴스를 반환. 팩토리 메서드 패턴 (Factory Method Pattern): 서브(하위)클래스에서 객체 생성을 처리할 수 있도록 하는 패턴. 성위 클래스에서 인터페이스를 정의하고 구체적인 객체 생성은 하위클래스에서 처리. 추상 팩토리 패턴 (Abstract Factory Pattern): 관련된 객체 패밀리를 생성하는 인터페이스를 제공하는 패턴. 서로 다른 팩토리 클래스로 다양한 객체 그룹을 생성. 빌더 패턴 (Builder Pattern): 복잡한 객체의 생성 과정을 단순화하는 패턴. (객체의 생성과 구현/표현 분리) 객체를 구성하는 각 ..
-
행위패턴 - 중재자, 옵서버, 상태, 전략, 템플릿메소드, 방문자CS/기타 2023. 10. 6. 17:55
6.중재자 패턴 - 수많은 객체들 간의 복잡한 상호작용을 캡슐화하여 객체로 정의 - 객체 사이의 의존성을 주여 결합도를 감소시킴 - 중재자는 객체간의 통제와 지시 역할 수행 전체 채팅을 치면 해당 채팅은 같은 채널에 있는 모두에게 전송되어야 한다. 이때 n명의 user를 서로 mesh 형태로 연결할 수 는 없으므로, 모든 user들을 하나의 중재자에게 연결해놓아 user1의 채팅은 중재에게 연결된 모두에게 전송되도록 한다. 7.옵서버 패턴 - 한 객체의 상태가 변화하면 객체에 상속되어있는 다른 객체들에게 변화된 상태를 전달 - 주로 분산된 시스템간에 이벤트를 생성, 발행하고 이를 수신할때 사용 옵서버 패턴은 n명의 구독자들이 단 1명의 발행자의 정보를 받기만 하는 반면 중재자 패턴은 m:n의 관계가 서로..
-
행위 패턴 - 책임연쇄, 커맨드, 인터프리터, 반복자, 메멘토CS/기타 2023. 10. 6. 16:21
1.책임 연쇄 패턴 - 요청을 처리할 수 있는 객가 여러개일때 한 객체가 처리하지 못한 수행을 다음 객체로 넘긴다 - 될떄까지 고리를 책임이 넘어간다 https://always-intern.tistory.com/1 public class NegativeProcessor implements Chain{ private Chain nextInChain; public void setNext(Chain nextInChain) { this.nextInChain = nextInChain; } public void process(Number request) { if(request.getNumber() < 0) { System.out.println("NegativeProcessor : " + request.getNumb..
-
구조 패턴 - 어댑터, 브리지, 컴포지트, 데코레이터, 퍼싸드, 플라이웨이트, 프록시CS/기타 2023. 10. 6. 13:59
구조 패턴은 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴들을 의미한다 1.어댑터 패턴 - 호환성이 없는 클래스들의 인터페이스를 다른 클래스가 이용할 수 있도록 변환해주는 패턴 - 기존의 클래스를 사용허고 싶으나 인터페이스가 일치하지 않을떄 사용 (https://lktprogrammer.tistory.com/29) String content = "hello"; Parser_B parserB = new Parser_B(content); Parser_C parserC = new Parser_C(content)); parserB.Parsing(); parserC.C_Parsing(); B 클래스와 C 클래스의 메서드명이 다르다 public interface Parser { public void Do_Par..
-
생성 패턴 - 팩토리, 빌더, 싱글톤, 프로토타입CS/기타 2023. 10. 6. 03:50
생성 패턴 - 객체의 생성과 연관됨 0. 팩토리 패턴 Pet cat = new Cat(); Pet dog = new Dog(); PetFactory petFactory = new PetFactory(); Pet cat = petFactory.createPet(Pet.Type.CAT); Pet dog = petFactory.createPet(Pet.Type.DOG); 객체를 직접 생성하지 않고 객체를 생성하는 클래스를 따로 구현, 구체적인 객체 생성 과정을 팩토리로 모듈화해 구체적이 아닌 추상적인 부분에 의존하게 한다. public class PetFactory { public Pet createPet(Pet.Type petType) { switch (petType) { case CAT: return ne..
-
마크 서버로 알아보는 IP와 포트포워딩CS/기타 2023. 10. 4. 15:57
오랜만에 마크 멀티나 해볼까 친구들과 이야기가 나왔는데 마크 서버를 여는 방법은 여러가지가 있지만 마크에 여러가지 모드를 깐 채로 멀티를 하려면 직접 서버를 열어야한다. 재밌어 보이기에 직접 한번 열어보기로 결정. 윈도우로 여는게 편하지만 '서버는 리눅스'라는 불문율?이 있으므로 깔아놓은 리눅스 가상머신으로 서버를 열어보고자 했다. https://gall.dcinside.com/mgallery/board/view/?id=steve&no=17810 마크 서버를 여는 방법엔 여러가지가 있다. 그중 첫번째는 'LAN 서버'를 여는 방법. LAN의 풀네임은 Local Area Network, 번역하면 근거리 통신망이라 한다. 이때 근거리는 보통 랜선으로 직접 연결되는 범위로 하나의 공유기 = 한 와이파이 정도의..
-
Numpy와 행렬CS/기타 2023. 9. 18. 00:19
파이썬은 모든 것을 객체로 취급한다. 여러개의 변수에 10이란 값을 넣을경우 값이 10인 객체를 만들고 모든 변수들은 해당 객체와 연결된다. 그렇기에 a is b를 하면 메모리 주소가 같아 true가 뜬다 다만 numpy로 만든 array는 다르다. numpy는 빠른 연산을 위해 array의 모든 값을 순차적으로 메모리에 저장하며, (그래서 하나의 np.array에선 하나의 타입만 저장 가능하다) 그렇기에 np.array로 만든 두 배열 a와 b의 저장된 값들의 메모리 주소는 전부 다르다. 두 행렬의 shape이 같을때 사칙연산을 사용하면 같은 위치의 값끼리 연산한 행렬을 리턴한다 shape이 다를경우엔 다음과 같이 진행된다. 행렬의 곱은 dot 연산을 사용한다. 행렬의 곱은 앞뒤가 바뀌면 값이 바뀌므로..