- 博客(31)
- 资源 (2)
- 收藏
- 关注
原创 Optimized Cost per Click in Taobao Display Advertising - 淘宝 OCPC 阅读笔记
OCPX 广告投放策略从 2016 年左右开始兴起,很快就成为了在线广告领域的主流,在这个过程中,阿里的一篇论文 Optimized Cost per Click in Taobao Display Advertising 对 OCPX 的普及起到了关键的作用。本文整理了一下该论文的脉络,谈谈我对 OCPC 的理解。首先我们要知道, OCPX 模式应用在广告平台进行广告投放和广告展示的环节中,广...
2020-04-23 20:25:25 3979 1
原创 Is Parallel Programming Hard - Append C - 读书笔记
书名很长,《Is Parallel Programming Hard, And, If So, What Can You Do About It? 》中文翻译很短,《深入理解并行编程》,可以中文之博大精深(误)。其中附录C很有意思,值得细读。...
2020-04-18 17:57:40 875
原创 DDIA读书笔记 第七章 事务
脏读脏写事务的存在是为了简化应用层的逻辑。ACIDAtomicity 原子性,在出错时终止事务,并回滚到之前的状态,也可以说是可终止性。Consistency 一致性,这一点实际上应由应用层来维护Isolation 隔离性,多个事务不能相互交叉,事务提交时和串行执行的结果完全相同,然而实际上串行化会有性能问题,很少有数据库能保证这一点。Durability 持久性,保证事务执行成功后数...
2020-03-28 14:24:00 511
原创 DDIA读书笔记 第五章 数据同步
一主多从多主无主主从关系同步方式同步同步异步同步半异步同步同步滞后read-after-write 一致性单调读一致性前缀一致读实现基于语句基于WAL基于行
2020-03-15 23:26:47 1367 1
原创 DDIA读书笔记 第六章 数据分区
分区方案基于 key-range基于 key hash复合主键二级索引基于文档基于词条分区再平衡路由方案分区方案索引分区分区再平衡分区负载不均衡,导致热点分区负载过大。可以从应用层采取措施,例如路由方案路由逻辑可以放在节点处,客户端,或者单独抽离一个路由层。...
2020-03-15 21:38:58 285
原创 DDIA读书笔记 第四章 编码与演化
Part 1 编码编码语言内置编码标准化编码JSONMessagePackXMLEXI二进制编码ThriftPBAvro模式演变 schema evalution内存中的数据可以有多种格式,但是如果要传输或者写到磁盘,就需要编码(序列化)成字节序列。由于服务端会升级,所以需要保证读写数据的代码有兼容性,包括:前向兼容,旧代码可以读新数据后向兼容,新代码可以读旧数据1 语言内置编码...
2020-03-08 13:06:49 350
原创 DDIA读书笔记 第三章 存储与检索
log-structed 日志结构哈希索引SSTable 与 LSM树日志文件的压缩 分段 合并page-oriented 面向页面B树数据库聚集索引 非聚集索引多列索引数据分析列存储1 最简单的数据库#!/bin/bashdb_set () { echo "$1,$2" >> database}db_get () { grep "^$1," database | se...
2020-03-08 10:38:23 537
原创 Tensorflow C++ api 笔记
本篇博客记录笔者最近在在线推理服务中使用 Tensorflow C++ 接口的若干心得和疑(tu)惑(cao),整个流程包括创建 session ,加载 graph ,填充 tensor ,运行 session ,等等。注意,因为 tensorflow 2.0 没有普及,考虑稳定性,本篇博客代码均基于 tensorflow 1.12 。1. session1.1 session & c...
2020-02-13 20:13:33 1869
原创 当我敲一个SET指令时,Redis做了什么
阅读Redis源码是一个学习C语言,了解内存模型,了解key-value数据库的有效途径。有关redis源码的博客汗牛充栋,我搜集了一些不错的博客如下: 深入浅出 Redis client/server交互流程 《Redis设计与实现》也是一本很棒的Redis源码讲解书,和以上博客相似,它们都是从Redis的底层数据结构讲起,自底向上,层层解析。此篇博客我想按照自顶向下的顺序来讲解,以对源码的...
2018-08-27 16:23:54 427
原创 自己动手写C++迭代器
综述关于STL iterator和 iterator adapter 的部分我已在先前的博客 stl源码剖析笔记之iterator 中有所提及,下面我们可以试着自己动手写一个简单的迭代器工具 step_iterator,以深入对iterator的理解。step_iterator 可以接受两个模板参数,一个是迭代器 Iter,一个是步进距离 Step,相较于普通的迭代器,它可以以 Step ...
2018-05-06 22:01:21 5037
原创 stl源码剖析笔记之iterator
此系列是本人阅读《STL源码剖析》的一点心得体会,并结合部分STL源码加深理解。此篇博客为第三章iterator的读书笔记。综述 有个地方容易混淆,首先,有五种iiteratorinput iteratoroutput iteratorforward iterator,bidirectional iterator,random-access iterator
2018-01-05 09:47:33 710
原创 浅析std::ref与reference_wrapper
在折腾stl的时候遇到std::ref和std::reference_wrapper这两个概念,没有搜到什么简明的资料,所以自己来琢磨一下。综述 首先引用《C++标准库(第二版)》5.4.3节对此的介绍 声明于 中的 class std::reference_wrapper 简单来说,就是让按值传参的模板可以接受一个引用作为参数。简单的测试 我
2018-01-03 22:38:50 12377 6
原创 python编码小结
最近被python2的编码弄得心烦意乱,决心花点时间搞懂这一块,省的以后遇到编码解码报错或是乱码再去查资料。以下是做的一些总结。python编码顺序 网上很多资料都在说python2编码应该如何如何,不过应该先分析一下哪里用到了编解码以及顺序是怎样的。 首先,我们用编辑器写程序,源码文件在保存时会按照某种编码格式存储,而python解释器载入程序会按照默认的编码格式(python2是
2017-12-16 20:54:38 319
原创 stl源码剖析读书笔记之allocator
此系列是本人阅读《STL源码剖析》的一点心得体会,并摘录了部分STL源码加深理解。此篇博客为第二章allocator的读书笔记。1.construct()和destroy()是全局函数 第二章开始作者定义了一个简单的模板类 JJ::allocator ,有allocator的所有接口,包括 allocator() deallocate() construct() destroy() 四个成员函
2017-12-13 23:07:11 425
原创 使用scrapy爬取stl容器的时间复杂度
本篇博客是一个简单的scrapy应用教程,我们要用scrapy爬取 C++官网(www.cplusplus.com/reference/stl)上关于各个stl容器方法的时间复杂度文本内容,主要是find insert erase三个方法。 首先明确一下scrapy这个爬虫框架的大概流程,主要组件有调度器scheduler,下载器downloader,蜘蛛spider,实体管道item
2017-12-08 16:24:24 297
原创 解决centos6安装openstack-packstack时的python依赖错误
openstack-packstack是一个all in one安装openstack的工具,安装步骤很简单,几个步骤就可以: yum install -y http://rdo.Fedorapeople.org/rdo-release.rpm yum install -y openstack-packstack packstack --allinone 然而我在安装过程中出现了python依
2017-08-31 16:07:00 3114
原创 解决docker-py api版本不兼容问题
报错: docker.errors.APIError: 400 Client Error: Bad Request (“client is newer than server (client API version: 1.30, server API version: 1.19)”)docker version查看版本号,果然api版本是1.19,但是docker-py的版本是1.3
2017-08-25 22:11:23 5396
原创 使用aspose.note将onenote笔记本批量转换成html
onenote是一款十分好用的笔记本工具,我想将onenote笔记本转换成html并上传到我的云服务器中,这样在别的主机上就可以查看我做过的笔记。onenote本身并不支持笔记保存为html格式,不过无所不能的插件”Gem for Onenote”有这个功能,只是一个个转换过于麻烦,于是使用aspose.note for .Net将onenote笔记本批量转换成html。 aspose系列提供
2017-07-31 16:33:05 2070
原创 ejs模板使用:Layout,Blocks,Partials
ejs-locals,可以使用layout,blocks,partials让模板布局更加灵活
2017-06-23 10:39:47 3665
翻译 node_acl用法示例
需要用nodejs实现用户访问控制,有一个node_acl的包可以提供ACL功能,但是没找到什么资料。github上有一个node_acl的demo,翻译一下造福群众。原文地址在这里https://github.com/OptimalBits/node_acl/issues/38 举一个图书的例子,页面路由如下:/books/books/:bookId/books/:bookId/pages
2017-05-30 17:02:33 2571
原创 node-red端口争用问题
node-red端口争用报错node-red是一个用图形化编写nodejs的开源软件,今天在使用node-red的时候犯了一个错误,拖了两个socket.io控件并且都应用了默认配置,但是默认配置都是监听80端口且路径都是/socket.io,于是出现端口争用,node-red服务直接报错退出,且界面显示”lost connection”,所以也无法通过界面删除节点。报错信息如下: 28 May
2017-05-28 16:47:16 3326
原创 vim不进入窗口进行操作
项目需要一个Windows主机从服务器上下载一个rdp文件对其他Windows主机进行远程管理,这个rdp文件由很多配置指令组成,本来打算在Linux服务器上对某些配置进行修改,再将rdp文件传给用户,然而使用sed指令后再传给Windows产生乱码,不能识别为rdp文件,猜测可能和Linux Windows对文件不同编码方式有关。查了半天也不知道怎么解决。无奈只好用vim,要求只用命令行,即不进
2017-05-03 10:21:41 1025
原创 用docker安装YCM创建自己的vim开发环境
vim因其丰富的插件和强大的配置功能在创建开发环境的自由度上确实非其它编辑器和IDE能比。之所以要用docker创建一个vim开发环境,因为docker轻量,简单,便于管理。在一个镜像里配置好vim后,上传到自己的仓库里,这样换台主机后不用再从头安装插件配置环境,而是直接在docker里把镜像下载下来。
2017-04-28 16:30:34 2129
原创 jquery.dataTable用法
DataTables是一个基于jquery的表格插件,有强大的分页,排序,动态修改表格等功能。它的所有配置和方法都能在其官网[https://www.datatables.net/](https://www.datatables.net/)上找到,这里挑选一些常用的功能讲解。#1.初始化配置笔者约一年前在用datatable的时候,官方文档上的构造器还是dataTable(),现在则全部变成了`
2017-04-18 11:26:46 1467
原创 shell-expect使用笔记
需要ssh上多台主机进行相同操作,重复劳作是枯燥的,所以写个shell脚本实现。用到了expect。 网上有不少expect的教程,都大同小异,没有说得很详细的。其实expect用的是tcl语法,要用expect实现一些功能,还需要学一些tcl的知识。这里有个不错的网站学习tclhttp://www.yiibai.com/tcl/ 先贴一个expect实现scp传输
2017-03-09 17:19:50 1231
原创 highcharts用法
highcharts是一个十分强大的图表绘制插件,网上关于其用法有很多,不过最全的资料仍是官方api,这里通过一个动态绘制车辆速度曲线图的实例学习highcharts。highcharts将图表表示成层级结构,例如对于曲线图,首先需要一个容器,即一个div,这个容器里有一个chart,我们可以在初始化时对这个chart进行配置,比如type属性决定了绘制图线类型,”line”为折线图,”bar”为柱
2017-01-05 16:23:27 1098
原创 angularjs学习之http
一个很简单的angularjs程序,向后台php请求数据并在页面显示,出现了跨域问题。代码如下。 angular_http.html<!doctype html><html ng-app='app'><head> <meta charset="utf-8"> <script src='angular.js'></script></head><body> <div n
2017-01-05 10:58:28 283
原创 js循环添加onclick事件
javascript在循环添加onclick事件时会出现函数传入参数均为最后一个值的问题,编写一个test.html如下所示:for (var i=0;i<2 ;i++){ var bt=document.getElementById('bt'+i); bt.onclick=function(){ console.log(i);//无论点击哪个按
2016-12-09 11:04:23 12393 6
原创 js与jQuery选择器
写这篇文章是因为在用一些jQuery插件的时候,需要对某些元素应用一些插件里定义的方法,然后发现js选择的元素不能应用这些方法,只能用jQuery选择器。想一想就能明白,js选中的是DOM对象,而jQuery选中的是jQuery对象,方法自然不能通用。诚然,jQuery选择器远比js强大,但个人编程习惯不一样。这里对两者进行简单的对比,并提供转换的方法。jQue
2016-11-29 16:30:16 381
原创 bootstrapSwitch用法
bootstrapSwitch是一个很美观的切换控件,官网上对它的介绍也很详细。下面通过几个demo快速上手bootstrapSwitch。 首先,引用相应的js和css文件,把checkbox放进class为“switch”的div中,再在js中初始化 $('#mySwitch input').bootstrapSwitch();就可以使用bootstrapSwi...
2016-11-17 17:07:45 46689 4
原创 Shell脚本快速入门
因为项目需要需用shell写一个linux测试脚本,发现网上此类文章十分杂乱,很难在短时间内上手,所以在此写一个bash shell脚本快速入门。其目的在于对于shell bash没有接触过的人可以看完后就可以实现一些简单代码。1. #!/bin/bash需在脚本第一行添加此句,表明用/bin/bash解释器解释脚本2. 变量赋值与使用Bash Shell并不区分数据类型,而是
2016-11-02 14:47:20 279
redis设计与实现(第二版)带书签
2017-10-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人