달력

12

« 2024/12 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

2018-04-21 Java & Web Study 


[스터디전 해야했던 숙제들..]

-Eclipse, Orcale, Toad 셋팅 끝내기 

-자바1~3장 공부 



<JAVA>


[문제]

1.1~100사이의 수에서 짝수의합, 홀수의합을 출력하시오 (for문 이용)

2.시험 성적이 결과에 따라서 A,B,C,D,E,F 학점을 출력 (Switch문)

3.Math.random( )을 이용해서 1~6사이의 임의의 정수를 변수 value( )에 저장하는 코드를 완성하시오

4.1~100까지의 수 중에서 4의 배수만 출력하되, 한 줄에 8개씩만 출력하시오.

5.scan으로 임의의 수를 입력받아서 그수의 배수만 출력하되, 8개씩만 출력하기.


->1~2번 예제를 통해서는 for문 switch문 while문등을 통해서 같은 문제여도 다르게 짤수있다는거 

-->if문을 쓰지않고 for문으로만 짤수도있고..  if문으로 홀짝을 다나오게할수도있고 

    방법은 여러개라 어떻게 짜느냐는 각자 나름..?

(1)if문으로 짝수걸러주는거 한번하고 else일때 홀수의합나오게하는것도있고

(2)for문으로 증감값이1,2인거 두개만들어서 출력할수도있는거고 


->2번문제를 실습해보면서 Scanner기능을 사용하게 됩니다.

-->스캐너문으로 받아서 하는문제인데 스캔으로 값을 입력받을때는 nextint( )사용뒤에 nextLine( )을 사용하게된다면 주의해야합니다. ==>블로그에 정리해 놓았음! 


->3번문제 Math.random을 이용해서 난수를 만드는것.. 난수범위를 설정하는거에대해서 생각해보게됩니다. 

-->random함수는 자세하게 추후에 정리해볼 예정 


->4의배수만 출력해주는 조건문을 걸고나서 그 뒤에 8개씩만 출력하고 줄바꿈하는걸 어떤방식으로할건지?

   (1)count라는 변수를 따로 줘서 체크하는방법

   (2)예를들어 4의배수라면 32로나누어서 0이나오는경우에 줄바꿈

    --->뭐 여러방법들이 있을 수 있는데 거기에 대해서 생각해보는거  


->5. 스캔으로 배수에대해 입력받은걸 변수에 집어넣고 그 변수로 배수를 출력을 8개씩만 출력하게 하는거 

   근데 4번문제에서 5번문제로 응용한다고 가정하면 

(1)방법을 count로 체크해주게되면  들어오는 변수와 카운트는 관계가 없으니까 따로 수정해줄 필요가없는데 

(2) 32로 나누는 방식으로 코드를 짯다고 가정하면  들어온변수*8라는 식으로 걸어줘야 맞게 출력되겠죠 

     

막상 내가 머리로 되겠지?? 하고 생각하는거랑 

짜보세요 하고 내줬을때 컴퓨터로 타이핑 쳐서 맞게 돌아가는지 확인하는거는 차이가 확실히 있다고 생각합니다.


조건문과 반복문을 사용하는데 있어서 효율적이다 아니다보다는 

여러 방법으로 생각해보고... 많이 짜보고 문법적인거에 혼동하는부분이 있으면 안된다고 생각합니다. 

(그래서 저는 반성중 ㅎㅅㅎ..!! )




<DB>


샘플 디비 demobld.sql로 기본 쿼리문 실습 

HAVING과 GROUP BY에 대해서도 알게되었습니다... ->디비 관련해서는 나중에 다루겠습니다. 

기록하는 일지 개념이라서.. 성격상 분리해서 서술해놓는게 좋네요 ㅎㅅㅎ! 


1.현재 날짜를 출력해라.

-->SYSDATE라는 함수가 시스템에 저장된 현재 날짜를 출력하는 함수라서 

    예를들어 저희가 실습했던 demobld.sql파일안에 EMP라는 테이블이있는데 

SQLPLUS나 TOAD툴에서 


SELECT SYSDATE  FROM EMP;

라고하면..  현재 시간을 출력해줍니다. 


2.직급이 Manager가 아닌 사원을 출력해라.

emp가 들어있는 테이블에서 manager가 아닌 경우만 출력해달라고 하면  나옵니다.

(분명히 script파일을 저장해뒀는데.. 보이지 않아서 자세하게는 생략합니다.)



-->demobld.sql을 토드에서 쿼리를 실행하는 방법이나 cmd에서 실행하는 방법등이 있는데

cmd에서 파일을 실행할때 명령어가 종류가 꽤 있습니다 

그래서 그부분에 대해서 정리해보려고 합니다! 

-->이건 데이터베이스 부분에 따로 정리하겠습니다. 


<회식>

정말정말 즐거웠고.. 느낀점이 많았습니다. 

좋은기회로 스터디를 하게되어서 공부하려고하시는 분들과 함께 공부하는 시간은 역시나 즐거운거 같아요.

열심히해서 계속 배우고 성장했으면 좋겠습니다. 

(개인적으로 느낀점은.. 정리를 해서 혼자..보도록  ㅎㅎㅎ ) 

아무래도 기억력에 한계가 있다보니.. 정리를 안해두면 그때 가졌던 감정들이나 좋았던게 슉~ 




<숙제>

자바의 정석 5~6장까지 공부하기! 라고 기억하고있는데.. 

배열과 객체지향 개념부분은 자바에있어서 짱짱 중요하다고 생각합니다. 배열은 어느 언어든..중요하지만..

생성자나.. 오버로딩 오버라이딩등등등..  열공하기 !_! 

즐거운 토요일이었어요 


<스터디 모습>!!!! 

주말임에도.. 시간내셔서 공부하는 멋지신 분들 

개인적으로 노트북이 꽉찬모습이 너무 좋았는데... 사진으로 안남기기에는 아쉬워서 !! 

개인 신상적인것도 있고해서 이번 글 이후로 사진은 안올릴 예정입니다.. 

이렇게 열심히 다같이 열공하고있어요!! 를 보이고 싶었습니다..ㅋㅋㅋㅋㅋㅋㅋ 

다들 잘되셨으면 좋겠어요.

다음 스터디도 화이팅 !





'스터디 > 4. Java & Web' 카테고리의 다른 글

[지식]스터디톡 내용 정리  (0) 2018.04.19
스터디 시작 2018.04.07~  (0) 2018.04.18
:
Posted by Gongdile

실습문제 정리하려고한다.

스레드는 내가 공부를 처음하는 부분이라서  

익숙하지가 않아서 정리도 좀하고..봐야겠다.. 


선생님과 같이풀었던 실습문제들 정리. .. 


이 문제를 보고 일단 생각해야할건.. 

1. 문자열을 0으로 설정하고 

2.레이블 클릭시 0.1초에 1씩 증가하는 카운팅. 

3.다시한번 클릭시 카운팅 중단 -->그리고 처음부터 시작.


스레드 중지시키기 위해서 interrupt( )메소드를 사용하고 

스레드가 살아 있는지 확인 위해서는 Thread.is Alive( )메소드 이용 


그럼일단 Swing을 이용해서 프로그램을 짠다. 

프로그램 클래스명 이름은 CountingControlFrame.java 라고 설정하겠다. 


자바의 GUI응용프로그램중에서 Swing을 사용하는것인데.. 프레임이나 컴포넌트 관련한 설명은 

추후에 설명하겠다. (왜냐면 이거 정리하는것도... 시간이 ㅋ_ㅋ )!! 


저 문제 프로그램의 구성블록을 그냥 캡처안에서 여기서 바로 정리했다 그림판으로.. 관계에 대해서

이해하려는 이유로 정리했다 저 네모박스는 { } 을 의미한다.

관계가 한눈에 들어오겠죠!! 


이런식으로 지금 프로그램이 구성되어있다. 코드는 주석으로 상세하게 설명했다. 

보고 참고하기.. 

파일첨부는 언젠가.. 

겉에 보이는 폼을 만들어준 부분이다.. 이제 안에 코드를 넣어야겠지.



코드가 잘보이는지 모르겠다... 이런 관계로 이러지는건데 


boolean bPaused =true;는 불리언 논리형은 디폴트값이 false인데 true로 초기화해주고 선언한거다.

내가 만약에 초기값을 true로 선언해주지않으면 기본값이 false기때문에 

아래 while문에서 실행이되지않으므로 프로그램 실행시 초가 증가하지 않는다. 


else 아래 Thread.start( ); 부분이 보이나? 

스레드는 한번 죽으면 새로 만들어야한다. ->다시 중지했다가 시작하고 이런게 아니다.

run이끝나면 무조건 쓰레드는 무조건 사라지므로 else if, else 는 내가 해줘야하는 부분이다.


new스레드에서 스레드가 만들어져서 변수가 스레드를 가르킨다. 

근데 이 스레드가 끝나면 사라져버린다.. 

그렇다고 변수값이 바뀌냐?? -->NO! 안바뀐다.!! 100번지 들어있다가 200번지되냐? 아니다.

왜냐하면 스레드가 NULL이 아니기 대문에... NULL은 아니고 죽어있으니까 다시 붙이면된다.

스레드가  한번 만들어서 죽어버리면 Null이 안된다. 

처음에는 null이다 그래서처음에 if문으로 null일때 만들어준거다. 


하지만 만들었을때 100번지를 가르키면 얘는 100번지를 가지고있을거다.

사라지더라도 타이머스레드의 100이라는 주소는 존재한다. 


스레드가 살았냐~ 죽었냐~ 로 판단하는거다.. 


다음은 이제 아래의 run code를 보자 


여기서 while(true)말고 

while(bPaused)라고해도 돌아간다. 


러너블이라는 인터페이스를 상속받았기 때문에 런이라는 메소드를 오버라이딩 해줘야한다. 

-->인터페이스, 상속, 오버라이딩 이라는 부분이 이해가 안가시는분은 구글링이나 검색을 .. 해보셔야한다!! 


오버라이딩은 부모에게 상속받은 메소드를 or 클래스를 내입에 맞게 재정의해서..사용하는걸 말한다


인터페이스를 사용하면 꼭 그안에있는 메소드나 클래스를 구현해줘야하는데 


나는 스레드에서 러너블이라는 인터페이스를 사용한 클래스를 만들었기 때문에 

지금 런이라는 메소드를 오버라이딩 해주고있는거다. 


런이 실행되는게 true면 0에서부터 value값을 증가해주는거고 

인터럽트가 걸리면 캐치문에서 원래 value초기값을 주고 끝내버린다. 



마지막으로 메인함수에서 내가만든 프레임을 실행한다고 new! 해주면 메인에서 돌아간다

메인에서 countingcontrolframe()을 실행시키면 아까 위에서 내가 만든 함수를 타고 생성된다..

겉껍데기 만들고 안에 돌아가는거 해주고 저 맨위에 그림을 보면서 전반적으로 구조를 판단하기.. 


실행하면 마우스 클릭시 실행되면서 숫자가 점점 올라가고 다시 클릭하면 0으로 초기화된다. 


:
Posted by Gongdile
2018. 4. 19. 16:51

[지식]스터디톡 내용 정리 스터디 /4. Java & Web2018. 4. 19. 16:51

같이 스터디를하는 개발자분께 질문드렸던 내용인데 도움이 많이되어 정리..

저에게는 도움이 되어서 정리했는데 도움됬으면 좋겠습니다. ㅎㅎ  

 

 

1.프로젝트를 6개월 단위나 단위로 작업하게되면

관련된거를 다 문서화하는가?

 

--> 산출물이 있기는하나 거의 막판에 같이 작성한다.

그때 그때 산출물 작성이 좋기는 하지만

(개발이 바빠서 산출물 챙기기는 힘들다)

 

산출물은 개인거는 아니고 프로그램 개발시 제출해야한다.

(개발이 중요하지 크게 신경쓰지 않아도 된다)

 

2.프로젝트시 신입이 가지고있어야할 최소역량이 어떤거라고 생각하시냐

 

-->습득력이라고 생각한다.

    하나를 알려줬을때 자기거를 만드는 능력.

    그리고 그런걸 종합적으로 생각하고 응용할 수 있는 능력

 

처음에는 다 모르니까 / 그렇다고 또 하나하나 100%찝어서 알려줄수도 없기에

 

==>어느정도는 자신이 해결해 가면서 묻고

생각하면서 자기것을 만들어가는 능력이 중요하다고 본다.

 

 

3.대부분의 업무 프로그램은 프로그램적인 큰 기술은 없다

특이한 경우를 제외하고는

데이터 조회, 입력, 수정 , 삭제가 대부분이다.

 

==>항목이 다르지만 행해지는 로직은 다 비슷하다.

 

실무로 들어가게되면 SI의경우 개발 초기에 표준을 다 잡는다.

-->나머지 개발자들은 그 표준에 의해서 개발한다.

-->그래야 생산성이 커지니까.

 

4. 어제 user 생성시 오류났던부분 테이블스페이스 먼저 만들고

유저 생성해야하는데 만들지 않고 유저 먼저 생성해서

오류가 난거같다.

 

-->그래서 어제 디폴트 제거했을대는 쿼리문이 실행된 이유가

유저만들어서 비밀번호랑 아이디 지정해서 만들었는데

테이블 스페이스를 안만들어놔서 디폴트를 제거한 상태로

쿼리문을 실행해서 완료된거냐?

 

-> 그렇다. 기본테이블스페이스로 지정된다 .

 

6.decode함수를 사용해서 쿼리문 보여주신적이있는데

그때 굳이 줄일필요가 없다고 말씀주셨는데 그렇다면

언제 쿼리를 수정하나?

 

-> 새로운 화면이 생겨나면 새로짜고  기존에서 항목이 변경되거나 어떤 내용을 더 보고싶을때 수정한다.

 

----> 내가 디코드 이 질문을 전에  왜했나? 디코드 함수가 나열되어있는데 비슷하고 0 ~9이렇게 번호만 연속적으로

늘어나길래  저부분을 좀쿼리를 줄일수없나 하고 질문했었던 내용이였다.

(아래 7번과 이어지는 내용)

 

7.쿼리문은 길고 짧은게 문제가 아니다. 결과의 속도다.

-->쿼리문이 길다고 속도차가 나는게 아니라. 쿼리 구성을 어떻게 하느냐가 관권이다.

 

 ex)) 10,000개의 데이터와 50,000개의 데이터를 조인할 경우에 그냥 조인했을 경우와,

조건에 따라 10,000개를 100개로 줄이고

100개와 50,000개를 조인했을때 어느게 더 빠를까 그런 문제다.

 

-->조인 방법이나 순서를 최적화하라는 말씀이시냐  -->!그렇다 그게 관권이다.

 

==>오라클의 생리를 알고 인덱스를 태우고..등등 인덱스를 태우고 안태우냐에 따라 속도는 상상이 안간다.

 

많은거에서 적은거 조인하는게 나은지

적은거에서 많은거 조인하는게 나은지

 

몇개의 규칙만 알면 쿼리결과에 문제가 없다고 본다.

 

-->오라클의 생리를 알고 sql튜닝 관련해서 생각을 많이 해보고 활용을 해야군요!

 

==>우선 기본만 정확히 알면 튜닝까지 안가도 된다고 본다.

튜닝까지 가야 할 데이터면 통계 테이블이나 집계 테이블을 만들어서 하는게 더 효율적이다.

 

ex))예를들어 방문자 보는 테이블이 있을때 하루에 10,000명 정도 들어오는데

월 방문자를 새로면 310,000정도 카운트 되지만.

 

일 배치로 12시가 지나면 그날 방문한 사람 수 총합을 저장해 놓으면

31개를 카운트만 해도 월방문자를 알 수 있다.

 

1년방문자를 구하려면 --> 일방문사 x 월 x 12

 

-->작업단위로 묶어서  연속적으로 일괄처리해서 이용하면 효율적으로 쓸수있다 이런 내용이신가! ->그렇다.

 

 

예를들어 3년간 방문자 추이를 보고 싶다 하는데

 

로우데이터(하루하루방문자 SUM)해서 1년 방문자 숫자 파악하면..아무래도 비효율적이다.

 

그래서 사실 예전에 트리거라는것을 썻다.

방문자가 방문했을시 데이터 1개가 들어가면 -->월통계 테이블은 해당월에 +1되도록 자동으로!

 

 

==>근데 이런 부분은 실무를 하다보면 자동적으로 느끼고 배운다.

 

예를들어 휴대폰요금이나 이런거 산정하는거를 건건히 데이터화해서 사용하고 이러는데

결과를 보려면 3일이 걸렸는데--> 오라클튜닝업체에서 30초만에 결과가 나오도록 쿼리변경

(물론 집계테이블도 만들어서 배치도 돌리고 했을거다.) 

 

-->현재 저의 수준은 기사나 쿼리책에 나오는 기본쿼리문정도를 사용할줄알고 기억하고있다.

     DB공부시에 같이 나가는 책 목록에 있는 기본 사용법에 대해 잘 숙지하고 사용할 수 있을정도로

     공부방향을 설정하려고한다.

 

==>우선 기본적인 공부만하면 실제 능력은 실무에서 클꺼다.

공부에는 한계가 있다. 공부로서 이해안가는 부분이

실무에 가면 왜 이렇게 해야하는지 알 수 있기 때문에

책에서는 이론적인데  실무에서 이론적으로 안되는 경우가 대부분이라고 보면 된다.

 

이론적으로 10개중 7개는 맞는데 3개는 틀릴 수 있다.

그 3개는 응용해서 만들어야 하는데

그런걸 해결하느 센스가 필요하다.

(책에는 어느정도 한계가 있다.)

 

케이스 바이 케이스다.. 책에는 이렇게 되어있지만 경우에 따라 그렇게 안할 경우도 있기때문에.

 

경험을 많이해서 많이 아는게 좋다.

 

 

8.설계 관점에 대해..

 

내가 주무를 수 있다기 보단

고객 입장에 맞는 시스템을 전문가이 내가 어떻게 만들어 줄 수 있는가에 초점을 두면 된다.

 

고객이 니드하는바 -->캐치-->그에 합당한 프로그램을 만들기.

 

프로그램을 잘짯다고 잘짠게 아니라.

 

그 고객이 오오오오오! 제가 원한 프로그램이 이겁니다! 하는게 최고의 설계다 .

 

 

 

 

 

 

 

 

 

                             

'스터디 > 4. Java & Web' 카테고리의 다른 글

2.자바 코딩 실습 & 데이터베이스 실습  (0) 2018.04.21
스터디 시작 2018.04.07~  (0) 2018.04.18
:
Posted by Gongdile