본문 바로가기

Programming267

IntelliJ에서 성능프로파일링 - Profiler실행 Visual Studio에서는 Performance Profiler가 있다. 성능측정해주는.. 물론 이놈은 Enterprise에서만 발견할 수 있다. 이 프로파일러의 역할은 프로그램 실행 시, 무언가 랙이 걸린다거나 할때.. 어디서 이런 병목현상이 일어나는지, 또는 어느 메소드에서 가장 많은 자원을 소비하는지 프로파일링 해주는 역할을 수행한다. IntelliJ에서도 이게 있다. Community에선 없고, Ultimate에서만.. (역시 자본주의는 돈이다..) 실행방법은 간단하다. 메뉴바 -> run -> Profile '실행프로파일명' with IntelliJ Profiler를 선택하면 된다. 간단하다..!! 그러면 프로젝트 시작부터 열심히 프로파일링을 해준다. 그리고 Run -> Attach Prof.. 2022. 7. 20.
C# Dispose. vs GC (Garbage Collection) : 메모리관리 C#에서는 C++과 다르게 명시적으로 리소스를 해제하는 코드가 (잘)안보인다. C++에서는 new-delete, alloc - free가 항상 쌍으로 이루어져야했다. 아니면 디버깅 종료시 MemoryLeak을 찾았다고 띄워준다. 근데 C#에서는 이러한 작업을 하지 않아도.. Garbage Collector가 스스로 탐색하면서 사용되지 않는 리소스를 해제해준다. 오오오~~~ 근데 이 방법에는 몇가지 주의할게 있다. 1. 관리되지 않는 코드는 GC가 제거할 수 없다. 2. 동시에 너무 많은 객체 생성등으로 갑자기 메모리를 잡아먹을경우.. 한동안 남아있는다. 2번을 위한 대책으로 리소스가 불필요해진 시점에 GC.Collect()를 호출하면 되기는 한다. 다만.. GC.Collect()가 도는동안 엄청 느려질 .. 2022. 7. 19.
Factory Pattern * 이 글은 C#기준으로 작성하였습니다. Factory Pattern. 같은 인터페이스를 가지는 여러 클래스들을 생성하려고하면.. 이 패턴을 쓰는것이 좋았다. (개인취향임..) 예를 들어, 비슷한 역할을 하는 클래스들이 여러개가 필요하다고 하면.. 이걸 매번 각각의 위치에서 생성하는 것도 하나의 방법이 되겠지만, 이걸 어느 한곳에서만 생성하게 해준다면? 그리고, 해당 클래스들을 사용하는 입장에서는 어느 클래스를 사용해도 동일한 코드를 사용할 수 있다면? 예를 들어, window client프로그램인데, Database에 접속하는 경우를 생각해보자.. MySQL, MS-SQL에 접속한 클래스들을 만든다고 하면? public class MSSQLHandler{ public void Connect(...){ .. 2022. 7. 18.
Singleton구현. Singleton은 다음과 같이 구현하면 된다. 구문이 C#이라 C#이야기 카테고리일뿐, static 메소드를 통해 가져오는건 같다 public class MyClass{ #region singleton private static volatile MyClass instance; //volatile키워드는 붙여주는것을 추천 private static object locker = new Object(); public static MyClass GetInstance(){ if( instance == null){ lock( locker){ if( instance == null){ instance = new MyClass(); } } } return instance; } #endregion } 위와 같이 객체를 .. 2022. 7. 18.
Springboot Servlet실행 시 추가할 것. 자바 Springboot로 API서비스를 만들었다. 배포형식은 jar로. 근데 구동이 안되더라.. 알고보니 서블릿초기화가 필요하다네? API를 사용할 모듈에서.. ServletInitializer를 추가한다. import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; public class ServletInitializer extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringA.. 2022. 7. 15.
Multi module빌드 시 output 경로 변경(Maven Project) 이번에 서비스를 만들어보면서, (기 서비스중인 녀석을 나중에 FE와 BE로 분리해보고싶어 개인적으로 프로젝트 시작.) 여러 프로젝트들로 쪼개보기 시작했다. 기능들을 개별적인 서비스로 만들면 나중에 편리하잖아? (MSA...) Maven으로 Output디렉토리를 변경해서.. 각 모듈의 산출물 경로를 root\target으로 모아보는게 이번 스터디 목적. 현재 프로젝트 구조는 이렇다. 지금은 아주 심플하다. db에서 데이터를 조회해오는 기능만 먼저 분리해서.. 이걸 output target을 모으고, 그리고 그걸 그대로 docker에 넣어서 배포가능한지 확인하는게 목적이니까. 위에거 되면 이제 기능들 하나하나 붙여나가야지. 그 전에 먼저 docker에 같이 말아넣는것이 가능한지 feasibility를 확인하.. 2022. 7. 8.
728x90