목록프로그래밍 언어 (72)
나의 지식 보관소
대리자는 메서드에 대한 참조이다. 즉 대리자에 메서드의 주소를 할당한 후 호출하면 이 대리자가 메서드를 호출하여 준다. 대리자는 다음과 같이 delegate 키워드를 이용해서 선언한다. 1 한정자 delegate 반환형식 대리자이름 ( 매개변수목록 ) 단, 대리자는 참조할 메서드의 매개변수와 반환형식이 같아야한다. 제네릭 대리자 1 delegate int Compare(T a, T b); 다음과 같이 선언한다. 대리자 체인 대리자는 하나의 메서드 뿐만 아니라 여러 메서드를 동시에 참조할 수 있다. 메서드를 대리자에 += 연산자를 통해 결합할 수 있다. 1 2 3 delegate1 += method1 delegate1 += method2 delegate1 += method3 대리자에서 메서드를 끊어 낼때에..
프로세스: 실행 파일이 실행되어 메모리에 적재된 인스턴스, 하나 이상의 스레드로 구성된다. 스레드: 운영체제가 CPU시간을 할당하는 기본 단위. 여러개가 있으면 멀티스레드로 불린다. 멀티스레드의 장점: 1. 사용자 대화형 프로그램에서 응답률을 높힐 수 있다. 2. 멀티프로세스에 비해 자원 공유가 쉽다. 3. 경제성이 높다. 멀티스레드의 단점: 1. 멀티스레드 프로그램의 구현이 어렵다. 2. 자식스레드에 문제가 생기면 전체 프로세스가 영향을 받는다. 3. 스레드가 너무 많이 사용되면 성능이 저하된다. 스레드 시작하기 .NET 프레임워크는 스레드를 나타내는 클래스로 System.Threading.Thread를 제공하므로 이것을 사용하면 된다. 1 2 3 4 5 Thread t1 = new Thread(new..
제네릭은 내부에서 사용할 데이터 형식을 외부에서 결정하도록 하는 기법이다. 이런 방식을 사용하면 같은 역할을 하지만 값의 형식이 달라서 여러 개로 만들어야만 했던 클래스나 메서드들을 하나로 일반화할 수 있다. 제네릭 메서드 제네릭 메서드는 메서드내에서 사용할 데이터 형식을 외부에서 결정하도록 한 메서드이고, 아래와 같이 선언한다. 1 2 3 4 한정자 반환형식 메서드이름 ( 매개 변수 목록 ) { //... } 호출할땐 아래와 같이 사용하면 된다. 1 메서드이름 ( 넘겨줄 인자들 ); 즉 아래와 같이 선언하고 사용할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class Program { static void Main() { TestClass.test(1); } } clas..
가변배열은 길이가 다양한 배열들을 요소로 가지는 다차원 배열이다. 1 2 3 4 5 6 7 8 9 10 // 데이터형식[][] 배열이름 = new 데이터형식[가변배열의크기][]; int[][] jagged = new int[2][] { new int[] { 100, 200 }, new int[3] { 1, 2, 3} }; int[][] jagged2 = new int[2][]; jagged2[0] = new int[] { 10, 20 }; jagged2[0] = new int[3] { 4, 5, 6 };
Annoymous Type으로 불리는 무명형식은 문자 그대로 이름이 없는 형식이다. 형식에 이름이 필요한 이유는 그 형식의 이름을 이용해서 인스턴스를 만들기 때문인데, 만약 해당 형식이 한번 쓰이고 다시는 쓰이지 않을 그런 형식이라면 따로 형식을 만들어주는게 코드의 낭비일 수 있다. 무명메서드는 다음과 같이 var키워드를 사용한다. 1 2 var temp = new { Name = "김종호", Age = 19 }; Console.WriteLine($"{temp.Name} {temp.Age + 1}"); 무명 형식의 필드의 데이터 형식 또한 var처럼 결정된다. 무명 형식의 인스턴스가 만들어지고 난 다음에는 읽을수만 있다.
멀티스레드 프로그램에서 스레드들이 객체를 공유해서 작업하는 경우에 하나의 데이터에 여러 스레드들이 동시에 접근하면 의도치 않은 결과를 만들어 낼 수 있다. 때문에 스레드가 사용 중인 데이터를 다른 스레드가 변경할 수 없도록 잠금을 걸어야 한다. 멀티 스레드 프로그램에서 단 하나의 스레드만 실행할 수 있는 코드 영역을 임계 영역(critical section)이라 부른다. 자바는 이러한 임계 영역을 지정하기 위해 동기화 메서드와 동기화 블록을 제공한다. 스레드가 객체 내부의 동기화 메서드 또는 블록에 들어가면 즉시 객체에 잠금을 걸어 다른 스레드가 임계 영역을 실행하지 못하도록 막는다. 동기화 메서드를 만드는 방법은 선언에 synchronized 키워드를 붙이면 된다. public synchronized ..
정규표현식 정리 표 아래 표들은 자바API 페이지를 번역한것을 기반으로 번역하면서 개인적으로 알아본 내용을 덧붙여서 만들어졌습니다. 다소 어색하거나, 틀린 문구가 있을 수도 있으니. 오류 발견시 댓글로 알려주시면 수정하겠습니다. 사용설명에 관한 내용은 여기에서 볼수 있습니다. 자바에 적힌것보다 문법이 양이 적은데 아마 자바에서 추가된 문법인것 같네요(아마도). 문자 기호 설명 x 문자 x \\ 백슬래시 문자 \0n 8진수 값을 가진 문자 0n (0
메서드 내부에서 예외 발생 가능성이 있는 코드를 작성할때 try-catch를 통해 예외처리를 하는것이 기본이지만, 메서드를 호출한 곳으로 예외를 떠넘길 수 도있다. 이때 throws 키워드를 통해 아래와 같이 선언한다. 리턴타입 메서드명(매개변수, ...) throws 예외클래스, ... { } 일반적으로 throws뒤에 발생할수있는 예외를 다적어주거나 Exception 하나만으로 간단히 처리할수도 있다. throws 키워드가 붙은 메서드는 반드시 try블록 안에서 호출되어야 한다. 그리고 예외를 떠맡은 메서드가 또 다시 자신을 호출한 곳에 예외를 떠넘기는것도 가능하다.