애플실리콘을 사용하면서 한글랙이 심해짐을 느꼈습니다. 처음에는 그래도 기다릴만했는데

나중에는 1초에 자음모음 하나씩 입력되는경우가 발생했습니다. 그래서 apple에 문의하여 여러가지 방법을 알려줘서 실행해본결과 지금은 잘 되는 상태입니다.

딜레이가 심하게 걸리는경우 아래 방법을 시도해 보세요.

  1. 오탈자 검사기능 끄기.
    • 설정-키보드-택스트 의 모든 체크박스 해제, 스펠링 us.english로 변경
  2. 설정된 로제타 재설정
    • 맥 실리콘에서는 인텔과 맥실리콘용 앱을 모두 실행할수 있도록 로제타 라는 가상머신을 동작시키는데 알수없는 이유로 꼬여버린(?) 경우가 있을수 있다고 합니다.
  3. 재시작 할때마다 자동실행되는 프로그램때문에 그럴수 있습니다.
    • 자동실행 앱 끄는방법: 유저&그룹 -> 자물쇠 해제 -> 현재계정클릭 -> 우측 로그인 아이템탭 클릭 -> 항목에 나와있는 어플리케이션 다 (-) 해준다.(로그인시 자동실행 해제)
  4. 재시작할때마다 intel용 어플리케이션이 실행중이라면 로제타 설정을 변경할수 없을수(?) 있다고 합니다. 그래서 실행하는 어플리케이션이 인텔용이면 “로그인시 자동실행을 끄는것을 추천” 한다고 합니다.
  5. 로제타 때문에 그럴수 있다.(추측) 그러기 때문에 로제타 설정을 다시 할수 있도록 한다. (안전모드로 로그인하면 로제타 셋팅이 된다고 한다.)
    • 안전모드로 접근해서 로제타 샛팅을 다시 해봅니다.
    • 방법:컴퓨터 끄기 ->  꺼진상태에서 전원버튼을 10초정도 누른다. -> 맥킨토시HD가 뜨면 시프트 누른상태에서 맥킨토시 HD아래 버튼 클릭(리커버리였나?)  ->(우측상단에 빨간safe mode 문구가 뜬다.) 아무 계정이나 로그인한다. (이부분이 로제타를 재설정해준다고 한다) -> 로그인하면 조금있다 다시 로그인창이 뜨는데 이때 다시 로그인 -> 로그인이 되고 메인화면이 나온다. -> 컴퓨터 재시동을 한다.
  6. 그래도 한글랙이 사라지지 않을경우
    • 맥 셋팅시 자동으로 설치된 어플리케이션 이외에 사용자가 추가로 설치한 어플리케이션을 모두 지운상태로 다시 설치해봅니다.
    • 계정이 여러개 있을경우 다른 계정에서의 추가설치 어플리케이션을 모두 지운뒤 다시 설치해 봅니다.
  7. 그래도 한글랙이 심할경우
  • 1~5번 모두 apple문의전화로 알려준 방법입니다만... 그래도 발생한다면 1~5번의 시행을 모두 설명하고 추가 방법을 문의해야할듯 합니다.

테이블을 생성하고 데이터를 집어넣는 방식은 다음과 같다. 

테이블을 생성하고

CREATE TABLE TEST01(
key01 VARCHAR(10),
key02 VARCHAR(10),
key03 VARCHAR(10),
key04 VARCHAR(10)
);

 

값을 넣어본다.

INSERT INTO test01(key01, ket02, key03, key04)
VALUES('하나', '둘', '셋', '넷');

-- 테이블의 변수를 작성하지 않아도 된다. 

INSERT INTO test01
VALUES('하나', '둘', '셋', '넷');

두번쨰 방법의 경우 변수를 직접 치지 않아도 되어 편리하지만, 값을 입력시 테이블 선언 순서에 따라서 입력이 되고, 갯수에 맞춰 입력하지 않는다면 나머지는 NULL로 입력이 된다. 

 

 

'it > SQL(ORACLE)' 카테고리의 다른 글

테이블 생성, 제약조건설정(constraint), 테이블 복제  (0) 2019.12.19

CREATE TABLE

테이블 생성형식

CREATE TABLE 테이블 이름 (
        컬럼명1 DATATYPE [DEFAULT 형식],
        컬럼명2 DATATYPE [DEFAULT 형식],
        컬럼명3 DATATYPE [DEFAULT 형식]
);
CREATE TABLE TB_TEST02(
KEY_01 VARCHAR2(10),
KEY_02 VARCHAR2(10),
col_01 VARCHAR2(10),
col_02 VARCHAR2(10),
CONSTRAINT PK_TEST_02 PRIMARY KEY(KEY_01, KEY_02)
);

제약조건은 아래와 같이 붙는다. 테이블 변수명 바로 오른쪽에 선언해 줘도 되지만, 중복선언일때는 바로 위 예제와 같이 바 CONSTRAINT ~~ 부분에 중복선언해주는것이 가능하다. 

한 테이블당 PK(Primerykey) 는 32개 까지 가능하다고 한다. 

PRIMARY KEY : 고유키라고 하며 데이터를 구별하기 위한 식별키. 다른 테이블에서 참조하고자 할때 해당 칼럼을 통해 다른 값을 불러올 수 있다. 

UNIQUE KEY : 테이블에 데이터 저장시 행(세로) 데이터의 중복이 없이 적용되도록함. 주로 EMAIL중복체크를 할때 사용됨.

NOTNULL : NULL값 입력금지 하려 할때 사용한다. 

CHECK : 입력할 수 있는 값을 제한한다. (TRUE/FALSE 로 값을 반환)

FOREIGN KEY : 테이블간의 관계를 정의하기위해 다른테이블에 기본키를 다른테이블에 외래키로 지정해둔다.  무결성 제약 조건 옵선을 선택할 수 있다. 

 

테이블 구조확인 : DESC

-> DESC 테이블명;

 

테이블생성시 테이블 구조와 값을 복사해 올 수 있다. 

테이블 복제

CREATE TABEL test01(
AS SELECT * FROM employeers
);

테이블 생성을 선언함과 동시에 AS 를 이용해 복사할 데이터의 양을 SELECT 문을 통해서 설정하면 된다. 

테이블 복제 - 데이터값 제외하기

CREATE TABEL test01(
AS SELECT * FROM employeers
WHERE 1=2
);

다음과 같이 구조는 복제하되, 해당 테이블의 값을 제외하고자 할떄 결과 값이 나올수 없는 코드를 입력하면 테이블의 구조만 복사가되고 값은 복사되지 않은 상태로 복제가 된다. 

** WHERE 1=2

테이블수정 : 테이블명 수정하기

ALTER TABLE TB_TEST04
RENAME TO TB_TEST99;

 

테이블수정 : 칼럼추가(단일추가)

ALTER TABLE TB_TEST99
ADD hello VARCHAR(10);

ALTER TABLE [테이블명]
ADD [변경할 테이블명] [자료형](길이);

 

테이블수정 : 칼럼추가(다수추가)

ALTER TABLE TB_TEST99
ADD (hello1 VARCHAR(10), hello2 VARCHAR(10), hello3 NUMBER(5,2));

ALTER TABLE [테이블명]
ADD (
		[변경할 테이블명1] [자료형](길이),
        [변경할 테이블명2] [자료형](길이),
        [변경할 테이블명3] [자료형](길이),
        .........
        [변경할 테이블명n ] [자료형](길이)
    );

 

테이블수정 : 칼럼수정(단일)

ALTER TABLE TB_TEST99
ADD hello VARCHAR(10);

ALTER TABLE [테이블명]
MODIFY [변경할 테이블명] [자료형](길이);

테이블수정 : 칼럼수정(복수)

ALTER TABLE TB_TEST99
ADD (hello1 VARCHAR(10), hello2 VARCHAR(10), hello3 NUMBER(5,2));

ALTER TABLE [테이블명]
MODIFY (
		[변경할 테이블명1] [자료형](길이),
        [변경할 테이블명2] [자료형](길이),
        [변경할 테이블명3] [자료형](길이),
        .........
        [변경할 테이블명n ] [자료형](길이)
    );

 

테이블수정 : 칼럼삭제 (단일삭제)

ALTER TABLE TB_TEST99
ADD hello VARCHAR(10);

ALTER TABLE [테이블명]
DROP [변경할 테이블명] [자료형](길이);

테이블수정 : 칼럼삭제(복수삭제)

ALTER TABLE TB_TEST99
ADD (hello1 VARCHAR(10), hello2 VARCHAR(10), hello3 NUMBER(5,2));

ALTER TABLE [테이블명]
DROP (
		[변경할 테이블명1] [자료형](길이),
        [변경할 테이블명2] [자료형](길이),
        [변경할 테이블명3] [자료형](길이),
        .........
        [변경할 테이블명n ] [자료형](길이)
    );

 

삭제된 테이블을 복구

FALSHBACK TABLE TB_TEST02

TO BEFORE RECYCLEBIN;

 

 

 

 

 

 

 

'it > SQL(ORACLE)' 카테고리의 다른 글

데이터삽입(insert)  (0) 2019.12.19

			continue : 생략 (skip)
		 	
		  	loop문과 같이 사용
		  	
		  	while(){
		  		처리1
		  		처리2
		  		처리3
		  		if(){
		  			continue
		  		}
		  		처리4		<- 처리 하지 않음
		  		break;
		  	}		  
		for (int i = 0; i < 10; i++) {
			
			System.out.println("i = " + i);
			System.out.println("loop start");
			
			if(i > 4) {
				continue;
			}
			
			System.out.println("loop end");			
		}

조건이 충족하면 for 문 내부의 continue; 이후 나온 문법은 실행되지 않는다.

결과 : 

i = 0
loop start
loop end

i = 1
loop start
loop end

i = 2
loop start
loop end

i = 3
loop start
loop end

i = 4
loop start
loop end

i = 5
loop start
i = 6
loop start
i = 7
loop start
i = 8
loop start
i = 9
loop start

i가 4일때, continue; 이후에 작성된 코드는 실행되지 않는다. 

 

 

모든 데이터는 자로를 담는 그릇인 변수에 자료를 저장한다. 이 저장된 자료를 때로는 다른 변수로 변경하여 저장해야 할 일이 간혹 생기게 된다. 이때 수행하는 행동이 캐스팅이라고 한다. 

자료형 처럼 그릇 사이즈마다 담을수 있는 자료의 양이 다르다.( Downloaded by https://pixabay.com/)

자료형에는 우선순위가 존재한다. 


우선순위

    boolean 	1 byte

    byte		1 byte	-128 ~ 127		낮음	1111 1111
    short		2 byte					1111 1111 1111 1111
    int 		4 byte
    long		8 byte

    float		4 byte
    double		8 byte				높음

    char		2 byte
    String		? 

자료형 변환(자동, 강제)

 

자료형의 크기가 큰 double 형의 경우 우선순위가 "높음" 으로 되어있고, byte 자료형의 경우 우선순위 낮음으로 되어있음을 볼 수있다. 이는 자동형변환에서 서로 다른 자료형에서 자동형변환이 진행 되었을때 어떤 기준으로 형변환이 되는지 기준이 될 수 있는 척도가 된다. 

예를 들어보자.

byte n = 10;
int a=10;
a += n;
System.out.println("auto Casting : "+a);

>> auto Casting : 15 

다음과 같이 입력되었을때는 우선순위가 높은 int 자료형에 맞춰서 자동형변환(Auto Casting)이 되어서 연산이 된 것을 볼 수있다.  자료 저장영역이 4byte가 되는 int 형은 1byte 자료형인 byte의 데이터를 저장가능하기에 자동형변환이 가능한 것. 

하지만 반대상황이면 얘기가 달라진다.

int data = 1.0;

data 는 int 자료형(4byte)로 선언이 된 상태이다. 하지만 data변수에 1.0 이라는 double형 8byte 자료형이 입력되었다. casting 우선순위에 의하면 double 자료형이 우선적으로 적용이 되지만, 자료형은 그보다 낮은 순위인 int 형이므로 오류를 출력하게 된다. 

이이유는 4byte형인 자료형에 8byte 자료를 넣는것이 불가능 하기때문에 오류를 출력하는것이며, 인위적으로 casting을 이용해서 4byte 자료형에 데이터를 넣어주는것이다. 

int data1 = (int)1.0;

다음과 같이 double 자료형을 int 자료형으로 강제 casting 을 해준다는의미로 (int) 를 추가해준다. 그러면 1.0인 데이터가 1로 변경되어 int 형 data 에 저장되게 된다. 

 

자동형변환과 강제형변환의 경우를 알아봤지만 추가적으로 하나 더 알아두는것이 좋다.

자동형변환은 컴파일러가 정한 우선순위에 의해서 작성되는것이지만 원칙적으로는 자동형변환이 안된다는것을 알아야 할것이다. 

 

 

 

 

 

 

 

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

boolean to string  (0) 2020.04.28
for - continue  (0) 2019.11.25
자료의 표현과 변수 (Variable)  (0) 2019.11.25
동적,정적배열선언, 스왑 Array Declaration(static, allocation) and Swap  (0) 2019.11.25

자바는 다음과 같은 동작 순서를 가지고 실행을 한다. 

            1. 소스 코드            

            2. compile(문자코드 -> 기계어(2진수)) - lib파일(*.jar)       

            3. build == .exe 실행파일       

            4. 실행

컴퓨터는 기계어(2진수)를 통해서 데이터를 처리하여 프로그램을 실행한다. 

우리가 일상에서 정수범위를 가지고 수치를 표현하고 있다. 

 수치를 표현하는 범위는 10진수이며, 컴퓨터에서 수를 표현할때는 2진수를 사용하며 8진수, 16진수를 사용하기도 한다. 

2진수 0, 1                                                1100 1010 

8진수 0 ~ 7 -> 010 -> 10진수의 8을 의미.      8421 8421 

10진수 0 ~ 9 

16진수  0 ~ 9 A ~ F(15)                              C    A

이런 표현된 수를 담는 그릇을 변수라고 하며, 자바를 비롯한 다양한 언어에서는 특정이름을 정하고, 이 이름을 통하여 값을 변경 하도록 하고있다.

 Downloaded by https://pixabay.com/

자료를 담는 그릇인 변수에는 크게 숫자형문자형, 진위형이 존재한다.

변수의 자료형

숫자형
	정수
		byte	1 byte	==> 8 bit -> 256개 -128 ~ 127
		short 	2 byte	short int	
		int	4 byte
		long	8 byte	long int

	실수
		float	4 byte
		double	8 byte

문자형
	문자
		char	2 byte	character (C언어 -> 1 byte)		한글(2byte)
        

	문자열	
		char arrChar[] = new char[10]; -> String
		String -> class		wrapper class 


	진위형 (true/false)
		boolean 1 byte	true(1)/false(0)				
		boolean -> bool(1) true/false,  BOOL(4) TRUE/FALSE	0 ~ 1100
        
        

 

 

		int number;			// 4 byte 영역
		// 자료형 : integer
		// 변수명 : number
		number = 123;	// 대입 연산자
		System.out.println(number);
		number = 234;
		System.out.println(number);
		
		byte by;
		by = 123;
		
		byte by1 = -128;
		
		float f;
		f = 123.43456789f;		
		System.out.println("f = " + f);
		
		double d;
		d = 1.45353543553535;
		System.out.println("d = " + d);
		
		char c;
		
		c = '한';
		c = 'a';	// ASCII (아스키 코드)
		System.out.println("c = " + c);		
		System.out.printf("c = %c %d", c, (int)c);
		
		// 문자열	String
		// String != 자료형이 아니다 == class
		// Wrapper class == 자료형을 class로 만들어 놓은 것
		String str;
		str = "안녕하세요";
		str = "반갑습니다";
		
		char cStr[] = new char[5];
		cStr[0] = '안';
		cStr[1] = '녕';
		cStr[2] = '하';
		
		char cStr1[] = {'안', '녕', '하', '세', '요'};
		
		boolean b;
		b = true;
		b = false;

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

boolean to string  (0) 2020.04.28
for - continue  (0) 2019.11.25
형변환, 암묵적, 묵시적 (Casting)  (0) 2019.11.25
동적,정적배열선언, 스왑 Array Declaration(static, allocation) and Swap  (0) 2019.11.25

Array : 배열
같은 자료형의 묶음
목적: 같은 목적의 다수의 변수를 관리하기 위함.
자료형 배열명[] = new 자료형[배열의 갯수];   => 동적할당을 적용할때 사용한다. 


동적(allocation)할당
자료형 []배열명 = new 자료형[배열의 갯수];

정적(static)할당
배열명[index number] = 값;

================================================================

동적할당 예시

        int arrNum[] = new int[3];  // 0 ~ (n - 1)
        arrNum[0] = 1;
        arrNum[1] = 2;
        arrNum[2] = 3;

        System.out.println(arrNum[2]);

 

정적할당 예시

        int arrNum1[] = {   11, 22, 33  };

                System.out.println(arrNum1[2]);

        for(int a : arrNum1){
            System.out.println("arrNum : " + a);
        }

 

배열 스왑 Array Swap

// swap char aaa[] = { 'a', 'b', 'c' };
char bbb[] = { 'A', 'B', 'C' };
char aaaAlias[] = aaa;
char bbbAlias[] = bbb;
/*
  char temp; for (int i = 0; i < aaa.length; i++) {
  temp = aaa[i];
  aaa[i] = bbb[i];
  bbb[i] = temp;
}
*/
char tempArr[];                
tempArr = aaaAlias;
        aaaAlias = bbbAlias;
        bbbAlias = tempArr;
                for (int i = 0; i < bbbAlias.length; i++) {
                     System.out.println("bbbAlias[" + i + "] = " + bbbAlias[i]);
                 }
              //또는 
                for( int a : bbbAlias){
                    System.out.println(n);
                 }


 

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

boolean to string  (0) 2020.04.28
for - continue  (0) 2019.11.25
형변환, 암묵적, 묵시적 (Casting)  (0) 2019.11.25
자료의 표현과 변수 (Variable)  (0) 2019.11.25

+ Recent posts