안녕하세요. 이번 포스팅에서는 Java에서 메모리가 할당되는 영역인 Stack과 Heap에 대해서 다뤄보겠습니다. 프로그래밍 언어에서 변수, 객체가 선언되면 해당 변수는 운영체제의 메모리를 받아서 사용합니다. Java에서는 JVM이라는 기능이 이 역할을 하고 있습니다. JVM OS의 메모리 영역에 접근해서 Java의 메모리를 관리하는 가상의 프로그램 GC(Garbage Collector) Java에서 메모리 관리를 해주는 기능 메모리 영역에서 사용되지 않는 영역을 탐지해서 할당받은 메모리를 해제해줌 Java의 메모리 영역 Stack - 정적으로 할당된 메모리 영역 - 기본 자료형의 변수, 지역 변수가 Stack 메모리에 저장되며, 값도 같이 Stack 메모리에 저장 - Object를 가리키는 변수는 St..
자기 개발
안녕하세요. 이번 포스팅에서는 디자인 패턴에 대해서 공부한 내용을 적어보려고 합니다. Design Pattern 객체 지향 프로그래밍 설계 시, 자주 발생하는 문제들을 예방하기 위해 사용하는 일종의 설계 방법 SW 재사용성, 호환성, 유지보수성을 보장 디자인 패턴은 구현이 아니라 설계하는 방법을 의미함. 개발 시에 꼭 적용해야하는 것은 아님. 하지만, 추후에 재사용, 호환성, 유지보수 시에 발생하는 문제를 예방하기 위해 디자인 패턴을 이용하는 것 객체지향 설계 원칙(SOLID) Single Responsibility Principle(단일 책임 원칙) 하나의 클래스는 하나의 역할만 해야 함 Open - Close Principle(개방-폐쇄 원칙) 확장(상속)에는 열려있고, 수정에는 닫혀있어야 함 Lis..
Bean - 스프링에서 관리하는 객체 - 빈으로 사용하고 싶을 땐 어노테이션을 이용하거나 직접 등록(XML 설정 파일 or Java 설정 파일에 직접 등록) - 어노테이션 : ex) @Componenet, @Service, @Controller, @Repository, @Configuration 등 - Java 설정파일에서 등록 : Java 설정 파일은 @Configuration 어노테이션이 붙어있어, 여기 안에서 원하는 클래스를 @Bean 어노테이션을 이용해서 등록해주면 된다. IoC Container - Bean을 만들고 엮어주며 제공하는 역할. - 자주 사용하는 IoC컨테이너의 종류로는 BeanFactory, applicationContext가 있는데, 주로 applicationContext를 이용..
- 알고리즘 분류 : 구현 - 사용 언어 : JAVA - 문제 요점 땅 주위의 상하좌우에 인접한 바다가 3개 이상이면 녹는다. 주어진 지도의 범위 바깥은 바다로 쳐야한다. 땅이 녹으면 그에 맞게 범위도 줄어들어야한다. 소스 설명은 주석을 참고해주세요. import java.util.*; public class Main { public static int R; public static int C; public static char [][] map; public static char [][] tempMap; public static final int[] dx = {0, 0, 1, -1}; public static final int[] dy = {1, -1, 0, 0}; public static void ma..
이번 포스팅에서는 API, Library, Framework에 대해 다뤄보려고 합니다. API(Application Programming Interface) 응용프로그램에서 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스 구현과 독립적으로 사양만 정의되어 있음 API에 따라 권한이 필요할 수 있음 Library 응용프로그램 개발을 위해 필요한 기능(함수)을 모아 놓은 소프트웨어 독립성을 가짐(라이브러리는 다른 라이브러리에 의존 X) 응용 프로그램이 능동적으로(필요할 때) 라이브러리를 사용 Framework 응용 프로그램이나 소프트웨어의 솔루션 개발을 편리하게 하기 위해 제공된 소프트웨어 환경 상호협력하는 클래스와 인터페이스의 집합 응용 프로그램이 수동적으로 프레임워크에 의해 ..
Spring? 객체를 관리할 수 있는 컨테이너를 제공 Java의 오픈소스 애플리케이션 프레임워크 중 하나 스프링의 기본 철학은 특정 기술에 종속되지 않고 객체를 관리할 수 있는 프레임워크를 제공하는 것 의존성 주입(DI)과 제어의 역전(IOC)를 통해 결합도를 낮춤 의존성 주입(DI : Dependency Injection) 객체간의 의존관계를 미리 설정해두면 스프링 컨테이너가 의존관계를 자동으로 연결 의존하는 객체를 직접 생성하거나 검색할 필요가 없어져 결합도를 낮춤 의존 관계? A라는 클래스가 컨테이너에 등록되고 B라는 클래스가 A클래스를 사용한다는 의미 제어의 역전(IOC : Inversion of Control)? 제어권이 사용자에게 있지 않고, 프레임워크에 있음 스프링에서는 인스턴스의 생성부터 ..
이번 포스팅에서는 컴퓨터 통신을 여러 단계로 나눈 OSI 7 Layer에 대해 다뤄보려고 합니다. 또한, OSI 7 Layer 를 점유율에서 이겨 실질적으로 사용하고 있는 모델인 TCP/IP 모델에서도 다뤄보겠습니다. 아래의 본문이 이해가 잘 안되시는 분들은 맨 아래 레퍼런스의 유튜브 링크를 보시는 것을 추천드립니다. (영상 속 설명이 너무 잘되어있네요) OSI 7계층 - 통신이 이루어지는 과정을 7가지의 단계로 정의한 국제 통신 표준 규약 - 각 계층마다 수행하는 역할이 존재 - 각 계층은 독립되어 있어 용이성과 유지관리에 좋음 - 송수신에 따라 1계층에서 7계층. 7계층에서 1계층으로 흐를 수 있다. (송신 시 : 7계층 → 1계층, 수신 시 : 1계층 → 7계층) - 전체 구조 1계층 물리 계층(P..
이 포스팅에서 작성하는 내용은 자바 ORM 표준 JPA 프로그래밍 (김영한 지음) 에서 발췌하였습니다. 1. DataBase 설치 - H2 DataBase 사용 Oracle or MySQL 대신 H2 DataBase를 사용하는 이유???? - 실습에 최적화된 DB - 가벼움(1.5MB) - 웹용 쿼리 툴 제공 - Oracle, MySQL DB 시뮬레이션 가능 - Sequence, Auto Increment 기능 지원 설치 방법 1) 아래의 페이지에서 자신의 플랫폼에 맞게 다운로드 진행. https://www.h2database.com/ H2 Database Engine (redirect) H2 Database Engine Welcome to H2, the free SQL database. The main..