1. 동기와 비동기란 무엇인가? 동기(Synchronous)와 비동기(Asynchronous)는 프로그램이 요청을 처리하는 방식의 차이를 나타냅니다. 동기 방식에서는 요청이 순차적으로 처리되며, 다음 작업은 이전 작업이 완료된 후에만 시작됩니다. 반면, 비동기 방식에서는 요청이 독립적으로 실행되며, 다른 작업의 완료 여부와 관계없이 다음 작업을 실행할 수 있습니다. 이 두 가지 방식은 프로그램의 성능과 사용자 경험에 큰 영향을 미칩니다.2. 동기(Synchronous) 프로그래밍: 순차적 작업 처리동기 방식에서는 각 작업이 순서대로 실행되고, 이전 작업이 완료되어야 다음 작업이 시작됩니다. 주로 작은 규모의 작업이나 순차적 데이터 처리에 적합합니다.특징:작업이 순차적으로 처리되며, 코드가 직관적이어서 이..
spring
Flask vs Spring Flask와 Spring은 웹 애플리케이션 개발을 위해 사용되는 인기있는 프레임워크입니다. Python 기반인 Flask와 Java 기반인 Spring은 각각의 특징과 장점을 가지고 있으며, 아래에서 두 프레임워크의 비교를 살펴보겠습니다. 용도와 도메인 Flask는 가벼운 웹 프레임워크로서, 작고 간단한 웹 애플리케이션 개발에 적합합니다. Python 기반이기 때문에 데이터 과학, 웹 API, 마이크로서비스 등 다양한 도메인에서 사용됩니다. Spring은 자바 기반의 엔터프라이즈 애플리케이션 개발을 위한 프레임워크로, 대규모 애플리케이션 및 기업 수준의 솔루션에 적합합니다. 학습 곡선 (러닝 커브) Flask는 사용하기 쉽고 진입 장벽이 낮은 프레임워크로, 기본적인 웹 개발 ..
VO객체를 만들어 JSON으로 출력을 하다보면 상황에 따라 필요 없는 값을 모두 보여준다. 기본적인 스프링 MVC 구조를 예를 들어보겠다! /* VO */ public class BoardVO { private String id; private String title; private String contents; private String link; /* Getter */ /* Setter */ /* ToString */ } /* DAO */ @Repository public class BoardDAO { @Autowired private SqlSession session; private String namespace = "com.xxx.xxx.xxx.mapper."; public List selectB..
Spring 작업할 때 MyBatis mappers.xml 에서 비교연산자 사용할 시에 오류가 발생한다. (The content of elements must consist of well-formed character data or markup.) 방법 1. CDATA 쿼리를 CDATA로 감싸주는 방법 ex1) 쿼리 전체
프로퍼티(Properties) 파일이란, - KeyWord 설정 정보를 XML로 분리해두면 빈 클래스나 의존관계 정보를 소스코드 수정 없이도 간단히 조작할 수 있다. XML에는 빈의 정의와 의존관계뿐 아니라 빈이 필요로 하는 각종 설정 정보를 프로퍼티 값으로 지정해줄 수도 있다. (대표적인 설정 값 : dataSource) 서버환경에 종속적인 정보가 있다면, 이를 애플리케이션의 구성정보에서 분리하기 위해서이다. 환경에 따라 자주 변경될 수 있는 내용은 프로퍼티 파일로 분리하는 것이 가장 깔끔하다. XML처럼 복잡한 구성이 필요 없고 키와 그에 대응되는 값의 쌍으로 구성하면 충분하기 때문이다. 장점 : @Value를 효과적으로 사용할 수 있다. @Value는 소스코드 안에 포함되는 애노테이션이어서 값을 수..
· 사용자의 레벨은 BASIC, SILVER, GOLD 세 가지 중 하나다. · 사용자가 처음 가입하면 BASIC 레벨이 되며, 이후 활동에 따라서 한 단계씩 업그레이드될 수 있다. · 가입 후 50회 이상 로그인을 하면 BASIC에서 SILVER 레벨이 된다. · SILVER 레벨이면서 30번 이상 추천을 받으면 GOLD 레벨이 된다. · 사용자 레벨의 변경 작업은 일정한 주기를 가지고 일괄적으로 진행된다. 변경 작업 전에는 조건을 충족하더라도 레벨의 변경이 일어나지 않는다. 1. 정수형 상수 값으로 정의했을 때 (사용하면 안됨) class User { private static final int BASIC = 1; private static final int SILVER = 2; private sta..
@RestController는 @Controller에 @ResponseBody가 추가된 것으로 주 용도는 Json 형태로 객체 데이터를 반환하는 것이다. Controller로 View 반환 1. Client는 URI 형식으로 웹 서비스에 요청을 보낸다. 2. DispatcherServlet이 요청을 위임할 HandlerMapping을 찾는다. 3. HandlerMapping을 통해 요청을 Controller로 위임한다. 4. Controller는 요청을 처리한 후에 ViewName을 반환한다. 5. DispacherServlet은 ViewResolver를 통해 ViewName에 해당하는 View를 찾아 사용자에게 반환한다. Controller로 Data 반환 1. Client는 URI 형식으로 웹 서비스..
contains // a가 student를 포함하고 있으면 true 반환 a = "Hello student."; str = StringUtils.contains(str, "student"); System.out.println("contains : " + str); defaultString // a가 null이면 "", 아니면 a 반환 a = "Hi"; str = StringUtils.defaultString(str); System.out.println("defaultString : " + str); deleteWhitespace // 문자열 중 공백 문자가 있으면 모두 제거 a = "H e l l o"; str = StringUtils.deleteWhitespace(a); Sytem.out.println..
1. MyBatis org.mybatis mybatis 3.2.8 2. MyBatis Spring org.mybatis mybatis-spring 1.2.2 3. root-context.xml 내용 추가 4. src/main/resources 파일 추가 (mybatis-config.xml) 5. src/main/resources 폴더와 파일 추가 (Mapper.xml) ex) 1) mappers -> com -> ex -> exercise -> board -> mapper 순으로 폴더 생성 2) Mapper.xml 생성 BoardMapper.xml http://mybatis.org/dtd/mybatis-3-mapper.dtd"> m.ex.exercise.board.mapper"> INSERT INTO b..
1. 라이브러리 Spring JDBC org.springframework spring-jdbc ${org.springframework-version} 2. root-context.xml 내용 추가 아래 부분에 추가
1. 로그 예제) TestController.java import org.slf4j.Logger; import org.slf4j.LoggerFactory; private static final Logger logger = LoggerFactory.getLogger(TestController.class); @GetMapping("/list") public String testList() { logger.info("TestController, testList."); return "test/testList"; } 2. 필터 설정 Project -> src -> main -> web.xml appServlet / 아랫부분에 추가 encodingFilter org.springframework.web.filter...