身体でダメージを受けるときの学習のシリアル化
なぜ傷つけない
「シリアル化」という言葉は聞き慣れた.
しかし、独学の時はずっと下位の勉強内容だった.
大学生活では、imbeddy、人工知能、python唐辛子、cortline androidなどがあります.
大学生活の間に書いた文章はhttps://blog.naver.com/gowjr300ブログにあります:)
卒業前にヴィロッグに引っ越して、私はもう新しい文章を書かないが、私は学校に通っていたときにどんな方法で勉強したのか知っていて、多くの人が私を探しに来たので、私はずっとブログを書いていました!
後に定着したのはバックエンドで、中にはJavaもありました.
ジャワの生態系は滅びると思っていましたが、絶対にそんなことは起こらないと思います.
なんといっても、私はやはりオブジェクト向けが好きなので、Javaを選びました!
しかし、大学を卒業してから選んだ道は、学ぶべきことが山積みになっていて、自然とシリアル化もトイプロジェクトを作るときに使う必要はありません.私には何の役にも立たないので、後で話しましょう.このまま放置しておいたが、結局避けられなかった.
今から私の理解するように文章を書きます.もっと知識が欲しいならグーグル...!
シリアル化を使用する理由
簡単に説明できます
サーバはクライアントとコミュニケーションし、サーバはサーバとコミュニケーションします.
ここでのコミュニケーションは、プロトコルや階層段階を意味するものではありません.
データ交換という意味です
その際、できるだけ低コストでコミュニケーションをとった方がいいのではないでしょうか.
シリアル化を使用しています JSON XML もちろん、これらの拡張子ファイルは知っています.
JSONまたはXMLを使用してデータを送信または受信する場合は、フロントとバックグラウンドの関係でよく見られます.
私が急に気になったのは、なぜJSONやXMLでデータを交換するのかということです.
グーグルで検索した答えは私が予想した答えと同じです.
両方とも気持ちがいいです.
便宜上、私たちはどんな基準を制定して、このような方法で交換して、甚だしきに至ってはこのような方法はとても簡単で、定義しても理解しても簡単で、私はとても良いと思います!
つまり、バックエンドエンジンは何を使っているのか、フロントは何を使っているのか分からないので、JSONでコミュニケーションをとると、双方が何を来てもコミュニケーションができるようになります.だからJSONかXMLを使いますそう思います
もし、両方が同じだったら?だから何か基準を設定しなくても直接コミュニケーションできるなら?
例えばJSONが英語だと、フランス人と韓国人がコミュニケーションのためにJSONを書いてから見ると、もちろん翻訳のコストがかかります.
だから韓国人と韓国人の会話なら翻訳しなくても、そのまま韓国語で会話すればいいんじゃないですか?当たり前だと思います!
ここで登場するのはシリアル化だと理解しています
シリアル化はプログラムやクラスをByteにすることです
Byteというユニットを見るだけで他のコミュニケーション基準よりも楽に感じる
最終的にjavaで作成したクラスをbyteに変換して相手に渡し、受信したオブジェクトは同じjavaを使用して、その内容を逆シーケンス化して表示することができます!
ちょくれつかげんり
以前の投稿を見たことがあるなら、私が会社でシリアル化のために500個のエラーを本番サーバに置いたことを知っているかもしれません.だから、シリアル化に関するレポートを急いで探しました...!
シリアル化とは何かを知りましたが、実際にシリアル化がどのように実現されているかを知りました.
間違いを解決しなければなりません.
上の図に示すように、シリアル化はオブジェクトをバイトストリームに変換します.
ファイルでもデータベースでもメモリでも構いません.
取り出されたオブジェクトまたは取り外されたオブジェクトは、「シーケンス化」と呼ばれる逆シーケンス化によって取得されます.
その際の鍵はSUIDでございます
Linuxを学ぶとき、私たちはUIDを勉強します.大きなフレームワークから言えば、名前とIDを区別するために使われています.(より正確には、ストリーム固有の識別子です.)
ここではシリアル化されたファイルを区別するためSUIDと言います
このSUIDを持ってデータを受信すると、正しく解読できます.
この言葉を聞いたとき、私が最初に思ったのは
ではSUIDが違うと同じ相手でも間違いでしょうか?
はい.
InvalidClassへのコメントを読んでから知りました
敏感SUID
SUIDは非常に敏感で、オブジェクトの形が少し違うと変化します.
SUIDは作成時にオブジェクトの変数名や継承インタフェースなどによって作成されるので、もちろん何か変化があればSUIDも変わります.
優雅な兄弟たちの技術ブログではSUIDがどのような状況で変化するのかについての説明が良いです.
https://techblog.woowahan.com/2551/
これよりもっと大切なものがあると思います.
エラーのない管理
結局SUIDは敏感で、いつ影響が出るか分からず、いちいち頭の中に入れていたので、それを考えるとプログラミングが面倒だと思いました.
シリアル化で重要なのは SUID の管理方法をシリアル化してどのクラスまたは状況に適用しますか? この2種類だと思います
したがってスープ.政策だと思います
開発チームがシリアル化ポリシーを適用および管理することを決定した場合は、これらのポリシーに基づいてプログラミングできます.そのため、シリアル化への関心を大幅に削減できます.
私が今会社に提出した方法は別のクラスを作ることです.
SUIDを管理するためにクラスを作成し、依存性を注入して解決できるのではないでしょうか.
でもコミュニケーションの取れない会社だから.私たちはいくつかの措置を取るべきだと思いますが、あなたは考えていると言って、それから言及したことがありません.
実績コードのシリアル化
シリアル化の方法は簡単です.
継承さえ受け入れればいい.
その後、SUIDが自動的に生成され、特定の値に固定したい場合は、私が書いたコードのようにSUIDを直接宣言することができます.
ホームページで簡単にテストしてみました!
結果は次のとおりです.
シリアル化する前に、プレイヤーの名前を取り出してシリアル化し、逆シリアル化して再びプレイヤーの名前を取り出すと、プレイヤーの名前が同じであることが確認できます.
シリアル化は、クラスを移動(たとえばファイルとして作成)するときに発生するので、FileStreamを使用してファイルとして作成します.
そこでコメントをして、実際に他のプレイヤーをつなぎ合わせて、SUIDが同じかどうかを比較するように呼び出すと、違いがわかります.
私が経験したシリアル化
文章の最後に、私が経験したシリアル化について話しましたが、実は簡単です.無知なだけで、
シリアル化しようとするとSUIDが自動的に生成されるので、シリアル化するクラスを選択し、フィールド名を変更しないほうがいいです.
でも私の射手が忙しすぎてシリアル化されたクラスを使うのを忘れてしまったので仕事をくれましたし、私も初めて学んだこともいろいろな内容の中で、決められた時間内に仕事を終わらせるためにクラス継承の文は見られませんでした...ううう
ただし、これは再構築・再配置されているため、実際には新しいSUIDも作成されるので、エラーは発生しません.
そのため,シリアル化エラーはローカルや開発サーバなどの環境では容易に発見できないため,予測が困難である.
私が構築して導入したのは本番サーバで、問題はここにREDISというキャッシュサーバがあることです.
このキャッシュサーバがSUIDを記憶しているだけに、構築や導入に影響がないため、既存のSUIDを使用してクラスマッピングを行う際にInvalidClassExceptionが発生し、結果として500エラーが発生しました!
とにかく.今明らかにして、事もうまくいって、良い教訓だと思って、このように伝言します.
良い一日をお過ごしください…!!
「シリアル化」という言葉は聞き慣れた.
しかし、独学の時はずっと下位の勉強内容だった.
大学生活では、imbeddy、人工知能、python唐辛子、cortline androidなどがあります.
大学生活の間に書いた文章はhttps://blog.naver.com/gowjr300ブログにあります:)
卒業前にヴィロッグに引っ越して、私はもう新しい文章を書かないが、私は学校に通っていたときにどんな方法で勉強したのか知っていて、多くの人が私を探しに来たので、私はずっとブログを書いていました!
後に定着したのはバックエンドで、中にはJavaもありました.
ジャワの生態系は滅びると思っていましたが、絶対にそんなことは起こらないと思います.
なんといっても、私はやはりオブジェクト向けが好きなので、Javaを選びました!
しかし、大学を卒業してから選んだ道は、学ぶべきことが山積みになっていて、自然とシリアル化もトイプロジェクトを作るときに使う必要はありません.私には何の役にも立たないので、後で話しましょう.このまま放置しておいたが、結局避けられなかった.
今から私の理解するように文章を書きます.もっと知識が欲しいならグーグル...!
シリアル化を使用する理由
簡単に説明できます
サーバはクライアントとコミュニケーションし、サーバはサーバとコミュニケーションします.
ここでのコミュニケーションは、プロトコルや階層段階を意味するものではありません.
データ交換という意味です
その際、できるだけ低コストでコミュニケーションをとった方がいいのではないでしょうか.
シリアル化を使用しています
JSONまたはXMLを使用してデータを送信または受信する場合は、フロントとバックグラウンドの関係でよく見られます.
私が急に気になったのは、なぜJSONやXMLでデータを交換するのかということです.
グーグルで検索した答えは私が予想した答えと同じです.
両方とも気持ちがいいです.
便宜上、私たちはどんな基準を制定して、このような方法で交換して、甚だしきに至ってはこのような方法はとても簡単で、定義しても理解しても簡単で、私はとても良いと思います!
つまり、バックエンドエンジンは何を使っているのか、フロントは何を使っているのか分からないので、JSONでコミュニケーションをとると、双方が何を来てもコミュニケーションができるようになります.だからJSONかXMLを使います
もし、両方が同じだったら?だから何か基準を設定しなくても直接コミュニケーションできるなら?
だから韓国人と韓国人の会話なら翻訳しなくても、そのまま韓国語で会話すればいいんじゃないですか?当たり前だと思います!
ここで登場するのはシリアル化だと理解しています
シリアル化はプログラムやクラスをByteにすることです
Byteというユニットを見るだけで他のコミュニケーション基準よりも楽に感じる
最終的にjavaで作成したクラスをbyteに変換して相手に渡し、受信したオブジェクトは同じjavaを使用して、その内容を逆シーケンス化して表示することができます!
ちょくれつかげんり
以前の投稿を見たことがあるなら、私が会社でシリアル化のために500個のエラーを本番サーバに置いたことを知っているかもしれません.だから、シリアル化に関するレポートを急いで探しました...!
シリアル化とは何かを知りましたが、実際にシリアル化がどのように実現されているかを知りました.
間違いを解決しなければなりません.
上の図に示すように、シリアル化はオブジェクトをバイトストリームに変換します.
ファイルでもデータベースでもメモリでも構いません.
取り出されたオブジェクトまたは取り外されたオブジェクトは、「シーケンス化」と呼ばれる逆シーケンス化によって取得されます.
その際の鍵はSUIDでございます
Linuxを学ぶとき、私たちはUIDを勉強します.大きなフレームワークから言えば、名前とIDを区別するために使われています.(より正確には、ストリーム固有の識別子です.)
ここではシリアル化されたファイルを区別するためSUIDと言います
このSUIDを持ってデータを受信すると、正しく解読できます.
この言葉を聞いたとき、私が最初に思ったのは
ではSUIDが違うと同じ相手でも間違いでしょうか?
はい.
InvalidClassへのコメントを読んでから知りました
敏感SUID
SUIDは非常に敏感で、オブジェクトの形が少し違うと変化します.
SUIDは作成時にオブジェクトの変数名や継承インタフェースなどによって作成されるので、もちろん何か変化があればSUIDも変わります.
優雅な兄弟たちの技術ブログではSUIDがどのような状況で変化するのかについての説明が良いです.
https://techblog.woowahan.com/2551/
これよりもっと大切なものがあると思います.
エラーのない管理
結局SUIDは敏感で、いつ影響が出るか分からず、いちいち頭の中に入れていたので、それを考えるとプログラミングが面倒だと思いました.
シリアル化で重要なのは
したがってスープ.政策だと思います
開発チームがシリアル化ポリシーを適用および管理することを決定した場合は、これらのポリシーに基づいてプログラミングできます.そのため、シリアル化への関心を大幅に削減できます.
私が今会社に提出した方法は別のクラスを作ることです.
SUIDを管理するためにクラスを作成し、依存性を注入して解決できるのではないでしょうか.
でもコミュニケーションの取れない会社だから.私たちはいくつかの措置を取るべきだと思いますが、あなたは考えていると言って、それから言及したことがありません.
実績コードのシリアル化
シリアル化の方法は簡単です.
継承さえ受け入れればいい.
import java.io.Serializable;
public class User implements Serializable {
private static final long serialVersionUID = 20211216L; // 직렬화를 위한 SUID 설정 코드
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
これによりクラスが作成され、implements Serializable
でシリアル化が使用されます.その後、SUIDが自動的に生成され、特定の値に固定したい場合は、私が書いたコードのようにSUIDを直接宣言することができます.
ホームページで簡単にテストしてみました!
結果は次のとおりです.
シリアル化する前に、プレイヤーの名前を取り出してシリアル化し、逆シリアル化して再びプレイヤーの名前を取り出すと、プレイヤーの名前が同じであることが確認できます.
シリアル化は、クラスを移動(たとえばファイルとして作成)するときに発生するので、FileStreamを使用してファイルとして作成します.
そこでコメントをして、実際に他のプレイヤーをつなぎ合わせて、SUIDが同じかどうかを比較するように呼び出すと、違いがわかります.
私が経験したシリアル化
文章の最後に、私が経験したシリアル化について話しましたが、実は簡単です.無知なだけで、
シリアル化しようとするとSUIDが自動的に生成されるので、シリアル化するクラスを選択し、フィールド名を変更しないほうがいいです.
でも私の射手が忙しすぎてシリアル化されたクラスを使うのを忘れてしまったので仕事をくれましたし、私も初めて学んだこともいろいろな内容の中で、決められた時間内に仕事を終わらせるためにクラス継承の文は見られませんでした...ううう
ただし、これは再構築・再配置されているため、実際には新しいSUIDも作成されるので、エラーは発生しません.
そのため,シリアル化エラーはローカルや開発サーバなどの環境では容易に発見できないため,予測が困難である.
私が構築して導入したのは本番サーバで、問題はここにREDISというキャッシュサーバがあることです.
このキャッシュサーバがSUIDを記憶しているだけに、構築や導入に影響がないため、既存のSUIDを使用してクラスマッピングを行う際にInvalidClassExceptionが発生し、結果として500エラーが発生しました!
とにかく.今明らかにして、事もうまくいって、良い教訓だと思って、このように伝言します.
良い一日をお過ごしください…!!
Reference
この問題について(身体でダメージを受けるときの学習のシリアル化), 我々は、より多くの情報をここで見つけました https://velog.io/@gowjr207/대미지를-몸으로-받아가며-배운-직렬화テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol