经验分享
蓝贝壳壳
热爱软件事业 崇尚自由 一个不愿成为码农的码农 多年苦心探索和参悟 希望解放全天下苦逼的码农
展开
-
GO语言带调试日志的锁
死锁在多线程中经常遇到,有时候看代码很难发现问题,带调试日志的锁,准确记录锁的周期,等待时间,读写竞争情况,Lock、Unlock是否匹配,方便找出死锁发生的各种原因https://github.com/vipally/glab/blob/master/lab22/debug_lock.gopackage debuglockimport ( "bytes" "fmt" "runtime" "strconv" "sync" "sync/atomic" "time")const原创 2020-09-17 00:14:40 · 143 阅读 · 0 评论 -
【linux】VirtualBox下ubuntu系统静态桥接网络配置的各种坑
目录0.网络配置目标1.VirtualBox的四种网络连接方式2.桥接模式的各种坑2.1 桥接网络无法获取ipv4地址2.2 桥接网络可以获取ipv4地址,但是无法ping宿主机2.3 桥接网络可以ping通宿主机,但是无法ping通网关2.4桥接网络可以ping通网关和访问internet,但是内网ip是动态的2.5大功告成,为VM配置独立静态内网IP实现所有网络目标安装过程已在这篇博客分享https://blog.csdn.net/vipally/article/..原创 2020-07-02 19:39:56 · 988 阅读 · 0 评论 -
【linux】VirtualBox安装ubuntu虚拟机并且实现跟宿主机互相ping通和共享文件夹
目录1. 用默认配置创建虚拟机2. 安装过程3. 安装后配置3.1 将时区切换到北京时间3.2 让root用户可以登录并且可以用xshell远程登录3.3 安装unbuntu安装VBox Addon3.4 设置HOST-VM共享文件夹a.选择菜单 “设备/共享文件夹”b.选择菜单 “设备/共享粘贴板/双向”c.选择菜单 “设备/拖放/双向”d.虚拟机关机3.5 用“桥接模式”实现宿主机与VM网络互通a.virtualBox需要设置网络连接方式为 “桥接网.原创 2020-07-01 15:53:20 · 1300 阅读 · 0 评论 -
一直被错爱的C/C++语法
最近在为dex-理想中的编程语言模型(https://github.com/dexlang/dex)整理一些资料发现C/C++的函数申明语法真的很奇怪:golang已经在官方blog详细说明为什么要改掉C的函数声明语法https://blog.golang.org/gos-declaration-syntax大意如下:C的函数声明语法:retType funcName(p...原创 2018-08-06 00:03:41 · 257 阅读 · 0 评论 -
用float/double作为中转类型的“雷区”
由于lua用double作为number类型的底层数据中转类型。而实际应用中多以int类型作为函数调用的参数(特别是C实现的API)。因而,double/int/unsigend int之间的数值转换在接入lua的项目中应用十分广泛。实际项目发现,double/int/unsigend int之间的数值转换存在一个**严重且极容易被忽视的"雷区"**。原创 2016-11-13 13:55:05 · 2342 阅读 · 0 评论 -
慎用频繁小块内存申请,让程序健步如飞
最近碰到一个应用,为一块已经载入内存的Tab文件生成一个动态数组用于建立单元格数据索引表。当然这也算是C vs C++的一个典型例子吧。由于事先不知道Tab文件的行数和列数,无法预先生成动态数组。方案1:首先想到的是遍历整个文件,用一个临时map记录每个单元格的索引信息,并计算出表格的行数和列数。然后申请根据行数和列数申请一个合适大小的动态数组,并将临时map中的数据搬到动态数组中,这样只需要原创 2016-11-13 14:40:29 · 2039 阅读 · 0 评论 -
mysql数据库存储引擎让我崩溃了
好久没跟数据库死磕了,这次是真被数据库死磕了。 windows下没有任何问题,移植到linux下,老区没有任何异常情况,新区大量复制装备,后台工具运行期间,角色无法正常登陆,服务器显示运行状态良好。以前用得蛮好的工具,在新区数据库才40万数据带索引一条update语句要1分钟,而且update返回后,fetchdata操作终止,mysql返回2013(connetion lost)错误。 看到这原创 2016-11-13 14:34:10 · 676 阅读 · 0 评论 -
Golang仿函数实现方法及效率测试
在C++ STL中,仿函数(functors)被大量用作改变算法的内在行为。 由于Golang不支持泛型,所以没法像C++那样灵活的使用仿函数。但是Golang有interface,函数是”一等公民”(可赋值给指定类型变量),因此,在Golang中实际上也可以像仿函数那样,通过具有相同参数和返回值的方法声明的不同对象,实现行为的差异化。 下面,详细讲述,Golang中的实现方法: 以下通过不同原创 2016-10-30 22:35:38 · 1434 阅读 · 0 评论 -
Golang黑科技之——string与[]byte转换
我们知道,相对于C语言,golang是类型安全的语言。但是安全的代价就是性能的妥协。 下面我们通过Golang中的“黑科技”来一窥Golang不想让我们看到的“秘密”——string的底层数据。 通过reflect包,我们可以知道,在Golang底层,string和slice其实都是struct:type SliceHeader struct { Data uintptr Len原创 2016-10-27 00:09:19 · 38252 阅读 · 0 评论 -
不要让递归函数fuck大家的cpu
递归算法是大学计算机课程里面经常会讲到的编程方法,因为采用这种方法写出来 的代码清晰易懂。但是,在大多数编程规范里面,会严令禁止使用递归函数,原因下面来详细说明。首先,由于逻辑错误,由直接或间接递归,造成递归调用无法结束(死递归),最后肯定会收到一个"stack overflow"的宕机信息。就暂且不论了。下面要详细讨论的是,简单的递归代码是如何fuck计算机运行时系统的。这里用计算Fibonacc原创 2016-10-13 22:50:30 · 2261 阅读 · 0 评论 -
installgithub-支持断点续传下载GitHubDesktop离线安装文件
用GitHub账号提交代码的都希望下载本地客户端克隆仓库https://desktop.github.com/可是在天朝用GitHub.exe在线下载安装这个客户端实在是太难了由于不支持断点续传 公司千M光纤外带翻墙都无法成功下载这个玩意于是写了一个工具,下载GitHubDesktop代码在这里欢迎拍砖https://github.com/vipally/insta原创 2016-08-26 09:33:08 · 4090 阅读 · 1 评论 -
VisualSVN版本升级导致旧的版本库…
最近windows重装系统,将本地VistualSVN服务器的升级到2.5.6,将旧服务器数据迁移到新的服务器,迁移过程很简单,只是将旧SVN的Repository复制到新服务器,再将新服务器的SVN库指向该目录。客户端工作目录realocate到新的服务器地址,update和showlog没有问题,但是提交的时候出现如下错误:服务器发送了意外的返回值(500 Internal Serv原创 2014-11-09 19:55:31 · 2268 阅读 · 0 评论