본문 바로가기

분류 전체보기

(217)
최대공약수 구하기 알고리즘 pubic int get_gcd(int a, int b){ int p = a; int q = b; int r = p % q; while(r != 0) { p = q; q = r; r = p % q; } return q; } 10주 완성 알고리즘 코딩테스트 - goorm edu에서 들으실 수 있는 내용입니다.
required a single bean, but 2 were found: 오류 public class FieldLogTrace implements LogTrace 이처럼 인터페이스를 구현한 클래스의 경우, package hello.advanced; import hello.advanced.trace.logtrace.FieldLogTrace; import hello.advanced.trace.logtrace.LogTrace; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class LogTraceConfig { @Bean public LogTrace logTrace() { return new ..
트랜잭션 트랜잭션은 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위이다. 성질 Atomicity - 원자성 트랜잭션의 연산은 데이터베이스에 모두 반영, 혹은 반영되지 않아야 한다. 트랜잭션 내의 모든 명령이 완벽히 수행되어야 하며, 무엇 하나라도 오류가 발생하면 전부 취소되어야한다. Consistency - 일관성 트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 한다. 트랜잭션이 진행되는 동안 데이터베이스가 변경되어도 업데이트된 데이터베이스로 트랜잭션이 진행되는 것이 아니라 처음 트랜잭션을 실행할 때의 참조한 데이터베이스로 진행된다. Isolation - 독립성 둘 이상의 트랜잭션이 동시에 실행될 경우 어느 하나의 트랜잭션이 다른 트랜잭션의 연산에 관여할 수 없다. Durablility - 지속성 성..
DataSource와 커넥션 풀 커넥션 풀은 Connection 객체를 매번 새로 생성하는 것이 아닌, 서버에서 미리 생성된 커넥션이 필요할 때마다 사용할 수 있게 하는 기술이다. DataSource는 커넥션 풀을 사용할 수 있게 하는 객체로, 이를 통해 필요한 커넥션을 획득하고 반납한다. private final DataSource dataSource; public MemberRepositoryV1(DataSource dataSource) { this.dataSource = dataSource; } DataSource를 활용한 getConnection() private Connection getConnection() throws SQLException { Connection con = dataSource.getConnection();..
JDBC 등록, 조회, 수정, 삭제 Java Database Connectivity의 약자 JDBC는 자바에서 데이터베이스에 접속할 수 있게 하는 자바 API로, 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다. 김영한 강사님의 강의를 보며 학습하였고, H2 데이터베이스를 사용했다. JDBC 등록 public Member save(Member member) throws SQLException { String sql = "insert into member(member_id, money) values(?, ?)"; Connection con = null; PreparedStatement pstmt = null; try { con = getConnection(); pstmt = con.prepareStatement(sql); ps..
Spring 게시판 만들기 작년 12월에 네트워크관리사 2급 시험을 마친 후, 인프런에서 스프링 강의를 보며 공부했다. 시청한 강의는 김영한 선생님의 "스프링 입문"이었다. 해당 강의를 보며 따라한 페이지 만들기와, 유튜브로 조금 공부한 html과 css를 융합해 게시판이라 부르기 어려운 수준의 게시판을 만들었다. 개발 환경은 intellij를 사용했다. 이 글을 작성하는 이유는, 현재의 부족한 나와 실력과 경험을 더 쌓았을 훗날의 나를 비교하며 성장했다는 증거를 남기기 위함이다. MySQL TABLE create table board ( bno int not null auto_increment comment '일련번호', title varchar(200) not null comment '제목', content varchar(40..
JAVA script 참조와 복제 var a = {‘num’ : 1}; var b = a; b.num = 2; console.log(a.num); > 2 위 코드에서 변수 a는 {‘num’ : 1};을 통해 새로운 객체를 생성하여 그를 가리키고 있고, 변수 b는 그런 a를 참조한다. 이 상태는 a와 b가 서로 같은 객체 num : 1을 가리키는 형태이다. 이때, b를 통해 속성 값을 바꾸면 b가 가리키는 객체의 값을 바꾸게 되는데, 이때 바뀐 객체는 a또한 참조하고 있는 객체였기에 a.num도 값이 바뀐다. 하지만 아래 코드는 얘기가 달라진다. var a = {‘num’ : 1}; var b = a; var b = {‘num’ : 2}; console.log(a.num); > 1 a변수는 num : 1이라는 객체를 참조하고 b또한 그런 ..
JAVA script 레퍼 객체 var str = ‘coding’; str.prop = ‘hello world’; console.log(str.prop); 위 코드의 2행은 오류가 나지 않는다. 분명히 문자열은 객체가 안닌 원시 데이터 타입이라 했는데, 객체처럼 사용하는 문법이 에러가 나지 않는다는 것이 의아했다. 사실 이는 js에서 제공하는 레퍼 객체이다. 객체가 아닌 것을 객체처럼 사용하려 할 때, js에서 내부적으로 객체화 시켜준다. 허나 위 코드 3행의 결과는 undefined가 되는데, 이는 내부적으로 객체화한 문자열이 실제 객체의 역할을 하지 못하고 없어져버리기 때문이다. 지난 글에서 배운 5가지의 원시 데이터 타입중 객체화가 되는 데이터 타입은 number, string, boolean이며, null이나 undefined는..