오늘은
오늘은 비가 하루종일 내려서 몸이 무거웠던 하루였습니다
내일까지 비가 온다고 하는데 건강 잘 챙겨야겠습니다
Java 수업
싱글 스레드
멀티 스레드
스레드 이름
메인스레드 - main
일반스레드 - thread-0 부터 시작
getName( )
-> setName("threadA) 이름 바꾸기 가능
스레드 생성 방법
1. 상속
Thread = Runnable 인터페이스의 구현 클래스
Runnable = 인터페이스 -> 추상메서드O -> run( )
class ChatThread extends Thread{
run( ){ }
}
Thread chatThread = new Thread()
2. 익명 객체 스레드 생성
Thread threadX = new Thread(){
run( )
}
데이터(파일) 입출력
- 메모리(주기억장치 - RAM) : System.out, System.in
- 하드디스크(보조기억장치 - HDD, SSD) : .txt, .db, .dat, .jpg
- 바이트 기반 쓰기, 읽기 = 이미지, 사운드, 영상, 문서 등
OutputStream -> FileOutputStream // InputStream -> FileInputstream
정수, 실수, 문자열, 객체 데이터 쓰기가 불가
문자 전송 - getBytes( )
- 문자기반 쓰기, 읽기 = 문서
Reader -> FileReader // Writer -> FilerWriter
기반스트림
보조스트림 (decorator)
- 성능(버퍼링 기능)향상, 데이터(문자열, 객체) 처리
Buffered 스트림
BufferedInputStream - 바이트 단위로 읽는 스트림 버퍼링 기능 제공
BufferedReader - 문자 단위로 읽는 스트림 버퍼링 기능 제공
BufferedOutputStream, BufferedWriter - 쓰기
- 내부적으로 8192바이트 크기의 배열을 가지고 있음 = 빠르게 입출력 수행
DataInputStream - 정수, 실수, 문자열 처리
DataOutputStream
객체 - 어느 시점에서 복사(직렬화-Serialization)
직렬화 = 현 상태를 그대로 저장하거나 네트워크를 통해서 전송하기 위해
연속 스트림(필드값을 일렬로 늘어선 바이트로 변경)으로 만드는 것
역직렬화 = 저장된 내용이나 전송받은 내용을 다시 복원하는 것
ObjectOutputStream - 객체 처리
ObjectInputStream
JavaScript 공부
<데이터 구조>
배열사이에서의 비교 = 메모리에서 참조되는 값
배열의 저장 = 참조값 저장 = 고유한 주소인 참조를 갖는 것
==, === 로 메모리의 참조를 확인하면 된다
배열 + const
const = 재할당 금지
const를 사용하여 배열 사용 가능
=> 변수 자체가 재할당 되는 것은 아니지만
배열의 콘텐츠를 변경할 수는 있다
새로운 참조는 불가능
= 참조를 바꾸거나 재할당할 수는 없지만
배열 안의 콘텐츠는 원하는 대로 바꿀 수 있다
중첩 배열
= 배열 안에 여러 배열이 중첩할 수 있음
객체
= 일종의 데이터 구조
여러 데이터 조각을 저장하게 해줌
=> 키, 값 또는 프로퍼티(두 개의 정보가 모인 것)를 이용하여 데이터 저장
순서가 따로 없다, 키와 값 쌍(레이블)으로 존재
-> 정보에 레이블을 지정 -> 이름 부여
-> 키를 이용하여 값을 불러올 수 있다
객체 리터럴 = 중괄호를 써서 만드는 키-값 쌍이 저장되는 데이터구조를 말한다
키 : 값 의 형식
코딩 테스트
Description
문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string의 뒤의 n글자로 이루어진 문자열을 return 하는 solution 함수를 작성해 주세요.
function solution(my_string, n) {
var answer = '';
answer = my_string.slice(-n);
return answer;
}
slice( ) = 배열의 일부를 복사 (시작점, 끝지점) 끝지점 바로 앞까지 잘라준다
= 시작점 포함O 끝지점 포함X
= 시작점 인덱스를 음수로 넣으면 배열의 끝에서부터 시작한다
Description
정수 n과 문자열 control이 주어집니다. control은 "w", "a", "s", "d"의 4개의 문자로 이루어져 있으며, control의 앞에서부터 순서대로 문자에 따라 n의 값을 바꿉니다.
"w" : n이 1 커집니다.
"s" : n이 1 작아집니다.
"d" : n이 10 커집니다.
"a" : n이 10 작아집니다.
위 규칙에 따라 n을 바꿨을 때 가장 마지막에 나오는 n의 값을 return 하는 solution 함수를 완성해 주세요.
function solution(n, control) {
for(var i = 0; i < control.length; i++){
if(control[i] == 'w'){
n += 1;
}else if(control[i] == 's'){
n -= 1;
}else if(control[i] == 'd'){
n += 10;
}else if(control[i] == 'a'){
n -= 10;
}
}
return n;
}
Description
정수가 담긴 리스트 num_list가 주어질 때, 리스트의 길이가 11 이상이면 리스트에 있는 모든 원소의 합을 10 이하이면 모든 원소의 곱을 return하도록 solution 함수를 완성해주세요.
function solution(num_list) {
var answer1 = 1;
var answer2 = 0;
// 리스트의 길이가 11 이상 -> 원소의 합
// 리스트의 길이가 10 이하 -> 원소의 곱
if(num_list.length <= 10){
for(var i = 0; i < num_list.length; i++){
answer1 *= num_list[i];
}return answer1;
}else if(10 < num_list.length){
for(var i = 0; i < num_list.length; i++){
answer2 += num_list[i];
}return answer2;
}
}
Description
알파벳으로 이루어진 문자열 myString이 주어집니다. 모든 알파벳을 대문자로 변환하여 return 하는 solution 함수를 완성해 주세요.
Description
알파벳으로 이루어진 문자열 myString이 주어집니다. 모든 알파벳을 소문자로 변환하여 return 하는 solution 함수를 완성해 주세요.
function solution(myString) {
var answer = '';
answer = myString.toUpperCase();
return answer;
}
function solution(myString) {
var answer = '';
answer = myString.toLowerCase();
return answer;
}
Description
'm'과 "rn"이 모양이 비슷하게 생긴 점을 활용해 문자열에 장난을 하려고 합니다. 문자열 rny_string이 주어질 때, rny_string의 모든 'm'을 "rn"으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주
function solution(rny_string) {
var answer = '';
answer = rny_string.replace(/m/g,"rn");
return answer;
}
2023. 09. 26 (화)
프로그래머 도전기 31일차 (0) | 2023.09.29 |
---|---|
프로그래머 도전기 30일차 (0) | 2023.09.28 |
프로그래머 도전기 28일차 (0) | 2023.09.26 |
프로그래머 도전기 27일차 (0) | 2023.09.25 |
프로그래머 도전기 26일차 (0) | 2023.09.24 |