이번 포스팅은 실무에서 주로 날짜 데이터를 다룰때가 있는데 그때마다 주로 사용하는 방법들을 정리해보려고 합니다. 1. 경과된 밀리세컨드(millisecond)를 현재시간에서 빼기1234567891011// millisecond 값이 String으로 주어졌을때 // 2412716459밀리세컨드 만큼의 값이 흘렀을 때 현재시간에서 밀리세컨드를 뺀 날짜를 구하기String strMilliSeconds = "2412716459";Long MilSeonds = Long.parseLong(value.toString()); Date nowDate = new Date(); long wantMilSecs = nowDate.getTime() - MilSeonds; Date wantDate = new Date(wantMil..
Project Explorer > Link with Editor 선택 (그림 빨간영역)파일을 선택하면 프로젝트에 파일들을 자동으로 펼쳐서 해당파일이 선택됩니다!
데이터를 받는 방식인 동기와 비동기. 이 둘의 개념과 차이에 대해 알아보겠습니다. 동기 (Synchronous : 동시에 일어나는)동시에 일어난다는 뜻이다. 요청과 그 결과가 동시에 일어난다는 약속이다.바로 요청을 하면 시간이 얼마가 걸리던지 요청한 자리에서 결과가 주어져야 한다.요청과 결과가 한 자리에서 동시에 일어난다.장점 : 설계가 매우 간단하고 직관적단점 : 결과가 주어질 때까지 아무것도 못하고 대기해야 한다. 비동기 (Asynchronous: 동시에 일어나지 않는)동시에 일어나지 않는다를 의미한다. 요청과 결과가 동시에 일어나지 않을 것이라는 약속이다.요청한 그 자리에서 결과가 주어지지 않는다.노드 사이의 작업 처리 단위를 동시에 맞추지 않아도 된다.장점 : 결과가 주어지는데 시간이 걸리더라도 ..
이번에는 DB를 좀 더 쉽게 다루기 위해서 SQLyog를 다운받고 DB테이블을 생성해보도록 하겠습니다. sqlyog.softonic.kr/download SQLyog 그래픽 인터페이스를 사용하여 MySQL 데이터베이스 관리 용이성 sqlyog.softonic.kr 링크를 통해 SQLyog를 다운받습니다. 설치가 완료되면 이전 포스팅에 설치했던 MariaDB를 연결합니다. 연결 테스트가 성공되면 연결을 통해 접속을 합니다. 로컬호스트에 우측클릭을 하여 데이터베이스를 생성합니다. 생성후에 게시판 테이블과 회원정보 테이블을 생성해 주도록 합니다. 게시판 테이블 DDL CREATE TABLE BOARD( BNO INT NOT NULL AUTO_INCREMENT,-- 게시판 고유 번호 (자동증가) TITLE VA..
단일 컴포넌트 # 전역수준 컴포넌트 문제점 컴포넌트 관리가 어렵고 재사용성이 낮아진다. 빌드 단계가 없으므로 ES2015, TypeScript와 같은 최신 버전 자바스크립트 문법을 사용할 수 없다. (ES 2015 전 문법 작성만 가능) CSS를 지원하지 않는다. 컴포넌트들은 고유한 스타일 정보를 포함하는 경우가 많으나, 전역 컴포넌트에서는 CSS 스타일을 빌드하고 모듈화하는 기능을 제공하지 않는다. css를 방식이 아니라 모듈 처럼 참조(import)할 수 없다. → 모듈 처럼 사용할 경우 빌드 거치면 자체적으로 link 태그를 만든다. 컴포넌트들의 템플릿이 작성될 때, HTML 파일 안에 여러 개의 태그가 작성되어 식별하기 어렵다. 또한 템플릿마다 고유한 ID를 부여하고 컴포넌트들도 고유한 이름을 지..
스프링으로 게시판을 만들어보는 포스팅을 작성해보려고 합니다. 최종적인으로 완성 형태는 Vue, Spring, MariaDB을 사용한 형태로 완성하려고 합니다. 일단 이전 포스팅에서 작성한 프로젝트를 기반으로 사용합니다. Lombok을 사용하여 Java 개발시에 자주 사용되는 getter/setter, toString(), 생성자등을 변수를 선언한 것만으로도 자동으로 생성해줘서 코드를 줄이는데 유용합니다. Lombok 다운로드는 http://prprojectlombok.org/에서 jar 파일 형태로 다운 받을수 있습니다. 받은 lombok.jar를 실행킵니다. Quit Installer 눌러서 설치를 해주세요 이제 pom.xml에 lombok의 라이브러리를 추가해주고 Log4j 라이브러리는 1.2.15로..
자바에서 데이터의 객체 타입이 뭔지 비교가 필요하여 해당 객체가 어떤 객체인지 파악할 때가 있어서 사용을 해봤습니다. 예시는 객체 데이터의 값이 어떤 객체인지를 확인하기 위한 예제입니다. // 키 값이 String, 값이 Object인 dataMap이 있다고 가정합니다. Map dataMap = new HashMap(); // dataMap에 첫번째는 String, 두번째는 Boolean 세번째는 Int 값을 넣습니다. dataMap.put("first", "StringValue"); dataMap.put("second", true); dataMap.put("third", 3); // for 문으로 각각의 키값 반복문을 통하여 값에 따른 객체의 형태를 알아봅시다. for (String key : data..
지난번 프로젝트를 실행하면 Hello world와 현재 시각이 나오는데 한글부분이 깨져서 ?로 나오는 것을 확인할 수 있습니다. 이 부분을 UTF-8로 변환하여 한글로 나오게 처리합니다. 프로젝트를 선택한 후 Project > Properties로 들어갑니다. Resource > Text file Encoding에서 Other을 클릭하여 UTF-8로 바꿔준 후 Apply and Close하여 적용합니다. Window > Preferences로 들어가서 General > Workspace에 들어가서 똑같이 UTF-8로 설정해줍니다. 그 후 프로젝트를 클릭해서 src > main > webapp > WEB-INF > web.xml에 들어가가서 source를 클릭합니다. 그럼 다음과 같은 서블릿 관련 xml파..
주로 스프링에서 RESTAPI의 결과값으로 받아올 때에 MAP형태나 리스트맵형태로 반환을 사용하기 때문에 Map에 대한 이해가 필요할 때가 많다. HashMap에 대한 사용을 위해 키들과 값을 가져오는 방법에 대해 알아보자 다음과 같은 HashMap을 선언하였습니다Map classMap = new HashMap(); HashMap은 {key - value}의 형태로 쌍의 데이터로 저장되는 구조를 갖고 있는 객체이다. 값은 중복될 수 있지만 키 값은 중복이 되지않아 이미 존재하는 key 값에 동일한 key를 put하게 되면 기존의 데이터는 새로 put한 값으로 대체가 된다. 선언한 classMap에 키와 값들을 아래와 같이 세팅해준다.classMap.put("철수", 1);classMap.put("영희..
REST API란? Representational State Transfer API라는 용어의 약자이다. REST란 "자원을 URI(Uniform Resource Identifier)로 표시하고 해당 자원의 상태(정보)를 HTTP를 이용하여 자원을 주고 받는 것"을 의미한다. 따라서 Restfult API는 REST 특징을 지키면서 API를 제공하는 것을 의미한다. Q) URI 과 URL의 차이점은? URL은 Uniform Resource Locator로 인터넷 상 자원의 위치를 의미합니다. 자원의 위치라는 것은 결국 어떤 파일의 위치를 의미합니다. 반면에 URI는 Uniform Resource Identifier로 인터넷 상의 자원을 식별하기 위한 문자열의 구성으로, URI는 URL을 포함하게 됩니다...
객체 지향 프로그래밍 및 설계에서 5가지 기본원칙(SRP, OCP, LSP, ISP, DIP)의 앞글자를 따서 SOLID 원칙이라고 합니다. '원칙이란 무엇일까?' 원칙을 이렇게 정의합니다 "많은 경우에 적용되는 기본적인 규칙이나 법칙." SOLID 원칙은 객체 지향 프로그래밍 및 설계에서 많은 경우에 적용되는 규칙이나 법칙입니다. '그럼 SOLID를 적용하는 이유는 뭘까?' 시스템에 예상하지 못한 변경사항이 발생하더라도, 유연하게 대처하고 이후에 확장성이 있는 시스템 구조를 설계하기 위해서입니다. 간단하게 말해서 '유지보수성과 확장성'을 위해서이다. SOILD는 객체 지향 프로그래밍에서 변경사항이 있을때 자기 클래스안에 응집도는 높이고, 다른 클래스 사이의 결합도는 낮추는 High Cohesion - ..
이번에는 간단하면서도 중요한 개념인 CallCall by value와 Call by Reference에 대해서 알아보려고한다.전공시간에 교수님이 매우 중요한 개념이라고 말씀하셨는데 면접때도 질문으로 나왔었던.... 우선 Call by value와 Call by Reference는 일단 함수의 호출 방식을 의미한다. Call by value(값에 의한 호출) - 함수에 매개 변수의 내용물을 전달하여 복사해서 사용하는 방식Call by reference(참조에 의한 호출) - 함수에 매개 변수의 참조 주소를 참조해서 호출하는 방식 의미 자체로만 본다면 함수의 호출을 값에 의해서 하는가 아니면 참조에 의해서 하는가라는 차이를 알 수 있다. 참조와 값에 따른 호출에 대한 좋은 그림예시가 있다Call by..