public abstract class AbstractUnSafeCas<T> { @SuppressWarnings("unused") private volatile Object value; private static final AtomicHelper ATOMIC_HELPER; private final CountDownLatch countDownLatch = new CountDownLatch(1); static { ATOMIC_H…
1.概要 本文是无锁同步系列文章的第二篇,主要探讨JAVA中的原子操作,以及如何进行无锁同步. 关于JAVA中的原子操作,我们很容易想到的是Volatile变量.java.util.concurrent.atomic包和JVM提供的CAS操作. 2.Volatile 1)Volatile变量不具有原子性 Volatile变量具有一种可见性,该特性能保证不同线程甚至处理器核心在对这种类型的变量在读取的时候能读到最新的值.但Volatile变量不提供原子操作的保证. 下面我们给出一个例子: publ…
1.概要 本文是无锁同步系列文章的第一篇,主要探讨C++11中的Atomic. 我们知道在C++11中引入了mutex和方便优雅的lock_guard.但是有时候我们想要的是性能更高的无锁实现,下面我们来讨论C++11中新增的原子操作类Atomic,我们可以利用它巧妙地实现无锁同步. 2.传统的线程同步 #include <thread> #include <mutex> #include <iostream> using namespace std; mutex g_…
1.乐观锁介绍 程序完成并发操作时,访问数据时每次不加锁,假设没有冲突去完成某项操作,如果因为冲突失败就重试,直到成功为止.就是当去做某个修改或其他操作的时候它认为不会有其他线程来做同样的操作(竞争),这是一种乐观的态度,通常是基于CAS 原子指令来实现的. 2.CAS介绍 当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值,而其它线程都失败,失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次尝试.CAS是一种非阻塞式的同步方式 乐观锁一般会使用版本号机制或C…
最近想在使用.net 的队列处理一些耗时的工作.经过考虑,需要先设计一个类,类中包含一个静态的队列.主要是写队列和读取队列. public class PaperCalculator { // 用于存放需要计算总分的试卷的计算任务的队列 private static Queue<string> _paperQueue; // 用于通知是否有新试卷需要处理的“信号器” private static ManualResetEvent _hasNew; // 用于写日志的线程 private sta…
树莓派是最近流行嵌入式平台,其自由的开源特性以及低廉的价格,吸引了来 自全球的大量极客和计算机大咖的关注.来自各大树莓派社区的幕后英雄,无私地在这个开源硬件平台上做了大量的工作,将其打造成了世界上通用性最好,也最自由的计算机学习平台之一.我本人感兴趣的学习主题是Linux操作系统和Python编程,在流连于各大树莓派社区向各位大神学习的过程中感觉获益良多.结合自己擅长的实时信号处理工作,也做了一些小小的尝试.不能说做了什么独创性工作,但愿意分享给各位后来者.以下原创内容欢迎网友转载,但请注明出处…
前面的文章中,我们曾经实现了一个HTTP的GET 和 POST 请求: 此处我封装了一个HTTP的get和post的辅助类,能够更好的使用: 类名:HttpRequestUtil 提供了如下功能: (1)模拟GET请求: (2)模拟POST请求: (3)模拟文件上传请求: (4)发送XML数据: 发送GET请求 (1)public static URLConnection sendGetRequest(String url, Map<String, String> params, Map<…
CGLIB代理类,用CGLIB来实现一个代理类.大致原理描述如下: 1.使用Enhancer类来生成一个继续于被代理类的子类,此子类会重写被代理类(父类)中所有的非final的public方法: 2.当调用代理类的某个方法时实际上通过一个MethodInterceptor委托来间接调用的: 3.MethodInterceptor的intercept方法会对被代理类的方法进行增强(增强的逻辑是通过Interceptor接口来实现的)并调用被代理类(super class)的相关方法. 调用过程如下…
首先使用node.js 搭建一个简易的 websocket服务器: var cons = new Array(); var ws = require('ws').Server; var server = new ws({ port: 8888 }); server.on('connection', function (ws) { console.log('new connection founded successfully'); cons.push(ws); ws.on('message',…
转载:http://www.srxh1314.com/2014-sec-company-soc-siem.html http://www.bugsec.org/1598.html http://www.rightitnow.com/ https://isc.sans.edu//diary/SAGAN:+An+open-source+event+correlation+system+-+Part+1:+Installation/9184 http://comments.gmane.org/gman…