[해상도]


1. 인치 (inch) 2.54cm

   스마트폰 인치란, 물리적 스크린 크기의 대각선의 길이를 말합니다.


2. PPI (pixel per inch)

   ppi란, 1인치 당 몇 개의 픽셀(pixel)로 이루어졌는 지를 나타내는 단위 입니다.


3. DPI (dot per inch)

   dpi란, 1인치 당 몇 개의 도트(dot)로 구성되어 있는 지를 나타내는 보통 인쇄물에서 점을 해

   상도로 표현할 때 쓰는 단위 입니다.  


   스마트폰 해상도에서 dpi는 물리적 스크린 영역 내의 화소의 밀도(density)를 표현합니다.

   쉽게 말하면, 같은 화면 크기에 얼마나 많은 색을 채워 넣을 수 있는 정도이지요.


   1 dp 는 160dpi(mdpi) 스마트폰 스크린에서 1 px 에 해당합니다.

   즉, 320dpi(xhdpi) 스마트폰 이라면 1dp 는 2 px 겠지요!?

   이것을 다시 수식으로 표현하면 1dp = (디바이스dpi / 160) px 입니다

'안드로이드' 카테고리의 다른 글

ADB 명령어  (0) 2017.08.18
메모리  (0) 2017.08.18
프래그먼트에서 OptionMenu 사용  (0) 2017.04.07
안드로이드 업로드 이미지 리사이징  (0) 2017.04.05
안드로이드 스튜디오 단축키  (0) 2017.04.05

팩토리얼(Factorial)

1부터 n까지의 연속된 자연수를 차례로 곱한 값입니다.

기호로는 n!과 같이 느낌표(!)를 사용합니다.

예를 들어 5! 1*2*3*4*5 이기 때문에 120입니다.

'자바' 카테고리의 다른 글

선택정렬  (0) 2017.04.13
삽입정렬  (0) 2017.04.13
비트연산자  (0) 2017.04.07
자바  (0) 2017.04.05
추상클래스  (0) 2016.08.17

 1. API16(젤리빈) 미만 버전에서는 AsyncTask 선언을 UI Thread에서 해주지 않으면 오류가 발생한다.

    해결방법 : Activity나 Application 등 UI스레드 아래와 같이 AsyncTask를 한번 호출합니다.

     Class.forName("android.os.AsyncTask");

 

 2. API 16 이상(JELLY BEAN)의 버전에서는 자유롭게 사용해도 된다.

 

 3. excutes(Params)는 UI 스레드에서 직접호출해야합니다

 

 4. Task는 오직 한번만 실행될 수 있습니다.

 

 5. 구현한 액티비티 종료 시 별도의 지시가 없다면 종료되지 않습니다.

 

 6. 하나의 객체이므로 재사용이 불가능합니다. (객체를 새롭게 생성하면 되지만 메모리 효율 나빠짐)

 

 7. AsyncTask 는 순차적으로 하나의 스레드에서 실행되었으나, 도넛의 시작과 함께 병렬 처리 가능한      

    스레드 풀로 바뀌었다. 허니콤의 시작과 함께 병렬 처리의 에러를 피하기 위해 다시 싱글 스레드로   

    실행되게 되었다. 만약 당신이 병렬 처리를 원한다면     

    myTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); 처럼 사용할 수 있다.

'안드로이드 > AsyncTask' 카테고리의 다른 글

AsyncTask(2)  (0) 2017.04.05

public class Main {


public static void main(String[] args) {

int [] select = {7,9,4,3,1};

int temp;

for (int i= 0; i< select.length; i++) {

            temp = select[i];

for (int j= i+1; j< select.length; j++) {

if (select[i] > select[j]) {

temp = select[i];

select[i] = select[j];

select[j] = temp;

}

}

System.out.println(""+select[0] +  select[1] + select[2] + select[3] + select[4]);

}

}

}



'자바' 카테고리의 다른 글

팩토리얼(Factorial)  (0) 2017.08.18
삽입정렬  (0) 2017.04.13
비트연산자  (0) 2017.04.07
자바  (0) 2017.04.05
추상클래스  (0) 2016.08.17

두번째 index를 기준으로 

이전 숫자와 대소비교를 합니다.

그래서 자기의 위치를 찾습니다.


public class Main {

public static void main(String[] args) {

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

int j, b;

int temp;

for (int i= 1; i< insert.length; i++) {

j = i; 

b = i;

while (j > 0) {

j = j - 1;

if (insert[b] < insert[j]) {

          

temp = insert[b];

insert[b] = insert[j];

insert[j] = temp;

b = b- 1;

}

}

                                        

System.out.println(""+insert[0] +  insert[1] + insert[2] + insert[3] + insert[4]);

}

}


}



'자바' 카테고리의 다른 글

팩토리얼(Factorial)  (0) 2017.08.18
선택정렬  (0) 2017.04.13
비트연산자  (0) 2017.04.07
자바  (0) 2017.04.05
추상클래스  (0) 2016.08.17

mysql 에는 데이터를 암호화, 복호화하는 AES_ENCRYPT, AES_DECRYPT 함수가 있습니다. 이 암호화는 128비트 길이로 인코딩되어 저장됩니다. 그러나 소스를 수정해서 256비트까지 확장시킬수 있다고 합니다.

AES_ENCRYPT 는 문자열을 암호화하고, 바이너리 문자열을 반환하지만, AES_DECRYPT 는 암호화된 문자열을 복호화합니다. AES_DECRYPT 는 유효하지 않은 데이터는 padding을 감지하고, NULL을 반환합니다.

 # "암호화 키"는 임의의 값이 올 수 있으며, "문자열"은 암호화하고자 하는 값이 됩니다.

 # AES_ENCRYPT 암호화
  INSERT INTO 테이블명 VALUES (HEX(AES_ENCRYPT('문자열', '암호화 키')));
 
 # AES_DECRYPT 복호화
  SELECT AES_DECRYPT(UNHEX(필드명), '암호화 키') FROM 테이블명;


예제 (ex #1

 # AES_ENCRYPT 암호화
 INSERT INTO tbname VALUE (HEX(AES_ENCRYPT('123456','가나다라')));
 // 결과: 5A33E11DC0B638E4E5E74EBD52F55E3D

 # AES_DECRYPT 복호화
 SELECT AES_DECRYPT(UNHEX(필드명), '가나다라') FROM tbname;


 연산자

기능 

사용 예 

 & (비트 AND)

두 피연산자의 대응되는 비트가 모두 1이면 1을 반환 

 a & b

 | (비트 OR)

 두 피연산자의 대응되는 비트에서 둘 중 하나가 1이거나 모두 1인 경우 1을 반환

a | b 

 ^ (비트 XOR)

두 피연산자의 대응되는 비트에서 서로 같은 경우에는 0을, 다른 경우에는 1을 반환

a ^ b 

 ~ (비트 NOT)

 피연산자의 비트를 뒤집음

~ a 

 <<

 a의 2진수 표현을 b 비트만큼 왼쪽으로 이동함. 오른쪽은 0으로 채움

a << b 

>> 

 a의 2진수 표현을 b 비트만큼 오른쪽으로 이동함. 오른쪽 남는 비트는 버림

a >> b 

 >>>

 a의 2진수 표현을 b 비트만큼 오른쪽으로 이동함. 오른쪽 남는 비트는 버리고, 왼쪽은 0으로 채움.

a >>> b 



public class Main {


public static void main(String[] args) {
// TODO Auto-generated method stub

//384= 128 + 256
int num[] = {1,2,4,8,16,32,64,128,256,512,1024,2048};

for (int i=0; num.length > i; i++) {

if ((384 & num[i]) > 0) {
System.
out.println(num[i]); //128 256 }
}

}

}




'자바' 카테고리의 다른 글

팩토리얼(Factorial)  (0) 2017.08.18
선택정렬  (0) 2017.04.13
삽입정렬  (0) 2017.04.13
자바  (0) 2017.04.05
추상클래스  (0) 2016.08.17
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}

위와 같이 setHasOptionsMenu(true)를 해줘야 한다.

public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case android.R.id.home:
getActivity().onBackPressed();
}
return super.onOptionsItemSelected(item);
}


'안드로이드' 카테고리의 다른 글

메모리  (0) 2017.08.18
해상도  (0) 2017.08.18
안드로이드 업로드 이미지 리사이징  (0) 2017.04.05
안드로이드 스튜디오 단축키  (0) 2017.04.05
RecyclerView (admob) 추가하기  (0) 2017.04.05

+ Recent posts