20210816


今日の勉強内容🏻
  • プログラマーレベル1 2題
    https://github.com/sohee0724/programmers
  • Javaオブジェクト向けSpringの入門原理と2
  • を理解する

    Pythonの定理

  • abs(x):絶対値合計
  •    abs(-99) = 99 
  • 列挙関数:リストを渡すインデックスと値
  •   data = enumerate((1, 2, 3))
    
      for i, value in data:
          print(i, ":", value)
    
      # 출력 
      0 : 1
      1 : 2
      2 : 3
  • join関数:パラメータリストの各要素を1つの文字列
  • にマージ
    # 구분자.join(문자열 리스트)
    "".join([avg>=90 and "A" or avg>=80 and "B" or avg>=70 and "C" 
          or avg>=60 and "D" or avg>=50 and "D" or "F" for avg in avgs])
  • zip(*iterable)関数:
  • 関数で、同じデータ型をグループ化
    print(list(zip([1, 2, 3], [4, 5, 6])))
    
    # 출력 
    [(1, 4), (2, 5), (3, 6)]
    
    # 2차원 배열 행렬 바꾸기 
    list(map(list, zip(*scores)))

    Javaオブジェクト向けSpringの入門原理を理解する02

  • JVMの存在と役割を理解するにはJava開発環境を理解するために必要な
  • ソフトウェア開発ツール=Java開発ツールパッケージ:Java開発ツール
    オペレーティングシステム=JRE(Javaランタイム環境:Javaランタイム環境)
    ハードウェア-物理計算機=Java仮想マシン(Java Virtual Macgue:Java仮想マシン)
    JDKを使用して開発されたプログラムは、仮想マシンJVMでJREによって駆動されます.
    配置を容易にするために、JDKはJREを含み、JREは再びJVM
  • を含む.
  • JDKはjavaソースコンパイラjavacです.EXeを含み、JREはJavaプログラムエフェクタjavaです.exeを含む.
  • 開発者は、独自のオペレーティングシステムJVMを使用してプログラムを作成および導入します.
    JVMを仲裁者として各プラットフォームでプログラムを実行することに問題はありません=書き込み時にAnywhere
  • を実行します.
  • プログラムがメモリを使用する方法は、コード実行領域+データ記憶領域(静的/スタック領域/スタック領域)である.
    -静的領域:クラスの遊園地
    -スタックエリア:メソッドの遊園地
    -Heapエリア:対象の遊園地
    一般開発者はコード実行分野を深く学ぶ必要はありません
  • プログラミング=gotoを使用しない
  • 構造化プログラミング=関数を使用し、グローバル変数ではなく領域変数を使用し、論理
  • を繰り返し分割する
  • Javaのプログラム性/構造化プログラミング=シーケンス図と制御文/方法
  • 関数とメソッドの違い:関数はクラスまたはオブジェクトには関係ありませんが、メソッドはクラス定義に存在する必要があります.
  •     public class Start {
        	public void static main(String[] args){
        		System.out.println("Hello OOP !!");
        	}
        }
    JREは、起動プログラムの開始main()メソッドがあるかどうかをチェックします.main()メソッドが見つかった場合、JREはJVMを起動してプログラムを実行します.起動したJVMはターゲットファイルを受信して実行します.JVMが最初に行うべきことは、前処理プロセスです.すべてのjavaプログラムに含まれるjava.langパッケージを静的領域にインポートします.その後、JVMは、開発者が作成したすべてのインポートパッケージとクラスを静的領域にインポートします.
    main()メソッドを実行するために、スタックフレームワークはスタック領域に割り当てられます.(クラスの括弧を定義する以外は、他の括弧に遭遇するたびにスタックフレームが生成されます.括弧に遭遇すると、メソッドのスタックフレームが生成されます.括弧に遭遇すると、スタックフレームは消えます.)さらに、スタックフレームの下部にメソッドパラメータ(args)を格納する変数空間があることを確認する必要がある.このようにメモリを構成してからmain()メソッドの最初の文を実行します.
    要約JREはJVM Java仮想マシンを起動し、JVMはメモリ構造を作成し、Javaを追加します.lang.パケットや各種クラスロード、main()メソッドスタックフレーム配置、変数空間配置など.main()メソッドが完了すると、JREはJVMを終了し、JRE自体もオペレーティングシステム上のメモリから消えます.これでTメモリも消えます.

    領域変数とメモリ:スタックフレームに閉じ込められました!


    変数はStatic、Stack、Heap領域にあり、各変数には異なる目的があります.
  • クラスメンバー変数:JVMが終了するまでStatic領域
  • 領域変数:スタック領域で、スタックフレーム内に位置します.このスタックフレームでのみ使用可能であり、外部では
  • を使用できません.
  • オブジェクトメンバー変数:heapでは、不要コレクタと呼ばれるhipメモリ回収器がオブジェクトとともに削除されます.
  • メソッド呼び出しとメモリ:メソッドスタック2

    public void ckass Start4{
    	public static void main(String[] args){
    		int k = 5;
    		int m = squre(k);
    	} 
    	private static int square(int k){
    		int result;
    		k = 25;
    		result = k;
    		return result;
    	}
    }
  • squareメソッドのStackフレームワークでは,戻り値を格納変数空間が底部にあり,次いでパラメータを格納変数空間,最後にメソッドの領域変数
  • である.
  • スタックフレーム間の変数にアクセスできません.入力値(パラメータリスト)と戻り値に基づいてメソッド間で値を渡すだけで、互いの内部の領域変数
  • は表示できません.

    グローバル変数とメモリ:グローバル変数を書かないでと言った!

  • メソッドの外で宣言された変数は、メソッド間で共有されるグローバル変数になります.
  • スレッドの安定性が損なわれるので、
  • はなるべく使用しない方がよい.

    マルチスレッド/マルチプロセスの理解

  • マルチスレッド:Tメモリモデルで
  • を使用して、スレッド数でスタック領域を分割
  • マルチプロセス:複数のデータ記憶領域(すなわち、複数のTメモリ)を有する構造
  • マルチプロセスは互いに参照することができず、マルチスレッドは1つのTメモリしか使用しない.スタック領域のみを分割する構造であるため、他のスレッドのスタック領域にアクセスできないが、共有静的領域とheap領域は
  • を使用する.
  • マルチスレッドがマルチプロセスよりも少ないメモリ
  • その他

  • フィールド=プロパティ=プロパティ
    関数=メソッド=機能=動作