2019년 12월 9일 월요일

★★★★★알아야할것


  • 민감정보는 암호화 하여 내려줘야 이슈가 안생긴다.
    • 민감정보 : 서버에서 내려오는 정보들.
  • Hash함수는 복호화가 안됨. 세션에 값을 넣어놓고 서버에서 hash화 한 값을 대조하는 방법이 있음.
  • 개발할때 기존의 소스를 수정해야 하는 경우 정리를 끝내지 않고 커밋하면 같이 개발하는 사람들이 쓸대없는 코드를 읽으며 에너지 낭비를 하게된다.
    • 주석을 달아서 내용을 알린다
    • 판단이 스지 않는경우 선배에게 물어보고 진행한다.
  • 개발할때 ABC순서로 개발을 했다면 그 구조를 맞춰주는 것이 좋다.
  • 배치는 따로 두는 곳도 있기 때문에 분리하기 쉽게 구조를 따로 맞추는것이 좋다.
  • 배치시 2원화 되어있는 곳에서 동시에 진행되지 않게 하나가 실행되면 다른 하나는 스킵하게 처리를 해줘야 한다.  
  • 배치시 배치파일을 분리하게 되더라도 해당 배치만 진행되는 그룹에 설정이 있을 수 있기 때문에 굳이 설정을 분리할 필요 없음. 나중에 배치만 진행되는 그룹에 설정에 현재 프로젝트에 관한 설정을 추가해주면 됨.



2019년 3월 24일 일요일

web program에서 Java JSP JQuery의 역할

web program에서 Java JSP JQuery의 역할(https://blog.naver.com/013318/221123297358)


1. mvc2모델

JAVA : Bean생성, Model단 및 Controller단에 DAO, DTO, servise(비지니스단 : 컨트롤러에서 DAO외 동작)
JSP : 요청받는 페이지나 View단의 서버에서 실행되어 결과를 보여주는 역할
JQuery : 클라이언트단에서 컴파일 하지 않고 바로 처리해서 보여주는 역할


2. mvc1모델

JAVA : DAO, DTO 등
JSP : 서버에서 실행되어 결과를 보여주는 역할.
JQuery : 클라이언트단에서 바로 처리해서 보여주는 역할



이미지 참고 : http://blog.naver.com/kksssii/220805270268



web program :
웹 프로그래밍은 웹 컨텐트, 웹 클라이언트 및 서버 스크립팅 및 네트워크 보안을 포함하는 웹 개발에 관련된 작성, 마크 업 및 코딩을 말합니다. 웹 프로그래밍에 사용되는 가장 일반적인 언어는 XML, HTML, JavaScript, Perl 5 및 PHP입니다. 웹 프로그래밍은 프로그래밍과는 다르며, 응용 분야, 클라이언트 및 서버 스크립팅 및 데이터베이스 기술에 대한 학제 적 지식이 필요합니다.
(https://www.techopedia.com/definition/23898/web-programming)



JSP :  자바 서버 페이지(Java Server Pages)
HTML내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에 돌려주는 언어이다. Java EE 스펙 중 일부로 웹 애플리케이션 서버에서 동작한다.
자바 서버 페이지는 실행시에는 자바 서블릿으로 변환된 후 실행되므로 서블릿과 거의 유사하다고 볼 수 있다. 하지만, 서블릿과는 달리 HTML 표준에 따라 작성되므로 웹 디자인하기에 편리하다.
동작구조 : 클라이언트에서 서비스가 요청되면, JSP의 실행을 요구하고, JSP는 웹 애플리케이션 서버의 서블릿 컨테이너에서 서블릿 원시코드로 변환된다. 그 후에 서블릿 원시코드는 바로 컴파일된 후 실행되어 결과를 HTML 형태로 클라이언트에 돌려준다.
(https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94%EC%84%9C%EB%B2%84_%ED%8E%98%EC%9D%B4%EC%A7%80)



JQuery ( 제이쿼리 ) :
HTML의 클라이언트 사이드 조작을 단순화 하도록 설계된 크로스 플랫폼의 자바스크립트 라이브러리다.
(자바스크립트 : 자바스크립트는 정적인 HTML 문서와 달리 동적인 화면을 웹페이지에 구현하기 위해 사용하는 스크립트 언어다.)
사용법 : jQuery는 한 개의 JavaScript 파일로 존재한다. 공통의 DOM, 이벤트, 특수 효과, Ajax 함수를 포함한다. 다음 코드를 쓰면, 웹 페이지로 포함시킬 수 있다.
(https://ko.wikipedia.org/wiki/JQuery)

배열과 컬렉션

배열과 컬렉션의 공통점
- 변수를 여러개 선언할 필요 없이 한 변수명으로 여러 저장공간을 선언 할 수 있다.

배열과 컬렉션의 차이점
- 배열은 처음에 크기를 지정해주면 그 크기로 고정,
컬렉션은 크기를 미리 정해줄 필요 없다.
- 배열은 한가지 타입만 담을 수 있고,
컬렉션에는 타입을 다르게 담을 수 있다.
(<> general에 타입을 넣어주면 한가지 타입만 쓸 수 있다.)


2019년 3월 21일 목요일

자바의 메모리구조

1. Static Area ( == Method Area, Class Area ) :
클래스파일을 읽어서 클래스에 대한 정보를 이곳에 저장
인스턴스변수, 클래스변수, 메소드 코드 등이 저장
import되는 내용들이 저장됨

2. Heap Area(힙영역) :
인스턴스가 생성되는 공간
new연산자로 생성된 객체와 배열을 저장하는 공간
Garbage Collector가 참조되지 않는 메모리를 확인하고 제거하는 영역
힙 영역의 참조값을 스택 영역의 객체가 갖고 있음

3. Stack Area(스택영역) :
메소드가 호출될 때 스택구조로 메모리가 할당되는 공간
기본자료형에 해당되는 지역변수 및 매개변수의 데이터 값 저장
참조형에 해당되는 변수에는 주소값만 들어있고, 해당 주소는 힙 영역의 공간의 주소값을 가지고 있음.
LIFO(Last In First Out)의 구조

참조 : https://tenlie10.tistory.com/128

멤버변수, 지역변수, 매개변수

전역변수(==필드, 멤버변수, 글로벌변수) :
클래스 영역에서 사용되는 변수
  -클래스변수 : 공통적 특성, static
  -인스턴스변수 : 개별적 특성

지역변수(==로컬변수) :
메소드나 생성자 내부에서 사용되는 변수

매개변수 ( Parameter ) :
함수 등에서 사용되는 전달된 값을 받는 변수
  -인수와의 차이점
   인수는 전달되는 값을 말하고,
   매개변수는 값을 담아놓는 변수를 의미하지만 실용적으론 중요하지 않음

JAVA와 C언어의 차이점

http://todayhumor.com/?humorbest_928296 (원본)



1. 성능차이
이론적으로는 C언어 프로그램의 성능이 압도적으로 높다.
JAVA의 경우 JVM에 의한 해독과정이 한단계 더 필요하기 때문에 2배 그 이상의 연산을 소요함.


2. 이식성
이식성이란, 어떤 한 플랫폼에서 작성된 프로그램이 다른 플랫폼에서 잘 동작할 수 있는지를 의미함.

C에서의 이식성 : 크로스 컴파일을 하면, 다른 플랫폼에서 동작할 수 있다는 의미
JAVA에서의 이식성 : 한번 컴파일을 해놓으면 VM이 돌아가고 있는 어떤 플랫폼에서도 동작이 가능하다는 의미

JAVA로 짜여진 안드로이드 앱은 다운받으면 곧바로 동작이 가능. 모바일은 다양한 종류의 cpu가 존재하고, 각 cpu마다 쓰는 기계어가 달라 그에 맞게 컴파일된 프로그램만 동작이 가능하지만, JAVA는 어떤 플랫폼에서도 동작이 가능하기 때문에 다양한 종류의 스마트 폰이나 플랫폼에서 동작하는 앱을 만들어 배포할 수 있음.


3. 생산성
생산성이란, 같은 기능을 하는 프로그램을 작성하는데에 개발자가 얼마나 적은 노력을 들일 수 있는가를 의미함.
응용프로그램(웹 / 앱)을 개발 할 때의 생산성은 JAVA가 C를 압도함.

+
4. 학습 용이성
기본 문법 자체는 C가 더 간단함.(변수, 배열, 함수, 반복, 조건, 구조체)
JAVA는 C의 문법 + 객체지향 문법(상속, 포함, 추상클래스, 가상함수, 권한, 생성/소멸자 등)

C의 포인터는 컴퓨터의 구조와 운영체제(특히 메모리)에 대한 전반적인 이해가 필요하여 인간과 다른 사고방식에 익숙해지기가 어려워서 어렵다고 얘기함.

JAVA는 객체지향 언어로, 많은 기능들이 클래스로 캡슐화된 라이브러리로 제공되기때문에 자바에 처음 입문하는 사람은 제공되는 기능만 잘 찾아써도 원하는 프로그램을 작성할 수 있어 JAVA를 더 쉬운 언어로 느낄 수 도 있다.

두 언어 모두 깊숙히 들어가면, 매우 방대한 양의 지식과 오랜 시간의 연습과 경험을 필요로 함.