본문 바로가기

분류 전체보기264

[java] 배열(Array)과 컬렉션 제네릭의 차이 자바의 객체 타입은 고정이 아닙니다. 객체 타입은 런타임에 자신이 상속받고 있는 타입으로 변하는 업 캐스팅(upcasting)과 자신 자신의 아래 클래스의 형태로 변할 수 있는 다운 캐스팅(downcasting)이 있습니다. 이를 자바에서는 객체가 다형성(Polymorphism)을 가지고 있다고 합니다. 상속 매커니즘과 더불어 이런 다형성은 객체의 재사용성을 높여주고 객체지향(OOP)를 잘 달성할 수 있게 도와줍니다. 그리고 ArrayList, HashMap과 같은 Collections을 자바 개발자는 자주 사용하게됩니다. 이때 타입의 안정성을 위해 제네릭(generic)을 사용합니다. 이 제네릭은 다양한 Type을 지원할 수 있도록 타입 파라미터(type paramter) T를 지원합니다. 오늘 여러분.. 2020. 11. 8.
[데이터베이스] MySQL의 Lock과 트랜잭션 모델 안녕하세요. 이전 포스팅, [DataBase] Lock에 대해서 알아보자 - 기본편에서 우리는 Lock이란 어떤 것이고 DBMS에서는 Lock을 어떤 경위로 사용는지에 대해서 자세하게 알아보았습니다. 도움이 되셨을까요? 포스팅에서도 말했다시피 Lock은 DBMS마다 조금씩 구현하는 요소들이 다릅니다. 대표적인 예로 MySQL은 읽는것에 대해서도 Lock(공유 락)을 잡는 반면 Oracle에서는 Lock을 전혀 잡지 않습니다. 오늘은 Mysql의 Lock과 트랜잭션에 대해서 공식문서를 보며 한번 파헤쳐보도록 하겠습니다. 이번 포스팅은 Lock에 대해서 기본적인 지식이 있다라는 것을 전제로 만들어 졌습니다. 혹시 개념이 없으시거나 미흡하다고 생각되시는 분들은 Lock에 대한 포스팅및 트랜잭션 및 격리성에 대.. 2020. 11. 4.
[데이터베이스] Lock에 대해서 알아보자 - 기본편 안녕하세요. 오늘은 DataBase의 Lock에 대해서 알아보고 정리해보는 시간을 가져보도록 하겠습니다.DataBase는 데이터를 영속적으로 저장하고 있는 시스템입니다. 이런 시스템은 같은 자원(데이터)에 대해서 동시에 접근하는 경우가 생길 수 밖에 없습니다. 이럴 경우 데이터가 오염 될 수 있는데 그렇게 되지 않도록 데이터의 일관성과 무결성을 유지해야할 필요가 있습니다. 예를 들어 수강신청 시스템에서 1명만이 정원으로 남게되었습니다. 여기서 2사람이 거의 동시에 버튼을 눌렀습니다. 성공은 1명만 되야합니다. 이런 상황에서 DBMS(DataBase Management System)가 사용하는 공통적인 방법이 Lock이라는 것입니다.LockLock이란 트랜잭션 처리의 순차성을 보장하기 위한 방법입니다. 트.. 2020. 10. 29.
[자료구조] 코드로 알아보는 java의 LinkedHashMap 안녕하세요. 오늘은 오랜만에 다시 돌아왔습니다. 코드로 알아보는 java의 자료구조의 5번째 시간입니다. 오늘 알아볼 자료구조는 LinkedHashMap입니다. LinkedHashMap 이란 어떤 자료구조인지 HashMap과는 어떻게 다른지 알아보고 Java에서는 어떻게 구현되어 있는지 코드로 함께 확인하는 시간을 가지도록 하겠습니다. 해당 포스팅을 이해하기위해서는 먼저 HashMap에 대한 이해가 필요합니다. HashMap에 대해서 잘 모르시는 분들은 제가 이전에 포스팅한 HashMap의 자료구조를 한번 보시기바랍니다. HashMap을 순차적으로 읽으면 어떤 순서로 읽는가 ? HashMap은 Node를 꺼낼 때 넣은 순서를 보장하지 않는다고 합니다. 그렇다면 Node 순회에 대해서 읽는 순서는 어떻게 .. 2020. 10. 19.
[AWS] SQS(Simple Queue Service)의 다양한 설정들 안녕하세요. 오늘은 여러분들과 AWS의 SQS에 대해 공유드리고자 합니다. 많은 분들이 AWS의 SQS 서비스를 사용하고 있으실 거라고 생각합니다. SQS는 AWS의 서비스 중 하나로 Queue를 구현하고 있는 서비스입니다. 이 서비스는 UI로 매니징 할 수 있도록 되어있고 Java에서도 사용하기 쉽게 SDK를 제공합니다. 오늘은 가볍게 SQS 사용에 필요한 간단한 동작 원리 및 설정에 대해서 알아보는 시간을 가져보도록 하겠습니다. SQS(Simple Queue Service)란 SQS는 AWS(Amazon Web Service)에서 제공하는 Simple Queue Service의 약자로 분산 큐(Distributed Queues) Saas 서비스입니다. SQS의 요소에는 3가지가 있습니다. 사용하는 서.. 2020. 10. 15.
[MSA] Spring Cloud Feign - With Hystrix 안녕하세요. 오늘은 Spring Cloud Feign의 마지막 시간입니다. 오늘 알아볼 내용은 Feign에서 Hystrix와 연동은 어떻게 이루어지고 어떻게 동작하는지, 그리고 이를 실습해보는 시간을 가져보도록하겠습니다. Hystrix에 대한 개념이 없으시거나 부족하신 분들은 제가 포스팅한 예전 포스트가 있으므로 참조해주시면 좋을 것 같습니다. [MSA] Spring Cloud Hystrix - 개념편 의존성 저는 현재 시점의 Spring Cloud의 최신버전인 Hoxton.SR8를 사용하고 있습니다. 해당 mavenBom으로 OpenFeign의 의존성을 가져오면 최신버전인 2.2.5.RELEASE를 사용할 수 있습니니다.있습니다. 다른 많은 포스팅을 보시면 hystrix의 의존성을 추가해야한다고 합니다.. 2020. 10. 10.
[데이터베이스] 트랜잭션과 격리성 안녕하세요. 평소에 포스팅하던 내용과는 조금 떨어진 이론적인 내용을 포스팅하고자 합니다. DB는 트랜잭션 단위로 처리된다고 합니다. 유명한 All Or Nothing이 DB의 트랜잭션에서 나온 이야기입니다. 오늘은 여러분들께 DB를 이용할 때의 트랜잭션과 그리고 한발 더 나아가 격리성(Isolation)에 대해서 알아보는 시간을 가지도록 하겠습니다. 트랜잭션(Transaction) 만들고 있는 프로젝트의 로직중에 DB table에 정보를 insert하는 로직이 있습니다. table은 정규화 되어있으며 A, B, C 테이블에 차례대로 테이터를 insert한다고 하겠습니다. 테이블이 쪼개져 있으므로 테이블간의 데이터 정합성을 유지하는게 중요합니다. 만약 A, B에는 insert하고 C에 insert 하기전 .. 2020. 10. 4.
[MSA] Spring Cloud Feign - 커스터 마이징 설정편 안녕하세요. 오늘은 Spring Cloud Feign의 2번째 시간입니다. 오늘 함께 알아볼 내용은 Spring Cloud Feign의 설정을 커스터마이징 할 수 있는 것은 어떤것들이 있으며 어떻게 커스터마이징 할 수 있는가에 대해서입니다. FeignClient에 커터마이징 설정을 적용하기 위해서는 아래와 같이 @FeignClient에서의 configuration 속성을 이용하면 됩니다. 아래처럼 했을 때 AzureClient는 커스터마이징 설정인 AzureHttpConfiguration과 오버라이딩 되지 않은 부분에 대해서는 기본설정인 FeignClientsConfiguration가 적용됩니다. @FeignClient(name = "azureClient", url = "${external.bing.ur.. 2020. 9. 30.
[MSA] Spring Cloud Feign - 기본 사용 및 기본 설정편 안녕하세요. 오늘은 오랜만의 Spring Cloud에 대해서 알아보는 시간을 가지려고 합니다. 오늘 알아 볼 프로젝트는 Spring Cloud Feign 프로젝트입니다. MSA로 시스템 아키텍처가 많이 변경되면서 시스템간의 단일 책임 원칙으로 많은 시스템의 개선점을 보인 것은 사실입니다. 하지만 모든지 트레이드 오프는 있습니다. MSA로 변화의 큰 단점 중 하나로 꼽자면 바로 API 호출의 증가일 것입니다. 기존에 단순 DB 조회로 가능하던 부분들이 MSA로 전환되면서 직접 접근하는 것이 불가능해졌습니다. 따라서 이들이 모두 API가 되었습니다. MSA 처럼 분산되어있는 시스템을 사용하는 입장에서는 API를 호출하는 코드를 노가다 식으로 항상 만들어줘야하는 번거로움이 생겼습니다. 이를 해결해 줄 수 있는.. 2020. 9. 27.
[javascript] javascript 코딩 스타일 가이드 안녕하세요. 오늘은 javascript의 2번째 시간입니다. 오늘은 javacript 코딩 스타일 가이드에 대해서 알아보는 시간을 가져보도록 하겠습니다. 코딩은 대부분이 협업이기 때문에 스타일 가이드를 가지고 따르는 것이 중요합니다. 회사에서 정해진 스타일 가이드를 얼마나 잘 따르는지가 코드의 가독성을 높일 수 있기 때문입니다. 코드의 가독성이 높아진다는 것은 즉 유지보수가 쉬워진다는 뜻입니다. 스타일 가이드의 예로는 변수명은 어떻게 정할지, {}는 어떻게 표현할 지 등등이 있습니다. 오늘 여러분들에게 알려드릴 스타일 가이드는 w3schools과 google에서 제시하는 Style Guide를 참조하였습니다. 이름 정하기 먼저 이름을 정하는 방법에 대해서 알아보겠습니다. javascript에는 다양한 T.. 2020. 9. 18.
[Spring] Scheduler 어떤걸 사용해야 할까 ? - Spring Scheduler와 Spring Quartz 일정한 시간간격 또는 일정한 시각에 특정 로직을 돌리기 위해서 사용하는 것을 Scheduler라고 합니다. 이런 Scheduler는 Spring에서 Spring Scheduler와 Spring Quartz라는 2가지 방식으로 제공됩니다. 1가지 일에 2가지 방식을 Spring에서 제공하다니... 어떤걸 쓰면 좋을까요? 오늘은 2가지의 공통점과 차이점 그리고 내 프로젝트에서는 어떤 Library를 사용하면 좋을지 알아보는 시간을 가져보도록 하겠습니다. 사용법 먼저 각 라이브러리를 어떻게 사용할 수 있는지 확인해보겠습니다. 먼저 말씀 드리자면 Spring Scheduler를 사용하는 것보도 Spring Quartz를 사용하는 것이 좀 더 복잡하며 어렵습니다. Spring Scheduler Spring Sch.. 2020. 9. 15.
[Javascript] Javascript의 `this` 키워드 이해하기 Back-End 개발자라 할지라도 Admin 페이지, 즉 백오피스 정도는 스스로 개발해야하는 경우가 많이 생깁니다. 이럴 때 보통 web을 통해 작업을 진행하는데요. front-end 개발자 만큼 깊게는 아닐지라도 전반적인 내용은 이해를 하고 있어야 합니다. 여기에 기본이 되는것이 html, css, javascript인데요. 오늘은 Javascript의 this라는 키워드에 대해서 알아보는 시간을 가지도록 하겠습니다. Java와 javascript는 구조가 많이 다르기 때문에 같은 syntax인 this일 지라도 그 용도가 많이 다릅니다. 테스트 방법 Javascript를 테스트하기 위해서는 html 파일을 만들어야 합니다. 매번 테이스트를 위해서 만드는 것은 무리가 있기 때문에 chrome의 debu.. 2020. 9. 12.