<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[alpha_007的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/alpha_007</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; alpha_007]]></copyright><item><title><![CDATA[singleton-TrashClean]]></title><link>https://blog.youkuaiyun.com/alpha_007/article/details/127144352</link><guid>https://blog.youkuaiyun.com/alpha_007/article/details/127144352</guid><author>alpha_007</author><pubDate>Sun, 02 Oct 2022 17:03:54 +0800</pubDate><description><![CDATA[单例模式，c++11 call_once线程安全；静态变量析构释放单例。]]></description><category></category></item><item><title><![CDATA[Circular Buffer 2]]></title><link>https://blog.youkuaiyun.com/alpha_007/article/details/127144241</link><guid>https://blog.youkuaiyun.com/alpha_007/article/details/127144241</guid><author>alpha_007</author><pubDate>Sun, 02 Oct 2022 16:56:53 +0800</pubDate><description><![CDATA[循环队列，队列满时覆盖旧数据，非线程安全，位操作代替取模]]></description><category></category></item><item><title><![CDATA[开发工具红黑榜]]></title><link>https://blog.youkuaiyun.com/alpha_007/article/details/126402913</link><guid>https://blog.youkuaiyun.com/alpha_007/article/details/126402913</guid><author>alpha_007</author><pubDate>Thu, 18 Aug 2022 11:48:26 +0800</pubDate><description><![CDATA[开发工具]]></description><category></category></item><item><title><![CDATA[无锁循环队列--只适合一读一写两个线程]]></title><link>https://blog.youkuaiyun.com/alpha_007/article/details/121631805</link><guid>https://blog.youkuaiyun.com/alpha_007/article/details/121631805</guid><author>alpha_007</author><pubDate>Tue, 30 Nov 2021 14:20:29 +0800</pubDate><description><![CDATA[template&lt;int buflen, typename T&gt;
        class TLocklessQueue
{
protected:
        T BufData[buflen];
        int PutIdx;
        int GetIdx;

public:
        int MaxSize() {
                return buflen;
        }

        int Len() {
             ]]></description><category></category></item><item><title><![CDATA[星星之火可以燎原]]></title><link>https://blog.youkuaiyun.com/alpha_007/article/details/119518390</link><guid>https://blog.youkuaiyun.com/alpha_007/article/details/119518390</guid><author>alpha_007</author><pubDate>Sun, 08 Aug 2021 18:10:56 +0800</pubDate><description><![CDATA[vi ingnore case search \c
find * == find ./ -name ‘*’  ; find * | xargs grep “xxx”
CXX_FLAGS=-DNDEBUG in makefile make assert invalid


]]></description><category></category></item><item><title><![CDATA[linux command name]]></title><link>https://blog.youkuaiyun.com/alpha_007/article/details/119506892</link><guid>https://blog.youkuaiyun.com/alpha_007/article/details/119506892</guid><author>alpha_007</author><pubDate>Sun, 08 Aug 2021 08:47:34 +0800</pubDate><description><![CDATA[linux command name

vi ingnore case search \c
dd – data description/disk dump-- convert data file
bc – basic/better calculator
nm – names
nl – number of lines
od – octal dump
tr – translate
udev – userspace dev
ulimit – user’s limit
umask – user’s mask
xar]]></description><category></category></item><item><title><![CDATA[Go & Nginx & skynet 定时器]]></title><link>https://blog.youkuaiyun.com/alpha_007/article/details/117195034</link><guid>https://blog.youkuaiyun.com/alpha_007/article/details/117195034</guid><author>alpha_007</author><pubDate>Sun, 23 May 2021 14:30:33 +0800</pubDate><description><![CDATA[Nginx定时器
skynet定时器

]]></description><category></category></item><item><title><![CDATA[2.6内核kfifo]]></title><link>https://blog.youkuaiyun.com/alpha_007/article/details/117171456</link><guid>https://blog.youkuaiyun.com/alpha_007/article/details/117171456</guid><author>alpha_007</author><pubDate>Sat, 22 May 2021 20:51:46 +0800</pubDate><description><![CDATA[2.6内核kfifo
kfifo.h

```c
#include &lt;linux/kernel.h&gt;
#include &lt;linux/spinlock.h&gt;
#include &lt;linux/stddef.h&gt;
#include &lt;linux/scatterlist.h&gt;

struct __kfifo {
	unsigned int	in;
	unsigned int	out;
	unsigned int	mask;
	unsigned int	esize;
]]></description><category></category></item><item><title><![CDATA[circular buffer]]></title><link>https://blog.youkuaiyun.com/alpha_007/article/details/115711092</link><guid>https://blog.youkuaiyun.com/alpha_007/article/details/115711092</guid><author>alpha_007</author><pubDate>Wed, 14 Apr 2021 22:14:55 +0800</pubDate><description><![CDATA[#ifndef _CIRCULAR_BUFFER_H_2021_03_12
#define _CIRCULAR_BUFFER_H_2021_03_12
#include 
#include 
inline bool is_power_of_2(unsigned int v)
{
return v &amp;&amp; (!(v &amp; (v - 1)));
}
inline unsigned int roundup_pow_of_2(unsigned int v)
{
if (v == 0)
retur]]></description><category></category></item><item><title><![CDATA[无锁文章搜集]]></title><link>https://blog.youkuaiyun.com/alpha_007/article/details/115110210</link><guid>https://blog.youkuaiyun.com/alpha_007/article/details/115110210</guid><author>alpha_007</author><pubDate>Tue, 23 Mar 2021 09:43:35 +0800</pubDate><description><![CDATA[无锁同步-C++11之Atomic和CAS;如何理解C ++ 11中的std :: atomic :: compare_exchange_weak
无锁队列的实现

]]></description><category></category></item><item><title><![CDATA[Scott Meyers：C++史上最重要的五本书籍和五篇技术文章]]></title><link>https://blog.youkuaiyun.com/alpha_007/article/details/115066126</link><guid>https://blog.youkuaiyun.com/alpha_007/article/details/115066126</guid><author>alpha_007</author><pubDate>Mon, 22 Mar 2021 10:31:28 +0800</pubDate><description><![CDATA[Scott Meyers：C++史上最重要的五本书籍和五篇技术文章，csdn，lxwde
转载链接：https://blog.youkuaiyun.com/njnu_mjn/article/details/38175257

]]></description><category></category></item><item><title><![CDATA[经典永流传2-Lock-Free Code: A False Sense of Security]]></title><link>https://blog.youkuaiyun.com/alpha_007/article/details/115064906</link><guid>https://blog.youkuaiyun.com/alpha_007/article/details/115064906</guid><author>alpha_007</author><pubDate>Mon, 22 Mar 2021 10:12:37 +0800</pubDate><description><![CDATA[链接：
Lock-Free Code: A False Sense of Security


To avoid a race, a lock-free variable must have two key properties that we need to watch for and guarantee: atomicity and ordering


compilers, processors, and caches love to optimize reads and writes, and wi]]></description><category></category></item><item><title><![CDATA[经典永流传-Exception Handling: A False Sense of Security]]></title><link>https://blog.youkuaiyun.com/alpha_007/article/details/115063839</link><guid>https://blog.youkuaiyun.com/alpha_007/article/details/115063839</guid><author>alpha_007</author><pubDate>Mon, 22 Mar 2021 09:57:47 +0800</pubDate><description><![CDATA[Exception Handling: A False Sense of Security


Argument expressions are fully evaluated before their function is called.
v[top–]，top在调用拷贝构造返回语句之前已经递减。代码：
 template 
T Stack::pop()
{
  if( top &lt; 0 )
    throw ""pop on empty stack"";
  return v[top--]; /]]></description><category></category></item><item><title><![CDATA[Performance example source code from Inside the c++ object model(2)]]></title><link>https://blog.youkuaiyun.com/alpha_007/article/details/115025960</link><guid>https://blog.youkuaiyun.com/alpha_007/article/details/115025960</guid><author>alpha_007</author><pubDate>Sat, 20 Mar 2021 13:11:15 +0800</pubDate><description><![CDATA[编译环境：gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
例子按4.4节所写："指向 Member Function之指针"的效率（Pointer-to-Member Efficiency），未包括多继承和虚拟继承
float g_cx = 0.f, g_cy = 0.f, g_cz = 0.f;

class pt3d
{
public:
	float x;
	float y;
	float z;

public:
	pt3d(float xx = 0.0,]]></description><category></category></item><item><title><![CDATA[Performance example source code from Inside the c++ object model]]></title><link>https://blog.youkuaiyun.com/alpha_007/article/details/114981959</link><guid>https://blog.youkuaiyun.com/alpha_007/article/details/114981959</guid><author>alpha_007</author><pubDate>Thu, 18 Mar 2021 16:25:42 +0800</pubDate><description><![CDATA[编译环境：gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
例子摘抄自3.5节：对象成员的效率（object member efficiency）
constexpr int ITERATION_COUNT = 10000001;
void test_plain_double()
{
	START_TIMING(0);
	float pA_x = 1.725, pA_y = 0.875, pA_z = 0.478;
	float pB_x = 0.315, pB]]></description><category></category></item><item><title><![CDATA[A predicate for stl algorithm should always be stateless]]></title><link>https://blog.youkuaiyun.com/alpha_007/article/details/114438172</link><guid>https://blog.youkuaiyun.com/alpha_007/article/details/114438172</guid><author>alpha_007</author><pubDate>Sat, 06 Mar 2021 13:31:23 +0800</pubDate><description><![CDATA[A predicate for stl algorithm should always be stateless
void test_remove_if_bug()
{
	list&lt;int&gt; coll = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
	PRINT_ELEMENTS(coll, "coll:        ");

	// remove third element
	list&lt;int&gt;::iterator pos;
	int n = 3;
	int]]></description><category></category></item><item><title><![CDATA[Dimensional Analysis in C++  by Template]]></title><link>https://blog.youkuaiyun.com/alpha_007/article/details/114369194</link><guid>https://blog.youkuaiyun.com/alpha_007/article/details/114369194</guid><author>alpha_007</author><pubDate>Thu, 04 Mar 2021 15:21:56 +0800</pubDate><description><![CDATA[template &lt;int m, // exponent for mass
		  int d, // exponent for distance
		  int t&gt; // exponent for time
class Units
{
public:
	explicit Units(double initVal = 0) : val(initVal) {}
	double value() const { return val; }
	double &amp;value() { return ]]></description><category></category></item><item><title><![CDATA[Instruction_level_parallelism]]></title><link>https://blog.youkuaiyun.com/alpha_007/article/details/114367455</link><guid>https://blog.youkuaiyun.com/alpha_007/article/details/114367455</guid><author>alpha_007</author><pubDate>Thu, 04 Mar 2021 14:18:56 +0800</pubDate><description><![CDATA[Instruction_level_parallelism
void Instruction_level_parallelism()
{
	unsigned int steps = 1 * 1024 * 1024 * 1024u - 1;
	cout &lt;&lt; steps &lt;&lt; endl;
	int *a = new int[2];
	time_t begin = time(nullptr);
	// Loop 1
	for (unsigned int i = 0; i &lt; ste]]></description><category></category></item></channel></rss>