일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링 db2 - 데이터 접근 기술
- 자바의 정석 기초편 ch4
- 자바의 정석 기초편 ch11
- 자바의 정석 기초편 ch14
- 자바의 정석 기초편 ch1
- 자바의 정석 기초편 ch12
- 자바의 정석 기초편 ch5
- 스프링 고급 - 스프링 aop
- 자바의 정석 기초편 ch2
- 자바의 정석 기초편 ch13
- 2024 정보처리기사 수제비 실기
- 스프링 입문(무료)
- 자바의 정석 기초편 ch3
- 자바의 정석 기초편 ch9
- 스프링 mvc2 - 검증
- 스프링 mvc1 - 서블릿
- 2024 정보처리기사 시나공 필기
- 게시글 목록 api
- 스프링 db1 - 스프링과 문제 해결
- 스프링 mvc2 - 타임리프
- 스프링 mvc2 - 로그인 처리
- 코드로 시작하는 자바 첫걸음
- 자바 기본편 - 다형성
- 자바의 정석 기초편 ch6
- 자바의 정석 기초편 ch8
- jpa - 객체지향 쿼리 언어
- @Aspect
- 자바의 정석 기초편 ch7
- jpa 활용2 - api 개발 고급
- 스프링 mvc1 - 스프링 mvc
- Today
- Total
목록분류 전체보기 (356)
나구리의 개발공부기록
1) 쓰레드(1) 프로세스(process - 공장, 작업환경)실행중인 프로그램자원(resource - 메모리, CPU 등등)과 쓰레드로 구성되어 있음(2) 쓰레드(thread - 일꾼) 프로세스 내의 실제 작업을 수행하며 모든 프로세스는 최소한 하나의 쓰레드를 가지고 있음싱글 쓰레드 프로세스 = 자원 + 쓰레드멀티 쓰레드 프로세스(쓰레드가 여러개인 것) = 자원 + 쓰레드 + 쓰레드 + ... + 쓰레드(3) 싱글쓰레드인 2프로세스 vs 1프로세스 + 2 쓰레드하나의 새로운 프로세스를 생성하는 것보다 하나의 새로운 쓰레드를 생성하는 것이 비용이 적게 듦자바가 성장한 계기로 과거 웹서버에서 웹프로그램을 작성할 때 CGI(싱글쓰레드) 와 Java Servlet(멀티쓰레드)를 사용 했으나 1999년말 웹사용량..
1) 애노테이션주석처럼 프로그래밍 언어에 영향을 미치지 않으며 유용한 정보를 제공함특정 프로그램에 정보 제공을 위한 것(설정 정보 등)Annotation 은 인터페이스애노테이션 사용 예시 2) 표준 애노테이션Java에서 제공하는 애노테이션의 종류하얀색 - 표준애노테이션갈색 - 매타애노테이션 : 애노테이션을 만들 때 사용(1) @Override오버라이딩을 올바르게 했는지 컴파일러가 체크하게 함오버라이딩 할 때 메서드 이름을 잘못적는 실수를 하는 경우가 많은데 이를 방지할 수 있음오버라이딩 할 때는 메서드 선언부 앞에 @Override를 붙이는 것을 권장class Parent { void parentMethod() {}}class Child extends Parent { void parentmethod() ..
1) 제네릭타입의 형변환제네릭타입과 원시 타입간의 형변환은 바람직 하지 않음 (가능 하지만 경고 발생)JDK1.5 이후부터는 원시타입을 쓰는 것 자체가 바람직 하지 않으며 서로 다른타입이 대입된 제네릭타입은 형변환이 불가함와일드카드가 사용된 제네릭 타입으로는 형변환 가능하며 와일드카드 문장에 따라 달라지며 경고가 발생할 수 있음(1) 예시Box objBox = null;Box box = (Box)Box; // OK. 제네릭타입 -> 원시타입 / 경고 발생objbox = (Box)Box; // OK. 원시타입 -> 제네릭타입 / 경고 발생Box objBox = null;Box strBox = null;objBox = (Box)strBox; //에러. 서로 다른타입이 대입된 제네릭타입끼리의 형변환 불가str..
1) 제네릭스가 적용된 Iterator 기존의 Iterator 인터페이스가 정의 되었을 때는 Object클래스가 직접 쓰였지만 이후에는 제네릭이 적용되어 타입변수로 메서드를 정의하고 있음Iterator를 사용 시 제네릭스를 적용하면 형변환 없이 지정한 타입의 참조변수에 참조값을 저장할 수 있음 (1) 예제ArrayList와 Iterator에 제네릭스를 적용하여 형변환 없이 값을 출력하는 예제import java.util.*;class Ex12_2 { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add(new Student("자바왕", 1, 1)); list.add(new Student("자바짱", 1,..
1) 제네릭스(Generics)클래스이름 처럼 작성컴파일시 타입을 체크해주는 기능 - JDK1.5부터 적용됨실행시 에러(프로그램 비정상 종료)보다 컴파일 에러가 더 안전하기 때문에 실행시 발생하는 타입에러를 컴파일 에러로 바꾸기 위해 나옴객체의 타입 안정성을 높이고 형변환의 번거로움을 줄여줌 (ClassCastException - 형변환에러 발생을 막음)(1) 형변환 에러 발생 예제제네릭스 적용 전에는 List와 같은 컬렉션에 여러 타입을 저장할 수 있는데 해당 컬렉션의 값을 조회시 특정 타입으로 고정하여 값을 출력 하려고하면 컴파일 시에는 에러가 발생하지 않지만 실행시에 ClassCastException(형변환에러) 에러가 발생됨제네릭스를 적용하여 컬렉션에 타입을 지정하면 지정한 타입으로만 값을 저장할..
1) Collections클래스컬렉션을 위한 static메서드를 제공, 비슷한 클래스로 Objects(객체 다룰 때) Arrays(배열 다룰 때) 클래스가 있음(1) 컬렉션 채우기, 복사, 정렬, 검색 메서드fill(): 채우기copy():복사sort(): 정렬binarySearch(): 검색Arrays클래스의 메서드와 동일하기 때문에 자세한 설명은 제외(2) 컬렉션의 동기화 - synchronizedXXX()synchronized컬렉션명()인수의 콜렉션들을 동기화함필요할때 컬렉션을 동기화하는 메서드임static Collection synchronizedCollection(Collection c)static List synchronizedList(List list)static Set synchroniz..
1) HashMap과 HashtableHashtable은 동기화가 되어있고 HashMap은 동기화가 되어있지 않음Map인터페이스를 구현하였으며 데이터를 키와 값의 쌍으로 저장함key - 중복불가, value - 중복허용HashMap은 Map인터페이스를 구현한 대표적인 컬렉션 클래스이며 순서를 유지하려면 LinkedHashMap클래스를 사용하면 됨(1) HashMap의 키(key)와 값(value) Hash로 시작하는 컬렉션들은 해싱(hashing) 기법으로 데이터를 저장하며 데이터가 많아도 검색이 빠른 특징을 가지고 있음// HashMap 사용방법HashMap map = new HashMap();map.put("myID", "1234");map.put("asdf", "1111");map.put("asdf..
1) HashSetSet인터페이스를 구현한 대표적인 컬렉션 클래스로 순서가 없고 중복값을 허용하지 않음순서를 유지하려면 LinkedHashSet클래스를 사용객체를 저장하기 전에 기존에 같은 객체가 있는지 확인하고 같은객체가 없으면 저장, 있으면 저장하지 않음boolean add(Object o)는 저장할 객체의 equals()와 hashCode()를 호출해서 자동으로 확인함객체를 Set으로 저장하면 참조값이 저장되어 저장된 논리 값이 같더라도 참조값을 다르므로 Set에 저장이됨객체를 생성할 클래스에 Set의 특징을 적용하려면 equals()와 hashCode()를 직접 오버라이딩하여 값을 비교하도록 하여 실제 저장된 값이 동일하면 중복으로 판단되어 저장하지 않도록 할 수 있음(1) HashSet 주요 메..
1) Iterator(new ver.), Enumeration(old ver.), ListIterator컬렉션에 저장된 데이터를 접근(읽기)하는데 사용되는 인터페이스Enumeration은 Iterator의 구버전ListIterator는 Iterator의 접근성을 향상시킨 것(단방향 -> 양방향 / next()와 previous()가 있음)(1) Iterator 인터페이스의 메서드boolean hasNext() : 읽어 올 요소가 남아있는지 확인, 있으면 true, 없으면 falseObject next() : 다음 요소를 읽어 옴, next()를 호출하기 전에 hasNext()를 호출해서 읽어 올 요소가 있는지 확인하는 것이 안전함void remove() : next()로 읽어 온 요소를 삭제, 값을 읽어..
1) 스택(stack)LIFO구조. 마지막에 저장된 것을 제일 먼저 꺼냄 (Last In First Out)저장(push) 순서와 추출(pop) 순서가 반대저장 0 -> 1 -> 2 / 추출 2 -> 1 -> 0배열 -> Stack구조가 적합2) 큐 (Queue)FIFO구조. 제일 먼저 저장한 것을 제일 먼저 꺼냄(First In FIrst Out)저장(offer) 순서와 추출(poll) 순서가 동일LinkedList -> 큐(Queue)구조가 적합 3) Stack클래스의 메서드(1) Stack클래스의 사용Stack 객체를 직접 생성하여 사용구분메서드설 명확인boolean empty()Stack이 비어있는지 확인Object peek()Stack의 맨 위에 저장된 객체를 조회 / 맨 위에의 데이터를 pee..