Javaの学習プロセス

巴扎黑
巴扎黑オリジナル
2017-07-24 17:22:181510ブラウズ

Java プログラマーを学ぶための提案

この部分は、実際にグループ内の多くの友人から寄せられた質問に答えるために使用されます。何かアドバイスをしてくれませんか?

今日のLZはいくつかの実践的な情報について話しますので、学習方法やテクニックについて話すのではなく、各段階で学ぶべき内容やいくつかの本について直接話しましょう。このパートの内容は、Java にキャリアを切り替えたい一部の学生にも当てはまります。

皆が注目する前に、LZ は 2 つの点を指摘しておきたいと思います。

1. LZ 自身が Java バックエンド開発者であるため、Java Web および Java バックエンド開発に携わっていない学生は、推奨される学習コンテンツを参照してください。ただし、それを真似しないでください。

2. 以下の [パート 1] の推奨コンテンツは、できるだけ早く仕事ができる Java 開発者になることを目的としており、失業中で Java への移行を準備している学生に適しています。学校の学生の場合は、以下の学習を検討する前に、必ず基礎 (コンピュータ システム、アルゴリズム、コンパイル原理など) を学習してください。

パート 1: 現役の学生や Java への移行を準備している学生を含む、まだ Java の作業を行ったことのない学生向け。

1. Java の基本

まず、学習する基本的な Java チュートリアルを見つけます。

Java の基本を学ぶときは、当たり前だと思っていることをできるだけ書き出して実行してみると、そうではないことがわかります。信じられないけど、試してみてください。

上記の内容を学習すると、Java の基本を理解できるようになります。Java 言語でいくつかの簡単なプログラムを作成し、メモ帳などの最も簡単なエディタを使用できます。

この時点では、急いで次の部分に進まないでください。いくつかのプログラムを作成し、これらの基本的な内容にできるだけ慣れてください。

2. Web 開発

プログラムを数日間書いた後、単純な電卓を実装したり、ドキュメントを読んだりするなど、書いた内容が役に立たないように思えて混乱することがよくあります。この時期は自分が面白いと思うものを書くことを学ぶ必要があるので、より多くの知識を学ぶ必要があります。

これらのコンテンツは主に Web 開発に関連しており、HTML/CSS/JS (フロントエンド ページ)、Servlet/JSP (J2EE)、Mysql (データベース) 関連の知識が含まれます。

学習順序は前から後ろにあるので、最初に学習するのは HTML/CSS/JS (フロントエンド ページ) です。この部分は上記の runoob ウェブサイトで見つけることができます。自分でいくつかのページを書いてみることもできますし、もちろん、それを最も美しくするために最善を尽くすこともできます。コンテンツのこの部分は理論的にはバックエンド Java にとって特に重要ではありませんが、少なくとも自分でいくつかの簡単なページを作成できるレベルに達する必要があります。

次に、学習する必要があるのはサーブレット/JSP (J2EE) 部分です。この部分は Java バックエンド開発で非常に熟練する必要がある部分であり、3 つの部分の中で最もエネルギーを必要とします。現時点では、メモ帳を使用する代わりに開発ツールの使用方法を学ぶ必要があります。Eclipse を選択することもできます。

Eclipse をダウンロードしてインストールしたら、ビデオのチュートリアルに従って段階的に学習し、必ずさらに実行してください。サーブレット/JSP ビデオの選択に関しては、Ma Soldier のビデオが業界で認められているため、皆様にお勧めします。もちろん、LZ 自身は彼のビデオを見ていないので、より良い選択がある場合は、LZ に干渉されずに自分の意見を貫くことができます。

当初、LZ も教育ビデオを公開する予定でしたが、時間の問題により断念することにしました。ただし、ビデオの視聴中に問題が発生した場合は、LZ のコミュニケーション グループに来て質問するか、Douyu にアクセスして LZ のライブ ブロードキャストを視聴して質問してください。ライブ ブロードキャストのアドレスとグループ番号は、左側にあります。 LZの個人ブログです。

最後のステップは、データベースの使い方を学ぶことです。MySQL は優れた入門選択であり、Java 分野で主流のリレーショナル データベースは mysql です。この部分は通常、Servlet/Jsp を学習する際に明らかになります。JDBC 部分はデータベース関連の部分です。 JDBC を使用してデータベースを操作する方法を学ぶだけでなく、navicat や sqlyog などのデータベース クライアント ツールの使用方法も学ぶ必要があります。2 つのうちの 1 つを選択してください。

3. 開発フレームワーク

上記の内容を学習した後は、現時点ではまだ十分ではなく、学習を続ける必要があります。開発効率を向上させるために、企業はいくつかの Java Web フレームワークを使用するため、開発フレームワークもいくつか学ぶ必要があります。

現在の主流はSSMフレームワーク、つまりspring、springmvc、mybatisです。これら 3 つのフレームワークを構築し、それらを使用して Web プロジェクトを簡単に追加、削除、変更、クエリする方法を学ぶ必要があります。これらの構成が何を意味するのか、なぜそれを行う必要があるのか​​を理解する必要はありません。後で学習できます。ただし、Web フレームワークを構築するには、これら 3 つをすぐに使用できる必要があります。最初の構築プロセスを記録できます。必ず使用します。

SSM を構築する過程で、maven と呼ばれるツールに頻繁に触れる可能性があることにも言及したいと思います。このツールは今後の作業でほぼ使用することになるツールでもあるため、SSM を構築する際に Maven について学ぶこともできます。現段階では、インターネット上で Maven の基本的な使い方を学ぶだけで済みます。仕事の経験が増えるにつれて、徐々にハイエンドの使い方に触れるようになります。

SSM フレームワークの学習についてのアドレスをお勧めします。ここにビデオがありますので、ご覧ください。

4. 仕事を見つけます

開発フレームワークの学習を終えたら、学校に通っている場合はインターンシップ、卒業している場合はフルタイムの仕事を見つける必要があります。同時に、就職活動中に勉強をやめるべきではありません。正確に言うと、将来勉強をやめるべきではありません。

上記の内容を急いで学習しただけですが、インターネットは最も重要な教師です。

パート 2: 働いて 1 年未満の学生向け。

おめでとうございます。この時点で、あなたはすでに Java ジョブを持っています。この段階は成長が非常に早く、残業も多くなる時期です。

しかし、残業するからといってリラックスできるわけではありません。業界に入った瞬間から学び続けなければならない、という LZ の言葉を常に思い出してください。今年中には少なくとも「Java Programming Thoughts」という本を読む必要があります。この本の内容は、Java をより深く理解するのに役立つものであり、Java の基礎のアップグレード版です。

この本はとても分厚いので、LZはこの本を読むのにまるまる3か月かかりました。普通のスピードでやれば半年くらいで終わると思います。 LZ では、1 年以内にこの本を読み終える限り、それほど高い要件はありません。もちろん、LZが読んだ後に言ったのは、一度読むのではなく、完全に吸収するということですので、内容によっては複数回読んでも構いません。

つまり、この段階での中心的な学習アイデアは、職場で実践して Java の基本をより深く理解することです。

パート 2: 社会人 1 ~ 2 年目の学生向け。

この期間の学生はすでに Java についての理解を深めています。しかし、オブジェクト指向の経験はまだ浅く、プログラミングする際には機能を完成させるレベルに留まり、設計の問題を考慮することはほとんどありません。

それで、この時点でデザインパターンが来ます。当時LZが読んでいたのは『Dahua Design Patterns』という本で、デザインパターンのブログの完全版を書いていました。したがって、LZ では、全員が長くても 1 年以内にブログを開始する必要があり、デザイン パターンがブログの始まりとなります。

LZ が提示していることは基本的に最低限の要件であることを覚えておいてください。そうでない場合は、5 年後に自分よりも高い給料をもらっている人を羨んだり、給料が高い人を羨んだりすべきではありません。とある職業の会社に入社した。

今年は、デザインパターンをよく知る必要があり、「Dahua デザインパターン」があなたの出発点になります。

さらに、今年はデザインパターンだけが仕事ではありません。コード記述の最適化に関する本も読む必要があります。たとえば、「既存のコードの設計を改善するためのリファクタリング」や「効果的な Java」などです。

つまり、この段階での中心的なタスクは、コーディング能力を向上させ、エレガントなコードを書けるようになることです。

パート 3: 2 ~ 3 年働いている学生向け

一部の学生は、この時点ですでに非常に優れていると感じているため、ゆっくりとリラックスし始めます。覚えておいてください、あなたはまだずっと若いのです。

この段階で必ず読んでおくべき本があります。それは「Java 仮想マシンの徹底理解」です。この本は間違いなく Java 開発者にとって最も重要な本です。 LZ の目には、この本は「Java プログラミングの思想」よりもさらに重要です。

この本の内容は、Java 仮想マシンを包括的に理解するのに役立ちます。この段階では、Java が JVM 上で実行されることをすでに知っている必要があります。したがって、JVM について知らない理由はありません。

さらに、過去 2 年間の仕事の中で、多かれ少なかれ同時実行性にさらされてきたはずです。この時点で、並行処理関連の知識をより深く理解する必要があります。この部分については、LZ は「Java Concurrent Programming in Practice」という書籍をお勧めします。この本を読めば、並行性の部分は基本的に理解できます。

同時に、この段階でしなければならないことはたくさんあります。この時点では、使用しているフレームワークと Java クラス ライブラリについての理解を深める必要があります。したがって、使用しているフレームワークのソース コードを含め、JDK の一部のクラスのソース コードを確認する必要があります。

これらのソース コードを理解するための前提条件は、デザイン パターンをよく理解している必要があります。そうしないと、ソースコードを見るときに、「なぜこのコードはこのように書かれているのか?」という疑問が常に発生します。冗長に見えるのに、なぜこのインターフェイスを定義するのでしょうか?

これらの学習プロセスは連動していることもわかります。どこかの段階で失敗すると、本当についていけなくなるか、段階的に速度が落ちてしまいます。そして、LZ は、現段階で、ここに記載されている以上のことを学んだことを皆さんに伝えることに非常に責任があります。したがって、LZ が述べたことは最小限の要件にすぎないとは考えないでください。LZ だけでなく、多くの人がこの記事の範囲よりもはるかに多くのことをこの期間に学びました。

このペースについていけない場合、数年後、プログラマーの市場が良くなければ、おそらく他の人より給料が低いだけでなく、会社も他の人より良くなくなるでしょう, しかし、まったく仕事を見つけることもできなくなります。

つまり、この段階で行う必要があるのは、基礎となる Java および Java クラス ライブラリを深く理解することです (たとえば、同時実行に関する本は、Java 同時実行パッケージ java の内容です。 concurrent)、つまり、JVM と JDK の関連コンテンツ。また、使用しているフレームワークをより深く理解する必要があります。ソースコードを読むか、公式ドキュメントを読むことをお勧めします。

また、2年生の段階でも取り入れるべき学習方法がもう一つあり、それは車輪作りです。

「車輪の再発明をするな」という議論に耳を貸さないでください。それは企業が時間とコストを節約するためにでっちあげたものです。あなたが作成する車輪はすでに存在している可能性があり、一般に、あなたが作成する車輪は既存の車輪ほど優れていないため、車輪の再発明は他の人にとって価値がない可能性があります。しかし、他人にとって価値がないからといって、自分にとって価値がないわけではありません。

ホイールを作るプロセスは、ゼロからのプロセスです。このプロセスでは、コーディング能力をテストするだけでなく、ホイールをスケーラブルで堅牢にする必要もあります。

そしてホイールを作る過程では様々な問題に遭遇しますが、それらの問題は多くの場合学びの機会になります。ホイールを組み立ててみると、実際に多くのことを達成したことに必ず気づくでしょう。

したがって、この段階では、上記の JVM、JDK、およびフレームワークのソース コードを理解することに加えて、他の人の優れたソース コードに基づいて想像できるホイールを構築することも求められます。

パート 4: 社会人 3 ~ 4 年目の学生

この段階の学生にとっては、すでに上達するのは難しく、この段階での学習はより多様化していることがよくあります。

なぜなら、過去 3 年間に、ビッグ データ、分散キャッシュ、分散メッセージング サービス、分散コンピューティング、ソフト ロード バランシングなど、多かれ少なかれ他のテクノロジーにさらされてきたはずだからです。これらのテクノロジーのいずれかに習熟していれば、今後の面接で大きなアドバンテージとなるため、特定のテクノロジーに興味がある場合は、この時点でそれについて深く学ぶことができます。テクノロジーは仕事で使用しているものである必要はありませんが、関連性がなければなりません。

そして、新しいテクノロジーを研究するときは、急いで研究しないでください。今日、一部の学生はビッグデータに取り組み、Hadoop や hbase などに取り組みました。しばらくして、退屈に感じて、redis などの分散キャッシュについて勉強し始めました。それからしばらくして、MapReduce や Storm などの分散コンピューティングを再び勉強し始めました。

結局、履歴書でビッグデータ、分散キャッシュ、分散コンピューティングについて知っていると自慢したのは、どれも表面的なものにすぎなかったのです。いざとなったら、面接官は何気ない質問でそれを理解してくれるでしょう。

プログラマーとして、日常的に多くのテクノロジにさらされる可能性があることを覚えておく必要があります。しかし、あるテクノロジを自分の利点にしたいのであれば、そのテクノロジに対する理解が大部分の人よりも強くなければなりません。人々はそれを行うことができます。

したがって、この段階では、最初の 3 年間の内容を単純に学習することはできませんが、まだ十分に深く学習していない場合は継続する必要がありますが、この時点で構築についてさらに検討する必要があります。あなたの利点は、違いとも言えます。

違いを理解するのは難しいことではなく、自分をユニークにすることだと私は信じています。最初の 3 年間の学習は、基本的に資格のある Java 開発者になるには十分ですが、優れた Java 開発者になるにはまだ程遠いです。

いわゆる優秀とは、他の人ができないことができることを意味します。最初の 3 年間で学んだことは、数年間 Java 開発を行っている多くの人が習得できます。したがって、自分自身を差別化するには、別の方法を見つけて深く勉強する方向を見つけ、将来、分散コンピューティングの分野の専門家、専門家など、この分野の専門家になれることを期待する必要があります。ビッグデータ分野、同時実行性などの分野の専門家。

さらに、違いを確立することに加えて、基本的な不足を補う必要もあります。これまで、LZ は基本的な知識について言及していませんでした。その理由は、基礎を早く学びすぎると混乱しやすいだけでなく、混乱したときに心理的な影を引き起こしやすく、将来これらの基礎を学びたくないからです。しかし、たとえば、分散コンピューティングを学びたい場合、アルゴリズムを理解していない場合は、それを試してみてはいかがでしょうか。たとえば、分散キャッシュを実行したいが、コンピューター システムのメモリがわからない場合、どうすればキャッシュを実行できるでしょうか?

あなたの基礎がすでに非常に強固である場合は、おめでとうございます。これまでの仕事でこれらの基礎の助けを十分に理解していると思います。しかし、LZ は、ほとんどの人は、専攻を卒業した人であっても、アルゴリズム、コンピュータ システムの原理、コンパイルの原理など、元々の基礎知識がどれほど強いかを敢えて語ろうとしないと考えています。

しかし、誰にとっても時間は限られており、これらの基本的な本はそれぞれ 1 年半以上読み通すことができないため、やはり選択をしなければなりません。アートは負担ではありませんが、問題は、アートには代償が伴い、それには時間とエネルギーを費やす必要があり、LZ は個人的に同じコストで最大の利益を得ることを好みます。

まず、LZがお勧めする基本書籍は『コンピュータシステムの徹底理解』『Tcp/IP詳解 上・下・下巻』『データの構造とアルゴリズム』の3冊です。 。その中に TCP/IP に関する書籍が 3 冊ありますが、ここではこの 3 冊を 1 つの大きな書籍として扱います。

これら 3 冊の本は、それぞれ 3 つのタイプの人に適しています。「コンピュータ システムの詳細」は、Java Web 開発と APP バックエンド開発に従事している人に適しています。 『TCP/IP 詳解 上・下・下巻』は、例えば netty を使って開発する場合、TCP/IP についての深い理解が必要となる方に適しています。 『データ構造とアルゴリズム』という本は、先ほど述べた分散コンピューティングなどのコンピューティングの研究を行う人に適しています。

さらに、LZ は、ここで述べた適合性は、他の 2 冊の本があなたにとって役に立たないという意味ではないことを強調したいと思います。たとえば、Java Web および APP のバックエンド開発を行う場合は、『Tcp/IP 詳解 第 1、2、3 巻』という書籍も役立ちます。これはあくまで優先順位ですので、時間があれば3冊を集中的に読んでいただければと思います。ただし、時間が限られている場合は、最も役立つ本を選んで最初に読んでください。

理論的に言えば、今年この 3 冊のうち 1 冊を集中的に読むことができれば、非常に強力になります。基礎とこれまでの実務経験を活かして、自分の分野を開拓することができます。

この年、あなたは自分の分野を計画し、自分の利点を確立し、違いを生み出す必要があります。自分の分野について十分に理解していないと、長く仕事をすればするほど、より多くのテクノロジーにさらされることになり、簡単にテクノロジーの海に溺れてしまうようです。より多くのテクノロジーにさらされると、より多くのテクノロジーを使用するようになりますが、メリットはありません。

「LZ、自分の専門分野がわからない?どうすればいいの?」と尋ねる学生もいるかもしれません

このような人に対して、LZ は「クソ、これは。」と言いたいだけです。

パート 5: 4 ~ 5 年間働いている学生

去年の経験を経て、あなたはすでに一定の洞察を持っていると思いますこの時点で、技術的なボトルネックに遭遇しているはずです。

現時点では、自分の影響力を高めるために急いではいけません。より多くの人に影響を与えるために、いくつかの有名な企業に行ってみましょう。もちろん、Github にアクセスして独自のオープンソース プロジェクトを作成し、独自の製品を構築することもできます。このオープンソース プロジェクトは、これまでのホイール作成とは異なり、他の人にとって真に価値のあるホイールを作成するために全力を尽くす必要があります。

技術学習のこの段階ではボトルネックに遭遇しやすく、学術研究に特化していない限り、ある程度のレベルに達した後はさらに深めても効果が非常に小さいことがよくあります。残念ながら、ほとんどのプログラマーはこれを行うことができません。

現時点で影響力を向上させることは、技術的なボトルネックに遭遇しやすいからだけでなく、影響力がより多くの機会を生み出す可能性があるためでもあります。プログラマーは、ある意味、有名人に似ています。優れたテレビシリーズや映画が、スターのグループを生み出すこともあります。

例えば、中国では淘宝、Alipay、QQ、Baidu、WeChat などの人気プロジェクトがいくつかあります。これらのプロジェクトごとにプログラマーのグループが作成されました。 LZ は、あなたがここのプロジェクトの中心的な開発者である場合、そのようなタイトルを持っているだけですでに大きな利点があると言います。さらに重要なのは、タイトルは結局のところ単なるタイトルであり、この種のプロジェクトを行う場合、それはあなたの経験にとって非常に強力なものでなければなりません。

そして、そのようなプロジェクトに参加したい場合は、運に頼るだけでなく、影響力も非常に重要な手段です。例えば、分散コンピューティングの分野で一定の影響力を持っている場合、分散コンピューティングに関連した良いプロジェクトがあれば、相手も誘ってくれる可能性が高いです。たとえ誰かに誘われなかったとしても、あなたが率先して面接に行ったとしても、相手がこの分野におけるあなたの影響力を知っていれば、それは間違いなく大きな役割を果たし、その役割はあなたの現在の技術力を超える可能性さえあります。

したがって、この段階でのあなたの最大の課題は、自分の影響力を高め、今後10年間の社会人キャリアにおけるその日に備えることです。自分の影響力と過去に蓄積したスキルを頼りに素晴らしいプロジェクトに参加できれば、今後 5 年間は成功するでしょう。

もちろん、LZ は今、プログラマになって 4 年半も経っていません。したがって、4 ~ 5 年の部分に関しては、LZ の意見が正しいとは限りません。必ずしも誰にでも当てはまるわけではありません。ですので、皆様もご自身の判断で今年をどう過ごすか決めていただければと思います。

結論

この記事は全体的に非常に長いですが、実際には主に2つの部分について話されており、1つは社会採用面接の準備であり、もう1つは面接の学習です。 Javaのキャリア。

この 2 つの部分については、すでに LZ が自身の意見を述べていますが、繰り返しになりますが、誰もが知識を吸収する際には、本質を抽出し、カスを取り除く能力が必要です。 LZ の言ったことには正しいものもあれば、間違っているものもあり、自分に適しているものもあれば、適していないものもあるかもしれません。それは自分で判断する必要があります。

実際、あなたの人生や仕事でも同じで、好きな人もいれば嫌いな人もいます。でも実は、好きな人にも欠点があるし、嫌いな人にも長所があるのです。嫌いな人の良いところを学ぶ必要があり、決して棒で殴り殺してはいけません。そうすることで学び、成長するための多くの機会が失われるだけです。

さて、長く言いましたが、この記事がプログラマー、またはプログラマーになろうとしているプログラマーにとって役立つことを願っています。

Javaを学習中の学生の皆様、ご注意ください! ! !

学習プロセス中に問題が発生した場合、または学習リソースを入手したい場合は、Java 学習交換グループ (299541275) に参加してください。一緒に Java を学びましょう!

以上がJavaの学習プロセスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。