#ITスターは夢#体験の共有ではありません。非常にLinuxのC / C ++の学習ルートの概要を詳細に!テンセントオファーは取ることがあります

最近、私はほとんど頻繁にC ++とC ++の開発の背景にはどのような基本的なスキルの具体的な準備金を問うべきで学ぶ方法などの質問に答えるに招待さを知っています。

自身私はので、この記事を書いて、生徒を少し開発する背景に従事する希望を与えることを期待して、スキルツリーにパスし、ポイントを学び、独自のC ++バックエンドの開発を共有し、現在テンセントのソフトウェア開発作業に従事C ++バックグラウンド開発作業に従事しています参照、あなたが少なく、より良いいくつかの迂回路を取ることができます。

工欲善其事必先利其器、良い本は非常に各スキルポイントの後、私はいくつかの本をお勧めします、少ないリソースでより多くの学習作り、私はすべての書籍やリファレンスのために良い評判を読みました。

必要とシークのリソース、学生を得ることができます学習ルートを終了します。

私の学習パスを共有し、あなたは再びそれを勉強真剣にこのパスに沿って学ぶことができるならば、私はバックグラウンドで技術を開発したいと思いますが、すでにほとんどのメーカーによって、プロジェクトの実践と相まって非常に良い技術的な蓄積は、何のインタビューではありません持っています問題。

統合されたコンピュータの基礎知識

CSまたはソフトウェアエンジニアリングの大学院生以上のテストは、このタイトルに精通していないこと、のはい、私が話しているコード408のコースの基本的なコンピュータが一体化しますこのプロのコースが含まれます:データ構造、コンピュータの組織論、コンピュータネットワーク、オペレーティング・システムを。

知識ベースがあまりにも重要であるため、なぜ、このコースを言及!これはもちろんの最大の違いは、理論的な知識はすぐにプロジェクトで使用されるが、技術的な問題から、人との議論は、あなたがより深い理由を知ることができたときに、あなたの視点は、より包括的になることができないかもしれないコバンは異なっているし、システム。

比喩、あなたは用語のスタックを聞いたが、具体的な構造との違いを知っていたかもしれませんか?あなたが理解するデータ構造が完了すると、あなたがコンピュータを加算、減算を計算します知っているが、具体的にどのようにそれを達成するために?作曲原則はあなたを教えてくれます。プログラムの実行命令アドレスとデータアドレスとの間でそれを区別する方法を知っているために時間を?オペレーティングシステムは、あなたに答えを教えてくれます。

あなたはコンピュータ関連の専門の大学や専門的な根拠はありませんが、完全な意味を理解していなかったのであれば、強く、あなたがこれらのコースを学ぶために時間がかかるようにしてくださいことをお勧めします。

推奨事項:

基本的なコンピュータ統合は、データ構造、コンピュータの組織論、コンピュータネットワーク、オペレーティングシステム:CAN大学のコンピュータ科学の教科書を見てお勧めします。

  • データの構造 

1.ブック:「データ構造」ヤン魏分  清華大学プレス 

2.エイズ:「アルゴリズムとデータ構造は、質問洗練された分析(第二版)PubMedの」機械工業プレスを

  • コンピュータの構成の原則  

教科書:「コンピュータの原則」唐飛月高等教育プレス

カウンセリングの本:

「コンピュータの構成のPubMedの指針」徐Aiping清華大学プレス 

「コンピュータの原則-学習指導と演習解答」唐飛月高等教育プレス  

  • オペレーティングシステム 

教科書:「コンピュータのオペレーティングシステム(改訂版)」唐子嬰  電子科学技術プレスの西安大学  

カウンセリングの本:「オペレーティングシステムPubMedのチュートリアル(大学院録音審査プロフェッショナルアセスメント自宅のコンピュータ・ソリューション)、」電子科学技術大学出版 

「オペレーティングシステムのPubMed案内は」清華大学プレス 

  • コンピュータネットワーク 

教科書:「コンピュータネットワーク(第五版)、」謝Xiren電子工業プレス  

カウンセリングの本:ハルビン工程大学出版「を解析するコンピュータの知識ネットワーク要素と演習」 

ビデオチュートリアル

教科書チュートリアル推定値は非常にここで、退屈さの上を参照してください。私が何を考えている私はパートを聞いて良い中国の大学のオープンクラスを話す、あなたが学んだか悪いシステムを習得していない場合は、コンピュータ科学のすべての基本をしていると述べましたブラシは非常にビデオレッスンをお勧めします。

武漢大学 - ネットワークデータ構造MOOCコース

華中科技大学 - コンピュータの原則

電子科学技術大学 - コンピュータの原則

華中科技大学 - オペレーティングシステム

ハルビン工業大学 - コンピュータネットワーク

基盤は非常に重要であるため、このセクションでは、より多くのビットを書きます!そして、非コバンコバンギャップが言語のプログラミングやスライドでより多くのではなく、誰フレーム学ぶ人ではない、本質的な違いは、理論的な知識ベースと独立して考えて分析し、問題を解決するためのCSの思考能力を使うとの間の差です。

CおよびC ++の構文の基礎

文法は、言語の基礎ではありません、C ++の基礎文と文法とCは最大クラスと例外処理、ならびに異なるテンプレートの適用、のようなものですので、Cの基本的な文法はすぐに学ぶことがあり、何のCそれは基礎が重要ではありません、推奨書籍次Kenwanは熱い上ノックとみなさ読み取ることによって、それを自分でコンパイルするの宿題の問題を読んだ後、ほとんどのスキルオフリップです。

推奨事項:

「C ++入門中国語版(第5版)は、」古典的入門本はXXは、比較するために強い大学の教科書ではなく、グレードを取ることはありません。

標準ライブラリSTLの学習

STLは、アルゴリズムとサポート各種容器の豊富なライブラリを提供、最も基本的な標準入力と出力を含む、C ++標準ライブラリが提供する、iostrem、各種容器vector、set、string、習熟度の標準ライブラリを、(練習手作りの学習目的にホイールを除く)ホイールを作成し、書き込み繰り返しませんより多くのC ++コード。

推奨事項:

「C ++入門中国語版(第5版)」

「STLのソースコード解析」

高度なC ++

C ++学校は基礎が使用するだけで、上記終え、だけでなく、ほかの高度な使用することを学ぶ必要がある言語のいくつかについて、あなたは、前任者は、再びそれを強化しているピットを踏んでいないより堅牢かつ効率的なコードを書く巨人の肩の上に立って、詳細とより良いコーディング慣行、学ぶために多くの優れた書籍があります。

勧告

「効果的なC ++」の違いをその結果、よく一見の価値、ベテランと初心者に設計さ55の具体的な慣行や手順を改善します!

「より効果的なC ++の(中国語版」

同じ著者は、効果的なC ++以下、スコット・マイヤーズは、1996年に「より効果的なC ++(35 Geは、プログラミングを改善し、効果的な方法を設計)」「の続編を起動します。」比較的小さいが、選択比、特に高次、第5章「エピソード」ので、いくつかのより多くのページを追加しまし規約。マイヤーズこの章では、技術を命名します。

「インサイドC ++オブジェクトモデル」この本は中国語版でもご覧になれます、高品質の翻訳「C ++オブジェクトモデルの深さ探査」

新しいC ++ 11標準

新基準は、既存の問題を解決するには、より多くのC ++実装よりエレガントで提供します既存のソフトウェアまたはC ++ C ++ 98標準のほとんどは、C ++ 98は、++最初の標準Cでの開発の多くの年を通じて、過去にあなたがBoostライブラリ(C ++ 98年間で準標準C ++から必要な)利用可能な機能のほとんどでサポートされているC ++の拡張機能にも新しい標準の中で、倍以上の高度な生産ツールをピックアップしてC ++ 11とC ++ 2Xに含まれているため、ツールは効率です。

推奨事項:

「C ++ 11の深い理解」

Linuxシステムの基盤とシェルスクリプト

今日では、ほとんどすべてのインターネットサービスは、上のLinuxシステムを実行しています私たちは、ファイル管理、システムコマンド、ファイルシステム、著作権管理、システムサービスなどのように、Linuxオペレーティングシステムを学ばなければならないので、開発の背景については何ももっとしないように言及されていないLinuxシステム。

同様の勝利のバッチスクリプトのシェルスクリプト、私を信じているように、遅かれ早かれ、あなたは、システムを学習するので、可能な限り早期に、Linuxで動作することが必要になります。

推奨事項:

「作品学習ベースの鳥兄弟のLinuxプライベートキッチン」の早期個人的な外観への必要性を全く感じない学習、このシリーズのと同様に記事をセットアップし、サーバーを

「Linuxのシェルスクリプトレイダース」

「シェルスクリプトスタディガイド」

Linuxの高レベルのプログラミング環境

唯一のオペレーティングシステムを理解する必要があり、普通のユーザーは、ソフトウェア開発者は、インタフェースのプログラミング理解する必要がありますステージでは、いくつかの従来のシステムのコマンドやサービスを知っていて、毎日の開発効率を向上させるためにいくつかの小さなツールを作成するシェルスクリプトを使用することができ、巧みに完全なLinuxオペレーティングシステムすることができました。

私たちの目標は、ソフトウェアエンジニアが、また、Linuxシステムのプログラミングのスキルをより深く把握、など、海の星にあるメモリ管理との間のインターフェイス、システムコールAPIをプログラミング学習システム、プロセス間通信(IPC) このフェーズの目的を学習されました。

推奨事項:

「プログラミング環境UNIX高度は、」これは必見のフォローアップの価値繰り返しを読んで、非常にお勧めのLinuxプログラミングAPUEは、再びそれを読んでいます。

「手動プログラミングのLinux / UNIXシステム」少し繰り返しに本をとAPUEは、私がAPUEが読ん踊りでこれを読んで、あなたは通常、カタログリファレンスを参照してくださいすることができます。

ネットワークプログラミングLinuxのソケット

同じマシンプロセス間通信(IPC)に種々の方法を有し、それがあってもよいメッセージキュー、FIFO、共有メモリ等です。ソケットネットワーク手段プログラミング:ネットワーク通信インターフェースプログラムは、異なるマシン上の接続プロセス、機械を横切るネットワーク通信にネットワークを介して、システムによって提供される異なるマシンに分散されてもよいです。一般的にUDPソケット、TCPソケット、Unixのドメイン、もちろん、あなたは確かに不慣れなSCTPソケット通信の開業医でない場合。

推奨事項:

「UNIXネットワークプログラミング第1巻:ソケットネットワーキングAPI(第3版)」

「UNIXネットワークプログラミング第2巻:プロセス間通信(第2版)」

データベースとストレージ

永続ストレージを必要な時に揮発性メモリ内のデータを実行するには、データベースを必要とします着陸と永続的なデータストレージの問題を検討するための一般的な必要としているバックグラウンドサービスシステムは、それはリレーショナルデータベースと非リレーショナルデータベースに選択し、データベース、アプリケーション、データベースを伴います。

リレーショナルデータベースは MySQLを表すデータを整理するリレーショナルモデルデータベースの使用を指します。
リレーショナル・モデルは、2次元モデルの形状を指し、リレーショナルデータベースは、2次元テーブルとの間のデータリンクによって編成および構成されています。

非リレーショナル・データベースのキーと値のペアが固定されていない格納するため、および構造、各要素はフィールドの異なるセットを持つことができ、各タプルは、それ自身のために必要なキーの数を増やすことができ、固定された構造に限定されるものではなく、小さくすることができますいくつかの時間と空間を費やします。代表のRedisのは、memcachedを、Tencentの内部コンポーネントCKVは、非リレーショナル・データベースです。

推奨事項:

「知っている必要がありますSQLは次のようになります」

「ハイパフォーマンスMySQLの」

公式文書のRedisの Redisの中国のネットワーク

Redisのについて、このようなグラブ赤い封筒に基づいて高い同時実行モデルなどの分散ロックRedisのアプリケーションなどの多くのアプリケーションが、存在し、背中は原則と、分散ロックのアプリケーションについての記事を書くことができます。

アルゴリズムの基礎

これは、プログラミング言語の使用を理解することができ、コンピュータの問題を解決するためのコンピュータアルゴリズムを記述することです。

良いアルゴリズムは、それが現在またはコミュニティカレッジリクルートリクルートであるかどうか、問題をより簡潔かつ効率的なソリューションをすることができ、メーカーが手を保ち、定期的アルゴリズム行使しなければならないソフトウェアの専門家のためではないかのように書かれて書かれたアルゴリズムを検討します。アルゴリズムを学ぶことは論理的思考を改善するための問題解決の助けを学ぶための普遍的な方法です。

ラーニング

私の個人的な経験では、直接の熱心な方法学習アルゴリズムをお勧めしません、仕方ブラシラインプログラミングアルゴリズムの問​​題と組み合わせる読み出しをお勧めします。

具体的に:はじめにいる間、データ構造やアルゴリズムを見てオフ牛leetcodeのそれを失う忍耐に簡単ですので、話題のブラシは、読書が退屈され、オンライン問題の利点は、あなたが、毎日設定した目標を磨いて、各トピックの喜びを楽しむことができるということですそれが簡単にそれに固執する正のフィードバックがあります。

アーキテクチャの機能

アーキテクチャは、全体のバックオフィスサービスシステムの設計容量に既存の知識を利用する能力です。それだけでなく、スキルを要するだけでなく、奥行き寸法を把握するために、様々なニーズやシステムの制約に応じて必要とは異なるデザインを作ります。

この時間は、サービスモデルの設計など、考慮すべきより多くの事、次のようになります。マルチプロセスまたはマルチスレッドのコルーチンでもマイクロスレッド、分散型または集中。

ストレージの選択:どのようにデータベースの選択を考えてみましょうか?データは、それが良いかもしれ格納するリレーショナルデータベースと非社会的なアプリケーションである場合、データのニーズに応じて、それは電力会社の注文データのタイプである場合、ストアにリレーショナル・データベースを使用する方がよい、ストレージ及びアプリケーションシナリオの特性を区別します。

もちろん、バックエンド・システムではなく、1例ずつを考慮すべき他の側面があります。

もっと練習

それを言って、最も重要なことは、練習の練習を練習することです。読みが最も正しいと迅速な学習パスがあるので、理論的な知識ベースは、必要な条件、我々は乱雑あまりにも複雑すぎる断片化された情報は、私の個人的な経験、まだ本の巨匠から学ぶために必要な知識の本質を高濃度に接触するモバイルインターネットの時代です近道はありません。

読書は十分な光ではありません。しかし、プログラミングや技術的能力もとして、技術を研削毎日定数を必要とする、また、現代の工芸活動である1万時間の法則

理由顕著、才能ない優れた大人の目には、なぜ有能な人材が、持続的な努力を払いました。運動の10,000時間は、通常の世界クラスのマスターになるためにすべての人のための必要条件です。分野の専門家になるためには、比例の10,000時間を必要とするこれです:あなたは1日8時間、5日作業週を作業している場合は、その後、少なくとも5年間の分野の専門家になります。これは1万時間の法則です。

どのようなプログラミング能力を向上させる研磨?アイテムを検索、面白いそれを実現するためのコードで物事を、関心は最良の教師で、プログラミングや技術的な学習で、この点も十分に適用されます。

人々は常に迅速に物事を行う喜びを得ることができ、30分ゲームをプレイするよう、喜びの感覚を取得する傾向があります。それどころか、それは技術の破片は長いプロセスで改善し、3分は成功する確かに難しいです。

だから、このような小さなプログラム爬虫類を書いて、興味のあると面白いプログラミングで物事を行うための技術を使用して、サイトのデータをクロールや小さなゲームを書き、または自分の使用にホイールを再作成し、最適化されたホイールの疲れはありません。成果とモチベーションの少し感覚を得ることができ、各ステップに行き続けるためになるようにゆっくりと質的な飛躍があるでしょう。

ウェブサイト

このサイトは、ウェブサイトは、通常、開発、Linuxのmanページに似たC ++百科事典は、検索で直接関数名やコンテナをチェックすることを忘れていることを教えなければなりません、私はオフライン版をダウンロードし、非常に便利です。

URL:C ++リファレンス:cppreference

つづきます

息ダウンライトは確かに完璧ではない、記事が更新され維持され、変更されます、私はそれが更新さを維持するために記事を追加すると思いました。

私がコンパイルされ、勧告は「検索、収集するために、学習プロセスで、電子書籍やビデオ素材の本文で言及した教室でのバックエンド技術」返信「1024を他の人に」。

書き込みはそれを心配する支持点を賞賛、容易ではありません

私は、共有ソフトウェアのプログラミングを継続し、それらのものをプログラマ、歓迎注目されます。

おすすめ

転載: blog.51cto.com/14773857/2482928