'분류 전체보기'에 해당되는 글 258건

  1. 2013.04.01 getInstance, 싱글턴 패턴(Singleton Pattern)
  2. 2013.03.26 error 1045 <28000>: access denied for user 에러
  3. 2013.03.22 [AngularJS]앵귤러 JS
  4. 2013.03.22 AngularJS 튜토리얼
  5. 2013.02.13 구와 절
728x90

싱글턴 패턴

- 인스턴스가 하나뿐인 특별한 객체

 

 

 

위 코드에서 MySinlgleton() 은 같은 패키지 내에서는 사용이 가능하나, 다른 패키지에서는 인스턴스를 만들 수 없는 클래스이다.

그 이유는 생성자가 private로 선언되어 있기 때문이다.

 

 

 

다른 패키지에서 사용하기 위해서는 getinstance() 라는 정적 메소드를 만들어서 사용 하면 된다.

MySinlgleton.getinstance(); 를 호출하게 되면 인스턴스를 계속 만들 수 있는 것이다.

 

 

 

하지만 하나뿐인 인스턴스 객체를 만들고 다면, 이렇게 하면, 조건문을 통해 생성되어있는지 없는지를 구별하여 반환하기 때문에 싱글턴패턴이 된다. 하지만 여기서 끝나는 것이 아니다.

 

 

 

만약 두개의 스레드가 위 코드를 실행하게 된다면, 내 의도와는 상관없이 두개의 인스턴스(Object1, Object2)가 생성되게 되버린다.

 

문제 해결방안에는

 

1. getinstance()를 동기화 시키는 것이다.

 

 

-synchronized 키워드만 붙이면 한 스레드가 메소드 사용을 끝내기 전까지는 다른 스레드는 메소드를 사용할수가 없게된다. 따라서 동시에 실행될 수가 없다.

-단 속도 문제가 생길 수 있다.(오버헤드)

 

2. 인스턴스를 처음부터 만들어 버린다

 

 

-정적 초기화 부분에서 Singleton의 인스턴스를 생성한다

-JVM에서 유일한 인스턴스를 생성하기 전에는 그 어떤 스레드도 uniqueinstance 정적 변수에 접근할 수 없다.

 

3. Double-Checking Locking(DCL)을 써서 getinstance()에 동기화한다.

 

-인스턴스가 생성되어 있는지 확인한 다음 생성되어 있지 않았을때만 동기화한다.

-처음에만 동기화를 하고 나중에는 동기화를 할 필요가 없다

-이렇게 함으로써 속도문제가 개선되고, 오버헤드를 줄이게 된다.

728x90

'JAVA' 카테고리의 다른 글

Signed와 Unsigned의 차이.  (0) 2013.10.07
퍼스펙티브(perspective)  (0) 2013.10.01
jericho parsing(제리코 파싱)맛보기...  (0) 2012.07.19
JSON 형식 맛보기 ...  (0) 2012.07.19
JSON 형식(JavaScript Object Notation)  (0) 2012.07.19
Posted by 정망스
,
728x90

 

 

어느순간 잘되던 mysql, 평소와같이 mysql -u root -p를 입력하고 비밀번호 입력했는데 뭐임..

1045 에러남.. 뭐임 그래서 방법을 알아냄 혹여나 같은분들 있으실까바 올림

 

이 에러는 계정 권한 문제이기때문에 root 계정이 mysql을 실행할 권한이 없어서 생기기도 하고 ID, Password 입력시 대소문자를 정확히 입력 안해서 생길수도 있다고 한다.

 

비밀번호를 지정하지 않으셧을 경우에는

mysql -u root 로 입력하시고 접속해보시면 될겁니다.

 

비밀번호를 지정하셨을 경우에는

mysql -u root -p 로 입력하시고

Enter password: 비밀번호 입력 해보시면 될겁니다.

 

저는 웃기게도 영어에 지금 패스워드 사용중에 yes라고 되있는데도 되지 않고 mysql -u root로 입력하니 되더군요

 

비밀번호를 설정하지 않으신 상태인분들은 설정하시려면

 

mysql> use mysql

Database changed

mysql> update user set password=password('비밀번호입력') where user='root';

Query OK, 1 row affected (0.00 sec)

Rows mtched: 1 Changed: 1 Warnings: 0

 

과 같은 과정을 거치시면 될겁니다. 간단하게 비밀번호 입력란에 입력한 비밀번호로 root 계정을 업데이트 해주는겁니다.

 

했는데도 적용이 안된다, 비밀번호를 입력해도 또 접속이 안된다 하시는분들은

 

mysql>flush privileges;

 

한번 해주세요 그럼 되더라구요.

728x90

'JSP_Servlet' 카테고리의 다른 글

RequestDispatcher 이란?  (0) 2013.10.11
톰캣에서 인코딩 설정  (1) 2013.10.07
익스프레션 정리  (0) 2012.07.19
JSP와 서블릿  (0) 2012.07.13
Posted by 정망스
,

[AngularJS]앵귤러 JS

AngularJS 2013. 3. 22. 18:07
728x90

먼저 쓴 글은 다른 분들의 정리를 참고하여 중요시하다길래 일단 정리하여 올린거지만

아직 잘 모르겠다 . 천천히 튜토리얼을 보면서 하나씩 배워바야겠다.

 

우선은 먼저 AngularJS 에대해 기본적인 개념을 알아 보려 한다.

 

구글에서 구축하는 jQuery를 능가 할수 있을지는 모르겠다 난 잘 ..

아무튼 데이터 바인딩에 연동되는 Angular JS에 대해 알아 보자

 

우선 사이트는 http://angularjs.org/

 

크롬에서 들어가시는것을 추천합니다. IE는 7,8,9 이하 버전에서는 다운이 안되? 더라구요.

 

 

 

home화면이다, home, Learn, Develop, Discuss 항목이 있다.

 

그중에도 develop 항목안에 api reference가 있다.

프로그래머 지망생이니 api가 어딧는지가 우선 중요한거 아니겠는가 ㅋ;

 

* AngularJs 의 기본 형태

 

- 특징 -

html 태그 안에 ng-app 라는 속성이 포함되어 있다는 점,

AngularJs 를 로드 한다는 점.

{{ }} 로 감싸진 Angular 표현식이 존재한다는 점.

 

- 양방향 데이터 바인딩 구현,

- 자바스크립트 상에서 MVC 모델을 구현,

- 다이렉티브로 태그를 커스터마이징 가능

 

* Angular JS Loading 과정

 

ng-app 지시어를 통해 AngularJS 의 로딩은 대부분 매우 쉽고 간편하게 이루어진다.

일부의 경우 스크립트 로더를 사용하는 형태로 수동적으로 어플리케이션으로 시작 할 수 있다.

 

세가지 매우 중요한 과정이 어플리케이션의 로딩 중에 일어나게 된다.

 

1. dependency injection 을 위해 사용되는 인젝터가 생성된다.

2. 인젝터는 어플리케이션의 모델을 위한 컨텍스트가 되는 루트 스코프를 생성한다.

3. 앵귤러는 그 이후에 ng-app 의 루트 요소로부터 시작점을 삼아 하위요소들을 "컴파일" 한다.

 

한번 어플리케이션이 로딩되고 나면 프라우저에서 어떤 이벤트 (마우스클릭, HTTP 응답, 키 입력 등 ) 가 입력될 때까지 기다리게 된다.

이런 이벤트가 일어나게 되면 앵귤러는 이벤트를 인지하고 이 이벤트가 어떤 모델이든 변경시키고 또 그 변화된 것을 찾게되면 앵귤러는 영향을 반영한 뷰를 리플렉트 하게 된다.

 

어플리케이션의 구조는 매우 간단하다.

 

차근차근 공부를 더 해봐야겠다. 잘만 사용하면 그때 구글 세미나에 가서 들은바론 jQuery보다도 코드수가 더 줄어들었다는... -_+

728x90

'AngularJS' 카테고리의 다른 글

AngularJS 튜토리얼  (0) 2013.03.22
Posted by 정망스
,

AngularJS 튜토리얼

AngularJS 2013. 3. 22. 17:39
728x90

AngularJS


저번 구글 devfest 를 다녀온후 angularJS를 보았고 생각나서 조금씩 해보려한다.

 

튜토리얼을 그냥 하나씩 따라가는 걸로~ 


 

angular.js 및 정식 튜토리얼은 위 이미지 클릭 - API


IE7,8,9에서 작은(?) 문제가 있으며, 해결책은 맨아래


 

1. 가장 기본적이라고 생각되며, 가장 강력한 기능 값 바인딩


index.html

  1. <html ng-app>
  2. <head>
  3. ...
  4. <script src="lib/angular/angular.js"></script>
  5. <script src="js/controllers.js"></script>
  6. </head>
  7. <body ng-controller="PhoneListCtrl">
  8.  
  9. <ul>
  10. <li ng-repeat="phone in phones">
  11. {{phone.name}}
  12. <p>{{phone.snippet}}</p>
  13. </li>
  14. </ul>
  15. </body>
  16. </html>



controllers.js

  1. function PhoneListCtrl($scope) {
  2. $scope.phones = [
  3. {"name": "Nexus S",
  4. "snippet": "Fast just got faster with Nexus S."},
  5. {"name": "Motorola XOOM™ with Wi-Fi",
  6. "snippet": "The Next, Next Generation tablet."},
  7. {"name": "MOTOROLA XOOM™",
  8. "snippet": "The Next, Next Generation tablet."}
  9. ];
  10. }



동작 

심플!


<html> 태그에 ng-app 를 추가하여 angular application 이라고 선언해준다.


그리고 컨트롤러가 적용될 태그에 ng-controller="PhoneListCtrl" 를 추가한다.


컨트롤러에 들어갈 값은 controllers.js 에 함수로 정의한 함수명이 그대로 사용된다. 

body가 refresh 등 어떤 이유로 변경되었을 경우에 지정한 컨트롤러가 날아가는데

그걸 방지하기위해 컨트롤러를 html 태그안에 선언해도 된다.



그다음 리스트류를 표현할때

보통 li 를 iteration 하지 않는가.

li 에 다가 ng-repeat="phone in phones" 선언하면

foreach 나 each 처럼 사용이 된다.


 phones 를 $scope에 정의해주면

해당 컨트롤러의 scope 내에서 사용할 수 있다.




2. search


 

index.html

  1. <div class="container-fluid">
  2. <div class="row-fluid">
  3. <div class="span2">
  4. <!--Sidebar content-->
  5.  
  6. Search: <input ng-model="query123">
  7.  
  8. </div>
  9. <div class="span10">
  10. <!--Body content-->
  11.  
  12. <ul class="phones">
  13. <li ng-repeat="phone in phones | filter:query123">
  14. {{phone.name}}
  15. <p>{{phone.snippet}}</p>
  16. </li>
  17. </ul>
  18.  
  19. </div>
  20. </div>
  21. </div>



동작

ng-model="query123" 


이라고 input 에다가 선언을 하였습니다.


그럼 해당 input 에 입력되는 text는 query123 이라는 바인딩변수로 사용 할 수 있습니다.


문서 아무곳이나 <div> {{query123}} </div> 라고 해놓았다면


input 에 글자를 입력되는 순간 저 div 에도 동일하게 해당 text가 나오게 됩니다. 


돌아가서 13라인에 필터라고 선언하고 query123을 지정했습니다.


그러면 글자가 입력되는 순간 해당 li에 모든 텍스트중 동일한 글자가 있는지를 검색하여


동일한 글자가 있는 li만 리스트에 보여주게 됩니다.


완전 멋진 기능을 이렇게 쉽게 사용할 수 있다니 행복합니다.


하지만 10개 20개 가지고 오는 보통 페이징되는 곳에서는 그다지 잘안쓰겠지만


많은양의 리스트가 한번에 보여지게되는 곳에서 잘써먹을거 같습니다.






3. Sort


index.html

  1. Search: <input ng-model="query">

  2. Sort by:
  3. <select ng-model="orderProp">
  4. <option value="name">Alphabetical</option>
  5. <option value="age">Newest</option>
  6. </select>
  7.  
  8.  
  9. <ul class="phones">
  10. <li ng-repeat="phone in phones | filter:query | orderBy:orderProp">
  11. {{phone.name}}
  12. <p>{{phone.snippet}}</p>
  13. </li>
  14. </ul>



controllers.js

  1. function PhoneListCtrl($scope) {
  2. $scope.phones = [
  3. {"name": "Nexus S",
  4. "snippet": "Fast just got faster with Nexus S.",
  5. "age": 0},
  6. {"name": "Motorola XOOM™ with Wi-Fi",
  7. "snippet": "The Next, Next Generation tablet.",
  8. "age": 1},
  9. {"name": "MOTOROLA XOOM™",
  10. "snippet": "The Next, Next Generation tablet.",
  11. "age": 2}
  12. ];
  13.  
  14. $scope.orderProp = 'age';
  15. }



동작

이번엔 select 에다가 ng-model 을 선언했습니다.


그러면 선택되는 option 의 value가 model의 값이 됩니다.


그러면 index.html 의 11 라인 orderBy:orderProp"  으로 선언해주면 


해당 리스트는 선택된 orderProp 의 값 name, age 중 하나로 정렬하게 됩니다.


controllers.js에 key 인 name과 age중 하나를 선택하게 됩니다.


14라인에서 값을 'age'로 주고 있습니다.


그러면 select box는 해당 값으로 선택이 되어 있는 상태로 렌더링되고, 리스트도 적용되어 보이게 됩니다.






4. XHR


phones.json

  1. [
  2. {
  3. "age": 13,
  4. "id": "motorola-defy-with-motoblur",
  5. "name": "Motorola DEFY\u2122 with MOTOBLUR\u2122",
  6. "snippet": "Are you ready for everything life throws your way?"
  7. ...
  8. },
  9. ...
  10. ]


controllers.js

  1. function PhoneListCtrl($scope, $http) {
  2. $http.get('phones/phones.json').success(function(data) {
  3. $scope.phones = data;
  4. });
  5.  
  6. $scope.orderProp = 'age';
  7. }
  8.  
  9. //PhoneListCtrl.$inject = ['$scope', '$http'];



동작

저는 크롬에서만 테스트를 했는데, 크롬보안정책상 로컬에서 파일을 불러다 사용하는 짓이 금지되어있어

로컬서버돌려서 진행하였습니다.

푸는방법이 있다고는 하는데 아무리 해봐도 저는 안풀려서 ㅠㅠ


$http.get 으로 파일을 가져오고 있습니다. 

다른메소드로는

$http.get, $http.head$http.post$http.put$http.delete$http.jsonp 가 있습니다. API 참조하세요 


그리고 controllers.js 에 주석처리된 놈은 Depedency Injection입니다.

원하면 컨트롤러에 직접 필요한 인자를 집어넣어 줄 수 있습니다.


해주지 않으면 기본으로 저 순서로 들어갑니다.


그리고 controllers.js 라인 3 - data를 


$scope.phones = data.splice(0, 5);


같이 원하는만큼만 넣으셔도됩니다.


계속 됩니다.




※ IE 에서 바인딩이 되지 않고, 그대로 {{name}} 이 나올 때,JSON.strigify 가 안되거나, 

     등등의 문제를 위한 작은 해결책


1. doctype이 저렇게 되어있지않다면 바꿔보세요.

<!doctype html>


2.

<html lang="en" class="ng-app:myapp" id="ng-app" ng-app="myapp" xmlns:ng="http://angularjs.org">

     <head>    

        <!--[if lt IE 9]>

          <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>

        <![endif]-->

        <!--[if lte IE 8]>

          <script>

            document.createElement('ng-include');

            document.createElement('ng-pluralize');

            document.createElement('ng-view');

            document.createElement('ng:include');

            document.createElement('ng:pluralize');

            document.createElement('ng:view');

          </script>

        <![endif]-->

        <!--[if lt IE 8]>

          <script src="js/json2.js"></script>

        <![endif]-->

      </head>

 

728x90

'AngularJS' 카테고리의 다른 글

[AngularJS]앵귤러 JS  (0) 2013.03.22
Posted by 정망스
,

구와 절

영어.. 2013. 2. 13. 13:02
728x90

구와 절의 차이는 주어와 동사가 있느냐 없느냐

 

주어+동사가 없이 품사역할을 하면 구

주어+동사를 포함하여 품사역할을 하면 절

 

명사구/절 : 명사를 역할을 하는데 주어+동사가 없으면 명사구, 있으면 절

형용사구/절 : 형용사를 역할을 하는데 주어+동사가 없으면 형용사구, 있으면 절

부사구/절 : 부사를 역할을 하는데 주어+동사가 없으면 부사구, 있으면 절

 

 

728x90

'영어..' 카테고리의 다른 글

5문형  (0) 2013.10.08
8품사  (0) 2013.02.13
Posted by 정망스
,


맨 위로
홈으로 ▲위로 ▼아래로 ♥댓글쓰기 새로고침