전체 글 200

기존 칼럼에 특정 수만큼 더하기

수업 중에 우리 반 정보를 테이블에 추가하는 준노가다를 하는 중 다른 반 학번을 넣었다는 것을 다 적고 나서야 깨달았다. update를 사용하여 처리하면 됐지만, 19개나 되는 로우를 바꾸는 것은 너무 오래 걸릴 것을 우려해서 약간 고민을 해본 결과, 기존 칼럼에 특정 수(=100)만큼만 더하면 처리가 된다는 것을 알고 다음과 같은 쿼리를 사용해 문제를 해결하였다. 기존 값에 접근하기 위해서는 (테이블명).(칼럼명)을 하면 된다. 약간 this를 사용한 느낌이다. 동일한 칼럼명을 쿼리에 둘 다 넣어야하나, 하나는 기존값이고, 하나는 명시형이기 때문이다. update문의 set 다음에 들어오는 칼럼명은 명시형이고, 기존 student_number임을 알려주기 위해 class22.student_number로..

스트레스 관리

대소고 2년째 살면서 스트레스를 꽤 자주 받는다. 학교 일정 때문에 받는 스트레스 역시 적지 않으나 그 외 요소가 더 큰 것 같다. (물론 학교 일정이 살인적인 일정이라는 것은 새로 오신 선생님들이 아닌 이상 많은 선생님들께서도 어느 정도 인정하시긴 한다.) 동아리 프로젝트를 한다거나 협업 프로젝트를 진행하는 경우, 내 일을 언제 어디까지 해야 한다는 책임 때문에 그런 것 같다. 그 외에도 펑크가 나는 경우 이를 내가 메워야 한다는 생각 때문에 잠을 설칠 정도로 강박증이 생긴 게 아닌가 싶다. 남 일은 내 일이 아니라고 그냥 생각하고 넘기면 될 것 같지만, 나 역시 관련된 일이다 보니 그냥은 못 넘기는 것 같다. 어떻게든 해야 한다고 생각이 든다. 개인주의적인 성향이 강해 그런 생각이 드는 것 같기도 하..

일상 2022.05.22

[Spring/JPA] JPA의 등장배경

※ 본 글은 저자 김영한 개발자의 "자바 ORM 표준 JPA 프로그래밍"의 내용을 요약하였습니다. ※ JPA 이전에는 JDBC와 mybatis를 사용하여 데이터베이스를 사용하여 개발하는 데 다음과 같은 문제점들이 존재했었다. 패러다임 불일치: 객체와 관계형 데이터베이스는 서로 지향하는 목적이 다르다. 단순 반복 작업: 단순한 작업인 CRUD를 진행할 때마다 쿼리를 반복적으로 작성해주어야 한다. 유지보수의 어려움: 요구사항의 변동으로 인해 칼럼이 추가 혹은 삭제, 변경 등이 되었을 때, 유연하지 못하다. Query 의존도가 높음: 3번과 마찬가지로 요구사항의 변동이 있어 복잡한 쿼리를 수정해야 하는 경우, 전체를 수정하거나 등의 문제로 객체 매핑하는 데 어려움이 있었다. 이 외에도 문제는 여러 존재한다. ..

Spring/JPA 2022.05.18

[공부/서버] 앞으로 공부해야할 것들

앞으로 공부해야할 것들, 5번째 글입니다. 어떻게 되다보니, 시리즈처럼 계속 올리는 것 같습니다. 이제 무엇을 공부해야하는 지 어느 정도 감을 잡았습니다. 여러 구인구직 사이트들과 여러 블로그 글들을 참고해서 어느 정도 감을 잡았습니다. 하지만, 여전히 길을 잘못 들었을 수도 있기에 "앞으로 공부해야할 것들"은 계속해서 포스팅할 것 같습니다. 1. DataBase 데이터베이스 기초 및 튜닝 SQL 튜닝 Transaction CS Redis Kafka 2. Java Java 고급 직렬화 클린 아키텍처 Dynamic Proxy, CGLib Proxy Reflection API 비동기 알고리즘 3. Spring Framework 스프링 기초부터 스프링 기반 프레임워크 및 라이브러리 TDD AOP PSA Tra..

공부/서버 2022.05.13

[공부/서버] MSA (MicroService Architecture)

MSA란? 작고, 독립적으로 배포가 가능한 각각의 기능을 수행하는 서비스로 구성된 아키텍처라고 할 수 있다. 마이크로 서비스는 온전히 독립적으로 배포가 가능하며, 다른 기술 스택(개발 언어, 데이터베이스 등)이 사용 가능한 단일 비즈니스 영역에 초점이 있다. MSA의 등장 배경 Monolithic Architecture는 소프트웨어의 모든 구성 요소가 한 프로젝트에 통합되어 있는 형태이다. 아키텍처가 단순하며, 유지보수가 용이하다. 하지만 일정 규모 이상의 서비스, 혹은 수백명의 개발자가 투입되는 프로젝트에서는 한계가 보인다. Monolithic Architecture의 한계는 다음과 같습니다. 서비스/프로젝트가 커질 수록 영향도 파악 및 전체 시스템 구조의 파악을 하는 데 어려움이 생긴다. 빌드 시간 ..

공부/서버 2022.05.09

super(CS.교착상태);

교착 상태란? 상호 배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상이다. 위 예시보다 더 알기 쉬운 예시로는 다음과 같은 예시가 있다. (A)는 지붕에, (B)는 1층에 있다고 가정을 하자. 1층에서 지붕으로 가는 유일한 방법은 하나의 사다리 뿐이다. 이때, (A)가 지붕에서 1층으로 내려가려고 하고, (B) 역시 1층에서 지붕으로 올라가려고 한다면 서로 통과하지 못하고 상대방이 비켜주길 무한정 기다리게 될 것이다. 교착 상태를 발생하기 위해서는 다음 4가지가 모두 충족되어야 교착상태가 발생할 가능성이 생긴다. 어느 한 가지라도 충족하지 않는 다면 교착상태는 반드시 발생하지 않는다. 상호배제 한 번에..

공부/CS 2022.05.03

스프링 4 경험하기

기존 스프링을 스프링5, 스프링 부트로 편하게 개발하였는 데 일상 글에서 말했다시피 스프링의 히스토리를 조금이나마 알고, 얕게 경험해보고자 스프링 4를 스프링 부트없이 직접 의존성을 주입해주는 등 스프링 부트에서는 자동으로 되어있는 것들을 직접 해보았다. 스프링 버전은 4.2.4 릴리즈를 사용하였으며, jdk는 1.8, aspectJ는 1.6, slf4j는 1.6.6, apache.titles는 3.0.7 버전으로 사용하였다. pom.xml는 다음과 같이 구성하였다. (너무 길기때문에 파일 참고) 그리고 default welcome 페이지는 기본 제공 JSP(index.jsp)를 사용하였다. 애플리케이션 config과 dispatcher를 설정하기 위해 web.xml에 다음과 같이 작성하여 설정하였다. ..

Spring 2022.04.30

정렬 알고리즘

정렬을 해결하는 데 여러 알고리즘을 사용하고, 어떤 알고리즘이 어떤 상황에 적절한 상황인지는 판별하기 다소 어렵다. 물론 다음과 같은 표가 있어 어느 정도 유추는 가능하나, 앞서 말한 좋은 상황, 나쁜 상황을 알기에는 부족하다. 그렇기에 직접 자바로 이를 테스트를 진행할 프로그램을 작게나마 만들었다. testcase패키지는 테스트 케이스이며 즉, 상황(문제)을 임의적으로 넣어둔 클래스들이 모여있다. Sort 인터페이스는 모든 정렬 알고리즘의 공통 영역이다. algorithm 패키지는 위 7가지 정렬 알고리즘을 구현한 클래스들이 모여있다. StopWatch 클래스는 시간을 계산할 수 있는 클래스이다. GitHub - iqpizza6349/sort-algorithm Contribute to iqpizza63..

일상이에요

요즘 일상을 너무 자주 쓰는 게 하는 걱정이 들 정도로 일상 글을 자주 올리는 것 같다. 현재 CS 관련해서 공부하고 있으며, SpringFramework에 대해서 다시 공부하고 있다. 아무래도 CS는 취업 및 그리고 기본적으로 알아둬야할 필요가 있다고 생각이 들어 공부 중이고, SpringFramework은 스프링의 히스토리를 공부하고자 스프링4에 대해서 공부하고 정리하고 있다. 많은 것들이 자동화와 추상화가 되어 너무 편하게 작업을 하다보니, 왜 자동화와 추상화가 필요한지를 잊어버렸다. 그리고 더 이상 이것에 대해서 질문을 던지지않고, 그냥 그런가 보다. 하는 자신을 되돌아보면서 이러면 안되겠다는 생각이 들어 공부 중이다. 덕분에 스프링 기초부터 찬찬히 다시 보고, 정리하고 있다. (스프링5보다는 스..

일상 2022.04.26

일단 마시고 본다. (상속)

자바를 개발하다 보면 상속이라는 개념을 배우게 됩니다. 그리곤 extends Object 가 있다는 것만 기억하게 되고 상속을 잊어버립니다. (전부가 그렇다는 것은 아니지만 제 친구는 잊어버렸습니다. 실제로 추상클래스 상속하라고 했더니 클래스 상속 어떻게 하는 건데? 인터페이스여야지만 상속되는 거 아니었음? 라고 했던 비하인드가 있습니다.(그친구는 개발에 흥미만 있는 친구입니다.)) 상속은 자바에 있어 굉장히 중요한 개념입니다. 부모가 가진 것을 자식에게 물려줄 수 있다는 점, 그리고 protected로 부모와 자식외에는 접근조차 불가한 접근 제어자까지 있습니다. 또, 부모에서 받은 것들을 재정의할 수 있다는 점에서 더 중요함을 알려줍니다. 예시를 들자면, Machine과 Robot으로 간단하게 들 수 ..

공부/Java 2022.04.25