목록전체 글 (232)
거인의 코딩일지
오버로딩(Overloading) 오버로딩은 하나의 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것 메서드의 이름은 동일하지만, 매개변수의 타입, 개수 또는 순서가 다른 여러 버전의 메서드를 정의할 수 있습니다. (호출 시 전달된 인자에 따라 알맞은 버전의 메서드가 선택되어 실행됩니다.) 오버로딩을 통해 같은 동작을 하는 메서드들을 하나의 이름으로 통일하여 사용자가 메서드를 더 쉽게 사용할 수 있도록 합니다. 오버로딩은 컴파일 시점에서 결정되며, 메서드의 시그니처(메서드의 이름, 매개변수 타입 및 개수)가 다르면 컴파일러가 구별합니다. public class Calculator { public int add(int a, int b) { return a + b; } public double add(d..
데이터베이스 설계 시 정규화(Normalization)를 하는 이유 데이터베이스의 구조를 최적화하여 데이터 중복을 최소화하고 데이터의 일관성과 무결성을 유지하기 위함입니다. 정규화는 데이터를 적절한 테이블로 분할하여 중복 데이터를 피하고, 데이터의 종속성을 제거하여 불필요한 데이터 수정을 방지합니다. 1) 데이터 중복 최소화 2) 데이터 일관성 보장 3) 데이터 변경 시 이상 현상 방지 4) 쿼리 성능 최적화 데이터 중복 최소화 중복된 데이터는 데이터베이스의 용량을 증가시키고 데이터 일관성을 해치는 원인이 됩니다. 정규화를 통해 데이터를 적절한 테이블로 분리하면서 중복을 최소화하고, 데이터베이스의 공간 효율성을 높일 수 있습니다. 데이터 일관성 보장 데이터 중복이 없거나 최소화되면 데이터를 한 곳에서만 ..
1) 경량성 2) 제어의 역전 3) 의존성 주입 4) 관점지향 프로그래밍(AOP) 5) 트랜잭션 관리 6) 보안 기능 7) 풍부한 생태계 1. 경량성(Lightweight) 스프링은 경량성을 지향하여 필요한 모듈만 선택해서 사용할 수 있도록 설계되었습니다. 이로 인해 불필요한 부분을 제거하고 필요한 기능에만 집중하여 애플리케이션의 성능과 효율성을 향상시킬 수 있습니다. 제어의 역전(IoC, Inversion of Control): 스프링은 IoC 컨테이너를 통해 객체의 생성과 의존성 주입을 관리합니다. 이를 통해 개발자는 코드에 직접 의존성을 작성하지 않고, 스프링 컨테이너가 객체 간의 의존성을 자동으로 처리하게 됩니다. 이로 인해 코드의 유연성과 확장성이 증가하며, 유지보수가 용이해집니다. 의존성 주입..
오픈 API (Open API) API는 "Application Programming Interface"의 약자로, 소프트웨어들이 서로 상호작용할 수 있도록 인터페이스를 제공하는 도구나 규칙을 의미합니다. 오픈 API는 외부 개발자나 개발 커뮤니티에게 제공되는 API로, 일반적으로 해당 기업 또는 서비스의 기능을 외부 개발자들이 활용할 수 있도록 공개적으로 제공됩니다. 오픈 API를 통해 다른 애플리케이션에서 제공하는 기능을 호출하거나 데이터에 접근하여 활용할 수 있으며, 이를 통해 서드파티 애플리케이션이나 개발자들이 다양한 서비스와 통합하고 상호작용할 수 있게 됩니다. 오픈 소스 (Open Source) 오픈 소스는 소프트웨어의 소스 코드가 공개되어 누구나 해당 소프트웨어를 분석, 수정, 배포할 수 있..
1) 객체 지향 프로그래밍(OOP) 2) 자동 메모리 관리(gc) 3) 운영체제에 독립적 4) 멀티쓰레드 지원 5) 동적 로딩 지원 1. 객체지향 프로그래밍 자바는 객체 지향 프로그래밍(Object Oriented Programming)입니다. 객체지향프로그래밍의 대표적 특징에는 상속,캡슐화(은닉),다형성,추상화가 있습니다. OOP는 4가지 특징을 활용해 코드의 재사용성을 증가하고 유지보수를 용이하게 만듭니다. 2. 자동 메모리 관리 자바에서는 JVM이 지속적으로 메모리를 감시하면서 더이상 사용되지 않는 메모리를 해제시켜 줍니다. C/C++ 등 다른 언어의 경우 더이상 사용하지 않는 메모리는 재사용 가능하게 해제해야 합니다. 이는 개발자가 직접 메모리를 해제해야 함을 의미합니다. 그러나 자바는 Garba..
SQL 기본 문법: JOIN(INNER, OUTER, 등등) 하나의 테이블에 원하는 데이터가 모두 있다면 참 좋겠지만, 두 개의 테이블을 엮어야 원하는 결과가 나오는 경우도 많습니다. 조인을 쓰면 두 개의 테이블을 엮어서 원하는 데이터를 추출할 수 있습니다. 두 테이블의 조인을 위해서는 기본키(PRIMARY KEY, PK)와 외래키(FOREIGN KEY, FK) 관계로 맺어져야 하고, 이를 일대다 관계라고 합니다. INNER JOIN 조인이 되는 키값을 기준으로 교집합 (NULL값을 포함하지 않는다), 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다. SELECT FROM INNER JOIN ON [WHERE 검색 조건] #INNER JOIN을 JOIN이라고만 써도 INNER..
웹 서버 (Web Server) 웹 서버란 HTTP 프로토콜을 기반으로 클라이언트가 웹 브라우저에서 어떠한 요청을 하면 그 요청을 받아 정적 컨텐츠를 제공하는 서버이다. 정적 컨텐츠란 단순 HTML 문서, CSS, 이미지 파일등 즉시 응답 가능한 컨텐즈이다. 이때 웹 서버가 정적 컨텐츠가 아닌 동적 컨텐츠를 요청 받으면 WAS 에게 해당 요청을 넘겨주고, WAS에서 처리한 결과를 클라이언트에게 전달하는 역할도 해준다. 이러한 웹 서버에는 Apache, NginX 등이 존재한다. WAS (Web Application Server) WAS 란 DB 조회 혹은 다양한 로직 처리를 요구하는 동적 컨텐츠를 제공하기 위해 만들어진 Application 서버이다. HTTP프로토콜을 기반으로 사용자 컴퓨터나 장치에 애..
import java.util.Map; import java.util.HashMap; class Solution { public String[] solution(String[] players, String[] callings) { Map map = new HashMap(); for(int i =0; i< players.length; i++){ map.put(players[i], i); } for(String player : callings){ // 등수와 앞에 가던 선수를 가져옴 int num = map.get(player); String overPlayer = players[num-1]; // players 의 배열을 update 해준다음 players[num-1] = player; players[nu..
객체지향 프로그래밍 == OOP(Object Oriented Programming) 인간중심적 프로그래밍 패러다임 이라고 할 수 있다. 즉! 현실 세계를 프로그래밍으로 옮겨와 프로그래밍 하는 것을 이야기 한다. 현실 세계의 사물들을 객체라고 보고, 그 객체로부터 개발하고자 하는 애플리케이션에 필요한 특징들을 뽑아와 프로그래밍 하는 것이다. -- 이것을 추상화라고 한다. 다시 정리하자면 OOP 란? 프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체로 만들고 그 객체간의 상호작용을 통해 로직을 구성하는 방법을 의미한다. ▶ 장점 - 다른 클래스를 가져와 사용할 수 있고, 상속받을 수 있어 코드의 재사용성 증가 - 자주 사용되는 로직을 라이브러리로 만들어두면 계속해서 사용할 수 있어 신뢰성 ..
다음이 설명하는 용어를 쓰시오 선점형 스케줄링 알고리즘으로 프로세스는 같은 키기의 cpu 시간을 할당, 프로세스가 할당된 시간 내에 처리 완료를 못하면 준비 큐 리스트의 가장 뒤로 보내지고 CPU는 대기 중인 다음 프로세스로 넘어가는 알고리즘이다. -- 라운드로빈 선점형 스케줄링 알고리즘의 유형은 : 라운드로빈(RR , Round Robin), SRT, 다단계 큐(MLQ), 다단계 피드백 큐(MLFQ) 다음이 설명하는 스케줄링 기법은 무엇인지 쓰시오 - '최단 작업 우선' 이라고 하며 프로세스가 도착하는 시점에 따라 그 당시 가장 작은 서비스 시간을 갖는 프로세스 가 종료 시 까지 자원을 점유하는 비선형 방식 - 준비 큐 작업 중 가장 짧은 작업부터 수행하기 때문에 평균 대기시간 최소가 된다. -- SJ..