분류 전체보기 80

[Linux] 사용자 분류와 계정 명령어

* 사용자 분류루트 계정 : 모든 권한을 가진 특별한 사용자(UID 값이 0)시스템 계정 : 리눅스 설치 시 기본으로 생성되는 계정사용자 계정 : 실제 리눅스 사용자를 위한 계정(관리자에게 권한을 부여받아 사용)→ 리눅스에서는 사용자를 root(관리자)와 일반 사용자로 구분.각각 계정은 흔히 사용하는 ID가 아니라 번호로 부여하는 UID로 관리 * 리눅스 계정과 관련된 명령어들현재 호스트에 로그인 되어 있는 모든 사용자 출력$ users모든 사용자 정보 자세히 출력(터미널 종류, 로그인 시각 등 기본적으로 출력)$ who [options]계정 전체 확인$ cat /etc/passwdroot 암호 설정$ sudo passwd rootroot 로그인# 현재 계정에서 root 권한을 이용하여 명령어를 실행할 ..

[Spring] 의존성 주입

의존성 주입에는 대표적으로 2가지가 있는데, 수정자 주입과 생성자 주입이다. 이 2가지 의존성 주입에 대해 알아보고자 한다.1. 수정자 주입 (Setter Injection)방법: 객체가 생성된 후에 setter 메서드를 통해 의존성을 주입한다.장점:유연성이 높아서, 의존성이 필요하지 않을 때도 객체를 생성할 수 있다.의존성이 선택적(optional)인 경우에 적합하다.단점:의존성이 주입되지 않아도 객체가 생성되기 때문에, 객체의 필수 의존성이 누락될 위험이 있다.주입 여부를 확인하는 로직을 추가로 작성해야 할 수 있다.2. 생성자 주입 (Constructor Injection)방법: 객체가 생성될 때, 생성자를 통해 필요한 의존성을 모두 주입한다.장점:의존성이 객체 생성 시에 반드시 주입되어야 하므로,..

Java/Spring 2024.10.16

[Spring] 오브젝트와 의존관계

전략 패턴 : 개방 폐쇄 원칙의 실현에 가장 잘 들어 맞는 패턴. 전략 패턴은 자신의 기능 맥락에서 필요에 따라 변경이 필요한 알고리즘을 인터페이스를 통해 통째로 외부로 분리시키고, 이를 구현한 구체적인 알고리즘 클래스를 필요에 따라 바꿔서 사용할 수 있게 하는 디자인 패턴.라이브러리 vs 프레임워크 : 라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어한다. 단지 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 사용한다. 반면에 프레임워크는 거꾸로 애플리케이션 코드가 프레임워크에 의해 사용된다.Spring Bean 오브젝트란? : 스프링에서 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트. 스프링 빈은 스프링 컨테이너가 생성과 관계설정, 사용 등을 제어해주..

Java/Spring 2024.10.11

[Java] Enum 클래스

* 개요 Enum은 상수의 집합을 정의할 때 사용되는 타입이다. 예를 들어, 월, 일, 색상 등의 상수 값을 담는다. 자바에서는 Enum이 다른 언어보다 더 활발히 활용되며, 상수 뿐만 아니라 메서드를 집어넣어 관리할 수도 있다. Enum을 기반으로 상수 집합을 관리한다면, 코드를 리팩토링할 때 상수 집합에 대한 로직 수정 시 이 부분만 수정하면 된다는 장점이 있다. 또한 thread-safe 하기 때문에 싱글톤 패턴을 만들 때 도움이 된다. * 예제 public enum Day { MONDAY("월요일"), TUESDAY("화요일"), WEDNESDAY("수요일"), THURSDAY("목요일"), FRIDAY("금요일"), SATURDAY("토요일"), SUNDAY("일요일"); private fina..

Java/Java 2023.11.16

[디자인 패턴] 싱글톤 패턴

* 개요 싱글톤 패턴은 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴이다. 하나의 클래스를 기반으로 여러 개의 개별적인 인스턴스를 만들 수 있지만 그렇게 하지 않고 하나의 클래스를 기반으로 단 하나의 인스턴스를 만들어 이를 기반으로 로직을 만드는 데 쓰이며, 보통 데이터베이스 연결 모듈에 많이 사용한다. 하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈이 공유하며 사용하기 때문에 인스턴스를 생성할 때 드는 비용이 줄어드는 장점이 있다. 하지만 모듈 간의 의존성이 높아진다는 단점이 있다. * 자바에서의 싱글톤 패턴 class Singleton { private static class singleInstanceHolder { private static final Singleton INSTANCE..

[트러블슈팅] Gradle 버전 문제

* 개요 프로젝트의 gradle을 설정하던 중, build가 되지 않는 문제가 발생했다. buildscript { ext { springBootVersion = '2.1.7.RELEASE' } repositories { mavenCentral() jcenter() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' group 'org..

[알고리즘] 프로그래머스 - 기사단원의 무기(java)

https://school.programmers.co.kr/learn/courses/30/lessons/136798 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 숫자나라 기사단의 각 기사에게는 1번부터 number까지 번호가 지정되어 있습니다. 기사들은 무기점에서 무기를 구매하려고 합니다. 각 기사는 자신의 기사 번호의 약수 개수에 해당하는 공격력을 가진 무기를 구매하려 합니다. 단, 이웃나라와의 협약에 의해 공격력의 제한수치를 정하고, 제한수치보다 큰 공격력을 가진 무기를 구매해야 하는 기사는 협약기관에서 정한 공격력을 가지는 무기를 구매해..

[알고리즘] 백준 1072번 - 게임(Java)

1072번: 게임 (acmicpc.net) 1072번: 게임 김형택은 지금 몰래 Spider Solitaire(스파이더 카드놀이)를 하고 있다. 형택이는 이 게임을 이길 때도 있었지만, 질 때도 있었다. 누군가의 시선이 느껴진 형택이는 게임을 중단하고 코딩을 하기 시 www.acmicpc.net 문제 김형택은 지금 몰래 Spider Solitaire(스파이더 카드놀이)를 하고 있다. 형택이는 이 게임을 이길 때도 있었지만, 질 때도 있었다. 누군가의 시선이 느껴진 형택이는 게임을 중단하고 코딩을 하기 시작했다. 의심을 피했다고 생각한 형택이는 다시 게임을 켰다. 그 때 형택이는 잠시 코딩을 하는 사이에 자신의 게임 실력이 눈에 띄게 향상된 것을 알았다. 이제 형택이는 앞으로의 모든 게임에서 지지 않는다...

[Java] 오버로딩 / 오버라이딩 정리

* 오버로딩(Overloading)의 정의 C언어에서는 함수명이 고유하게 존재해야 한다. 즉 하나의 함수가 하나의 기능만을 구현해야 한다는 것이다. 그러나 자바에서는 하나의 메소드 이름으로 여러 기능을 구현할 수 있다. 자바에서는 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메서드를 정의할 수 있다. 이처럼 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 '메서드 오버로딩' 또는 '오버로딩'이라고 한다. 주의해야 할 것은 같은 이름의 메서드를 정의한다고 해서 무조건 오버로딩인 것은 아니다. 오버로딩에는 조건이 존재한다. * 오버로딩의 조건 1. 메서드 명이 같아야 한다. 2. 매개변수의 개수 또는 타입이..

Java/Java 2023.02.08

[Java] Garbage Collection(GC)의 개념과 동작 원리

* Garbage Collection의 개념 프로그램을 개발하다 보면 유효하지 않은 메모리(Garbage)가 발생한다. C언어에서는 malloc(), calloc() 함수를 통해 메모리를 동적 할당하고, free() 함수를 통해 메모리를 해제한다. 하지만 Java나 Kotlin에서는 프로그래머가 메모리를 직접 해제하지 않는다. 그 이유는 JVM의 Garbage Collector가 불필요한 메모리를 알아서 정리해주기 때문이다. Garbage Collection은 메모리 관리 기법 중 하나로, 프로그램이 동적 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 기능이다. 더이상 사용할 수 없게 된 영역이란, 어떤 변수도 가리키지 않게 된 영역을 의미한다. 예시를 통해 Garbage Collection을..

Java/Java 2023.01.13