[Computer Engineering] String, Graphics, OS, Garbage Collection, Cache


文字列


Unicode-世界中のすべての文字をコンピュータ上で一致させるための工業標準です.
同じ文章でも符号化方式が異なると、そのファイルがサポートされていなければ読み込めません.したがって,符号化方式を統一する.
エンコーディング:コンピュータが任意の文字または記号(バイナリを使用)を使用できるようにします.
文字の符号化/復号化の事前定義条件-文字列セット、文字セット(charset).standard charset - unicode
ASCII-7ビット文字列は符号化を表す.(英字、数字、特殊文字、スペース)
UTF-8, UTF-16
Universal Coded Character Set + Transformation Format 8 bit/16bit

UTF-8

// utf-8: UTF-8은 유니코드 한 문자를 나타내기 위해 1byte 에서 4byte 까지 사용한다.

// 1110xxxx 10xxxxxx 10xxxxxx 에 순서대로 채워 넣는다.
// 11101100 10111101 10010100

let encoder = new TextEncoder(); // default: utf-8

// 예) '코'

encoder.endoce('코') // Uint8Array(3) [236, 189, 148] (3byte)

(236).toString(2); // 11101100
(189).toString(2); // 10111101
(148).toString(2); // 10010100

// 예) ASCII 문자 'b'
encoder.encode('b'); // Uint8Array [98]
(98).toString(2); // 1100010 (1byte)
utf-8は、1バイトから4バイトまでの可変符号化である.
  • ネットワークを介して伝送されるテキストは、文字列をより小さなサイズで表すことができるため、主にUTF−8として符号化される.(例えば、bを1バイト、coを3バイト)
  • ASCIIコード-1 byte
    英語の単語-2,3 byte(ハングルは3)
    補助文字-4 byte(大文字など)
  • バイト順は固定
  • である.

    UTF-16


    ほとんどのUnicodeコード(U+0000からU+FFF)は16ビットで表される
    16進数を使用してバイナリに変換され、UTF-16のタイプはバイト順に依存します.
    韓国語-2 byte

    ビデオカード


    Bitmap(raster)

  • 画素に基づく
  • 写真の理想的な選択
  • 拡大時に破砕、大画像が必要な場合に
  • を再作成する必要がある.
  • 大画像-大容量
  • 画像をベクトルに変換するには長い時間がかかります
  • jpg, gif, png, bmp psd
  • Web上でjpg gif pngは非常に高価である
  • Vector

  • Shapeに基づく数学計算
  • ロゴ、イラスト
  • に適しています
  • 解像度拡張可能
  • 容量は画像サイズの影響を受けません.
  • ラスタ
  • に簡単に変換
  • svg, ai
  • Webでは、ほとんどのブラウザがSVG
  • をサポートしています.

    オペレーティングシステム



    プログラム→オペレーティングシステム→ハードウェア

    Program


    コンピューターが登場する前に、元のプログラムの意味はコンサートです.各種音楽の集合=コンサート
    コンピュータ上:複数の命令の集合->プログラム
    OSはハードウェアの作業を支援します.
    プロセス管理(CPU)、メモリ管理(RAM)、I/O管理(ディスク、ネットワークなど)、権限管理(コンピュータ上のファイルに勝手にアクセスできない)など.
    オペレーティングシステムが提供するプログラムがシステムリソースを使用するための関数(API)をシステム呼び出しと呼ぶ.

    Process


    Program in execution
    オペレーティングシステム上で実行されるプログラム
    ユーザーがアプリケーションを実行すると、オペレーティングシステムは実行に必要なメモリを割り当て、コードを実行します.1つのアプリケーションに複数のプロセスがある可能性があります.(はい-2つのインターネットウィンドウの間に2つのプロセスを作成します)
    1つのCPUで1時間に1つのプロセスしか実行できません.
    シングルコアは複数の処理が可能ですが、複数の処理はできません.
    たかくしょり

    Thread, Multi-thread


    Thread


    コード実行フロー
    各スレッドにはcallスタックがあり、各スレッドは独立して実行されます.

    Multi-Thread


    複数のタスクを同時に処理
    オペレーティングシステムは、各プロセスに適切なCPUとメモリリソースを割り当て、マルチタスク処理を行うために並列に実行します.
    プロセス内のマルチタスク処理-マルチスレッド
    OS内のマルチタスク処理-マルチプロセス

    長所


    メモリ容量とシステムリソースの消費量を削減
    スレッド間通信はヒープメモリを使用します.プロセス間通信方法(IPC)よりも簡単です.
    システムのスループットを向上させ、プログラム応答時間を短縮
    複数のプロセスのタスクを1つのプロセスから複数のスレッドに分割

    短所


    マルチプロセス-共有リソースx
    マルチスレッドスタックを共有するため、同期操作(タスク処理順序制御、リソースアクセス制御)が必要です.
    関連キーワード-Dedrok Mutex細麻布

    使用例

  • 高容量データパーティション
  • ネットワーク通信
  • サーバ分割処理複数のクライアント要求
  • Concurrent, Parallel


    同時に回転できるスレッド数は、コンピュータ上のカーネル数に制限されるため、オペレーティングシステムは、各スレッドに時間を割り当て、複数のスレッドを交代で実行する必要があります.(時分割)
    へいれつせい
  • 複数のスレッドが時間分割で同時に実行され、
  • という錯覚を引き起こした.
  • コンテキスト切替タスク(プロセス、スレッド)を停止して別のタスクを開始
    パラレル:マルチコア環境で実際に複数のスレッドを同時に実行します.

    ごみ収集


    プログラムに書き込まれていないメモリを自動的に検索して解放
    Java、C#、Javascriptなど
    典型的なごみ収集方法
  • 参照カウント-各オブジェクトに「参照カウント」というメンバー変数があり、カウントが0のときにカウント解除(ループ参照が解除できないオブジェクトに制限)
  • タグおよびスキャンアルゴリズム(トレース)-各オブジェクトにタグを配置し、各ゴミ収集サイクルでオブジェクト参照ツリーを巡り、参照されていないオブジェクトを表示および閉じる.ほとんどのブラウザでは、この方法が使用されています.
    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management

    キャッシュ


    高速データ一時記憶.
    アクセスが遅いプライマリ・ストレージ・レイヤの必要性を減らすことで、計算速度を速めます.
    キャッシュデータは、通常、RAMなどの高速アクセス可能なハードウェアに格納され、ソフトウェアコンポーネントとともに使用されてもよい.

    長所

  • 性能改善、dbコスト低減、バックエンド負荷低減、予測可能性能、dbホットスポット(複数のクエリー要求)除去、リードスループット(IOPS:毎秒入出力操作、IOPS)増加
  • Webサービスへのキャッシュの適用例

  • クライアント:HTTPキャッシュヘッダ、ブラウザ
  • ネットワーク:DNSサーバ、HTTPキャッシュヘッダ、CDN、リバースエージェント
  • サーバ/DB:キー値データ格納(Redis等)、ローカルキャッシュ(メモリ、ディスク)
  • https://aws.amazon.com/ko/caching/

    OSリファレンス


    https://codex.cs.yale.edu/avi/os-book/OS10/regular-exercises/index-exer.html
    https://parksb.github.io/article/5.html