풍성한 라벤더농장이 될때까지
article thumbnail

오늘 공부한 내용

☁️

[java Scanner, BufferedReader] merge 답변

https://lamong.tistory.com/7#


html

  • html 문서 내에 html 태그를 선택해 디자인하고 배치
  • <head>태그 내 <style>태그 작성 or <head>태그 내 .css링크

css선택자

  • 태그 선택자 p
  • 아이디 선택자 #center
  • 클래스 선택자 .center
  • 태그와 함께 쓰는 선택자 p.center
  • 그룹선택자 h1{}
  • 그룹선택자 중 하위 선택자 p span{}
  • 그룹선택자 중 전체 선택자 *
  • 클래스 이름과 아이디 이름은 숫자, 특수기호로 시작x
  • 단어중복, 띄어쓰기 등은 -, _로 구분

css 적용 우선순위

  • !Important Style
  • Inline Style
  • ID Selector Style
  • Class Selector Style
  • Tag Selector Style
  • 내부 > 외부

css 서식 관련 속성(기본 서식 스타일)속성value

font-size(텍스트 크기 지정) px, em, pt, %, rem
font-weight(글꼴 두께 지정) 100-900, blod, bloder, lighter, normal
line-weight(줄 간격 지정) px, em, pt, %, rem
font-family(글꼴 지정) ‘font name’
font-style(문자스타일) normal, itakic, oblique
color(글꼴 색 지정) color name, #000000, rgb(0,0,0), rgba(0,0,0,0.5)
text-decoration(텍스트 줄 표시/제거) none, underline, overline, line-through
text-transform(텍스트 대문자/소문자 변환) none, capitalize, uppercase, lowercase
text-align(문자 정렬방법 지정) center, left, right, justify
text-shadow(텍스트 그림자 효과) offset-x offset-y, blur-radius, color, none, initial, inherit

css 서식 관련 속성(목록 스타일)

  • list-style: ~~~;

  • list-style-image:url(아이콘 이미지 경로)
  • css 가상클래스 :before 이용해 원하는 기호 사용 가능(중요x)

html의 부모자식과 css의 자손자식

 


🫠(개인공부)

JAVA

[Escape Sequence]

 

선웅님 TIL을 보다가 떠올라서 다시 찾아보고 정리.

 

자바에서 역슬래시와 따옴표는 문자 그 자체만으로는 출력되지 않는 특수문자.

자바에서는 출력문에서 역슬래시가 등장하는 순간 그 바로 다음 문자를 인식해 상황에 맞게 처리하는데, 이를 이스케이프 시퀀스(Escape Sequence)라고 한다.

 

이스케이프 시퀀스에는 몇 가지 특수한 경우가 지정되어있고, 지정된 문자가 아닐 경우 에러가 표시

 

 

 

linux 상에서 Metacharacter 지정된 특수문자 일반 출력과 비슷한 느낌

$ echo "userid : \$USER"
userid : $USER

[3week - 섭씨화씨전환]

섭씨온도를 화씨온도로 변환

섭씨온도(실수값)입력받으시오

화씨온도를 계산해 출력하시오

 

import java.util.*;

public class ex03_9 {
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in); // scanner sc

		System.out.print("섭씨 온도: ");
        double Tc = sc.nextDouble(); // 실수값 입력, double
        double Tf = (9.0 / 5.0) * Tc + 32;

		System.out.println("화씨 온도: " + Tf);


	}

}


운영체제(기말대비)

간단히 요약하자면 프로세스의 충돌을 막기 위해 상호배제를 하는 여러가지 방법과 과정에 대해 공부중이고, 그중 하나인 mutex 부분입니다.

 

 

mutex

  • 상호배제를 하고 싶을 때 그 매커니즘이 필요하다 → mutex
  • unlocked or locked
  • Critical region 구현(m이 mutex 변수)
mutex_lock(m)
cr
mutex_unlock(m)
//process 0

mutex_lock(m)
cr
mutex_unlock(m)
//process 1

mutex locked → critical region enter → mutex unlocked 순

  • 동시에 여러 프로세스가 mutec_lock() 호출해도, 한개만 cr 입장
  • if process 0번에서 cr 들어가고 unlocked 안하게되면? → 계속 기다리게된다 unlock 할때까지…

Sleep and Wakeup (Producer - Consumer)

  • Busy wating 문제점
    • cpu time 소비
    • 우선순위 스케줄링 시 무한 대기
  • 두개의 프리미티브 제공(system calls)
    • sleep(호출한 프로세스가 block 상태로 되는 system call)
    • wakeup(다른 sleep 상태 프로세스 깨움)

buffer의 크기는 알 수 없다.

 

buffer가 다 차면 p는 일 할수 없음 → sleep

(버퍼를 다 채우고, 그 상태에서 또 채우려고 시도하는 그 순간에 sleep. 가득 찼다고 해서 바로 sleep하는것 아님)

 

c가 buffer에 쓰인 data를 1개라도 읽어가기 시작하면 p는 → wakeup

(consumer가 읽어가는 것이므로, consumer가 produce 깨운다)

 

c는 buffer가 비어있을때 →sleep

(비어있을때 읽어가려는 시도를 하는 그 순간에 sleep. 비어있다고 해서 바로 sleep하는것 아님)

 

buffer에 data가 1개라도 채워지면 c는 → wakeup

(producer가 채우는 것이므로, producer가 consumer 깨움)

 

궁금한 내용 / 부족한 내용

java 입력 방식 중 BufferedReader를 사용할때 왜 반드시 close를 통해 종료시켜야 하는 걸까?

 

추측: 버퍼를 사용했기 때문에 동적메모리할당 문제로 메모리를 반납하기 위해

결론

1. 자원의 효율적인 관리 때문

모든 I/O 객체들은 시스템 리소스를 소비한다. 이 리소스는 메모리 할당뿐만 아니라 운영체제에서 관리하는 파일 핸들러와 같은 리소스일 수 있음. 이러한 리소스는 한정적이므로, 더 이상 필요하지 않을 때 즉시 해제해야 한다. close() 메서드를 호출하면 BufferedReader가 사용하던 시스템 리소스를 반환하게 된다.

 

2. 데이터 무결성을 유지하기 위해

BufferedReader가 파일과 같은 외부 리소스에 대한 스트림을 관리하는 경우, 스트림을 제대로 닫지 않으면 마지막으로 버퍼에 쓰여진 데이터가 제대로 저장되지 않을 수 있다. 이는 데이터 손실을 야기한다.

 

 

 

따라서 BufferedReader와 같은 I/O 객체를 사용한 후에는 반드시 close() 메서드를 호출해 사용한 리소스를 제대로 해제하고 데이터 무결성을 보장해야 한다.

( java 7 이후로는 try-with-resources 구문 사용해 java가 자동으로 리소스를 해제하며 과정 자동화 가능)

 

 

그러면 동적 메모리 할당과는 관련이 없나?

 

자바에서는 동적 메모리 할당과 관련된 문제보다는 I/O 객체가 사용하는 시스템 리소스의 관리와 데이터 무결성 문제가 주된 이유.

자바는 가비지 컬렉션(garbage collection)을 통해 동적 메모리 관리를 한다. (객체가 더 이상 사용되지 않을 때 자동으로 메모리를 회수하는 시스템)

그러나 I/O 객체는 그냥 메모리 공간을 차지하는 것 이상의 작업을 수행한다. 파일 핸들러, 네트워크 소켓 등 운영 체제 수준의 리소스를 사용하며, 이런 리소스는 가비지 컬렉션의 대상 x

따라서 리소스 관리와 데이터 무결성 문제를 해결하기 위해 BufferedReader와 같은 I/O 리소스를 사용한 후에는 반드시 close() 메서드를 호출하여 사용한 리소스를 제대로 해제해야 한다.

 

오늘의 느낀점

그냥 속상하다 쩝

스터디 마지막주차 html 텀프를 위해서라도 시간을 더 쪼개고 더 할애해야한다

기존 내가 했던 html 텀프 주말동안 찾아서 되돌아볼것(어디가 얼마나 부족했고, 어떤 요소를 더 추가할 수 있을지, 이번 텀프에 고려해볼만한 것. 사실 디자인이 다 구린거도 문제긴 하지만.)

파이썬 코테 준비할 것

profile

풍성한 라벤더농장이 될때까지

@그레이라벤더

느리지만 꾸준히 굴러서 큰 바다가 되고싶은 개발 어린이