일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- autowired
- Spring
- jQuery
- tiles.xml
- 웹소켓
- 웹게임
- 배포
- CSS
- node.js
- JavaScript
- phaser
- RDS
- Servlet
- Cookie
- 비트코인
- EC2
- Ajax
- PL/SQL
- AWS
- express
- websocket
- 도커
- 블록체인
- SQL
- HTML
- docker
- 암호화
- model1
- JSP
- 알고리즘
- Today
- Total
목록IT_Fundamental (21)
記錄
https://github.com/devjang/developer-roadmap
의미> 특정한 값을 기준으로 배열을 해당 값보다 작은 쪽, 큰 쪽으로 가른다. 그렇게 가르면 하나의 배열이 두 개의 조각이 되는데 각 조각에서 또 특정 값을 기준으로 잡아 해당 값보다 작은 쪽, 큰 쪽으로 배열을 나눈다. 이런 행위를 재귀적으로 반복하여 결국 처음 타겟이었던 배열 본체를 정렬하는 정렬 방법이다. 지금까지 했던 어떤 배열보다도 시간복잡도가 낮다. 이유는 반복을 두 번 중복으로 사용하지 않고 한 번만 사용하기 때문이다. 코드예시> #include int number = 10; int array[10] = {5, 7, 8, 9, 4, 6, 1, 3, 2, 10}; int show(int* array){ for(int i = 0; i < 10; i ++){ printf("%d ", arr..
의미> 선택정렬은 한 번 반복 할 때에 타겟이 되는 대상들을 모두 비교하여 min인 경우 무조건 min 값을 챙겨놨다가 인덱스를 하나 하나 움직이면서 챙겨둔 min 값을 넣는 것. 버블정렬은 인접한 원소와 비교하여 조건절이 만족하면 무조건 이를 위치를 바꾸어서 배열의 끝 혹은 맨 앞에 적재 하는 것. 삽입정렬은 버블정렬과 유사한 측면이 있지만 "필요할 때에만" 위치를 바꾼다는 점에서 조금 다르다. 즉, 버블정렬은 인접한 두 원소를 인덱스를 증가시키면서 계속 비교하고 계속 가져가던 원소가 조건에 부합하면 그거때문에 위치를 바꾸고 새로 만난 원소가 더 적절하면 그것을 다시 가지고 가면서 위치를 바꾼다. 반면, 삽입정렬은 기존의 정렬이 "이미 되어있다"고 가정을 한 상태에서 인덱스를 증가시키기 때문에 조건절..
의미> 인접한 두 원소를 비교하여 우측의 것이 크면 위치를 바꾸고 다시 바꾼 것을 가지고 그 다음 원소와 비교. 계속 이런 식으로 비교해가며 가장 큰 값을 가장 우측에 적재. 반복이 한 번 돌 때마다 반복 대상 원소들 중 가장 값이 큰 것은 맨 우측으로 적재되며 쌓인다. 쉽게 말해서 둘이 비교해서 원하는 것이 나오면 바로 취하고 그렇게 취한 것을 가지고 또 비교해서 필요없으면 바로 갈아치워서 결국 가장 값이 큰 것을 끝까지 위치를 바꿔가며 오른쪽까지 가져가는 것. 코드예시> #include int main(void){ int array[10] = {9, 5, 6, 8, 3, 7, 10, 2, 4, 1}; int i, j, temp; for(i = 0; i < 10; i++){ //for(j = 0..
의미> 1부터 10까지의 배열이 무작위로 있을 때 10개를 대상으로 가장 작은 것을 골라 맨 앞과 위치 스위칭. 그리고 맨 앞에 간 가장 작은 것은 제쳐두고 나머지 9개를 대상으로 전체 검색을 하여 그 중 가장 작은 것을 맨 앞으로 스위칭. 이런 식으로 "비교-> 특정-> 위치 스위칭 -> 제껴두고 나머지들을 대상으로 다시 비교-> 특정-> 스위칭" 하는 것을 선택정렬이라고 함. '선택'인 이유는 대상을 특정해서 이를 선택하여 위치를 바꾸는데에서 '선택'이라는 명칭이 발생. 코드예시> #include int main(void){ int array[10] = {9, 5, 6, 8, 3, 7, 10, 2, 4, 1}; int i, j, index, min, temp; for(i = 0; i < 10; i++..
Ex 1) Insert title here $(document).ready(function() { $("#sdata").click(function() { var string = ["abc","def"]; var vParam = "test"; $.ajax({ url: "DataArray.jsp", type: "GET", data: {"string":string}, //jsp?string=abc&string=def&string=aaa success: function(data) { var as = eval(data); alert("data:"+as[0]+"/"+as[1]); }, error: function(msg, error) { alert(error); } }); });// end .click() }); ..
function detailgo(contentnum) { location.href = "main.jsp?contentnum=" + contentnum; } 서블릿도 똑같다 저렇게 보내면 타겟 페이지로 페이지가 이동됨과 동시에 주소 맨 뒤에 원하는 변수가 붙어서 가게 된다 만약 서블릿에서 이를 빼서 쓰고 싶다면 request.getParameter()로 쓰면 된다
Model1 방식은 jsp가 모든 요청과 응답을 처리해주는 방식 Model2 방식은 MVC 방식으로 Model은 dao, dto로 View는 jsp로 Controller는 servlet으로 처리하는 방식
jquery : JSTL : Chart.js : Bootstrap: // 아이콘 등 spring release url) https://github.com/spring-projects/spring-framework/releases?after=v4.3.0.RC1 oracleDB 계정생성: create user aaaaidentified by aaaadefault tablespace userstemporary tablespace tempquota unlimited on users; grant create session, create tableto aaaa; json 변환 코드 (jsonlib 내부 파일 모두 필요) JDBC 싱글톤 package kr.or.kosta.utils; import java.sql.C..
Abstract Factory Pattern(추상 팩토리 패턴) 추상 팩토리 패턴은 많은 수의 연관된 서브 클래스를 특정 그룹으로 묶어 한번에 교체할 수 있도록 만든 디자인 패턴입니다. 예를 들어 특정 라이브러리를 배포하는데 OS별로 지원하는 기능이 상이하다면 추상 팩토리 패턴을 사용해 OS별 기능 변경을 통합적으로 변경 할 수 있습니다.출처 : http://jdm.kr/blog/192 추상 팩토리 패턴(Abstract factory pattern)은 다양한 구성 요소 별로 '객체의 집합'을 생성해야 할 때 유용하다. 이 패턴을 사용하여 상황에 알맞은 객체를 생성할 수 있다.출처 : 위키 public interface Barrack { public Armor makearmor(); public Weapo..
Class Diagram 관계도 ※ reference를 계속 유지하고 있는지 ? 멤버 필드로 클래스 변수를 만들어서 계속 참조를 하고 있는지의 여부이다. 즉, 메소드의 파라미터에 넣거나 메소드 런타임중 생성되고 바로 종료되는 것처럼 참조를 계속 유지하지 않는 경우는 '의존관계'이며 반대로 참조를 계속 유지하는 경우는 연관관계로 분류된다. 멤버필드가 선언을 하든 new를 하든 멤버필드로 존재하면 참조를 계속 유지하고 있게 되므로 연관 관계가 된다. 화살표 방향의 구분은 '참조하고 있는 방향'의 기준으로 판단하면 쉽다. 바라보고 있는 것, 참조하고 있는 것 이런 의미이다. A 클래스는 B 클래스에 의존한다= A 클래스가 구동하려면 B 클래스가 필요하다 ※ 전체와 부분의 관계인지 ? 사실 이 부분은 특수연관과..
출처 : https://www.youtube.com/watch?v=CYVqs_HTgLM 수업 복습용 포스팅 보조기억장치 : 일반적은 하드디스크. 주 기억장치 : RAM을 의미. 현재 실행중인 프로그램이 올라간다. 캐시 메모리 : 레지스터와 주 기억장치의 속도차를 보완하기 위해 존재하는 메모리. 자주 사용하는 프로그램이나 자료와 같은 것이 올라가있고 레지스터가 이것이 필요할 때 주 기억장치로 가지 않고 캐시메모리에서 바로 끌어올 수 있도록 한다. 레지스터 : CPU
CodeBlocks(코드블록) 테마 변경
Builder Pattern(빌더패턴) 복잡한 것을 만들 때는 전체를 한꺼번에 만들기보다는 작게 분리하여 만든 후 다시 합치는 것이 편리하다. builder 패턴은 복잡한 인스턴스를 조립하여 만드는 구조로, 복합 객체를 생성할 때 객체를 생성하는 방법(과정)과 객체를 구현(표현)하는 방법을 분리한다. 따라서 이 패턴은 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있다. Robotpackage BuilderPattern; public class Robot { String Head; String Body; String Leg; public Robot(String head, String body, String leg) { Head = head; Body = body; Leg = leg; } publi..
얕은 복사와 깊은 복사의 차이를 알아보자 얕은 복사로 인해 주소값이 공유 되고 결과적으로 수정을 원하지 않는 객체까지 수정이 되어버림 주소값이 같은 것을 확인 할 수 있다 깊은 복사로 제대로된 결과가 출력됨 package Prototype; public class Cat implements Cloneable { private String name; private int age; public Cat(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public in..
Prototype Pattern(프로토 타입 패턴) 프로그램 코드를 작성하다보면 기존에 만들어진 인스턴스의 내용을 일부 수정하여 사용하고 싶을 때가 있다. 그런 경우 객체를 새로 생성할 때는 사용하는 new Object() 메서드보다 [그림 5-31]처럼 clone() 메서드를 이용해 기존의 것을 복사하여 일부만 바꿔 인스턴스를 생성할 수 있다. 이런 개념을 확장하여 처음부터 일반적인 prototype(원형)을 만들어놓고, 그것을 복사한 후 필요한 부분만 수정하면 new Object() 메서드로 객체를 생성하는 것보다 편리하다. [네이버 지식백과] prototype 패턴 (쉽게 배우는 소프트웨어 공학, 2015. 11. 30., 한빛아카데미(주)) package Prototype; public class..
Singleton Pattern(싱글톤 패턴) 특정 클래스의 객체가 오직 한 개만 존재하도록 보장하는 패턴이다. public class SystemSpeaker { static private SystemSpeaker instance; // 외부에서 호출 안되고 하나만 있게 하기 위해서 // private이 있고 static이 있는 것 private int volume; private SystemSpeaker() { volume = 5; }; public static SystemSpeaker getInstance() { // 객체 생성 없이 getInstance를 사용하기 위해서 // 마찬가지로 static이 들어간다 if (instance == null) { instance = new SystemSpea..
Factory Method Pattern(팩토리 메소드) Factory Method Pattern(팩토리 메소드 패턴)은 템플릿 메소드 패턴을 이용한 패턴으로 구조와 구현을 분리함으로써 코드의 유연성을 얻고자 하는 패턴이다. 템플릿 메소드 패턴에서 한 단계 발전한 형태라고 보면 된다. 추상 클래스 혹은 인터페이스를 통해서 구조만 선언해두고 이를 상속하는 클래스를 통해서 각각 Override한 후 Main에서 사용하는 방식이다. public interface Item { public void use();} public class HPportion implements Item { public void use() { System.out.println("HP 포션을 사용합니다"); } } public class..
Template Method Pattern(탬플릿 메소드 패턴) Template Method Pattern(탬플릿 메소드 패턴)이란 알고리즘을 절차적 단위로 구분하여 단계별로 메소드화 하고 이를 상속하는 자식 클래스가 필요한 형태로 오버라이드해서 사용하는 패턴을 의미한다. 탬플릿 메소드를 사용하는 이유는 1. 반복되는 작업이 진행될 때 효율적으로 작업이 가능2. 기능별로 잘 나누어져 있기 때문에 유지, 보수가 편리 이렇게 크게 두 가지로 볼 수 있는 것 같다. 간단히 말해서 일정한 프로세스를 가진 요구사항을 프로그래밍으로 구현한다면 차후 있을 수도 있는 유지, 보수사항을 감안하여 Template Method Pattern(탬플릿 메소드 패턴)을 활용해서 짜는 것이 좋겠다. abstract class Ab..
Adapter Pattern(어댑터 패턴) 이미 구현되어 있는 알고리즘을 사용하고 싶지만 반환하는 자료타입이 다를때 이를 해결해주는 패턴이다. 마치 여행가서 쓰는 어댑터처럼 전기를 쓰긴 쓰는데 전압만 바꿔주는 그런 어댑터와 같은 기능이다.원리는 매우 간단하다. 인터페이스에서 필요한 메소드를 선언 후 이를 implements 하는 객체에서 구현한다. 그리고 구현은 기존에 있던 객체의 메소드를 불러와 그곳에서 파라미터에 '.doubleValue()'와 같은 메소드를 활용해서 제대로 된 타입을 집어 넣고 리턴에 강제로 (float)을 캐스팅 해서 결국 우겨넣는(?) 메소드를 하나로 정리하는 것이다. 그리고 이를 Main Class(메인이든 아니든 필요한 곳에서)에서 불러내어 사용하면 되고 이 때 집어넣는 파라..
strategy pattern(스트래티지 패턴) 여러 알고리즘을 하나의 추상적인 접근점(인터페이스)을 만들어이 접근점에서 서로 교환가능하도록 하는 패턴알고리즘을 정의하고 각각을 캡슐화하여 교환해서 사용가능 하도록 하는 패턴출처: http://sycho-lego.tistory.com/6 ---------------------------------------------------------------------------------------------------------------------내가 원하던 것이 이런 것이었다. 디자인 패턴 공부를 시작하길 잘 했다는 생각이 든다. 계속 배워나가면 실력이 많이 늘 것 같다. 꾸준히 기록해 나갈 것이다. 처음으로 배운 것은 스트래티지 패턴이다. 게임 캐릭터가 무..