자바프로젝트 이어서(34-a부터 쭉 연습하기)
C/S Application(Program)
Client / Server => c/s
서버는 클라이언트의 반응이 일정시간 없으면 자동으로 연결을 해제한다 -> 자동로그아웃되는게 이런 원리
서버에서 메모리관리는 메우 중요하다.
—- stateful —-
스레드 적용
파일 입출력은 정말 중요하다. 10만줄 코딩하면 7만줄이 파일입출력임
이걸 간결하게 해준 것이 File DB였다. 하지만 FileDb를 써도 한계에 부딪쳤다.
책 추천 : 유닉스의 탄생
시작은 SI로 가는것이 좋은게 바로 프론트/백을 모두 경험한 다음 내 분야를 특화시킬 수 있는 곳으로 이직하는게 좋다,
명령어를 작성한것 : 로직
제품의 생성과 소멸(life cycle)이 많다는 것은 조직 부서의 구성이 빠르게 바뀐다는 뜻 => 비즈니스 프로세스의 잦은 변경, 경쟁심화, 시스템의 잦은 변경
static 멤버는 오로지 같은 static멤버만 사용할수있다.(main은 static임)
예외를 던지기로 결심했으면 메소드 호출쪽에서 예외를 처리해줘야함. 메소드 자체에서 예외처리를 해줘도 된다. 예외처리 방법은 상황에 따라 main에서 처리하던가, 메소드에서 처리하던가 방법이 여러가지임.
java -Dfile.encoding=UTF-8 -cp bin/main …..으로 해줘야함(window의 경우 ms949라서.)
스레드 프로그래밍에서 예외처리할때 메인메소드에서 처리해버리면 스레드는 메인메소드와 별개로 실행되기 때문에 스레드에서 발생된 예외가 처리되지 못한다. 그래서 스레드 프로그래밍의 예외처리는 메소드에서 처리해주는 것이 좋다.
인스턴스 필드를 사용하지 않는 메서드는 스태틱으로 만들수있지만, 객체지향 관점에서 static을 사용하는건 좋지않다. 그래서 보통 인스턴스로 선언한다. 단, 머릿속에 static을 선언해야하지만 확장성을 고려한다는 점은 기억해두고 있어야 한다.
인터페이스는 생성자가 없다. 그래서 익명클래스에 인터페이스에 붙는 생성자 파라미터는 Object의 생성자이다.
로컬클래스는 바깥클래스의 멤버에 접근할 수 있다. 그 규칙에 따라 만든거 -> 현재 자바프로젝트 람다문법을 만들어가면 이해할수있겠는데 처음부터 남이 짠 소스코드에 람다가 있으면 이해하기 힘들 것 같다.. 복습하자 열심히!
서버는 무한으로 돌지만 특정 클라이언트가 서버를 종료시키는 명령어를 내리게 해야한다.(mariadb도 같은 원리. 실무도 똑같다.)
MySql은 오픈소스였는데 Sunsystems에서 샀다. 근데 그걸 Oracle에서 샀다. Oracle은 소프트웨어를 돈주고 사야한다는 사람이라 유료됐다.
모든 프로그램을 서버에서 돌리면 User Pc가 굳이 좋을 필요가 없다.(Thin Client)