自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Tensorflow-Go的扩展

谷歌的tensorflow虽然提供了go版本,但是官方的说法是: TensorFlow provides APIs for use in Go programs. These APIs are particularly well-suited to loading models created...

2017-12-07 17:44:59 872 0

原创 TensorFlow模型保存的一个坑

最近工作需要,使用tensorflow(r1.3)中contrib的某个库,根据tf官网的说法,go版本是只能调用py版本训练好的模型,而个人对go比较熟且线上环境用go作服务,所以想用go调python训练好的模型。使用python import tf和tf.contrib相关库,使用tf.sa...

2017-11-23 17:10:48 2244 0

原创 glibc-文件读缓存的EOF判定坑

本文基于glibc2.24版本。问题起源于一个学弟的代码:#include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <...

2017-07-14 00:08:14 423 0

原创 linux源码 网络包接收--从中断到协议栈

本文基于4.11内核linux在硬中断触发后,会进入do_IRQ函数(arch/x86/kernel/irq.c):/* * do_IRQ handles all normal device IRQ's (the special * SMP cross-CPU interrupts ...

2017-06-27 23:36:53 1189 0

原创 linux内核与netlink有关的两个坑

最近做一些与netfilter/ulogd2性能调优有关的工作(https://github.com/InsZVA/ulogd-with-syslog-tcp),在过程中发现了两个内核概念理解的坑点。 第一个问题是下面代码: ```c len = recv(fd, ui-&g...

2017-06-14 16:14:36 1026 0

原创 Linux内核netfilter子系统ulogd项目性能调优记录

使用ULOGD打SYSLOG到SYSLOG-NG,当NFLOG拿到的数据包在6K左右时,CPU有两个核心占了15%左右 使用修改过的ULOGD直接打TCP,CPU只有一个核心占15%左右(修改版在https://github.com/InsZVA/ulogd-with-syslog-tcp) 使用...

2017-05-10 17:04:08 587 0

原创 Visual Studio 调试器bug一例分析

背景Visual Studio一度被认为是“最强大的IDE”,不过前段时间有thu学长遇到一个问题,是和调试器相关的,我和他qq联系,让他远程发图,发现了一例VS的调试器bug。问题这是调试过程中的截图,在运行光标处之前,看到lReturn是0然后运行到第二条语句,lReturn还是0,state...

2017-04-15 23:32:55 656 0

原创 制作一个自己的对战平台

缘起因为在浙大,物理网卡的地址被分配为222.205.XX.XX,但是子网掩码是255.255.255.0,这样的话虽然大家都在一个局域网里面,但是却不一定在同一个子网。 局域网联机游戏为了发现局域网中的主机,会发送广播包,有些局域网联机游戏,会发送到255.255.255.255这个广播地址(...

2017-03-14 00:30:58 2677 0

原创 通过简单的处理去除WinRAR中文版的广告

winRAR中文版老是弹出一些广告,很头疼,比如:使用OD进行处理,发现了CreateWindowEx这个敏感函数,查找引用,发现有个地址传递了一看就知道是广告的className:RARReminder:这里不能直接把调用CreateWindowEx的代码NOP抹掉,因为后面可能要ShowWin...

2017-03-13 17:19:32 2937 0

原创 HTML5直播技术探究

传统直播技术,大多使用RTMP通过Flash进行传输。随着HTML5的逐渐实现,<video>等媒体标签的浏览器支持, 很多视频逐渐向HTML5靠拢。Youtube等视频网站纷纷开始使用HTML5播放器,然而纵观当前的直播网站,大多 还是依赖Flash。直播为何不采用HTML5呢?...

2017-02-02 15:28:31 3339 0

原创 统治世界的缓存 --- glibc源码拜读 - printf

问题由来有这么一段代码:int main() { printf("aaa\n"); pid_t pid = fork(); if (pid < 0) { printf("an error occur\n"); ...

2017-01-08 15:41:45 1838 2

原创 Go语言中的多核调度

Go语言中的多核调度 浙江大学 14级软件工程 李自乐   近年来,随着工业技术的发展,服务器的CPU数量越来越多,动辄几十核心。为了发挥多核的优势,大多数程序都会采用多线程的方式来利用多核。另外,服务器编程一般都涉及较多的IO,包括网络或者外存,同步阻塞的IO对于大多数应用环境是一种很糟糕的方法...

2017-01-05 03:16:32 3782 0

原创 Nginx源码分析 - Nginx启动以及IOCP模型

Nginx 源码分析 - Nginx启动以及IOCP模型版本及平台信息本文档针对Nginx1.11.7版本,分析Windows下的相关代码,虽然服务器可能用linux更多,但是windows平台下的代码也基本相似 ,另外windows的IOCP完成端口,异步IO模型非常优秀,很值得一看。Ngin...

2016-12-27 21:21:23 5674 2

原创 非官方浙江大学校园网认证客户端开发笔记(一)

为什么会有这个项目在浙大是通过VPN认证上网的,在windows下官方的校园网客户端表现非常好,可以自动解决部分问题,而且不需要什么配置,输入 用户名和密码即可实现一键上网。但是很多同学使用Linux系统,尤其是刚开始学习Linux的苦手,有线网的上网便成为了最大的问题。 当然cc98流传着多...

2016-12-14 16:26:23 4780 3

原创 Sapphire 算法简要分析

序几个月前为了分析goroutine的垃圾回收去看了Sapphire算法的论文,在博客里面也贴了第一部分的译文, 不过太监了,对此表示遗憾。于是将该篇论文重新看了一遍,然后整理了一下大致思路。个人理解,水平有限 ,可能有误还望大家批评指教!概述支持并发的语言(多线程等)的垃圾回收工作尤为复杂,...

2016-11-18 23:35:42 928 0

原创 匹配队列问题

匹配队列问题最近在做视频聊天平台,想让他支持随机配对,做一个匹配队列。要求每个客户端到达后加入队列,匹配时随机找到 匹配目标。并且能够实现,广播所有人正在匹配的人数,在客户端离开后,也能及时清除垃圾。最初的设想–无头苍蝇乱撞最初的设计方案,采用每个客户端一个线程,同时每个客户端连接的时候,进入队...

2016-10-18 22:15:22 1466 0

原创 WebRTC初试用-在线视频聊天室的基本流程

WebRTC技术在线视频传输,传统做法是做一个中继服务器,负责客户端的发现和数据的中介传输,那么就会产生一个很明显的问题,中继服务器需要 传输大量的数据,不仅如此还有复杂的流信息控制以及同步等问题。而且,随着数据量的增大,中继服务器单机无法承载,不得不做负载 均衡甚至地区分发等,大大增加系统复...

2016-10-17 17:39:09 1170 0

原创 关于NAT的一些事儿

关于NAT的一些事儿从丢包开始因为经常玩Dota2,然后又是校园网(万恶的ZJUVPN),所以每隔一段时间就会出现持续数十秒的高丢包(40%以上) 甚至掉线。在网上搜索之后发现,处于学校网络或者大型社区之类的网络环境下比较容易出现这种情况,这就是NAT的 原因了。什么是NAT大家如果用过路由器...

2016-10-04 01:58:29 3191 0

原创 微信支付官方SDK-phpV3的一处坑

在使用微信支付官方SDK时,发现成功的回调处理程序无法正常调用,经审查,是 lib/WxPay.Api.php 中第415中使用了 $xml = $GLOBALS['HTTP_RAW_POST_DATA']; 而该语句只有在php.ini设置后才可使用,导致xml输入数据获取不...

2016-08-07 23:06:48 2027 4

原创 Golang1.7 Goroutine源码分析

一、       Golang简介 1.1概述   Golang语言是Google公司开发的新一代编程语言,简称Go语言,Go 是有表达力、简洁、清晰和有效率的。它的并行机制使其很容易编写多核和网络应用,而新奇的类型系统允许构建有弹性的模块化程序。 Go 编译到机器码非常快速,同时具有便利的...

2016-06-29 16:29:07 3849 3

转载 Async Programming - 1 async-await 糖的本质(1)

原文出处:Pointer-SMQ的博客 这一个系列的文章主要来讲 C# 中的语言特性 async-await 在语言层面的本质,我们都知道 await 是编译器进行了一个 rewrite,然而这个 rewrite 并不是直接 rewrite 成其他没有原生支持 await 的语言的 lambda...

2016-05-06 17:03:19 956 0

原创 自己动手写数据库(三) 持久化方案与索引树

自己动手写数据库(三) 持久化方案与索引树推荐一点资源之前说我所有实现都是Go写的,在MonkeyDB2@Github,但是有些同学可能不喜欢Go的风格或者设计思想, 在此推荐大一学弟的项目,Java写的:CauchyDB内存分块管理既然要实现一个数据库,我们之前所有的东西都是在内存里面的,这如...

2016-04-30 18:48:02 2175 0

原创 自己动手写数据库(二)表的结构

自己动手写数据库(二)表的结构一点点声明我不准备贴多少代码,因为代码实现是开发者自由去做的,我这篇文章只是为了提供一个思路或者结构,具体的实现,如果做不出来,请多多练习基本功。 另外我这篇文章讲的是以行为储存的,列式储存的数据库类似。表的逻辑模型我们知道,在关系型数据库中,数据是以表的形式来储存...

2016-04-28 15:38:37 2137 0

原创 自己动手写数据库(一) 从SQL语句开始

自己动手写数据库(一) 从SQL语句开始关于本教程作者:InsZVA,浙江大学 软件工程系,也是第一次尝试写数据库,如有错误还望多多指正,写此篇文章也望有抛砖引玉的作用。 面向读者:有一定C语言基础。(其他知识会在教程中提到)从SQL语句开始对于数据库,我们最直观的概念或许就是在命令行中输入SQ...

2016-04-23 19:04:46 9057 0

原创 内存映射系统开发

为了使用内存作为数据库的主要存储方式,开发内存数据库,我们需要对内存中的数据进行保证。即可以备份与还原,那么为了将内存中的数据备份到外存中,我们可以采取以下策略: 选取一个外存文件,将其映射到某个内存地址; 当更新内存时,适时地更新外存文件; 系统重启时,从外存中重新读取内存内容。 那么这...

2016-03-18 14:55:47 735 0

原创 Go语言黑魔法中的问题修正

原文: http://studygolang.com/articles/2909 文中大多技巧都是正确的,但是结构体和[]byte之间的转换: 第三式 - 结构体和[]byte互转 有一天,你想把一个简单的结构体转成二进制数据保存起来,这时候你想到了encoding/gob和encoding/...

2016-03-13 00:13:32 836 0

翻译 Sapphire算法:GC Without Stop the World(上)

Go的GC一致为人诟病,然而Go1.5据说大大优化了GC,具体可以见这篇文章http://www.oschina.net/translate/go-gc-solving-the-latency-problem-in-go-1-5 于是我打开了Go源代码,查看了Go GC相关代码,注释中说,Go现...

2016-03-02 14:18:02 1567 1

原创 打造先进的内存KV数据库-7 反射以及并发锁

反射反射作为一种代码组织形式,带来了极大的不安全因素,同时也带来了许多便利之处,通过方法、对象、类型名称来获得具体实例,可以避免大量if-else分支,使得代码优雅,monkeyDB的服务端代码最后采用反射组织。并发锁多线程访问同一资源时,需要对资源加锁,否则可能会得到预料之外的后果。由于内存数据...

2016-01-26 14:11:54 939 0

原创 打造先进的内存KV数据库-6 PHP支持

PHPphp作为使用极广的程序设计语言,monkey数据库对php的支持是必须的~代码实现//test.php <?php class MonkeyDB { private $socket; private function read() { $data...

2016-01-05 23:50:34 1272 0

原创 打造先进的内存KV数据库-5 TCP侦听

TCP侦听作为支持集群的数据库,必定要与多个客户端交互信息,不可能让数据库与所有客户共享地址空间(虽然这样性能好),所以需要使用TCP协议进行交互数据,(UDP协议不可靠。。。弃用),C语言的TCP库其实还好,但是对于高并发和并行的处理不如Go,而且并发锁机制比较难写,所以使用Go写了服务器和客户...

2016-01-05 23:46:16 836 0

原创 打造先进的内存KV数据库-4 伙伴内存管理系统

伙伴算法大概是这样的,monkey储存引擎(今年猴年了嘛~取个名字,重了再换)的内存管理使用伙伴算法,大概原理是这样的: 1.多个空闲内存块的链表,分别是不同大小的内存块,1K,2K,4K,8K,…,,按照这样的情况一直到4M,当程序申请内存时,选择一个稍大于其所要申请的块,比如申请1023字节...

2016-01-04 19:34:33 1109 0

原创 打造先进的内存KV数据库-3 最终选择-C & B-Tree

多种索引与语言我尝试了tire树索引 B+树索引 B树索引,发现还是B树索引最快,另外使用C写了完善的B树索引,但是我发现使用cgo调用的时候,会有500%左右的性能损失,tire树大概比B树慢2倍,所以还是选择使用原生C来写完后续的进程。索引代码实现//BTree.h //实现对order序(阶...

2015-12-27 00:11:46 1275 0

原创 Ubuntu Server 配置中的各种坑

Ubuntu Server 配置中的各种坑安装在windows下将iso镜像刻录到U盘安装,最开始使用的是UltraISO,结果安装的时候老提示找不到CDROM,后来使用win32diskimage,结果就ok了无线连浙大VPN使用xl2tpd连接浙大vpn,发现经常掉,而且wlan0都会关闭,真...

2015-12-22 22:29:58 1147 0

原创 打造先进的内存KV数据库-2 B树索引的建立(2)

索引的插入接上篇文章,我们实现了B树的查找log2n的算法,然而在后来的单元测试中,我发现了bug,在此进行修正,修正后的查找函数://查找指定索引 如果找到返回找到的node和position,失败的话返回最近的node和position, //并返回返回值相对于查询值是大了还是小了 true-...

2015-12-19 13:51:36 781 0

原创 打造先进的内存KV数据库-1 B树索引的建立(1)

设计目的在搜索引擎的设计中,往往需要使用倒排索引,在当前内存价格不断走低的情况下,内存数据库必然会成为主流。KV数据库由于适合Map-Reduce用于分布式处理。 本系统设计实现如下目标: * 实现极高性能的查询 * 实现分布式集群储存 * 实现可靠的日志系统索引设计索引采用B数索引,这样...

2015-12-18 15:17:08 1675 0

原创 CPU L2缓存初探

CPU L2缓存初探探索目的为了设计高性能的内存数据库,往往要考虑CPU缓存的命中率,查阅资料发现,Intel架构的处理器有3级缓存的设置,其中L1,L2较小,L3较大但被三个核心所公用。在我使用的i7 4712mq中,使用dmidecode查看缓存大小:inszva@inszva-Aspire-...

2015-12-17 14:38:36 1728 2

原创 nodejs-初探-简单的判定位置是否在市区API

看来nodejs还是越来越火了,WordPress也用上了nodejs抛弃了php,虽然php7比php5的效率高了一倍,然而在node,java等静态语言面前,还是不值一提.当然php还是有他的好处,开发迅速,修改便捷,适宜于调用api做应用层.另外由于node的封装性较低,node可以操作很多...

2015-11-27 22:30:48 973 0

原创 php7 性能测试

满怀激动的编译安装了php7 RC6然后对整数相加相乘及浮点数相加相乘做了测试: <?php echo "整数加法性能:"; $time = time(); for($i = -214748364;$i < 214748364;$i ++); echo ...

2015-11-09 17:22:32 740 0

原创 浙大PTA OJ漏洞

对PTA测试网站高危漏洞可以导致任意用户代码曝光的测试报告, 1.打开PTA提交列表,进行抓包: 发现使用Ajax获取了提交列表,查看有getSubmitList项: http://pta.patest.cn/api/exam/getSubmitList?limit=50&o...

2015-09-22 22:09:51 6236 5

原创 多级分销对接第三方API获取数据系统的优化

最近在做一个基于有赞的多级分销管理系统,所有成员的店面均在有赞商城,使用有赞API获得他们的业绩,但是有赞提供的分销只有一级,故制作该系统。考虑到减轻工作量,理清层次关系,采用了OOP设计方法,将数据库,表封装为基类,分销成员,店面等继承表。 但是在列出销售量报表和分销商的时候出现了严重性能问题...

2015-07-23 13:02:01 2067 0

提示
确定要删除当前文章?
取消 删除