웹 개발
-
[Spring] 스케줄러 만들어보기웹 개발/Spring Framework 2018. 12. 18. 16:22
스케줄링.md xml에서 스프링 스케줄링 구현하기(xml task 네임스페이스 활용) 구글링을 해봤을 때, java단에서 스케줄링을 구현하는 경우가 많았다. xml에서 구현하는 법은 잘 안보여서 정리해둬야짓. 스프링은 서비스 추상화 기법을 이용해서 스케줄링 기술에 독립적인 사용이 가능한 추상화 서비스 인터페이스인 TaskScheduler를 제공한다. TaskScheduler는 조건에 따라 실행하거나 반복적인 작업을 수행한다. 주어진 태스크는 특정 시간에 동작하거나 일정 간격으로 실행되게 만들수 있다. 그 중 task 네임스페이스를 활용해서 스케줄러 만드는 법을 소개해보려한다. 먼저 스케줄러가 들어갈 xml에서 TaskScheduler 타입의 ThreadPoolTaskScheduler 빈을 등록한다. sp..
-
[Mybatis]mybatis에서 테이블의 언더바 컬럼을 카멜형식으로 변환해주는 설정웹 개발/Spring Framework 2018. 11. 20. 12:26
underscoreToCamel Mybatis에서 테이블의 언더바 컬럼을 카멜형식으로 변환해주는 설정 있을 것 같은데 알지는 못했던 설정이다. 보통 테이블의 컬럼은 언더바 형식(city_name)으로 되어있고, 개발을 할 때는 카멜형식(cityName)으로 만든다. 그래서 왠지 언더바를 카멜로 바꿔주는 설정이 있지 않을까 했는데, 선임님이 찾아주셨다! 물론 Mybatis 문서를 꼼꼼히 읽어봤다면 알겠지만, 보통 하나하나 다 읽어보진 않으니까 몰랐었다. 나만 그런가… Mybatis 공식 문서를 보면 이렇게 적혀있다. 설정 설명 값 디폴트 mapUnderscoreToCamelCase 전통적인 데이터베이스 칼럼명 형태인 A_COLUMN을 CamelCase형태의 자바 프로퍼티명 형태인 aColumn으로 자동으로..
-
[Programming] 인터페이스와 추상 클래스의 차이(Difference between interface and abstract class)웹 개발/웹&프로그래밍 2018. 11. 15. 20:51
Difference Difference between interface and abstract class 인터페이스와 추상 클래스의 차이 추상 클래스와 인터페이스의 차이를 알고 싶어서 스택오버플로를 찾아봤더니 높은 점수를 받은 답변 두 개가 있어서 정리해둔다. 두 답변 모두 읽어보면 추상 클래스와 인터페이스의 차이에 대한 감이 조금 오는 것 같다! 개인적으로 코드는 첫 번째 답변, 설명은 두 번째 답변이 와 닿았다. (* 오역이 있을 수도 있으니 참고 바랍니다.) 첫 번째 답변 해석본 Interfaces An interface is a contract: The person writing the interface says, “hey, I accept things looking that way”, and t..
-
[Spring] @PostConstruct란?(정의와 장점)웹 개발/Spring Framework 2018. 11. 12. 17:31
1. @PostConstruct란? @PostConstruct는 의존성 주입이 이루어진 후 초기화를 수행하는 메서드이다. @PostConstruct가 붙은 메서드는 클래스가 service(로직을 탈 때? 로 생각 됨)를 수행하기 전에 발생한다. 이 메서드는 다른 리소스에서 호출되지 않는다해도 수행된다. 출처: Oracle Doc 2. 왜 사용하는가(장점)? 1) 생성자(일반)가 호출 되었을 때, 빈(bean)은 아직 초기화 되지 않았다. (예를 들어, 주입된 의존성이 없음)하지만, @PostConstruct를 사용하면, 빈(bean)이 초기화 됨과 동시에 의존성을 확인할 수 있다. + 개인 의견으로 클래스 내에 @Autowired를 붙여서 객체를 사용할 때, 생성자가 필요하다면 @PostConstruct..
-
GitHub master 기준으로 강제로 로컬 업데이트 하기(overwrite local file)웹 개발/웹&프로그래밍 2018. 11. 4. 00:53
회사에서 svn을 사용하는 관계로 Git은 잘 쓸줄 모른다. 개인적으로 사용하는 정도? 혼자 하는 프로젝트다보니 브랜치가 따로 필요 없었는데, 회사에서 가끔씩 코드를 작성할 때도 있어서 브랜치를 한 번 만들어서 써볼까란 생각을 하게 됐다. (사실 회사 노트북으로 마스터에 바로 올려도 상관은 없지만.. 써보고 싶어서) 어쨌든 충돌이 난 결과로 강제로 로컬 파일을 덮어쓸 방법을 찾아야했다. 맥 유저라서 터미널 기준으로 설명. 1. 터미널을 켜서 GitHub 리파지토리와 연동돼있는 local 디렉토리로 이동 2. 아래의 스크립트를 순서대로 입력하기. 12345git fetch --all git reset --hard origin/master git pull origin mastercs 그럼 로컬이 바뀌어있는 ..
-
[GitHub] 깃헙에서 리파지토리 언어 변경하는 방법웹 개발/웹&프로그래밍 2018. 10. 28. 20:20
Node 공부를 하려고 깃헙에서 리파지토리를 만들었는데 html이 떴다. 응? 난 Node로 만든건데? 그래서 방법을 찾아보니 간단했다. 1. 리파지토리에서 .gitattributes를 찾아서 클릭 2. 동그라미 친 부분을 편집해서 커밋 12* linguist-vendored*.js linguist-vendored=falsecs 그럼 자바스크립트로 바뀐 모습을 볼 수 있다. 다른 방법도 궁금하다면 아래의 url을 찾고하면 됨! https://stackoverflow.com/questions/34713765/github-changes-repository-to-wrong-language
-
java 활용해서 '시간 복잡도' 정리하기!!(개념+코드)웹 개발/웹&프로그래밍 2018. 9. 8. 16:20
비전공자 신입으로서 일반적인 컴퓨터 공학과 학생만큼의 자료구조라도 공부해야지라는 마음으로 알고리즘에 중심을 두고 공부하고 있다. 알고리즘하면 자주 나오는 시간 복잡도! '그래서 시간 복잡도란 무엇인가?'라는 생각으로 출발해서 내가 공부도 하면서 블로그에 정리하려고 한다. 혹시 이 포스팅을 보고 피드백을 해주시는 분이 계셨으면 좋겠다!! 일단 개념적으로, '시간 복잡도'란 문제를 해결하는데 걸리는 시간과 입력의 함수 가리킨다. 컴퓨터 과학에서 알고리즘의 시간 복잡도는 입력을 나타내는 문자열 길이의 함수로서 작동하는 알고리즘을 취해 시간을 정량화하는 것이다.(출처: 위키백과) 이런 시간 복잡도를 표현 하는 방식으로 Big-0 표기법을 사용한다.(코드는 java로 설명) 1. O(1) - 상수 시간: 입력값 ..