728x90
반응형
728x90
반응형

문제는 다음과 같습니다.

 

https://www.acmicpc.net/problem/2675

 

 

 

 

import java.util.Scanner;

public class test {
	public static void main(String[] args){
		char[] ch;
		Scanner sc = new Scanner(System.in);
		//test변수는 반복하려는 횟수
		int test = Integer.parseInt(sc.nextLine());
		for( int t=1; t<=test; t++){
			//ch 배열은 반복하려는 문자열
			ch = sc.nextLine().toCharArray();
			int num = Integer.parseInt(String.valueOf(ch[0]));
			for(int i=2; i<ch.length; i++){
				char a = ch[i];
				for(int j=0; j<num; j++){
					System.out.print(a);
				}
			}
			System.out.println();
		}
	}
}

 

 

실행 결과입니다.

 

 

728x90
반응형
728x90
반응형

웹 프로그래머 예상 질문

 

1. 객체지향과 절차지향의 차이

순서 차이인 것 같습니다. 예를 들면 라면을 끓이는 방식이 절차지향이라면 물을 넣고 끓인 뒤 라면을 넣고 스프를 넣는 순서가 고정되어 있기에 다른 행동을 할 수 없는 상황이기 때문에 비효율적인 방법이라 생각합니다.

객체지향은 라면을 끓이는 과정에서 순서에는 상관이 없는 것 같습니다. 순서에 상관없이 재료들을 넣으면 라면이 완성이 되기 때문입니다객체지향 프로그래밍을 통해 개발하게 되면 개발자 분들이 따로 개발되어도 나중에 각자의 기능들을 합치기에 수월하다는 장점이 있습니다.

 

2. 리스트와 맵의 차이점

 리스트와 맵은 데이터를 저장한다는 공통점을 가졌지만 데이터를 저장하는 구조가 다릅니다. 리스트는 배열로 되어 있어 데이터를 순차적으로 표현할 때 유리한 자료 구조입니다. 반면에 맵은 특정 데이터를 표현할 때 유리한 자료 구조입니다.

 

3. 오버로딩과 오버라이딩의 차이

 오버로딩은 한 클래스 내에서 매개변수를 다르게 정의하여 같은 이름의 메소드를 여러 개 갖는 것입니다.

 오버라이딩은 부모클래스가 갖고 있는 메소드를 자식 클래스에 재정의해 사용합니다개발자들 사이의 약속으로 메소드의 이름 하나로 개발의 효율성을 높입니다.

 

4. 추상클래스와 인터페이스 차이점을 설명(상속과 다형성의 개념을 아는가)

 추상클래스와 인터페이스는 상속받은 클래스 또는 구현하려는 인터페이스 안에 있는 추상 메소드를 구현을 강제하는 공통점이 있습니다.

이 둘의 차이는 추상 클래스는 상속의 특징을 갖고 있고 인터페이스는 다형성의 특징을 갖고 있습니다.

상속은 부모의 클래스의 특징들을 물려받는 것이고,

다형성은 클래스에 동일한 메소드를 사용할 수 있는 것입니다.

추상클래스는 일반변수와 일반 메소드를 사용가능하고 인터페이스는 메소드들만 사용할 때 유용합니다.

추상 클래스는 클래스를 상속 받아 기능을 이용하고 확장시키는 반면 인터페이스는 메소드를 강제 구현하며 구현된 객체의 같은 동작을 보장합니다.

4-1. 추상 클래스(상속)를 사용하는 이유

기존에 만든 것을 재사용할 수 있다.

Human이라는 클래스를 만드는 것으로 사람의 공통적인 부분을 만들어 프로그래머나, 디자이너, 퍼블리셔 등이 갖는 사람의 특징을 정의하는 수고를 덜 수 있다.

4-2. 인터페이스(다형성)를 사용하는 이유

동작 방식을 다르고 주고 싶을 때 사용, 예를 들어 키보드를 누르면 ESC가 될 수도, Enter가 될 수 도 있다.


5. 멀티 쓰레드를 설명해주세요

 두 가지 이상의 작업을 동시해 실행할 수 있어 자원을 효율적으로 사용 가능합니다.

 Java.lang.Thread, Java.lang.Runnable을 통해 구현

 

6. 접근제어자의 종류와 특징을 설명

 private : 같은 클래스에서만 접근 가능합니다.

 default : 같은 패키지에서만 접근 가능합니다.

 protected : 같은 패키지, 다른 패키지의 자식 클래스에서 접근 가능합니다.

 public : 접근 제한없이 사용 가능합니다.

 접근 허용 순 : public > protected > default > private


7. Thread를 구현하기 위한 두 가지 방법

 java.lang,Thread 클래스 상속과 java.lang,Runnable 인터페이스를 구현합니다.


8. 동기식와 비동기식의 차이에 대해 설명

동기식은 어떤 동작이 완전히 끝나고 제어를 반납하는 방식,

비동기식은 동작이 끝나지 않아도 일단 제어권을 반납하고 할 일을 계속하는 방식

이메일의 예를 들어 설명하자면 만명에게 이메일을 보내고자 합니다. 한명에게 메일을 보내는 시간을 1초라고 한다고 할 때 동기식의 경우는 발행을 누르면 1초당 한명씩 보내게 되며 만초가 걸리는 동안 기다려야합니다.비동기식의 경우 발행을 누르면 이메일을 보내는 시스템에데 만명에게 이메일을 보내라고 위임을 하는 것으로, 시스템이 일을 처리하는 동안 전송완료의 메시지를 받고 백그라운드에서 메일을 보내는 것입니다.


9. 정렬에 대해 정의

1) 선택 정렬(Selection sort)

주어진 리스트에 최소값을 찾아 맨 앞에 위치한 값과 교체하며 리스트를 반복해 교체하는 알고리즘

정렬되지 않은 배열 인덱스의 맨 앞에서부터 포함한 이후의 배열 값 중 가장 작은 값을 찾아 정렬하는 알고리즘


2) 삽입 정렬(Insertion sort)

자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘이다.

3) 버블 정렬(Bubble sort)

매번 연속된 두 개 인덱스를 비교하여, 정한 기준의 값을 뒤로 넘겨 정렬하는 알고리즘

4) 머지 정렬(Merge sort)

분할 정복 알고리즘의 종류로 큰 문제를 반으로 쪼개 문제를 해결해 나가는 방식으로 배열의 크기가 1보다 작거나 같을 때까지 반복해 정렬하는 알고리즘

두 개의 배열을 비교하여, 기준에 맞는 값을 다른 배열에 저장해 나가는 방식

5) 퀵 정렬(Quick sort)

분할 정복 알고리즘의 종류로 pivot을 선정하여 pivot을 기준으로 좌측과 우측으로 pivot보다 작은 값을 왼쪽, pivot보다 큰 값을 오른쪽으로 재배치를 하고 계속하여 분할하여 정렬하는 알고리즘

*pivot : 리스트 가운데서 고른 하나의 원소

 머지 정렬 와 퀵 정렬의 차이

병합 정렬은 정확하게 이분할을 하는 반면에 퀵 정렬의 경우에는 정확하게 이분할되지 않습니다.

*분할정복 : 커다란 문제를 잘게 나눠서 작은 문제를 극복


10. 스택(stack)과 큐(Queue)

스택

-후입선출(Last In First Out)의 구조

-push()를 통해 데이터를 입력, pop()을 이용해 데이터를 출력

ex) 역순 문자열

큐(Queue)

-선입선출(First In Fisrt Out)의 구조

-enQueue()를 통해 데이터를 입력, deQueue()를 이용해 데이터를 출력

ex) 선입선출이 필요한 대기열(티켓 카운터)


11. 싱글톤 패턴을 사용하는 이유

싱글톤 패턴은 특정 클래스의 하나의 인스턴스를 생성하는 패턴으로 1개의 객체만을 생성합니다.

DBCP(DataBase Connection Pool)과 같은 환경 설정 클래스와 같은 하나만의 객체를 사용해야할 때 유용


12. 클래스와 인스턴스, 객체

클래스로부터 객체를 만드는 과정을 인스턴스화, 클래스로부터 만들어진 객체를 인스턴스(Instance)

클래스(Class)는 객체를 프로그램적으로 만들기위한 설계 코드(객체들의 집합)

객체(Object)는 SW(소프트웨어)에 구현할 대상

예를 들어 자동차의 상태와 정보를 담은 것이 클래스, 자동차 주인과 차의 종류를 정의한 즉 클래스에 대한 변수를 선언한 것이 인스턴스, 객체는 자동차 종류로 모닝, 소나타, 그랜져 등을 의미


13. 함수와 메소드

함수와 메소드는 특정한 로직을 처리하는 점에서 의미는 같다.

절차지향언어에서 사용하는 것은 함수, 객체지향언어에서 사용하는 것은 메소드

일반적으로 function A(){}으로 감싸져 있는 것은 함수

클래스 내에서 속해 사용하는 것이 메소드


14. 가비지 컬렉션(Garbage Collection)

가비지(Garbage)는 응용프로그램에서 더 이상 사용되지 않는 메모리

가비지를 회수하여 사용할 수 있는 메모리 공간을 늘리는 것으로 시스템에서 가비지 컬렉션을 수행하는 부분을 가비지 컬렉터라고 부른다.

 

15. Finalize method 파이널라이즈 메소드 -> finalizer

최상위 클래스인 object 클래스에는 finalize라는 이름의 protected 메소드가 있습니다.

이 메소드는 JVM이 자원의 누수를 방지하기 위해 실행하는 가비지 컬렉션이 수행될 때 더 이상 사용하지 않는 자원에 대한 정리 작업을 진행하기 위해 호출되는 종료 메소드

 

자바 가상 머신(JVM)이 그 객체가 가지고 있는 메모리가 반환되기 전에 이것을 수행

클래스의 객체가 더 이상 사용되지 않으면 JVM의 가비지 컬렉터가 메모리에서 객체를 없애기 전에 finalizer()를 호출한다.

어쩔 수 없이 파이널라이저를 사용해야 하는 경우에는 super.finalize()를 호출해야 한다.

단점 : 예측이 되지 않아 조심히 사용해야 하며 성능 저하의 문제를 가져올 수 있다.


16. 트라이 캣치 파이널

예외 처리 문으로 try는 예외가 발생할 가능성 있는 범위를 지정하는 블록예외가 발생하게 되면 catch블록을 수행, finally try, catch에 상관없이 무조건 수행(항상 수행해야 할 필요가 있는 경우에 사용)

 

17. 배열과 컬렉션  

배열은 크기가 정해져 있다. (크기가 확정된 경우에 배열을 사용), 인덱스를 가지며 인덱스는 변경되지 않는다Array는 정적인 길이를 제공하는 배열

컬렉션(리스트)의 경우 자동으로 엘리먼트를 수용할 수 있는 크기가 조정되고 리스트 내의 엘리먼트 실제 개수를 알려준다. 컬렉션의 경우 처음, 중간, 끝에 엘리먼트를 추가/삭제가 가능 


18. ArrayListLinkedList의 차이

LinkedList는 검색 시 모든 요소를 탐색하기 때문에 ArrayList보다 느리다.

ArrayList는 데이터 삽입, 삭제 시 삽입, 삭제 이후 다른 데이터를 복사해야 하기 때문에 LinkedList보다 느리다.

이전 노드와 다음 노드를 참조하는 상태만 변경하면 되기 때문에 데이터를 삽입, 삭제할 때 유리한 것은 LinkedList

인덱스 기반의 자료 구조이기 때문에 데이터를 검색할 때는 유리한 것은 ArrayList

 

19. 자바스크립트와 jquery, 부트스트랩에 대해 설명

자바스크립트는 웹 브라우저는 동적으로 제어하기 위해 개발된 언어로 웹 개발에서 필수 지식입니다. jQuery는 자바스크립트의 라이브러리로 자바스크립트를 조금 더 편리하게 사용되기 위한 언어로 document.getElementById() $(‘#’)으로 간단하게 대체할 수 있다. 또한 jquery는 크로스브라우징(어느 브라우저에서도 작동)을 지원한다.

부트스트랩은 CSS를 다루는 프레임워크

 

20. 서블릿 JSP,

JSP(Java Server Page) : HTML 소스 코드 속에 자바 소스 코드가 들어가는 구조를 갖는 웹 어플리케이션 프로그래밍 기술(Java In HTML)

Servlet : Container가 이해할 수 있게 구성된 순수 자바 코드로만 이루어진 것

*web container : 웹 서버에서 전달받은 JSP파일을 서블릿으로 변환하여 서블릿의 결과를 웹 서버에게 전달하는 것

 

21. BOM(Browser Object Model)이 무엇인가?

웹 브라우저의 창이나 프레임을 추상화해서 프로그래밍적으로 제어할 수 있도록 제공하는 수단, Window 객체의 프로퍼티와 메소드의 사용법을 배우는 것 

 

22. DDL(Data Definition Language) DML(Data Manipulation Language)의 차이

DML : 데이터베이스에 들어 있는 데이터를 조회하거나 검색하기 위한 명령어(SELECT, UPDATE, INSERT, DELETE)

DDL : 테이블 구조를 정의하는 데 사용되는 명령어(CREATE, ALTER, DROP )


23. TCL(Transaction Control Language) : Commit rollback의 사용은 누가 하는 가?

논리적 작업의 단위를 묶어서 DML에 의해 조작된 결과를 제어하는 명령어


24.인덱스가 무엇이고 언제 사용?,

인덱스란 검색속도를 높이기 사용하는 하나의 기술

책으로 비유하자면 Full scan은 책을 한 장씩 넘기면서 찾는 방식

Index는 찾고자 하는 페이지를 바로 찾을 수 있는 방식


25. RESTFUL?

해당 URL만 보더라도 바로 어떤 작업을 하는지를 알 수 있도록 하나의 데이터는 하나의 URL을 갖도록 작업하는 방식


26. Request 전송 방식에는 어떤 것들이 있는지

- Get 방식 : URL의 쿼리문자열에 데이터를 같이 전달하는 방식으로 데이터 길이에 제한이 있고, 보안에 취약

- POST 방식 : 헤더에 데이터를 넣어 보내기 때문에 보안에 조금 더 유리하고 데이터 길이에 제한이 없다. 하지만 Get에 비해 속도가 느림

- DELETE 방식 : RESTFUL에서 삭제 기능을 할 때 사용

- PUT/PUSH 방식 : RESTFUL에서 수정 작업을 할 때 사용


27. Trigger, 트리거에 대해

 테이블이나 뷰에 대해 어떤 액션이 취해졌을 때 원하는 액션으로 처리하는 프로세스


28. Thread, Process 스레드와 프로세스를 설명하고 둘의 차이를 설명

 Thread : 프로세스 내 동시에 실행되는 독립적인 실행 단위

 Process : 운영체제에서 실행중인 하나의 프로그램(하나 이상의 쓰레드를 의미)

 Thread와 Process의 차이 

 프로세스 내에서 실행되는 각각의 일을 스레드, 프로세스 내에서 실행되는 세부 작업 단위로 여러 개의 스레드가 하나의 프로세스를 이루는 것


29. 트랜잭션


30. 테이블과 뷰의 차이


31. 오라클 psa와 gsa


32. 프로시져란?


33. 프레임워크에 대해 설명, 프레임워크에 대한 장단점

 객체지향 개발을 하면서 개발자의 취향에 따라 다양한 프로그램이 등장. 프로그램 개발에 투입되는 개발자도 점점 늘어나면서 전체 시스템의 통합성, 일관성이 없어져 이를 채우기 위해 만들어진 것이 Framework. SpringFramework가 대표적인 예입니다.

 장점 : 프레임워크를 사용하면 쉽게 개발 할 수 있으며 오류로 부터 자유로울 수 있다.

 단점 : 프레임워크에 의존하다보면 데이터의 동작 방식은 잊으면서 개발할 수 있어 개발 실력 향상이 더딜 수 있다.


34. inner join, outer join 이너조인과 아우터 조인

 INNER JOIN은 교집합이라면 OUTER JOIN은 합집합. INNER JOIN은 두 개의 테이블에 공통된 값을 조회, OUTER JOIN Left, Right, Full 3가지로 나뉘는 데 Left Right의 경우 모든 결과를 조회한 후 반대쪽에 매칭되는 값이 없어도 보여주는 조인. Full은 모든 결과를 조회하고 양쪽에 매칭되는 값이 없어도 보여주는 조인.


35. 세션과 쿠키


36. HTTP와 HTTPS의 차이

 사이트들에서 입력하는 정보들은 모두 사이트의 서버로 전송된다. 간단한 것부터 중요한 개인정보까지 서버로 전송 되기 때문에 보안을 중요시 한다.

http의 경우 서버로 전송하는 정보들을 보안 장치 없이 그대로 전송, 해커가 입력한 정보를 모두 볼 수 있게 된다.

http와 SSL(Secure Socket Layer)이라는 보안 소켓 계층 프로토콜을 합친 것이 https로 서버로 전송하는 정보를 암호화하기에 보안성이 높다. https를 사용하는 홈페이지는 SSL인증서를 발급받아 사용한다. 인증서를 통해 신뢰할 수 있는 사이트임을 확인할 수 있다.보안 기능이 추가하다 보니 속도가 http보다는 느리다는 점이 있다. 그래서 평소에 http를 사용하다 개인정보를 입력하는 페이지로 이동하는 경우 https를 사용함


37. POJO(Plain Old Java Object) 방식

 자바로 객체를 생성하는 방식을 스프링 프레임워크에서도 사용가능한 것


38. Primitive type과 Reference type, 프리토타입과 레퍼런스타입을 설명

 Primitive type는 정수, 실수, 논리, 문자 형식의 기본 자료형을 의미, 비 객체 타입으로 null값을 가질 수 없다. 

 

 Reference type 기본적으로 java.lang.Object를 상속받으면 참조형, Class, Interface, Array 등이 있다.

 primitive type은 각각의 형식의 실제 값이 들어가는 것, 

 다른 것을 참조하기 위한 주소값이 들어가면 reference type


39. Wrapper Class

 기초 자료형으로 표현할 수 있는 데이터를 객체로 만들어야 하는 경우의 지원하는 클래스


40. <%@ include %>와 <jsp: include>의 차이

 <%@ include %> (정적 include)

  -서버측 include, 소스 실행 전에 include가 된다.

  -정적으로 페이지를 할당

  ex) a.jsp

       .....

      <%@ include file="b.jsp" %>

       .....

       b.jsp 코드는 a.jsp에 포함된 후 실행된다.


 <jsp: include> (동적 include)

  -클라이언트 측의 include, 출력 결과만을 include

  -동적으로 페이지를 할당

  ex) a.jsp

       ...

      <jsp:include page="b.jsp" flush="true"/>

       ...

       a.jsp 결과에 따라 b.jsp가 실행된 결과가 include된다.

  -flush="true" : 문서의 출력 결과를 버퍼내에서 갱신하라는 의미

 *동적방식의 include를 사용하는 이유는 이클립스에서 정적 include에서 선언한 변수를 부모 페이지에서 쓰면 선언되지 않은 변수라는 에러가 나타나기 때문





728x90
반응형
728x90
반응형

자바의 특징인 객체지향프로그래밍(OOP : Oriented Object Programming)의 특성에는

캡슐화(Encapsulation), 상속성(Inheritance), 다형성(Polymorphism)이 있습니다.


1) 캡슐화  

 -데이터와 데이터를 다루는 방법(조작)을 묶는 것입니다.

 -클래스 내부 정의에 대해 외부에서 볼 수 없는 것이 특징입니다.

  클래스의 접근 권한을 결정하는 접근 지정자를 사용하여 구현합니다.

  접근 지정자에는 (public > protected > default > private ) 접근 허용 순입니다.

 -캡슐화의 예를 들자면 알약은 캡슐로 되어있기에 약의 내용물을 알 수 없습니다.


2) 상속성 

 -하나의 클래스(부모 클래스)가 갖는 특징(데이터+ 조작)들을 다른 클래스(자식 클래스)가 물려받는 것입니다.

 -상위 클래스에서 정의한 속성을 재사용하여 개발 속도를 높이기 위해 만들었습니다.

 -상속을 이용하면 하위 클래스는 상위 클래스의 모든 연산과 메소드를 자신의 클래스에 다시 정의하지 않고도

  자신만의 메소드로 구현가능합니다.


3) 다형성 

 -상속성의 계층을 따라 각각의 클래스에 동일한 이름의 메소드를 사용할 수 있는 것입니다.

 -하나의 인터페이스를 이용하여 다양한 구현을 제공하여 개발의 효율성을 높입니다.


Human human;
human = new Singer();
human.eat();

human = new Programmer();
human.eat();

human = new Dancer();
human.eat();

-사람의 직업은 다양하지만 모든 사람은 먹는 행동을 하기에 동일한 eat()메소드를 사용할 수 있다는 뜻입니다.

728x90
반응형
728x90
반응형

오늘은 오버로딩과 오버라이딩의 차이점을 알아보도록 하겠습니다.

면접 질문에서 자주 나오는 유형의 질문이라고 하는데요.

자바의 다형성 특징을 나타내는 방법으로 오버로딩오버라이딩이 있습니다.


오버로딩 : 같은 이름의 메소드를 여러 개 가지면서 매개 변수를 다르게 정의하는 것

오버라이딩 : 상위 클래스(부모 클래스)가 갖고 있는 메소드(자식 클래스)를 하위 클래스에서 재정의해 사용하는 것


오버로딩(Overloading)에 대해 자세히 알아 보겠습니다.

-메소드 이름은 같다.

-오버로딩은 매개 변수 타입, 매개변수가 다르다.



오버로딩은 실제로 프로젝트를 진행하면 여러 개발자 분들과 같이 개발하기 때문에 오버로딩을

사용해 작성자와 사용자가 알아보기 쉽게 하여 개발의 효율성을 높이기 위해 사용합니다.


예제를 통해 알아보겠습니다.

class OverloadingTestClass{ void overloadingTest(){ System.out.println("매개변수가 없는 메소드"); } void overloadingTest(int a){ System.out.println("매개변수가 "+a+"인 메소드"); } void overloadingTest(int a, int b){ System.out.println("매개변수가 "+a+"와 "+b+"인 메소드"); } } public class OverloadingTestMain { public static void main(String[] args) { OverloadingTestClass oltc = new OverloadingTestClass(); oltc.overloadingTest(); oltc.overloadingTest(100); oltc.overloadingTest(100, 200); } }


결과는 다음과 같습니다.



사전과 비교하자면 끄다라는 단어가 있습니다. 끄다라는 단어를 통해 스위치를 끄다, 불을 끄다, 담배를 끄다

등 표현을 할 수 있는데요. 만약 끄다라는 단어를 정의하지 않았다면 위에 표현을 일일이 정의해야 하는 번거로움이

있습니다. 우리나라 사전이 지금도 두껍지만 두께의 양은 수 십 배로 많아 질 것입니다. 

조금이나마 이해가 되셨기를 바랍니다.ㅎㅎ


다음은 오버라이딩(Overriding)에 대해 자세히 알아 보겠습니다.

먼저 오버라이딩을 알기위해 상속이라는 개념을 알아야 하는데요.

상속이라는 의미는 부모님이 자식에서 재산을 상속하듯이 무언가를 물려준다는 뜻인데요.

프로그래밍에서도 의미가 비슷합니다.

-상속 관계에 있는 클래스 간에 같은 이름의 메소드를 정의하는 기술입니다.

-메소드 이름은 같다.

-오버라이딩은 매개 변수 타입과 매개변수가 같다.


예제를 통해 알아보겠습니다.

class Employee{
	String name;
	int age;
	
	public void overridingTest(){
		System.out.println("사원의 이름은 "+name+"이고 나이는"+age+"입니다.");
	}
}
class Manager extends Employee{
	String jobId;
	
	public void overridingTest(){
		System.out.println("사원의 이름은 "+name+"이고 나이는 "+age+"입니다.");
		System.out.println("그의 직업은 "+jobId+"입니다.");
	}
}

public class OverridingTestMain {
	public static void main(String[] args) {
		Manager shin = new Manager();
		shin.name="신자바";
		shin.age=27;
		shin.jobId ="웹 프로그래머";
		
		shin.overridingTest();
	}
}

결과는 다음과 같습니다.



Manager클래스에 employee클래스를 상속함으로써 name과 age변수를 따로 정의하지 않아도 객체 생성 후에

 값을 입력하는 데 문제가 없음을 확인할 수 있습니다.

overridingTest() 메소드를 실행하면 콘솔 창에 잘 출력됨을 확인할 수 있습니다.






728x90
반응형
728x90
반응형

개발자 분들이 사용하시면 아주 유용한 정보를 알려드릴까해요

바로 이클립스에서 코드 전체 찾기인데요. 

즉 ctrl + f 기능을 이클립스에서 하나의 파일이 아닌 전체 파일의 코드를 찾을 수 있는 거죠.

바로 보여드릴께요!


이클립스 실행하시고 진행하시는 프로젝트를 켜줍니다.

ctrl + h 를 눌러 search를 켜줍니다.



다음은 customize 버튼을 클릭해줍니다.

아래와 같은 화면이 뜬다면 file search를 제외한 나머지는 체크를 해제해주세요.



ok버튼을 누르시면 아래와 같은 화면이 나옵니다.

마지막으로 찾고자 하는 코드를 ctrl + f 기능을 찾는 것처럼

containing text에 코드를 써줍니다. 저는 controller를 찾기 위해 입력을 했습니다.

다음으로 *.java를 입력해줬는데요 *.확장자를 이용해 찾고자 하는 코드의 범위를 지정해줍니다.

아래의 과정을 완료 하셨다면 search를 눌러줍니다.



search를 눌러주시면 아래의 사진과 같이 controller를 포함하고 있는 모든 java파일을

찾아주는 것을 확인할 수 있네요. 

ctrl + f 기능을 전체코드로 확인할 수 있다고 하면 맞을 것 같네요.




*.java 파일 이외의 *.jsp, *.xml, *.html 등 모두 가능하니까 다들 확인해보세요~

이만 포스팅을 마치겠습니다.







728x90
반응형
728x90
반응형

먼저 위키피디아의 사전적 정의부터 살펴보도록 합시다.

범용 고유 식별자(汎用固有識別子, 영어: universally unique identifier, UUID)는 소프트웨어 구축에 쓰이는 식별자 표준으로, 개방 소프트웨어 재단(OSF)이 분산 컴퓨팅 환경(DCE)의 일부로 표준화하였다.


네트워크 상에서 서로 모르는 개체들을 식별하고 구별하기 위해서는 각각의 고유한 이름이 필요하다. 이 이름은 고유성(유일성)이 매우 중요하다. 같은 이름을 갖는 개체가 존재한다면 구별이 불가능해 지기 때문이다. 고유성을 완벽하게 보장하려면 중앙관리시스템이 있어서 일련번호를 부여해 주면 간단하지만 동시다발적이고 독립적으로 개발되고 있는 시스템들의 경우 중앙관리시스템은 불가능하다. 개발주체가 스스로 이름을 짓도록 하되 고유성을 충족할 수 있는 방법이 필요하다. 이를 위하여 탄생한 것이 범용고유식별자(UUID)이며 국제기구에서 표준으로 정하고 있다.

UUID 표준에 따라 이름을 부여하면 고유성을 완벽하게 보장할 수는 없지만 실제 사용 상에서 중복될 가능성이 거의 없다고 인정되기 때문에 많이 사용되고 있다.


즉 객체마다 구별을 짓기 위해 UUID를 사용한다고 보면 될 것 같아요!

16진수로 표현되며 340,282,366,920,938,463,463,374,607,431,768,211,456개가 사용이 가능하다고 하네요.

중복될 일은 거의 없다고 보시면 됩니다.

UUID를 사용해보도록 하겠습니다.

사용하는 코드는 간단합니다.

import java.util.UUID;

public class testUUID {
	public static void main(String[] args) {

		// TODO Auto-generated method stub
		for(int i=0; i<10; i++){
			System.out.println(i+"번째 UUID : "+UUID.randomUUID().toString());

		}

	}
}



실행 결과를 확인하면 아래와 같이 값이 출력됩니다.



JDK 1.5버전 이상부터 가능한 클래스라고 합니다. 

UUID의 사용 예를 들자면 

학교에는 학생의 학번이 있고 웹 사이트에는 회원의 회원번호가

회사에는 사원의 사원번호가 있듯이 중복되지 않는 값을 줘야 할 때 사용하면 좋을 것 같네요!


728x90
반응형
728x90
반응형

오늘은 자바 소스 코드를 티스토리 블로그에 올리는 방법을 알려드릴 까 해요.

아마 개발하시는 분들에게 정말 유용할 듯 싶네요. 


1. js와 css파일 다운로드하기 

먼저 https://github.com/syntaxhighlighter/syntaxhighlighter 접속하여 파일을 다운 받습니다.

파일 경로는 원하는 곳에 지정하셔서 다운 받는 게 나중에 기억하기 편리하겠죠?


2. js와 css파일 업로드하기


-scripts폴더의 모든 파일을 아래의 그림과 같이 업로드합니다.


-그 다음 styles 폴더의 모든 파일 역시 업로드 합니다.



3. js와 css파일 HTML/CSS편집기에 등록하기

등록이라 설명드렸지만 말그대로 복사 붙여넣기 하시면 되요!

관리 -> 꾸미기 -> HTML/CSS편집 클릭하여

<head> 부분의 아래 소스를 추가해주세요!

























4. 소스 코드를 작성해볼게요!


html 체크박스를 체크하시고 


<pre class="brush:java">

     사용하고자 하는 자바 소스를 작성하면 됩니다!!

</pre>

주의하실 점은 

< 또는 > 표현하고자 할 떄

&lt; 또는 &gt;로 표현해야 합니다.

< 또는> 태그로 인식할 수 있기 때문이죠.


5. 결과는

//사용하고자 하는 자바 소스를 작성하면 됩니다!! public class animal{ }


코드가 잘 나왔네요! 


다운이 귀찮으신 분들을 위해 알집으로 파일 공유할게요!

syntaxhighlighter_3.0.83.zip


728x90
반응형

'프로그래밍 > 기타' 카테고리의 다른 글

SSO, SSL, SSH 정의  (0) 2018.08.05
애자일 방법론!!  (0) 2017.09.26
이클립스 테마 변경하기!!  (0) 2017.09.24
웹 프로그래머 면접 예상 질문!  (0) 2017.08.02
웹 프로그래머(JAVA, JSP) 면접 예상 질문  (0) 2017.07.19
728x90
반응형

mouseover : 마우스가 해당 요소 안에 들어올 때 발생하는 이벤트

mouserout : 마우스가 해당 요소를 벗어날 때 발생하는 이벤트


예제를 통해 차이를 살펴보겠습니다.


좋아요 기능을 구현 예제를 통해 설명하겠습니다.

<a href>를 클릭하면 통해 updateProInterestThumb()함수를 실행하도록 하였네요.




updateProInerestThumb함수는 ajax통신을 통해 값이 컨트롤러를 통해 전해지며

값이 움직이게 되요. 좋아요의 경우 db값이 'Y'es 그렇지 않는다면 'N'o로 db로 값이 변경되는데요.



//좋아요 기능 구현 
var prothumb = "${pivo.prothumb}";
function updateProInterestThumb(){
	var userid = "${user.id}";
	if(userid == ""){
		alert("로그인해야 관심상품으로 등록이 가능합니다.");
	}else{
		if(prothumb=='Y'){ 
			prothumb='N'; //console.log("1      "+prothumb);
		}else{f
			prothumb='Y'; //console.log("2      "+prothumb);
		}//console.log("3     "+prothumb);
		$.ajax({
			url : '/updateProInterestThumb',
			type : 'POST',
			data : {'code':code , 'prothumb': prothumb},
			success : function(result){
				$('#prothumbYn').html('');
				var jsonObj = JSON.parse( result );
				if(jsonObj.prothumb== "Y"){
					$('#layLike').css('display', 'block');
					$('#layLike').html("

좋아요가 되었습니다.
전체보기

"); $("#prothumbYn").html(""+" "+jsonObj.prothumbcount+""); }else{ $('#layLike').css('display', 'block'); $('#layLike').html("

좋아요가 취소되었습니다.

"); $("#prothumbYn").html(""+" "+jsonObj.prothumbcount+""); } } }); } }


div태그인 id가 layLike의 css속성을 블록으로 지정해줍니다.

그러면 블록모양으로 뜨겠죠.

그러면 이제 마우스 이벤트를 주도록 하겠습니다.



$('#layLike').mouseover(function(){
	$('#layLike').css('display', 'block');
});
$('#layLike').mouseout(function(){
	$('#layLike').css('display', 'none');
});


아래의 그림과 같이 마우스 포인터가 layLike아이디를 가진 div태그 안에 있으면 css속성은 block으로 유지가 되고

마우스 포인터가 layLike의 아이디를 가진 div태그 css속성은 none으로 사라지게 됩니다.

결과는 아래와 같습니다.!

마우스 오버 아웃 이벤트 사용하시는 분들은 예제를 통해 사용해보세요!









728x90
반응형

'프로그래밍 > JQuery' 카테고리의 다른 글

ajax로 return false 보내기  (0) 2019.10.06
JQuery IE에서 placeholder 적용하기  (0) 2018.11.03
jquery에서 reaonly, disabled 속성 사용하기  (0) 2018.08.05
jQuery란 무엇인가  (0) 2017.07.23
728x90
반응형

+ Recent posts