분류 전체보기
백준 11721번 - 열 개씩 끊어 출력하기
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String text = sc.next(); for (int i = 0; i
백준 11720번 - 숫자의 합
import java.util.Scanner; public class algo { public static void main (String[] args) { Scanner sc = new Scanner(System.in); int i = sc.nextInt(); String y = sc.next(); int total=0; for(int q=0;q
이펙티브 자바 규칙 21 - 전략을 표현하고 싶을 때는 함수 객체를 사용해라
프로그래밍 언어들 중에는 특정 함수를 호출할 수 있는 언어들이 있습니다. C같은 경우에는 포인터를 이용해서, 대리자(delegate), 자바도 사용할 수 있는 람다 표현식이 있죠. 전략을 표현하는데에 포인터가 좋은 방법이 될 수 있지만 자바는 포인터를 지원하지 않습니다. 자바는 어떤 경우라도 주소값을 직접 건드리지 못하게 하죠. 하지만 비슷한 메소드를 사용할 수 있습니다. 함수 객체(function object)라고 하는 방법입니다. public class StringLengthComparator { public int compare(String s1, String s2) { return s1.length() - s2.length(); } }이 코드는 문자열을 비교하여 차이를 계산해주는 전략을 가지고 있..
백준 11718번 11719번 - 그대로 출력하기 1, 2
public class algo { public static void main (String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNextLine()) { String line = sc.nextLine(); System.out.println(line); } } } 11718맞았습니다!!12336 KB128 MS sc.next() -> 다음 토큰을 읽습니다. sc.nextLine -> 다음 행을 읽습니다. sc.hasNext -> 토큰이 있는지 확인하고 boolean을 리턴합니다. 공백의 경우 무시합니다. sc.hasNextLine -> 행이 있는지 확인 후 boolean을 리턴합니다. 줄바뀜이 있으면 true를 리턴합니다. 예를 들어 ..
HTTP Status 500 - JSP 액션태그 에러
org.apache.jasper.JasperException: /WEB-INF/views/board/../subPage/header.jsp (line: [8], column: [1]) Page directive: illegal to have multiple occurrences of 'contentType' with different values (old: [text/html; charset=UTF-8], new: [text/html;charset=UTF-8]) JSP 헤더나 풋터 같은 액션태그를 사용할 때 컨텐트 타입의 형식이 맞지 않으면 발생하는 에러입니다. 설정이같아도 형식이 다르면 에러가 날 수 있습니다. 액션태그 대상과 컨텐트 타입을 맞춰줍시다.
이펙티브 자바 규칙 20 - 태그가 달린 클래스 대신 클래스 계층을 활용하라
태그가 달린 클래스라는 것이 있습니다. 두가지 이상의 기능을 커버하는 클래스인데 아래 예제를 보죠. class Figure { enum Shape { RECTANGLE, CIRCLE }; final Shape shape; double length; double width; double radius; Figure(double radius) { shape = Shape.CIRCLE; this.radius = radius; } Figure(double length, double width) { shape = Shape.RECTANGLE; this.length = length; this.width = width; } double area() { switch (shape) { case RECTANGLE: retu..
SpringFramework - ProxyFactoryBean 예제로 알아보기
이전에 InvocationHandler 를 사용한 프록시 패턴과 팩토리 빈을 포스트 한 적이 있습니다. 저 위의 내용을 모르신다면 읽으셔야 이 포스트 내용이 이해가 가능합니다. Spring에서는 이 두 개를 단점을 보완하고 장점을 살려 두 개를 동시에 지원해 줄 ProxyFactoryBean이라는 클래스가 있습니다. 먼저 InvocationHandler를 대체할 MethodInterceptor를 설명할까요. InvocationHandler는 MethodInterceptor와 비슷하지만 한가지 다른 점이 있습니다. InvocationHandler는 아래와 같이 String plus2 = (String) method.invoke(target, args); invoke 메소드가 타겟 함수에 대한 정보를 가지고..
SpringFramework(스프링) - 팩토리 빈(FactoryBean)
스프링에서는 빈으로 관리할 수 없는 몇몇 객체들을 빈으로 활용할 수 있게끔 하기 위해 FactoryBean 기능을 제공하고 있습니다. 말 그대로 Bean을 뽑아내는 공장역할을 하는 클래스이죠. 예제코드로 살펴봅시다. 구성은 이러합니다 express 라는 메시지를 담고있는 객체를 FactoryBean에서 뽑아내며 xml은 Spring의 주입에 필요한 설정을 해주는 파일이고 Test는 테스트 클래스입니다. 위에서부터 볼까요public class express { String express; private express(String express) { this.express = express; } public String getExpress() { return express; } public static ex..
이펙티브 자바 규칙 19 - 인터페이스는 자료형을 정의할 때만 사용하라
인터페이스는 해당 클래스의 객체를 참조 할 수 있는 자료형(type)의 역할을 합니다. 인터페이스를 구현하면 int, string 등의 자료형을 그대로 오버라이드 하게되는데 이 목적을 위해 언터페이스를 사용하죠. 하지만 개중에는 그렇지 않은 인터페이스도 있습니다. public Interface PhysicalConstants { // 아보가르도 수(1/mol) static final double AVOGADROS_NUMBER = 6.02214199e23; // 볼쯔만 상수(J/K) static final double BOLTZMANN_CONSTANT = 1.3806503e-23; // 전자 질량(kg) static final double ELECTRON_MASS = 9.10938188e-31; } 이는 ..
ORA-00904 에러 부적절한 식별자
Question: I am running a SQL statement and I get a SQL*Plus error ORA-00904 invalid identifier. 질문: 저 SQL 썻는데 ORA-00904 에러 떴어요. Answer: When ORA-00904 occurs, you must enter a valid column name as it is either missing or the one entered is invalid. The "invalid identifier" most common happens when you are referencing an invalid alias in a select statement. 답: ORA-00904 에러가 떳다면, 컬럼이 빠졌거나 이름이 잘못되있..