タグ

Javaに関するmslGtのブックマーク (106)

  • JVM(HotSpot VM)におけるIntrinsics(C2/Graal) - Fight the Future

    Project Loomのソースを読んでいると、また遭遇しました。 public class Continuation { ... @HotSpotIntrinsicCandidate private static int doYield(int scopes) { throw new Error("Intrinsic not installed"); }; ... } @HotSpotIntrinsicCandidateアノテーションです。継続の停止処理であるdoYield()メソッドは、エラーをスローする実装になっています。もちろん実際はエラーとならず、停止処理が実行されるわけですが、どうなっているのでしょうか? 僕は、@HotSpotIntrinsicCandidate、あーCPUアーキテクチャごとの処理があって実行されてるんだよね、くらいの認識でそれ以上深めてことはありませんでした

    JVM(HotSpot VM)におけるIntrinsics(C2/Graal) - Fight the Future
    mslGt
    mslGt 2019/05/29
  • さいきょうの二重サブミット対策 - Qiita

    この記事はシステムエンジニア Advent Calendar 2015 - Qiitaの記事です。 弊社アーキ部で@kawasimaさんに教えてもらったさいきょうの二重サブミット対策について書いていきます! 二重サブミットが発生するケース 不正な更新リクエストが発生するケースとして、以下のものが考えられます。 サブミットボタンをダブルクリックする 戻るボタンで戻って、再度保存ボタンを押す 完了ページでブラウザリロードする CSRF攻撃による不正な更新リクエスト 1. サブミットボタンをダブルクリックする 確定ボタンをダブルクリックすることによって、ユーザが意図していないリクエストが発生してしまうケース。 2. 戻るボタンで戻って、再度保存ボタンを押す 処理完了画面から戻るボタンで前の画面に遷移し、再び確定ボタンを押すケース。 来は入力➡︎確認➡︎完了の画面遷移が適切だが、その画面遷移にな

    さいきょうの二重サブミット対策 - Qiita
  • Visitorパターンについて考えた — 裏紙

    ポリもーなんとかでなんとかする 例えば数値を表すNumNode、足し算を表すAddNode、それらのインターフェースとなるNodeがあるとします。 で、計算を実装する場合Nodeにcalcメソッドとか定義してNumNodeとAddNodeで実装します。 package visitor; public interface Node1 { int calc(); } class NumNode1 implements Node1 { public final int value; public NumNode1(int value) { this.value = value; } @Override public int calc() { return value; } } class AddNode1 implements Node1 { public final Node1 left; p

  • まだまだ間に合う!JUnit 5入門 / JJUG CCC 2018 Spring

    JJUG CCC 2018 Spring #ccc_m1

    まだまだ間に合う!JUnit 5入門 / JJUG CCC 2018 Spring
  • MethodHandlesで遊ぶ - 京都行きたい

    初めに 今回出てくるのはこの辺 MethodHandles (Java Platform SE 8) MethodType (Java Platform SE 8) MethodHandle (Java Platform SE 8) MethodHandles.Lookup (Java Platform SE 8) MethodHandleの朝はLookupオブジェクトを作ることから始まる。 Lookup lookup = MethodHandles.lookup(); フィールドを取得してみる。 @Test public void test6() throws Throwable { Lookup lookup = MethodHandles.lookup(); MethodHandle handle = lookup.findGetter( /* receiver type */ Pu

    MethodHandlesで遊ぶ - 京都行きたい
    mslGt
    mslGt 2018/05/24
  • Javaにおける動的Mixin - Qiita

    黒魔術(バイトコードをいじること)なしに、Javaで動的にMixinします。 Background ミドルウェアパターンの実装などにおいて、とあるミドルウェアを追加したら、リクエストオブジェクトにメソッドを追加したい、ということがあります。 これを多重継承のできないJavaで実現しようとすると、最終的に必要となるメソッドを全部実装したクラス(またはその親子関係)が必要になります。 必要なメソッドだけ、必要なときに足したいですよね。Mixin! Mixin! インタフェースのデフォルト実装 JavaでMixinを実装したいと思っていた人たちには、Java8でインタフェースにデフォルト実装を持てるようになったのは歓迎すべき出来事だったようです。 Java8のインタフェース実装から多重継承とMixinを考える Java8でmixinをがんばってみる - yojikのlog こんな感じのデフォルト

    Javaにおける動的Mixin - Qiita
    mslGt
    mslGt 2018/05/24
  • Efficient data transfer through zero copy

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    Efficient data transfer through zero copy
    mslGt
    mslGt 2018/05/16
  • java.lang.reflect.Proxyの使い方(1) - Qiita

    はじめに java.lang.reflect.Proxyを利用して、指定したインターフェイスを実装したクラスに対し、そのメソッド呼び出し前後に任意の処理を追加します。こういう場面で使えるんじゃないかな?ってのがありますが、まずは簡単なサンプルを使って実際に動かしてみたいと思います。 まずはProxyを使わないで..

    java.lang.reflect.Proxyの使い方(1) - Qiita
    mslGt
    mslGt 2018/05/16
  • ProxyパターンとProxyクラスと黒魔術 - プログラマーの脳みそ

    Java Advent Calendar 2011 の18日目です。 17日目の記事は JavaEE使ってウェブアプリケーションつくろうよ - 水まんじゅう2、 19日目はJavaエバンジェリストの寺田さんですよ。乞うご期待。 プロローグ 後:「先輩、いまさらなんですけど上からSQLの遅いところを調査してくれって依頼がきてて、全クエリの実行時間を実データで集計とれと言ってるんですけど。これ、SQL発行前後で時間計測するしかないですかねー。このプロジェクトどんだけクエリ発行してるところあるんだろ…。簡単にやれないですかね。とりあえず調査に1週間かかるって返答しちゃいましょうか」 先:「まぁまて。全部のクエリにもれなく時間計測のコードを挿し込むとかやってられんし、手作業で漏れも発生するだろ。こういうのはオブジェクト指向で解決するのがスマートだ。あ、とりあえず調査に1週間かかるとは返答しておけ」

    ProxyパターンとProxyクラスと黒魔術 - プログラマーの脳みそ
    mslGt
    mslGt 2018/05/16
  • 【勉強会メモ】Oracle Dev Tour Japan in Osaka - radioc@?

    kanjava.connpass.com 日時:2018/05/14(月) 19:00 〜 21:15 場所:日オラクル株式会社 関西支社 StephenさんとSebastianさんの2人が日各地のJavaコミュニティを巡る毎年恒例のツアーが今年も開催。しかも今年はなんかメンバーがめちゃくちゃ増えているような… 残念ながら今年も英語のセッションについていくのがやっとで雑なメモしか残せてません。と、打ちひしがれて帰宅しましたが、家で復習しながら情報を追いかけていると既に動画がアップされていました。仕事が速い! www.youtube.com Running Java applications on Docker: practical tips and valuable insights Fernando Babadopulos / Java Champion & CTO, Tail.di

  • JEP 286: Local-Variable Type Inference

    Summary Enhance the Java Language to extend type inference to declarations of local variables with initializers. Goals We seek to improve the developer experience by reducing the ceremony associated with writing Java code, while maintaining Java's commitment to static type safety, by allowing developers to elide the often-unnecessary manifest declaration of local variable types. This feature would

    mslGt
    mslGt 2018/05/09
  • [Java] Style Guidelines for Local Variable Type Inference in Java

    Oracle Blogsの主としてテクノロジー製品のエントリを日語でご紹介します(オリジナルのエントリを投稿することもあります)。厳密性をご所望の方は原文をどうぞ。よい内容でしたら原文に対し、"Good Entry, thanks!"でもいいので、是非コメントお願いします(Typoや誤訳はコメント欄からどうぞ)。なお、このエントリは個人の見解であり、所属する会社の公式見解ではありません。また、エントリ内でご紹介している製品・サービスは国内導入時期が未定の場合もありますのでご了承下さい。 Good entries on Oracle Blogs are put into Japanese. Mainly this blog covers technology products. Opinions expressed in this blog is my personal one and d

    mslGt
    mslGt 2018/05/09
  • Java10のvarをどう使うか - きしだのHatena

    Java 10でvarが追加されました。が、いろいろ使い方は悩ましい気がします。 いろいろ議論をしたので、そこで考えたことをまとめておきます。 JShellでは読むことを考えなくていいのでガンガン使いましょう。 あと、OpenJDKのStyle Guidelinesも見ておくとよさげ。 Style Guidelines for Local Variable Type Inference in Java ローカルメソッドの定義にvarを使う 通常の変数定義でのvarの使い分けは長くなりそうなので、最初にこれだけ書いておきます。 いままで、メソッド内で使えるローカルメソッドを使おうと思うと、Functional Interfaceを使うくらいしかありませんでした。 Function<Integer, Integer> twice = x -> x * 2; println(twice.appl

    Java10のvarをどう使うか - きしだのHatena
    mslGt
    mslGt 2018/05/09
  • Javaリフレクションメモ(Hishidama's Java Reflection Memo)

    Javaでは、クラス生成やメソッド呼び出しをソース上に直接書いてコンパイル時に決定されるだけでなく、文字列(クラス名)を使ってクラスを生成したり、 メソッド名の文字列を使ってメソッドを呼び出したりすることが出来る。 クラス(インスタンス)生成 [/2015-04-26] Classのメソッド [/2021-03-21] instanceof [2007-02-16] Classからのインスタンス生成(非推奨) [/2018-04-30] インスタンス生成 [/2013-08-06] 総称型による限定 [2007-05-02] 内部クラスのインスタンス生成 [/2008-02-10] メソッド呼び出し staticメソッド実行 [/2017-07-23] メソッド実行(引数なし) [/2017-07-23] メソッド実行(引数あり) [/2017-07-23] 可変引数メソッド [/2015

    mslGt
    mslGt 2018/05/04
  • JavaのリフレクションAPIでメソッド取得、メソッド実行 - abcdefg.....

    JavaのリフレクションAPIでメソッドの取得、メソッドの実行を試してみたメモです。 JavaのリフレクションってforName("ClassName")くらいしか使ったことなかったので、 これを機にもう少しちゃんと勉強してみようと思いました。 java.lang.reflect.Method JavaのリフレクションAPIを利用することで、メタデータにアクセスできます。 java.lang.reflect.Methodインターフェースを利用してメソッドの取得、メソッドの実行を試してみたいと思います。 テスト用クラス Mavenプロジェクトを作成し、pom.xmlはjunitとhamcrestだけdependencyに追加しました。 pom.xml <dependencies> <dependency> <groupId>org.hamcrest</groupId> <artifactId

    JavaのリフレクションAPIでメソッド取得、メソッド実行 - abcdefg.....
    mslGt
    mslGt 2018/05/04
  • [Linux]PATHの設定方法 - HirosigeTの日記

    JDKやPostgreSQLなどインストールした際、最後にコマンドのPATHを通す設定があると思う。どのようにPATHを設定するかメモしておく。 例として、/usr/java/jdk1.6.0_18をPATHに設定する方法を記す。 ■方法1::bashrcにPATHを追記する方法 1. bashrcを開く bashrcはユーザのホームディレクトリ直下に隠しファイルとして存在する。 「~/」はホームディレクトリ、「.」が先頭につくファイルは隠しファイルを意味する。 $ vi ~/.bashrc 下記を追記する。 export JAVA_HOME=/usr/java/jdk1.6.0_18 export PATH=$PATH:$JAVA_HOME/bin パスには優先度がある。「echo $PATH」を実行した時、より左側にあるパスが優先される。例えば、echoコマンドでパスを出力すると下記の

    [Linux]PATHの設定方法 - HirosigeTの日記
  • SpringBoot2のBlocking Web vs Reactive WebについてLTしてきた - Mitsuyuki.Shiiba

    社内ミートアップでLTの時間をもらったので、ここに書いた内容を3分で喋ろうとしたんだけど、どうしても3分をちょっと超えてしまうので無理を言って4分もらって喋ってきた(運営のみなさんありがとうございます)。ぐったり。明日から普通のエンジニアに戻ります。 dev.to 実感を大切にしてみた こういうことに気をつけてLTしてみた: ブログの記事に書いてるコードを見せるんじゃなくて、実際のIDE内のソースコードを見せること そのときにIDEAのプレゼンテーションモードで見せること 実際にアプリを動かした状態でcurlで叩いて動いてるのを見せること Gatlingを実際にgradleで実行すること そこでBlockingAppのスレッドが増えるところをVisualVMで実際に見せること その方が聞いてて「へー。当に動くんだ」とか「さわってみようかな」とか思ってもらえるかなーと思って。ってことで以下

    SpringBoot2のBlocking Web vs Reactive WebについてLTしてきた - Mitsuyuki.Shiiba
  • Efficient data transfer through zero copy

    mslGt
    mslGt 2018/04/20
  • MavenをEclipseで使いたい初学者のトラブル例 - Qiita

    はじめに(経緯) 「せんせー、Mavenがなんかうまく動きません」 というわけで、初学者向けにまとめておく。 プロジェクトと動作環境のJDK Versionの不一致 mvn packageやmvn jetty:run でプロジェクトのパッケージ化や動作をさせようとする際に、次のようなエラーが発生する。

    MavenをEclipseで使いたい初学者のトラブル例 - Qiita
    mslGt
    mslGt 2018/04/17
  • Stream (Java Platform SE 8)

    型パラメータ: T - ストリーム要素の型 すべてのスーパー・インタフェース: AutoCloseable, BaseStream<T,Stream<T>> public interface Stream<T> extends BaseStream<T,Stream<T>> 順次および並列の集約操作をサポートする要素のシーケンスです。次の例は、StreamとIntStreamを使用する集計操作を示したものです。 int sum = widgets.stream() .filter(w -> w.getColor() == RED) .mapToInt(w -> w.getWeight()) .sum(); この例では、widgetsはCollection<Widget>です。Collection.stream()経由でWidgetオブジェクトのストリームが作成され、その結果がフィルタリング

    mslGt
    mslGt 2018/04/09