본문 바로가기

130

Naver SMTP 서버로 임시비밀번호 보내기 [Javax-mail] Naver smtp로 메일 보내기 [비밀번호 찾기] Naver SMTP 서버로 메일 보내기프로젝트를 진행하면서 비밀번호 찾기 할 때 메일로 임시비밀번호를 보내고싶었는데, 찾아보니 생각보다 어렵지 않았다. 그런데 차근차근 따라하지 않으면 에러파티를 면할 수 없었기에.. 차근차근 따라할 수 있도록 정리를 해보려고 한다. 시작하기 전에 SMTP(Simple Mail Transfer Protocol, 간이 전자 우편 전송 프로토콜)인터넷에서 이메일을 보내기 위한 프로토콜메일 서버 간 송수신 또는 클라이언트에서 메일 서버로 보낼 때 사용된다.TLS(Transport Layer Security, 전송 계층 보안)클라이언트 및 서버가 네트워크 통신을 하는 과정에서 도청 등의 행위를 방지하기 위.. 2018. 7. 15.
[HTTP] GET vs POST GETvsPOST GET vs POSTHTTP 프로토콜(the HyperText Transfer Protocol)을 이용해서 클라이언트와 서버가 데이터를 주고 받을 때 요청 메소드를 지정해주는데, 다들 이 전송방식들 간에 무슨 다른 점이 있는걸까? 하고 생각해본 적 있을 것이다. 뭔가 데이터를 주고받는 방식이나 지정해주는게 다른 것 같기도 한데.. 똑같은 것 같기도 하고.. 뭐가 다른걸까?HTTP Request Method 중에는 GET, POST, DELETE, PUT 등의 여러 방법이 있는데, 우리가 주로 사용하는 GET 방식과 POST방식에 대해 설명하겠다. GET방식과 POST방식의 차이라. 간단하게 생각해보면 이름에서부터 다른 점을 알아낼 수 있다. GET = 가져오는 것. POST = 보내는 .. 2018. 7. 14.
[codility] Triangle Triangle Triangle Determine whether a triangle can be built from a given set of edges.Task Score93%Correctness90%Performance100% 주어진 배열 A에서 A[P] + A[Q] > A[R],A[Q] + A[R] > A[P],A[R] + A[P] > A[Q].를 만족하는 세 숫자가 존재하면 1을 반환하고, 아니면 0을 반환하는 문제이다.일단 시간복잡도가 O(NlogN)이기 때문에 for문 3개를 돌리는 것은 안될 말이고.. 그렇다고 for문을 3개로 나눠서 뭐 어떻게 저떻게 하자니 그건 또 아닌 것 같고..그래서 sort로 A를 정렬해주고 연속된 세 숫자를 비교해주는 방식을 사용했다. 크기 순서대로 정렬해서 처음.. 2018. 7. 14.
[WEB] MIN-HA! README MIN-HA!사용 가능한 기능회원회원가입로그인자동로그인로그아웃아이디찾기비밀번호찾기이메일로 인증코드 전송인증코드 일치시 이메일로 비밀번호 전송회원정보 수정프로필사진 삭제/추가아이디 수정비밀번호 수정기타정보 수정친구 추천팔로우하기다른회원 상세 보기다른회원 아이디, 닉네임, 프로필사진 view다른회원 팔로우, 팔로잉 확인다른회원 글목록 확인팔로우/언팔로우/차단하기타임라인글보기더보기검색상세보기수정하기지우기목록으로 이동내 글 보기글쓰기이미지 넣기작성자 IP가져오기댓글댓글쓰기작성자 IP가져오기댓글목록 페이징내 댓글 수정버튼수정 모달창수정 및 삭제좋아요좋아요좋아요 취소좋아요 개수보기팔로우내 팔로워 보기내 팔로잉 보기차단목록 보기 결과물포트폴리오 시연동영상Git 주소 2018. 7. 14.
[Thread] 동기화와 교착상태 Thread Synchronization동기화(synchronization)스레드는 자원을 공유하기 때문에 동시에 여러 스레드가 실행되면 공유 자원에 대해 동기화가 발생할 수 있다.실행 흐름은 순차적으로 진행되지만, 자원은 한정적인데 여러 스레드가 동시 접근해서 사용하려고 하면 문제가 생기게 된다.공유 메모리에 대해서 한 번에 한 스레드만 공유자원에 접근할 수 있도록 만들어 동기화 문제를 해결할 수 있다. 임계영역(critical section)멀티스레드 프로그램에서 공유 자원이 참조 가능한 코드 영역을 말한다. 한 스레드가 사용 중인 자원은 작업이 끝날 때까지 lock을 걸어서 다른 스레드가 사용할 수 없도록 한다.자바에서는 임계영역을 지정하기 위해 동기화 메소드와 동기화 블록을 제공한다. 스레드가 동.. 2018. 6. 11.
[Thread] Thread Thread Process와 Thread 프로세스는 운영체제에서 실행되고 있는 하나의 프로그램을 말한다. 이 프로세스는 반드시 하나 이상의 스레드를 포함하게 되는데, 이 스레드는 프로세스 내에서 실행되는 독립적인 실행 흐름의 단위라고 할 수 있다. 즉, 경량화 된 프로세스라고 보면 된다. 프로세스에서 실질적인 일 처리는 이 스레드가 담당하게 된다. 프로세스는 완전히 독립적인 단위이므로 메모리 영역을 다른 프로세스와 공유하지 않는다. 하지만 스레드는 해당 스레드를 위한 스택메모리를 생성할 뿐 그 외 메모리 영역은 공유한다. 이 때문에 멀티 프로세싱 하던 일을 스레드로 구현하면 메모리 공간과 자원을 절약할 수 있다. 스레드를 활용해서 프로세스를 수행했을 때, 시스템 단위시간 당 데이터 처리량이 향상된다. 따.. 2018. 6. 11.
[자료구조] 비선형구조 자료구조(2) 자료구조(2) - 비선형구조자료구조에는 선형구조와 비선형구조가 있다. 자료구조(1)에서 선형구조에 대해 설명했었는데, 데이터를 순차적으로 나열하는 선형구조와 달리 비선형구조는 비선형적인 계층 구조를 나타낸다. 트리Tree그래프의 일종으로, 하나 이상의 노드(node)를 가진다. 각 노드는 엣지(edge, branch)로 연결된다.degree(차수) : 부속 트리의 개수 level(레벨, 깊이) : 루트노드로부터의 깊이 (루트노드의 level = 1)Parent node(부모 노드) : 노드 A가 B를 가리킬 때 A를 B의 부모 노드라고 한다. Child node(자식 노드) : 노드 A가 B를 가리킬 때 B를 A의 자식 노드라고 한다. Sibling node(형제 노드) : 부모가 같은 노.. 2018. 6. 8.
[programmers] 올바른 괄호 올바른 괄호 올바른 괄호 올바른 괄호란 두 개의 괄호 '(' 와 ')' 만으로 구성되어 있고, 괄호가 올바르게 짝지어진 문자열입니다. 괄호가 올바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 합니다.예를들어​()() 또는 (())() 는 올바른 괄호입니다.)()( 또는 (()( 는 올바르지 않은 괄호입니다.'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return하는 solution 함수를 완성해 주세요.​제한사항문자열 s의 길이 : 100,000 이하의 자연수문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다. 올바른 괄호가 되려면 '('와 ')'의 수가.. 2018. 6. 5.
[programmers] 같은 숫자는 싫어요 같은 숫자는 싫어요 같은 숫자는 싫어요 x배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 배열 arr에서 제거 되고 남은 수들을 return 하는 solution 함수를 완성해 주세요. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다.예를들면​arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 .. 2018. 6. 5.
[자료구조] 선형구조 자료구조(1) 자료구조(1) - 선형구조효율적인 작업처리를 위해서 상황에 따라 적절한 자료구조를 취사선택해서 사용해야한다. 배열Array대부분의 프로그래밍 언어에서 사용 가능한 가장 기본적인 자료구조로, 번호(index)와 번호에 대응하는 서로 연관된 데이터로 이루어진다.데이터의 순서가 있으며 중복을 허용한다.index는 int 혹은 long형이다.배열은 선언과 동시에 길이를 지정한다. 그리고 그 길이는 변경 불가능하다. type[] arr = new type[n]; type[] arr = {value1, value2, ...}; type[][] arr = new type[n][m]; type[][] arr = {{value1-1, value1-2, ...}, {value2-1, value2-2, ..... 2018. 6. 5.