- 博客(44)
- 资源 (4)
- 收藏
- 关注
原创 缓存与数据库的数据一致性问题怎么解决,这三种方案帮你搞定
通常在高性能要求的场景,我们的系统设计会把数据存储到DB,然后冗余一份数据在缓存中。读请求优先从缓存读取数据,未命中缓存再从DB读取,如下图:欢迎关注笔者,优质文章都在这里等你。这样做的好处是可以减小DB的压力,提高请求的响应速度。但这种架构在提升系统读请求处理能力的同时,给系统写请求的处理带来了不少的麻烦。因为数据在DB跟缓存中各自保存了一份,如何保证它们之间的数据一致...
2019-05-22 20:13:13
7329
3
原创 面向对象之静态方法(static)和实例化方法的区别
这是一个经常被时时提出来的问题,很多时候我们以为理解了、懂了,但深究一下,我们却发现并不懂。方法是我们每天都在写得,很多程序员大多都使用实例化方法,而很少使用静态方法,问原因也说不出来所以然,或者简单的回答两者定义的区别,静态方法不需要new就可以使用 实例化方法需要new了以后才可以使用。。。。我们真的理解了吗?从实际项目开发说起,这里有开发项目的三种方式:开发项目中把BLL和DAL...
2019-04-30 11:39:30
1380
1
原创 linux系统调试常用命令及知识点
命令:1.stracelinux进程分析神器,它能够打开应用进程的这个黑盒,通过系统调用的线索,告诉你进程大概在干嘛。参考:在Linux系统上,应用代码通过glibc库封装的函数,间接使用系统调用。Linux内核目前有300多个系统调用,详细的列表可以通过syscalls手册页查看。这些系统调用主要分为几类:文件和设备访问类比如open/close/read/...
2019-04-25 19:21:17
662
原创 依赖注入的理解
若系统中一段代码被多个地方copy,说明系统逻辑可复用性做的不好,可维护性较差。若系统中一段逻辑大量引用了非常多的类,系统需要依赖如此多的类,也会影响系统的可维护性,会造成程序耦合非常严重,不利于维护和扩展,这时候就需要一个容器,将这个类放到这些容器里去实例化,系统直接去容器里调用就行,我们从依赖类到依赖容器,实现了解耦,这就是我们说的依赖注入,也叫做控制反转。...
2019-04-15 17:41:18
214
原创 java和php各自的优势和劣势
目前各大互联网公司主程语言要么是java,要么是php, 当然现在go也势头很劲,不过还是很赶不上java和php。性能1.java是编译型语言,php是解释型的脚本语言,性能自然java胜过太多。...
2019-04-02 20:24:25
3354
原创 事务的两阶段提交
MySQL通过两阶段提交解决了服务层binlog与引擎层Innodb的redo log的一致性与协同问题。第一阶段:InnoDB prepare,持有prepare_commit_mutex,并写入到redo log中。将回滚段(undo)设置为Prepared状态,binlog不做任何操作。第二阶段:将事务写入Binlog中,将redo log中的对应事务打上commit标记,并释放pr...
2019-03-20 11:38:14
2361
原创 php项目下kafka的应用
Kafka主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能。 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条(也就是100000条——十万)消息的传输。 支持Kafka Server间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输。 同时支持离线数据处...
2019-02-01 14:56:22
1325
原创 高并发流量控制思路
1.计数器控制2.滑动窗口控制比如某个服务最多只能每秒钟处理100个请求。我们可以设置一个1秒钟的滑动窗口,窗口中有10个格子,每个格子100毫秒,每100毫秒移动一次,每次移动都需要记录当前服务请求的次数。内存中需要保存10次的次数。可以用数据结构LinkedList来实现。格子每次移动的时候判断一次,当前访问次数和LinkedList中最后一个相差是否超过100,如果超过就需要限流了。...
2019-01-11 10:42:23
821
1
原创 面试问答
1.PHP的垃圾回收机制以及大概实现,知道很好,越细越好。2.PHP7比PHP5节省资源(内存占用),大概是如何实现的,越细越好。3.PHP是弱语言类型,那么PHP中是如何实现类型转换的,越细越好。4.一个APP或者网页从发起并完成一个完整的HTTP流程大概是怎样的,越细越好。5.MYSQL的innodb引擎和MYISAM引擎有何不同,说出主要不同点。6.MYSQL的innod...
2018-10-16 16:24:12
217
原创 etcd+confd配置中心搭建
confd介绍confd原理通过定时任务去服务端获取配置信息,生成配置文本,应用程序从本机读取配置文本。confd的目的1.统一服务端管理各种配置文件,配置文件模板和数据是分离的,可各自单独管理2.动态修改配置属性,然后重新生成相关的配置文件3.提供cli修改数据confd的特点及优势1.基础解析:配置文件使用toml格式,模板数据分离2.多种存储支持:loca...
2018-09-12 18:23:14
6497
原创 微服务之配置中心设计
常用的配置中心架构qconfredis 设计选型一个合格的配置中心,至少需要满足如下4个核心需求:非开发环境下应用配置的保密性,避免将关键配置写入源代码 不同部署环境下应用配置的隔离性,比如非生产环境的配置不能用于生产环境 同一部署环境下的服务器应用配置的一致性,即所有服务器使用同一份配置 分布式环境下应用配置的可管理性,即提供远程管理配置的能力 若使用etcd作为...
2018-09-04 11:52:37
748
原创 高可用系统建设
设计建议减少单点 – 去单点首先要识别整个系统所有主链路的单点,如机房(同城异地双机房),应用服务器,DNS服务器,SFTP服务器,LBS,缓存服务器,数据库,消息服务器,代理服务器和专线等,如系统通过专线调用对方服务,需要考虑同时拉联通和电信的专线,联通或电信的专线还是有一定概率会出现问题的,但是同时出问题的概率会小非常多。优先使用软负载,使用硬负载兜底。 减少依赖 – 减少DNS依赖,减...
2018-08-20 15:18:53
259
原创 git 使用小命令
git 撤销对工作区中文件的修改对工作区中文件的修改分为三种情况:(1)修改,但没有用git add将修改添加到暂存区; 直接使用git checkout -- 文件,即可撤销修改,撤销修改就回到和版本库一模一样的样子。(2)修改,已经使用git add将修改添加到暂存区; 先使用git reset HEAD -- 文件,然后在使用git checkout -- 文...
2018-08-08 14:48:59
138
原创 微服务之补偿服务架构
补偿服务是使用一个额外的协调服务来协调各个需要保证一致性的微服务,协调服务按顺序调用各个微服务,协调服务实现为一个通用的补偿框架,保证最终一致性。当客户的一个预订请求达到时,协调服务(补偿框架)为请求生成一个全局唯一的业务流水号,并在调用各个工作服务的同时记录完整的状态. 做过支付宝交易接口的同学都知道,我们一般会在支付宝的回调页面和接口里,解密参数,然后调用系统中更新交易状态相关的服...
2018-07-25 10:53:47
2443
原创 mysql之索引原理
索引宗旨减少查询范围,无序变为有序mysql b+树索引支持范围查找和最左匹配查找磁盘IO的性能开销远大于内存IO, 每次查找数据时把磁盘IO次数控制在一个很小的数量级,最好是常数数量级。多路搜索树每个节点有N个元素,和N+1个孩子,尽量减少树的高度,减少磁盘IO次数IO次数取决于B+树的高度1.索引字段要尽量的小:通过上面的分析,我们知道IO次数取决于b+数的高度...
2018-07-05 16:20:12
202
原创 微服务设计实践
服务注册, 服务发现(etcd,zookeeper)https://www.cnblogs.com/nima/p/8028551.html 服务网关 配置中心360配置中心技术方案:携程配置中心技术方案:微博平台配置中心技术方案: 分布式事务(原子+补偿机制)容器化(docker)网络协议(http,rpc)服务拆分(按业务细分粒度)服务治理...
2018-07-02 12:13:24
214
原创 线上故障之load Average和cpu使用率的分析
线上服务突然异常,一般就是峰值情况下机器某个维度或者多个维度出现负荷,我在项目中就几乎遇到过load飚高,cpu跑满,带宽打满,内存不够,磁盘写满,硬盘损坏,机房断电等各种情况,所以要保证线上服务的高可用,除了完善的监控系统外,我们自己对各种系统参数也一定要烂熟于胸,对这些参数的敏感度将有效帮助我们将可能的故障扼杀在襁褓中。
2017-10-16 18:54:07
479
原创 php扩展开发
1. phpize 整合扩展代码2. ./configure --enable-sample 生成编译所需要的makefile脚本3.make 编译http://blog.youkuaiyun.com/qq_28602957/article/details/72697901
2017-08-01 00:12:42
252
原创 设计模式之常用场景
1.设计模式的定义 模式是一条由三个部分组成的通用规则:它表示了一个特定环境、一类问题和一个解决方案之间的关系。每一个模式描述了一个不断重复发生的问题,以及该问题解决方案的核心设计。2.设计模式分类 1.创建型 创建对象时,不再由我们直接实例化为对象,而是根据特定场景,由程序来确定创建对象的方式,从而保证更大的性能,更好的架构优势,创建...
2017-02-22 13:33:07
960
转载 proc 文件系统 介绍
Linux-proc proc 文件系统 在Linux中有额外的机制可以为内核和内核模块将信息发送给进程-- /proc 文件系统。最初设计的目的是允许更方便的对进程信息进行访问(因此得名),现在它被每一个有有趣的东西报告的内核使用,例如/proc/modules 有模块的列表/proc/meminfo 有内存使用的统计表。 使用proc 文件系统的方法和使用
2017-01-09 15:01:47
457
原创 zend studio 12.5.1 破解
1.破解补丁下载地址http://www.sinfey.com/wp-content/uploads/2015/06/Zend-Studio-12.5.1-x86-x64%E9%80%9A%E7%94%A8%E7%A0%B4%E8%A7%A3%E8%A1%A5%E4%B8%81-%E6%B3%A8%E5%86%8C%E7%A0%8120150519.zip2.替换zen
2017-01-09 12:30:06
674
转载 redis info 参数详解
以一种易于解释(parse)且易于阅读的格式,返回关于 Redis 服务器的各种信息和统计数值。通过给定可选的参数 section ,可以让命令只返回某一部分的信息:server : 一般 Redis 服务器信息,包含以下域:redis_version : Redis 服务器版本redis_git_sha1 : Git SHA1redis_git_dirty :
2016-06-16 18:47:06
417
原创 缓存使用中Redis,Memcached的共性和差异分析
在各大互联网项目的业务场景中,Redis和Memcached都已经是必不可少的高并发场景缓存应用解决方案,本文将从为什么要用redis,memcached和什么时候使用Redis,什么时候使用Memcached两个角度来分析。 一.为什么要用Redis,Memcached。 随着互联网产品技术的不断纵深发展,数据存储方案主要分为了两个方向,持久...
2015-11-16 18:13:32
3546
原创 php脚本的一些注意事项
1.超过百万级的文本最好切割为以10万为单位的文本分配,多个进程运行。2.最好以守护进程运行,即在脚本后加上&,后台会一直运行该进程,但是不能关闭终端,一旦关闭终端,该进程也会挂掉。3.以nohup命令运行脚本,可以一直在后台运行。 phpstorm破解版安装http://www.php.cn/tool/phpstorm/408348.html附:脚本处理中常用的分...
2015-09-25 20:32:32
628
转载 PHP 正则表达式应用
PHP 正则表达式语法(一)正则表达式简介在某些应用中,往往有时候需要根据一定的规则来匹配(查找)确认一些字符串,如要求用户输入的 QQ 号码为数字且至少 5 位。用于描述这些规则的工具就是正则表达式。 最简单的匹配最简单的匹配就是直接给定字符匹配。如用字符 a 去匹配 aabab ,则会匹配出 3 个结果,分别是字符串中的第 1,2 和第 4 个字符。这种匹配是最简单的情况,但往
2014-09-02 21:18:35
534
转载 MySQL Replication,主从同步( Master-Slave)配置流程
MySQL的Replication是一种多个MySQL的数据库做主从同步的方案,特点是异步,广泛用在各种对MySQL有更高性能,更高可靠性要求的场合。与之对应的另一个技术是同步的MySQL Cluster,但因为比较复杂,使用者较少。Replication原理Mysql 的 Replication 是一个异步的复制过程,从一个MySQL节点(称之为Master)复制到另一个
2014-08-30 13:29:20
4120
转载 cookie与session详解
一、HTTP协议与状态保持HTTP 协议本身是无状态的,这与HTTP协议本来的目的是相符的,客户端只需要简单的向服务器请求下载某些文件,无论是客户端还是服务器都没有必要纪录彼此过去的行为,每一次请求之间都是独立的,好比一个顾客和一个自动售货机或者一个普通的(非会员制)大卖场之间的关系一样。然而聪明的人们很快发现如果能够提供一些按需生成的动态信息会使web变得更加有用,就像给有线电视
2014-08-19 18:04:00
846
转载 PHP中语言结构和函数的区别
相信大家经常看到对比一些PHP应用中,说用isset() 替换 strlen(),isset比strlen执行速度快等。例子: if ( isset($username[5]) ) { // The username is at least six characters long.}原因是isset是语
2014-08-19 16:39:00
504
转载 数据结构知识概要
数据结构是算法的基石,算法是软件灵魂。数据结构的很多概念真的是很莫名其妙,很多坑爹的定义,笔者开始很搞不明白,为什么学数据结构?为什么用哪个拗口词语?这些概念到底用在什么地方?笔者试图用自己简单的话来阐述这些问题,希望能对这些感觉不是很好理解的同学有帮助。不废话,直接开始。一、概论时间复杂度:就是算法实现的执行的时间,说白了就是程序套了好多循环。没有就是o(n),2层循环就是o(n2),如此,剩下...
2014-08-19 16:24:52
464
转载 php在apache中运行模式
php在apache中一共有三种工作方式:CGI模式、FastCGI模式、Apache 模块DLL)以下分别比较:1. CGI模式与模块模式比较:php在apache中两种工作方式的区别(CGI模式、Apache 模块DLL)这两种工作方式的安装:PHP 在 Apache 2.0 中的 CGI 方式ScriptAlias /php/ "c:/php/"
2014-08-13 10:25:51
4502
原创 php实用经验总结
一般主要分代码能力(类C语言,java,脚本类,前端web相关,网络编程,多线程编程,数据库编程等),数据结构和算法(对常用算法,数据结构的掌握程度,包括算法的原理和应用),专业知识(人工智能/数据挖掘/信息检索/数学分析/统计建模),系统知识(linux系统/网络知识/操作系统/分布式计算/硬件等),项目经验(项目本身的复杂程度,自己在项目中承担职责,软件工程相关意识)这...
2014-08-09 16:30:23
3846
2
转载 TCP协议三次握手过程分析
TCP(Transmission Control Protocol) 传输控制协议TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urge
2014-08-08 15:28:13
474
转载 HTTP协议详解
引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation
2014-08-08 15:03:38
460
原创 mysql索引的一些常识概要及其数据结构
现在mysql因为其开源,免费,性能OK,已经是常用互联网项目的首选数据库,这里主要说下mysql关于其数据库索引,我们应该知道到的数据结构b+树:是一种多路搜索树,b树是二叉搜索树,b+是b树的一种变种,B+ 树元素自底向上插入,这与二叉树恰好相反。一.在MYIDIM引擎下,主键索引和辅助索引的数据结构是b+树, 1.叶节点的data域存放的是数据记录的地址 2.在MyISAM中,主索引...
2014-08-04 11:42:12
606
原创 jquery常用注意事项
不再支持IE 6/7/8,如果在IE9/10版本中使用“兼容性视图”模式也将会受到影响。更加轻量,2.0版本文件与1.9.1相比小了12%。模块化,你可以自定义构建一个更小、更轻量的版本。兼容jQuery 1.9版本的API。
2014-07-21 16:51:17
331
转载 星星点击评价效果代码
html>02head>title>JQuery星星评级title>meta http-equiv="Content-Type" content="text/html; charset=gbk"/>03script src="http://jqueryjs.googlecode.com/files/
2014-04-16 23:04:17
2723
讯客分类信息网正式商业版源码
2019-11-20
apache中文手册
2011-10-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人