함수의 기본 파라미터
·
Language/JavaScript
const calculateCircleArea = (r = 1) => Math.PI * r * r; // 만약 값이 주어지지 않았다면 r의 기본 값은 1이 된다. const area = calculateCircleArea(); console.log(area); - es6에서 인수가 없을 때, 함수의 매개변수에 매개변수 = 기본값 이런 형태로 지정하여 기본 값을 설정할 수 있다.
단축 평가 논리 계산법
·
Language/JavaScript
&& console.log(true && "hello"); console.log(false && "hello"); console.log("hello" && "bye"); console.log(null && "hello"); console.log(undefined && "hello"); console.log("" && "hello"); console.log(0 && "hello"); console.log(1 && "hello"); console.log(1 && 1); - &&연산자의 경우, 앞에 오는 값이 true면 뒤에 오는 값이 결과물 - &&연산자의 경우, 앞에 오는 값이 falsy한 값이면 앞에 있는 값이 결과물 보통 이럴 때 활용된다. const object = { name: 'asdf' }; /..
falsy
·
Language/JavaScript
function print(person) { if (!person) { return; } console.log(person.name); } const person = { name: "Joh" }; print(person); 여기서 !person은 person === undefined || person === null 의 의미와 같다. 자바스크립트에서 undefiend, null,0, '', NaN,false은 falsy한 값이라고 해서, false로 간주함.
window.history.pushState / window.history.replaceState
·
Language/JavaScript
페이지 reload 하지 않고 브라우저의 url만 바꿔주는 작업을 할 때 쓰는 함수이다. window.history.pushState(null, null, '경로값') 첫번째 인자 값에 브라우저로 넘겨줄 데이터. 두번째 인자 값은 브라우저 제목으로 설정할 값. 세번째 인자 값은 url바꿔줄 해당 경로 값. 브라우저 앞 / 뒤 버튼 클릭시 onPopState라는 함수 실행되고, onPopState 함수에서 state 데이터를 넘겨준다고 함. history.pushState => 이전 url의 주소가 남아있어서 브라우저의 뒤로가기 버튼이 활성화된다. history.replaceState => 동일한 기능이지만, 이전 url의 주소를 활성화하지 않기 때문에 뒤로가기 버튼 활성화 되지 않음.
토비의 스프링 3장
·
Spring
- 템플릿 : 바뀌는 성질이 다른 코드 중에서 변경이 거의 일어나지 않으며, 일정한 패턴을 유지되는 특성을 가진 부분을 자유롭게 변경되는 성질을 가진 부분으로부터 독립시켜 효과적으로 활용할 수 있도록 하는 방법 - 기존의 DAO 코드는 dao를 통해 커넥션 풀을 생성하고, 디비에 접근하여 쿼리를 실행하고, 커넥션 풀을 반환해주는 플로우. try-catch-finally 문을 통해 혹시 모를 예외상황에 대비하여 커넥션 풀을 반환하는 코드를 짤 경우, 여러개의 dao을 만들때마다 try-catch-finally를 제대로 사용하였는지 코드를 검수해야함. - 템플릿 메소드 패턴: 상속을 통해 기능을 확장해서 사용하는 패턴으로, 변하지 않는 부분은 슈퍼 클래스에 두고 변하는 부분은 추상메서드로 정의하여 서브 클래..
토비 스프링 2장. 테스트
·
Spring
2.1 UserDaoTest - 테스트란, 예상하고 의도했던 대로 코드가 정확히 동작하는지 확인해서 코드를 확신할 수 있게 해주는 작업 - 테스트를 통해 결함을 제거하는, 일명 디버깅 과정을 거치게 되고, 최종적으로 테스트가 성공하면 모든 결함이 제거됐다는 확신을 가질 수 있다. - 웹을 통한 테스트의 문제점 : 1. 특정 기능만을 테스트하고 싶은데(ex.DAO), DAO뿐만 아니라, 해당 코드를 웹에서 실행시키기 위해 서비스 클래스, 컨트롤러, JSP뷰 가지 다 만들어야 테스트가 가능함. 2. 테스트 하는 도중에 에러가 나면, 어디에서 에러가 났는지 전체 코드를 뒤져야 함. => 이를 해결하기 위해서는, 한가지 관심사에 집중할 수 있게 작은 단위로 코드를 짜야하고, 이 작은 단위의 코드에 대해서 Uni..
토비의 스프링 1장. 오브젝트와 의존관계
·
Spring
- 스프링은 객체지향적 - 스프링은 객체지향의 설계, 전략, 검증된 best practice를 프레임워크 형태로 손쉽게 적용할 수 있도록 함 1.1 초난감 DAO - 자바빈의 규약을 따르는 오브젝트 생성 package springbook.user.domain; public class User { String id; String name; String password; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Stri..
이진트리 순회
·
Algorithm/자료 구조 및 개념 정리
class Node { int data; Node lt, rt; public Node(int val) { data = val; lt = rt = null; } } public class Dfs { // 객체의 주소를 참조함 Node root; public void DFS(Node root){ if(root == null) return; else{ DFS(root.lt); // 중위 순회 System.out.print(root.data + " "); DFS(root.rt); } } public static void main(String[] args) { Dfs tree = new Dfs(); tree.root = new Node(1); tree.root.lt = new Node(2); tree.root.r..
Array와 LinkedList의 차이
·
Algorithm/자료 구조 및 개념 정리
- Array는 메모리 상에서 연속적으로 데이터를 저장하는 자료구조 - Linked List는 메모리상에서는 연속적이지 않지만, 각각의 원소가 다음 원소의 메모리 주소값을 저장함 - Array의 경우 O(1) - Linked List는 O(n)의 시간 복잡도를 가짐 - Array의 경우 O(n) - Linked List는 O(1) -> 그러나 추가/ 삭제를 하려는 index까지 도달하는데 O(n)시간이 걸리기 대문에 실질적으로 Linked List도 추가/삭제 식에 O(n) 시간이 걸림 - 얼마만큼의 데이터를 저장할지 미리 알고 있고, 조회를 많이 한다면 array를 사용하는 것이 좋음 - 몇개의 데이터를 저장할지 불확실하고 삽입 삭제가 잦다면 Linked List를 사용하는 것이 좋다. 이렇듯, Arr..
takoyummy
TakoHub