멀티캠퍼스 JAVA 백엔드 부트캠프/정리

멀티캠퍼스 백엔드 개발자 취업캠프(Java) 입과 12주차 정리

5ein 2023. 4. 24. 00:29

2023.04.17

아스키코드에서 다른 것은 몰라도 대문자와 소문자는 32 차이가 난다는 것은 알아두기 (대문자 + 32 하면 소문자가 나옴)

아스키 코드

팀플 회의에서 주제 확정 + 메뉴 논의 + 역할 정의를 했다.

 

그외에도 코딩테스트 문제를 몇 개 풀고, 문자열 정리 문제를내주셨다.

문제를 정하여 그것을 풀고 순서도까지 그려보는것이 미션이었다.

내가그린 순서도

Sort, reverse, frequency 정도는 알고 있으면 편하다고하셨다.

 

코테문제중에서 한 번만 등장한 문자 라는 문제가 너무 어렵더라... 이중 for문으로 풀면 시간복잡도 때문에  틀렸다고 나온다고 한다.. 2단계 초반 정도의 난이도라는데.. 나두 언젠가 쉽게 그문제를 풀수 있는 날이 오겠지!!?

윗단계로 올라갈수로 for문을 줄이는 방향으로 풀도록해야 한다고 하셨다.


2023.04.18

 for문이 어렵다고 느껴지면 이전에 배웠던 자바 기초 피피티를 참고해서 다시 공부해보면 좋다고 하셨다!

코테 문제 몇가지를 풀고, 팀플 회의를 했다.

어제에 이어 메뉴를 최종 결정하고 메뉴별 담당자를 정하고, 세부구현(기능중심) + 화면(대략, 옵션)부분에 대해 회의했다.

나는 회원관리를 맡기로 했다..  회원가입과, 로그인, 그리고 마이페이지, 회원정보 수정 기능, 탈퇴 기능을 구현할것 같다.

강사님께서 내가 하는것은 세션 사용하는것이 중요할것 같다고 하셨다.

내가 맡은 회원관리는 너무 수업시간에 배운것만 하는것 같아 걱정된다고 말하니 강사님께서 최종프로젝트에는 소셜로그인 기능과, 관리자모드, 사이트 통계치(구글API 이용) 사이트분석 라이브러리, 마케팅적인 부분을 추가하면 좋을것 같다고 하셨다.

그후 각팀마다 챗봇도 꼭 구현하였으면 좋겠다고 말씀하셨다.

 

이후 나는 보조강사님께서 강의하는 기초를 들었다. 잘모르고 넘어간 부분을 확실히 할수 있는 시간이었다.

결합도와 응집도는 말만 들으면 비슷한것 같아 헷갈렸었는데! 이번에 확실히 알 수 있게 되었다.

  • 결합도: 갈아끼우기 쉬운것이 결합도가 낮은 것 이다. (결합도가 낮은것이 좋다)

결합도 에시

  • 응집도: 하나의 하나의 기능을 하는 : 한가지 일만 하는것이 응집도가 뛰어나다 .(응집도가 높은것이 좋다) 
    • 예로 계산기는 계산기의 기능만 하면 되는데 다른기능이 추가되면 느려지고 그렇기 때문에 좋지 않다.

응집도 예시

  • 따라서 응집도는 높고, 결합도 낮은 것이 활용도가 좋다!!

 

  • MVC: Model View Controller

 

  • 객체와 인스턴스
    • 아래 그림에서  Board는 board_1의 객체이다.
    • board_1은 Board의 인스턴스이다.

객체와 인스턴스 예시

  • 배열 대신 Arraylist 를 쓰는 이유!!
    • 가장 큰 이유는 배열의 크기를 동적으로 할당 할 수 있다는 점이다!
  • 메서드: 아래그림에서 clac_add를 메서드라고 한다 : return이 있어야 실행된다.(여기서 return int str_1 넣어서 syso 출력해주는 것)

메서드 예시

  • 상속 >>> extends >>> 클래스를 상속받음 (클래스가 구현되어 있는애를 상속 받는 것)
  • 임플먼츠 >>> implements >> 클래스가 아니라 인터페이스를 상속받음.

일반적인 상속 extends 받으면 이미 구현된 클래스를 상속받는 이기 때문에

클래스 안에서 구현된 메서드를 바로 사용할 있음

implements 그게 아니라 인터페이스 안에 명시된 메서드를 구현해야 사용할 있음

extends 클래스 상속(확장). 클래스 개만 가능

implement  / interface 구현하는데 사용. 여러개 사용가능

 

  • forEach

반복문 내에서 배열이나 리스트 값을 변경 추가 없다!

배열을 역순으로 탐색할 없다!

하지만 수행속도가 빠르고 간결하다!

 

수업 마치고 보조강사님 기초강의 듣는동안 듣지못한 강사님 강의를 들었다.

  • Stack 개념
    • 스택은 데이터를 일시적으로 쌓아 놓는 자료구조
    • 데이터의 입력과 출력 순서는 후입선출 이다.
    • 즉, 가장 나중에 넣은 데이터를 가장 먼저 꺼낸다.
    • 스택에서 데이터를 넣는 작업을 '푸시'라고 하고, 데이터를 꺼내는 작업을 '팝'이라고 한다.

스택의 주요 메서드

  • Queue 개념
    • 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 선입선출 구조
    • 큐에서 데이터를 넣는 작업을 '인큐'라고 하고, 데이터를 꺼내는 작업을 '디큐'라고 한다.
    • 데이터가 나오는 쪽을 '프런트'라고 하고 데이터를 넣는 쪽을 '리어'라고 한다.

큐의 주요 메서드


2023.04.19 

스택과 큐에 개념에 대해 복습했다.

 

그후 코테 문제를 몇개 풀었다.

 

팀플 회의를 했다.

- 메뉴확정 + 역할분담 ==> 메뉴별 세부항목들 + 흐름(그림) ==> draw.io

- 화면 설계 ==> kakao.oven

- ==> 조별 전체 화면구성 --> 논의를 하신 , 개인작업 시작

 

스프링 마이바티스 설정 다시 해보기!!

흐름 보기


2023.04.20

db컬럼명이랑 vo변수랑 다르면 이렇게 하나씩 resultMap에 적어주어야함

db컬럼명이랑 vo변수랑 다르면 위 사진처 하나씩 resultMap 적어주어야함

 

delete 흐름

jsp에서 삭제 요청하면 controller 가서 가방 또는 스트링에 넣어서 DAO 간뒤  mapper 가서 그것에 있는 행동을한뒤 views아래있는 파일을 실행시켜줌

 

update도 하고 one도 함!

one 흐름

 

dao에서 vo 가져온 것을 넣고 vo 리턴 해서 controller 보내주면 controller에서 model 이용해서 속성으로 지정하고 one.jsp 보내주어 one.jsp에서 EL형식 ${} 으로 사용 있다.

 

list도 했다.

list 흐름

 

팀원 회의

 

마지막 시간에는 챗봇 동작방식에대하 조금 배웠다.


2023.04.21

웹소캣을 사용하려면 resourses 밑에 js 웹소캣 라이브러리를 넣어줘야

 

서버에 들어온사람들 채팅할때 http long pooling 을 함.

http pooling  VS  http long pooling

 

팀플 회의

챗봇 프로그램 - 조별 시나리오 + 구현(조별 1) ==> 순서도 먼저 그리고, 구현(*)

네이버 open API 조별로 이상: 조별 의논해주세요!


2023.04.22~ 2023.04.23

주말에 이러닝 강의를 들었다. 강의가 생각보다 너무 많아서 들어도들어도 줄지가 않는다.

그리고 1배속으로 들으니 잠이 오는것 같아 1.5 배속으로 듣다보니 재생 시간을 맞추기위해서 한가으이를 2번씩 듣게된다. 확실히 2번보니 이해가 잘되는것도 있지만 .. 시간이 너무 오래걸린다..

그래도 깃허브 업로는 해야하기때문에 하루에 코테 0단계문제 10개 정도씩 풀어 깃허브에 올렸다!!

많이 하지는 않았지만 이렇게 천천히 풀어 나가는것이겠지?

프로그래머스 0단계에 새로운 문제들이 생긴것을 보았다.... 아 이문제 들까지만 하면 1단계로 넘어갈수 있어! 라고 생각했지만 시간이 조금더 늦춰질것 같다!! 그래도 다음주부터는 코딩테스트 스터디를 하기로 했다!! 열심히 해야지!

꾸준히 하다보면 나도 3단계 이상을 풀 날이 오겠지!!


3~3.5 단계 풀면 어려운 문제 풀수 있다고 본다 ... 그런데 코딩테스트를 통과하면 코드인터뷰? 이런것도 한다고 한다??!! 내가 왜 이렇게 코드를 짰는지를 물어본다고... 큰일!! 여기서 많이들 떨어진다고 하더라...

 

파견 si는 가지 않는것이 좋다고 하셨다. 면접은 많이가보면 (괜찮은 회사는 기술스택을 명쾌하게 써넣음, 그냥 자바~ 이런대는 파켠 si 가능성이 높음)

 

연봉 협상할때 급진적으로 하지말고 이렇게 제안해주신 감사합니다! 조금 생각해보고 답변드려도 될까요? 하고 다음날에 답하는게 좋다고 하셨다.

 

텍스트에다가 효과를 주고싶으면 span이라는 태그를 그냥 추가해서 css, 부트스트랩 같은거 연결하면된다고 하셨다.

버튼에 disabled="disabled" 한번클릭하면 클릭 못하게 할 수있음.