일단 씻고 나가자

23.03.06 본문

Study/닥치는 대로 주워 담기

23.03.06

일단 씻고 나가자 2023. 3. 13. 19:43

2023. 03. 06 월요일
 
- [Java] 콘솔 입력받는 방법 4가지?
1. System.in.read(); System.in.read(new byte[System.in.available()]);
// 한 글자만 읽음. int로 받으려면 뒤에 -‘0’을 붙여줘야 함.
// 엔터키를 쳐서 입력을 하는데, 이 방법은 엔터키가 잔류하므로 쓰지 않는다면 이후의 입력 코드에 영향이 간다. 따라서 뒤의 코드로 엔터를 소진시켜야 함.
 
2. InputStreamReader reader = new InputStreamReader(System.in);
reader.read(char[])
// 여러 문자를 받아올 수 있지만 배열에 담아야 한다. 따라서 매개변수로 배열 입력. 배열 개수만큼 단어를 받는다.
 
3. BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String Svar = reader.readLine();
// 받는 내용의 크기에 상관 없이 모두 받을 수 있음.
// BufferedReader 매개변수를 FileReader(“파일 경로”) 로 대체할 수 있음
 
4. Scanenr scanner = new Scanner(System.in);
scanner. next(); nextLine(); nextInt(); 등등
// next와 nextLine은 둘 다 string을 받는 방법이고, 전자는 띄어쓰기를 기준으로 개별 변수를 판단하고, 후자는 띄어쓰기를 포함한 엔터 이전까지의 모든 문자를 하나로 받는다.
 
 
- [Java] String과 Integer을 서로 변환하는 방법?
: Integer.parseInt(String); Integer.toString(Integer);
String에는 parseInt와 toString이 존재하지 않는다.
 
 
- [Java] 파일 생성 및 입력 방법? 생성된 파일에 이어 쓰는 방법?
: FileWriter writer = new FileWriter(“파일 제목”);
writer.write(String 적을 내용);
writer.close();
 
FileWriter의 write 부분에서 줄바꿈은 \n을 뒤에 붙여주어 쓴다.
PrintWriter도 같이 만드는데, 다만 println(String 적을 내용)을 통해서 줄바꿈을 자동으로 해줄 수 있다.
 
이어 쓰는 방법은 FileWriter writer2 = new FileWriter(“같은 제목”, true);
PrintWriter은 객체 생성 시에 매개변수로 윗줄의 FileWriter 내용을 적어줘야 한다.


- [Java] 파일 읽기 방법?
: BufferedReader reader = new BufferedReader(FileReader(“파일 이름 및 경로”));
while(true) { String str = reader.readLine(); if(str == null) break; }
 
 
- [Java] 예외의 대표적인 3종류와 방법? 예외 처리 2 방법과 설명?
: 0으로 나누기/ 배열의 인덱스 초과/ 없는 파일 열기
 
try{ 예외 발생할 수도 있는 코드 } catch(Exception e) { 발생 시 실행 코드 } finally { 무조건 실행 }
함수() { throw 실행 될 예외(강제 실행); } / 함수() throws Exception { .. }
 
throws는 현재 함수에서 발생할 예외를 실행될 함수로 던진다는 뜻. 만약 main에서 f1()을 실행하는데 f1() throws MyException {..} 한다면 f1에서 발생할 예외가 main에서 일어난다는 뜻이고, 따라서 main에서 try catch로 잡아주어야 한다.
 
throw는 개발자의 판단으로 예외를 강제 발생시키는 것이고, throws는 상위 함수에게 예외를 미루는 것이다. throws 뒤의 클래스 명은 해당 메서드가 해당 클래스의 예외를 발생할 수도 있다는 뜻의 명시를 도와준다.
https://bvc12.tistory.com/196
 
 
- 패리티 비트와 해밍코드란?
: 패리티 비트란 컴퓨터가 데이터를 전송할 때 마지막 비트에 0 또는 1을 붙여줌으로써 해당 데이터가 온전히 전달된 건지 판별할 수 있게 해주는 비트이다. (정보 전달 과정 중 오류를 판단하기 위해 추가하는 비트. 전송하고자 하는 데이터의 각 문자에 1 비트를 더하여 전송.)
인코딩 중에 설정한다.
 
짝수와 홀수가 있으며, 1의 개수를 짝수에 맞추려면 짝수 패리티, 홀수에 맞추려면 홀수 패리티이다. (ex. 1000000 의 데이터가 짝수 패리티라면 1의 개수가 홀수이므로 뒤에 1을 붙임.)
 
해밍코드란 오류만을 검사하고 수정할 수 없는 패리티 비트의 한계를 보완하기 위해, 패리티 비트를 여러 개 추가하여 역연산으로 오류의 위치를 알아낼 수 있게 고안된 코드이다. 디코딩 중에 활용한다.
 
해밍코드의 방식은 자릿수로 따지는데, n번째 숫자는 자기 자신부터 n번째까지의 숫자를 적고, 다시 n번을 건너뛴 뒤 다시 n개를 세는 방법으로 검출한다. (ex. 1번째 자리는 1, 3, 5, 7 / 2번째 자리는 2, 3, 6, 7) 이런 방식으로 1의 개수를 세어 짝수 패리티라면 1의 개수가 짝수인지 검출하고 올바르면 0, 틀리면 1을 적고, 나온 숫자들을 1번째 자리부터 센 역순으로 적은 후, 10진법으로 바꾸면 해당 숫자의 자릿수가 틀렸다는 뜻이므로 해당 자리의 수를 반대로 바꾸면 된다.
https://www.youtube.com/watch?v=Dt5il7aE5rE
 
 
- API 방식이란? Spring에서 구현하는 코드와 설명? MVC와의 코드 차이? 스프링부트 동작?
: JSON 방식으로 데이터를 활용할 수 있게 하는 장점을 가진 방식.
 
@ResponseBody 태그를 활용한다. 태그의 의미는 html의 body 부분에 해당 내용을 직접 적겠다는 뜻. html 태그를 통해 템플릿을 통해 조작하여 넘겨주는 것이 아닌, 데이터를 바로 내려버린다. (View가 없음.)
 
@GetMapping(“hello-spring”) // url에서 서버/hello-spring의 카테고리에 들어감.
@ResponseBody   // API 방식으로 View를 거치지 않고 바로 입력하겠다.
public String helloSpring(@RequestParam(”key“) String value) {
// url에서 서버/hello-spring 이후 ? key=value로 입력했을 때의 값을 저장.
return “hello” + name;
  // View 과정을 거치지 않고 value값과 합쳐진 문자열을 보인다.
}
 

 
MVC와 다른 점은 MVC는 key에 대한 value를 받고 그것을 model에 저장하여
return되는 “hello-template”이라는 파일명을 찾아 해당 이름의 html 파일에 적용하여 보인다면 API는 그런 과정 없이 return값을 그대로 보인다는 점이다.
 

 
MCV와 다르게, @ResponseBody 태그를 보는 순간 viewResolver에게 보내는 것이 아니라 http 데이터에 직접 데이터를 넘겨야 하겠구나 하고 HTTPMessageConverter에게 넘긴다. (메세지 컨버터는 xml, JSON 두 가지를 HTTP Accept 헤더에 맞게 변환하여 보낸다.) 단순한 문자열이라면 StringConverter에게 넘기고 객체라면 JSONConverter에게 넘기는데, JSNON 형식으로 요청한 곳에 그대로 보내준다. 이때 객체를 JSON 형태로 바꿔주는 것은 기본적으로 JACKSON API를 사용한다.
 
 
- API 방식으로 객체를 넘길 때의 코드? 문자열만 넘길 때와의 차이?
: 사진과 같이 JSON의 형식으로 출력된다.
 

 
- JSON이란? xml이란? 둘의 차이는?
: JSON이란 Javascript에서 객체 형식을 기반으로 만들어졌으며, 텍스트 형식일 뿐이고 특정 언어에 종속되지 않음. 대부분의 언어에서 JSON 포맷의 데이터를 핸들링 할 수 있는 라이브러리를 제공한다. xml은 태그를 이용한 방식. 역시 데이터를 설명하는 내용을 마크업에 담아 데이터를 전송한다. 단 마크업언어(html)가 아니고 단지 마크업언어를 정의하기 위한 언어이다.
 
html 방식이 xml 방식이며 (태그를 활용하여 코딩) xml은 무겁고 태그를 열고 닫고 두 번 쓰기 때문에 최근에는 거의 JSON으로 통일됨. (거의 디폴트가 JSON으로 돼 있음.)
https://velog.io/@surim014/JSON%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
https://mommoo.tistory.com/17
 
 
- 자바 빈 (JavaBean) 규약이란? 내용은?

https://pjh3749.tistory.com/75

 

'Study > 닥치는 대로 주워 담기' 카테고리의 다른 글

23.03.08  (0) 2023.03.13
23.03.07  (0) 2023.03.13
23.03.03  (0) 2023.03.13
23.03.02  (0) 2023.03.13
23.02.16  (0) 2023.03.13