본문 바로가기

전체보기

(244)
Redis 소개와 설치 방법, 보안 설정 방법(ip 허용, 비밀번호 설정)등 빠르게 세팅하기 Redis란? : Remote Dictionary System의 약자로 쉽게 말하면 "인메모리 원격 캐시 서버" 정도로 생각하면 된다.흔히 사용하면 데이터베이스와 크게 다르지 않아 NoSQL DBMS로 분류할 수도 있고 인 메모리라는 특성에 때문에 In memory 솔루션으로 분류할 수도 있다.저 같은 초급 개발자 수준에서 설명하면 DB랑 다를게 없다. Oracle이나 MySQL처럼 redis-server process를 ip, port에 띄워놓고 접근해서 저장하고 가져다 쓰고하는게 전부다.더 이상 설명할게 없다. 마치 mybatis가 따로 책으로 나오지 않는 것처럼 redis 공식 홈페이지뿐만 아니라 일반 블로그같은 사이트만 봐도 충분히 이해하고 사용가능하기 때문에 redis책도 따로 없다. (물론 최..
Java 성능 좋은 분기문을 쓰는 방법, if문에서 연산 순서 (if문에서 좋은 퍼포먼스를 만들기, && || 연산자 우선 순위) Java에서 좋은 if문 코드를 작성하는 방법 코드 분석을 하다가 우연히 if문의 '||' 연산자와 '&&' 연산자를 보면서 최적화에 대해 생각해보게 되었다.여러 참고 사이트를 보면서 나름대로 정리를 하게되었다.신입 개발자들도 한 번 정도 고려하면서 코딩을 하면 좋을 듯 하다.먼저, 좋은 if문 코드를 작성하기에 앞서서 자바 연산자 우선 순위를 알고 있어야 한다. 결합 방향에 대해서는 최신 자바 기준으로 정확하지 않을 수 있으므로 우선 순위만 참고하면 된다.다양한 프로그래밍 언어들에서 연산자 우선 순위가 비슷하다보니 한 번 보고 넘기는 경우가 많은데 다시 한 번 상기시킬 필요가 있다.||, && 연산자 우선 순위와 단축 평..
자바 애플리케이션에서 FTP 파일 전송하는 방법 upload sample (Apache commons-net 라이브러리) 자바로 FTP 통신하기 (파일 업로드) 파일질라, 알FTP(?) 같은 훌륭한 FTP프로그램들이 이미 있지만 자바로 간단하게 파일을 전송하는 프로그램을 찾아보았다.(사실 텔넷으로 명령어 쓸 일이 있어서 telnet 라이브러리를 찾다가 ftp도 흥미가 생겨 한번 사용해보는 것...)* 참고로 apache에서 commons-net 이라고 라이브러리를 제공하는데 여기에 telnet도 있고 NTP, FTP등 다양한 일반적인 프로토콜이 있어서 일반적인 프로토콜 통신 기능을 쉽게 사용할 수 있다.ftp로 통신을 하려면 먼저 ftp서버가 돌고 있어야 파일 전송을 받아준다.virtual machine 을 사용해서 리눅스(우분투)를 설치한 후에 ftp서버를 사용할 수 있게 바꿔줘야 한다. (마지막에 설명함)12345678..
.ini 파일 입출력, ini파일 구조와 ini4j 라이브러리를 이용하는 방법 (feat. java.util.Properties 사용하기) .ini 파일 입출력하기 애플리케이션을 실행시키기 전에 필요한 설정들을 따로 파일(.ini 파일 또는 .conf, .properties파일 등)에서 가져와 실행하는 방법을 많이 쓴다.초기 설정 파일의 포맷은 다양한데 그 중 .ini파일에 대해 알아보고 입출력 해보겠다..ini파일은 일반적인 .properties파일과는 다르다..properties 파일같은 경우에는 보통 단순하게 "key = value" 식으로 작성해서 입출력하는 방식이다.1234ip = 192.168.0.11port = 5000rootpath = C:\Users\jeongproid = jeongpro 구성도 간단하고 입출력하는 방법도 간단하다.반면에 .ini파일은 조금 더 추가되어 Section, Key, Value로 구성되어 있다.12..
Java TCP 소켓 프로그래밍 예제 - 채팅프로그램 만들기 (멀티 쓰레드) TCP 소켓 프로그래밍 튜토리얼, 채팅 프로그램 TCP/IP를 이용한 소켓 프로그래밍으로 채팅 예제를 만들며 이해해본다.코드를 살펴보며 정리한다.* 채팅 서버 코드123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108package nio; import java.io.BufferedReader;import java.io.InputStreamReader;import java.io...
자바 IO에서는 생성자만 보면 된다! (상속, 바이트스트림, 문자스트림, 객체스트림) 자바 IO를 이해하기 전 "상속"을 명확히 이해하자. 자바에서 입출력(IO)을 이해하려면 "상속"을 명확하게 이해하고 있어야 한다.상속? 객체 지향 프로그래밍에서 클래스의 재사용을 위해서 자식클래스가 부모클래스의 메소드등을 물려받는 것 아닌가?오버라이딩, 오버로딩을 떠나서 단순하게는 맞지만 여기서 중요한 점은 생성자, 메소드의 파라미터를 보는 시각이 명확해야하는 점과 IO클래스들이 상속을 통해 클래스를 조립해서 입출력하는 방법을 다르게 하는 점이다.1public static void print(String str){...} 이 메소드를 어떻게 해석해야 할까?"print라는 메소드가 String클래스의 파라미터를 받는다."정확한 답은 아니다."print라는 메소드가 String클래스와 String클래스의 ..
Thread를 올바르게 생성, 시작, 중단하는 방법(feat. daemon thread와 자바런타임 메모리 공유) 쓰레드(Thread)를 올바르게 생성, 시작하는 방법 쓰레드, 프로세스가 무엇이고 어떻게 생성하는지는 다른 포스트에 이미 있으니 생략한다.http://jeong-pro.tistory.com/71?category=773575 ▶ 쓰레드를 생성할 때는 Runnable 인터페이스를 상속한 Runnable객체를 생성시키는 방법을 사용해라.쓰레드를 생성하는 일반적인 방법으로 두 가지가 있다. 1. Thread 클래스를 상속받고 run()메소드를 오버라이딩해서 정의한 후 실행하는 방법 2. Runnable 인터페이스를 확장해 run()메소드를 구현해 정의한 후 실행하는 방법왜 Runnable 인터페이스를 확장하는 것이 좋을까?그 답은 상속과 인터페이스에 있다. 자바 다중상속을 지원하지 않기 때문에 상속은 하나의 클..
ES6 이진 탐색 트리 구현하기, 어떻게 특정 값을 빠르게 찾을 수 있을까? (Binary Search Tree, BST) 이진 탐색 트리 (Binary Search Tree with ES6) 트리 구조에 대해서는 많이 들어보았다고 생각한다.어렵게 생각할 것도 아닌 그냥 루트(root)노드에서 하위 노드로 계층 구조를 갖는 것을 트리라고 보면된다.윈도우 파일시스템 구조처럼 C드라이브 하위에 windows디렉토리, program files디렉토리 등이 있고 program files디렉토리 하위에 Java디렉토리가 있는 등 이런 구성이 트리다.각설하고. 프로그래밍에서 노드 2개 이하로 제한하는 방식을 이용해 이진 탐색 트리(BST)라는 것을 만들었다.노드가 2개이하라는 특징 덕분에 프로그래밍에서 특정 값 검색을 빠르게 할 수 있게 되었다.이진 탐색 트리는 루트 노트를 기준으로 루트 노트보다 작은 값은 왼쪽 하위노드로, 루트 노트..