본문 바로가기

Programming

[Android] 안드로이드 Activity와 Activity Life Cycle Activity - 화면을 구성하는 기본 단위로서 한 화면을 보여주는 역할 이전 포스팅에서 간단히 말했던 Activity 의 설명이다. 지난 포스팅에서 언급했던 중요 구성요소들에 대해서 하나씩 설명을 해볼까 한다. 이번 포스팅은 그 중 제일 기본이라고 할 수 있는 Activity에 관한 설명과 그 생명 주기에 관한 내용이다. 액티비티는 화면의 기본 단위 라고 대부분의 웹문서에서 설명하지만, 사실 실제로는 화면을 보여주는 단위가 아닌 화면을 구성하는 view를 다양한 컨트롤을 이용하여 배치하는 이벤트를 처리하는 컴포넌트다. 실제로 안드로이드 스튜디오를 만들어 보면 view에 해당하는 소스코드는 xml로 이루어져 있고 activity는 그 xml과 연동을 시켜 해당 화면을 보여줌을 알 수 있다. 그러므로 정.. 더보기
[Android] 안드로이드의 주요 개념 일단 안드로이드를 시작하고자 한다면 무조건 알아야 할 몇가지 개념이 존재한다. 바로 안드로이드 구성 요소에 관한 것인데, 안드로이드는 크게 4대 컴포넌트라 불리워지는 4가지의 구성 요소를 지니고 있다.Activity, Broadcast Receiver, Content Provider, Service 가 그 4대 컴포넌트이며, 각 4대 컴포넌트에 액션이나 데이터를 전달하는 intent, 수신할 수 있는 인텐트를 정의하여 컴포넌트를 정의하는 역할을 하는 Intent Filter, 사용자에게 특정 이벤트를 알리는데 쓰이는 Notification 등이 크게 알아야 할 구성요소의 개념이다. 구성 요소 설명 Activity - 액티비티 사용자 인터페이스 화면을 구성하는 컴포넌트 Broadcast Receiver -.. 더보기
[JSP] Scope Object JSP의 내부 객체란 JSP 페이지가 사용자의 브라우저에게 요청될 때 자동으로 생성되는 객체를 말하는데, 특정한 자바 클래스 또는 인터페이스의 형태를 갖는다. scope웹 어플리케이션은 page, request, session, application 이라는 4개의 영역을 가지고 있으며 객체를 누구와 공유할 것인가를 나타낸다. 영역은 객체의 유효기간이라고도 한다.page: 한 번의 웹브라우저(클라이언트)의 요청에 대해 하나의 JSP 페이지가 호출되며 웹브라우저의 요청이 들어오면 이때 단 한 개의 페이지만 대응 된다. 생성된 객체는 PageContext 에 저장된다. 쉽게 말해 service()를 벗어나면 소멸한다. request: 한 번의 웹브라우저(클라이언트)의 요청에 대해 같은 요청을 공유하는 페이지가.. 더보기
[swing] Event Dispatch Thread Swing(정확하게는 AWT)의 GUI 이벤트는 event dispatch thread라는 특수한 스레드에서 처리되며, Swing 객체의 메소드는 대부분 thread-safe하지 않기 때문에1 모든 Swing 이벤트 핸들링과 Swing 프레임웍을 다루는 코드 대부분은 event dispatch thread 상에서 실행되어야 한다.2 따라서 일반적인 Swing 애플리케이션의 main 메소드는 GUI를 구동하는 Runnable 객체를 생성하여, event dispatch thread에서 실행되도록 요청(invoke)하는 코드가 된다. Swing의 event dispatch thread에 이런 실행을 요청하는 방법은 SwingUtilities 클래스의 invokeLater 메소드3와 invokeAndWait .. 더보기
serializable 직렬화 컴퓨터에 저장했다가 다음에 다시 꺼내 쓸 수는 없을지 또는 네트웍을 통해 컴퓨터 간에 서로 객체를 주고 받을 수는 없을까라고 고민해 본 적이 있는가? 과연 이러한 일들이 가능할까?가능하다. 이러한 것을 직렬화가 처리해준다. 1. 직렬화란 직렬화(스트림으로)란 객체를 데이터 스트림으로 만드는 것을 뜻한다. 즉, 객체에 저장된 데이터를 스트림에 쓰기 위해 연속적인 데이터로 변환하는 것을 말한다.반대로 스트림으로부터 데이터를 읽어서 객체를 만드는 것을 역직렬화(객체로)라고 한다.객체 스트림은 프로그램 메모리상에 존재하는 객체를 직접 입출력해 줄 수 있는 스트림으로 현재 상태를 보존하기 위한 영속성을 지원할 수 있다.자바에서 객체 안에 저장되어 있는 내용을 파일로 저장하거나 네트워크를 통하여 다른 곳으로.. 더보기
Thread Synchronized 공유 아래와 같은 방식으로 run()에서 공유할 객체에 접근하는 것이 가능해진다. 예) 쓰레드가 객체를 공유하게 되는 방식 1 - Runnable 인터페이스 상속?12345678910111213141516171819202122232425262728import java.util.*; class example { public static void main(String[] args) { RunnableImpl r = new RunnableImpl(); Thread t1 = new Thread(r); Thread t2 = new Thread(r); t1.start(); t2.start(); }} class RunnableImpl implements Runnable { int iv = 0; @Override pu.. 더보기
vector 여기서는 2D 벡터를 쉽게 사용할 수 있는 클래스를 생성하려고 한다. 이 클래스는 Vector2라고 부르겠다. 이 클래스에는 벡터의 x, y 요소를 포함하기 위한 두 개의 멤버가 있어야 한다. 추가로 다음과 같은 기능을 하는 메서드도 제공해야 한다.벡터의 덧셈과 뺄셈스칼라를 사용한 벡터 요소의 곱셈벡터 길이의 측정벡터의 정규화벡터와 x축 사이의 각도 계산벡터의 회전자바에는 연산자 오버로딩 기능이 없으므로 Vector2 클래스를 사용하기 쉽게 하려면 자체 메커니즘을 만들어야 한다. 이 메커니즘은 다음과 같이 구현하는 게 좋다.Vector2 v = new Vector2(); v.add(10,5).mul(10).rotate(54); Vector2 메서드 각각이 벡터 자체에 대한 참조를 반환하게 하면 이를 쉽게.. 더보기
String 다음과 같은 사진에서, s1과 s2가 같은 경우 출력 되는 문장은 무엇일까? 당연히 두 문장 모두 true를 반환한다. 그러나 s1과 s2는 분명 다른 변수이다. 왜 저러한 결과가 나오는 것일까 출력문에 들어가는 문장은 주소를 비교하는 문장이다. 그러므로 저 결과값을 통해 알 수 있는 사실은 주소값이 같다는 의미가 되는 것인데, 기존 우리가 알고 있는 상식과는 매우 다른 이야기이다. 왜 그러한 것일까 자바에서는 어떠한 변수를 생성하면 new라는 명령어를 사용해야 한다. new라는 명령어를 사용함으로 인해 메모리에 있는 힙에 공간을 할당하여 정보를 저장하게 되는데, 해당 코드에서는 new를 사용하지 않았다. 그 말은 힙에 공간을 할당하지 않는다는 것이다. 그렇다면 해당 변수는 어디에 저장되는가? 문자열이 .. 더보기
equals, hashcode equals() 와 hashcode()equals 는 두 객체의 내용이 같은지, 동등성(equality) 를 비교하는 연산자hashCode 는 두 객체가 같은 객체인지, 동일성(identity) 를 비교하는 연산자 다음과 같은 클래스가 있을때 equals() 를 이용한 두 객체의 동등성 비교는 올바른 결과가 나오지 않는다. public class Person { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { thi.. 더보기
Singletone pattern / Synchro * Singleton Pattern (싱글턴 패턴) - 싱글턴 패턴은 해당 클래스의 인스턴스가 하나만 만들어진다. - 어디서든지 그 인스턴스에 접근할 수 있도록 한다. - 클래스에서 자신의 단 하나 뿐인 인스턴스를 관리하도록 만들면 된다. 싱글턴 패턴은 인스턴스가 하나 뿐인 특별한 객체를 만들 수 있게 해주는 패턴이다. 주로 쓰이는 용도는 아래와 같다. - 스레드 풀, 캐시, 대화상자, 사용자 설정, 디바이스 드라이버 등등 객체가 전체 프로그램에서 오직 하나만 생성되어야 하는 경우 그럼 전역 변수로 static 으로 선언해서 사용하면 되지 않을까? 만약 전역 변수로 객체를 생성하면 어플리케이션이 실행 될 때 객체가 생성 될 것이다. 그러나 그 객체가 자원을 많이 차지 한다면 사용도 되기 전에, 괜히 자원.. 더보기

반응형