Knowledge7 [JVM] Java 메모리 관리 코드 레벨불변 객체참조 상태가 변경되지 않기 때문에, GC가 객체의 참조를 수시로 확인할 필요가 줄어듬객체 재사용 고려StreamAPI 이용 (무조건 X, 성능의 이점을 가져올 수 있는 경우에 적용 가능해 보임)Lazy Evaluation과 파이프라인 구조 덕분에 중간 연산들은 실제 데이터를 처리하지 않고, 최종 연산이 호출될 때에만 데이터를 처리I/O, 소켓, 쓰레드 등 사용 후 닫았는지 전반적인 확인 (GC가 회수 하지 못함)예시) Contents 서버 > outputstream을 사용하고 닫지 않음static 변수 검토 (StackOverflow)static 변수는 GC에 의해 회수 되지 않아 사이즈가 큰 객체를 참조가 진행되면서 메모리 누수 가능성내부 클래스 검토생명 주기를 가지거나 이벤트 리스너.. 2024. 12. 27. Trie 자료구조 - 14425 https://www.acmicpc.net/problem/14425 문제 총 N개의 문자열로 이루어진 집합 S가 주어진다. 입력으로 주어지는 M개의 문자열 중에서 집합 S에 포함되어 있는 것이 총 몇 개인지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어진다. 입력으로 주어지는 문자열은 알파벳 소문자로만 이루어져 있으며, 길이는 500을 넘지 않는다. 집합 S에 같은 문자열이 여러 번 주어지는 경우는 없다. 출력 첫째 줄에 M개의 문자열 중에 총 몇 개가 집합 S에 포함되어 있는지 출력한다. Tri.. 2023. 7. 19. LinkedList 직접 구현해 보기 요약 정리 LinkedList(연결 리스트)를 구현하기 앞서 해당 자료 구조에 대해 알아보자. 우선 List라고 하면 인덱스 구조로 위치를 갖고, 순서를 보장하는 자료구조라고 설명할 수 있겠다. 더 나아가 LinkedList는 삽입 / 삭제의 장점을 갖지만, 특정 노드 탐색시 다른 List에 비해 오래 걸린다는 단점이 있다. 삽입 / 삭제의 장점을 갖을 수 있는 이유는 LinkedList의 종류에 따라 다르지만, 모두 노드의 연결로 이루어져 있으며 인접 노드의 주소를 포인터로 가르키고 있어 중간에 삽입 / 삭제가 이루어 져도 해당 노드를 끊고 인접 노드의 주소를 연결해 주면 될뿐 대표적인 ArrayList처럼 데이터를 미루거나 당기는 작업이 필요 없다. LinkedList에는 Singly, Doubly,.. 2023. 7. 11. SQL [Structured Query Language] 여러 DMBS의 DATA를 관리하기 위한 공통적인 Language DBMS [Data Base Management System] Persistence Data 즉, 비 휘발성 메모리 (HDD, USB)등의 데이터를 Java I/O를 통해 File에 Data를 통해 간단한 처리하는 것은 간단하지만, 대량의 Data 복잡한 Data들은 처리하기에 피곤할 뿐더러, FIle System으로 Data를 관리할 때 예를 들어 수십 명의 사용자가 동시에 회원 가입을 한다면 동기화 문제가 발생한다. ⇒ 이러한 정보를 관리해주는 시스템이다. 이번 과정에서는 DBMS의 공통적이고 표준화 된 사용법인 SQL에 대해서만 학습할 예정이다. RDBMS [Relational DBM.. 2023. 1. 9. JDBC [Java Database Connectivity] DBMS에 종속적인 개발이 아닌 java.sql.*에서 지원하는 Interface를 통해 .java와 data를 주고 받고, DBMS 제조사에서 제공해주는 OracleDriver(다운 받은Driver 경로.oracle.jdbc.driver.oracledriver)들을 통해 DBMS와 java.sql API의 Interface와 연결해준다 Third Part Library 인 JDBC java 이외의 프로그램을 사용하기 위한 API, 사용하기 위해서는 해당 프로그램에서 제공하는 .jar파일을 class path에 학습 시킴으로서 불러올 수 있게 해준다. 우리가 사용하는 DBMS는 Oracle에서 제공하는 10g Version을 이용한다. JDBC 절차 1.. 2023. 1. 9. Servlet & JSP Servlet & JSP를 접하기 전에 JAVA WEB 개발 환경 구축에 대해 먼저 살펴보겠다. WEB이란 가장 많이 사용하는 Client/Sever Program의 일종이다. ⇒ Client/Server는 누가 요구하고 응답을 주냐 에 따라 용도 상으로 결정된다. Client : Request하는 쪽 ex) JDBC Client Sever : Request에 대한 Response하는 쪽 ex) DBMS Server 💡 Client Sever의 개수에 따른 명칭 2개 ⇒ Two tier Architecture 3개 ⇒ Three tier Architecture 4개 이상 ⇒ n tier Architecture Client / Server Program의 3가지 요소 Unique한 Identifier ex.. 2023. 1. 9. 객체 지향 프로그래밍 OOP [Object - Oriental Programming] Real World를 System에서 표현하는 방법론이다. 가장 많이 사용되는 방법론이다. Object : Real World에 존재하는 물리적인, 개념적인 모든 것을 의미한다. Abstraction : Object들의 공통적인 state, attribute, behavior을 추출해 내는 과정을 의미하고, 어떤 System을 구현할 것 인가에 따라 추출해야 하는 infomation이 달라 문제 영역에 의존적이다. Class : Object들을 system에 Abstraction되어 나온 공통적인 부분을 모은 Filed(변하지 않는 state와 behavior로 인해 변하는 attribute, Method(behavior)로서 표현한 것을 iden.. 2023. 1. 9. 이전 1 다음