cross-domain 이슈를 회피하기 위하여 jsonp 요청을 한다.
json
=> {'home':'서울', 'name':'java'};
jsonp
=> callback({'home':'서울', 'name':'java})
외부 도메인으로 Ajax 요청을 할때는 jsonp를 사용해야한다.
가장 큰 차이점은 callback 함수명!!
php는 원시코드가 바로 실행되는 스크립트 언어.
java는 컴파일 언어로 원시코드 작성/빌드/배포를 거쳐야 함.
- 새로운 기능에 대한 자동화된 테스트케이스를 작성하고 해당 케이스를 통과하는 가장 짧고 가독성이 좋고 유지보수성이 뛰어난 코드를 작성(실패하는 테스트 케이스를 먼저 작성 후 개발 진행)
- 일단 테스트를 통과하는 코드를 작성하고 상황에 맞게 리팩토링
장단점
- 개발하다 꼬여도 테스팅을 돌려봄으로써 안심하고 진행 가능
- 코드량이 늘기 때문에 빠른 생산성이 요구되는 시점에 걸림돌이 될 수 있다.
- TDD를 근간으로 파생된 개발 프로세스
- TDD와 유사하지만, TDD가 테스트 자체에 집중해 개발하는 방면, BDD는 비지니스 요구사항에
집중하여 테스트 케이스 개발
- TDD를 결함해 시나리오 테스트까지 하는 것
- 순수한 도메인의 모델과 로직에 집중하는 것
- 상호가 이해할 수 있고 모든 문서와 코드가 동일한 표현과 단어로 구성되게
- 도메인 모델부터 코드까지 항상 함께 움직이는 구조의 모델을 지향
웹 애플리케이션이 데이터베이스와 연동하는 모델에서 발생 가능한 것으로
해커가 SQL 구문을 조작하여 데이터를 변형하거나 인증을 우회 하는 등의 공격을 말한다.
흔하고 강력한 공격이지만 방어하는게 간단하다.
공격방법 예시
아이디 : test
비밀번호 : xx' OR 1=1 -- 이런식으로 입력하면 쿼리에는
select * from member where id = 'test' and passwd = 'xx' or 1=1 로 되어 무조건 true인 경우가 된다.
이를 방지하기 위해서는
파라미터 값이 직접 쿼리에 들어가는 Query String을 절대 사용하지 말고,
Parameter Binding을 사용하면 된다.
statement대신 preparedstatement 사용 할 것.
preparedstatement구문은 특수문자를 자동으로escaping 해준다.
//Statement 예시
String sql = "SELECT * FROM MEMBER WHERE ID = "+ userId;
//preparedStatement 예시
String sql = "SELECT * FROM MEMBER WHERE ID = ? ";
pstmt.setInt(1, userId);
힙(heap) 영역에 할당된 더 이상 사용되지 않는 메모리를 다른 객체가 사용할 수 있도록
해제하는 것으로 JVM이 자동으로 처리하므로 객체의 소멸에 신경 쓰지 않아도 된다.
JVM의 가비지 컬렉터가 불필요한 메모리를 알아서 정리 해줌
- 프로그래머에 의해 구현될 수 없다.
- 할당된 메모리를 명시적으로 해제 할 수 없으며, 가비지 컬렉터가 객체를 어떠한 순서로
정리하는지 알 수 없다.
- 가비지 컬렉터가 언제 수행될지 정확히 알 수 없다.
- 객체에 null이 할당되거나 객체를 더 이상 참조하지 않게 되었을 때 대상이 된다.
사용 코드
Member member = new Member();
member.setName("Java");
member = null;
// 가비지 발생
- 클래스의 인스턴스를 하나만 생성하고, 어디서든 그 인스턴스를 참조할 수 있도록 하는 패턴
- 생성자가 여러 번 호출되더라도 실제로 생성되는 객체는 하나
사용이유
- 고정된 메모리 영역을 가지고 하나의 인스턴스만 사용하기 때문에 메모리 낭비 방지
- 싱글턴 클래스의 인스턴스는 전역이기 때문에 다른 클래스의 인스턴스들이 데이터를
공유하기 쉬움
- DBCP처럼 공통된 객체를 여러 개 생성해야 하는 상황에 많이 사용
aop(point cut)
oop
filter
OAuth/JWT 인증
애자일 소프트웨어 개발 선언 (0) | 2021.07.29 |
---|---|
스프링 핵심 원리 (0) | 2021.07.29 |
OAuth/JWT (0) | 2021.07.24 |
clean code 3가지 사항 (0) | 2021.04.29 |
[1차-환경구축]Spring-boot/JPA/H2(로그인, 게시판) (0) | 2021.04.26 |