분류 전체보기 180

이클립스 안켜짐. workspace is in use or cannot be create, please choose a different one.

이클립스를 열면 다음과같은 에러메시지가 나온다. workspace is in use or cannot be create, please choose a different one. 문구 의미: 이미 해당 워크스페이스가 이클립스로 열려있으니 다른 워크스페이스를 선택해라~ 원인: 해당 워크스페이스를 연 이클립스가 이미 있어서. 상태: 이클립스가 열려있다고 문구가 뜨는데 열려있는 이클립스가 보이지 않는다. 해결방법1. 작업관리자를 열어 해당 작업을 종료한다. 작업관리자를 열어서 보면 화면으로는 보이지 않지만 이클립스가 실행되고 있는게 보인다. 이클립스를 우클릭해서 "작업끝내기"를 누른다. 다음으로 워크스페이스 폴더의 .metadata로 들어가서 .lock 퍼알울 삭제한다. 대부분 이 방법으로 하면 해결되는것같던데..

Back-end 2022.06.26

JAVA) 자바 Math.ceil 자세히 알아보기(올림, 소수점 버리기)

페이징 처리를 구현하다가 공식중에 Math.ceil이 있는데, 좀 이해가 가지 않고 헷갈렸다. Math.ceil이 올림인건 알지만, 소수점으로 계산했을때, 정수로 했을때 등등이 달랐기 때문에 어려웠다. 결과를 구글링 해보았지만 예제도 부족했고, 이참에 확실히 알아야 까먹지 않을것같아서 적어보기로 했다. Math 클래스 java.lang 패키지에 속한 클래스로, 수학에서 자주 사용되는 상수와 함수들이 구현되어있는 클래스다. 여기 구현된 메서드들은 static Method 이므로, 객체를 생성하지 않고도 바로 구현할 수 있다. Method 종류 1) random(랜덤 뽑기) 2) abs(절대값) 3) min(최소), max(최대) 4) ceil(올림), floor(내림), round(반올림) 5) pow, ..

Spring) 비즈니스 계층. 서비스(Service)란?

비즈니스 계층, 서비스는 컨트롤러와 DAO사이에 위치해서 서로 의존성이 높아지는것을 방지하는 완충제 역할을 한다. 컨트롤러에서 DAO를 바로 호출할 수 있지만, 그러면 컨트롤러와 DAO가 종속되어버린다(강한결합). 그래서 컨트롤러와 DB의 다이렉트 연결을 한단계 떨어뜨려 종속되는것을 막는 것. => 외부 호출에 대한 영속계층(persistence) 종속성을 막는다. 종속성을 떨어뜨린다는건 매우쉽게 말하면 컨트롤러는 컨트롤러의 역할만 하게 하고, 그 외의 역할은 못하게 하는 것. 이렇게 하는 이유는 중간에 DB를 바꾼다거나 할때 바뀌는 부분만 갈아끼우기 형태로 바꿀 수 있기 때문이다. 종속이 되면 서로 강한결합이 되어있으니 모두 다 뜯어고쳐야 하는 상황이 발생하게된다. 1. 서비스 패키지 만들고 객체 등록..

Back-end/Spring 2022.05.02

Spring) 로그인 동작 만들기(테스트 형태)

로그인 동작 전 준비 - MemberVO - DB에 유저테이블에 유저 한명 이상 - DB연결할 dataSource, SqlSessionFactory, SqlSessionTemplate 객체Bean. 1. MemberDAO에 추상메서드로 로그인 메서드 만들어놓기 public void loginMember(String userid, String userpw); 이렇게 직접 적는것 보다 vo객체를 사용하는 것이 좋다. 이렇게 따로 정보를 가져와서 처리하는 방법은 뒤에 5번에 적어보겠다. // 로그인 동작 public MemberVO loginMember(MemberVO vo); 2. 로그인 동작 sql문 생성 src/main/resource/mappers/memberMapper.xml select * from..

Back-end/Spring 2022.04.29

GIT) 다른 팀원이 올린 branch 내용 확인하기

1. branch 업데이트 git remote update 원격지에 바뀐 브랜치가 있으니 업데이트를 하면 [new branch]로 새로운 브랜치가 들어온다. 2. 업데이트가 잘 됐는지 확인 git branch -r : 원격 주소지의 브랜치 확인 git branch -a : 로컬&원격 주소지의 브랜치 확인 3. 해당 브랜치로 이동 commit과 push없이 확인만 하려면 아무 옵션없이 아래 명령어를 하면된다. git checkout [원격저장소의 branch이름] 이는 해당 브랜치의 내용을 로컬(내 컴퓨터)에서 테스트 하고싶을때 주로 사용한다. 안내 문구처럼 ‘detached HEAD’ 상태가 되어 You can look 해당 브랜치의 내용을 볼 수 있다. * 현재 어느 브랜치에 있는지 확인: git br..

Git 2022.04.29

Spring) Contoller 리턴 타입에 따른 매핑 방법

컨트롤러의 메서드의 리턴타입에 따라 페이지 이동 방법이 다르다. 리턴값이 없을때(void), 리턴타입이 String일때, 리다이렉트, 포워드 의 페이지 이동을 정리해보려 한다. 1. 리턴타입이 void일때 이전글에서 했던 대로 @RequestMapping("/주소") 괄호안에 적은 주소와 같은이름의 페이지를 매핑한다. @RequestMapping("/myPage") 로 하면 views/myPage.jsp 페이지를 호출. 2. 리턴타입이 String일때 형식 @RequestMapping("/doTest2") public String doTest02() { return "String리턴"; } @RequestMapping() 에는 /doTest2로 되어있지만 return된 문자열인 String리턴.jsp 페..

Back-end/Spring 2022.04.27

Spring) 스프링 Controller 개념과 페이지 연결(주소매핑)

1. 컨트롤러란? 스프링 프레임워크는 MVC패턴을 사용하고있고, 여기서 Controller는 화면(View)과 비즈니스 로직(Model)를 연결시키는 다리 역할을 한다. 쉽게 말하자면 화면에서 /aaa 로 가줘~ 하고 요청하면 주소를 받아들여 어디로 갈지 분석하고 맞는 길로 연결시켜주는 역할이다. Controller를 세부적으로 나누면 FrontController와 Controller로 나눌 수 있다. FrontController는 사용자의 모든 요청을 전달받는곳으로, 요청에따라 view페이지 또는 적절한 컨트롤러를 호출한다. 또한 원하는 작업을 수행한 결과를 가지고 다시 페이지를 이동한다. ▷ 작성하는 코드가 컨트롤러인지 어떻게 파악할까? @Controller 어노테이션으로 인해 이 클래스가 컨트롤러인..

Back-end/Spring 2022.04.27

Spring) DB연결 방법 3가지(직접, Bean객체, MyBatis)

1. 클래스에서 직접 연결하는 방법. public class DBConnectTest { private static final String DRIVER = "com.mysql.cj.jdbc.Driver"; private static final String DBURL = "jdbc:mysql://localhost:3306/springdb"; private static final String DBID = "root"; private static final String DBPW = "1234"; @Test public void 디비연결테스트() { try(Connection con = DriverManager.getConnection(DBURL, DBID, DBPW)) { Class.forName(DRIVER..

Back-end/Spring 2022.04.25

Spring) JUnit을 활용하여 테스트 코드 작성하기

스프링으로 프로젝트를 시작하기 전, DB연결은 잘 되는지, 객체 주입이 잘 되는지 등 테스트를 해보는것이 좋다고 한다. JUnit은 자바용 단위 테스트 프레임워크여서 JUnit을 통해 테스트를 실행해볼 수 있다. *JUnit은 자바 1.8버전부터 사용할 수 있다. 1. JUnit 라이브러리가 있는지 확인하기. pom.xml 파일에 가서 아래의 dependency가 있는지 찾아본다. 만약 없으면 위의 코드를 추가하거나 아래 dependencies탭에서 junit을 추가한다. pom.xml말고도 Maven Dependencies에서도 찾아볼 수 있다. 2. 테스트 클래스 작성 테스트 클래스는 src/main/java안의 패키지명과 같은 이름으로 src/test/java 안에 패키지를 만들어야한다. 클래스명은..

Back-end/Spring 2022.04.23

알고리즘) 시간 복잡도에 대해 알아보자

시간 복잡도란(Time Complexity)? 알고리즘의 속도. 문제를 해결하는데 걸리는 시간과 입력의 함수관계. 입력이 많을수록 처리할게 많아지니까 시간이 더 걸린다. 알고리즘을 어떤 방식을 사용하냐에 따라 시간이 덜 걸릴수도, 더 걸릴수도 있다 이런식으로 입력과 해결의 관계를 나타낸 것이 시간복잡도이며, 당연히 시간 복잡도가 낮은 알고리즘이 효율성이 높다. 알고리즘의 속도의 표현방식이 왜 필요할까? A가 B보다 빠르다. 사실 이 말로도 충분히 이해는 간다. 하지만 빠르다는 것 외에 추가적인 기준이 필요하다. A가 B보다 결과가 빨리 나왔는데, 알고보니 A를 실행한 컴퓨터가 성능이 더 좋은 컴퓨터였다면?? 스피드 경기를 진행할때도 같은 환경에서 같은 조건하에 타이머를 가지고 등수를 가리듯이 알고리즘에 ..

알고리즘 2022.04.21
반응형