목록분류 전체보기 (16)
Seeeni Tech Diary
0. ML 기본 용어 정리0) 기본 용어Accuracy: 정확도전체 데이터에 대한 예측 오류 수Back Propagation: 역전파weight: 가중치입력층에서 다음 은닉층으로 데이터를 전달할 때 각 데이터의 중요도를 전달하기 위해 사용하는 곱의 계수feature: 특성Batch모델 학습에서 데이터셋을 일정 크기로(batch size) 나누어 가중치를 업데이트 하는 데 이 때 나눠지는 부분 데이터셋을 batch라고 함epoch전체 데이터 셋에 대해 한 번 학습을 완료한 상태를 의미 (1 epoch)Categorical Data (범주형 데이터) vs Numeric Data (수치형)Classification(분류) vs Regression(회귀)당도, 색깔, 수확 시기 등으로 어떤 과일인지 예상하는 문..
스프링없이 백엔드를 구현하라는 지시를 받아서 요즘 계속 쌩자바로만 백엔드를 구현하고 있다. 저번 프로젝트 기간동안 로그인 기능을 구현했었는데, 그때는 회원가입을 하면 입력한 회원정보가 단순히 데이터 베이스에 저장되는 것이었다. 사실 이렇게 하면 보안에 매우 취약하므로 비밀번호 암호화를 해주어야 한다. 그래서 BCrypt를 사용하여 암호화한 비밀번호를 데이터 베이스에 저장해주었다. 1. BCrypt bcrypt는 블로피시 암호에 기반을 둔 암호화 해시 함수다. Bcrypt는 패스워드를 해싱할 때 내부적으로 랜덤한 솔트를 생성한다고 한다. 이때 만든 문자열의 길이는 60이다. 그래서 가장 먼저 암호화된 문자열을 그대로 저장할 수 있도록 테이블의 password 의 최대 길이를 70으로 설정해주었다. 2. p..
0. DBUtil 데이터 베이스 연결 package com.ssafy.sample.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBUtil { private DBUtil() { try { Class.forName("com.mysql.cj.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } private static DBUtil instance = new DBUtil(); public static DBUtil getInstance() { return instance; } pu..
1. 데드락이란? 데드락(Deadlock) 운영체제 또는 소프트웨어의 잘못된 자원 관리로 인하여 둘 이상의 프로세스 또는 스레드들이 아무것도 진행하지 않는 상태로 서로 영원히 대기하는 상황으로, 멀티스레딩, 병렬 프로그래밍, 분산 컴퓨팅에서 흔히 발생하는 문제, 교착 상태라고도 부름 컴퓨터의 멀티태스킹 최초 컴퓨터(싱글 코어)는 프로그램을 실행할 때 블로킹 방식을 사용했음 블로킹 방식: 어떤 프로그램이 실행중일 때 이 프로그램에 대한 작업이 모두 끝나야 다른 프로그램의 작업을 수행할 수 있도록 하는 방식 프로세서와 운영체제의 발달로 한 번에 여러 가지 작업을 처리하는 멀티태스킹이 가능해짐 원리는 일을 번갈아 가면서 실행하고 멈추고 하면서 모든 일을 마치게 하는 것 매우 빠르게 전환해가며 일을 하기 때문에..
0. 싸피를 다니며 2024년 1월 2일, 대학교 막학기를 다니며 지원한 싸피에 합격을 하여 싸피에 입과하게 되었고, 그로부터 벌써 2달이 넘게 흘렀다. 작년 개발자 취업 시장이 많이 닫혀있었고, 코테와 플젝 중 플젝이 많이 부족했던 터라 취업이 안될 것 같은 불안감과 플젝을 채우고 싶다는 마음에 싸피에 지원하였다. 사실 작년 10월부터 연말까지 힘든일들이 많았었다. 일단 첫 번째로 남들 다 잘 채우는 영어 졸업 요건이 고등학교부터 영포자였던 나한테는 너무 힘들었고, 토익 성적이 나오는 시간이 약 2주가 소요된다는 것까지 감안했을 때 볼 수 있는 마지막 시험이 12월 16일이었다. 물론 결과가 보장되지 않았다. 10월 말부터 싸피 코테 일자를 제외하면 볼 수 있는 모든 토익 시험을 봤는데도 결과가 좋지 ..
1. 문제 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 N명의 학생들을 키 순서대로 줄을 세우려고 한다. 각 학생의 키를 직접 재서 정렬하면 간단하겠지만, 마땅한 방법이 없어서 두 학생의 키를 비교하는 방법을 사용하기로 하였다. 그나마도 모든 학생들을 다 비교해 본 것이 아니고, 일부 학생들의 키만을 비교해 보았다. 일부 학생들의 키를 비교한 결과가 주어졌을 때, 줄을 세우는 프로그램을 작성하시오...
1. 추상 클래스 추상 클래스는 해당 클래스를 상속 받는 자손 클래스에서 반드시 재정의가 필요한 클래스이기 때문에 조상 클래스에서의 구현이 무의미하다. 상속전용 클래스라고 이해하면 된다. Java에서는 구현부가 없다는 의미로 조상 클래스 선언부에 abstract를 추가해야 한다. abstract 클래스는 구현부가 없는 메소드가 존재하기 때문에 해당 클래스의 객체를 생성할 수 없고, 상속 받는 자손 클래스는 abstract 메소드를 재정의할 책임이 있다. abstract 클래스는 그 자체로 객체를 생성할 수 없지만 상속을 받는 자식 클래스를 참조하는 것은 가능하다. public abstract class Building { private int floor, room; public void reportBui..
0. 스프링 입문기 우아한형제들 기술이사 김영한님의 강의를 듣기 시작했다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard [무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., 스프링 학습 첫 길잡이! 개발 공부의 길을 잃지 않도록 도와드립니다. 📣 확인해주세 www.inflearn.com 워낙 유명한 강의이기도 하고, 이전에 Django를 공부했었는데 아무래도 조금..
1. 문제 https://www.acmicpc.net/problem/20544 20544번: 공룡게임 크롬 브라우저 상에서 인터넷 연결이 안될때나, 주소창에 chrome://dino 를 입력하면 공룡 게임을 플레이 할 수 있다. www.acmicpc.net 2. 문제 풀이 알고리즘 1) DP 테이블 설계 (높이 2인 나무 필수 조건 생략) 1~n 지점에 높이가 1, 2인 나무를 놓거나 안 놓을 수가 있는데, 첫 지점에서는 나무가 없어야 한다. 나무는 연속 2개까지만 놓을 수 있고, 나무 2개의 높이의 합은 4 이상이 되어서는 안된다. 즉, 1-1, 1- 2, 2 -1은 되지만 2-2는 안 된다. dp를 어떻게 사용할까 고민 하다가 현재 0(나무 없을 때), 1, 2 중 하나를 선택할 때 이전의 높이를 고..
1. 문제 https://www.acmicpc.net/problem/20914 20914번: QWERTY 자판 Albert는 QWERTY 키보드를 이용해 (위 그림 참고) 영문 대문자로 ('A'-'Z') 구성된 문자열을 입력하고 싶다. 아직 키보드 만지는 것이 서툰 Albert는 왼쪽 검지만을 이용해 버튼을 누르는 버릇이 있다. www.acmicpc.net 2. 문제 풀이 알고리즘 1) QWERTY 좌표 딕셔너리 Q W E R T Y U I O P A S D F G H J K L Z X C V B N M QWERTY 키보드를 왼쪽으로 정렬하면 위의 표와 같이 되는데, 이 좌표를 그대로 qwerty 딕셔너리에 저장해준다. qwerty = {"Q": [0, 0], "W": [0, 1], ... , "A": ..