개발 지식(66)
-
강 타입 언어
강 타입 언어를 다들 어디선가 한 번쯤 들어봤을 것이다.(안 들어 봤어? 그럼 지금 들어봐~) 📕강약약강인가요?얼추 비슷하다라고 말하고 싶지만 그런건 아니고,강타입의 형태를 구분하는 요인은 여러 가지가 있다고들 하지만 가장 중요한 것은 '타입 에러를 항상 검출할 수 있냐' 이다. 사실 앞에 int, float 등등 자료형이 붙으면 강타입인줄 알았는데...(나도 그랬다. 강의 미리미리 들을걸)교수님이 ‘강 타입은~~가 강 타입(Strong type)입니다.’라고 말씀하셨다. 📕강 타입 그게 뭔데? 어떻게 하는 건데나는 이제까지 C/C++을 강 타입 언어로 알고 있었다.이 글을 읽는 사람들도 에?? 라고 생각할 것이다. (아님 말구) 강 타입을 정의를 보자. 타입 에러를 항상 검출할 수 있어야한다. '..
2021.12.04 -
(JPA) JPA가 뭐야?? 이거 왜 쓰는거야?
우리는 JAVA 혹은 Spring(boot)를 공부하면서 JPA란 단어를 처음 접했거나, 수 없이 접해왔거나, 접할 것이다. 그렇다면 대체 JPA가 뭐야?? 📕대관절 JPA가 무어란 말이냐??? "JPA(Java Persistence API)는 자바 진영의 ORM 표준 기술이다." 이렇게 예기하면 누구는 '아~~' 하고 알아들을 것이고, 누구는 "뭐? ORM? 그게 뭔데?" 라고 물을 것이다. ORM은 Object-relationla Mapping 그러니까, 객체랑 관계형 DB를 '매핑'해주는 프레임워크이다. "'매핑'을 그냥 해준다고??" 그렇다. JPA를 쓰기 전까지 JDBC를 활용해서 쿼리문을 직접 작성해서 DB에 저장된 객체를 찾아서 CRUD를 진행했다면, JPA를 활용한다면 이 JDBC 과정이 ..
2021.11.18 -
[알고리즘] 선택정렬, 삽입정렬 구현(C/C++)
📕 정렬 알고리즘 알고리즘 문제를 조금이라도 풀어봤다면, 정렬에 관한 문제가 많이 나오는 것을 알 수 있다. 정확히, 정렬을 활용해서 해결해야 하는 문제가 많이 출제된다.(기본 중의 기본) 데이터를 정렬하는 것은 효율적인 알고리즘에서의 중요한 단계로, 문제 해결을 효율적으로 할 수 있도록 도와준다. 우리는 정렬 알고리즘을 통해서 실수, 문자열, 파일 등을 손쉽게 정렬할 수 있게 된다. 이 문서에서는 정렬의 기본이라고 할 수 있는 선택 정렬과, 삽입 정렬을 다룰 예정이다. 📕 선택 정렬 선택 정렬은 가장 기본적인 알고리즘 중의 하나로, 사람이(보편적으로) 데이터를 보고 정렬하는 과정과 동일하다고 생각하면 편하다. 정렬 순서는 왼쪽에서 오른쪽으로 흘러가며, 최소값을 통해서 데이터의 대소 관계를 비교하고 교체..
2021.07.23 -
(Java) InetSocketAddress, HttpHandler 문법 및 사용
📕InetSocketAddress InetSocketAddress에 관한 oracle 공식 문서를 보면 다음과 같다. InetSocketAddress는 IP 소켓 주소(IP 주소 + 포트 넘버) 이다. IP 소켓 주소 뿐만 아니라, hostname과 portname으로도 구성이 가능하다. 위의 경우를 코드로 한번 보자. // If the port parameter is outside the range of valid port values, or if the hostname parameter is null. // -> IllegalArgumentException will be occured // 포트로만 구성 // 0
2021.07.05 -
[알고리즘] 다익스트라, 벨만포드 알고리즘(Dijkstra & Bellman-ford)
📕다익스트라 알고리즘 다익스트라 알고리즘은 가장 빠른 길을 찾을 때 주로 사용하는 알고리즘이다. 빠른 길을 찾을때 사용한다고? 그럼 BFS쓰면 되는거 아닌가? 라고 생각할 수 있다. 맞다 BFS를 사용하면 되지만 BFS를 사용하지 못하는 경우가 존재하는데 바로 비용이 존재할때이다. BFS의 경우 모든 간선의 비용이 동일해야하지만, 다익스트라는 모든 간선의 비용의 동일하지 않아도 사용가능하다. 다익스트라 알고리즘은 min_heap 우선순위큐를 사용하고, 간선을 키값으로 사용한다. 다익스트라 알고리즘에서 핵심은 e = w-> x 이다. 즉,dist[x] 1->2->3이 될 것이다. 하지만 다익스트라 알고리즘은 음수를 처리하지 못하기 때문에 각각의 간선에 음수비용의 양수값인 9를 더해준다. 그렇면 모두 9씩 ..
2021.06.18 -
[알고리즘] 그래프, 트리(DFS, BFS, MST, Kruskal, Prim)
📕그래프는 뭘까? 알고리즘에서의 그래프는 '간선들로 연결된 정점들의 집합'이라고 얘기할 수 있다. 그럼 정점은 뭐고 간선은 뭐냐? 정점(vertex)은 흔히 노드(node)라고 알려져 있는 점이다. 그리고 이 점과 점을 연결한 선이 바로 간선(edge)이다. 그리고 이 간선은 방향이 있을 수도 있고, 없을 수도 있다. 방향이 있는 그래프를 directed graph(방향 그래프)라고 하고 방향이 없는 그래프를 undirected graph(무방향 그래프)라고 한다. 그래프에는 '사이클'이라는 개념이 있다. 말 그대로 사이클, 즉 자기 자신으로 돌아오는 길이 있는 것을 사이클이라고 한다. 하지만 트리는 이 '사이클'이 존재하지 않는다. 정확히는 사이클이 존재하지 않는 그래프를 트리라고 한다. 📕그래프를 나..
2021.06.15