Jini's Blog

Ing...

  • Home
  • Business
    • Internet
    • Market
    • Stock
  • Parent Category
    • Child Category 1
      • Sub Child Category 1
      • Sub Child Category 2
      • Sub Child Category 3
    • Child Category 2
    • Child Category 3
    • Child Category 4
  • Featured
  • Health
    • Childcare
    • Doctors
  • Home
  • Business
    • Internet
    • Market
    • Stock
  • Downloads
    • Dvd
    • Games
    • Software
      • Office
  • Parent Category
    • Child Category 1
      • Sub Child Category 1
      • Sub Child Category 2
      • Sub Child Category 3
    • Child Category 2
    • Child Category 3
    • Child Category 4
  • Featured
  • Health
    • Childcare
    • Doctors
  • Uncategorized

New Features Java 1.7(JDK 1.7)

 Jini     오전 1:10     JAVA     No comments   

■ The New Objects Class
  1) Objects.requireNonNull(T), Objects.requireNonNull(T, String)
    #. 아래 Person 객체 생성시 newLastName이나 newFirstName에 null이 들어갈 경우 NullPointerException 발생.
    #. Not Null임을 보장하고 있으므로 해당 Property를 사용할 때 Null 검사를 생략할 수 있음.
public class Person {

    private String lastName;
    private String firstName;
 
    public Person(final String newLastName, final String newFirstName) {
        this.lastName = Objects.requireNonNull(newLastName, "Last name cannot be null.");
        this.firstName = Objects.requireNonNull(newFirstName, "First name cannot be null.");
    }
 
    public String getLastName() {
        return lastName;
    }
    
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    
    public String getFirstName() {
        return firstName;
    }
    
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
}


  2) Objects.toString(Object), Objects.toString(Object, String)
    #. 인자가 하나인 메소드는 전달받은 Object가 Not null인 경우 Object의 toString() 결과를 리턴하며, null인 경우 "null"을 리턴한다.
    #. 인자가 둘인 메소드는 전달받은 Object가 Not null인 경우 Object의 toString() 결과를 리턴하며, null인 경우 전발받은 String 메시지를 리턴한다.
    #. toString() 메소드를 Override할 때 Null 체크를 별도로 하지 않아도 되는 편리함이 있다.
public class Bar {
    private Foo foo;
    private Bar parent;

    @Override
    public String toString(){
        return "Bar {foo = " + (foo == null ? "null" : foo.toString()) + ", parent = " + (parent == null ? "o parent, orphan" : parent.toString()) + "}";
    }
}
위 코드를 아래와 같이 수정할 수 있다.
public class Bar {
    private Foo foo;
    private Bar parent;

    @Override
    public String toString(){
        return "Bar {foo = " + Objects.toString(foo) + ", parent = " + Objects.toString(parent, "no parent, orphan") + "}";
    }
}
소스출처

  3) Objects.hash(Object...), Objects.hashCode(Object)
    #. Objects.hash(Object...) : 입력받은 모든 Object들에 대한 HashCode를 리턴한다.
    #. Objects.hashCode(Object) : Object가 null이면 "0"을 리턴, 그렇지 않으면 Object.hashCode()를 리턴한다.
public class Bar {
    private Foo foo;
    private Bar parent;

    @Override
    public int hashCode(){
        int result = 17;

        result = 31 * result + (foo == null ? 0 : foo.hashCode());
        result = 31 * result + (parent == null ? 0 : parent.hashCode());

        return result;
    }
}
위 코드를 아래와 같이 수정할 수 있다.
public class Bar {
    private Foo foo;
    private Bar parent;

    @Override
    public int hashCode(){
        return Objects.hash(foo, parent);
    }
}
소스출처

  4) Objects.equals(Object,Object), Objects.deepEquals(Object,Object)
    #. Objects.equals(Object,Object) : 두 입력값이 null이면 true를 null이 아니면 Object.equal(Object) 결과를 리턴한다.
    #. Objects.deepEquals(Object,Object) : 두 입력값이 Arrays Type인 것을 제외하고는 Objects.equals() 메소드와 동일하다.
public class Bar {
    private Foo foo;
    private Bar parent;

    @Override
    public boolean equals(Object obj){
        if (obj == this) {
            return true;
        } 

        if (obj instanceof Bar) {
            Bar other = (Bar) obj; 

            if (foo != other.foo) {
                if (foo == null || !foo.equals(other.foo)) {
                    return false;
                }
            } 

            if (parent != other.parent) {
                if (parent == null || !parent.equals(other.parent)) {
                    return false;
                }
            } 

            return true;
        } 

        return false;
    }
}
위 소스를 아래와 같이 변경할 수 있다.
public class Bar {
    private Foo foo;
    private Bar parent;

    @Override
    public boolean equals(Object obj){
        if (obj == this) {
            return true;
        } 

        if (obj instanceof Bar) {
            Bar other = (Bar) obj; 

            return Objects.equals(foo, other.foo) && Objects.equals(parent, other.parent);
        } 

        return false;
    }
}
소스출처

  5) Objects.compare(T,T,Comparator c) : 입력받은 두 값이 null인 경우에도 정상동작하며, true를 리턴해준다. null이 아닌 경우에는 c.compare(T, T) 결과를 리턴한다.

■ Collections class에 아래 3개의 method 추가 : Iterator를 만들 때 Null인 경우 아래의 Method를 사용할 경우 Null 처리가 간편해짐
  1) Collections.emptyIterator
  2) Collections.emptyEnumeration
  3) Collections.emptyListIterator
import java.util.Collections;
import java.util.Iterator;
public class Main {

  public static void main(String[] args) {
  
  }
  public static Iterator getMy(){
    String nullFlag = null;
    if(nullFlag == null){
      return Collections.emptyIterator();
    }
    return null;
  }
}
소스출처

참고자료 Post

계속...

정리하기 전에 링크부터

http://www.rapidprogramming.com/technology/differences-between-java-16-java-17-jdk-16-jdk-17-934
http://radar.oreilly.com/2011/09/java7-features.html
http://marxsoftware.blogspot.kr/2011/03/jdk-7-new-interfaces-classes-enums-and.html
http://eclipse.or.kr/wiki/Java_1.7c
http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html
http://en.wikipedia.org/wiki/Java_version_history#Java_SE_7_.28July_28.2C_2011.29
Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg

Design Patterns

 Jini     오전 12:20     JAVA     No comments   



01. Iterator Pattern
왜 for문을 사용하지 않고 Iterator를 구현할까? 기존 구문 변경없이 loop 순환이 가능함. 즉 특정 구현에 의존하지 않을 수 있게 디자인이 가능함.


02. Adapter Pattern


03. Template Pattern


04. Factory Method Pattern


05. Singleton Pattern


06. Prototype Pattern


07. Builder Pattern


08. Abstract Factory Pattern


09. Bridge Pattern


10. Strategy Pattern


11. Composite Pattern


12. Decorator Pattern


13. Visitor Pattern


14. Chain of Responsibility Pattern


15. Facade Pattern


16. Mediator Pattern


17. Observer Pattern


18. Memento Pattern


19. State Pattern


20. Flyweight Pattern


21. Proxy Pattern
필요할 때 생성한다.


22. Command Pattern

Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg

Redmine Text Format

 Jini     오후 1:22     Redmine     1 comment   

1. 글자색상 변경

%{color:red}dev%



2. 음영색상 변경

%{background:lightgreen} lightgreen%


3. 문단 넘버링(띄어쓰기 주의)

# 큰 제목
## 큰제목의 하위 제목
# 두번째 큰 제목
# 세번째 큰 제목

실제로는 다음과 같이 출력됨

1. 큰 제목
    1. 큰 제목의 하위 제목
2. 두번째 큰 제목
3. 세번째 큰 제목


4. 문단 단계화(띄어쓰기 주의)

* 큰 제목
** 큰제목의 하위 제목
* 두번째 큰 제목
* 세번째 큰 제목

Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg

Visual Studio 2013 팁 및 단축키(이클립스랑 비교)

 Jini     오후 9:54     Visual Studio     1 comment   

이클립스에는 있는데 VS에는 없어서 있었으면 하는 기능 중 실제로 있었는데 내가 몰랐던 것들



1. 한 줄 삭제

이클립스는 ctrl + d / VS는 ctrl + shift + l


2. 한 줄 그대로 복사하여 아래로 붙여넣기(위로 붙여넣기는 모르겠다.)

이클립스는 ctrl + alt + ↓ / VS는 복사하고자 하는 라인에서 영역을 선택하지 않은 상태로 ctrl + c 후 다시 ctrl + v



이클립스에는 없는데 VS에는 있는 기능중 깜짝 놀랄만한 것.


1. 코드가 도구상자에 등록이 되고 도구상자에 있는 코드를 드래그 해서 다시 가져올 수 있음.

코드를 드래그 해서 도구상자에 넣으면 끝. 가져올 때도 일반 Control 가져오듯이 드래그해서 가져오면 됨.


그 외 단축키


1. Code Indent

이클립스는 ctrl + I / VS는 ctrl + k 후 ctrl + D


2. 대응하는 괄호 찾기

이클립스는 ctrl + shift + p / VS는 ctrl + [


3. 대소문자 변환

이클립스는 ctrl + shift + y, ctrl + shitf + x / VS는 ctrl + u , ctrl + shift + u


4. 창분할(단축키는 아님)

[세로창분할]
이클립스는 ctrl + "{" / VS는 창 → 새창 → 창 → 새 세로 탭 그룹

[가로창분할]
이클립스는 ctrl + "_" / VS는 창 → 분할

Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg

윈도우(Window)에서 사용 포트 확인 및 프로세스 KILL

 Jini     오후 10:11     No comments   

1. 특정포트가 열려있는지 확인
- netstat -na | findstr "포트"

2. 열려 있는 포트의 PID 확인
- netstat -nao | findstr "포트"

3. PID 찾기
- tasklist | findstr "PID번호"

4. 프로세스 죽이기
- taskkill /f /pid "PID번호"
Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg
최근 게시물 이전 게시물 홈

Popular Posts

  • 구글 Blog + Markdown(StackEdit)
    구글 Blog + Markdown(StackEdit) StackEdit 구글 블로그는 글에 스타일을 적용하기 힘들다. 쉽게 스타일을 적용하기 위해 Markdown 문법 적용을 고려함. 방법을 찾던 중 Sta...
  • Design Patterns
    01. Iterator Pattern 왜 for문을 사용하지 않고 Iterator를 구현할까? 기존 구문 변경없이 loop 순환이 가능함. 즉 특정 구현에 의존하지 않을 수 있게 디자인이 가능함. 02. Adapter Pat...
  • 자신의 목표를 설정하는 방법
    1. 목표세우기 : 목표를 세울때는 가능한한 구체적이어야 한다. 또한 평가할 수 있고 실현 가능성이 있는 목표를 정한다. 장기 목표와 단기 목표로 나누고 데드라인을 분명히 하는 것이 좋다. 2. 우선순위 정하기 : 자신의 생활에서 중요한 순서대...
  • Redmine Text Format
    1. 글자색상 변경 %{color:red}dev% 2. 음영색상 변경 %{background:lightgreen} lightgreen% 3. 문단 넘버링(띄어쓰기 주의) # 큰 제목 ## 큰제목의 하위 제목 # 두번째 큰 제목 # ...

Recent Posts

Recent Posts Widget

Blog Archive

  • ►  2023 (4)
    • ►  3월 (1)
    • ►  2월 (1)
    • ►  1월 (2)
  • ►  2022 (1)
    • ►  2월 (1)
  • ►  2020 (8)
    • ►  7월 (1)
    • ►  4월 (3)
    • ►  3월 (4)
  • ►  2018 (1)
    • ►  7월 (1)
  • ►  2015 (1)
    • ►  5월 (1)
  • ▼  2014 (5)
    • ▼  8월 (1)
      • New Features Java 1.7(JDK 1.7)
    • ►  7월 (1)
      • Design Patterns
    • ►  6월 (1)
      • Redmine Text Format
    • ►  5월 (1)
      • Visual Studio 2013 팁 및 단축키(이클립스랑 비교)
    • ►  1월 (1)
      • 윈도우(Window)에서 사용 포트 확인 및 프로세스 KILL
  • ►  2013 (10)
    • ►  12월 (1)
    • ►  11월 (1)
    • ►  9월 (2)
    • ►  8월 (3)
    • ►  7월 (3)
  • ►  2012 (1)
    • ►  3월 (1)

Categories

  • 객체지향 (1)
  • 도서요약 (1)
  • 문법에서 문장까지 (2)
  • 일상 (1)
  • 자기계발 (1)
  • 책 (1)
  • 키보드 (1)
  • 키크론 (1)
  • blogspot (2)
  • error (1)
  • exception (1)
  • GIT (1)
  • JAVA (6)
  • JUNIT (1)
  • K8 PRO RGB (1)
  • kafka (1)
  • markdown (1)
  • mongodb (2)
  • mongotemplate (1)
  • optional (1)
  • Oracle (4)
  • Redmine (1)
  • spring (1)
  • stackedit (1)
  • troubleshooting (1)
  • Visual Studio (1)
  • Webflux (1)

Unordered List

Pages

  • 홈

Text Widget

Categories

Tags

Facebook

  • Home
  • Features
  • _Multi DropDown
  • __DropDown 1
  • __DropDown 2
  • __DropDown 3
  • _ShortCodes
  • _SiteMap
  • _Error Page
  • Documentation
  • Video Documentation
  • Download This Template

Footer Menu Widget

  • Home
  • About
  • Contact Us

Social Plugin

JINI. Powered by Blogger.

Copyright © Jini's Blog | Powered by Blogger
Design by Hardeep Asrani | Blogger Theme by NewBloggerThemes.com | Distributed By Gooyaabi Templates