목록2021/11 (12)
hmk run dev
OOP란 Object-Oriented Programming 의 줄임말 객체지향과 대비되는 말로 절차지향이 있다 절차지향 프로그래밍은 프로그램을 함수단위로 쪼개 큰 문제를 작은 단위들로 나누어 해결하는 방식으로 top-down 방식이라고도 한다. 프로그램을 설계할떄 객체지향 보다 비교적 적은시간이 들긴하지만 필요한 데이터가 여기저기 분산되어 있고 프로그램에 변화를 주었을때 여기저기서 문제가 발생할 수 있는 문제점 등이 있다. 객체지향은 큰 문제를 작게 나누는 것이 아닌 작은 문제들을 해결하는 객체들을 만들어 객체끼리 서로 소통하면서 큰문제를 해결하는 bottom-up 방식이라고 할 수 있다. 설계시 비교적 시간이 오래걸리지만 코드의 재사용성, 유지보수의 용이, 간결한 코드 등 많은 장점을 가지고 있는 프로..
다이나믹하게 쿼리를 짜보고 싶어서 XML 파일이아닌 인터페이스에 변수로 쿼리를 등록해놓고 사용해보고 싶었다. 우선 context-application.xml 에 spring bean으로 등록 해야 스프링에서 빈 주입을 해준다! // mapper 인터페이스를 만든 경로 interface등록 @Mapper public interface BizMsgMapper { String QueryStr = "SELECT table_name\r\n" + "FROM information_schema.tables \r\n" + "WHERE table_type = 'BASE TABLE'\r\n" + "AND table_schema='workerman_dev2' and table_name like '%BIZ_LOG%'"; @Se..
FUNCTION - 자신을 호출한 곳으로 반드시 하나의 값을 리턴해 줘야되는 PL/SQL Stored Program이다. - Stored Function or User Function or User-Defined Function 이라고 한다. - 자신의 스키마 계정에 함수를 작정하려면 CREATE PROCEDURE 시스템 권한 필요 - Header에 리턴되는 데이터 타입을 기입 Header 끝에는 IS[AS]가 와야하고 IS[AS]와 Begin사이에 Begin~End에서 사용할 변수를 선언한다. 기본 형식 ex) CREATE [OR REPLACE] FUNCTION function_name[parameter] RETURN 리턴 데이터타입 IS[/AS] Declaration_section // BEGIN 과..
char사용을 지양하고 varchar를 이용하라는 이야기를 들었다. 고정길이로 설정해도 괜찮을 것 까지 모두 varchar로 설정하라는데 의구심이 들어 char와 varchar의 차이점에 대해 좀 더 심도 있게 알아보고자 한다. CHAR 고정길이 문자열 타입으로 만약 타입의 크기만큼의 데이터가 들어오지 않은경우 이후의 공간을 스페이스로 채워넣습니다. 고정길이 문자열이기 때문에 헤더에는 레코드의 길이에 대한 정보가 들어있지 않습니다. . VARCHAR 가변길이 문자열 타입으로 타입의 크기만큼의 데이터가 들어오지 않더라도 이후의 공간을 스페이스로 채워넣지 않습니다. 가변길이 문자열이기 때문에 헤더에는 레코드의 길이에 대한 정보가 포함되어야 합니다. CHAR(5) & VARCHAR(5) 데이터가 들어오는 경우..
데이터베이스를 구축하다보면 텍스트 데이터(Text Data)를 취급해야 할 때가 있다. 이때 반드시 고민해야 하는 것이 있는데, 바로 문자셋(character set)을 선택하는 것이다. 실생활의 대부분의 데이터는 텍스트기반(text-centric)이다. 당연히 실생활의 모든 텍스트 데이터를 저장할 수 있는 자료형이 필요로 하게 되었다. 이것을 위해서 나온 charset이 UTF-8 이다. UTF-8 문자 집합은 1~4 바이트까지 저장이 가능하게 설계되었다. (알파벳 1byte, 한글 3byte) MySQL/MariaDB 에서도 UTF-8 을 지원한다. 이때! 간과한 사실이 있는데, 전세계 모든 언어가 21bit (3바이트가 조금 안됨)에 저장되기 때문에 MYSQL 에서 utf8 을 3바이트 가변 자료형..
CHAR & VARCHAR & TEXT CHAR : 고정 길이 문자열 정보 - s는 기본 길이 1바이트, 최대 길이 Oracle 2000바이트 SQL Server 8000바이트 - s만큼 최대 길이를 갖고 고정 길이를 가지고 있으므로 할당도니 변수 값의 길이가 s보다 작을 경우에는 그 차이 길이만큼 공간으로 채워진다. (남는 공간은 공백으로 채우게 된다.) VARCHAR : CHARACTER VARYING의 약자로 가변 길이 문자열 정보 ( 데이터 길이 상한치 4000 ) (Oracle은 VARCHAR2 로 표현, SQL Server는 VARCHAR로 표현) - s는 최소 길이 1바이트, 최대 길이 Oracle 4000바이트, SQL Server 8000 바이트 - s만큼의 최대 길이를 갖지만 가변 길이..
카테고리명 가져오기 ex) 부모1 > 부모2 > 자식1 CREATE DEFINER=`workerman`@`%` FUNCTION `F_GET_CATEGORY_NEW_NAME`(idx bigint) RETURNS varchar(500) CHARSET utf8 READS SQL DATA BEGIN DECLARE _id bigint; DECLARE _p_category_no bigint; DECLARE _category_name varchar(500); DECLARE _name varchar(20); SET _id = idx; set _category_name = ''; IF _id IS NULL THEN RETURN NULL; END IF; IF _id = 0 THEN RETURN '0'; END IF; LO..
제네릭은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법 class Person{ public T info; } public class GenericDemo { public static void main(String[] args){ Person p1 = new Person(); // p1 & info의 데이터 타입은 string이 된다 Person p2 = new Person(); } } 사용하는 이유 아래 코드는 보면 StudentPerson 과 EmployeePerson 은 똑같은 기능을 가지고 있다.. 두 개를 대표할 수 있는 클래스를 만들수 있게 해주는 것이 generic class StudentInfo{ public int grade; StudentInfo(int grade){thi..
interface는 자바의 대표적인 규제 어떤 객체(class)가 있고 그 객체가 특정한 인터페이스를 사용한다면 그 클래스는 반드시 인터페이스의 메소들을 구현해야 한다. 만약 구현하지 않으면 이 애플리케이션은 컴파일 조차 되지 않는다 예제) - I라는 인터페이스는 z라는 추상메소드(다 구현되지 않은)가 정의 되어있음 - 클래스 A는 I라는 인터페이스를 구현 한다(implements) interface I { public void z(); } class A implements I { public void z(){} // 구현 안하면 에러~! } 왜 사용할까? 개발자 A와 B가 계산기를 만든다고 가정해보자 (거대한 작업 & 촉박한 일정이라고 가정) 계산기 클래스는 개발자 A가, 개발자 B는 그 클래스를 사용..