'Programing'에 해당되는 글 58건

  1. 2016.02.13 JAVA 1.8 정리 (2)
  2. 2016.02.12 JAVA 1.8 정리 (1)
  3. 2016.01.12 JAVA static 선언 try catch
  4. 2016.01.11 Netty 인코더 디코더의 아주 간단한 개념
  5. 2016.01.11 Netty
  6. 2016.01.11 Linux 방화벽 설정
  7. 2016.01.11 ssh-keygen 키 인증
  8. 2015.12.08 socket operation on non-socket 에러
  9. 2015.12.02 ReverseString
  10. 2015.09.27 Selection Sort

identity function은 같은 타입의 값 그대로를 리턴하는 메소드이다.


public String f (String value) {

return "value is" + value;

}


의 방식이 아닌 말 그대로 받은 값 그대로 리턴을 해야한다.


public String f (String value) {

return value;

}


그럼 이 방식을 왜 사용하는가?


identity 방식을 사용하면 (return t->t;)

널 포인터에 관한 처리를 해줄 수 있기 때문


ps

Function 인터페이스의 identity()를 사용해도 된다.(자동으로 타입을 추론한다)


ex) 리스트의 숫자에 2를 곱한 값과 그렇지 않은 값을 출력하기


public class Ex1 {

public static void main(String[] args) {

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);


System.out.println("map (number, null)" + map(numbers, i->i*2));

System.out.println("map (number, null)" + map(numbers, null));

}


private static <T, R> List<R> map(List<T> list, Function<T, R> mapper) {

final Function<T, R> function;

if (mapper != null) {

function = mapper;

} else {

function = t -> (R) t;

}

final List<R> result = new ArrayList();

for(final T t: list){

result.add(function.apply(t));

}


return result;


}

}

방식에서 보듯이 null에 관한 처리를 해주고 있지만 identity function을 이용해 처리한다면


public class Ex2 {

public static void main(String[] args) {

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);


System.out.println("map (number, null)" + map(numbers, i->i*2));

System.out.println("map (number, null)" + map(numbers, i->i));

}


private static <T, R> List<R> map(List<T> list, Function<T, R> mapper) {

final List<R> result = new ArrayList();

for(final T t: list){

result.add(mapper.apply(t));

}


return result;


}

}


로 처리가 가능하다.


'Programing > JAVA' 카테고리의 다른 글

JAVA 1.8 정리 (2)  (0) 2016.02.13
JAVA 1.8 정리 (1)  (0) 2016.02.12
JAVA static 선언 try catch  (0) 2016.01.12
Netty 인코더 디코더의 아주 간단한 개념  (0) 2016.01.11
Netty  (0) 2016.01.11
This Keyword  (0) 2015.02.10
Posted by kimmyer kimmayer

댓글을 달아 주세요

java 8의 funtional programming을 통한 기술,


final List<Integer> number = Array.asList(1, 2, 3);

final String result = number.stream().map(String::valueOf).collect(joining(" , ");


의 경우

integer 였던 number의 리스트가 stream()의 map을 이용해 String value로 바뀌어 저장되고 collect joining 을 통해 ,가 붙여 지는 결과가 만들어진다.


즉 System.out.println(result)의 결과는

1, 2, 3이 된다.


public classExample {

public static void main (String[] args)

{

List<Integer> numbers = Arrays.asList(1,2,3,4,5,6,7,8,9);

String result = numbers.stream().map(String::valueOf).collect(Collectors.joining(" , "));

//Collectors를 추가하니 에러 없이 모두 정상 처리 되었다.

System.out.println(result);

}

}



'Programing > JAVA' 카테고리의 다른 글

JAVA 1.8 정리 (2)  (0) 2016.02.13
JAVA 1.8 정리 (1)  (0) 2016.02.12
JAVA static 선언 try catch  (0) 2016.01.12
Netty 인코더 디코더의 아주 간단한 개념  (0) 2016.01.11
Netty  (0) 2016.01.11
This Keyword  (0) 2015.02.10
Posted by kimmyer kimmayer

댓글을 달아 주세요

JAVA 개발 시 static으로 선언하고 싶은 메소드에 try catch 구문으로 감싸야 되는 경우 

static {

method();

}


방식으로 작성하면 static 안에서 try catch 구문을 작성 할 수 있다.

'Programing > JAVA' 카테고리의 다른 글

JAVA 1.8 정리 (2)  (0) 2016.02.13
JAVA 1.8 정리 (1)  (0) 2016.02.12
JAVA static 선언 try catch  (0) 2016.01.12
Netty 인코더 디코더의 아주 간단한 개념  (0) 2016.01.11
Netty  (0) 2016.01.11
This Keyword  (0) 2015.02.10
Posted by kimmyer kimmayer

댓글을 달아 주세요

네티에서 정의된 여러 클래스들은 갖다 붙이기만 해도 상황에 맞게 알아서 메소드를 호출한다.
(Event Driven:용자의 명령·마우스 클릭·다른 프로그램의 메시지·키보드 글쇠 입력 등의 ‘사건’에 따라, 제어 흐름이 결정되어 일을 하도록 하게끔 만들어진 프로그래밍 언어 방식을 뜻한다.)

때문에 별다른 정의 없이 클래스 객체만 파라미터로 선언해준다면 알아서 처리가 가능하다. 

Netty에서 디코더와 인코더는 받으면 디코더로 풀고 보낼 때 인코딩을 해서 보내는 개념
따라서 받은 문자열을 적당히 디코더로 처리해서 실제 값들을 확인하고 다시 보낼 때 인코딩을 통해 프로토콜 규약에 따라 문자열을 붙이거나 해서 통신을 한다.

인코더와 디코더는 클라이언트와 약속을 해서 어떻게 처리할지 미리 약속을 해야한다.


'Programing > JAVA' 카테고리의 다른 글

JAVA 1.8 정리 (1)  (0) 2016.02.12
JAVA static 선언 try catch  (0) 2016.01.12
Netty 인코더 디코더의 아주 간단한 개념  (0) 2016.01.11
Netty  (0) 2016.01.11
This Keyword  (0) 2015.02.10
접근 한정자 (member access)  (0) 2015.02.10
Posted by kimmyer kimmayer

댓글을 달아 주세요

2016. 1. 11. 22:51 Programing/JAVA

Netty

Netty 기본 설정으로는 Netty.io에 접속하여 Netty JAR파일을 다운로드 받는다.

이클립스에서 외부 JAR(다른 방법도 가능하지만) 추가로 JAR을 추가하면 되는데,


압축을 풀면 생성된 All-inone 을 통하여 Netty 프레임워크를 빌드 패스에 추가하도록 하자.


Netty-Source JAR파일을 통해서 네티 프레임워크의 모든 클래스와 메소드를 확인 할 수 있다.


PS. 상세한 설정 방법은 조만간 업데이트 하도록 하겠습니다...

'Programing > JAVA' 카테고리의 다른 글

JAVA static 선언 try catch  (0) 2016.01.12
Netty 인코더 디코더의 아주 간단한 개념  (0) 2016.01.11
Netty  (0) 2016.01.11
This Keyword  (0) 2015.02.10
접근 한정자 (member access)  (0) 2015.02.10
접근 한정자 예제(객체지향 예제)  (0) 2015.02.10
Posted by kimmyer kimmayer

댓글을 달아 주세요

리눅스마다 명령어가 다르고 같은 CentOS에서도 명령어가 다르지만 CentOS7을 기준으로

방화벽은 service firewalld stop으로 방화벽을 끄고 systemctl disable firewald로 재부팅해도 방화벽이 꺼져 있도록 설정하면 외부에서도 CentOS로 접근이 가능하다.


윈도우상 Mysql에서 리눅스로 접근하기 위해 여러 설정을 끝냈고(Mysql의 권한 주기) 방화벽 마저 없애고 나니 데이터베이스에 접근 가능하게 되었다.


권한을 줬음에도 불구하고 접근이 불가능하다면 방화벽 설정을 꼭 확인하자.

'Programing > Linux' 카테고리의 다른 글

Linux 방화벽 설정  (0) 2016.01.11
ssh-keygen 키 인증  (0) 2016.01.11
vim 설정방법  (0) 2015.02.10
Posted by kimmyer kimmayer

댓글을 달아 주세요

Secure Shell, 다른 컴퓨터로 로그인하거나 원격 시스템에서 명령을 실행

ssh 명령어를 통해 ip 혹은, 호스트@ip 등으로 원격 접속이 가능하다.
개인적인 설정은 일단 윈도우 hyper-v를 통해 centOS7을 설치했고
hyper-v로 네트워크 설정을 하고 ip를 고정시켜 cygwin(윈도우에서 사용하는 일종의 아주 간단한 리눅스)을 통해 centOS7에 원격으로 로그인 하였다.

패스워드를 입력하지 않는 키 인증으로는

먼저 cygwin에서 ssh-keygen으로 키를 생성하고 .ssh폴더 안의 id_rsa.pub안의 키 값을 복사한다.

다음 centOS7에서 root로그인 한 뒤 ssh-keygen으로 똑같이 .ssh 폴더를 생성하도록 하고 그 안의 authorized_keys 파일을 생성 하고 키 값을 복사 붙여넣기 하였다.

'Programing > Linux' 카테고리의 다른 글

Linux 방화벽 설정  (0) 2016.01.11
ssh-keygen 키 인증  (0) 2016.01.11
vim 설정방법  (0) 2015.02.10
Posted by kimmyer kimmayer

댓글을 달아 주세요

socket 생성이 제대로 되지 않는 에러라 생각하면 쉽다.


socket을 만들 때 socket 함수의 괄호의 짝이 맞는지 잘 확인해보자.


나의 경우 괄호 짝이 제대로 맞지 않아 엉뚱한 결과값이 나와 에러가 발생했다.



'Programing > C' 카테고리의 다른 글

socket operation on non-socket 에러  (0) 2015.12.08
간단한 스택 구현  (0) 2015.09.12
scanf를 %s와 %c로 받는 차이  (0) 2015.02.10
2차원 배열 함수 인자로 넘기기 예제  (0) 2015.02.10
전치행렬 구현  (0) 2015.02.10
피보나치 수열 재귀 함수, For loop  (0) 2015.02.10
Posted by kimmyer kimmayer

댓글을 달아 주세요

2015. 12. 2. 20:48 Programing/C++

ReverseString

#include <iostream>

using namespace std;



char *ReverseString(const char* src, int len)

{

char* reverse = new char[len + 1];

for (int i = 0; i < len; ++i)

reverse[i] = src[len - i - 1];

reverse[len] = NULL;

return reverse;

}



int main()

{

char ch[] = "hail to the king";

char* rch = ReverseString(ch, 16);


cout << ch << endl;

cout << rch << endl;

delete[] rch;

rch = NULL;

return 0;

}


첨고: 뇌를 자극하는 C++

'Programing > C++' 카테고리의 다른 글

ReverseString  (0) 2015.12.02
클래스 템플릿 비교  (0) 2015.09.04
두 정수가 같으면 true 다르면 false를 리턴하는 Equal 클래스  (0) 2015.09.04
함수 객체  (0) 2015.09.04
멤버 함수 포인터 선언  (0) 2015.09.04
형변환 연산자 오버로딩  (0) 2015.09.04
Posted by kimmyer kimmayer

댓글을 달아 주세요

//

//  main.cpp

//  ExampleCpp

//

//  Created by 김일호 on 2015. 7. 10..

//  Copyright (c) 2015 김일호. All rights reserved.

//


#include <iostream>

#include <string>

using namespace std;


void selection(int *arr);

void swap(int *num1, int *num2);


int main()

{

    int arr[5] = {4,3,9,1,2};

    selection(arr);

}


void selection(int arr[])

{

    int i, j;

    int min;

    for(i = 0; i<5-1; i++)

    {

        min = i;

        for(j = i+1; j < 5; j++)

        {

            if(arr[j] < arr[min])

                min = j;

        }

        swap(&arr[i], &arr[min]);

        

        cout <<i+1 <<"회전: ";

        for(int k = 0; k< 5; k++)

            cout << arr[k] << " " ;

        cout << endl;

    }

}



void swap(int *num1, int *num2)

{

    int temp;

    temp = *num1;

    *num1 = *num2;

    *num2 = temp;

}

'Programing > Algorithm' 카테고리의 다른 글

Selection Sort  (0) 2015.09.27
프로젝트 오일러 10번  (0) 2015.07.29
프로젝트 오일러 9번  (0) 2015.04.25
Recursive Fibonacci  (0) 2015.04.06
순환/재귀 팩토리알 구현  (0) 2015.04.06
3개의 숫자를 내림차순으로 정렬  (0) 2015.04.06
Posted by kimmyer kimmayer

댓글을 달아 주세요


블로그 이미지
IT 기술들 정리, 독후감을 주로 남깁니다!
kimmayer

공지사항

Yesterday4
Today1
Total6,419

달력

 « |  » 2019.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

최근에 달린 댓글

최근에 받은 트랙백

글 보관함