- 博客(34)
- 资源 (3)
- 收藏
- 关注
转载 weak alias
__attribute__是gcc专有的,用来说明函数的属性weak 和 alias 分别是两个属性。weak 使得 dram_init_banksize 这个符号在目标文件中作为 weak symbol 而不是 global symbol。用 nm 命令查看编译 生成的目标文件可用看到 dram_init_banksize 是一个weak symbol,它前面的标记是 W。而 alias
2017-07-26 11:34:27 493
转载 内核调用顺序
printf背后的故事 说起编程语言,C语言大家再熟悉不过。说起最简单的代码,Helloworld更是众所周知。一条简单的printf语句便可以完成这个简单的功能,可是printf背后到底做了什么事情呢?可能很多人不曾在意,也或许你比我还要好奇!那我们就聊聊printf背后的故事。一、printf的代码在哪里?显然,Helloworld的源代码需要经过编译器编译,操作系统的
2017-07-26 11:09:44 605
转载 write函数过程解析 __write_nocancel
write函数过程解析write函数作为用户向终端或者文件进行写数据的重要函数,有着重要的作用。|------| |---------| |---------| |----------| | write |----->|sys_write|-------->|vfs_write|------->|ext4_write||------|
2017-07-26 11:08:19 5450
转载 writev
谈谈writev的问题codesunOctober 17, 2016LinuxIO, POSIX, LinuxPOSIX提供了一个比write函数更加高级的writev,在很多场景下,它相对于write有一定的优势。APUE一书将writev的介绍放在了Advanced I/O部分,个人拙见,它和write应该是属于同层次的IO,谈不上Advanced。最近,我在重
2017-07-26 10:32:11 8597
转载 Oceanbase列传
Oceanbase列传分布式与存储技术跳至内容首页关于郁白文章列表文章预告正在追越狱第五季两阶段提交的工程实践两阶段提交(2 Phase Commit简称2PC)协议是用于在多个节点之间达成一致的通信协议,它是实现“有状态的”分布式系统所必须面对的经典问题之一。本文通过对比经典2PC协议,和Google工程实践的基础上,分析一种优化延迟的2PC协议。为了方便说明
2017-07-24 11:37:21 330
原创 stack queue free-lock implate
https://github.com/kayaklee/libhalog/blob/master/test/clib/hv_sample_lifo.cpphttps://github.com/kayaklee/libhalog/blob/master/test/clib/hv_sample_fifo.cpp
2017-07-24 11:32:14 304
转载 无锁队列-使用hazard指针解决ABA问题
无锁队列-使用hazard指针解决ABA问题分类:网络安全/工具使用/文章实现一个无锁队列, 原子操作使用了tbb::atomic, ABA问题使用hazard指针解决 无锁队列实现:查看文本打印/* * msque.hpp * Created on: 2012-8-30 * Author: qianqians
2017-07-24 11:01:08 945
转载 ABA问题
这篇文章(http://oceanbase.org.cn/?p=82)的第6小节讲述了Hazard Version的实现原理,它的设计思想最早由OB团队的席华锋提出,本文不再赘述,本文主要分享Hazard Version的实现要点,以及使用它实现无锁Stack与Queue的方法,已经在多核系统上的性能测试,代码已在github共享。ABA问题如《共享变量的并发读写》一文
2017-07-24 11:00:39 941
转载 无锁编程:lock-free原理;CAS;ABA问题
定义无锁编程是指在不使用锁的情况下,在多线程环境下实现多变量的同步。即在没有线程阻塞的情况下实现同步。这样可以避免竞态、死锁等问题。原理CAS是指Compare-and-swap或Compare-and-Set CAS是一个原子操作,用于多线程环境下的同步。它比较内存中的内容和给定的值,只有当两者相同时(说明其未被修改),才会修改内存中的内容。 实现如下:int compa
2017-07-24 10:52:31 1242
转载 无锁数据结构(基础篇):原子性、原子性原语 cas faa
无锁数据结构基于两方面——原子性操作以及内存访问控制方法。本文中我话题主要涉及原子性和原子性原语。在开始之前,我对大家表示感谢,谢谢你们对初识无锁数据结构的热爱。看到大家对无锁话题很感兴趣,我感到很开心。我计划依据学术概念将此做成一个系列,从基础到算法,同时以文本的形式展示 libcds 中的代码实现。但有些读者希望避开漫谈,尽快展示这些代码,以及如何利用这些库。我同意其中的一些观点。毕竟,不
2017-07-24 10:24:58 1695
转载 NGINX引入线程池 性能提升9倍
NGINX引入线程池 性能提升9倍喜欢| 作者 Valentin Bartenev,译者 韩陆 发布于 2015年6月23日. 估计阅读时间:6分钟| 智能化运维、Serverless、DevOps......2017年有哪些最新运维技术趋势?CNUTCon即将为你揭秘!5 讨论 分享到:微博微信FacebookTwitter有道云笔记邮件分享稍后阅读我
2017-07-24 10:06:02 247
转载 非阻塞同步算法与CAS(Compare and Swap)无锁算法
锁(lock)的代价锁是用来做并发最简单的方式,当然其代价也是最高的。内核态的锁的时候需要操作系统进行一次上下文切换,加锁、释放锁会导致比较多的上下文切换和调度延时,等待锁的线程会被挂起直至锁释放。在上下文切换的时候,cpu之前缓存的指令和数据都将失效,对性能有很大的损失。操作系统对多线程的锁进行判断就像两姐妹在为一个玩具在争吵,然后操作系统就是能决定他们谁能拿到玩具的父母,这是很慢的。用户态
2017-07-24 09:50:46 263
转载 并发无锁队列学习之一
Anker—工作学习笔记关注云计算、网络安全、软件定义网络博客园新随笔管理随笔 - 169 文章 - 2 评论 - 403并发无锁队列学习之一【开篇】1、前言 队列在计算机中非常重要的一种数据结构,尤其在操作系统中。队列典型的特征是先进先出(FIFO),符合流水线业务流程。在进程间通信、网络通信之间经常采用队列做缓存,缓解数据
2017-07-24 09:48:00 257
转载 无锁队列的实现
无锁队列的实现标签: 无锁队列CASconcurrentboost算法2016-06-12 22:42 3321人阅读 评论(2)收藏举报分类: 数据结构与算法(30) 版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[+]耗子叔曾经写过一篇同名的博客,主要参考了John D. V
2017-07-24 09:46:32 859
转载 top查询机器情况
top命令 是Linux下常用的性能 分析工具 ,能够实时显示系统 中各个进程的资源占用状况,类似于Windows的任务管理 器。下面详细介绍它的使用方法。top - 02:53:32 up 16 days, 6:34, 17 users, load average: 0.24, 0.21, 0.24Tasks: 481 total, 3 running, 474 sleepi
2017-07-21 22:40:11 365
转载 内部字段计数是什么,SetInternalFieldCount使用的是什么?
内部字段计数是什么,SetInternalFieldCount使用的是什么?我看不懂什么 SetInternalFieldCount()函数实际执行。v8文档中的函数被描述为设置" 对象的内部字段的数量从该模板生成消息" 这些都很意义和unilluminating 。在 v8 embedder指南" 他们给本示
2017-07-18 17:28:43 1354
转载 Javascript里有个C:Part 3 - 深入对象
http://cnodejs.org/topic/4f16442ccae1f4aa270010bdJavascript里有个C 系列文章: http://cnodejs.org/blog/?p=1621”>Javascript里有个C:Part 1 – 基础 <a href=“http://cnodejs.org/blog/?p=1804”>Javascript里有个C:Part 2
2017-07-18 17:16:00 288
转载 c++调用lua时简单打印lua栈
今天出现了一个看似奇怪的bug,关于dispatch和listener的,有个listener的函数被无端调用,分析代码,应该只有点击按钮才会被调用,但现在是一启动游戏就会被调用,而且pc上正常,iphone手机上会出问题。我们采用打印lua堆栈的方式,打印堆栈代码如下:print( debug.traceback() )。分析堆栈发现是dispatch了一个未定义的字符串,把字符串正常定义就好了
2017-07-18 16:33:32 2481
转载 JavaScript 数组详解
JavaScript 数组详解在程序语言中数组的重要性不言而喻,JavaScript中数组也是最常使用的对象之一,数组是值的有序集合,由于弱类型的原因,JavaScript中数组十分灵活、强大,不像是Java等强类型高级语言数组只能存放同一类型或其子类型元素,JavaScript在同一个数组中可以存放多种类型的元素,而且是长度也是可以动态调整的,可以随着数据增加或减少自动对数组长度做更改。
2017-07-18 11:15:46 209
转载 SetCallAsFunctionHandler(call)
soa/sigslot/slot_js.cc00001 /* slot_js.cc00002 Jeremy Barnes, 16 November 201000003 Copyright (c) 2010 Datacratic. All rights reserved.00004 00005 JS interface to slots.00006
2017-07-18 10:49:27 268
转载 obj_tpl->SetCallAsFunctionHandler(Call, Handle<Value>());
So what we've got is helpful — we've peeked into Python, said "hi", and left just as quickly. For the moment, that'sall we're going to do with python. We need to go back into Javascript-land, and figu
2017-07-18 10:41:43 284
转载 SetCallAsFunctionHandler
和fibjs同居的日子(二) 之fibjs和v8的接口交互一、V8引擎概览V8是Google团队开发的高性能JavaScript开源解析引擎, 它采用c++开发并且被应用在开源的浏览器Google Chrome中。它实现了描述在-262当中的ECMAScript规范。它可以运行在WindowsXp及以上的系统, 不小于MacOsX10.5的系统, 和使用IA-32, ARM或者MI
2017-07-18 10:33:08 390
转载 mysql connect
错误解释:服务器没有授权给你这个ip是不能连接的你想root用户名使用root密码从任何主机连接到MySQL服务器的话。运行命令:mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;如果你想允许用户root从ip为192.168.1.3的主机连接到mys
2017-07-17 10:25:34 796
转载 @echo与echo区别
不加@时,在运行时,会在窗口显示出这条命令而加了@, 只会显示出 echo后面你要显示出的东西。例如:echo abc会显示:echo abcabc而:@echo abc会显示:abc
2017-07-13 11:44:46 2862
转载 编译器中和64位编程有关的预定义宏
版权声明:本文为博主原创文章,未经博主允许不得转载。本文对分别测试VC,MinGW,GCC 三种编译器,32位和64位模式,共6种情况下,和64位编程有关的与预定义宏的值。对跨平台编程具有参考意义。 Agner Fog 在他的《Calling conventions for different C++ compilers and operating systems》提到一些预订宏。
2017-07-07 10:17:56 1038
转载 用宏区分操作系统和编译器
编码的时候经常要用到条件编译,每次都到网上去查比较浪费时间,今天总结一下以备后用 编译器GCC#ifdef __GNUC__#if __GNUC__ >= 3 // GCC3.0以上Visual C++#ifdef _MSC_VER(非VC编译器很多地方也有定义)#if _MSC_VER >=1000 // VC++4.0以上#if _MSC_VER
2017-07-07 10:17:20 660
转载 linux 64 or 32
#include int main(int argc ,char* argv){ #ifdef __x86_64__ printf("__x86_64__"); #elif __i386__ printf("__i386__"); #endif return 0;}
2017-07-07 10:15:35 279
转载 cmake构建时指定编译器架构(x86 or x64)
cmake构建时指定编译器架构(x86 or x64)博客分类:Buildcmake Windowsvs2015 x64编译器为例,cmake命令如下:Xml代码 cmake -G "Visual Studio 14 Win64" path\to\source\dir 去掉Win64,就是32bit:Xml代码
2017-07-07 10:07:30 28202 1
转载 类调用堆栈stdcall thiscall
看deom吧,两个对比C/C++ code?123456789101112131415161718192021222324252627282930313233343536373839404142
2017-07-07 09:53:05 337
转载 GDB No symbol "XXXXX" in current context
这几天在把windows下的工程移植到centOS下的时候,发现gcc编译不过,有三点原因:1、gcc相比VS,对C++标准的遵循更为严格,有些不符合标准的写法在VS下能过,但在gcc下则报错。比如:在头文件中声明类A的成员函数时,gcc下不能带有A::,又如初始化fstream时,gcc下第一个参数必须是const char *,而不能是string等等;2、由于centOS已有的gcc
2017-07-06 11:34:34 902
转载 多线程
本人近期在做按tcp流发送数据包的学习,一来二去接触到了多线程。我百度照此写了个多线程代码,如下:#include #include #include void thread(void *arg);void thread(void *arg) {int i;for(i = 0; i {printf("This is a pthead.\n");}
2017-07-05 20:52:24 206
转载 高性能的iocp网络设计思路
IOCP是什么就不用介绍了,为什么要用IOCP就更不用提及。这里我们只简单讨论IOCP开发的一个思路,即能提高性能又能隆低开发复杂性。“即能提高性能又能隆低开发复杂性”?觉得我说的有矛盾吗?不是复杂的代码才能换来高效吗?其实不一定,我认为简单是一切事务的根本,就像遗传学的四个规则就造就了地球千变万化的生命世界。我们通常看到网上的代码示例都是一个IOCP句柄,多个IO线程和多个处理线程,由于
2017-07-03 16:46:59 648
转载 Windows下C语言的Socket编程例子(TCP和UDP)
Windows下C语言的Socket编程例子(TCP和UDP)一。 server端: 1 #include "stdafx.h" 2 #include 3 #include 4 5 #pragma comment(lib,"ws2_32.lib") 6 7 int main(int argc, char* argv[]) 8 { 9 //初始化
2017-07-02 10:32:46 502
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人