자바 4주차: 동시성 프로그래밍 기초(작성 중)
·
외부활동/JSCODE 자바
Thread-Safe멀티 스레드 환경에서 공유 자원에 여러 스레드가 접근이 이루어져도 프로그램이 정상적으로 동작하는 상태synchronizedsynchronized란?lock을 통해 동기화를 수행하여 원자성 문제를 해결하는 키워드문제점한 스레드가 lock을 얻어서 임계 영역에 접근하면 해당 영역에 접근하고 싶은 모든 스레드가 blocking이 걸려 아무 일도 못하며 스레드 상태를 변경하는 비용때문에 성능이 좋지 않다.성능 저하(락 대기)데드 락공정성 문제 -> 기아 상태(starvation)동기화 매커니즘모니터 락을 사용하여 스레드 간 동기화 제공객체의 락은 한번에 하나의 스레드가 점유임계 영역(Critical Section)멀티스레드 환경에서 공유 자원에 접근하는 코드 블록모니터모니터는 스레드가 mut..
자바 3주차: 컬렉션 기초(작성 중)
·
외부활동/JSCODE 자바
JCFJava Colleciion Framework프레임워크?표준화된 클래스와 인터페이스의 집합 -> 통일된 API 제공통일된 API?- 데이터를 다루기 위한 버튼- 동일 인터페이스에 구현체가 달라도 add(), remove() 같은 이름으로 같은 방식으로 동작배경?자주 쓰이는 데이터 저장 방식을 표준화된 설계도를 만들자.한마디로 JCF는?다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합 JCF 계층구조JCF는 Collection, Map 인터페이스Collection은 다시 List, Queue, Set 인터페이스List 인터페이스- 순서가 있는 데이터 집합(데이터 중복 허용)-  List 구현체는 ArrayList, LinkedList, Vector  ArrayLi..
Layered Architecture
·
Programming
Layered ArchitectureLayered Architecture는 각 구성 요소들이 '관심사의 분리(Separation of Concerns)'를 달성하기 위해 '책임'을 가진 계층으로 분리한 아키텍처이다. 하나의 계층에 관심사가 여러 개가 존재한다면 해당 계층의 응집도가 떨어지고 결합도가 높아진다. 관심사의 분리를 통해 재사용성과 유지보수성을 높일 수 있다.구성Presentation사용자의 요청을 받고 해석해서 Application 영역에 전달하거나 처리 결과를 받아서 사용자가 이해할 수 있는 형식으로 변환해서 응답Application사용자에게 제공해야 할 기능을 구현이 기능들을 구현하기 위해 도메인 영역의 도메인 모델을 사용한다.즉, 도메인 모델에 로직 수행을 위임한다.Domain핵심 로직..
자바 2주차: (작성 중)
·
외부활동/JSCODE 자바
String literal과 new String(””)의 차이String literal- String Constant Pool에 저장- 동일한 문자열 리터럴이 여러 번 사용되더라도, Java는 메모리 절약을 위해 동일한 참조를 재사용합니다.new String("")- Heap에 저장- Heap에 새로운 객체를 만들고, 기존 String Constant Pool에 동일한 문자열이 존재하더라도 무시하고 별도의 객체를 만듭니다.- GC의 메모리 회수 대상String Contant Pool?Java의 String Constant Pool은 JVM이 관리하는 특별한 메모리 영역입니다. 이곳에 저장된 문자열 리터럴은 JVM 종료 시까지 유지되거나, 클래스가 언로드될 때만 제거됩니다. 즉, String Pool에 저..
[객체지향의 사실과 오해] 식별자 그리고 동등성과 동일성에 관하여
·
독서
식별자객체가 식별 가능하다는 것은 객체를 서로 구별할 수 있는 특정한 프로퍼티가 객체 안에 존재한다는 것을 의미한다.이 프로퍼티를 식별자라고 한다.  모든 객체가 식별자를 가진다는 것은 반대로 객체가 아닌  단순한 값은 식별자를 가지지 않는다는 것을 의미한다. 값과 객체의 가장 큰 차이점은 값은 식별자를 가지지 않지만 객체는 식별자를 가진다는 점이다. 값숫자, 문자열, 날짜, 시간, 금액 등과 같은 변하지 않는 양을 모델링한다. 흔히 값의 상태는 변하지 않기 때문에 불편 상태(immutable state)를 가진다고 한다. 값의 경우 두 인스턴스의 상태가 같다면 두 인스턴스를 같은 것으로 판단한다. 상태를 이용해 두 값이 같은지 판단할 수 있는 성질을 동등성(equaliy)이라고 한다. 상태를 이용해 동..
자바 1주차: 자바 객체 지향
·
외부활동/JSCODE 자바
Q1. 오버로딩과 오버라이딩의 차이는 뭔가요?오버로딩은 같은 이름의 메서드를 매개변수의 타입이나 개수를 다르게 하여 여러 개 정의하는 것입니다.오버라이딩은 상속받은 메서드를 자식 클래스에서 재정의하는 것입니다. 오버로딩은 컴파일 타임에 결정되고, 오버라이딩은 런타임에 결정됩니다.Q2. 다형성이 무엇이고, 왜 필요할까요?다형성은 동일한 메서드 호출이 객체 타입에 따라 다르게 동작하는 성질입니다. 이를 통해 코드의 유연성과 재사용성을 높일 수 있습니다.Q3. 상속은 무엇인가요?상속은 부모 클래스의 속성과 메서드를 자식 클래스가 물려받는 것입니다. 코드 재사용성을 높이고, 공통 기능을 묶어 관리할 수 있습니다.Q4. 상속의 단점은 무엇이 있을까요?상속은 부모-자식 클래스 간의 결합도를 높여 유연성이 떨어질 수..
자바 1주차: 자바 기본
·
외부활동/JSCODE 자바
Java의 특징에 대해서 설명해주세요.Java는 플랫폼 독립성을 제공하며, "Write Once, Run Anywhere"(WORA)를 지향합니다. 객체 지향 언어로 캡슐화, 상속, 다형성을 지원합니다. 자동 메모리 관리를 위한 Garbage Collection을 제공합니다. 멀티스레딩, 강력한 보안, 풍부한 API 등도 주요 특징입니다.객체지향 언어 -> 유지보수가 쉽고 확장성이 높다.멀티 스레드 구현이 쉽다 -> 스레드 생성 및 제어와 관련된 라이브러리 API를 제공한다.Java의 단점에 대해서 설명해주세요.Java는 C/C++에 비해 실행 속도가 느릴 수 있습니다. Garbage Collection으로 인해 메모리 사용량이 높고, JVM 초기화로 인해 애플리케이션 시작 시간이 느릴 수 있습니다.C/..
플로우 차트
·
외부활동/항해플러스
플로우 차트는 순서도, 흐름도를 의미한다. 일을 처리하는 과정(논리의 흐름)을 순서대로 간단한 기호와 도형으로 도식화한다.
[3주차] 콘서트 예약 서비스(작성 중)
·
외부활동/항해플러스
콘서트 예약 서비스설명- 대기열 시스템 구축- 예약 서비스는 작업 가능한 유저만 수행할 수 있도록 해야 한다.- 사용자는 좌석 예약 시 미리 충전한 잔액을 사용해야 한다.- 좌석 예약 요청 시, 결제가 이루어지지 않더라도 일정 시간 동안 다른 유저가 해당 좌석에 접근할 수 없도록 해야 한다.요구 사항API- 유저 토큰 발급 - 예약 가능 날짜/좌석 조회- 좌석 예약 요청- 잔액 충전/ 조회- 결제각 기능 제약 사항 반드시 단위 테스트 작성다수의 인스턴스 어플리케이션 동작 하더라도 기능에 문제 없도록 작성동시성 이슈를 고려한 구현대기열 개념을 고려해 구현
[우리는 여전히 삶을 사랑하는가, 에리히 프롬] 우리는 여전히 삶을 사랑하는가
·
독서
우리는 여전히 삶을 사랑하는가?진정으로 살아 있다고 실감하려면스스로 생각하고 느끼고활동적일 수 있는 자기 나름의힘과 멀어지지 말아야 한다.우리는 여전히 삶을 사랑하는가? 활력과 체험을 제공하는 온갖 서비스로 인해 우리는 자신이 얼마나 활력과 내적 활동성을 잃어버렸는지 깨닫지 못하고 있다. 고통은 인생의 최악이 아니다. 최악은 무관심이다. 고통스러울 때는 그 원인을 없애려 노력할 수 있다. 하지만 아무 감정도 없을 때는 마비된다. 프롬이 생각하는 사랑은 생명력(삶)을 향한 관심을 담고 있다.생명은(...) 성장하고 표현하며 스스로 살아가는 성향이 있다. 성장과 변화가 없으면 죽음 뿐이다. “진정으로 삶을 사랑한다”고 말한다면 대부분은 그게 무슨 뜻인지 잘 안다. 그 말을 들으면 우리는 성장하고 생명력이 넘..