2017의 게시물 표시

MySQL Index태우기가 뭐에요?

Index태우기 보통 개발자들이 '인덱스를 태운다.' 라는 말을 많이 사용한다. 근데 별거 없음. 그냥 인덱스를 사용해 결과물을 창출해 낼 때, 사용한다라고 생각하면 된다. MySQL에서 인덱스를 이용하여 더 정교한 쿼리문을 짜기 위해 explain을 사용한다. explain을 사용함으로 써, 쿼리문을 어떤식으로 짜야 더 빠르고 정교해지는지 파악이 가능하다. 그리고 사용할 수 있는 인덱스와 현재 사용하는 인덱스도 확인 할 수 있어 아주 유용한 방식이다. 사용방법은 explain select ~~~이런식으로 사용할 수 있다.

MySQL에서 ORDER BY로 직접 지정한 순서대로 출력하기.

MySQL에서 ORDER BY로 직접 지정한 순서대로 출력하기 SELECT * FROM 테이블명 WHERE 컬럼명 IN (1, 4, 5, 6) ORDER BY FIELD (컬럼명, 1, 4, 5, 6); 위처럼 직접 기입하여 순서를 내 맘대로 지정하여 출력할 수 있다.

GET방식과 POST방식이란? ( PHP )

이미지
GET방식과 POST방식이란? 폼으로부터 넘어오는 값을 지정하는 변수에는 어떤 것들이 있나? 1 . $변수명 2 . $_GET["변수명"], $_POST["변수명"] 3 . $HTTP_GET_VARS["변수명"], $HTTP_POST_VARS["변수명"] 이 세가지가 있고 그 중에서 2번을 가장 많이 사용한다.  예를 들면 조립 컴퓨터를 구매하기 위해 쇼핑몰에 회원가입을 하는데, 아이디, 비밀번호, 주소 등 각 폼이 다르다. 가입 완료를 누르면 그 데이터들이 서버에 처리 요청을 한다. 이 요청을  request 라고 하며, 여기에 GET과 POST방식이 있다. 언제 GET을 사용할까? GET은 가져온다는 개념이다. GET은 select 개념을 가지고 있다. 서버에서 어떤 데이터를 가지고 올때 사용한다. 즉, 서버의 값을 바꾸거나 추가 하는 개념이 아니다. form 형태로 GET을 사용해 값을 넘긴다면, 모두가 그 값을 URL을 통해서 알 수 있다. 또한 URL로 보여지기 때문에 2000의 제한된 값을 초과할 수 없다. 따라서 GET으로 값을 전달할 때에는 비밀번호가 아닌 민감하지 않은 값을 넘길 때 주로 쓰인다. 언제 POST를 사용할까? POST는 서버의 값이나 상태를 바꾸는 개념이다. POST는  HTTP request의 body부분에 이름 및 값을 전달한다. 따라서 URL에 노출되지 않는다. 비밀번호와 같이 민감한 값을 넘길 때, 주로 POST를 사용한다. 그러면 POST는 보안에 완벽한가? 그건 아니다. HTTP request에 값이 노출되기 때문에 별개로 처리를 해줘야 한다. -GET  GET방식은 URL에 키와 값을 임의로 입력하여 사용하는 것이다.  전송속도가 POST방식보다 빠르다.  데이터 길이는 256바이트를 넘을 수 없다. -POST POST방식도 위와 같이 동일한 방식으로 진행하면 된...

객체지향언어란? JAVA

객제지향언어 객체지향언어란? 작은 문제들을 해결할 수 있는 객체들을 만든 뒤, 이 객체들을 조합해서 큰 문제를 해결하는 상향식(Bottom-up) 해결하는 개발언어다. 객체지향언어의 주요 특징 -코드의 재사용성이 높다.  새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다. -코드의 관리가 용이하다. 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다. -신뢰성이 높은 프로그래밍을 가능하게 한다. 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다. 클래스와 객체 클래스의 정의 : 클래스란 객체를 정의해 놓은 것이다. 클래스의 용도 : 클래스는 객체를 생성하는데 사용된다. 객체의 정의 : 실제로 존재하는 것 사물 또는 개념 객체의 용도 : 객체가 가지고 있는 기능과 속성에 따라 다르다. 객체와 인스턴스  예를들어 자동차클래스로부터 만들어진 객체를 자동차클래스의 인스턴스라고 한다. 같은 의미이지만, 객체를 모든 인스턴스를 대표하는 포괄적인 의미를 가지고 있다. 인스턴스는 어떤 클래스로부터 만들어진 것인지를 강조하는 보다 구체적인 의미를 가지고 있다.  자동차는 인스턴스다 라기보다 자동차는 객체다. 라는 쪽이, 자동차는 자동차 클래스의 객체다라기 보다는 자동차는 자동차 클래스의 인스턴스다 라고 하는게 좋다.  클래스를 인스턴스화 시키면  인스턴스(객체)가 된다. 객체의 구성요소 속성 : 멤버변수, 특성, 필드, 상태 기능 : 메서드, 함수, 행위 예를들어 자동차의 속성에는 자동차의 브랜드, 차종, 차량 크기 등이 있다. 자동차의 기능에는 전진, 후진, 음악틀기 등이 있다. 인스턴스의 생성과 사용, 변수 https://github.com/happydhKim/MyDataStructureAlgorithm/blob/ma...

HTML 태그(Tag)란?

이미지
HTML 태그(Tag)란? -태그는 html에서 가장 중요한 문법이고, HTML의 컴퓨터 언어를 규정하는 특징이다. -Markup과 태그와 밀접한 연관이 있다. -본문이 아닌 태그는 head안에 존재하며, 본문에 해당되는 부분은 body태그 안에 들어간다. -head와 body는 다시 html이란 태그로 감싸주는게 일반적이다. 위와 같이 코드를 하면, 아래와 같이 출력 된다. 중요 태그들을 알아봅시다. -단락을 구별짓는 태그인 <p> 태그 -줄바꿈을 해주는 <br> 태그 : p 태그를 이용해도 좋지만 p태그는 간격이 정해져있어서 br을 사용한다. -그림을 불러오는 <img> 태그  사용 예시는  < img src = "img.jpg" height = "300" alt = "이미지" title = "이미지" > - 테이블을 만들 수 있는 <table> 태그 간단한 태그들은 이정도 이고 현재 html의 태그는 약 140개 정도가 있다.

HTML 이란?

이미지
HTML ( Hyper Text Markup Language ) -HyperText란 웹페이지에 언제나 있는 링크를 가르킨다. -Markup은 문법적인 특성을 말한다. 즉, 하이퍼텍스트를 가장 중요한 특징으로 하는 마크업이라는 형식을 가진 컴퓨터 프로그래밍 언어이다. 컴퓨터나 기계를 제어하기 위해 우리도 이해할 수 있고, 기계도 이해할 수 있는 것을 언어라고도 한다. 웹페이지를 컴퓨터에게 만들어달라고 요청하는 언어가 HTML인 것이다.

DATABASE에 대한 기초 지식(MySQL)

이미지
DATABASE : MySQL 데이터베이스는 데이터 저장소이다. 더불어 MySQL은 관계형데이터베이스다. 관계형 데이터베이스(오라클, MySQL,mssql)은 SQL문을 공유한다. NoSQL은 빅데이터같은 경우 관계형데이터베이스로 한계가 있기 때문에 대안으로 생겨난것이다. 그림 출처 : 생활코딩 데이터베이스 서버 : 서버안에 데이터를 저장하고 수정, 삭제, 정의 즉  관리하는 것을 서버에서 한다. 서버 안에는 여러개의 데이터베이스가 존재할 수 있다. 데이터베이스 클라이언트 : 데이터를 명령하고 서버를 체크하는 것을 클라이언트에서 한다. 데이터베이스 :  테이블을 카테고라이징 하는 역할을 함. 물론 여러개의 테이블이 존재 할 수 있다. Row와 Column은 연결되어 있으며, Column에는 데이터 타입이 Row에는 데이터의 그룹이고 구체적인 데이터를 레코드라고 한다. 각각의 칸들을 필드라고 한다.

트리 알고리즘 기초 개념 (Tree algorithm)

이미지
트리 알고리즘 트리는 자료구조의 일종이며, 사이클이 없는 그래프이다. 정점의 개수가 V라면, 간선의 개수는 V-1가 된다. -위의 트리는 Rooted Tree 즉, 루트가 있는 트리이다. 루트는 10이 된다. -여기서 10은 5의 부모(Parent)이고, 5는 1과 6의 부모가 된다. 반대로 5는 10의 자식(Children)이며, 1과 6은 5의 자식이다. -단말 정점은 (Leaf Tree) 1, 6, 14, 21이 된다. -형제(Sibling)은 5와 17이 형제 그리고 1과 6이 형제가 된다. -깊이(Depth)는 0을 시작점(10이 시작점)으로 했을 시에 2가 되고, 1을 기준으로 하면 3이 된다.

ARTIK Modules 7 ( 710 Developer Kit ) unboxing / 아틱 710 개봉!

이미지
ARTIK 710 Developer Kit -짠! 드디어 ARTIK 7이 도착했다. 2세대 버전 박스라 그런지 주황이 아닌 에메랄드 색 박스이다. - 최근 아틱 10이 단종되면서 최고 사양의 아틱은 710 이라 할 수 있다. -Adapter는 아틱 보드와 비교했을때 훨씬 더 크다. -간단한 설명서와 함께, 두 개로 구성 된 아틱 보드 들이 보인다. 뭘 만들어 볼 것인지는 정했지만, 마음의 준비가 아직 덜 된 상태에서 도착해서 떨린당... -설명서는 당연히 영어 이다. -안테나는 두개가 있다. Wifi와 Zigbee를 사용하는 안테나이다. -보드는 이렇게 세련되게 생겼다. 개인적으로 아두이노, 라즈베리파이 그리고 인텔의 갈릴레오를 써봤지만, ARTIK이 가장 섹시하게 생긴 보드 같다. 그럼.. 후기를 마치고, 마음의 준비를 더 한다음 아틱을 활용해 내가 살고 있는 집을 스마트하게 만들어 보겠다.

SAMSUNG ARTIK

이미지
  삼성전자가 IoT 플랫폼인 ‘ARTIK(아틱)’의 상용 제품을 출시했다. 평소에 IoT에 흥미가 많았고, 라즈베리파이와 아두이노를 사용해 봤기에 ARTIK으로 개발을 해보고 싶어 선택했다.  삼성전자의 ARTIK(아틱)은 프로세서(AP), 메모리, 통신, 센서 등으로 구성된 초소형 IoT 모듈로, 소프트웨어/드라이버, 스토리지, 보안솔루션, 개발보드, 클라우드 기능이 하나의 모듈에 집적된 플랫폼이다. 개발자들이 아틱을 활용하면 빠르고 손쉽게 IoT 기기를 제품화할 수 있다.  - 2015 년 출시           :  1 세대 모델   :  ARTIK 520, 1020 - 2016~2017 년 출시   :  2 세대 모델   :  ARTIK 530, 710, 053 외 - 현재 2 세대가 주력 제품이며 향후에 나올 제품들도 2 세대 플랫폼을 따라갈 예정이라 한다 . - ARTIK 050 -> ARTIK 053 으로 Revision  -  ARTIK 모델은 숫자가 커질수록 Spec 이 높아진다 . - ARTIK 020, 030, 053  >> ARTIK 520, 530  >> ARTIK 710 - ARTIK 020 : Bluetooth only         : End Nod Device - ARTIK 030 : Zigbee/Thread only   : End Nod Device - ARTIK 053 : WiFi only            ...

ZigBee 란?

이미지
ZigBee 지그비 ( 영어:   ZigBee )는 소형, 저전력 디지털 라디오를 이용해 개인 통신망을 구성하여 통신하기 위한 표준 기술이다. IEEE 802.15 표준을 기반으로 만들어졌다. 직비 장치는 메시 네트워크 방식을 이용, 여러 중간 노드를 거쳐 목적지까지 데이터를 전송함으로써 저전력임에도 불구하고 넓은 범위의 통신이 가능하다. 애드혹 네트워크적인 특성으로 인해 중심 노드가 따로 존재하지 않는 응용 분야에 적합하다. 지그비는 낮은 수준의 전송 속도만 필요로 하면서 긴 베터리 수명과 보안성을 요구하는 분야에서 사용된다. 초당 250 kbit의 전송 속도를 가지며, 주기적 또는 간헐적인 데이터 전송이나 센서 및 입력 장치 등의 단순 신호 전달을 위한 데이터 전송에 가장 적합하다. 응용 분야에는 무선 조명 스위치, 가내 전력량계, 교통 관리 시스템, 그 밖에 근거리 저속 통신을 필요로하는 개인 및 산업용 장치 등이 있다. 직비 표준은 블루투스나 와이파이 같은 다른 WPAN 기술에 비해 상대적으로 더 단순하고 저렴한 기술을 목표로 만들어졌다. 지그비 네트워크는 128비트 대칭키 암호화를 이용한 보안을 제공한다. 홈 오토메이션 애플리케이션의 경우, 전송 거리는 가시선 기준 10에서 100미터 정도이며 출력 강도 및 무선 환경에 따라 달라진다. 지그비는 1998년 구상이 시작되었으며 2003년에 첫 표준이 제정되었고, 2006년에 개정되었다. 지그비라는 명칭은 벌집에 돌아온 꿀벌이 추는 꿀벌춤에서 유래한 것이다.  지그비는 저가, 저전력 무선 메시 네트워크의 표준이다. 저가라는 특성으로 인해 무선 제어 및 모니터링 등의 목적으로 광범위한 영역에 다량으로 배치하는 것이 가능하다. 저전력 특성은 동작 수명을 연장하며 베터리의 크기를 축소할 수 있게 한다....

JAVA 위상 정렬(Topoligical Sort) 알고리즘

이미지
위상 정렬 (Topoligical Sort) DAG에 속해 있는 알고리즘  - 어떤 일을 하는 순서를 찾는 알고리즘 이다. - 1-> 2 이런 식의 그래프가 있다고 하면, - 2를 하기 전에 1을 먼저 해야 하는 알고리즘이다. - BFS와 비슷한 알고리즘 위의 그림을 예로 들겠다. A에서 D로 가고 싶다. 하지만 D를 가르키는 간선이 두개가 있다.(정점 A와 C에서 나온 간선) 위상 정렬은 이 두개의 간선을 먼저 탐색을 해야지 D를 검색 할 수 있는 것이다. 어디에 쓰일 수 있을까? 기본적으로 선행과목을 예시로 들 수 있다. 가령 과목 D를 듣고 싶다. 과목 D를 듣기 위해선 우선 적으로 A와 B 그리고 C과목 까지 들어야 D과목을 들을 수 있다. 위상정렬 기본적인 자바 코드 Queue<Integer> q = new LinkedList<Integer>(); for (int i = 1; i &lt;= n; i++) { if (inDegree[i] == 0) { q.add(i); } } for (int k = 0; k &lt; n; k++) { int x = q.remove(); System.out.print(x + " "); for (int y : a[x]) { inDegree[y] -= 1; if (inDegree[y] == 0) { q.add(y); } } }

JAVA 힙 정렬 알고리즘

이미지
힙 정렬  Heapsort 힙 정렬 (Heapsort)이란 최대 힙 트리나 최소 힙 트리를 구성해 정렬을 하는 방법으로서, 내림차순 정렬을 위해서는 최대 힙을 구성하고 오름차순 정렬을 위해서는 최소 힙을 구성하면 된다. 최대 힙을 구성하여 정렬하는 방법은 아래 예와 같다. n개의 노드에 대한 완전 이진 트리를 구성한다. 이때 루트 노드부터 부노드, 왼쪽 자노드, 오른쪽 자노드 순으로 구성한다. 최대 힙을 구성한다. 최대 힙이란 부노드가 자노드보다 큰 트리를 말하는데, 단말 노드를 자노드로 가진 부노드부터 구성하며 아래부터 루트까지 올라오며 순차적으로 만들어 갈 수 있다. 가장 큰 수(루트에 위치)를 가장 작은 수와 교환한다. 2와 3을 반복한다. 이진 트리를 최대 힙으로 만들기 위하여 최대 힙으로 재구성 하는 과정이 트리의 깊이 만큼 이루어 지므로  {\displaystyle O(\log n)} 의 수행시간이 걸린다. 구성된 최대 힙으로 힙 정렬을 수행하는데 걸리는 전체시간은 힙 구성시간과  {\displaystyle n} 개의 데이터 삭제 및 재구성 시간을 포함한다. 시간 복잡도는 = (log n+log(n-1)+...+log 2) = (log n+log(n-1)+...+log 2)+(log n+log(n-1)+...+log 2) = O(n*log n) 따라서 힙 정렬은 일반적인 경우  {\displaystyle O(n\log n)} 의 시간복잡도를 가진다. 위키 피디아 참조. 자바 코드 public class JAVAHeap{ public static void main(String[] args) { int[] arr = { 69, 10, 30, 2, 16, 8, 31, 22 }; HeapSort(arr); } public static void HeapSort(int[] arr...

JAVA 버블정렬 알고리즘

이미지
버블정렬 BubbleSort 단순한 알고리즘으로 거품으로 비유를 하지만 개인적으로 물고기가 팔짝팔짝 뛰는 것을 연상했다. 1. 인접한 두 인덱스를 비교해서 정렬이 되어있지 않을경우 정렬한다. 2. 리스트 처음부터 끝까지 이런식의 정렬을 하고 나면 제일 마지막 리스트에는 제일 큰 값(또는 작은 값)이 저장된다. 3. 다시 처음 리스트부터 마지막 리스트 이전 리스트까지 서로 이웃한 인덱스를 비교해가며 정렬한다. 4. 위 방법으로 계속해서 정렬한다. 쉽게 말해 인접한 두 수를 비교해서 큰 수 혹은 작은 수를 뒤로 보내는 형태이다. 이해하기 쉬운 동영상 자바 코드 public class BubbleSort { public static void main(String[] args) { int[] data = { 4, 54, 2, 8, 63, 7, 55, 56 }; int temp; int cnt = 0; System.out.print("======정렬 전===============\n"); for (int m = 0; m < data.length; m++) { System.out.print(data[m] + ", "); } for (int i = data.length; i > 0; i--) { // for (int j = 0; j < i - 1; j++) { cnt++; if (data[j] > data[j + 1]) { temp = data[j]; data[j] = data[j + 1]; data[j + 1] = temp; } } } System.out.print("\n\n======Bubble Sort=========\n"); for (int k = 0; k < data.length; k++) { ...

이 블로그의 인기 게시물

3계층 구조( 3 Tier Architecture )

MySQL Index태우기가 뭐에요?

GET방식과 POST방식이란? ( PHP )