This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class MyThreadFactory implements ThreadFactory { | |
private static final ThreadFactory defaultFactory = Executors.defaultThreadFactory(); | |
private final Thread.UncaughtExceptionHandler handler; | |
public MyThreadFactory(Thread.UncaughtExceptionHandler handler) { | |
this.handler = handler; | |
} | |
@Override | |
public Thread newThread(Runnable run) { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
final class MyTask implements Runnable { | |
@Override | |
public void run() { | |
System.out.println("My task is started running..."); | |
// ... | |
throw new ArithmeticException(); | |
// ... | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class MyThreadPoolExecutor extends ThreadPoolExecutor { | |
public MyThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, | |
TimeUnit unit, BlockingQueue<Runnable> workQueue) { | |
super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue); | |
} | |
@Override | |
public void afterExecute(Runnable r, Throwable t) { | |
super.afterExecute(r, t); | |
// If submit() method is called instead of execute() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <assert.h> | |
#include "rocksdb/db.h" | |
using namespace std; | |
int main() { | |
rocksdb::DB* db; | |
rocksdb::Options options; | |
options.create_if_missing = true; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
rocksdb::Slice key1 = "one"; | |
rocksdb::Slice key2 = "two"; | |
std::string bar = "bar"; | |
db->Put(rocksdb::WriteOptions(), key1, bar); | |
std::string value; | |
rocksdb::Status s = db->Get(rocksdb::ReadOptions(), key1, &value); | |
if (s.ok()) { | |
// atomically apply a set of updates |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
rocksdb::Slice key1 = "one"; | |
std::string bar = "bar"; | |
rocksdb::WriteOptions write_options; | |
write_options.sync = true; | |
db->Put(write_options, key1, bar); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
rocksdb::Slice key1 = "1"; | |
rocksdb::Slice key2 = "2"; | |
rocksdb::Slice key3 = "3"; | |
std::string val1 = "one"; | |
std::string val2 = "two"; | |
std::string val3 = "three"; | |
// populate the database with entries | |
db->Put(rocksdb::WriteOptions(), key1, val1); | |
db->Put(rocksdb::WriteOptions(), key2, val2); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
rocksdb::Slice key1 = "1"; | |
rocksdb::Slice key2 = "2"; | |
std::string val1 = "one"; | |
std::string val2 = "two"; | |
// populate db first | |
db->Put(rocksdb::WriteOptions(), key1, val1); | |
db->Put(rocksdb::WriteOptions(), key2, val2); | |
rocksdb::ReadOptions readOptions; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class TwoPartComparator : public rocksdb::Comparator { | |
public: | |
// Three-way comparison function: | |
// if a < b: negative result | |
// if a > b: positive result | |
// else: zero result | |
int Compare(const rocksdb::Slice& a, const rocksdb::Slice& b) const { | |
int a1, a2, b1, b2; | |
ParseKey(a, &a1, &a2); | |
ParseKey(b, &b1, &b2); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class TestMsg : public AMS::IMsgObj { | |
public: | |
// give unique id to each message | |
TestMsg() : IMsgObj(/*msg id*/1) {} | |
// primitive types and string can be used | |
std::string name; | |
double value; | |
// other class objects can be composed | |
AdditionalInfo info; |
OlderNewer