自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 资源 (3)
  • 收藏
  • 关注

原创 分支路径图调度框架在vivo效果广告业务的落地实践

为了安全开发和提升迭代效率,新的调度方法被迫切地创建出来。那就支持分支路径的图调度框架。它的原理,则是在原有的图调度框架中,添加两处功能,一是加入了分支节点,二是对于图中节点的触发和激活支持“与”激活和“或”激活。是不是像极了逻辑电路呢?

2022-11-08 21:02:38 266 1

原创 Google protobuf使用技巧和经验总结

Google protobuf使用技巧和经验总结,包括性能优化,陷阱规避,问题排查等。

2022-08-30 20:24:56 832

原创 服务迁移至Kubernetes实践总结

目录梗概把服务迁移到K8S的意义是什么?不要只看收益,不看风险。容器漂移资源碎片IO不能隔离ROOT权限把服务迁移到K8S之前需要做哪一些升级?支持容器化运行和部署服务本身要具有良好的可伸缩性支持日志的集中采集监控指标集中上报数据分片可用性其他的注意事项总结梗概Kubernetes相比传统的集群管理方式,表现出更多优势,因而国内互联网公司也都已经大规模使用 Kubernetes。Kubernetes 拥有大量的用户群体和落地实践

2021-11-08 13:14:38 1493

原创 算法工程团队的测试方法总结

目录服务于算法的工程团队的测试需求当前团队的开发特点团队测试开发的几个发展阶段测试脚本、小工具流量回放工具专用测试工具通用的压力测试平台整体流程自动化、白屏化可视化平台化当前问题总结专用工具和通用压力测试工具的优劣对比多个团队各有一套测试工具,统一起来有一定难度服务于算法的工程团队的测试需求测试的目的是为了保证在线服务的可用性、稳定性、正确性、找到并能消除系统的性能瓶颈。后端服务的测试一般包含下面几个方面:功能测试 性能测试(压力

2021-11-03 12:07:14 472

原创 汉明距离之算法和实现总结

内容简介汉明距离,通过比较向量每一位是否相同,求出不同位的个数。用来表示两个向量之间的相似度。汉明距离计算的步骤,即对两个向量首先进行异或操作,然后对异或的结果的每一位bit进行统计,最后合计出有多少bit的值为1。本文主要内容为,列举出9种计算汉明距离的算法及其C++代码的实现,并使用本文的测试方法测试得出不同算法的性能。再对不同的算法进行分析比较。计算机在进行异或操作中,CPU的指令集可以提供多种实现。比如cpu固有指令 xor 和 SSE指令集 、AVX指令集。后两种指令集都是为了提升

2020-08-29 13:18:04 2448 4

原创 使用C++11的特性来设计和实现API友好的高精度定时器

为什么设计和实现TimerController?最新的TimerController代码保存在Github上面:https://github.com/zuocheng-liu/StemCell,包含timer_controller.h 和 timer_controller.cpp两个文件,欢迎审阅!因为软件设计中面临了一些实际问题尤其在使用C++开发网络应用时常遇到下面的问题:一、软件设计中,不会缺少通过使用定时器的来实现的场景,比如超时控制、定时任务、周期任务。二、C/C++标准库中.

2020-07-29 21:01:55 443

原创 使用Thrift的网络框架搭建一般性网络应用

Idea的提出Thrift 存在的一些问题:相比于protobuf,Thrift的序列化和反序列化性能表现欠佳,大概比protobuf慢10倍。相比于其他RPC框架,Thrift拥有优秀的底层通信框架。(作者简单比较过thrift和grpc1.0的通信框架,grpc的设计实在太过简单。)由此提出猜想和假设:将 Thrift 的底层通信框架抛离出Thrif

2017-05-16 14:07:14 620

原创 工程师手记-升级PNI以支持PHP7

本文内容简介简要本博客写作背景和目的,升级PHP Native Interface的代码使其支持PHP7。PNI 升级以支持PHP7的过程做简单介绍。对这次升级的思路和方法进行总结。思维发散,假设其他情况下应该用什么样的方法进行升级php7的扩展。背景和目的PNI在2016年10月之前支持php5系列的版本。9月份时进行升级,使其支持PHP7。PNI是什么? 具体参考这边博文《

2016-11-09 13:19:55 628

原创 Web服务压力测试工具BullBench

什么是 BullBench ? (what)一个可以对web服务进行压力测试的工具最大特点,BullBench 可以读取 nginx access log 中请求,并将其发送给web服务。也可以读取自定义文件,使用正则匹配和替换,定制请求,发送给web服务。可以同时模拟15000并发度请求(具体数值受限于系统配置)和bullbench类似的软件有 webbench、tc

2016-07-22 16:24:48 1312

转载 线程安全的单例模式-以C++代码为例

本文描述3种场景下的单例模式:进程体内无线程的单例模式进程体内多线程单例模式在单个线程体中的单例模式

2016-04-15 11:16:34 2954

转载 Rest – 架构风格与基于网络的软件架构设计 – 总结

简介本文内容是博主的一篇读书笔记。读的书是Roy Thomas Fielding的博士论文 Architectrual Styles and the Design of Network-based Software Architectures (《架构风格与基于网络的软件架构设计》)。为什么想读这篇论文?主要因为REST架构风格和Restful的框架,在Web系统设计中越来越流行。

2016-02-24 08:21:46 1505

转载 Nginx 和 PHP 的两种部署方式比较

第一种前置1台nginx服务器做HTTP反向代理和负载均衡后面N太服务器的Nginx做Web服务,并调用php-fpm提供的fast cgi服务此种部署方式最为常见,web服务和PHP服务在同一台服务器上都有部署第二种前置1台nginx服务器做Web服务后面服务器只部署php-fpm服务,供nginx服务器调用前置1台nginx服务器,在调用后面多例php-fpm服务时,也可以做到负载均衡

2015-10-28 16:54:38 6090 2

原创 二进制运算技巧

假设都在x86或x86_64架构CPU上进行运算,二进制基本运算包括,加减乘除、与、或、异或、同或、移位等假设n 为 32 位整形数,取正整数n除以8的余数 : n & 0x07假设n 为 32 位整形数,取正整数n除以16的余数 : n & 0x0F假设n 为 32 位整形数,8位对齐 : (n + 7) & 0xFFFFFFF8)假设n 为 32 位整形数,32位对齐

2015-10-21 14:08:40 2183

转载 spawn-fcgi 源码分析

本文内容对Spawn-fcgi源码进行解读,简要说明其原理,并具体说明其实现方式。Spawn-fcgi 源码虽然只有600多行,但是初次阅读起来依然需要花很多时间。为了节省读者的学习成本,提高学习Spawn-fcgi 的效果,作者对Spawn-fcgi的源码做了裁剪,保留最核心的功能和原有的代码结构,且能编译后正常运行。最后代码只有200多行。

2015-10-10 18:16:29 3469 1

原创 软件设计之缓存使用

本文主要讨论分布式环境下,缓存如何在软件设计作用、原理、实现方式及注意问题。

2015-07-15 15:46:24 1382

原创 PHP与其他语言交互-总结

软件或者系统,不同模块可能由不同的语言编写,必然会存在不同语言之间交互和通信的问题。本文站在PHP的角度,探讨PHP与其他语言交互的方式。

2015-05-04 18:50:30 3158

原创 MVC框架-路由分发总结

总结 MVC框架中,各中路由机制的实现

2015-04-16 21:38:08 5695

原创 企业应用架构之分层 - 总结

总结了3中企业应用架构分层中常见的3种分层。

2015-04-14 21:35:42 5619 3

原创 PHP Native Interface (PNI)

PHP Native Interface (PNI) is a PHP extension that enables PHP code to call and be called by native applications (programs specific to a hardware and operating system platform) and libraries written in other languages such as C, C++ and assembly..

2015-04-07 12:38:40 1459

原创 什么是设计模式 – 总结

什么是设计模式 – 总结设计模式是如何诞生的?设计模式的作用?初学者掌握设计模式的方法如何提升自己使用设计模式的能力

2015-03-13 11:03:54 970

原创 主流MVC框架的设计模式及遵守的软件设计原则

本文以主流的MVC框架为例,比如Java 的SSH、PHP的Symfony和Zend Framework ,在简单地剖析他们的设计原理之后,找到其中使用的设计模式;鉴赏他们的代码实现,查看设计者们都遵守了哪些软件设计原则。作此文,一为学习,二为总结。其中下面所写内容可能并不全面,也可能不准确,但会不断修改完善。

2015-02-16 21:14:50 3375

原创 Service Locator Patten 总结

Service Locator Patten 学习总结、使用心得

2015-01-30 19:54:21 956

原创 后台自动任务设计和编码总结

资源预估预估数据量、算法的时间、空间复杂度依据预估的结果分配合理的资源(内存,CPU),避免资源不够用。避免数据脏读自动脚本处理大量数据速度快,尤其有写操作的任务,数据一致性在分布式环境下往往难以保证。这种情况下应该避免数据脏读,比如数据库会有主从复制同步延迟的现象,这时应该强制连接数据库主库。幂等性有写操作的脚本,需要考虑脚本执行的幂等性,即在参入相同参数

2015-01-16 17:30:01 1374

原创 JS各种iframe弹出控件没有滚动条或者失灵的解决办法

JS各种iframe弹出控件没有滚动条或者失灵的解决办法

2015-01-06 18:42:00 7956

原创 Redis 和 Memcahe 比较和总结

Redis 和 Memcahe 比较和总结项目RedisMemcache读速率-批量读效率高写速率--冗余备份master-slave模式,交换文件备份,支持binlog无内存使用率依赖具体使用场景主从复制支持master - slaver不支持 ,若需支持需要代理软件memagen

2013-08-23 14:49:24 1563

原创 书写单例测试总结

最近写了比较多的单测,对测试用例做了一下总结。         网上也有很多讲如何写单例测试的教程和经验总结,而且都比较系统。但这里还是总结一下自己在写单例测试时总结的经验。1. 经验总结1).时间和对象         只对比较稳定的代码写单测。        从反面讲,还处于经常修改状态的代码是不稳定的代码,针对其写的单测也必然是不稳定的,随着设计和代码的不断更改,单测

2013-06-21 11:34:41 1287

原创 4种系统间交互方法比较

4种系统间交互方法比较指相对独立子系统间的交互指标\方式API数据文件共享数据库(web系统)根域名cookie实效性高低最高实时时间效率高低最高低实时空间效率低高低-实时占用带宽低低低低系统设计正交性高高低低

2013-06-05 23:11:46 9732

原创 由三目运算符想出的PHP改进建议

在PHP编码过程中,我们经常写到类似下面的语句:1$var = isset($var) && !empty($var) ? $var : $defaultValue;语法看上去很冗长,所以建议简写成1个函数或者创建1个新的运算符||| :1$var = judge($var,$defaultValue);2$var = $var ||| $defaultValue; //

2013-05-25 21:07:25 1677

原创 apache nginx 配置多端口监听,浏览器自动跳转到80端口

最近两天在分别在配置apache 和 nginx 时,都遇到了一个相同的问题:        为apache和nginx开启监听多个端口(比如监听80和8080端口)时,改好配置,重启服务。在浏览器端访问8080端口,url自动跳转到80端口,例如url输入http://**.**.**.**:8080, 则浏览器自动跳转到http://**.**.**.**。而如果如果在url中的8080端

2013-05-10 23:36:07 8509

原创 BAE Website 配置 app.conf 实现单入口

在Baidu Application Engin 中搭建网站时,如果要使用MVC框架,往往需要设置单入口。然而BAE的web服务程序(apache或者lighthttp)对用户是透明的。开发者不能通过修改配置文件,也不能通过修改.htaccess文件来实现单入口。但BAE在应用的根目录提供了app.conf这个配置文件,通过修改它可以实现重写、设置缓存时间的功能。         下面的这

2013-05-10 18:14:48 3314

原创 LNMP启停控制自动脚本

常常在更改LNMP配置之后,需要重启LNMP,在此写了一个自动化脚本,方便重启LNMP。除了方便重新启动,还增加了关闭与开启功能。Operating System: Ubuntu Server代码#!/bin/bashfunction start(){ sudo service nginx start sudo service php5-fpm start}

2013-05-09 13:22:58 1320

原创 C函数和C++函数相互调用

test.cint call_MyMath_sum (int,int); int sum(inta , intb) { return call_MyMath_sum(a,b);}main.cpp#include using namespace std; extern"C" { int sum(int, int); } class MyMath

2013-04-27 11:45:25 994

原创 [php5.2.4] explode函数不能按照"\r\n"切割字符串

php 版本 5.2.4现有一txt文件,格式如下:file.txt12345要将其内容按行分割存入数据$array中执行代码:$fileContent = trim(file_get_contents('file.txt');$array = explode("\r\n", $fileContent);并未达到预想的效果$array =>

2013-04-19 18:55:37 7075 1

原创 php 5.2.4 iconv函数TRANSLIT 有时不靠谱

php 版本 5.2.4问题:文件字符串转码时按字节截断不当比如$str = “公司”; //默认以UTF-8编码$str = Simple_Util_String::msubstr($str, 4); // 按字节截取前4个字节,原字符串有6个字节$str .= “adfadsfasdfadsfasdf”;

2013-04-03 18:58:36 1904

原创 用expect编写Linux自动化交互登录脚本

#本文中所有服务器名,用户名,密码都不是真实的。什么是expect,就是突破shell不能自动交互的局限,可以实现用脚本进行交互的语言。参考这篇文章《tcl expect 教程中文版》上代码吧:goto文件,用于简化登录很长名字,不容易管理的服务器的步骤。前面是个switch,后面是交互的代码,可以自动输入密码,自动进入想去的目录。#!/home/users/liuzu

2013-03-31 22:38:38 1261

原创 自己的VIM配置

有一篇很好的文章介绍vim如何配置及vim的众多插件如何使用《手把手教你把Vim改装成一个IDE编程环境(图文)》依照里面的介绍,给自己配了一下vim,留此以作总结和备忘。syntax enablesyntax onset history=300set autoread"----------Hight Light Current Line--------------

2013-03-31 00:49:09 2307

原创 非root用户安装配置mysql

mysql的安装参考这篇日志 http://blog.csdn.net/zuocheng_liu/article/details/6654694#t11        下面重点说明非root用户配置mysql,下面以用户liuzuocheng为例。1.拷贝一个conf文件到mysql目录,cp /home/liuzuocheng/local/mysql/share/mysql/my-l

2012-10-15 16:06:24 6200

原创 将CentOS安装到U盘步骤

Operating System: CentOS 6.3 i386                                Data:2012-9-14Hardware       :   USB flashdisk 8GB * 1 、 PC*1            RD: Zuocheng LiuProcess:方法一、    1.把安装好的CentOS根目录

2012-09-13 15:07:55 8968

原创 在php上安装mcrypt、bcmath和openssl扩展(银联业务需要)

1 1. 在php上安装mcrypt扩展 2 1.1 编译安装libmcrypt 3 tar zxvf libmcrypt-2.5.8.tar.gz 4 cd libmcrypt-2.5.8 5 make clean 6 ./configure --prefix=/home/work/local/libmc

2012-09-11 10:16:11 12391

原创 ArchLinux 安装一些软件包

安装图形界面    pacman -S xorg  -> 默认都安装了    pacman -S xfce4 -> 除了1,2,7外全部安装.    1) exo  2) garcon  3) gtk-xfce-engine  4) terminal  5) thunar  6) tumbler  7) xfce4-appfinder      8) xfce4-mixer 9)

2012-09-07 10:51:47 8560

lldpad-0.9.38-CentOS_5.5.x86_64.rpm

lldpad-0.9.38-CentOS_5.5.x86_64.rpm dcbd

2011-03-19

fcst-20110320-CentOS_5.5.x86_64.rpm

fcoe target scst centos 5.5 x86_64 rpm

2011-03-19

checkinstall-1.6.2-CentOS_5.5.x86_64.rpm

A lot of people has asked me how can they remove from their boxes a program they compiled and installed from source. Some times -very few- the program's author adds an uninstall rule to their Makefile, but that's not usually the case. This is my primary reason to write CheckInstall. After you ./configure; make your program, CheckInstall will run make install (or whatever you tell it to run) and keep track of every file modified by this installation, using the excelent installwatch utility written by Pancrazio 'Ezio' de Mauro ([email protected]).

2011-03-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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