Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
com.github.takawitter:trie4j
Advanced tools
Various TRIE implementation including DoubleArray and LOUDS by Java.
Trie4J is the sort of collection of various trie implementation.
You can get the binary using Maven:
<dependency>
<groupId>com.github.takawitter</groupId>
<artifactId>trie4j</artifactId>
<version>0.9.9</version>
</dependency>
or from Central Repository
with 1.27 million words and 10.04 million chars contained in jawiki-20120220-all-titles-in-ns0.gz .
on MacOS X(10.7), Core i7 2.5GHz, Java 7 Update 21. 2013-5-14.
class | notes | build(ms) | contains(ms) | used heap(MB) | |
---|---|---|---|---|---|
java.util.HashSet | 404*1 | 363 | 126.2 | ||
java.util.TreeSet | 416*1 | 235 | 125.9 | ||
PatriciaTrie(src) | Simple PATRICIA Trie. | 371*1 | 247 | 90.8 | |
TailPatriciaTrie(src) | SuffixTrieTailBuilder(src) | PATRICIA Trie with tail string. | 937*1 | 248 | 76.8 |
ConcatTailBuilder(src) | 440*1 | 228 | 69.2 | ||
DoubleArray(src) | Simple Double Array Trie. | 362*2 | 98 | 52.6 | |
TailDoubleArray(src) | SuffixTrieTailBuilder(src) | Double Array Trie with tail string. | 3,111*2 | 181 | 28.9 |
ConcatTailBuilder(src) | 2,532*2 | 154 | 33.6 | ||
TailLOUDSTrie(src) | SuffixTrieTailBuilder(src) | LOUDS Succinct Trie with tail string. | 620*2 | 554 | 15.4 |
ConcatTailBuilder(src) | 111*2 | 537 | 20.2 | ||
ConcatTailBuilder(src) with sbvTI*3 | 145*2 | 712 | 15.7 | ||
TailLOUDSPPTrie(src) | SuffixTrieTailBuilder(src) | LOUDS++ Succinct Trie with tail string. | 654*2 | 571 | 15.4 |
ConcatTailBuilder(src) | 119*2 | 552 | 20.1 | ||
ConcatTailBuilder(src) with sbvTI*3 | 163*2 | 741 | 15.6 |
import org.trie4j.doublearray.DoubleArray;
import org.trie4j.louds.TailLOUDSTrie;
import org.trie4j.patricia.PatriciaTrie;
public class Sample {
public static void main(String[] args) throws Exception{
PatriciaTrie pat = new PatriciaTrie();
pat.insert("Hello");
pat.insert("World");
pat.insert("Wonder");
pat.insert("Wonderful!");
pat.contains("Hello"); // -> true
pat.predictiveSearch("Wo"); // -> {"Wonder", "Wonderful!", "World"} as Iterable<String>
DoubleArray da = new DoubleArray(pat); // construct DoubleArray from existing Trie
da.contains("World"); // -> true
TailLOUDSTrie lt = new TailLOUDSTrie(pat); // construct LOUDS succinct Trie with ConcatTailBuilder(default)
lt.contains("Wonderful!"); // -> true
lt.commonPrefixSearch("Wonderful!"); // -> {"Wonder", "Wonderful!"} as Iterable<String>
}
}
These classes are experimental and not contained in trie4j-SNAPSHOT.jar.
2012年2月、1冊の本が発売されました。
"日本語入力を支える技術" 変わり続けるコンピュータと言葉の世界 (WEB+DB PRESS plus) 徳永 拓之 (著)
多くのエンジニアがこの本に触発され、各種アルゴリズムの理解を深めたり、一から勉強を始めたり、 また中にはこれを機に様々なライブラリを実装し公開する人も出てきました。trie4jもそういったライブラリの一つで、各種トライ構造にターゲットを絞り、本書やその分野のブログなどを参考に実装されています。
ほとんどのクラスはシンプルな実装になっていますが、一部独自の最適化が入っています。また、各トライが提供するメソッドは、 極力中間オブジェクトを作らないようになっており、オブジェクト生成/破棄によるパフォーマンス低下を起こさないよう実装されています。
下記クラスは実験的実装で、trie4j-SNAPSHOT.jarには含まれません(src.kitchensinkにあります)。
多層パトリシアトライ(MultilayerPatriciaTrie(src))
多層トライの実験結果 - やた@はてな日記 を参考に、接尾辞を格納するトライを内包しサイズを最適化した実装です。また、子を持たないノード、子を一つだけ持つノード、それぞれの終端/非終端版と、様々な種類のノードを用意して 使い分けることで、極力無駄なメモリを使わないようにしています。但しパトリシアトライのままなので、あまり効率が上がっていません。
TAIL配列付き最適化ダブルアレイ(OptimizedTailDoubleArray(src))
FAQs
Various TRIE implementation including DoubleArray and LOUDS by Java.
We found that com.github.takawitter:trie4j demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.