Struts는 Java 웹 애플리케이션을 만들기위해 무료 오픈 소스 MVC Framework입니다. Framework 중 Spring Framework 다음으로 자주 사용되는 Struts에 대해서 정리해 보고자합니다. 개발에 주를 이루는 Spring Framework 이전에 Struts를 사용한 개발이 많았었고 현재는 그 비중이 줄어들어습니다. 하지만 아직까지도 유지보수를 위해 Struts를 사용하기는 합니다. Struts의 특징 java의 기본 문법만 가지고 클래스를 구성하자. 좋은 가독성 작성을 목표 기본값을 사용하여 많은 설정을 생략할 수 있다. 인터셉트 기능을 강화시켜 AOP(Aspect Oriented Proframming) 기술을 제공한다. 정보 갱신에 특화(새로고침이 없어도 갱신가능)된..
문제 출처: www.acmicpc.net/problem/10448 10448번: 유레카 이론 프로그램은 표준입력을 사용한다. 테스트케이스의 개수는 입력의 첫 번째 줄에 주어진다. 각 테스트케이스는 한 줄에 자연수 K (3 ≤ K ≤ 1,000)가 하나씩 포함되어있는 T개의 라인으로 구성되어 www.acmicpc.net 우선 이 문제를 보고 그냥 다 더해보는 수 밖에 없겠는데? 라는 생각이 들었다. 조금 무식한 방법이기는 하지만 딱히 별다른 바가 생각나지 않았기 때문에 T에 해당하는 원소들을 다 뽑아서 vector에 넣어주고 시간복잡도가 $n^4$ 가 되기는 하지만 우선 구현해보자는 목적하나에 만들어 보았다. #include #include using namespace std; int match(vecto..
자료구조 ‘힙(heap)’ 완전 이진 트리의 일종으로 우선순위 큐를 위하여 만들어진 자료구조이다. 여러 개의 값들 중에서 최댓값이나 최솟값을 빠르게 찾아내도록 만들어진 자료구조이다. 힙 트리에서는 중복된 값을 허용한다. (이진 탐색 트리에서는 중복된 값을 허용하지 않는다.) 힙은 일종의 반정렬 상태를 유지한다. 큰 값이 상위 레벨에 있고 작은 값이 하위 레벨에 있다는 정도 간단히 말하면 부모 노드의 키 값이 자식 노드의 키 값보다 항상 큰(작은) 이진 트리를 말한다. Heap은 Full Binary Tree 혹은 Complete Binary Tree에서 작동한다. 비어있는 층의 node들은 주로 NULL Pointer로 생각을 해서 구현을 한다. 이러한 Heap은 다른 자료구조들과 다르게 동적할당이 필요..
오래된 Computer Language인 c언어는 다른 여러 언어들에 비해 그 쓰임새가 부족하다라고 느끼는 경우가 많다. 그런 이유는 기본적으로 지원이 안되는 것이 많기 때문이다. 하지만 이러한 c언어에서 상상한 것을 구현하게 도와주는 것이 있었으니 Pointer라는 개념이다. Pointer는 프로그램에서 또다른 variable(memory location)으로 참조한다. 그 과정에서 아래의 여러 기능들을 수행할 수 있다. function(reference parameters)으로 들어오는 값들을 수정할 수 있다. group (such as an array)의 특정 member를 기억하는데 사용할 수 있다. 동적(dynamic) 메모리 할당(특히 어레이)에 사용할 수 있다. 복잡한 data structu..
이것 저것 많은 위젯들을 만지면서 프로젝트를 진행하고 있던 중간에 다음과 같은 오류가 자꾸 발목을 잡았다. 오류 발생 return MaterialApp( initialRoute: '/login', routes: { "/login": (context) => LoginPage(), "/main": (context) => MainPage(), }, ); 위와 같은 코드를 사용하여 페이지를 이름 형식으로 넘기는 방법을 사용하는 중간에 발생하였다. 처음에는 별 문제없이 실행도 잘되었으나 문제는 Hotload를 실행할 때(중간에 저장하여 실시간으로 변화를 확인하고자 할 때) 발생하였다. 물론 Program을 Stop하고 재실행하면 문제는 발생하지 않았지만, Flutter의 특성인 실시간 변화를 사용할 수 없다는 것..
이번에는 send() 함수에 대해서 알아보겠습니다. #include #include ssize_t send(int socket, const void *buffer, size_t length, int flags); Send a message on a socket ▪ buffer에 있는 data를 bytes 길이까지 전송합니다 ▪ socket: socket file descriptor ▪ buffer: 보낼 message가 포함된 buffer ▪ length: bytes에 있는 message의 길이 ▪ flags: 전송할 message의 type입니다. • 0은 regular data에 대한 flag입니다. flags 옵션 설명 MSG_DONTWAIT 수신을 위해 대기가 필요하다면 기다리지 않고 -1을 반환..