Javaの学習ルートと方法の推奨


以下の学習ルートと方法は、著者の要約と個人的な学習経験に基づく改善から導き出されたものです。この学習ルートを使用すると、学習効率が非常に高くなると思います。

さらに、非常に重要なポイント:コーディングにはIntellij IDEAを使用することをお勧めします。また、IntellijIDEAの使用法を学ぶのに少し時間がかかる場合があります。

初心者が犯しやすい間違いについてお話ししましょう。思いついたときにプロジェクトを通して学びましょう。

多くの初心者は、特に企業でプロジェクトを行うことで学ぶようになりますが、これは望ましくないと思います。JavaFoundationまたはSpringBoot Foundationが適切でない場合は、ビデオの視聴やその他の方法でプロジェクトを開始する前に、事前に学習することをお勧めします。他にも何かがあります。なぜプロジェクトをフォローしてそれを学ぶのが最善だと誰もが言うのかわかりません。これには、このテクノロジーの基本を理解していること、またはプログラミングをある程度理解していることが必要だと思います。

私を学び、聞く方法については、eコマースシステムのWebサイトの作成から始めます。Javaベースの分散/マイクロサービスeコマースシステムを作成する場合は、以下の学習ルートに従うことができます。

最初のステップは、Javaの基本から学ぶことです(コンピューターの基本的な知識がない場合は、「コンピューターの概要」などの入門書を読むことをお勧めします)。

1つは、Javaの基本です

私の意見では、「Java Core Technology Volume1 / 2」HeadFirstJava」はどちらも、入門Javaに非常に適した本です(「JavaCore Technology Volume 1/2」には、より多くの知識ポイントがあるので、お勧めしますこの本)、「Java Programming Thoughts」は、本の意味を説得するのに少し初心者だと思います。よく読んでください。少し基礎を置いてから読むことをお勧めします。また、本を読みながらビデオを見て学ぶこともできます(自習できない人はトレーニングに参加することをお勧めします)。Java 8の新機能については、基本を学んだ後でお読みになることをお勧めします。とりあえず理解していなくても構いません。しばらくしてから振り返ってみてください。

それを読んだ後、あなたはあなたが学んだことで簡単なJavaプログラムを実装することができます、あるいはあなたはあなたが学んだことを実践するためにJavaでいくつかのプログラミング問題を解決しようとすることができます。

Javaの基本を学ぶときに、ゲームを使用して統合することはお勧めしません。なぜこのようなトレーニングコースがあるのですか?わかりやすく言うと、Gスポットを見つけることです(運転して申し訳ありません)。初心者がJavaの基礎を学んだ後にゲームをプレイすることは一般的に現実的ではありません。単純なアルゴリズムの問​​題など、解決するためのいくつかの単純なプログラムの問題を見つけることをお勧めします。

要約することを忘れないでください!基礎を築く!重要なことを書き留めてください。APIドキュメントは、いつでも参照できるように、表示できる場所に配置されています。より良いコードを書けるようにするために、「EffectiveJava」「Refactoring」の2冊を読むことができます。

また、学習後は以下の記事を読んで学習状況を確認できます。これらの記事は私自身のものではありませんが、ネットワーク全体で最も価値のあるJavaの基本的な知識の要約である可能性があります。結局のところ、これらの記事は私のJavaGuideでオープンソースであり、さまざまなリーダーや私によって継続的に改善されています。

2.オペレーティングシステムとコンピュータネットワーク

オペレーティングシステムに関しては、オペレーティングシステムの基本的な知識とLinuxの一般的なコマンド、およびいくつかの重要な概念を習得するだけで十分だと思います。

オペレーティングシステムに関しては、真剣に読んだことがないため、推奨できるオペレーティングシステムに関する本はありません。オペレーティングシステムは比較的退屈なので、最初にビデオを見る方が良いかもしれません。

さらに、Linuxの場合、基本的な使用法を習得するには、ディレクトリ切り替えコマンド、ディレクトリ操作コマンド、ファイル操作コマンド、ファイルを圧縮または解凍するコマンドなど、いくつかの一般的なコマンドに精通している必要があります。

コンピュータネットワークの勉強は、基礎知識を身につければ十分だと思います。深く勉強する必要はありません。一般的な面接は、この面ではそれほど厳しくありません。結局、ネットワーキングに特化しているわけではありません。インターネットの接続方法」「図解HTTP」2冊をお勧めします。どちらも面白くてわかりやすいタイプで、基本的な知識がない人に適しています。

プログラムを書く人なら誰でも、「プログラム設計=アルゴリズム+データ構造」という式を知っていますウェブサイトを強化したいのであれば、データの構造やアルゴリズムを学ぶ必要があると思います。したがって、3番目のステップでは、時間をかけてデータ構造とアルゴリズムを確認することをお勧めします。ただし、要求はしないでください。あなたは時間を埋め合わせなければなりません!

3、データ構造とアルゴリズム

大規模な工場に参入したい場合は、Javaの基礎を学んだ後、毎日少し時間を取ってアルゴリズムとデータ構造を学ぶことをお勧めします。プログラミング能力を向上させるために、Leetcodeに固執することもできます国内外の大手企業への取材に関しては、リートコードが道になっていると言えます。

アルゴリズムとデータ構造を使い始めたい人は、「アルゴリズムの図解」「ビッグトークのデータ構造」の2冊を読むことをお勧めします。これら2冊はあまり古典的な本ではありませんが、もっと興味深いものです。データ構造の友達はとてもフレンドリーです。**「アルゴリズムの概要」**は非常に古典的ですが、始めたばかりの人にとってはそれほど友好的ではありません。

さらに、あなたに推薦された非常に良いアルゴリズムの本があります、この本の名前は「アルゴリズム」です、本のコードはJava言語で書かれています。この本には、基本的で包括的な説明、読者への親しみやすさなど、あまりにも多くの利点があります。この本の唯一の欠点は、それが厚すぎることだと思います(低音のBB、いくつかの知識のポイントを説明するときに著者が少し冗長に関連している可能性があります)。この本に加えて、3冊「剣の指オファー」「プログラミングの真珠」、および「プログラミングの美しさは、」アルゴリズムのインタビューのために非常に有用である多くの大物、によって推奨されています。「アルゴリズムの美しさ」という本もとても良く、余暇の読書にとても適しています。

Webサイトのページ構築にはフロントエンドの知識が必要であり、フロントエンドとバックエンドの相互作用にもフロントエンドの知識が必要です。したがって、4番目のステップでは、フロントエンドの知識について学ぶことをお勧めしますが、あまりよく学ぶ必要はありません。フロントエンドの知識の基本を理解したら、合格

4つのフロントエンドの知識

このステップは主にフロントエンド(HTML、CSS、JavaScript)の基本を学ぶことですが、もちろん、BootStrap、Layuiなどの比較的単純なフロントエンドフレームワークについても学ぶことができます。この分野にはオンラインで多くのリソースがあります。

また、記憶が正しければ、テンプレートエンジンはHTMLに非常によく似たthymeleafであり、基本的な構文を理解すれば使いやすいというのがSpringBootの公式の推奨事項です。これらのフレームワークをlayuiおよびbooystrapと組み合わせることで、より美しいページを作成することもできます。バックエンドプロジェクトなどのいくつかの単純なページを開発して、いくつかの操作を実行するための単純なフロントエンドページを作成し、thymeleafを直接使用します。

現在、フロントエンドとバックエンドは分離されています。現時点では、ほとんどのプロジェクトは、React、Angular、Vueなどの強力なフレームワークを使用して開発することを好みます。これらのフレームワークを開始するには、より高い要件があります。フルスタックの方向で開発したい場合(著者の現在の方向、私はReactを使用して会社で2つの小さなプロジェクトを実行しました)、優れたJS基盤を構築してから、React、Angular、Vueのいずれかを選択することをお勧めします。学べ。Vueはより国内で使用され、ReactとAngularは一般的に海外で使用されます。

バックエンドと対話する方法は?一般に、Axiosは、ReactやVueなどのフレームワークを使用するときによく使用されます。

ユーザー情報や注文情報など、当社のWebサイトのデータを保存する必要があるため、次のステップでは、主要なWebサイトで広く使用されているデータベースであるMySQlを学習することをお勧めします。SQLステートメントの記述方法を学ぶ必要があるだけでなく、インデックスなどの重要な概念を理解することをお勧めします。

ファイブ、MySQL

MySQLの基本的な使用法、基本的な追加、削除、変更、SQLコマンド、インデックス、およびストアドプロシージャについて説明します。おすすめの本**「SQLBasicCourse(2nd Edition)」(エントリーレベル)、「High Performance MySQL:3rd Edition」(上級)、「MySQL Must KnowandKnow」**。

6つの一般的に使用されるツール

非常に重要です!非常に重要です!特にGitとDocker。

  1. IDEA:基本的な操作と一般的なショートカットに精通している。
  2. Maven:一般的なフレームワークを学習する前に、半日前にMavenの使用法を学習することをお勧めします。(どこでもJarパッケージを見つけてください。Jarパッケージをダウンロードするのは本当に面倒です。Mavenを使用すると多くのことを節約できます)。
  3. Git:基本的なGitスキルも必要です。学習プロセス中にGithubでコードをホストしてみてください。
  4. Docker:Dockerを使用して、研究で使用する必要のあるMySQLなどのソフトウェアをインストールする方法を学びます。これははるかに便利で、時間を大幅に節約できます。

共通のフレームワークを使用すると、開発作業を大幅に簡素化できます。一般的なツールを学習した後、一般的なフレームワークの学習を開始できます。

7つの一般的に使用されるフレームワーク

Struts2の(あなたが学ぶ必要はありません)、学び春、SpringMVC、Hibernateは、MyBatisの、史郎に精通し、他のフレームワーク、(オプション)春の原則(インタビューのために必要大手メーカー)、そして学ぶことが必要であるSpringBootをSpringBootを学ぶことは本当に素晴らしいです重要多くの企業新卒者向けにSpringBootを直接開始していますが、時間が許せばSpringとSpringMVCを事前に学ぶことをお勧めします

春は本当に重要です!AOPとIOCの2つの概念を理解する必要があります。SpringにおけるBeanの範囲とライフサイクル、SpringMVCの動作原理の詳細な説明などの知識ポイントはすべて非常に重要であり、理解する必要があります。

8.マルチスレッドの簡単な使用

マルチスレッドのこの部分は、理解して開始するのが難しい場合があります。初期段階では、基本を簡単に理解し、後でエネルギーと機能が得られたときに戻って詳しく調べることができます。

マルチスレッドを学習した後、次の質問を通じてマルチスレッドを習得したかどうかを確認できます。

Javaマルチスレッドのナレッジベース:

  1. スレッドとプロセスとは何ですか?
  2. スレッドとプロセスの関係、違い、長所と短所を簡単に説明してください。
  3. 並行性と並列性の違いについて話しますか?
  4. なぜマルチスレッドを使用するのですか?
  5. マルチスレッドを使用すると、どのような問題が発生する可能性がありますか?
  6. スレッドのライフサイクルと状態について話しますか?
  7. コンテキストスイッチングとは何ですか?
  8. スレッドデッドロックとは何ですか?デッドロックを回避する方法は?
  9. sleep()メソッドとwait()メソッドの違いと共通点は何ですか?
  10. start()メソッドを呼び出すときにrun()メソッドを実行するのはなぜですか?run()メソッドを直接呼び出すことができないのはなぜですか?

Javaマルチスレッドの高度な知識:

  1. 同期キーワード:①同期キーワードの理解について教えてください;②同期キーワードの使い方とプロジェクトで使用したことがありますか;③同期キーワードの基本原理について教えてください;④JDK1.6について話してください後で、synchronizedキーワードの下部でどのような最適化が行われたか、それらを詳細に紹介できますか。⑤synchronizedとReentrantLockの違いについて説明してください。
  2. 揮発性キーワード:①Javaメモリモデルについて話します;②同期キーワードと揮発性キーワードの違いについて話します。
  3. ThreadLocal:①はじめに;②原理;③メモリリークの問題。
  4. スレッドプール:①なぜスレッドプールを使用するのですか?②RunnableインターフェースとCallableインターフェースの違いを実感してください。③execute()メソッドとsubmit()メソッドの違いは何ですか?;④スレッドプールの作成方法。
  5. Atomic Atomic Class:①AtomicAtomicClassの紹介;②JUCパッケージのAtomicClassの4種類は?;③AtomicIntegerの使い方を教えてください;④AtomicIntegerクラスの原理を簡単に紹介してください。
  6. AQS:①はじめに;②原理;③AQSの一般的に使用されるコンポーネント。

9、配布

  1. シンプルな分散サービスを実装するためのDubboとZookeeperを学ぶ
  2. アクセス速度を改善し、MySQLデータベースへの依存を減らすためのRedis学びます。
  3. Elasticsearchを使用してWebサイトに検索機能を追加する方法を学ぶ
  4. 一般的なメッセージキューRabbitMQ、Kafkaなど)を学習して、サービスを分離します(ActiveMqを学習しないでください、削除されました)。

この時点で、あなたは基本的なJavaプログラマーであるはずです。分散プロジェクトを通して学ぶことをお勧めします。これらの知識ポイントを習得するためのより良い方法だと思います。また、ビデオを見て自分で行うことをお勧めします。理解できない知識ポイントに遭遇した場合は、オンラインブログや関連書籍を時間内にチェックして、学習効果を高める必要があります。

私たちは知識を広げ、独立した学習の意識を発達させることを学ばなければなりません。ダークホースプロジェクトでのこれらの知識ポイントの導入は、比較的表面的なものです。

深く研究を続けるには、NettyとJVMを理解する必要があります。

10.詳細な調査

マルチスレッドの知識に戻って確認することができます。また、空き時間を使ってNIONettyについて学ぶこともできるので、履歴書にもっと多くのこと含めることができます。大規模な工場に行きたい場合は、JVMの知識も必要です(Javaメモリ領域、仮想マシンガベージアルゴリズム、仮想ガベージコレクタ、JVMメモリ管理)推奨される「Java仮想マシンの詳細な理解:JVMの高度な機能とベストプラクティス(最新) 「SecondEdition」と「PracticalJavaVirtual Machine」は、読みづらい場合は、私が編集したドキュメントも読むことができます。

さらに、マイクロサービスは最近特に人気があり、多くの企業はインタビュー中にマイクロサービスの知識を明らかに必要としています。エネルギーがあれば、SpringCloudエコシステムのマイクロサービスについて学ぶことができます。

マイクロサービスの概念は巨大で、さまざまな種類のテクノロジーがありますが、現在、大規模なインターネット企業がこれらを広く使用しています。正直なところ、これらのことは得意ではありません。マイクロサービスプロジェクトは実際には行っていません。ただし、以下は、私が要約したマイクロサービスの価格比較に関するいくつかの重要な知識です。

11.マイクロサービス

この部分は多すぎて、選択的な学習です。

関連技術:

  1. ゲートウェイ:コン、ソウル;
  2. 分散コールチェーン:SkyWalking、Zipkin
  3. ロギングシステム:キバナ

Spring Cloud関連:

  1. ユーレカ:サービスの登録と発見。
  2. リボン:負荷分散;
  3. Hytrix:ヒューズ;
  4. Zuul:ゲートウェイ;
  5. Spring Cloud Config:Configuration Center;

Spring CloudAlibabaも学ぶ価値があります:

  1. Sentinel:マイクロサービスの信頼性と監視を可能にする軽量で強力なフロー制御コンポーネント(軽量フロー制御、ヒューズダウングレードJavaライブラリ)。
  2. dubbo:Apache Dubboは、Javaベースの高性能オープンソースRPCフレームワークです。
  3. nacos:Nacosは、マイクロサービスの検出、構成、および管理を支援することをお約束します。Nacosは、動的なサービス検出、サービス構成、サービスメタデータ、およびトラフィック管理を迅速に実現するのに役立つ一連の使いやすい機能を提供します。NacosはDubboの登録センターとして使用できます。
  4. Seata:Seataは、使いやすく、高性能なJavaベースのオープンソース分散トランザクションソリューションです。
  5. RocketMQ:Alibabaがオープンソースとする高性能で高スループットの分散メッセージングミドルウェア。

12.まとめ

主に各ステップの内容をまとめ、学習計画の提案があります。何を学ぶべきかを知った後、どうすればそれを学ぶことができますか?すべての知識ポイントを学ぶことは、次のように始めることを検討できると思います。

  1. 公式ウェブサイト(英語である可能性が高いですが、初心者にはお勧めしません)。
  2. 書籍(知識はより体系的で完全であり、推奨されます)。
  3. ビデオ(特に初心者の場合は、理解しやすく、推奨されます)。
  4. オンラインブログ(特定の知識ポイントで問題を解決するときにそれを見ることができます)。

これが皆さんへの提案です。ビデオながらフォローしてメモを取るのが最善です!

ビデオを見ながら本を探すのがベストです。ビデオを見てもわからない知識のポイントは、できるだけ早く解決する必要があります。どうすれば解決できますか?

まず、Baidu / Googleです。検索エンジンで解決できない場合は、友達や知り合いを見つけてください。また、実際のプロジェクトを実施する必要があります!実際のプロジェクトがない場合はどうすればいいのかと多くの人から聞かれます。私はいくつかの方法があると思います:

  1. あなたの能力と仕事探しのニーズを満たす実用的なプロジェクトのビデオまたはブログをオンラインで見つけて、それをするために先生に従ってください。その過程で、自分で考えてやろうとしないでください。多くの知識ポイントでは、他の人の説明でプロジェクトを満足させることができます。自分でもっと知識が必要な場合は、自分で重要な知識ポイントに行くことを学ぶ必要があります。深い学習。
  2. GithubやCodeCloudには実用的なプロジェクトがたくさんありますが、どれを選んで勉強するかを選択できます。プロジェクトをよりよく理解するために、元のコードを理解することに基づいて、元のプロジェクトを改善または追加することができます。
  3. 自分でやりたいことを作ってください。知らないことを見つけたら、一時的に学んで今すぐ売ることができます(この方法は難しいですし、基本的な考え方がないので初心者にはお勧めしません。書かれたコードは一般的にまともなものを作るのが難しいか不可能です)。

プロジェクトを行うことは、行うことだけでなく、改善および改善することでもあります。さらに、教師が関連するJavaバックグラウンドプロジェクトを持っている場合は、積極的に参加を申請することもできます。

時間を割くことを学ぶ必要があります。学ぶことはたくさんありますが、本当にたくさんあります。どのことが焦点であり、どれが理解するのに十分であるかを理解するだけで十分です。さまざまなフレームワーク、アルゴリズム、データ構造の学習にエネルギーを費やさないでください。



参考資料:「Java中級および上級コア知識の包括的分析」3月の準備を学ぶための学習資料を入手する時が来ました!
先着順で座席数に限りがございます!

これらの学習教材を入手したい学生は、ここをクリックして無料で入手できます "" "" "" "

おすすめ

転載: blog.csdn.net/Java_Caiyo/article/details/112568919