摘要: 笔者觉得,分库分表确实好的。但是,动不动搞分库分表,太麻烦了。分库分表虽然是提高数据库性能的常规办法,但是太麻烦了。所以,尝试研究mysql的分区到底如何。 之前写过一篇文章,http://www.cnblogs.com/wangtao_20/p/7115962.html 讨论过订单表的分库分表,折 阅读全文
posted @ 2017-07-06 10:31 王滔 阅读(3362) 评论(0) 推荐(1) 编辑
摘要: 原创文章,转载注明出处 一、两种方案分库分表 一般业界,对订单数据的分库分表,笔者了解,有两类思路:按照订单号来切分、按照用户id来切分。 方案一、按照订单号来做hash分散订单数据 把订单号看作是一个字符串,做hash,分散到多个服务器去。 具体到哪个库、哪个表存储数据呢?订单号里面的数字来记录着 阅读全文
posted @ 2017-07-04 12:20 王滔 阅读(20188) 评论(6) 推荐(4) 编辑
摘要: memcache作为缓存服务器,用来提高性能,大部分互联网公司都在使用。 前言 文章的阅读的对象是中高级开发人员、系统架构师。 本篇文章,不是侧重对memcache的基础知识的总结,比如set,get之类的命令如何使用不会介绍。是考虑到,此类基础知识网络已经有一大把资料,所以更加倾向于深入性的知识点 阅读全文
posted @ 2016-04-18 15:47 王滔 阅读(2866) 评论(0) 推荐(2) 编辑
摘要: 刚才看到文章这个看法很有同感,以前也没有深刻理解到可维护性的重要性。在现在的公司呆了一年半,才明白。因为现在的公司用户量大,团队开发人员多,遇到很多难以维护的代码,花费人员沟通成本,延缓功能的开发进度,去填补遇到的坑..... http://www.cnblogs.com/freeflying/p/ 阅读全文
posted @ 2015-09-15 11:51 王滔 阅读(924) 评论(0) 推荐(0) 编辑
摘要: 存储引擎 支持的锁定级别 myisam 表级别 memory 表级别 inndb 行级别 bdb: 页级别 lock锁定类型 锁定方式 目的 读锁 自己与其他线程只能读取该表 写锁 只有当前线程能够对表进行写入操作(其他线程也无法读这部分数据) 读锁的英文叫法是shared locks,shared 阅读全文
posted @ 2013-12-07 23:49 王滔 阅读(11932) 评论(0) 推荐(3) 编辑
摘要: session的存储了解以前是怎么做的,搞清楚了来龙去脉,才会明白进行共享背后的思想和出发点。我喜欢按照这样的方式来问(或者去搞清楚):为什么要session要进行共享,不共享会什么问题呢? php中session的原理,以前做了一下总结,可以参考:http://www.cnblogs.com/wa 阅读全文
posted @ 2013-10-29 22:33 王滔 阅读(56402) 评论(12) 推荐(12) 编辑
摘要: 之前在学校的时候,只知道session与cookie的区别在于:session是保存在服务器端,cookie保存在客户端。session怎么样保存的?以文件的形式保存。自己去测试过。有的忘记了。对应session的id号模糊不清。在开发中,非常有必要弄明白具体细节。不能停留在使用session_st 阅读全文
posted @ 2011-02-16 23:05 王滔 阅读(46541) 评论(20) 推荐(11) 编辑
摘要: opcache的技术分享ppt,独家唯一经过自己实验的分享 https://pan.baidu.com/s/1-73-QHOSeet7tcR81gto6Q 阅读全文
posted @ 2018-04-05 08:52 王滔 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 数字很难标明业务含义,大脑难记忆,前端的沟通成本增加,传错数字后,数据则插错表,调试定位困难,消耗了精力。 解决方案是: 避开数字标识。客户端使用字符串为参数,告诉服务端,如微信的支付类型使用trade_type=JSAPI|MWEB分别表示公众号支付和h5支付。这里若使用数字,确实难以理解业务意义 阅读全文
posted @ 2018-01-20 08:19 王滔 阅读(1478) 评论(0) 推荐(0) 编辑
摘要: 谈谈后端业务系统的微服务化改造本文所提倡的微服务,是结合作者所在team自身业务特点来说的,适合自身的场景,是建立在团队人员素质到了,有成熟的基础设施和框架、中间件辅助,流程也规范,包括CI、敏捷等,团队都做好了准确去做这个转变,有足够的能力来实施,微服务化也就是水到渠成的事了。相反,小团队在前期或 阅读全文
posted @ 2017-09-23 18:41 王滔 阅读(343) 评论(0) 推荐(0) 编辑
摘要: 一、软件需求 1、nginx源码包 下载地址:http://nginx.org/。笔者下载的是1.10.3。 2、pcre源码包。这是一个正则表达式库。nginx会用到这个开源库来做正则匹配。很多软件都会引用,比如php引擎编译的时候也会用到。 下载地址:https://ftp.pcre.org/p 阅读全文
posted @ 2017-08-15 19:50 王滔 阅读(2263) 评论(0) 推荐(0) 编辑
摘要: 联想到discuz,ecshop发布一个新版本的系统给大家使用,会提供utf-8,gb2312版本的代码下载。所以肯定是批量转换编码出来的。 这种是转换html文件。 http://blog.csdn.net/iseagold/article/details/5472377 我需要找一个批量转换文件 阅读全文
posted @ 2017-07-09 08:04 王滔 阅读(1149) 评论(0) 推荐(0) 编辑
摘要: 本文为原创文章,转载希望注明出处。 抢购业务数据库需要考虑的点如下: 一、超卖现象 场景如下: 库存数是5。现在3个用户来购买,a用户购买2个,b用户购买3个,c用户购买1个。合起来就是准备购买6个。 如果三个用户是同时并发购买,会出现怎样的情况呢? 每个用户进行减库存的时候,语句类似于: mysq 阅读全文
posted @ 2017-06-25 15:23 王滔 阅读(5821) 评论(2) 推荐(3) 编辑
摘要: 一、如何监控发生了主从延迟? 在从库机器上,执行show slave status,查看Seconds_Behind_Master值,代表主从同步从库落后主库的时间,单位为秒,若同从同步无延迟,这个值为0。 Mysql主从延迟一个重要的原因之一是:mysql是以单线程串行执行。 主从复制数据时,在从 阅读全文
posted @ 2017-04-14 23:05 王滔 阅读(1958) 评论(0) 推荐(0) 编辑
摘要: 以前也没有深刻意识到它的重要性。直到后来,去接手一些遗留系统,那种混乱,寻找代码和代码文件多么费力。系统经过了很多人手,人员调岗,人员离职。每个人都有自己的风格,折腾一下,就闪了。丢下一个千疮百孔的系统。 人的眼睛是相信现实的东西,没有经历过那种坑,就无法理解。所以当我们怎么说要规划好目录结构,要好 阅读全文
posted @ 2017-03-29 15:19 王滔 阅读(900) 评论(0) 推荐(0) 编辑
摘要: 一、session_id()对原来session文件和里面的数据,是怎么处理的? 测验办法:<?php$sid = md5("aaad");session_id($sid);session_start();var_dump(session_id());$_SESSION['ddd'] = 123;? 阅读全文
posted @ 2017-03-29 15:19 王滔 阅读(1203) 评论(0) 推荐(0) 编辑
摘要: $log_file_name = 'D:/static/develop/kuai_zhi/acagrid.com/public/Logs/'.date('Ym').'/'.date('d').'_error.log'; //$log_file_name = 'D:/static/develop/ku 阅读全文
posted @ 2017-03-29 15:18 王滔 阅读(792) 评论(0) 推荐(0) 编辑
摘要: Redis和Memcache对比及选择 Redis和Memcache对比及选择 http://www.cnblogs.com/EE-NovRain/p/3268476.html 在选择内存数据库的时候到底什么时候选择redis,什么时候选择memcache,然后就查到下面对应的资料,是来自redis 阅读全文
posted @ 2017-03-25 22:59 王滔 阅读(443) 评论(0) 推荐(0) 编辑
摘要: //gb2312的话preg_match_all("/[".chr(0xa1)."-".chr(0xff)."]+/", $str, $chinese);echo implode("", $chinese[0]);//utf-8的话preg_match_all("/[\x{4e00}-\x{9fa5}]+/u", $str, $chinese); 阅读全文
posted @ 2017-01-17 17:53 王滔 阅读(423) 评论(0) 推荐(0) 编辑
摘要: 做统计的时候,null是不计算在count以内的。所以字段的值最好不要设置为null。 比如:select count(user_id) as beyond_num from fs_users_added where credits<410 && user_id!=75语句,就统计不到null的数据 阅读全文
posted @ 2017-01-09 12:07 王滔 阅读(5779) 评论(1) 推荐(1) 编辑
摘要: 一、每个用户都有自己的家目录 访问方式是:~/.ssh/id_rsa.pub 使用~就是表示家目录。 具体家目录在哪里,在用户密码配置文件中:/etc/passwd中。第6列的值就是。 可以使用~访问家目录。也可以直接输入绝对路径来访问:/home/git/。 每个用户都有一个自己信任列表文件,配置 阅读全文
posted @ 2017-01-01 17:32 王滔 阅读(9529) 评论(0) 推荐(0) 编辑
摘要: 从网上看到的,还不错。 来源: https://github.com/jobbole/awesome-programming-books 计算机系统与网络 《图灵的秘密:他的生平、思想及论文解读》 《计算机系统概论》 《深入理解Linux内核》 《深入Linux内核架构》 《TCP/IP详解 卷1: 阅读全文
posted @ 2016-12-27 19:58 王滔 阅读(630) 评论(0) 推荐(0) 编辑
摘要: c语言系的命名风格:单词之间使用下划线分隔。如上图。 java语言是另外一个系,javascript属于java语系(当年就是想借助java的名气所以命名javascript)。java语系是驼峰式命名法,如getElementById()。如果使用c语系命名风格则使用下划线分隔 get_eleme 阅读全文
posted @ 2016-12-25 15:43 王滔 阅读(1334) 评论(0) 推荐(0) 编辑
摘要: 参考:http://www.cnblogs.com/thinksasa/archive/2013/02/26/2934206.html http://blog.csdn.net/alongken2005/article/details/8056910 socket_accept()是服务端接受客户端 阅读全文
posted @ 2016-04-04 16:52 王滔 阅读(955) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/lgouc/article/details/8235471 http://blog.sina.com.cn/s/blog_67c294ca01012qbu.html 数据对齐并不是操作系统的内存结构的一部分,而是C P U结构的一部分 是这么理解吗?cpu要 阅读全文
posted @ 2016-04-04 16:33 王滔 阅读(1474) 评论(0) 推荐(0) 编辑
摘要: 函数库调用和系统调用的区别。操作系统层面上:系统调用是调用操作系统内核的一部分。系统调用,每个操作系统会存在不同。速度上:系统调用一次需要35微秒。函数库一次调用耗费半微秒。系统调用大概有70个。文件描述符和文件指针的区别将会进行干嘛呢。文件描述符是一个整型数字。操作系统的系统调用,都需要传递这个值 阅读全文
posted @ 2016-04-04 16:33 王滔 阅读(1002) 评论(0) 推荐(0) 编辑
摘要: 以下是根据看书后的理解做的总结: 最早,unix是使用汇编编写,但是非常简单。后来觉得汇编,换种机器又得重新用另外一种机器汇编重写,太麻烦。于是想设计一种通用的语言,到各种机器上都能运行 当时发明了b语言,但是b语言并不成功(据说是很多缺陷,缺乏数据结构),后来者在此基础上改进,发明了c语言。使用c 阅读全文
posted @ 2016-04-04 16:32 王滔 阅读(3300) 评论(0) 推荐(0) 编辑
摘要: 我发现,我们很多技术人员往往无限度适应需要人员,跟着提需求人的思路走,陷入进去了。 我的经验是:"以问题为导向,而非需求为导向"。提需求者,可能很多自己都不是很清楚自己想要什么样,想得与说的往往不一样。只有技术辛苦做出来后,用了一下,发现不是自己想要的。重做!双方都痛苦。这是很多同行的技术人员的深切 阅读全文
posted @ 2016-02-23 20:58 王滔 阅读(539) 评论(0) 推荐(1) 编辑
摘要: 1、数据库:<MYSQL性能调优与架构设计>,作者为阿里巴巴专业的mysqlDBA,学到许多的思维方式,如sql优化策略、功能撤下来的成本和系统的影响、有时候是需求存在问题没法达到完全实时所以实现准实时《数据库系统实现》从原理层面学到数据库系统的实现,所有关系型数据库都会遵循通用的理论,尤其是事务的 阅读全文
posted @ 2016-02-23 20:54 王滔 阅读(692) 评论(0) 推荐(1) 编辑
摘要: 几乎是计算机软件开发的发展历史 人月神话,增加人手并不一定能提高开发速度。原因在于,有些任务是无法分解的,存在先后顺序。无法同步进行。增加人手,增加的是沟通成本,相互牵制。可以分解的任务就可以通过增加人手来加快速度。但是不能分解的任务,增加人手只会增加开发时长。打个通俗比方,怀孕需要12个月,增加人 阅读全文
posted @ 2015-11-18 14:04 王滔 阅读(794) 评论(0) 推荐(0) 编辑
摘要: 1、避免使用魔数if($age<18){}这个18不太明白为什么要这样子。可以将28定义在一个变量里面,这个变量命名表明了这个值的含义$adult_age = 18;//成年的分界点年龄if($age<$adult_age){}2、函数的返回结果:不要使用一个变量来存储返回结果一旦你知道了返回结果,... 阅读全文
posted @ 2015-11-11 18:33 王滔 阅读(1227) 评论(0) 推荐(1) 编辑
摘要: a,b,c,d.....分别代表时间,从最早往后面。白色区域表示空闲内存。灰色区域表示进程占据的内存,蓝色区域表示操作系统占据的内存,这部分是固定好的。看内存碎片的发展过程:a图表示,假设内存目前有56m的内存空间。到了b图,有个进程占了20m的内存,现在还剩下36m了。到了d图,新的进程占据内存,... 阅读全文
posted @ 2015-11-02 23:14 王滔 阅读(643) 评论(0) 推荐(0) 编辑
摘要: 以前看了一个观点,不错:不要的代码删除掉删除你没有使用的功能清理的时间正比于代码的数量,复杂性和糟糕的程度。如果代码的功能你目前没有使用,而且在可预见的将来也不会使用,那么就删除它,这会减少你浏览的代码数,降低复杂度(删除不必要的概念和依赖)。你会清理的更快的,而且最后的结果会更简单。不要留着代码... 阅读全文
posted @ 2015-10-26 14:45 王滔 阅读(637) 评论(0) 推荐(0) 编辑
摘要: 用途:这个扩展是用来操作rabbitmq服务端的一、安装总括1、编译安装librabbitmq库这是一个开源c语言的库。用来与rabbitmq进行通信而php的php-amqp扩展就是使用这个库与服务端通信。所以必须先安装这个开源库。下载地址:https://github.com/alanxz/ra... 阅读全文
posted @ 2015-10-25 15:39 王滔 阅读(944) 评论(0) 推荐(0) 编辑
摘要: 有一种方式是:下载rabbitmq-server-generic-unix压缩包,是不用编译的。是已经编译好的源码了下面介绍编译源码安装总括:需要以下步骤:1、安装erlange。因为rabbitmq是使用erlange语言编写。所以需要安装erlange。2、安装python。自动化安装脚本是使用... 阅读全文
posted @ 2015-10-25 15:23 王滔 阅读(2691) 评论(0) 推荐(0) 编辑
摘要: 为什么开发功能变得越来越慢?某天来一个技术,他跟老板说:这个系统太臃肿了。很乱,我很难开展工作下去,至少很难按照我的经验和设想来实施。如果想让我顺利干下去,办法就是对系统进行重构一次(重构代码,或者开发新的系统替代原来系统)。我们让项目变得可维护性有很多。对公司,对接手的技术,都是有利而无害的。自己... 阅读全文
posted @ 2015-10-14 21:13 王滔 阅读(1189) 评论(0) 推荐(0) 编辑
摘要: 开发中三个经典的原则单一职责:一个类,一个方法专注做一件事情。不要混合多个目标。 比如我的"绑定手机接口",目标的确是干一件事情:绑定但是里面还是要判断:这个手机号是不是被占用,还要判断绑定历史,判断手机白名单只不过把判断绑定历史,判断白名单,封装成单独的方法来调用。把判断绑定历史,判断白名单,封装... 阅读全文
posted @ 2015-10-12 17:55 王滔 阅读(497) 评论(0) 推荐(1) 编辑
摘要: http://www.zhihu.com/question/19732473 本质都是为了提高效率为目的我做一件事情,请求外部协助。外部还没响应结果,我要怎么办,一种办法是,我一直等着对方给我答复结果。另外一种是,对方主动通知我。这是同步和异步的区别。比如水壶,有没有主动报警(当水开了时)的机制。而... 阅读全文
posted @ 2015-10-11 21:29 王滔 阅读(573) 评论(0) 推荐(0) 编辑
摘要: 在free命令展示机器的内存消耗情况,会像这样展示buffered 和cached本质内容有什么区别呢?我没搞明白。我觉得需要追根溯源会更加理解本质。英文是这样解释A buffer is something that has yet to be "written" to disk. 这些数据准备写到... 阅读全文
posted @ 2015-09-22 12:17 王滔 阅读(2085) 评论(0) 推荐(0) 编辑
摘要: tmpfs是一种基于内存的文件系统,tmpfs有时候使用rm(物理内存),有时候使用swap(磁盘一块区域)。根据实际情况进行分配。rm:物理内存。real memery的简称? 真实内存就是电脑主板上那块内存条,叫做真实内存不为过。swap:交换分区。是硬盘上一块区域tmpfs最大可使用的大小为什... 阅读全文
posted @ 2015-09-22 11:30 王滔 阅读(10352) 评论(0) 推荐(0) 编辑
摘要: 想用php生成一个mysql数据字典导出来,用到下面代码会$mysql_conn = mysql_connect ( "$dbserver", "$dbusername", "$dbpassword" ) or die ( "Mysql connect is error." );在php5.5.12... 阅读全文
posted @ 2015-09-20 11:24 王滔 阅读(44502) 评论(0) 推荐(1) 编辑
摘要: 有个资料看得我云里雾里的。现在用自己的言语来总结一下,写文字,能够加深自己的理解。也会在写的过程中帮助自己发现理解方面瑕疵,继续查资料求证。短链接的缺点:创建一个连接,程序执行完毕后,就会自动断掉与mysqlserver的链接。于是多少次php执行,就会多少次这样的创建和释放过程。频繁地创建和释放连... 阅读全文
posted @ 2015-09-10 18:19 王滔 阅读(15150) 评论(0) 推荐(0) 编辑
摘要: 看这篇文章:http://www.cnblogs.com/greyzeng/p/4077732.html对评论引发我的思考。网上有人说这句话我赞同:优化和重构是两个概念啊,楼主还是没有搞清楚优化不宜过早主要指的是性能的优化不宜过早,因为很多性能优化其实没有对系统有明显的提升。而重构主要指的是修正代码... 阅读全文
posted @ 2015-09-08 23:38 王滔 阅读(1439) 评论(0) 推荐(0) 编辑