8월, 2019의 게시물 표시

Git 명령어 모음

Branch - remote branch 삭제 # 방법 1: remote 바로 삭제 $> git push origin --delete feature/TEST-860 # 방법 2: 로컬 삭제 -> remote push $> git branch -d feature/TEST-860 $> git push origin :feature/TEST-860 - remote branch push 1) git push {원격저장소명} {로컬브랜치명} 2) git push {원격저장소명} {로컬브랜치명}:{원격브랜치명} $> git push origin aaa/123 $> git push origin aaa/123:bbb123 - rename local branch $> git branch -m {old_branch} {new_branch} Checkout - 모든 unstaged 변경 HEAD로 $> git checkout -- . - 특정 unstaged file HEAD로 $> git checkout -- path/to/file/to/revert Reset - stage된 파일 되돌리기 $> git reset HEAD -- path/to/file - 모든 파일 되돌리려면 $> git reset HEAD -- . Commit - commit 합치기 (주의) remote 변경 적용은 강제 push. 반드시 origin은 다른 사람에 의해 변경이 없다는 것을 확인하고 할것. (그렇지 않으면 재앙이 닥칠것임) # commit squash $> git rebase -i HEAD~2 # remote push forcefully $> git push -f origin <branch-name> Tag - 태그 조회 $> git tag - 태그 달기 # lightweight $> git ta

Java 8 Lambda Function 용어 정리

* Lambda Function = anonymous function * Free Variable (<-> Local Variable) 해당 함수 외부의 참조 변수를 free variable이라 부른다. free variable 종류 static 변수 member 변수 local 변수(람다가 속해 있는 함수의 local 변수를 말함) 비고) 3번의 local 변수는 final의 특성(읽기만 가능)을 가져야 하는데 이유는 아래 코드를 보자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 public void lambdaTest () { int base = 1000 ; new Thread ( = () -> { try { Thread . sleep ( 1000 ); base = 999 ; } catch ( Exception e ) { /* do nothing */ } }). start (); System . out . println ( base ); } 각 변수들의 jvm 상의 위치를 예상해 보면, 1번은 method area에 2번은 java heap에 3번은 해당 함수가 실행되는 stack에 위치하게 될 것이다. 그러면 위와 같은 코드에서 lambdaTest() 함수가 끝나버리면 stack이 pop 됨으로 lambda 내부에서 잘못된 local 변수를  참조할 수 있다. 그러므로 3번의 local 변수 참조는 읽기만 가능하다. * Lambda Capturing lambda body 안에서 free variable을 사용할수 있도록 해주는 동작

Java Phantom Reference Sample

Java의 reference에는 4가지가 있다. Strong reference Soft reference Weak reference Phantom reference 자세한 내용은 java.lang.ref 문서를 참고. 이중 phantom reference는 잘 쓰이지 않고 샘플 코드도 찾아보기 힘든데 괜찮아 보이는 샘플 코드가 보여 이를 포스팅 해 본다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 package ref . phantom ; public class MyObject { private int [] ints = new int [ 1000 ]; private final String name ; public MyObject ( String name ) { this . name = name ; } @Override public String toString () { return name ; } @Override protected void finalize () throws Throwable { System . out . printf ( "%s is finalizing.%n" , name ); } } 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 package ref . phantom ; import java.lang.ref.PhantomReference ; import java.lang.r

Chrome에서 다른 탭을 열때 자동으로 Developer tool 열기

이미지
때로는 chrome developer console이 자동으로 열렸으면 할때가 있다. 코드에서 팝업 혹은 새로운 탭을 열어 버릴때... 같은 탭이 아니니 새탭의 request를 볼수가 없다...ㅜㅜ 이럴때 아래와 같이 developer console 자동 실행을 설정해 두면 편리하더이다~