java
-
2주차 과제: 자바 데이터 타입, 변수 그리고 배열객체지향 2021. 1. 19. 23:57
목표 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다. 학습할 것 프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입과 레퍼런스 타입 리터럴 변수 선언 및 초기화하는 방법 변수의 스코프와 라이프타임 타입 변환, 캐스팅 그리고 타입 프로모션 1차 및 2차 배열 선언하기 타입 추론, var 1. 프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입, 영어로 primitive 또는 원시 타입 또는 기본형 타입 이라고 한다. 우선 타입이란 데이터 타입을 줄인 말로 자료형 이라고 한다. 그럼 데이터 타입이란 무엇일까? 컴퓨터 관점에서 타입은 데이터가 메모리에 어떻게 저장될 것이고 또 어떻게 다뤄져야 하는지에 대해 알려주는 것이다. 즉, 데이터 타입을 보면 컴퓨터에서..
-
1주차 과제: JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가.객체지향 2021. 1. 17. 20:09
목표 자바 소스 파일(.java)을 JVM으로 실행하는 과정 이해하기. 학습할 것 JVM이란 무엇인가 컴파일 하는 방법 실행하는 방법 바이트코드란 무엇인가 JIT 컴파일러란 무엇이며 어떻게 동작하는지 JVM 구성 요소 JDK와 JRE의 차이 1. JVM이란 무엇인가 - Java Virtual Machine '자바 가상 머신'을 뜻하는 말로 바이트코드를 실행하는 주체 - 한번 작성해서 어디서든 실행할 수 있다는 말로, 자바 코드로 작성한 프로그램은 실행할 환경에 독립적으로 실행 - 정해진 약속(Java byte code)만 지켜지면 JVM은 자신의 환경(OS)에 맞게 Java byte code를 실행 JVM과 같은 중간언어를 해석해주는 추상화(여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출..
-
iBatis, myBatis 에서 Date형 시분초 잘리는 문제Spring 2020. 10. 27. 12:55
출력할 때와, insert, update시에 제대로 자료를 넣었고 result column 설정도 제대로 되어있는데도 불구하고 시분초가 잘릴 경우 ex) DB에 저장 되어있는 값 2017-10-23 17:00:55 => 퀴리 후 출력된 시간 값이 2017-10-23 00:00:00로 출력되는 경우 Java Mapper class의 자료형을 java.util.Date에서 java.sql.Timestamp로 변경하여 setter와 getter를 만들어준다. 아니면 DB 컬럼자체의 자료형을 Date형에서 Timestamp 형으로 바꾸어야 한다.
-
OutOfMemoryError: unable to create new native thread 원인리눅스 2020. 6. 2. 17:39
최근 프로젝트를 Server에 반영하고 Tomcat을 재시작 하거나 프로세스가 정상적으로 올라가고 몇시간 후에도 OutOfMemoryError 로그와 함께 기존의 프로세스가 먹통이 되는 현상이 자주 발생하였다. OutOfMemoryError 문구만 봐서는 해당 에러가 메모리와 관련된 오류일 것이라고 생각하기 쉽다. 하지만 Java 1.6과 1.7에서 OS가 Thread를 생성해 주지 못할 때 OutOfMemoryError: unable to create new native thread 에러가 표시될 수 있다. Linux에서 사용자가 생성할 수 있는 최대 프로세스 개수를 확인하는 방법 중 하나는 ulimit 을 이용하는 것이다. >ulimit -a core file size (blocks, -c) 0 da..
-
Client Connection Pool Manager 설정(1)Spring 2020. 3. 17. 14:13
ClientConnectionPoolManager의 풀을 유지 관리하고 HttpClientConnection여러 실행 스레드의 연결 요청을 처리 할 수 있습니다. 연결은 경로별로 풀링됩니다. 이미 관리자가 풀에서 사용 가능한 영구 연결을 가지고있는 경로에 대한 요청은 완전히 새로운 연결을 만드는 대신 풀에서 연결을 임대함으로써 서비스가됩니다. @PostConstruct private void init() { CommonUtil.sConnectTimeout = connectTimeout; CommonUtil.sSocketTimeout = socketTimeout; PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager..
-
고급 객체지향 프로그래밍(3)객체지향 2020. 1. 20. 21:33
3. 캡슐화 3.1. 객체의 캡슐화 원칙 객체지향 패러다임의 캡슐화는 연관된 속성들과 연관된 오퍼레이션들을 하나의 단위인 객체로 묶어서 정의하는 원칙이다. 객체가 특정 기능을 제공하는 데 필요한 속성 및 오퍼레이션을 한 캡슐에 모아서 정의해야 한다. 3.2. 객체안의 관련성 종류 객체는 관련된 속성들과 오퍼레이션들을 모아놓은 캡슐인데, 여기서 관련이 있다는 것이 구체적으로 무엇을 의미하는지 살펴보자 3.2.1 속성들 간의 관련성 객체는 관련이 있는 여러 속성들로 구성되어야 하는데, 이 속성들 간의 관련성은 두 가지 형태로 나타낸다. * 유형 1 상태 유지 완전성 관점의 관련성 객체는 그 상태 유지를 위해 필요한 속성들의 완전한 집합을 가져야 한다. 예를 들면 원이란 도형 객체의 상태를 유지하기 위해서 x..
-
고급 객체지향 프로그래밍(2)객체지향 2020. 1. 17. 23:04
2. 객체 2.1. 객체의 정의 객체는 객체지향 패러다임에서 프로그램을 구성하는 기본 단위이다. 개발하려는 목표 시스템의 업무 영역에 실제로 존재하는 어떤 사물, 개체 또는 개념이 바로 객체가 된다. - Person: 인사관리 시스템에 사용되며, 조직의 직원을 나타내는 객체 - Car: 자동차 생산관리 시스템에 사용되며, 생산된 자동차를 나타내는 객체 - Book: 서점의 도서판매 시스템에 사용되며, 판매할 책을 나타내는 객체 객체지향 프로그램은 여러 개의 객체들로 구성되어 있으며, 각 객체는 상태(State) 정보를 기록 유지하기 위한 속성들과 이 속성들을 처리하는 오퍼레이션 집합으로 정의된다. 즉, 각 객체는 관련성이 높은 속성들과 오퍼레이션들을 포함하고 있다. 잘 설계된 객체는 재사용의 기본 단위가..
-
고급 객체지향 프로그래밍(1)객체지향 2020. 1. 17. 21:14
객체지향의 개념을 배워보기에 앞서 객체지향 프로그래밍이 어떻게 생겨나게 되었고 이를 왜 사용하는지에 대해서 알아보자 1.1. 소프트웨어 위기와 객체 기술 소프트웨어 위기는 소프트웨어 기술 발전 속도가 컴퓨터 하드웨어 기술 발전 속도보다 뒤떨어짐으로써 발생되는 문제이다. 즉, 하드웨어 품질은 좋아지면서 가격은 성능대비 낮아지고 있는데, 소프트웨어는 품질이 크게 개선되지 않으면서 오히려 개발 및 운영 비용은 증가하고 있다는 것이다. 소프트웨어 위기의 두가지 원인은 점점 증가하는 소프트웨어 복잡도와 높은 비용이다. 소프트웨어의 개발 요구사항은 복잡해져 가는데, 이 복잡도를 효과적으로 해결할 수 있는 기술이 크게 발전하지 못하면서, 개발 및 운영 비용이 증가하는 것이다. 소프트웨어 위기 문제를 해소하기 위해 개..