リンクが開かない場合は、https://github.com/Snailclimb/JavaGuide/blob/master/docs/questions/java-learning-path-and-methods.mdを読むためにこのリンクを使用することをお勧めします。
これまでのところ、私はまだ私はより多くの操作を行うように頼まれた上に、ほとんどのマイクロ文字を知っていることである、それは楽屋公共号にあるかと思います。「兄、何Javaの学習経路や方法はありません」(兄は、現代の人気のコールの一種であり、Iギャングスター非ヘクタール)。だから、自分自身の学習経験上のビューの個々の独自のポイントのこの部分です。
序文
運動の先生が割り当てられた後、学校の新入生の年、私はC言語と接触し、C言語の習得だけで完了することができます。その時、私の主な焦点は前に試したことがない、私は多くのことを試してみましたとても素敵なコミュニティが続く様々な課外活動に参加することでした:キャンプ、屋外バーベキュー、バスのスピーチ、リングは徒歩で、古代都市の壁を実行します旅は、生きるための場所、クリスマスはそうでりんごを販売して。
二年生として、私はHTML、CSS、JS、ジャワ、Linuxでは、PHPこれらの用語に接触していませんでした。Javaは私が仕事のためのAndroidを選択する必要があります方向に接触したとき、私は彼がJavaのバックエンド方向への3ヶ月後のアンドリュースの方向についての知識であることを学びました。彼らの学習の非常に始まり、いくつかの迂回路が、全体的なルートはまだ比較的問題ありません。私は、JavaのWeb方向の読みの最初の本は、「王のにJava Web統合開発リターン」、今私は今、他の人が読んでお勧めしません1がコンテンツあまりにもごちゃ混ぜであり、より遠くにたくさんのことを第二のリード本です適用されなくなりました。
Javaベースの完了後に多くの人々が、戻って次のステップを学ぶ方法がわからない、または学習する方法がわかりません。どのようにJavaシステムを学ぶためには、多くの初心者や小さなパートナーのJavaの方向の問題への前進を見に悩まされています。私もほぼ同様にいくつかの質問に答えるために知って、私は多くの人がこの領域で指導を必要とするので、私はどのようにシステムのために独自の学習のJavaバックエンドの意見を書きますと感じています。私の友人の多くの社会的関心のほんの数のJavaを学んでいるが長すぎるではありません、私はJavaは少しのインスピレーションすることができます学ぶためにこの記事を友人に願っています。
原因私の限られた個人の能力に、次のような学習経路や方法は間違いなくそこに欠けていることをお勧めします。コメントエリア友人で歓迎アイデアは、独自の見解について話しています。この記事では、まだ始まったばかりか、Javaベースの友人をプレイしたい、比較の基準取得のために適しています。
推奨ルートと方法を学びます
個人的な学習体験が結果の要約を改善した後、次の学習ルートや主な方法は、ペンに基づいており、私はあなたの学習効率にこの輝く学習パスが非常に高いと考えています。
あなたがこの記事をチェックアウトすることができます何冊見てわからない場合は、知識の学習のプロセス:基本的な図書を学習JavaはReduxのをお勧めします!。
また、非常に重要なポイント:一人でエンコードされたお勧めのIntelliJ IDEAはのIntelliJ IDEAを使用することを学ぶためにいくつかの時間がかかることがあります。
下記の一部のビデオ、公共の数は舞台裏あなたが得ることができる「1」キーを返信!
ステップ1:Javaの基礎
「Javaコアテクノロジボリューム1/2」と「ヘッドファーストJavaの」私の意見では2冊は、(非常に良い入門のJavaの本である「Javaのコアテクノロジボリューム1/2」知識ポイントより包括的な、私はお勧め本書)、私が思うだろう「Javaがアイデアをプログラミング」少し落胆新参者が書籍の意味に属し、慎重に見て、その後、基礎ビットをお勧めします見てください。読みながらビデオを見ながら、あなたも学ぶことができる(シリコンバレーでは、まだ、ダークホースを、ムークラスのビデオネットワークは大丈夫です)。Java8物事新機能については、私はあなたが学習のための基礎の後に見ることができることを示唆し、一時的にかなりそれが戻って振り返るには時間がかかり、重要ではありません理解していません。
それを読んだ後、あなたは彼らは、単純なJavaプログラムを達成するために学ぶものを使用することができます、あなたはまた、自身が実際に学習するためには、Javaプログラミングの問題のいくつかを解決しようとすることができます。
総括することを忘れないでください!基盤を築くために!重要なことは、自分の記録です。彼らはそれらを読むだろうあなた自身を準備するために、見ることができる場所のAPIドキュメント。ために自身がより良いコードを書くために作るために、「効果的なJavaのよう」、 「復興」これらの本は、すべての権利を見ることができます。
あなたは、あなたの学習を確認し、完成した学習後、以下の記事を見ることができます。
あなた自身の習得には、これらの34個の質問のJavaの知識より重要なポイントで検出され、最も重要なのは、Javaバックエンドのインタビューで出現率が非常に高いです。
ステップ2:マルチスレッドを使用するのは簡単
このセクションをマルチスレッド化することは、より理解することは困難と使用可能、事前にすることができます最初の単純な基盤を見て、エネルギー、詳しく見後で後に戻ってくる能力を有することができます。オススメ「同時Javaプログラミング美」や「高い戦闘Javaの並行プログラミング」この二つの本を。私は内部の番号に公衆を更新するバック書いた前に、私はまた、現在、マルチスレッドの研究ガイドを改造します。
複数のスレッドを読んだ後、これらの問題に従うことによって彼らの把握かどうかを検出することができます。
Javaのマルチスレッドのナレッジベース:
- スレッドとプロセスは何ですか?
- 簡単にスレッドやプロセス、違いと長所と短所の間の関係を記述してください?
- 同時並列の違いについての話?
- なぜ複数のスレッドが何でしょうか?
- マルチスレッドの問題の使用がもたらす可能性は何ですか?
- ライフサイクルとスレッドの状態についての話?
- コンテキストスイッチとは何ですか?
- デッドロックを回避する方法は?スレッドのデッドロックとは何ですか?
- 睡眠()メソッドと待機()メソッドの相違点と類似点についての話?
- なぜ我々はスタートを()メソッドは、なぜ我々は直接run()メソッドを呼び出すことができない場合run()メソッドを実行し呼ぶのですか?
高度なマルチスレッドのJavaの知識:
- synchronizedキーワード:①synchronizedキーワードの自分の理解について話;②彼はsynchronizedキーワードを使用しているかについて話を、プロジェクトではまだ使用しています。③synchronizedキーワードの基本原則について話;④JDK1.6を語ります最適化の後に行われていたもののキーワード底に同期、あなたは詳細にこれらの最適化を説明することができ、⑤同期の違いとReentrantLockのについて話しています。
- volatileキーワード:①のJavaメモリモデルについて話;②synchronizedキーワードと揮発性のキーワード間の違いについて話しています。
- ThreadLocalの:①はじめ、②原則として、③メモリリーク。
- スレッドプール:①なぜスレッドプールを使用できますか?;②違い、Runnableインタフェースと呼び出し可能インターフェースを実装して、違いは何ですか③実行execute()メソッドおよび(提出)メソッドはありますか?;④スレッドプールを作成する方法について説明します。
- アトミックアトミックカテゴリ:①原子力原子タイプを導入;のAtomicIntegerの使用について話③;の4つのカテゴリの原子クラス②JUCパッケージ④は、あなたは私のAtomicIntegerクラスの原則を簡単に紹介を与えることができます?。
- AQS:①はじめ、②原則として、③AQS共通のコンポーネント。
また、以下の記事を見てお勧めします。
- 一般的な面接の質問の要約のJavaの並行処理の基礎
- 高度なJavaの並行処理の一般的な面接の質問の概要
- コンカレント・コンテナーの概要
- 楽観と悲観的ロックロック
- - JUCにまとめたアトムアトミック
- AQS AQS原理と同期コンポーネントの概要
ステップ3(オプション):コンピュータ・ネットワーク・オペレーティング・システムと、
この点に関して、システムを動作させる、私は考えてLinuxオペレーティングシステムの基本的な知識と一般的に使用されるコマンドラインとライン上のいくつかの重要な概念。
私は慎重にいくつか読んでいないので、オペレーティング・システムでは、その後私は、本をお勧めすることができますオペレーティング・システムを持っていません。より多くの退屈なオペレーティングシステムのので、私は研究のこの部分は少し良いかもしれない見て、ビデオを見てお勧めします。私は誰それのためのGitHub HIT「オペレーティングシステム」コースのオープンソースをお勧めします!住所:HTTPS://github.com/hoverwinter/HIT-OSLab。
ディレクトリを変更するコマンド、ディレクトリの操作コマンド、操作コマンドファイル圧縮や解凍のコマンド・ファイルなど:また、私たちは基本的なLinuxはあなたが非常に身近な例である必要があり、いくつかの一般的なコマンドを使用習得する必要があります。:Githubの上のLinuxのオープンソースの学習文書をお勧めの「JavaプログラマーのLinuxの目を」
コンピュータ学習のネットワークが、私はライン上の基本的な知識の把握を感じ、あまりにも下、要件はすべての後に、ネットワークに特化していない、高くはない、この分野における通常のインタビューに取得していません。オススメ「何ネットワーク接続」、 「グラフィックHTTP」ビューの2冊を、これらの本は、すべてのより興味深いもの人々の種類ビューのための根拠を理解することです。
ステップ4(オプション):データ構造とアルゴリズム
あなたは、メーカーを入力したい場合、私はあなたが土台や、マルチスレッドのJavaの完了後に、学習アルゴリズムとデータ構造に毎日時間を取るようになった学ぶことをお勧めします。自分のプログラミングのスキルを向上させるためには、あなたはまた、ブラシ固執することができますLeetcodeを。インタビューの現在の国内外のメーカーでは、ブラシは、パスに従わなければならないLeetcodeになってきたといえます。
アルゴリズムとデータ構造にしたい友人入門、2冊を参照することをお勧めします「グラフィックアルゴリズム」と「嘘のデータ構造」しばらく古典の本が、より面白くない、二冊の本を、とのためのアルゴリズムは、まだ始まったばかり友人のデータ構造は非常に友好的です。「はじめは、アルゴリズム」非常に古典的な、しかし、始めたばかりのためにすることはとてもフレンドリーではありません。
非常に立派なアルゴリズムは、書籍、本の名前が呼ばれたあなたにそこをお勧めしているほか、「アルゴリズム」、ブック内のコードは、Java言語で書かれています。このように完全に、より親しみやすいというように、読者のための根拠を説明そのようこの本は、あまりにも多くの利点。私はこの本が唯一の欠点は、(ささやいBB、および時間少し長いったらしいについての知識のいくつかを説明できるかもしれない)が厚すぎると思います。本書のほかに、「ご安全性を証明する」、 「プログラミングの真珠」、 「プログラミング米国を」これらの3冊があまりにも多くの兄によって推奨されている、とアルゴリズムの面接のために非常に役立ちます。「アルゴリズム美は」この本はまた、非常に良い見て余暇時間のために非常に適しています。
ステップ5:フロントエンドの知識
この手順は、基本的なフロントエンド(HTML、CSS、JavaScriptを)学ぶために主にある、もちろんブートストラップ、Layui比較的シンプルなフロントエンドのフレームワークとあなたが見つけることができます。ます。http://www.w3school.com.cn/、このサイトは、知識も非常に良いです確認するために使用される多くのオンラインリソースが、私はこれだけの知識のほとんどは、ウェブサイトを見ることができます初心者にお勧めすることができ、このエリアにあります。最初のHTML、改めてCSSの基礎、JSを推奨して、実際のプロジェクトによって、フロントを統合します。
今現在は、前端と後端を分離して、プロジェクトのほとんどは、角度、Vueのこれらの強力なフレームワークを開発するために反応が好ましいです。あなたが行きたい場合は、スタック全体の方向、それは最初の基盤JSを築くことをお勧めし、その後、深刻に、Vueのそれらをアンギュラリアクト選択された(現在のペン主の方向が、私は2つの小規模なプロジェクトを反応させるの会社で働いていました)学びます。もう少しVueの国内使用は、一般的な外国人が反応し、角度を使用します。
ステップ5:MySQLの
MySQLは、すべてがそれについて学ぶ基本的な使用、基本的なCRUD、SQLコマンド、インデックス、ストアドプロシージャを学びます!推薦図書「SQL基礎チュートリアル(第2版)」(エントリ・レベル)、「高性能のMySQL:第三版」(上級)、「MySQLはなります知っていること」。
次のMySQL関連の記事が強く、あなたが見てすることをお勧めします:
- [推奨]のMySQL /データベースの知識の概要
- アリババデータベースのベスト・プラクティス・マニュアル部分を開発します
- MySQLの研究では、1000行を指摘します
- 高性能仕様のMySQLの最適化は推奨しています
- データベースのインデックスの概要
- トランザクション分離レベル(詳細グラフィック)た.md)
- MySQLでSQL文を実行する方法
ステップ6:一般的なツール
- Mavenの:提案は、共通のフレームワークの学習の進歩について学び半日を過ごすことができますMavenの使用を。(ジャーパッケージをダウンロードし、そのJARパッケージを探すMavenのは、あなたのために多くのものを保存することができます使用して、トラブルの悩みに実際にあります)。
- Gitリポジトリ:Gitの基本的なスキルは、Githubの上にホストされている独自のコードを学ぼうとする過程で、も不可欠です。(Gitのエントリ)
- ドッカー:ドッカーは、MySQLのようなソフトウェアを使用する必要性を学んでインストールすることを学ぶので、利便性の多くは、あなたはあなたのために多くの時間を節約することができます。(ドッカーエントリー)
ステップ7:共通のフレーム
Struts2の(学ぶことができない)、学習春、SpringMVC、Hibernateは、MyBatisの、史郎に精通し、使用する他のフレームワーク、(オプション)春の原理を(メーカーが必要なインタビュー)、学ぶことが必要であるSpringBoot、本当にSpringBootを学びます重要。多くの企業は、学生が始まっ最終年度への直接のあるSpringBootを、しかし、時間が許すならば、私はあなたが取るお勧め春、SpringMVCを学ぶために事前に。
SpringBootについて、私はペン主要なオープンソースを見てお勧め春のブートチュートリアル(SpringBootコア知識ポイントの要約。春ブーツ2.19+をもとに)。
春は本当に重要です!AOPとIOCは、これら二つの概念を知ってもらう必要があります。豆のライフサイクルの範囲では春、SpringMVCの作品など詳細な知識のポイントは非常に重要であり、我々は知ってもらう必要があります。
学ぶための戦闘の途中で、あなたは試験期間のためのより多くのJavaGuideを見ることができ、ドキュメント+ビデオの組み合わせを参照することをお勧めの方法は、共通のフレームワークをまとめています。
また、すべて2019年、そして再び私たちは本当にJSPを学習することはありませんか?
ステップ8:高性能サイトのアーキテクチャ
学習ダボ、飼育係、共通メッセージ・キュー(例えば、ActiveMQの、RabbitMQの、)のRedis、elasticsearch使用します。
私はビデオを学ぶための最後のアイテム配布されたダークホースによってこれらの事を学び、わたしの民、この方法は、広く使用されており、許容できる方法がたくさんあります。私はそれがより良い、知識のポイントを一の方法を把握する他、であるべきだと思うそれを自分で行うより良い学習するように、あなたは、オンラインのブログや書籍へのタイムリーなアクセスへの知識を理解していないビデオ側を見てお勧めします。
あなたは、知識を広げる自己学習の感覚を開発することを学ぶ必要があります。これらの点のダークホースプロジェクトの説明は、比較的表面的な知識です。
ステップ9:その他
私たちは、知識のマルチスレッディングを見に戻ってくることがあり、あなたはまた、について学ぶために空き時間を利用することができますNIOとネッティーももっと何かすることができ、このような履歴書には、。あなたがメーカーに行きたい場合は、JVMいくつかの知識を学ぶことも必要である(Javaのメモリ領域、仮想マシンのガベージアルゴリズム、仮想ガベージコレクタを、JVMのメモリ管理は、(最新のJVMの高度な機能とベスト・プラクティス:)「Java仮想マシンの深い理解をお勧めします第二版「と」実際のJava仮想マシン」、たくさんの悩みを読んでいる場合、あなたはまた、ドキュメント私の仕上げを見ることができます。
また、マイクロサービス特別な火災は今、多くの企業はまた、マイクロサービスの知識ニーズにインタビューでそれが明らかにしました。あなたはエネルギーを持っている場合は、サービスがSpringCloudマイクロ生態系が何であるかについて学ぶために行くことができます。
概要
私は、各ステップの主な内容は、学ぶために、上記をまとめる計画を学習するための提案を持っています。後にそれを学ぶために、どのように学ぶために何を知っていますか?私は、それぞれの知識のポイントを学ぶことで開始すると考えることができると感じています。
- 公式サイト(英語高い確率を参照するには、初心者にはお勧めできません)。
- 書籍(より多くの知識システムが完全にされてお勧めします)。
- ビデオは(簡単に、それが推奨され、特に初心者。ムークラスのネットワークを理解し、あなただけの直接のキーワード検索の上、学ぶことがたくさんある見ることができるビデオ上記のビープマイルのマイルをビープ音)。
- オンラインのブログ(知識ポイントの問題を解決するための時間を見ることができます)。
ここではあなたの提案を与えるために、一緒にベストプラクティスと一緒にビデオを見てのプロセス、メモを取ります!!!
参照するには本を見ながら最高のは、あなたができるだけ早く解決しなければならない知識のポイントを理解していなかったビデオを見て、ビデオを見ながらすることができ、どのように解決するには?
まず、百度/ Googleは、検索エンジンは、彼女の友人を見つけるか、何人かの人々を知っているし、その後では解決できません。また、プロジェクトが本物でなければなりません!多くの人々は、この時間は私が行うにはどのように実際のプロジェクトを行うことができないだろう頼みますか?私はいくつかの方法でこれに従うことによって私達ができると思います:
- インターネットは、自分の能力に合わせて仕事を見つけて、実際のビデオプロジェクトやブログを一緒に行うことを教えられて見つける必要があります。行うためのプロセスは、あなたが他の人がちょうどその、重要なポイントのために、我々は自分自身を行くことを学ばなければならない、あなたは知識をマルチしたい、十分なプロジェクトを満たすために説明することがあり、多くの知識のために、タイヤを蹴るしていない、自分の考えを持っている必要があります深い学習。
- githubのコードや、実際のアイテムカテゴリ上記の雲の多くは、あなたは、あなたが改善したり、既存のプロジェクトに機能を追加することができます上の既存のコードの基礎を理解することで、彼らにプロジェクトのより深い理解を与えるために、一つの研究を選択することができています。
- 自分では、彼らが完了したいことを行うことを学ぶために暫定的に物事を発生しません、(さらに困難になりました。この方法を売却するためにあなたが基本的な考え方を気にしないので、この方法は、初心者にはお勧めしません、 )このまともな事しません単純に書かれたコードは通常困難か。
- ......
プロジェクトが行われませんが、また、改善し、改善することだけではなく。あなたの先生はJavaプロジェクト関連のバックグラウンドを持っている場合はさらに、あなたも参加して適用するためのイニシアチブを取ることができます。
あなただけの十分な事を理解し、キー、であるかを把握するために、多くのことを学ぶために、自分の時間を割り当てるために、物事のは本当に多くのことを学ばなければなりません。フレームワークのさまざまな学習に費やすエネルギーを入れないようにしてください、アルゴリズムとデータ構造は本当に重要です!
また、学習プロセスは、参照文書は、自分自身の学習では非常に有用、非常に重要であることができます。なぜなら、この目的のhttps://github.com/Snailclimb/JavaGuide大部分:私はJavaGuideを取得しなければなりませんでした。より多くの人々がより正確かつ完全に巻き込まとして客観的にコンテンツ内で、ブログに比べて、JavaGuideを話します。
推奨されるオープンソースプロジェクト
他のオープンソースプロジェクトの推薦:
- ガイド-springboot:初心者に適しただけでなく、経験豊富な開発者は(メンテナンスが一緒に歓迎し、空き時間のメンテナンス)春ブートチュートリアルにアクセスできます。
- 進歩-プログラマー:私は技術スタッフが、いくつかの良い習慣を持つべきだと思います!
- -security-JWTスプリングガイド:ゼロから始めましょう!(検証機関を含む)春のセキュリティが強化されたJWTコードの後端部。