JNI学习之Invocation API

http://docs.oracle.com/javase/8/docs/technotes/guides/jni/spec/invocation.html的学习笔记,限于英文水平和对JNI的理解,可能存在错误。 简介 通过使用Invocation API,使用C/C++开发的本地应用...

2016-03-17 23:49:02

阅读数:362

评论数:0

JNI学习笔记(2)

JavaVM接口 第一种方式,在加载动态链接库的时候,JVM会调用JNI_OnLoad(JavaVM* jvm, void* reserved)(如果定义了该函数)。第一个参数会传入JavaVM指针。一般都在这个时候保存一个static的JavaVM *jvm,这个jvm指针在进程内是可以放...

2016-01-14 12:09:05

阅读数:376

评论数:0

在 Golang 中使用 Protobuf

安装 goprotobuf   1.从 https://github.com/google/protobuf/releases 获取 Protobuf 编译器 protoc(可下载到 Windows 下的二进制版本 wget https://github.com/google/pro...

2015-12-04 21:01:14

阅读数:624

评论数:0

原子,锁,还有内存屏障

原子   “在古希腊文中,原子就是不可再分的含义“。在程序设计的内涵下,『原子』性表示一个操作的中间状态对外的不可见性,体现在内存修改的中间状态不可见,体现在 CPU 指令的不可中断。原子操作是并发环境的基础,是互斥锁实现的必要条件。这里说的并发环境,是指多个执行序列,共享了某些状态,运行在...

2015-12-02 23:43:57

阅读数:506

评论数:0

linux内存屏蔽技术

__asm__ __volatile__("": : :"memory"); 内存屏障(memory barrier)  #define set_mb(var, value) do { var = value; mb(); } while (0)  ...

2015-12-02 21:14:56

阅读数:297

评论数:0

Protocol Buffer技术详解(C++实例)

这篇Blog仍然是以Google的官方文档为主线,代码实例则完全取自于我们正在开发的一个Demo项目,通过前一段时间的尝试,感觉这种结合的方式比较有利于培训和内部的技术交流。还是那句话,没有最好的,只有最适合的。我想写Blog也是这一道理吧,不同的技术主题可能需要采用不同的风格。好了,还是让我们尽...

2015-12-02 21:08:52

阅读数:351

评论数:0

NDK 编译protoc buf lite心得

首先感谢 http://blog.sina.com.cn/s/blog_632dcf7501011us2.html 和http://blog.sina.com.cn/s/blog_632dcf7501012bo0.html 给予了我很大的帮助。说说自己在编译过程中遇到的一些问题以及处理方法。 ...

2015-11-19 18:44:01

阅读数:458

评论数:0

jbytearray转c++byte数组

jbytearray转c++byte数组jbyte * arrayBody = env->GetByteArrayElements(data,0); jsize theArrayLengthJ = env->GetArrayLength(data); BYTE * starter ...

2015-11-17 20:35:38

阅读数:455

评论数:0

static_cast和reinterpret_cast揭秘

本文讨论static_cast。 reinterpret_cast可以转换任意一个32bit整数,包括所有的指针和整数。可以把任何整数转成指针,也可以把任何指针转成整数,以及把指针转化为任意类型的指针,威力最为强大!但不能将非32bit的实例转成指针。总之,只要是32bit的东东,怎么转都行...

2015-11-15 13:56:08

阅读数:241

评论数:0

Google Breakpad 完全解析(二) —— Windows前台实现篇

Table of contents for Google Breakpad 完全解析 Google Breakpad 完全解析(一) —— Windows入门篇Google Breakpad 完全解析(二) —— Windows前台实现篇 原创文章,转载请标明出处:Soul Apo...

2015-04-18 16:36:59

阅读数:436

评论数:0

Google Breakpad 完全解析(一) —— Windows入门篇

Google breakpad是一个非常实用的跨平台的崩溃转储和分析模块,他支持Windows,Linux和Mac和Solaris。由于他本身跨平台,所以很大的减少我们在平台移植时的工作,毕竟崩溃转储,每个平台下都不同,使用起来很难统一,而Google breakpad就帮我们做到了这一点,不管是...

2015-04-18 14:13:06

阅读数:492

评论数:0

Linux中mprotect()函数的用法

在Linux中,mprotect()函数可以用来修改一段指定内存区域的保护属性。 函数原型如下: [cpp] view plaincopy #include    #include    int mprotect(const void ...

2015-04-18 10:32:29

阅读数:570

评论数:0

基于2.8版本redis配置文件中文解释

在Redis中直接启动redis-server服务时, 采用的是默认的配置文件。采用redis-server   xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务。下面是Redis2.8.9的配置文件各项的中文解释。 #daemonize no 默认情况下, redis ...

2015-04-14 14:30:28

阅读数:486

评论数:0

剖析为什么在多核多线程程序中要慎用volatile关键字?

这篇文章详细剖析了为什么在多核时代进行多线程编程时需要慎用volatile关键字。 主要内容有: 1. C/C++中的volatile关键字 2. Visual Studio对C/C++中volatile关键字的扩展 3. Java/.NET中的volatile关键字 4. Memo...

2015-03-26 20:41:03

阅读数:442

评论数:0

Android系统匿名共享内存Ashmem(Anonymous Shared Memory)驱动程序源代码分析

在上一文章Android系统匿名共享内存Ashmem(Anonymous Shared Memory)简要介绍和学习计划中,我们简要介绍了Android系统的匿名共享内存机制,其中,简要提到了它具有辅助内存管理系统来有效地管理内存的特点,但是没有进一步去了解它是如何实现的。在本文中,我们将通过分析...

2015-03-05 18:52:48

阅读数:593

评论数:0

优化屏障和内存屏障

优化屏障         编译器编译源代码时,会将源代码进行优化,将源代码的指令进行重排序,以适合于CPU的并行执行。然而,内核同步必须避免指令重新排序,优化屏障(Optimization barrier)避免编译器的重排序优化操作,保证编译程序时在优化屏障之前的指令不会在优化屏障之后执行。...

2015-03-05 17:35:09

阅读数:404

评论数:0

原子操作(1) - 用汇编实现原子操作

“最轻量级的锁”,通常也叫”原子操作”,之所以加引号是因为他们在汇编级别并不是原子操作,是用多条指令完成的,这些操作大多都是利用CPU支持的汇编指令.在某些构架过时的CPU体系结构上,它们应该是用比较重量级的线程内锁实现的吧(我的猜测). 最常见的原子操作有Compare and Exchang...

2015-03-05 16:56:27

阅读数:528

评论数:0

C/C++ Volatile关键词深度剖析

Volatile,词典上的解释为:易失的;易变的;易挥发的。那么用这个关键词修饰的C/C++变量,应该也能够体现出”易变”的特征。大部分人认识Volatile,也是从这个特征出发,而这也是本文揭秘的C/C++ Volatile的第一个特征。     Volatil...

2015-03-05 15:17:28

阅读数:418

评论数:0

MESI-CPU缓存一致性协议

MESI(Modified Exclusive Shared Or Invalid)(也称为伊利诺斯协议,是因为该协议由伊利诺斯州立大学提出)是一种广泛使用的支持写回策略的缓存一致性协议,该协议被应用在Intel奔腾系列的CPU中,详见“support the more efficient w...

2015-03-05 14:24:35

阅读数:370

评论数:0

关于SIGBUS的总结

From: by scz , 2.0 理解SIGBUS与SIGSEGV Q: SIGSEGV我能理解,但有时碰上SIGBUS,这该如何理解。 A: nkwht@SMTH nkwht用Google获取这样一些知识。有多种可能导致SIGBUS信号: ...

2015-03-03 12:00:17

阅读数:324

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭