Javaの静的クラスと内部クラス

ネストされたクラスは、他のクラスまたはスコープのメンバーとして宣言されているクラスです。クラスのネストは、コードをより適切に整理する1つの方法です。たとえば、オブジェクトをサイズ変更可能な配列に格納するネストされていないクラス(トップレベルクラスとも呼ばれます)があり、その後に各オブジェクトを返すイテレータクラスがあるとします。トップレベルクラスの名前空間を汚染するのではなく、サイズ変更可能な配列コレクションクラスのメンバーとしてイテレータクラスを宣言できます。これは、2つが密接に関連しているために機能します。 Javaでは、ネストされたクラスは静的メンバークラスまたは内部クラスのいずれかに分類されます。内部クラスは、非静的メンバークラス、ローカルクラス、または匿名クラスです。このチュートリアルでは、Javaコードで静的メンバークラスと3種類の内部クラスを操作する方法を学習します。 ネストされたクラスでのメモリリークを回避する このチュートリアルに関連するJavaのヒントも参照してください。ここでは、ネストされたクラスがメモリリークに対して脆弱である理由を学習します。 Javaの静的クラス 私のJava101チュートリアルJavaのクラスとオブジェクトでは、静的フィールドと静的メソッドをクラスのメンバーとして宣言する方法を学びました。 Javaでのクラスとオブジェクトの初期化

続きを読む

WebAPIでCORSを有効にする方法

ブラウザのセキュリティポリシーのセキュリティ制限により、Webブラウザは別のドメインのサーバーにAJAXリクエストを送信できません。これは同一生成元ポリシーとも呼ばれます。つまり、組み込みのブラウザセキュリティにより、あるドメインのWebページが別のドメインでAJAX呼び出しを実行できなくなります。 ここで、CORS(クロスオリジンリソースシェアリング)が役に立ちます。CORSはW3C標準であり、ブラウザで採用されている同一生成元ポリシーから離れて、あるドメインから別のドメインに属するリソースへのアクセスを制限できます。それぞれのWebAPIパッケージ(使用しているWeb APIのバージョンに応じて)またはOWINミドルウェアを使用して、WebAPIのCORSを有効にできます。 リクエストの発信元は、スキーム、ホスト、およびポート番号で構成されていることに注意してください。したがって、2つの要求が同じスキーム、ホスト、およびポート番号を持っている場合、それらは同じ発信元からのものであると見なされます。これらのいずれかが異なる場合、リクエストはクロスオリジンであると見なされます。つまり、同一のオリジンに属していないと見なされます。 ASP.NET WebAPIでCORSサポートを有効にする ASP.NET Web APIは、CORSの優れたサポートを提供します。ASP.NET W

続きを読む

JavaScriptとは何ですか?フルスタックプログラミング言語

JavaScriptは非常に人気のあるインタープリター型スクリプト言語であり、2019年の初めに、開発者が最も頻繁に学習する言語になりました。JavaScriptはオープンスタンダードであり、単一のベンダーによって制御されておらず、多数の実装と習得しやすい構文を備えているため、初心者からベテランの開発者まで同様に人気があります。 JavaScriptは、ワールドワイドウェブの初期の時代にさかのぼります。この言語は、軽量のクライアント側機能をWebページに追加する方法として最初に展開され、今日ではその目的で広く使用されています。基本的にオンライン広告とメトリクスのエコシステム全体を含め、今日のWebページでインタラクティブまたはアニメーション化されているものはすべてJavaScriptでレンダリングされます。しかし、JavaScriptはブラウザで実行されるだけではありません。Node.jsなどの開発フレームワークのおかげで、JavaScriptを使用して、クライアントからサーバー、クラウドに至るまで、考えられるほぼすべてのニッチのコードを記述できるようになりました。 JavaScriptの定義:スクリプト言語とは何ですか?JavaとJavaScriptはどのように異なりますか? その名前が示すように、JavaScriptはスクリプト言語です。 C ++などの従来の言語は、実行可

続きを読む

ディープラーニングとは何ですか?人間の脳を模倣するアルゴリズム

ディープラーニングの定義 ディープラーニングは、データのパターンを複雑な多層ネットワークとしてモデル化する機械学習の一形態です。ディープラーニングは問題をモデル化する最も一般的な方法であるため、コンピュータービジョンや自然言語処理など、従来のプログラミングや他の機械学習手法の両方を超える難しい問題を解決できる可能性があります。 ディープラーニングは、他の方法が失敗した場合に有用な結果を生み出すだけでなく、他の方法よりも正確なモデルを構築でき、有用なモデルの構築に必要な時間を短縮できます。ただし、深層学習モデルのトレーニングには、大量の計算能力が必要です。深層学習のもう1つの欠点は、深層学習モデルの解釈が難しいことです。  深層学習の明確な特徴は、トレーニング対象のモデルの入力と出力の間に複数の隠れ層があることです。ほとんどの議論では、ディープラーニングはディープニューラルネットワークを使用することを意味します。ただし、ニューラルネットワーク以外の種類の隠れ層を使用して深層学習を実装するアルゴリズムがいくつかあります。 ディープラーニングと機械学習 ディープラーニングは機械学習の一形態であると述べました。一般的な使用法に準拠するために、非ディープ機械学習を古典的な機械学習と呼びます。 一般に、古典的な機械学習アルゴリズムは、深層学習アルゴリズムよりもはるかに高速に実

続きを読む

機械学習を最大限に活用するための14のオープンソースツール

スパムフィルタリング、顔認識、レコメンデーションエンジン—予測分析またはパターン認識を実行する大規模なデータセットがある場合は、機械学習が最適です。無料のオープンソースソフトウェアの急増により、機械学習は単一のマシンと大規模な両方で、そして最も一般的なプログラミング言語で簡単に実装できるようになりました。これらのオープンソースツールには、Python、R、C ++、Java、Scala、Clojure、JavaScript、Goなどのライブラリが含まれています。 Apache Mahout Apache Mahoutは、需要を満たすために迅速かつ効率的に拡張できる機械学習アプリケーションをホストするための環境を構築する方法を提供します。Mahoutは主に別の有名なApacheプロジェクトであるSparkと連携し、元々は分散アプリケーションを実行するためにHadoopと連携するように考案されましたが、FlinkやH2Oなどの他の分散バックエンドと連携するように拡張されました。 MahoutはScalaでドメイン固有言語を使用しています。バージョン0.14は、デフォルトとしてApache Spark 2.4.3に基づいた、プロジェクトの主要な内部リファクタリングです。 作曲 イノベーションラボによるComposeは、機械学習モデルの一般的な問題を対象としています。生データのラベル

続きを読む

MozillaはFirebugを押しつぶし、ネイティブのFirefoxデバッガーを支持します

FirefoxブラウザへのオープンソースアドオンであるFirebugWeb開発ツールは、12年後に廃止され、Firefox DeveloperToolsに置き換えられました。 Firebugは、来月のFirefox Quantum(バージョン57)のリリースで削除されます。Firebugツールを使用すると、開発者はFirefoxブラウザーでコードを検査、編集、およびデバッグしたり、WebページのCSS、HTML、およびJavaScriptを監視したりできます。FirebugプロジェクトのリーダーであるJanHonza Odvarko氏は、まだ100万人以上が使用していると述べています。多くの拡張機能はFirebug用に構築されました。Firebug自体はFirefoxの拡張機能です。 Mozillaは、2016年にFirebug機能を組み込みのFirefoxデバッグツールに移行し始めました。Firefoxのコア開発者ツールには、ページインスペクター、Webコンソール、JavaScriptデバッガー、ネットワークモニターが含まれます。  目標は、デバッグをFirefoxにネイティブにすることです。「場合によっては、最初から始める方がよいこともあります。これは特にソフトウェア開発に当てはまります」とOdvarko氏は述べています。Firefox Developer Tool

続きを読む

JDK 11から削除され、JavaFX11はスタンドアロンモジュールとして提供されます

Javaベースのリッチクライアントテクノロジの最初のスタンドアロンリリースであるJavaFX11が利用可能になりました。オラクルは、JavaFXをJava Development Kit(JDK)11から削除します。これは、JDKから非コアモジュールを取り出して廃止するか、独立したモジュールとして立ち上げるという全体的な要望を考慮したものです。 オープンソースのJavaFX11は、デスクトップ、モバイル、および組み込みシステム用のクライアントアプリケーションプラットフォームを提供します。JavaFXは、プラットフォーム固有のSDK、jmodファイル、およびMaven中央アーティファクトのセットとして使用できるランタイムです。JDKにJavaFXが含まれなくなったため、開発者はアプリケーションにJavaFXモジュールを明示的に含める必要があります。 JavaFX11の新機能は次のとおりです。 FX Robot API。キーボードでのキーの入力、マウスの使用、グラフィック情報のキャプチャなど、ユーザーの操作をシミュレートします。 スタンドアロンJavaFXモジュールには、デフォルトで権限がありません。 スピナーコントロールのステップリピートタイミングをカスタマイズするためのプロパティが追加されました。 パブリックAPIを使用して、JFXPanelとSwingNodeで構成さ

続きを読む

C#でconst、readonly、staticを使用する方法

キーワードconst、readonly、およびstaticは、C#でプログラミングするときによく使用されます。ただし、これらのキーワードには重要な違いがありますが、類似点があるため、どちらをいつ使用するかがわかりにくい場合があります。この記事では、C#のconst、static、readonlyキーワード、それらの比較方法、およびC#アプリケーションでの使用方法について説明します。 この記事で提供されているコード例を使用するには、システムにVisual Studio2019がインストールされている必要があります。まだコピーをお持ちでない場合は、こちらからVisual Studio2019をダウンロードできます。  Visual Studio2019でコンソールアプリケーションプロジェクトを作成する まず、VisualStudioで.NETCoreコンソールアプリケーションプロジェクトを作成しましょう。Visual Studio 2019がシステムにインストールされていると仮定して、以下に概説する手順に従って、VisualStudioで新しい.NETCoreコンソールアプリケーションプロジェクトを作成します。 Visual StudioIDEを起動します。 「新しいプロジェクトの作成」をクリックします。 「新規プロジェクトの作成」ウィンドウで、表示されたテンプレ

続きを読む

GitHubとは何ですか?クラウドでのGitバージョン管理以上のもの

GitHubは本質的にGitリポジトリホスティングサービス、つまりクラウドベースのソースコード管理またはバージョン管理システムですが、それはほんの始まりに過ぎません。さらに、GitHubは、コードレビュー(プルリクエスト、差分、レビューリクエスト)、プロジェクト管理(問題の追跡と割り当てを含む)、他の開発者ツールとの統合、チーム管理、ドキュメント、および「ソーシャルコーディング」の機能を実装しています。 プログラマー向けのソーシャルネットワーキングサイトのようなものであるGitHubは、プログラマーがオープンソースコードで自由に共有およびコラボレーションできるオープン環境です(アドホックでも)。GitHubを使用すると、便利なコードを簡単に見つけたり、自分で使用するためにリポジトリをコピーしたり、他の人のプロジェクトに変更を送信したりできます。その結果、GitHubは、重要な事実上すべてのオープンソースプロジェクトの本拠地になりました。 オープンソースプロジェクトを探索したいときはいつでも、プロジェクト名を検索することから始めます。プロジェクトのウェブサイトを見つけたら、そのコードリポジトリのリンクを探します。10回のうち9回は、GitHubにアクセスします。 Gitバージョン管理 GitHubの機能とGitHubの動作を理解する前に、Gitを理解する必要があります。 Gitは

続きを読む

JDK 12:Java12の新機能

Java SE(Standard Edition)12に基づくJava Development Kit12の製品リリースが利用可能になりました。JDK 12ビルドは、Oracle for Linux、Windows、およびMacOSから入手できます。  JDK12をダウンロードする場所 JDK 12は、Java.netWebサイトからダウンロードできます。 オープンソースビルドは、クラスパス例外を除いて、GNU General Public Licensev2の下で提供されます。OracleのJDK12の商用ビルドは、非オープンソースライセンスの下でOracleTechnologyネットワークにあります。 Java12の新機能 シェナンドアガベージコレクター Java 12は、実験的なガベージコレクションアルゴリズムであるShenandoahを追加して、Javaスレッドの実行と同時に避難作業を実行することにより、ガベージコレクションの一時停止時間を短縮します。Shenandoahは、応答性と予測可能な短い一時停止を重視するアプリケーションに適切なアルゴリズムを提供します。ただし、JVMの一時停止の問題をすべて修正することは目的ではありません。 Red Hatは現在、Aarch64およびAMD64アーキテクチャでShenandoahをサポートしています。 G1ガ

続きを読む

Javaでコレクションを反復処理する

物のコレクションがあるときはいつでも、そのコレクション内のアイテムを体系的にステップスルーするための何らかのメカニズムが必要になります。日常の例として、さまざまなテレビチャンネルを繰り返すことができるテレビのリモコンを考えてみましょう。同様に、プログラミングの世界では、ソフトウェアオブジェクトのコレクションを体系的に反復するメカニズムが必要です。Javaには、インデックス(配列を反復処理するため)、カーソル(データベースクエリの結果を反復処理するため)、列挙(Javaの初期バージョン)、イテレータ(Javaの最新バージョン)など、反復のためのさまざまなメカニズムが含まれています。 Iteratorパターン 反復子は、いくつかの動作は各要素に対して実行されると、順次アクセスされるコレクションのすべての要素を可能にする機構です。基本的に、イテレータは、カプセル化されたオブジェクトのコレクションを「ループ」する手段を提供します。イテレータの使用例には、次のものがあります。 ディレクトリ(別名フォルダ)内の各ファイルにアクセスして、その名前を表示します。 グラフ内の各ノードにアクセスして、特定のノードから到達可能かどうかを判断します。 待ち行列にいる各顧客を訪問し(たとえば、銀行の列をシミュレートする)、その顧客がどれだけ待っているかを調べます。 コンパイラの抽象構文ツリー(パ

続きを読む

OracleはJava8の拡張サポートを拡張します

Java 8は今月6年前にリリースされ、他のいくつかのJavaバージョンに引き継がれています。それにもかかわらず、Java 8 —別名Java Development Kit(JDK)8 —は、おそらく今日最も使用されているバージョンのJavaであると、オラクルの関係者は3月12日に認めました。 OracleのJavaプラットフォームグループのソフトウェア開発担当バイスプレジデントであるGeorgesSaabは、Javaユーザーの30%から40%が現在Java 11以降を本番環境で使用していると考えられていますが、おそらくさらに多くのユーザーがJava8を実行していると述べています。 そのため、オラクルは最近、2030年12月まで追加のメンテナンスとアップグレードを特徴とするJava 8の有料の拡張レベルサポートを提供することに同意しました。Java8の拡張レベルサポートは2025年に終了する予定でしたが、顧客は拡張を求めていました。 サーブは、Java 8の継続的な卓越性の評価において、事例証拠を引用しました。Saabの評価を裏付ける、先月発行されたSnyk JVM Ecosystem 2020レポートは、ポーリングされたJavaユーザーの64%が本番環境のメインアプリケーションにJava SE(Standard Edition)8を使用し、3%がさらに以前のバージョンを使用し

続きを読む

timeitを使用してPythonコードをプロファイリングする方法

設計上、Pythonはパフォーマンスよりも利便性、読みやすさ、使いやすさを優先しています。しかし、それはあなたが遅いPythonコードに落ち着くべきだという意味ではありません。それをスピードアップするためにあなたができることがおそらくあるでしょう。 Pythonコードのパフォーマンスをプロファイリングするために利用できるツールの中で、最も単純なのはtimeitモジュールです。timeitは、コードを数千回または数百万回実行し、それらの実行が完了するまでにかかった時間を報告することにより、コードの小さなスニペット(数行、関数)の速度を測定するために使用されます。 timeit何かをするための2つまたは3つの異なる方法を比較し、どれが最も速いかを確認するのに最も役立ちます。たとえば、何千回も繰り返されるループは、Pythonの一般的なボトルネックです。手書きのコードの代わりにPythonの組み込みコードを使用するなどして、そのループの実装を高速化する方法を見つけることができれば、パフォーマンスが大幅に向上する可能性があります。 簡単なPythontimeitの例 仕組みの簡単な例を次に示しtimeitます。 def f1():for n in range(100):pass def f2():n = 0 while n <100:n + = 1 if __name__ ==

続きを読む

CockroachDBレビュー:存続のために構築されたスケールアウトSQLデータベース

ごく最近まで、データベースを購入するときは、スケーラビリティか一貫性かを選択する必要がありました。MySQLなどのSQLデータベースは強力な一貫性を保証しますが、水平方向に適切に拡張することはできません。(スケーラビリティのための手動シャーディングは、誰もが楽しむことではありません。)MongoDBなどのNoSQLデータベースは美しくスケーリングしますが、結果整合性しか提供しません。(「十分長く待つと、正しい答えを読むことができます」-これは金融取引を行う方法ではありません。) 2017年2月にリリースされたGoogleCompute Engine(GCE)で実行されるフルマネージドリレーショナルデータベースサービスであるGoogle Cloud Spannerは、SQL互換性、リレーショナルスキーマ、ACIDトランザクション、強力な外部整合性を維持しながら、NoSQLデータベースのスケーラビリティを備えています。Spannerは、ノード間のコンセンサスに到達するためにPaxosアルゴリズムを使用する、シャーディングされ、グローバルに分散され、複製されたリレーショナルデータベースです。 Spannerの代替案の1つであり、このレビューの主題は、Spannerに精通した元Google社員によって開発されたオープンソースの水平方向にスケーラブルな分散SQLデータベースであるCockro

続きを読む

C#で拡張メソッドを操作する方法

C#プログラミング言語は、C#3.0からの拡張メソッドのサポートを提供します。拡張メソッドは、メソッドを追加することによって既存の型の機能を拡張するために使用される方法であり、新しい派生型を作成する必要はありません。拡張メソッドを使用するために、既存のクラスのサブクラスを作成したり、既存のクラスを再コンパイルまたは変更したりする必要はありません。拡張メソッドは、コードの可読性を向上させると同時に、既存の型の機能を拡張できるようにします。 .Netの一般的な拡張メソッドには、System.Collections.IEnumerable and System.Collections.Generic.IEnumerableタイプにクエリ機能を追加するLINQ標準クエリ演算子が含まれています。拡張メソッドを利用してクラスまたはインターフェイスを拡張することはできますが、それらのメソッドをオーバーライドすることはできないことに注意してください。 MSDNは次のように述べています。「拡張メソッドを使用すると、新しい派生型を作成したり、再コンパイルしたり、元の型を変更したりすることなく、既存の型にメソッドを「追加」できます。拡張メソッドは特殊な種類の静的メソッドですが、あたかもそれらが呼び出されるかのように呼び出されます。拡張型のインスタンスメソッドでした。」 基本的に、拡張メソッドは静的メソッ

続きを読む

Rチュートリアル:データをRにインポートする方法

完全な本を入手する マスコミとジャーナリズムのための実用的なRMSRP $ 59.95それを見る この記事は、出版社の許可を得て、「マスコミとジャーナリズムのための実用的なR」から抜粋したものです。©2019by Taylor&Francis Group、LLC。 データを分析して視覚化する前に、そのデータをRに取り込む必要があります。これを行うには、データのフォーマット方法と場所に応じて、さまざまな方法があります。 通常、データのインポートに使用する関数は、データのファイル形式によって異なります。たとえば、ベースRでは、を使用してCSVファイルをインポートできますread.csv()。Hadley Wickhamは、ご想像のとおり、Excelファイルを読み取る機能を備えたreadxlというパッケージを作成しました。Googleスプレッドシートからデータを取得するための別のパッケージgooglesheetsがあります。 しかし、それをすべて覚えたくない場合は、リオがあります。 リオの魔法 プロジェクトのGitHubページによると、「rioの目的は、スイスアーミーナイフスタイルで3つの単純な関数を実装することにより、RでのデータファイルI / O [インポート/出力]を可能な限り簡単にすることです」。これらの機能はimport()、export()とconvert()。

続きを読む

Pythonでasyncioを使用する方法

Pythonの非同期プログラミング機能(略してasync)を使用すると、独立したタスクが終了するのを待たずに、より多くの作業を実行するプログラムを作成できます。asyncioPythonのに含まれているライブラリは、他のすべての待機をすることなく、ディスクまたはネットワークI / Oを処理するために使用非同期にツールがあります。 asyncio 非同期操作を処理するための2種類のAPIを提供します: 高レベル と 低レベル。高レベルのAPIは最も一般的に有用であり、さまざまなアプリケーションに適用できます。低レベルのAPIは強力ですが、複雑であり、使用頻度も低くなります。 この記事では、高レベルのAPIに焦点を当てます。以下のセクションでは、で最も一般的に使用される高レベルAPIasyncioについて説明し 、非同期タスクを含む一般的な操作にそれらを使用する方法を示します。  Pythonでの非同期にまったく慣れていない場合、またはその動作について復習を使用できる場合は、ここに飛び込む前に、Python非同期の概要を読んでください。 Pythonでコルーチンとタスクを実行する 当然、の最も一般的な使用法asyncioは、Pythonスクリプトの非同期部分を実行することです。これは、コルーチンとタスクの操作方法を学ぶこ

続きを読む

Microsoft VisualStudioがC言語のサポートを強化

MicrosoftのVisualStudio IDEは、C11およびC17 C言語標準のサポートを追加し、IDEの以前のCの限定サポートを拡張しました。C11およびC17は、9月14日にリリースされたVisual Studio 2019 16.8 Preview3以降のサポート言語バージョンになります。 何年もの間、Visual StudioはCのサポートを、Cの拡張として構築されたC ++言語に必要なものに制限してきました。現在、準拠したトークンベースのプリプロセッサがコンパイラに追加されています。最新のISOC標準に準拠するために、2つのコンパイラスイッチ/std:c11 と /std:c17が追加されました。 C11とC17の機能のようなサポートされている_Pragma、restrictとStatic_assert。IntelliSenseは.c、ソースファイルのファイル拡張子または/TCコンパイラスイッチを使用してCコードの構文の強調表示を有効にすることにより、これらの機能を操作できます。ただし、IntelliSenseの強調表示は現在、キーワードでのみ使用でき、標準ヘッダーで導入されたマクロでは使用できません。将来のリリースでこれが修正される予定です。 トークンベースの適合プリプロセッサが含まれているため、2つの新しいCコンパイラスイッチは/ Zc:prepr

続きを読む

Homebrewチュートリアル:MacOSでHomebrewを使用する方法

最初はコマンドラインでした。これはほとんどすべてのオペレーティングシステムに当てはまりますが、途中でグラフィカルユーザーインターフェイスがコンピューターの「顔」になり、古いハッカーやイニシエーターだけがコマンドラインコンソールやターミナルを開く方法さえ知っていました。 多くのMacユーザーは、ターミナルアプリを開かなくても、Bashシェルにコマンドを入力することなく、驚くほどうまく管理できます。Lightroomで静止画像を編集することに一日を費やしている場合、MacOSコマンドラインはおそらくほとんど役に立ちません。 より技術的なユーザー、特にソフトウェア開発者は、日常的ではないにしても、少なくとも時々シェルで作業する必要があります。UnixまたはLinuxのバックグラウンドを持つ技術ユーザーは、MacOSの中心がBSD Unixシステムであるにもかかわらず、通常のユーティリティのすべてが工場出荷時にMacOSにインストールされているわけではないことに気付くでしょう。 ソフトウェア開発者およびソフトウェアレビュー担当者として、私はしばしばこの問題に遭遇します。初めてそれが起こったとき、私はLinuxおよびLinuxのようなシステム(当時知られているMac OS Xなど)で動作することを目的としたオンラインインストール手順に従っていましたが、実際には1つまたは2つのディストリビュ

続きを読む

C#でHashSetを使用する方法

HashSetは、順序付けされていない一意の要素の最適化されたコレクションであり、高速なルックアップと高性能のセット操作を提供します。HashSetクラスは.NET3.5で最初に導入され、System.Collection.Generic名前空間の一部です。この記事では、C#でHashSetを操作する方法について説明します。 この記事で提供されているコード例を使用するには、システムにVisual Studio2019がインストールされている必要があります。まだコピーをお持ちでない場合は、こちらからVisual Studio2019をダウンロードできます。 VisualStudioで.NETCoreコンソールアプリケーションプロジェクトを作成します まず、VisualStudioで.NETCoreコンソールアプリケーションプロジェクトを作成しましょう。Visual Studio 2019がシステムにインストールされていると仮定して、以下に概説する手順に従って、VisualStudioで新しい.NETCoreコンソールアプリケーションプロジェクトを作成します。 Visual StudioIDEを起動します。 「新しいプロジェクトの作成」をクリックします。 「新規プロジェクトの作成」ウィンドウで、表示されたテンプレートのリストから「コンソールアプリ(.NETCore)」を選択

続きを読む