DBキーワード
・FK
外部キーのこと。
自分を、親テーブルに対する子テーブルとした時に、親テーブルを内部、子テーブルを外部とし、親テーブルのPKに紐づく子テーブルのカラム
目的は外部キーテーブルに格納できるデータを制御すること
https://technet.microsoft.com/ja-jp/library/ms175464(v=sql.105).aspx
・参照整合性制約
親テーブルのPKと子テーブルのFKの参照関係にズレがあってはいけない(整合が取れていなければならない)という制約
・FK制約のcascade
カスケード(cascade)とは「段階的な滝のような」、「連鎖的に伝わる」という意味。
FK制約のカスケードを指定したカラムは、参照先のupdateに追従し、参照先がdeleteされると同時になくなる。
・サブクエリとは?
クエリ内クエリ。つまり、()て囲った内側でSQLを発行して値を取得し、外側のSQLでその値をもとにtrue,falseを条件式として利用する。
・サブクエリの使用上の注意は?
http://www.techscore.com/tech/sql/SQL7/07_01.html/
・joinとは?
分かるっしょ
・joinの使用上の注意は?
分かるっしょ
・order by とは?
抽出したデータの並び替えを行う。
・order byの使用上の注意は?
複数列の並び替えの時、列単位で昇順、降順を指定できる。デフォルト(指定しない)は昇順。
並び替え対象の列がnullの時、nulls first か nulls last か を指定できる。
並び替え対象の列の値が同じ場合、つまり、重複行の場合、挙動が一定でないため、Oracleの場合、「order by rowid」としておくと良い。
「select distinct」する列はorder byにも指定しなければならない。
参照:レコードの並び替え(ORDER BY)
https://www.shift-the-oracle.com/sql/order-by.html
・group byとは?
「select * from parent where a = 'id'」のような場合の抽出結果を分類するために使う。
・group byの使用上の注意は?
分類された列以外の列は集計関数を使わなければならない。
group byで分類されたものをさらに条件で絞るには、havingを使う。使い方はwhereと同じ。
参考:検索結果のグループ化(GROUP BYとHAVING)
https://www.shift-the-oracle.com/sql/group-by-having.html
二重サブミット防止
同じ更新処理のリクエストを二回以上送らせないこと。
入力画面→確認画面→完了画面
というシンプルな画面遷移を前提に考える。
二重サブミットになるケースは以下の4つ。
①サブミットボタンのダブルクリック
②確認画面でサブミット後、入力画面に戻って再度サブミット
③完了画面でリロード
④CSRF攻撃による不正なリクエスト
解決策は以下の3つ。
1.サブミット後のボタン非活性化(マスク)
①に対応
2.トランザクショントークンチェック
②,③,④に対応
3.PRGパターンの適用
③に対応
→確認画面からのpostリクエストに対して、redirectをレスポンスする。ブラウザはすぐにgetリクエスト(完了画面表示のリクエスト)をするので、リロードしても完了画面の再表示でしかなくなる。
オブジェクト指向キーワード
・クラス
・継承
あるクラスの機能を拡張した新しいクラスを定義すること。
・インタフェース
他クラスからの「扱い方」を定義したもの
(クラスから型だけを取り出したもの)
https://jioatips.hatenablog.com/entry/2018/07/11/093650
・implements
・extends
・abstract
・オーバーライド
サブクラスでスーパクラスに定義されたメソッドを「再定義」すること。
・オーバーロード
クラスの中に同名で、シグニチャが異なるメソッドを「多重定義」すること。
参考
・スッキリわかるJava入門 第2版
https://book.impress.co.jp/books/1113101090
・徹底攻略 Java SE 8 Silver問題集[1Z0-808]対応
コンピュータシステム
・ハードウェア
パソコン、キーボード、マウス、プリンターなど。
・OS
Windows,Linux,UNIX
コンピューターの基本機能を提供するもの。
・ソフトウェア
コンピュータを動かすプログラム。
・アプリケーション
OS上で動くソフトウェア全般。
アプリと呼ばれているもの。
・ミドルウェア
OSとアプリケーションの中間で動くソフトウェア。
・プラットフォーム
プログラムを実行するハードウェア、OS。
------------------------
・文字コード
文字に割り当てられたID(識別子・識別番号)。
・テキスト
文字コードのみで作った文字・文字列。
・バイナリ
テキスト以外の2進数(0,1)データ・ファイル。
・オブジェクトコード
マシン語。
コンピュータが実行可能な形式のコード。
バイナリ形式のオブジェクトファイル。
・ソースコード
人間が読み書き可能な形式のコード。
プログラミング言語で記述されたテキスト形のデータ。
・コンパイル
ソースコードをオブジェクトコードに変換すること。
コンパイルを行うのがコンパイラ。
・コンパイラとインタプリタの違い
コンパイラ
実行前にプログラムをまとめてマシン語に変換する。
代表言語)C,C++,COBOL,FORTRAN
インタプリタ
実行時にプログラムを一行ずつマシン語に変換する。コンパイラと比較した場合、時間がかかる。
代表言語)Perl,PHP
------------------------
・Java
インタプリタとコンパイラの両方の性質を持つ言語。
ただし、現在の主流は、「実行時コンパイル」(JITコンパイラによる)。
・Javaバイトコード
どのプラットフォームでも、動作可能とするために生成する、ソースコード(.java)とオブジェクトコードの中間のコード、バイトコード(.class)のこと。
・javacコマンド、javaコマンド
ソースコード(.java)
↓←javac(実行前コンパイル)
Javaバイトコード(.class)
↓←java(実行時コンパイル)
オブジェクトコード
------------------------
・パッケージ
定義:複数のクラス(.class)ファイル(クラスやインターフェース)を管理するために、まとめて、分類し、名前をつけたもの。インポート文で宣言する場合の最大の単位。
※Javaは仕様上、クラス(.class)ファイルを必ずどこかのパッケージに収める必要がある。よって、パッケージを明示していないクラス(.class)ファイルは「デフォルトパッケージ」という形で取り扱っている。
参考:IT専科 Java入門>パッケージ
http://www.itsenka.com/contents/development/java/package.html
・ライブラリ
多くのプログラムが作成されている場合に、その中のどのプログラムにとっても共通な処理として必要と考えられる関数、機能(プログラム)、データ(定数定義)などをまとめたファイル。
多くのパッケージからできている。
参考:ライブラリとプログラムの関係
http://ossforum.jp/node/555
・クラスライブラリ
〜〜
・API
OSが提供する機能をアプリケーションから呼び出せるようにするソフトウェアのこと。
JavaでいうAPIはクラスライブラリのこと。
参考:Java API、クラスライブラリ、パッケージの関係。
https://www.google.co.jp/amp/sunjava.seesaa.net/article/50485694.html%3Famp%3D1
・ライブラリの種類
⑴静的ライブラリ
プログラム(実行形式)の構築時、組み込まれるライブラリ。実行ファイルに直接組み込まれる。
⑵共有ライブラリ
プログラム実行時、メモリ上に展開されるライブラリ。
⑶動的ライブラリ
プログラム実行中、必要な時に読み込まれるライブラリである。
参考:コトバンク「ライブラリー」
https://kotobank.jp/word/%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%83%BC-14019
参考:ライブラリの種類とライブラリの利用方法
http://ossforum.jp/node/556
・動的リンク
プログラムの起動時もしくは起動後のプログラム実行中に初めてライブラリを結合される方式。共有ライブラリは動的リンクの仕組みを利用して実現される。
・静的リンク
ソースコードのコンパイル後にオブジェクトファイルとライブラリとを結合させて、実行ファイルを作成する方法。
参考:ライブラリとプログラムの関係
http://ossforum.jp/node/555
------------------------
・ビルド
ソースコードをコンパイルし、使っているライブラリにリンクする。
・ビルドツール
〜Maven〜
・フレームワーク
〜〜
------------------------
・Spring Framework
〜〜
・CI
〜〜
・DI
〜〜
・AOP
〜〜
・MVC
〜〜