본문 바로가기

프로그래밍언어

(49)
java - synchronized 란? 사용법? java - synchronized 란? 사용법? 멀티스레드를 잘 사용하면 프로그램적으로 좋은 성능을 낼 수 있지만, 멀티스레드 환경에서 반드시 고려해야할 점인 스레드간 동기화라는 문제는 꼭 해결해야합니다. 예를 들어 스레드간 서로 공유하고 수정할 수 있는 data가 있는데 스레드간 동기화가 되지 않은 상태에서 멀티스레드 프로그램을 돌리면, data의 안정성과 신뢰성을 보장할 수 없습니다. 따라서 data의 thread-safe 를 하기 위해 자바에서는 synchronized 키워드를 제공해 스레드간 동기화를 시켜 data의 thread-safe를 가능케합니다. 자바에서 지원하느 Synchronized 키워드는 여러개의 스레드가 한개의 자원을 사용하고자 할 때, 현재 데이터를 사용하고 있는 해당 스레드를..
JAXB - unmarshal , marshal (언마샬,마샬) JAXB - unmarshal & marshalXML은 이제 데이터를 표현하는 표준이며, Java Object를 XML로 나열할 때 사용하는 다양한 XML 파싱 기술들이 개발되어왔고, 그 중에 많이 쓰이는 대표적인 기술이 SAXParser와 DOMParser이다. 하지만 프로그래머들이 즉각적인 테스트를 할 방법으로 필요한 기술을 원했고 이 경우에 사용하는 기술이 JAXB이다. JAXB는 Java Architecture for XML Bind의 약자로 XML로 부터 Java Object를 직렬화 하는 Unmarshalling과 이 반대의 Marshalling을 수행 할수 있도록 해주는 API이다. -Binding Compiler(xjc) : 사용자가 정의한 XML Schema를 가지고, Schema에 정의..
Javascript 타이머함수( setInterval(),setTimeOut(),clearInterval() ) JavaScript 타이머 함수자바스크립트에서 타이머함수란 전역객체인 window 객체 안에 있는 함수들입니다. 그렇다면 타이머 함수가 할수 있는 일은 무엇이 있을까요? 1. 특정시간마다 특정 함수를 계속 호출해서 실행 시킬 수 있다. => setInterval(function, duration)2. 특정시간 이후에 딱 한번만 특정함수를 호출해 실행시킨다. => setTimeOut(function, duration)3. 특정 타이머 id값을 가진 타이머 함수를 종료시킨다. => clearInterval(timerid) 1. 특정시간마다 특정함수를 호출/실행, setInterval 함수 1234567891011121314151617181920212223242526272829303132333435363738..
Servlet이란? 서블릿(Servlet) 이란?서블릿이란 클라이언트의 요청에 따라 서버가 실행시키는 자바 프로그램입니다. 예전에는 웹서버가 모든 클라이언트의 요청을 받아서 처리를 했었는데, 요즘처럼 인터넷이 활성화된 시대에서는 웹서버 혼자서 모든 요청을 처리 할수 없게 되었습니다. 그래서 나온 것이 서블릿입니다. 웹서버에게 요청이 가면 그 요청을 서블릿 컨테이너에게 넘기고 서블릿 컨테이너가 요청에 알맞은 서블릿 객체를 생성시켜주게 됩니다. 하지만 여기에서 중요한 것은 서블릿 컨테이너가 모든 요청에 대해 서블릿 객체를 생성시키지 않는다는 점입니다. 만약 해당이 요청이 서버 입장에서 첫 요청이라면 서블릿 객체를 생성시키지만 만약 첫 요청이 아니라면 메모리에 이미 생성된 서블릿객체에 대해 스레드를 생성해서 요청을 처리하고 응답..
Python module 디렉토리 설정 Python에서 사용할 module의 디렉토리가 같지 않아도 사용 가능하려면??python에서는 기본적으로 모듈을 import해서 사용하려면 같은 디렉토리 경로 상에 존재해야 모듈을 사용가능 하다 하지만 같은 디렉토리 경로가 아니더라도 해당 모듈을 import해서 사용할 수 있다면?? 방법은 sys모듈에서 모듈 경로를 추가해주는 것이다!! >>>import sys>>>sys.path.append("c:/python/modules") ====>사용할 모듈들을 모아놓을 디렉토리>>>sys.path ====>추가한 디렉토리가 잘 추가 되었는지 확인!! 이렇게 디렉토리를 추가시켜놓으면 "c:/python/modules" 경로 내에 있는 모듈들을 어디에서든지 사용이 가능하다!! 혹은 위 방법 말고도 set PYT..
Python - 클래스의 생성자 Python 클래스에서 만약 인자가 있는 생성자 외에 디폴트 생성자까지 만들고 싶다면?만약 윤씨 집안의 사람을 만드는 클래스라고 생각해보자. 그러면 클래스의 인스턴스를 생성하는 방법은 2가지가 있을 것이다. 생성자에 이름 인자를 넣어서 인스턴스를 생성하는 방법과 우선은 디폴트 생성자로 윤씨인 인스턴스를 만들고 그 다음에 setter 메소드를 이용해 이름을 결정짓는 방법 이렇게 2가지 일 것이다. 12345678class HouseYoon: lastname='윤' def __init__(self,name=None): if name != None: self.fullname=self.lastname+name def setname(self,name): self.fullname=self.lastname+namec..
SOLID 원칙이란? SOLID 원칙이란? S : SRP(Single Responsibility Principle) - 단일 책임 원칙 O : OCP(Open Closed Principle) - 개방-폐쇄 원칙 L : LSP(Liskov Substitution Principle) - 리스코프 치환 원칙 I : ISP(Interface Segregation Principle) - 인터페이스 분리 원칙 D : DIP(Dependency Inversion Principle) - 의존 역전 원칙 S : SRP(Single Responsibility Principle) - 단일 책임 원칙 단일 책임 원칙이란 말 그대로, 하나의 객체는 하나의 책임만 가져야 한다는 원칙이다. 만약 많은 기능을 한 객체에 다 쑤셔 넣는다면? 그만큼 그 객..
JSON객체의 배열로 넘어온 데이터 출력하기 JSON객체의 배열로 넘어온 데이터 출력하기단순히 JSON 객체로 넘어온 것이 아니라 JSON 객체 배열로 넘어온 데이터를 javascript로 출력하는 반복문을 작성하는 예제입니다. Spring으로 프로젝트를 하는 도중에 ajax로 리스트를 받아야 하는 기능이 있었는데, 그것이 @Response 어노테이션을 이용하여 자동으로 json객체의 배열로 넘겨받는 상황이었습니다. 순간 json객체 단위로 받는 것은 많이 했었지만 json객체의 배열? 생각하니 혼란이 와서 정리해봅니다. 1234567891011121314151617181920 var i=[{"t_no":"120","t_content":"test11","t_writer":"임광빈","obtain":"0","t_date":"2018- 04-27"},..