Programming 265

스프링(spring)/ 스프링부트(springBoot)-mysql연동

1. 스프링부트 프로젝트 구조 * 기본적으로 패키지들과 mappers폴더를 추가했다. 2. 의존성 패키지 추가 설치 JDBC/ Mybatis/ Mysql org.springframework.boot spring-boot-starter-jdbc org.mybatis.spring.boot mybatis-spring-boot-starter 2.3.1 org.mybatis.spring.boot mybatis-spring-boot-starter-test 2.3.1 test com.mysql mysql-connector-j runtime 3. application.properties 파일 프로퍼티 설정. 아래 코드 추가 # MySQL spring.datasource.url=jdbc:mysql://127.0.0.1:..

Maven 과 Gradle

Maven과 Gradle은 둘 다 빌드 도구로서 Java 기반 프로젝트의 빌드, 의존성 관리, 배포 등을 관리하는 도구입니다. 그러나 각각의 특징과 장단점이 다르며, 개발자의 선호나 프로젝트의 요구사항에 따라 선택할 수 있습니다. 아래에서 Maven과 Gradle을 비교해보겠습니다. 1. Maven: - **XML 기반 설정**: Maven은 XML 기반의 설정 파일(`pom.xml`)을 사용하여 프로젝트를 설정하고 관리합니다. XML 형식이기 때문에 가독성이 좋지만, 복잡한 프로젝트의 설정이나 커스텀 빌드 로직을 표현하기에는 제한이 있을 수 있습니다. - **기본 설정 제공**: Maven은 규약을 따르는 프로젝트 구조와 기본 설정을 제공하여 프로젝트를 빠르게 시작할 수 있도록 도와줍니다. 또한 Mav..

스프링(spring)/ 스프링부트(Spring Boot) 프로젝트 생성

1. Spring Starter Project(스프링부트 프로젝트 생성 템플릿) * (우선은 Maven 기준으로) 중요한건 스프링부트는 기본적으로 jsp 미지원인데; Packaging형식으로 War로 하면 사용 가능하다. 자바버전을 선택하고 NEXT 후에, 스프링부트 버전과 호환이 가능해야 한다. 예전에 올렸던 버전관련 게시물 참고하면 된다. * 웹 어플리케이션이 주 프로젝트일 것이기에 의존성 체크하면 손쉽게 스프링을 시작할 준비가 된거다. 2. jsp사용 환경을 만들어 주기위해, pom.xml 파일 의존성 추가. jstl jstl 1.2 org.apache.tomcat.embed tomcat-embed-jasper provided 3. 그리고 jsp 경로 폴더 및 메인 홈 페이지 jsp 생성. src/..

스프링(spring)/ 다듬기 1(MVC에 대한 고찰)

1. 제일 중요한 url 매핑기능 익히기 @GetMapping("/account/join") public void getJoin(Model model) throws Exception { List countryCodes = null; countryCodes = userService.getCountryCodes(); model.addAttribute("countryCodes", countryCodes); } @PostMapping("/account/update") public String postUpdate(UserVO vo) throws Exception { String inputPass = vo.getPwd(); String pwd = pwdEncoder.encode(inputPass); vo.setPw..

스프링(spring)/ +더하기 6(게시판별 좋아요 시스템 구현)

1. 1:1 논쟁이라는 시스템을 살려서 그 매치 자체에 대한 좋아요 기능을 구현하고자 한다. 먼저 천천히 숨을 가다듬고, 매퍼파일 부터 추가한다.(새로운 테이블 객체 생성시, VO파일에 추가 필수!) update counter set senderGood = senderGood+#{senderGood}, senderBad = senderBad+#{senderBad}, receiverGood = receiverGood+#{receiverGood}, receiverBad = receiverBad+#{receiverBad}, debateGood = debateGood+#{debateGood}, debateBad = debateBad+#{debateBad} where channel= #{channel} SELEC..

스프링(spring)/ +더하기 5(관전 시스템)

1. 먼저 해당 게시글을 토대로 생성된 1:1 매칭을 댓글처럼 모두 나열 시켜본다. 먼저 jsp파일에 링크 추가 논쟁 둥지 2. Controller단에서 url매핑 // 논쟁 둥지 @RequestMapping(value = "/debateNest", method = RequestMethod.GET) public void getDebateNest(@RequestParam("idx") int idx, Model model) throws Exception { List debateNest = null; debateNest = service.debateNest(idx); model.addAttribute("debateNest", debateNest); List originList = null; originList..

스프링(spring)/ +더하기 4(1:1게시판 시스템)

1. 1:1채팅 아이디어를 변용해서 1:1 게시판 시스템을 만들어보고자 한다. 게시물 리스트를 받아오는데, 해당 주제에서 글을 쓴 본인 아이디로 접속 시에는 1:1게시판 버튼이 안보이게 일단 설정, jsp파일에 링크를 연결시켜준다. 대결 *debate라는 jsp에 ?쿼리로, 해당 데이터를 넘겨줘서 get페이지로 사용하겠다. 2. 그 먼저 1:1게시판의 특징을 데이터 모델링 해서 Controller 단에서 url과 데이터 처리 로직을 매핑시켜 준다. 주제 관련 게시물A의 1:1 논쟁 게시판 클릭 > 게시물A의 내용과 논쟁 요청자(보낸이) user가 작성한 게시글 데이터 내용 // 1:1 논쟁 게시판 시스템 @RequestMapping(value = "/debate", method = RequestMetho..

스프링(spring)/ +더하기 3(세션 활용 게시물 등록)

1. 세션을 활용하여 회원 권한으로 글 쓰는 시스템을 만들어 본다. 먼저, jsp단에서 시작할 링크로 태그를 걸어준다. 글쓰기 * '?쿼리'를 사용하여 어떠한 값을 포함해서 get요청을 보냈다. 이것은 외래키로 참고할 데이터를 커스텀. 2. 그리고는 get요청을 처리할 Controller에서 url매핑 먼저 해준다. //게시물 작성 @RequestMapping(value = "/write", method = RequestMethod.GET) public void getWirte(@RequestParam("sub_idx") int sub_idx, Model model) throws Exception { List subject = null; subject = service.subject(sub_idx); m..

스프링(spring)/ +더하기 2(데이터베이스 상호작용, 주제별 게시판 만들기)

지금까지 데이터베이스를 활용해서 간단하게는 하나의 테이블에서 하나의 작업을 처리하여 결과물로 가져왔었다. 1. 이번에는 여러 작업을 여러 테이블에서 처리하여 jsp에서 뿌려주는 방법을 알아본다. 먼저, 시작할 링크로 태그를 걸어준다. 인공지능과 자동화 * 아직 많은 자료를 반복으로 처리해야할 지점이 아니기에 / '?쿼리'를 사용하여 get요청을 보낸다. 2. 그럼 url을 매핑시켜줄 Controller단 // 주제 페이지 @RequestMapping(value = "/subject", method = RequestMethod.GET) public void getSubject(Model model, @RequestParam(value = "sub_idx", required = false, defaultVa..

C# / 동기(async), 비동기(await), 병렬(parallel) 처리

# 동기, 비동기, 그리고 병렬 처리 다양한 방식으로 작업을 처리하고 성능을 최적화하는 데 도움을 줍니다. 각각의 처리 방식을 비교하여 설명하겠습니다: 1. 동기 처리 (Synchronous): - 동기 처리는 작업이 순차적으로 실행되는 방식입니다. 즉, 한 작업이 완료되기를 기다린 다음 다음 작업을 수행합니다. - 일반적으로 단일 스레드에서 작업이 처리되며, 한 작업이 끝나야 다음 작업을 수행할 수 있습니다. - 동기 처리는 간단하고 예측 가능하지만, 대규모 또는 시간이 오래 걸리는 작업에서는 성능 문제가 발생할 수 있습니다. 2. 비동기 처리 (Asynchronous): - 비동기 처리는 작업이 병렬적으로 실행되는 방식으로, 다른 작업이 진행 중일 때 다른 작업을 시작할 수 있습니다. - 비동기 키워..