본문 바로가기
세션 & 토큰 로그인한 사람만 게시물을 볼 수 있게 회원 기능을 만들어보자id/비번을 db에 저장하고 유저가 보낸 것과 일치하는지 확인 세션, 토큰 두가지 방식이 있음 세션은 세션id가 유저별로 만들어지고, 데이터베이스에 세션 id를 저장 쿠키에 저장하는 방식 세션 아이디가 일치하면 되는 방식인데, db에 부하가 심함 토큰 jwt 방식, db에 저장하지 않고 유저에게 암호화한 유저 정보를 보내고 유저가 유저 정보를 제출할때 변환, db 조회를 하지 않아 db에 부담이 적어지지만 유저 정보를 악용하기가 더 쉬움 OAuth - 유저의 정보를 다른 사이트에서 사용 가능하게 구현소셜 로그인같은 기능을 만들때 사용한다 2024. 5. 3.
삭제 기능 (Ajax 쿼리스트링, getmapping?) 삭제 기능을 만들어보기 위해서1. 삭제할 물건 id 가져오기2. 그 물건 id에 해당하는거 삭제하기  getmapping으로 삭제하기id를 PathVariable로 전달해서 해당 id 인스턴스를 db에서 삭제한다삭제페이지@GetMapping("/delete/{id}")String delete(@PathVariable Long id){ itemService.delete(id); return "redirect:/list";} ajax로 삭제하기쿼리스트링으로 id를 전달하고 받아서 해당 id 인스턴스를 삭제한다삭제버튼//Ajax 쿼리 스트링을 이용한 삭제 기능@DeleteMapping("/item")ResponseEntity deleteItem(@RequestParam Long id){ ite.. 2024. 5. 3.
컴네 시험문제 풀이 신뢰성 있는 tcp는 처리량 보장안함  출발지 - 패킷 스위치 - 패킷 스위치 - 목적지로 보낼때메세지를 쪼개면 메세지크기/전송률 로 3번 이동해서 메세지크기/전송률 * 3 TCP s1,s2,s3.. 보내면 응답은 하나 증가한 a2,a3.. 식으로 오고중간에 s2가 손실되면 a2가 3번 오고 다음은 s2를 보내고 ack를 a6로 받는다 2024. 5. 3.
Ajax, 쿼리 스트링 • Ajax Ajax로 btn 클래스를 가진 버튼을 클릭하면 /test1 으로 post 요청을 보낸다, document.querySelectorAll('.btn')[0].addEventListener('click', function (){ fetch('/test1',{ method : 'POST', headers : {'Content-Type' : 'application/json'}, body : JSON.stringify({name : 'kim'}) })}) @RequestBody로 받은 json을 map에 저장해서 키 : 데이터 형태로 저장할 수 있다@PostMapping("/test1")String test(@RequestBody Map body ){.. 2024. 5. 3.
UPDATE 기능 만들기 • UPDATE 기능 list에서 특정 상품을 클릭하면 id를 받아서 그 오브젝트를 찾고찾은 오브젝트를 가지고 edit.html에서 폼 안에 내용을 입력해서 리포지토리에 갱신된 데이터를 저장하게 했다데이터 저장하는것과 새로 만드는 것은 기존 객체와 id가 같으면 내용을 갱신하는 것이 되고, 새로운 id면 새 객체를 만드는 것으로 된다  /edit/2 형태의 경로로 들어오면findById로 Item 오브젝트를 찾고 제목과 값을 폼 태크에 수정해서 /edit로 post 요청을 보낸다@GetMapping("/edit/{id}")String edit(@PathVariable Long id, Model model){ Optional result = itemService.findOne(id); if (r.. 2024. 5. 3.
서비스 컨트롤러 분리 기존엔 컨트롤러 클래스에 다 박아둔걸 비즈니스 로직(DB 입출력, 검사) 등의 기능을 가지는 건 서비스로 가고html을 보내거나 받는 건 컨트롤러로 가게 기능을 분리하자  물건을 추가할때 기존엔 컨트롤러의 addpost에서 물건을 만든다음 데이터베이스에 저장하는 식으로 한 것을 서비스에메서드를 따로 빼서 가져오는 식으로 변경했다 서비스 메서드 saveItempublic void saveItem(String title, Integer price){ Item item = new Item(); item.setTitle(title); item.setPrice(price); itemRepository.save(item);} 컨트롤러에서는 메서드를 호출하면 된다@PostMapping("/add.. 2024. 5. 1.
모바일로봇 중간 대비 1.  Temi의 기능을 5가지 이상 제시하라. 네비게이션, 음성 인식, 유튜브, 인터넷, 영상 통화, 따라가기 기능, 매핑, 키오스크, 위치파악, 전화, 홈으로 돌아가는 기능 2. 테미가 가지고 있는 센서가 아닌 것은? ①  라이다 센서 ②  열감지 센서 ③  범위 센서 ④  카메라 현재 사용중인 자율주행 단계 - 2,3 단계 6. 자동차에서 사용하는 센서를 3가지 이상 제시하라. 레이더, 카메라, 초음파센서, 라이다 센서, 적외선 카메라 7. 사용자가 넘어졌을 때 보호자에게 알려주는 서비스를 구현하고 싶다. 알맞은 센서는? ① RFID ② 적외선센서 ③ 초음파센서 ④ 자이로센서  8. 전파를 사용해 거리를 측정하는 센서는? ①  레이더 센서 ② 라이다 센서 ③  초음파 센서 ④  카메라 센서 9. 지.. 2024. 5. 1.
타임리프, Rest Api 예외처리 타임리프를 쓴 경우엔 error.html 만들어주면 에러 처리 가능 RestApi는 아래처럼 try-catch나 @ExceptionHandler를 이용하면 된다 1.try - catch 구문 사용하거나2. ExceptionHandler를 만들거나 - 컨트롤러마다 박으면 컨트롤러가 많으면 아찔해짐@ExceptionHandler(Exception.class)public ResponseEntity handler(){ return ResponseEntity.status(404).body("asd");} 3. 모든 컨트롤러의 에러를 캐치하는 @ControllerAdvice 어노테이션을 사용한 클래스를 만들기@ControllerAdvicepublic class MyExceptionHandler { @Ex.. 2024. 5. 1.
타임리프 문법 • 반복문 th:each 지금 itemRepository에 있는 item 클래스 객체들을 싹 긁어서 모델에 items 라는 이름으로 전달@GetMapping("/list") String hello(Model model){ List result = itemRepository.findAll(); model.addAttribute("items",result); return "list.html"; } th:each 반복문으로 items를 순회하면서 안에 있는 요소 하나하나 출력  • css 재활용하기 th:fragment, th:replace 네비게이션바를 재활용 할려고 nav.html을 작성하고 th.. 2024. 5. 1.
Mysql Azure 워크벤치 연동하기 Hostname에 서버 이름Username에 서버 관리자 로그인 이름을 넣고 비번은 Azure 에서 mysql로 만들때 쓴 비번을 넣는다 2024. 5. 1.
백준 14465 : 소가 길을 건너간 이유 • 초기 코드 - 테케만 되고 나머진 실패처음엔 슬라이딩 윈도우를 생각하지 못해서 정상 신호등 - 0, 고장난 신호등 - 1, 고친 신호등 - 2로 두고투포인터 개념으로 문제를 풀어보려고 했지만 k개가 유지되지 않아서 틀린 것 같다 for (int i = 1; i = k) ans = Math.min(ans, tmp); if (arr[i] == 2) tmp--; // 수리한 신호등 갯수를 lt가 증가하면서 빼줌 cnt--; } System.out.println(ans); 슬라이딩 윈도우로 변경하고 바로 풀렸다딱 보고 문제 유형을 알 수 있을때까지 많이 풀어봐야겠다..import java.util.*;import java.io.*;class M.. 2024. 4. 29.
컴구 중간 요약정리 저희 집은 액기스만 쫙 짜서 올립니다.. 2024. 4. 26.
백준 17609 : 회문 (투포인터) 문제 회문(回文) 또는 팰린드롬(palindrome)은 앞 뒤 방향으로 볼 때 같은 순서의 문자로 구성된 문자열을 말한다. 예를 들어 ‘abba’ ‘kayak’, ‘reviver’, ‘madam’은 모두 회문이다. 만일 그 자체는 회문이 아니지만 한 문자를 삭제하여 회문으로 만들 수 있는 문자열이라면 우리는 이런 문자열을 “유사회문”(pseudo palindrome)이라고 부른다. 예를 들어 ‘summuus’는 5번째나 혹은 6번째 문자 ‘u’를 제거하여 ‘summus’인 회문이 되므로 유사회문이다. 여러분은 제시된 문자열을 분석하여 그것이 그 자체로 회문인지, 또는 한 문자를 삭제하면 회문이 되는 “유사회문”인지, 아니면 회문이나 유사회문도 아닌 일반 문자열인지를 판단해야 한다. 만일 문자열 그 자체로.. 2024. 4. 22.
백준 15831 : 준표의 조약돌 (투포인터) 문제 준표는 오랜만에 미미와 함께 산책을 나왔다. 산책로에는 일렬로 검은색과 흰색 조약돌이 놓여 있다. 총 N개의 조약돌은 1번부터 N번까지 차례로 번호가 붙여져 있다. 준표는 이 조약돌을 주워 집에 장식하려고 한다. 준표는 임의의 지점에서 산책을 시작하고, 원하는 지점에서 산책로를 빠져나와 집으로 돌아간다. 이때 준표는 산책한 구간에 있는 모든 조약돌을 줍는다. 미미의 건강을 위해 준표는 조금이라도 더 긴 구간을 산책하고 싶다. 하지만 준표에게는 확고한 취향이 있어, 아래 조건을 만족하는 구간만을 산책할 수 있다. 준표는 까만색을 싫어한다. 그래서 까만색 조약돌은 B개 이하로 줍고 싶다. 준표는 미미와 같은 흰색을 좋아한다. 그래서 흰색 조약돌은 W개 이상 줍고 싶다. 만약 위 조건을 만족하는 구간이 .. 2024. 4. 21.
백준 12891 DNA 비밀번호(슬라이딩 윈도우) 문제 평소에 문자열을 가지고 노는 것을 좋아하는 민호는 DNA 문자열을 알게 되었다. DNA 문자열은 모든 문자열에 등장하는 문자가 {‘A’, ‘C’, ‘G’, ‘T’} 인 문자열을 말한다. 예를 들어 “ACKA”는 DNA 문자열이 아니지만 “ACCA”는 DNA 문자열이다. 이런 신비한 문자열에 완전히 매료된 민호는 임의의 DNA 문자열을 만들고 만들어진 DNA 문자열의 부분문자열을 비밀번호로 사용하기로 마음먹었다. 하지만 민호는 이러한 방법에는 큰 문제가 있다는 것을 발견했다. 임의의 DNA 문자열의 부분문자열을 뽑았을 때 “AAAA”와 같이 보안에 취약한 비밀번호가 만들어 질 수 있기 때문이다. 그래서 민호는 부분문자열에서 등장하는 문자의 개수가 특정 개수 이상이여야 비밀번호로 사용할 수 있다는 규칙.. 2024. 4. 21.
백준 2230 수 고르기 문제 N개의 정수로 이루어진 수열 A[1], A[2], …, A[N]이 있다. 이 수열에서 두 수를 골랐을 때(같은 수일 수도 있다), 그 차이가 M 이상이면서 제일 작은 경우를 구하는 프로그램을 작성하시오. 예를 들어 수열이 {1, 2, 3, 4, 5}라고 하자. 만약 M = 3일 경우, 1 4, 1 5, 2 5를 골랐을 때 그 차이가 M 이상이 된다. 이 중에서 차이가 가장 작은 경우는 1 4나 2 5를 골랐을 때의 3이 된다. 입력 첫째 줄에 두 정수 N, M이 주어진다. 다음 N개의 줄에는 차례로 A[1], A[2], …, A[N]이 주어진다. 출력 첫째 줄에 M 이상이면서 가장 작은 차이를 출력한다. 항상 차이가 M이상인 두 수를 고를 수 있다. 제한 1 ≤ N ≤ 100,000 0 ≤ M ≤ .. 2024. 4. 20.
백준 1806 부분합 문제 10,000 이하의 자연수로 이루어진 길이 N짜리 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. 출력 첫째 줄에 구하고자 하는 최소의 길이를 출력한다. 만일 그러한 합을 만드는 것이 불가능하다면 0을 출력하면 된다. 예제 입력 1 복사 10 15 5 1 3 5 10 7 4 9 2 8 예제 출력 1 복사 2 • 풀이 tmp가 m을 넘지 않을때까지 더해준다음 넘으면 하나씩 빼면서 최대한 짧은.. 2024. 4. 20.
정처기 실기 이론 2024. 4. 19.
컴구 7주차 인터럽트처리순서 시험에 나온다! 2024. 4. 19.
정처기 기출 틀린문제 *p + 4 2024. 4. 18.