关闭

C++11的thread代码分析

本文分析的是llvm libc++的实现:http://libcxx.llvm.org/ class thread thread类直接包装了一个pthread_t,在linux下实际是unsigned long int。 class thread { pthread_t __t_; id get_id() const _NOEXCEPT {return __t_;} } ...
阅读(9568) 评论(0)

移动App该如何保存用户密码

移动App该如何保存用户密码? 这个实际上和桌面程序是一样的。 先看下一些软件是如何保存用户密码的: 我们先来看下QQ是怎么保存密码的: 参考:http://bbs.pediy.com/archive/index.php?t-159045.html, 桌面QQ在2012的时候把密码md5计算之后,保存到本地加密的Sqlite数据库里。 再来看下手机淘宝是怎么做的...
阅读(40676) 评论(11)

C++11中的mutex, lock,condition variable实现分析

本文分析的是llvm libc++的实现:http://libcxx.llvm.org/ C++11中的各种mutex, lock对象,实际上都是对posix的mutex,condition的封装。不过里面也有很多细节值得学习。 std::mutex 先来看下std::mutex: 包增了一个pthread_mutex_t __m_,很简单,每个函数该干嘛就干嘛。 class mutex...
阅读(8184) 评论(0)

C++11中once_flag,call_once实现分析

本文的分析基于llvm的libc++,而不是gun的libstdc++,因为libstdc++的代码里太多宏了,看起来蛋疼。 在多线程编程中,有一个常见的情景是某个任务只需要执行一次。在C++11中提供了很方便的辅助类once_flag,call_once。 声明 首先来看一下once_flag和call_once的声明: struct once_flag { constexpr...
阅读(5139) 评论(0)

写程序很难之去除字符串的空白字符

在做性能调优时,用JProfiler测试Web应用的性能,发现有个replaceBlank函数占用了10%的CPU时间,进去看了下,是个简单的用正则去除XML文档里空白字符串的功能。但是这个简单功能却消耗了10%的性能。 在Web应用里,去掉空白字符串,似乎是个简单的功能,但是真正写起来,却也有些麻烦事。总结下。 方式一:正则表达式 http://stackoverflow.com/ques...
阅读(4071) 评论(0)

Java的LockSupport.park()实现分析

LockSupport类是Java6(JSR166-JUC)引入的一个类,提供了基本的线程同步原语。LockSupport实际上是调用了Unsafe类里的函数,归结到Unsafe里,只有两个函数: public native void unpark(Thread jthread); public native void park(boolean isAbsolute, long ti...
阅读(18058) 评论(4)

并行编程之条件变量(posix condition variables)

在整理Java LockSupport.park()的东东,看到了个"Spurious wakeup",重新梳理下。 首先来个《UNIX环境高级编程》里的例子: #include struct msg { struct msg *m_next; /* ... more stuff here ... */ }; struct msg *workq; pthread_cond_t qread...
阅读(3847) 评论(1)
    个人资料
    • 访问:1697140次
    • 积分:11689
    • 等级:
    • 排名:第1444名
    • 原创:129篇
    • 转载:29篇
    • 译文:2篇
    • 评论:349条
    博客专栏
    文章分类
    最新评论