728x90

분류 전체보기 636

Java의 함수형 인터페이스(Functional Interface)에 대해 알아보기

함수형 인터페이스(Functional Interface)? 하나의 추상 메서드만 존재하는 인터페이스 람다 표현식에 사용할 수 있는 인터페이스 인터페이스 범위가 확장됨에 따라 여러 메서드가 정의되어 있을 수 있지만, 오직 하나의 추상 메서드만 존재한다면 함수형 인터페이스이다. 기본 형태 @FunctionalInterface public interface Consumer { void accept(T var1); default Consumer andThen(Consumer

JAVA에서 람다식(Lambda Expression)에 대해 정리해보기

람다식? 람다식 또는 람다 표현식(Lambda Expression)은 프로그래밍에서 흔히 사용되는 개념으로 익명 함수 등으로 불리기도 한다. 많은 프로그래밍 언어에서 람다식을 볼 수 있으며 Java에서는 이 람다 표현식을 Java8부터 추가되어 활용할 수 있다. 특징 기본 형태 (int param1, String param2) -> { DoSomething...} // 기본 (Parameter, ...) -> { DoSomething... } // 타입이 동일한 경우 () -> { DoSomething... } // 매개변수가 없는 경우 (Parameter, ...) -> DoSomething // 단일 실행문인 경우 (Parameter, ...) -> { return some; } // 단일 실행문이 ..

M1 맥북에서 내 SSD의 수명을 확인해보자

많은 사람들이 간과하고 있는 사실이, SSD 같은 저장 장치에는 수명이란 게 존재한다. 일반적인 환경에서 일반적인 유저들에게는 크게 문제되지 않지만, 엄청난 부하를 주는 일을 하거나, 설계 결함 등에 의해 과도하게 쓰기 작업이 반복되면 사실상 컴퓨터 교체 시기에 가까운 저장 장치 수명보다 짧아지게 된다. 일반적인 노트북이나 컴퓨터는 SSD가 별도의 부품으로 교체가 가능하기 때문에 SSD 수명이 다하는 것이 크게 문제되지 않는다. 하지만, M1 맥북은 이 모든 것이 보드에 탑재된 형식이고 수명이 다해버리면 사실상 기기 교체 수순을 밟게 된다. 게다가 스왑 메모리 이슈 때문에 M1 맥북의 SSD 수명이 빠르게 줄게 된다는 이야기가 퍼지면서, SSD의 상태를 확인하지 않을 수가 없었다. 먼저 수명을 확인 하기..

IT/IT 팁 2021.04.11

M1 맥북에서 MySQL 설치하기

MySQL은 호환성 문제가 없는 편인 것 같다. M1 맥북에서 MySQL을 설치하는 방법은 기존 맥과 다르지 않은 편인데, 혹시나 싶어서 망설이고 있는 사람들과 초보자들을 위해 글로 남긴다. 기본 설정 Homebrew는 맥을 사용해본 사람이라면 한 번쯤은 사용해본 패키지 관리자로, 이번 설치에서 활용할 수 있다. Homebrew를 설치하고 나서 cask 패키지를 설치하고 업데이트 체크를 한 번 수행해주자. brew install cask brew update MySQL 설치하기 Homebrew를 설치해줬다면, 이제 MySQL을 설치해볼 차례다. 먼저 아래 명령어를 통해 MySQL 패키지 목록을 확인해보자. brew search mysql 여기서 그냥 mysql을 설치한다고 하면, 기존 맥에서는 다음 명령..

객체 지향 설계 5원칙 - SOLID

이론적으로만 알고 있던 SOLID에 대해서 다시 한 번 정리해볼 필요가 있다고 생각해서 정리했다. 면접 준비할 때만 개념적으로 이해하고 있던 내용도 있고, 주변에서 항상 들어왔던 이야기를 바탕으로 최대한 신경 쓰려고 하는 원칙도 있었던 것 같다. 코딩 면접을 준비하는 사람들은 최소한 아래 용어에 대해서는 알고 있어야 한다. 이 글에서는 해당 용어에 대한 설명 외에도, 다른 분의 정리와 본인의 생각을 결합하여 끄적여봤다. SRP, Single Responsibility Principle, 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임?? 아무것도 모르던 시절엔 이 "책임"의 범위를 정하는 것이 가장 어려운 것 같다. 크고 작은 것을 어떻게 정할 것인지에 대한 기준이 필요하지 않을까?..

M1 맥북에서 파이썬 개발환경(아나콘다, 파이참) 설치하기

M1 실리콘 맥에서 파이썬 개발 환경을 설치해보자. 파이썬 개발 환경이라고 하면 대표적으로 사용하는 것이 아나콘다(Anaconda)와 파이참(Pycharm)일 것이다. 이 두 가지는 윈도우, 맥을 가리지 않고 사용하는 보편적인 툴이다. 아나콘다(Anaconda3) 설치하기 Anaconda | Individual Edition Anaconda's open-source Individual Edition is the easiest way to perform Python/R data science and machine learning on a single machine. www.anaconda.com 설치 순서는 상관 없지만, 먼저 아나콘다부터 설치해보도록 하자. M1 출시 초기에는 아나콘다 활용이 불가능하다는..

자바(Java)에서의 싱글톤(Singleton) 패턴에 대해 알아보자

Singleton이 무엇인가? Singleton은 어떤 클래스가 최초 한 번만 메모리에 할당하고(Static) 그 메모리에 대해서 객체를 만들어 사용하는 디자인 패턴이다. 생성자 호출이 반복적으로 발생한다고 하더라도, 새로운 인스턴스를 생성하는 것이 아니라 최초 생성된 인스턴스를 반환해주는 것을 말한다. Singleton을 왜 사용하는가? 고정된 메모리 영역을 얻으며 생성된 인스턴스를 계속 사용하기 때문에 메모리 낭비를 방지할 수 있으며, 생성된 인스턴스는 전역 인스턴스이기 때문에 다른 클래스의 인스턴스들이 데이터를 공유하기가 쉽다고 한다. DBCP(DataBase Connection Pool) 같이 공통된 객체를 여럿 생성해 사용해야할 때 많이 사용한다. Singleton 사용 시 조심해야 되는 부분 ..

MySQL에서 sql 파일로 데이터 추가 시 한글 깨짐 문제(feat:명령프롬프트)

Workbench 같은 좋은 SQL 관련 프로그램들이 많이 나와 있어서 흑백 바탕에 무언가를 입력하는 사람들이 많이 줄어든 것 같다. 그래도 아직까지는 명령어가 편한 사람들이 많고, 특히 입문자들은 명령 프롬프트(cmd.exe)를 이용해서 mysql에 접속해서 쿼리를 날리는 것 같다. MySQL 대부분의 인코딩 문제는 인코딩 관련 설정 문제라서 관련 글들을 참조하면 잘 해결할 수 있다. 보통의 경우 UTF-8로 데이터를 설정하는데 설정 문제에서 해결을 보면 좋지만, 그게 아닌 경우가 간혹 있다. 예를 들어, sql 파일을 source 명령어로 실행하는 경우라면 입력 데이터와 DB의 인코딩 설정이 문제가 아닐 수가 있다. 분명 모든 설정들, SQL과 입력되는 데이터까지 UTF-8로 인코딩이 되어 있는 상황..

자바(Java)와 메모리(Static, Stack, Heap)에 대한 정리

코드를 조금 더 실용적으로 작성하기 위해선 JVM의 메모리 영역들에 대한 이해가 필요하다. 모든 것을 다 Heap이나 Stack에 밀어 넣고 인스턴스 생성과 Thread Safe에 대해 고려하지 않는 등의 행위는 적절하지 않기 때문이다. 메모리 영역에 대한 이해와 그를 바탕으로 한 코드 설계는 개발자가 더 나은 코드를, 그로 인해 더 나은 개발자가 되기 위해서는 필수적이다. 세부적으로 따지면 코드 영역 같은 것도 있고 하지만, 크게 이렇게 다루고 신경써줘야 하는 부분은 static, stack, heap이다. 각 영역마다 특징적인 것들이 있고, 그렇다 보니 그 특징들을 고려해서 코드를 작성해야 인스턴스의 불필요한 생성을 방지하고, Thread Safe를 보장할 수 있으니 잘 짚고 넘어가는 것이 필요하다...

Redirect와 Forward에 대한 간단 비교

모든 내용을 언급하기 앞서 둘의 가장 큰 차이를 딱 하나로 말하라고 하면, 사용자에게(웹 브라우저에서) URL이 변경되어 보이는지 여부일 것이다. Forward Web Container에서의 페이지 이동만 진행되므로 웹 브라우저에는 해당 내용이 노출되지 않는다. 웹 브라우저에는 최초 호출 URL만 남아 있고, forward 과정에서 거쳐가는 URL은 노출되지 않으며, forward를 통해서 Request 객체와 Response 객체가 공유된다. 이러한 특성 때문에, 경우에 따라서 forward를 쓰면 문제가 발생할 수 있다. 예를 들어, 유저가 글쓰기나 삭제, 수정 과 같은 변경 작업을 요청으로 보냈고 그에 대해 응답을 할 수 있도록 forward로 응답 페이지를 불러온다고 가정하자. 이 과정에서 어떤 ..

728x90