Language/JAVA

    순회중 컬렉션의 크기를 바꾸면 생기는 일 - ConcurrentModificationException 추적하기

    순회중 컬렉션의 크기를 바꾸면 생기는 일 - ConcurrentModificationException 추적하기

    0. 들어가며 멘토님께서 순회중 컬렉션의 크기를 바꾸면 어떻게 되는지 직접 수행해 보라고 권유해 주셨습니다. 마침 Collection 내부구조에 대해 공부도 해야겠다, 구조도 파악할겸 로그를 따라가며 구조를 파악해 보았습니다. 근데 이 과정이 생각보다 너무 재밌어서 공유하고자 포스팅을 하게 되었습니다. 1. ConcurrentModificationException을 발생시키기 순회중에 컬렉션의 요소를 삭제하는 코드를 실행시켜 보겠습니다. public void removeInLoop1(){ List nums = new ArrayList(); for (int i = 1; i < 11; i++) { nums.add(i); } for (Integer number : nums) { if (number % 2 ==..

    Int와 Integer의 차이

    Int와 Integer의 차이

    이번에 회사에서 개발을 하면서 난감했던 적이 있었습니다. 페이징 작업을 위해 클라이언트로부터 limit - offset값을 받아야 했습니다. excel 출력을 위해서 페이징하지 않는 목록을 받기 위해 limit - offset값을 받지 않는 경우도 있었죠. 그런데, 후자의 경우 limit - offset 둘다 0으로 입력받게 되었습니다. 망했죠 1. int란 int는 primitive 자료형이다. primitive 자료형은 데이터의 형태에 따라 값이 저장될 공간의 크기 및 형식을 정의합니다. 2. Integer란 int 자료형을 감산 wrapper class 이다. 자료형(data type)가 아닌 class입니다. 매개변수로 객체가 필요할 떄, 자료형이 아니라 객체로 저장할 떄, 객체간 비교가 필요할 ..

    JavaScript)문자열 자르기 - substring, slice() [짧]

    JavaScript)문자열 자르기 - substring, slice() [짧]

    비슷비슷하지만 항상 헷갈려서 따로 정리해 봅니다. var str = "12345"; var subStringResult = str.substring(0,3); var sliceResult = str.slice(0,3); console.log("substring : " + subRs); //123 console.log("slice : " + sliceRs); //123 네 같습니다. 근데 왜 따로 존재하는걸까요? var str = "12345"; var subStrungResult1 = str.substring(2,-2); var sliceResult = str.substring(-2,2); console.log("subStrungResult1 : " + subStrungResult1); //12 cons..

    Checked, Unchecked Exception

    Checked, Unchecked Exception

    1. Exception이란? exception이란 jabva.lang.Exception클래스 및 Exception클래스의 서브클래스들을 지칭합니다. 여기서 checked exception과 unchecked exception으로 나뉘어 집니다. 2. Exception 종류 2-1. Unchecked Exception RuntimeException을 상속한 서브클래스들이다. 명시적으로 예외처리를 강제하지 않습니다. 프로그램에 오류가 있을때 발생하도록 의도되었습니다. 2-2. Checked Exception Check exceptuon(RuntimeException)을 제외한 나머지 exception들입니다. 복구 가능한 예외로 판단하며, throw로 처리를 위임하거나 catch문으로 예외처리를 해야합니다...

    JavaBean이란? + 자바빈 규약

    JavaBean이란? + 자바빈 규약

    JavBean 이란? 뭔가 특별한 객체나 컴포넌트일 것 같지만, 그런 것이 아닙니다. 자비빈 규약을 지켜 만들어진 클래스를 'JavaBean'이라고 합니다. 자바빈 규약 1. 자바빈은 기본 패키지가 아닌 특정한 패키지에 속해야 한다. 2. 기본 생성자가 존재해야 한다. (매개변수 값이 없는 기본 생성자) 3. 멤버변수의 접근 제어자는 private여야 한다. 4. 멤버변수에 getter/setter 메서드가 존재해야 한다. 5. 4의 getter/setter 메서드는 접근 제어자가 public이여야 한다. [선택사항] 직렬화가 되어 있어야 한다. Serializable을 implemets해 직렬화 해야 합니다. [예제] public class TempBean implements Serializable {..

    Oracle JDK Archive Link

    Oracle JDK Archive Link

    https://www.oracle.com/java/technologies/downloads/archive/ 맨날 찾다가 한참 걸리고... ㅎㅎ 메모겸 작성했습니다

    RxJAVA - CompositeDisposable 간단 정리

    RxJAVA - CompositeDisposable 간단 정리

    CompositeDisposable add 또는 addAll로 disposable을 받고 한번에 해제할 수 있는 편리한 클래스. onStop 또는 onDestroy에 disposable.dispose()로 메모리 누수를 예방할 수 있다. disposable? Observable객체에서 발행할 아이템을 정의한 후 subscribe()로 스트림을 생성해 아이템을 발행했다. subscribe()를 호출한 후에 반환되는 객체가 disposable이다. 스트림을 생성하므로 구독이 필요하지 않다면 폐기하는것이 리소스 관리에 이로우며, dispose()를 통해 가능하다. 그러므로 onComplete()로 발행작업 완료여부를 명시적으로 observable이 호출한다면, dispose()로 리소스 반환을 할 필요가 없다..

    RxJAVA - Subject 간단 정리

    RxJAVA - Subject 간단 정리

    * 개인공부를 하며 정리한 내용이므로, 부정확하거나 사실과는 다른 내용이 있을수도 있습니다. 해당사항에 대해 의견을 주시면 겸허히 수정하도록 하겠습니다. Observable과 Observer Observable을 Observer가 받아서 '반응'합니다. Observable을 단독으로 쓰진 않고, Observer이자 Observable인 subject를 주로 사용합니다. Cold / Hot Observer Hot : 생성하자마자 바로 흘려보냄 구독자의 존재여부 상관 x 구독자를 선택적으로 고려 가능 구독 시점으로부터 발행하는 값을 받는게 기본 마우스, 키보드, 시스템 이벤트 등의 주로 사용 (멀티캐스팅도 포함) Cold : 요청하고 결과를 받아옴. 일반적인 옵저버 구독하지 않다면, 데이터를 흘리지도 않음...

    JSON 데이터로 JAVA 클래스파일 생성하기 feat.retrofit2

    JSON 데이터로 JAVA 클래스파일 생성하기 feat.retrofit2

    https://www.jsonschema2pojo.org jsonschema2pojo Reference properties For each property present in the 'properties' definition, we add a property to a given Java class according to the JavaBeans spec. A private field is added to the parent class, along with accompanying accessor methods (getter and sette www.jsonschema2pojo.org 완전 편하네요. 우측에 설정을 해서 다른 여러가지 타입으로도 변환이 가능합니다.

    java swing 효율 최대로! widowBuilder

    java swing 효율 최대로! widowBuilder

    요즘 swing으로 프로젝트를 작업하실 분은 거의 없겠지만... 전에 학교에서 widowBuilder없이 순수 코딩으로 스윙프로젝트를 했었던 기억이 나서 공유합니다. 이 좋은 프로그램 두고 힘들게 삽질하실분 없길.. https://www.eclipse.org/windowbuilder/download.php Installing WindowBuilder Pro | The Eclipse Foundation The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 375 open source projects, including runtimes, tools and frameworks. www.eclipse.or..

    Swing으로 커스텀 리스트 뷰 만들기

    Swing으로 커스텀 리스트 뷰 만들기

    Swing프로젝트를 진행하는데, 이미 한번 다뤄보았던 부분이고 해서 전에 해보지 않았던 걸 구현해보고 싶어서 고민했었는데, 안드로이드의 커스텀 리스트 뷰를 구현해보는게 재미도 있고 보는맛도 있겠다 싶어 구현하게 되었습니다. 음... swing으로 치자면 다이나믹 스크롤 패널 정도로 될려나요..?ㅎㅎ 우선 데이터를 담을 Bean은 아래와 같습니다. 리스트에 붙일 아이템 패널은 아래와 같습니다. 더보기 import javax.swing.JPanel; import java.awt.Image; import java.awt.image.BufferedImage; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JOptionPan..

    조금 늦게 쓰는 swing 팀 프로젝트 후기

    조금 늦게 쓰는 swing 팀 프로젝트 후기

    정말 제대로 한 첫 팀플이 아닐까 싶습니다. 학교에서야 졸업작품 제외하고 솔직히 팀플이라 부르기도 민망한 수준의 프로그램들이고, 졸업작품으도 아이에 파트를 나눠서 개발했으니 협업이라기보단 분업에 가까웠습니다. 본인은 풀스택을 개발하고 온 상태라 swing만 작성하기 보다는 db를 담당해보고파 db파트도 겸해서 프로젝트에 참여했습니다. 평소 기술위주인 갠플작업만 하다가 DB위주로 작업을 처음 해보니 어려움이 많았다. 초기설계가 생각보다 부실했다. 갠플은 기술위주다보니 항상 작아서 이번에 DB를 담당해서 작업해보니 DB중에 가장 대규모였다. 이번에 배운게 있으니 다음엔 좀 더 내실있는 기본설계를 할 수 있기를 바란다. 처음엔 이대로 하면 되겠다 싶었지만, 모든 릴레이션이 3회이상 수정되었다. 덕분에 팀플에 ..

    Mac에서 java 개발환경 구축하기 (이클립스 설치)

    Mac에서 java 개발환경 구축하기 (이클립스 설치)

    www.java.com/ko/download/ Download Java for Linux 사용자 컴퓨터용 Java 소프트웨어 또는 Java Runtime Environment는 Java Runtime, Runtime Environment, Runtime, JRE, Java Virtual Machine, Virtual Machine, Java VM, JVM, VM, Java 플러그인, Java 추가 기능 또는 Java 다운로드라고도 www.java.com 위의 링크를 들어가서 다운받으면 됩니다. 요런 페이지가 나오구요, 다운받으시면 됩니다. 이친구를 실행시켜서... 요런창이 나오는데, 설치하면 알아서 진행됩니다. 이제 이클립스를 설치해볼까요? www.eclipse.org/downloads/packages/..