전체 글

· Java
1. JVM이 뭔가요? JVM(Java Virtual Machine)은 Java Runtime Environment(JRE)의 일부로서 Java 바이트코드를 실행하기 위한 런타임 환경을 제공합니다. 하드웨어 및 운영 체제의 독립성을 책임지는 Java 기술의 구성 요소로, Java의 "한 번 작성하면 어디서나 실행"이라는 핵심 기능을 가능하게 합니다. JVM은 다음과 같은 주요 작업을 수행함으로써 작동합니다: 코드 로드: 컴파일된 바이트코드를 메모리에 로드 코드 검증: 로드된 Java 바이트코드의 정확성을 보장 코드 실행: JVM은 기반 하드웨어에 따라 바이트코드를 기계 언어로 해석하여 실행 2. JDK, JRE 및 JVM의 차이점을 설명해 보세요? JVM(Java Virtual Machine): 앞서 언..
· MySQL
쿼리를 만들다 보면 데이터가 들어 올 때 유니크 값이 중복이면 나머지 컬럼을 업데이트하고 싶은 경우가 있다 물론 일일이 업데이트해도 되지만 데이터 여러 개를 하고 싶을 때 유용한 옵션이 있다 그건 바로 아래 insert의 옵션이다 ON DUPLICATE KEY UPDATE 간단하게 예시를 들자면 다음과 같은 DDL이 있다고 치자 CREATE TABLE books ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) UNIQUE, description TEXT, author VARCHAR(255) ); 그리고 여기에 데이터를 넣자 여기도 해당 옵션을 넣었지만 바뀐 건 없고 5개의 칼럼이 추가된다 INSERT INTO books (name, description,..
🔍 문제 톺아보기https://www.acmicpc.net/problem/10191,000,000,000보다 작거나 같은 N이 주어질 때 1 ~ N까지의 페이지 번호에서 0~9가 몇 번 나오는지 구해보자 백준에서는 1초당 1억을 넘어가면 시간초과를 하게 됩니다하지만 문제는 10억이기에 당연히 반복문으로 모든 경우의 수를 체크하는 방법은 시간초과가 발생합니다. 🔍규칙 찾기시간초과가 발생함은 곧 규칙이 있고 이거를 찾으면 해결할 수 있다는 의미죠저 10억 자리의 수를 무언가 하려면 수로 접근하는 게 아닌 문자열로 접근해야 합니다 다가가기 1일단 1부터 99는 구할 수 있을까?💡어디 보자 십의 자리만 두고 생각하면 1~9가 10번 반복되고 (각 십의 자릿수는 일자리가 9까지 돌기 때문에)일의 자리는 1부..
개요 웹 서비스를 한다면 크롤링을 알 수밖에 없을 것입니다. 자체적으로 API를 통해 공개하는 데이터 이외에도 아무 데이터나 긁어가 버리니 귀찮은 존재죠. Captch나 자체적으로 로그를 쌓아서 이를 체크해서 막는 방법 등 각자의 노하우로 여러 가지가 있을 겁니다. 물론 막는 법을 잘 아는 게 중요하지만 공격 쪽 입장에서의 생각도 알면 더 좋겠다는 생각으로 정리해 봤습니다. 번외로 요즘은 합법적으로 토렌트처럼 분산 요청을 통해 Captch도 뚫어버리는 서비스도 있는데 참 신기합니다 1. User Agent 가장 쉽고 편하게 해 볼 수 있는 방법입니다. Python + Selenium 기준으로 아래처럼 헤더라 User Agent를 추가하면 됩니다. headers = { "Accept": "text/html..
아마존 웹 사이트는 404가 발생할 경우 강아지를 보여줍니다 404가 발생해 화가 난 사용자를 귀여움으로 달래준다는 의도가 재밌네요 총 200장이지만 포즈가 다르하여 중복되는 강아지들도 꽤 보이네요 HTML 삽입 미리보기할 수 없는 소스
개요 https://www.acmicpc.net/problem/1007 1007번: 벡터 매칭 평면 상에 N개의 점이 찍혀있고, 그 점을 집합 P라고 하자. 집합 P의 벡터 매칭은 벡터의 집합인데, 모든 벡터는 집합 P의 한 점에서 시작해서, 또 다른 점에서 끝나는 벡터의 집합이다. 또, P에 속 www.acmicpc.net 문제는 다음과 같습니다. 평면에 점들의 집합인 P가 있고 여기에는 N개의 좌표가 있다, N은 짝수이다. 집합 P에서 N개의 벡터를 만들 수 있다, 즉 벡터는 N/2개이다. P에서 나오는 벡터들의 합 중 최솟값을 출력해라. 이 문제를 풀려면 우선 🔍벡터의 합은 어떻게 구하는가? 벡터의 값은 끝점 - 시작점으로 구할 수 있습니다. 벡터 v1는 x1, y2에서 x2, y2로 향한다 v1 ..
개요 문제 https://www.acmicpc.net/problem/1005 📃 해당 문제는 이전에 풀었던 위상 정렬 문제인 2252번을 이용하시면 쉽게 이해할 수 있습니다. https://seung.tistory.com/entry/GoLang-%EB%B0%B1%EC%A4%80-2252%EB%B2%88-%EC%A4%84-%EC%84%B8%EC%9A%B0%EA%B8%B0%EC%9C%84%EC%83%81%EC%A0%80%EB%A0%AC [GoLang] 백준 2252번, 줄 세우기(위상 정렬) 개요 https://www.acmicpc.net/problem/2252 2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음..
개요 https://www.acmicpc.net/problem/1004 1004번: 어린 왕자 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 첫째 줄에 출발점 (x1, y1)과 도착점 (x2, y2)이 주어진다. 두 번째 줄에는 행성계의 개수 n이 주 www.acmicpc.net 처음 이 문제를 보고 골치가 아플 것 같았는데 유심히 보니 정답률이 높아서 계속 문제를 읽었더니 이 문제는 낚시가 있어서 이 부분만 안 속으면 매우 쉽습니다. 문제가 아래처럼 주어진다면 뭔가 아래처럼원 사이를 구불구불 지나가야 제대로 푼 거 같은 기분이 들지만 사실 아래처럼 간단하게 뒤로 돌아간다는 경우의 수가 항상 존재합니다! 즉 문제에서 말한 행성의 경계에 진입/이탈하는 경..
개요 https://www.acmicpc.net/problem/2252 2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의 www.acmicpc.net 📃 해당 문제는 위상 정렬로 해결할 수 있습니다. 이를 알 수 있는 이유는 키를 비교하는 것이기에 만약 1번이 2번보다 작다, 2번은 3번보다 작다 근데 3번이 1번 보다 작다와 같이 순환되지 않는다는 걸 의미합니다 거기에 문제에서 답이 여러 가지인 경우 아무거나 출력한다고 말했으니 그 말은 비교했을 때 순서가 동일한 게 생긴다는 의미입니다. 이걸로..
개요 https://www.acmicpc.net/problem/1009 1009번: 분산처리 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다. (1 ≤ a < 100, 1 ≤ b < 1,000,000) www.acmicpc.net 이 문제는 제곱수는 구하는 문제라 쉽게 자료형의 한계 값을 넘어버릴 수 있습니다. 이를 대처하기 위해선 제곱 수의 일의 자리의 특성을 알면 좋습니다. 제곱 수의 1의 자리는 4번 주기로 반복됩니다. 수학적으로 증명하기에는 너무 복잡하기에 "그렇구나" 정도로 알아두는 게 좋습니다. 이를 이용하면 문제에서 입력되는 b를 최소화할 수 있습니다. 코드 package main import ( "bufio" "f..
DSeung
Dev log