본문 바로가기
반응형

전체 글1100

빌드 관리도구 Maven / Gradle Spring 을 사용하게 되면 프로젝트 생성시 빌드 도구를 maven이나 gradle 중에 하나를 선택하게 된다. 나의 경험으로는 안드로이드 앱을 관리할때는 gradle을 주로 사용해왔고, 웹이나 스프링 등의 프로젝트를 관리할때는 maven을 주로 사용해왔다. 어떤걸 써야한다의 정답도 없고 뭐가 더 많이쓰이니 미래를 위해서 어떤걸 써야 도움이 된다의 그런 것도 없지만 사람마다, 기업마다, 프로젝트마다 maven과 gradle을 사용하는데 둘의 차이를 작성해보려고 포스팅을 작성하게 되었다. 우선 앞서 빌드 관리를 한다는 것에 대한 정의를 알아보도록 할것이다. 빌드 관리 도구 우리가 프로젝트에서 작성한 java 코드와 프로젝트 내에 필요한 기타 파일들을 WAS, JVM등에서 인식을 할수 있도록 패키징 하는 .. 2022. 5. 1.
스프링부트 동작 원리 스프링부트에 대한 설명은 아래 참고 사이트를 확인해보도록 한다. 이번 포스팅에서는 전체적인 설명보다는 스프링부트에서 동작하는 과정에 대해서 기술해볼것이다. 일단 내장 톰캣을 갖는 스프링부트는 jar파일로 배포를 하여 톰캣으로 실행할수가 있다. 서블릿컨테이너를 통해서요청을 받고 url 주소를 받으면 먼저 frontController 패턴으로 넘어간다. 이 패턴에서는 해당 요청에 알맞는 응답이 있는 코드로 값을 넘겨준다. 요청에 의한 값이 2번바뀌게 되는데 이때 요청한 값을 유지하기 위해서는 requestDispatcher를 사용하게 된다. requestDispatcher를 사용하여 요청과 응답을 그대로 유지 시키고 dispatcher로 인해서 생긴 수많은 객체들은 ApplicationContext에서 관리.. 2022. 4. 30.
지역변수와 전역변수 프로그래밍을 하다보면 변수를 설정해주기 마련이다. 변수는 다양한 이름으로 많이 사용되는데 여담으로 가장 많이 쓰이는 변수명은 i 라고 한다. 그밖에 result, sum, a 등이 존재한다. 그럼 이 변수명들을 사용하기 위해서는 선언을 해줘야한다. 선언을 어디에 하느냐에 따라 지역변수인지 전역변수 인지 판가름이 난다. 전역변수(Global variable) 어느 위치에서든 사용 가능 함수 밖에 선언하여 클래스 전체에서 사용이 가능한 변수 지역변수(Local variable) 특정구역({}) 내에서 생성되어 그 구역에서만 사용 가능 함수 속에 선언되어 해당 함수속에서만 사용이 가능한 변수 그리고 전역변수를 좀더 파고 들어가면 인스턴스 변수와 클래스 변수가 존재하는데 인스턴스 변수 - 클래스 영역에 선언되어.. 2022. 4. 29.
Mac 에서 한글 사용법(hwp파일 편집) 대부분의 문서는 word로 만들었는데 어느날 hwp 파일을 받았다. 편집은 커녕 열리지도 않아서 매우 당황 하였다. 그러다가 먼저 viewer를 설치하기로 맘먹었다. 찾아보니 appstore에서 한글 뷰어라고 검색을 하니 첫번째로 나오는 앱이 있는데 이 뷰어로 볼수 있다. 그러다가 편집을 하게 되어 편집 프로그램을 찾았는데 개인적으로 폴라리스는 별로 좋아하질 않아서 다른 방법을 찾다가 웹에서 편집을 할수 있는 사이트를 알게 되었다. 물론 회원가입은 해야하고 하게 되면 2G까지는 무료로 사용을 할수 있다고 한다. https://space.malangmalang.com/ 한컴스페이스 어디서나 펼쳐지는 오피스 세상 space.malangmalang.com 사이트에 들어가서 무료로 시작하기를 누른후 가이드에 따.. 2022. 4. 28.
eclipse에서 콘솔창 구분 하는법 어느순간부터 이클립스 IDE에서 콘솔창과 일반 파일의 창이 구분이 안되었다. 사진처럼 일부러 분리를 하여 사용을 하다가 만약 일반 창을 닫는다면 콘솔 창이 전체 화면으로 되었다. 처음엔 그냥 사용하였는데 하나보니 콘솔창에서 파일도 열리고 해서 많이 불편해서 해결책을 찾았다. window > Perspective > Reset Perspective를 눌러주면 이클립스를 처음 설치했을때처럼 나온다. 물론 하고 나서 다시 셋팅들은 해줘야 했고 나는 package Explorer만 설정을 하였다. package Explorer은 자바 처럼 객체 지향언어를 사용한다면 유용한 파일트리라서 참고 사이트를 참조해서 사용해보는것을 권장한다. 참고 사이트 https://thenicesj.tistory.com/141 ecl.. 2022. 4. 27.
equals 와 hashCode의 재정의를 같이 해야하는 이유 먼저 아래와 같이 클래스를 정의해두고 public class Person { private final String name; public Person(String name) { this.name = name; } // intellij Generate 기능 사용 @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; return Objects.equals(name, person.name); } } person클래스에서는 equals만 재정의를 하였고 이어서 생성을 해보았다. pub.. 2022. 4. 26.
캐시서버에 대해서 얼마전 캐시서버에 대한 개념을 알게 되어 포스팅으로 작성해보려고 한다. 서버를 다뤄본 사람이라면 프록시 서버에 대한 내용은 들어봤을것이다. 프록시란 대리, 대신, 대리인 이라는 뜻으로 프록시 서버는 내 인터넷을 사용하는것이 아닌 다른 서버의 인터넷 자원을 사용하여 인터넷에 접근할수 있는 그런 서버이다. 그럼 캐시 서버란 이런 프록시 서버의 일종이다. 인터넷 서비스 속도를 높이기 위해서 사용자와 가까운 곳에 임시 데이터를 캐시 형태로 저장하여 빠르게 제공해주는 서버이다. 또는 내가 해외에 있는 사이트에 접속을 해야할 경우 해외로의 통신에 필요한 사용료가 있다. 이 통신료를 절감할수 있다는 장점도 있다. 대표적인 사례로는 AWS의 클라우드 프론트가 있다. 웹 서비스 속도의 향상을 위해 제공하는 서비스고 비 .. 2022. 4. 25.
파일 InOut 속도 측정 (외장하드 포함) 외장하드와 usb에 있는 파일들을 정리하면서 파일의 속도가 너무 안나오는것을 느꼈다. 외장 SSD도 있긴하지만 가격대가 높아서 아직은 외장 하드로 버티는 중이긴 한데 실제 속도 차이가 얼마나 나는지 궁금했다. 맥에서는 appstore에 고맙게도 파일 속도 측정해주는 어플이 있다. disk speed 라고 검색하면 나오게 되는 첫번째 어플이다. 그리고 설치가 되면 기본 셋팅은 내 피시 로컬의 파일 읽기 쓰기 속도이다. 외장하드로 변경을 하고 싶다면 그림처럼 설정 톱니바퀴를 누르고 원하는 디스크를 설정해주면 된다. 외장 HDD의 속도가 형편없다... 이래서 느린건가... 조만간 외장 SSD로 바꿀 예정인데 바꾸게 된다면 추가 포스팅을 작성해보도록 하겠다. 2022. 4. 24.
대용량 트래픽에 대한 대처법 서버든 데이터베이스든 다수의 사용자가 동시에 몰리면 트래픽이 집중이 되어 서버가 렉이 걸릴수도 있고 만약 메모리가 오버가 된다면 out of memory등의 에러를 내뱉으면서 서버가 뻗게 된다. 이를 방지할수 있는 몇가지 방안을 소개해보는 포스팅을 작성해볼것이다. was와 webserver 구분하기 대표적으로 was로는 tomcat 등이 있고 webserver 는 apache 등이 있다. 정적과 동적이라는 뜻은 알것이라 생각하고 정적인 페이지 코드들은 webserver에, 동적인 페이지 코드는 was 에 구분을 해서 작성을 해두면 페이지 로딩할때 각각 분담을 하여 로딩을 하기에 속도 개선에 도움이 된다. scale up / scale out 실제로 가장 효과적인 방법이며 가장 좋은 방법이지만 단점은 돈이.. 2022. 4. 23.
반응형