반응형

개발 & 데이터베이스 106

[JAVA] 얕은 복사와 깊은 복사에 대해서 알아보기

자바에는 얕은 복사 (Shallow Copy) 와 깊은 복사 (Deep Copy) 가 존재한다. 얕은 복사는 복사하려는 배열의 '주소값'을 복사함 깊은 복사는 '실제값'을 새로운 메모리 공간에 복사함 1차원 배열 - 얕은 복사 복사하려는 배열의 주소값을 가져옴 두 개의 배열 중 하나라도 값을 수정한다면 둘 다 수정됨 int[] A = {1, 2, 3}; int[] B = A; B[0] = 5; A[2] = 10; System.out.println(A[0]); // 5 System.out.println(B[2]); // 10 B[0]을 수정했지만 A[0]의 값도 변경되고, A[2]를 수정했지만 B[2]의 값도 같이 변하는 것을 볼 수 있다. - 깊은 복사 복사하려는 배열의 주소값이 아닌 실제값을 가져와서 ..

오라클 최대값, 최솟값 찾는 GREATEST, LEAST 함수 사용 및 주의사항

오라클에서는 함수 내의 인자값 중에서 최대값, 최솟값을 찾을 수 있는 함수를 제공한다. 최대값과 최솟값을 구하는 함수로 MAX 와 MIN 함수가 생각날텐데 사용 방법이 조금 다르다. MAX, MIN 은 검색 조건에 맞는 값 중에서 최대값, 최솟값을 찾는다. GREATEST, LEAST 는 여러 개의 열(Column)에서 최대값, 최소값을 찾고, 숫자가 아닌 문자열도 비교가 가능하다. GREATEST, LEAST SELECT GREATEST(100, 200, 300) AS GREATEST , LEAST(100, 200, 300) AS LEAST FROM DUAL; // 300, 100 여러 개의 인자값에서 최대값, 최소값을 뽑아올 수 있다. 위 쿼리의 GREATEST에선 300, LEAST에선 100이 출..

자바 String, StringBuffer, StringBuilder 차이

자바에서 문자열을 처리할 때 대표적으로 String, Stringbuffer, StringBuilder 3가지를 사용한다. 위 3가지의 차이점은 무엇일까? String int, long, float, char, boolean과 같은 primitive 타입이 아닌 reference 타입의 참조형 변수로 한 번 할당된 공간이 변하지 않는 immutable 자료형이다. String str = "Hello "; str += "World !!!"; 위의 그림을 보면 본래 가리키고 있던 "Hello" 를 버리고 "Hello World !!!" 라는 값을 가지는 메모리 영역을 가리킨다. immutable 자료형의 특징으로 문자열을 수정하게 되면 기존에 있던 메모리 영역은 Garbage Collection 으로 사라지..

자바 정적 (Static) 메서드 정의 및 생성, 사용 예시

정적 (Static) 메서드 정의 Java에서는 Static 변수와 메서드를 만들 수 있는데, 이를 정적 필드와 정적 메서드라고 부르며 이 둘을 합쳐서 정적 멤버(클래스 멤버)라고 합니다. 정적 필드와 정적 메서드는 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 고정된 멤버이므로 클래스 로더가 클래스를 로딩해서 메서드 메모리 영역에 적재할 때 클래스별로 관리합니다. 따라서 클래스의 로딩이 끝나는 즉시 바로 사용할 수 있습니다. [장점] 1. static 키워드를 붙이면 메모리 할당을 딱 한 번만 하게 되어 메모리 사용에 이점을 볼 수 있음. 그렇기에 항상 값이 변하지 않는 경우라면 static 키워드를 사용하는 것이 좋음 2. static으로 설정하면 같은 곳의 메모리 주소만을 바라보기 때문에 stat..

자바 파일 복사하는 4가지 방법

안녕하세요. 두부입니다. 이번엔 자바로 파일을 복사하는 방법에 대해서 포스팅해보려고합니다. 자바로 파일을 복사하는 4가지 방법을 알려드릴텐데 아래 방식만 알아도 파일을 복사하는데는 큰 어려움이 없을 것이라고 생각합니다. 현재 C:/test 경로에 excel_test.cell 이라는 파일이 있습니다. 이 파일을 4가지 방법으로 복사해보겠습니다. 자바로 파일 복사하는 방법 1. FileInputStream / FileOutputStream import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class Main { public static void main(String[] args) ..

Node.js 와 Java Spring boot 의 차이점

안녕하세요. 두부입니다. 서버 애플리케이션을 제작할 때 빠질 수 없는 프레임워크 Node.js 와 Spring boot의 차이점에 대해서 작성해보려고합니다. Node.Js JavaScript 언어로 실행될 수 있도록 해주는 프로그램 환경 싱글 스레드, Non-blocking I/O를 처리를 기반으로 빠른 속도를 가짐 CPU 대기 시간을 최소화 할 수 있음 CPU 부하가 적고 많은 커넥션을 동시에 처리해야하는 구조에 적합 C++로 개발된 V8 Javascript Engine 기반으로 확장성이 좋음 프론트엔드 개발자의 진입 장벽이 낮음 서비스 로직이 복잡해지거나 업무 난이도가 높을 경우, Type Safe를 하지 못하는 Javascript 특성상 런타임에러가 수없이 발생할 수 있음 비동기 제어가 어려움 ✅ ..

자바 이클립스 설정: 탭(Tab)을 공백(space) 4개로 변경하기

안녕하세요. 두부입니다. 이클립스에서 탭(Tab)키를 누르면 공백 4칸만큼 간격이 벌어지는데요. 공백 4칸만큼의 간격이 아닌 스페이스 4번을 눌렀을 때와 동일하게 변경하는 방법에 대해서 알아보겠습니다. 탭 키를 스페이스바 4칸으로 변경하는 방법 1. Window > Perferences 를 클릭한다. 2. General > Editors > Text Editors 메뉴에서 ✅ Insert spaces for tabs 를 체크 후에 Apply 를 클릭한다. 3. Java > Code Style > Formatter 메뉴에서 New 버튼을 클릭한다. 4. Profile name 에 본인이 원하는 이름을 입력 후 OK 버튼을 누른다. 5. Indentation > Tab policy 를 Spaces only ..

자바 해당 경로에 있는 모든 파일 압축하는 방법

안녕하세요. 두부입니다. 자바에서 제공하는 기능으로 파일 압축을 해보겠습니다. 이클립스 외에 필요한 것은 없고 아래의 코드는 아주 간단한 파일 압축 코드입니다. import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class Main { public static void main(String[] args) throws IOException { String filePath = "C:/test/a"; // 압축할 파일이 있는 ..

node.js로 디스코드 봇 실행하는 방법

해당 포스팅은 이미 채널에 디스코드 봇을 생성한 후에 진행되는 내용입니다. 디스코드 봇을 생성하는 법이 궁금하다면 본인 채널에 디스코드 봇 추가하기를 참고해주세요. Visual Studio Code와 Node.js는 설치되어있다는 가정하에 디스코드 봇을 실행하는 방법에 대해서 설명하겠습니다. Visual Studio Code는 https://code.visualstudio.com/ 에서 설치해주시면 됩니다. 설치 방법은 매우 간단해서 따로 포스팅하지 않았습니다. Node.js가 설치되어 있지 않다면 node.js 다운로드 방법을 참고해주시면 됩니다. 디스코드 봇 실행하는 방법 1. 터미널 > 새 터미널 2. 하단 터미널에 npm i discrod.js 를 입력한다. 3. 위 명령어를 입력하면 탐색기에 n..

본인 채널에 디스코드 봇 추가하는 방법

안녕하세요. 두부입니다. 게임을 좋아하시는 분이라면 디스코드를 모를 수가 없을텐데요. 디스코드에서는 아주 좋은 기능을 제공하고 있죠? 채널을 보다 편리하게 관리할 수 있도록 다양한 기능을 본인 입맛대로 수정할 수 있는데요. 실제로 많은 채널에서 디스코드 봇을 사용하고 있고, 오픈 소스도 많이 있어서 접근하기 굉장히 유리하다고 생각합니다. 지금부터 본인 채널에 디스코드 봇을 추가하는 방법에 대해서 알아보겠습니다. ① 디코 홈페이지에 접속해서 하단 메뉴에 개발자를 클릭한다. https://discord.com/ Discord | Your Place to Talk and Hang Out Discord is the easiest way to talk over voice, video, and text. Talk,..

반응형