- 博客(167)
- 收藏
- 关注
原创 【总结】从0到1的项目经历
去年7月底,接到公司安排,需要在一个半月内完成全新app的上线,需求文档与开发并行,由于时间紧迫,以及人力有限,当然就是享受了一次996,经历了之后,发现真是的是一次痛并快乐着的体验。这...
2020-05-16 23:43:43
5124
原创 使用拦截器统一处理通用检查
繁琐的检查在平时的业务开发中,相信大家都有很多这样的代码:public void login(Parameter parameter) { if (!validateXXX(param...
2020-04-22 23:37:53
257
原创 【总结】MIT-6.824分布式课程-Mapduce实验
MIT 6.824分布式系统课程,是一门著名的讲解分布式系统设计原理的课程。通过课程讲解和实验结合来学习分布式系统设计原理,实验和课程安排见课程表。前言我为什么要学习这个课程?之所以会接...
2020-04-17 00:08:16
576
原创 聊聊服务灾备
2018年,有半年的时间在做服务灾备,由于当时对这一块的知识掌握得比较零碎,直接上手实践,没有较系统地学习,在后续的工作中,通过不断实践+学习补充这一块的知识,以及反思当时的实践,逐渐明...
2020-02-05 14:54:43
1267
原创 理解Redis的内存回收机制
之前看到过一道面试题:Redis的过期策略都有哪些?内存淘汰机制都有哪些?手写一下LRU代码实现?笔者结合在工作上遇到的问题学习分析,希望看完这篇文章能对大家有所帮助。从一次不可描述的故...
2019-06-25 12:46:32
716
1
原创 从不可描述的服务雪崩到初探Hystrix
什么是服务雪崩?什么是服务保护?服务保护的措施有哪些?熔断怎么做?限流怎么做?服务隔离怎么做?降级怎么做?真实案例举一个自己遇到的真实的例子。接口A依赖了服务B,接口A的部署情况是有两个...
2019-03-12 22:59:53
156
原创 说说PHP中foreach引用的一个坑
先来看看下面这段代码:<?php $arr = array('apple','banana','cat','dog'); foreach($arr as $key=>$val) { //some code } echo $val; //输出dog echo $key; //输出3 //下面对val进行赋值
2015-04-27 11:21:59
9409
转载 Linux 目录个数和文件个数限制(单个目录下最大文件数)
昨晚排查了在KVM的build系统中的一个问题,跟踪到后面发现在一个目录下mkdir创建目录失败。我手动试了一下,提示如下:cannot create directory `/home/master/jaytemp` too many links我发现是在一个目录下的一级子目录数量是有限制的,遂做了点实验和调查,结合网上其他人写的博客,得到如下的一些关于目录个数和文件个数限制的结论。1
2014-07-04 08:32:38
45862
转载 php最佳实践----检测一个值是否为null或false
使用===操作符来检测null和布尔false值。PHP宽松的类型系统提供了许多不同的方法来检测一个变量的值。然而这也造成了很多问题。 使用==来检测一个值是否为null或false,如果该值实际上是一个空字符串或0,也会误报 为false。isset是检测一个变量是否有值, 而不是检测该值是否为null或false,因此在这里使用是不恰当的。is_null()函数能准确地检测
2014-06-30 11:52:07
2529
转载 php最佳实践----define() vs. const
使用define(),除非考虑到可读性、类常量、或关注微优化习惯上,在PHP中是使用define()函数来定义常量。但从某个时候开始,PHP中也能够使用const 关键字来声明常量了。那么当定义常量时,该使用哪种方式呢?答案在于这两种方法之间的区别。define()在执行期定义常量,而const在编译期定义常量。这样const就有轻微的速度优势, 但不值得考虑这个问题,除非
2014-06-27 06:41:45
984
转载 MySQL存储引擎MyISAM与InnoDB的主要区别对比
本文整理了Mysql 两大常用的存储引擎MyISAM,InnoDB的六大常见区别,来源于Mysql手册以及互联网的资料。InnoDB与Myisam的六大区别 MyISAMInnoDB构 成上的区别:每个MyISAM在磁盘上存储成三个文件。第一个 文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件
2014-06-26 08:38:28
699
原创 openSUSE下配置Apache开启重写模块
Rewrite 主要的功能就是实现 URL 的重写,通过重写 URL 实现静态化(当然这是伪静态), 这样做的目的是便于搜索引擎和用户的理解,以提高搜索引擎的收录数量。
2014-06-26 06:43:53
2165
原创 linux下phpmyadmin报错phpmyadmin.pma_table_uiprefs doesn't exist解决方法
昨天在使用phpmyadmin的时候,出现了错误,错误提示如下:/etc/phpmyadmin/config.inc.php
2014-06-24 06:59:18
8007
1
原创 高性能PHP学习--基准测试技术
一、基准测试工具基准测试工具提供在各种不同的模拟用户请求发生时有关Web服务器响应的统计信息。它们允许我们模拟任意数量的请求Web服务器上某个特定Web文档的用户,更重要的是,它允许我们模拟任意数量的用户同时访问Web服务器上的文档(并发请求)。例如,每个工具提供的信息都与下列内容有关:1、响应一个请求所花费的总时间2、来自服务器的总响应大小3、Web服务器每秒可以处理的请求总
2014-05-22 16:55:00
2100
转载 数组非数字键名引号的必要性
我看到过很多人操作数组的时候, 对于数组中的非数字键名不使用引号, $array[key] = $value;我可以理解有些人可能会觉得这样的代码很”整洁”, 并且也能正常执行.更甚至,如果他很”幸运的”php配置的好:error_reporting = ~E_NOTICE他也许永远都沉浸在自己的”整洁”风格中, 看不到任何的NOTICE提示, 也不会意识到,
2014-05-19 18:22:30
838
原创 算法学习十八----寻找发帖水王
题目:经常在论坛或者讨论区上面会看到一些人每个帖子都回复或者发了很多帖子(但是没有对其他用户有用途的)。现在写一个算法,找出发帖数目超过帖子总数的一半的用户ID--称为发帖水王。(注:本题假设发帖水王存在)算法思路如下:先对序列排序之后,计算出每个ID的次数,输出出现次数最大的用户ID即可。但是这个方法效率比较低。另一种方法,就是想办法将大问题转换成小问题,对列表进行扫描,每次删除
2014-05-19 18:19:39
1438
转载 深入解析UUID及其应用
讨论UUID的定义、分类、应用及生成工具。什么是UUID?UUID是Universally Unique Identifier的缩写,它是在一定的范围内(从特定的名字空间到全球)唯一的机器生成的标识符。UUID具有以下涵义:经由一定的算法机器生成为了保证UUID的唯一性,规范定义了包括网卡MAC地址、时间戳、名字空间(Namespace)、随机或伪随机数、时序等元素
2014-05-07 20:47:31
36356
1
原创 DNS原理总结及其解析过程详解
一、域名系统1、域名系统概述 域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址。域名系统其实就是名字系统。为什么不叫“名字”而叫“域名”呢?这是因为在这种因特网的命名系统中使用了许多的“域(domain)”,因此就出现了“域名”这个名词。“域名系统”明确地指明这种系统是应用在因特网中。
2014-05-07 13:10:01
125564
原创 算法学习十七----计算n的阶乘中0的个数
题目:给定一个整数n,那么n的阶乘n!末尾有多少个0呢?例如:n=10,n!=362800,n!的末尾有两个0如果直接计算出n的阶乘再判断的话不仅耗时而且还会有溢出的情况。首先考虑N!=K*10^M且K不能被10整除,那么就可以知道N!末尾有M个0。再考虑对N!进行质因数分解,N!=(2^X)*(3^Y)*(5^Z)...,由于1-=2*5,所以M只与X和Z有关,每一对2和5就能得
2014-05-05 15:39:53
1538
转载 PHP解释器引擎执行流程
这里将介绍引擎内部执行一个PHP脚本的流程,以cli SAPI为例子来对流程中核心的部分做简单介绍,省去一些初始化及清理操作。 cli(Command Line Interface)即PHP的命令行模式,现在此SAPI是默认安装的,我们在服务器上安装完PHP之后,一般会生成一个可执行文件,假设此文件为/usr/local/bin/php ,那么我们在SHELL下可以用以下命令来执行一
2014-04-26 19:31:48
1977
原创 TCP与UDP的区别
TCP和UDP是OSI模型中的运输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。UDP(User Datagram Protocol) UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立刻按照原样发送到网络上的一种机制。 即使是出现网络拥堵的情况下
2014-04-24 21:29:12
70058
1
原创 算法学习十六----求最大公约数
题目:求最大公约数用辗转相除法求最大公约数的解法相信大家都很熟悉,就是用大数除以小数,然后取出余数与之前较小的数再递归地进行同样的操作,直到其中一个数为0。但是这样的除法在遇到大整数的时候作除法非常地耗时,这样对效率方面有很大的影响。设两个数为x,y采用辗转相除法的分析,如果一个数能够同时正处x和y,则必能同时整除x-y和y;而能够同时整除x-y和y的数也必能同时整
2014-04-21 13:46:47
1246
原创 HTTP协议之报文详解
学习WEB开发需要对HTTP协议熟悉,下面直接进入主题。一、什么是报文报文,是网络中交换和传输的数据单元,即站点一次性要发送的数据块。报文包含了将要发送的完整的数据信息,其长短很不一致,长度不限且可变。HTTP报文是由一行一行简单的字符串组成的。HTTP报文都是纯文本,不是二进制代码,所以人们可以很方便地对其进行读写。如果说HTTP是因特网的信使,那么HTTP报文就是它用来搬东西的包裹
2014-04-20 12:51:28
28607
3
原创 算法学习十五----找数组最大值和最小值
题目:给定一个数组,找出数组中的最大值和最小值算法思路一:使用两个“游标”,p代表最大值,q代表最小值,初始为数组的第一个和第二个,不断向后移并且做比较,每次移动时将较大值与p比较,将p赋为较大值,较小值也同理。这样就能找到最大值和最小值。此算法要注意的地方就是当数组只有一个元素以及数组的个数为奇数个时要做另外的处理算法伪代码如下:if array.size = 1then
2014-04-20 10:01:25
7457
原创 HTTP请求中POST与GET的区别
一、原理区别一般我们在浏览器输入一个网址访问网站都是GET请求;再FORM表单中,可以通过设置Method指定提交方式为GET或者POST提交方式,默认为GET提交方式。HTTP定义了与服务器交互的不同方法,其中最基本的四种:GET,POST,PUT,DELETE,HEAD,其中GET和HEAD被称为安全方法,因为使用GET和HEAD的HTTP请求不会产生什么动作。不会产生动作意味着GET
2014-04-18 17:15:58
179225
20
原创 算法学习十四----逆序输出链表
题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值。逆序输出链表,可以采用借用额外空间,使用栈的数据结构,然后遍历一次链表,且每遇到一个节点就将其放入到栈中,直到最后一个节点,最后将栈输出,这样就实现了逆序输出链表。还有一种方法就是递归实现,每次访问到一个节点的时候,先递归输出它的下一个节点,再输出节点本身,这样就实现了想要的结果。算法伪代码如下:
2014-04-18 15:22:26
1283
原创 算法学习十三----和为n连续正数序列
题目:输入一个正数n,输出所有和为n连续正数序列。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。算法思路采用辅助空间保存序列。用i从1开始做起点,j从i+1开始,直到i等于(1+n)/21、如果i-j的和等于n,则输出序列2、如果i-j的和大于n,则将序列清空3、如果i-j的和小于n,则将j假
2014-04-17 21:25:26
799
原创 算法十二----左旋转字符串
题目: 定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。 如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数。 要求时间对长度为n的字符串操作的复杂度为O(n),辅助内存为O(1)。算法思路:把字符串看做由两段组成,记作XY,题目的意思是要求出YX。记R(X)为X字符串旋转后的字符串,则R(R(X)
2014-04-16 09:33:29
842
转载 gdb常用命令
调用gdb编译需要在cc后面加 -g参数再加-o;[root@redhat home]#gdb 调试文件:启动gdb(gdb) l :(字母l)从第一行开始列出源码(gdb) break n :在第n行处设置断点(gdb) break func:在函数func()的入口处设置断点(gdb) info break: 查看断点信息(gdb) r:运行程序
2014-04-15 12:01:22
596
转载 C++多态的实现原理
1. 用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。2. 存在虚函数的类都有一个一维的虚函数表叫做虚表。类的对象有一个指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对应的。3. 多态性是一个接口多种实现,是面向对象的核心。分为类的多态性和函数的多态性。4. 多态用虚函数来实现,结合动态绑定。5. 纯虚函数是虚函数再加上= 0。6. 抽象类是指包
2014-04-15 07:58:35
675
原创 算法学习十一----连续最长的数字串
写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,outputstr所指的值为1
2014-04-13 11:21:02
997
转载 堆和栈的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两
2014-04-12 10:31:31
522
原创 算法学习十----整数的二进制表示中1的个数
题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。这是一道考查位运算的题目,做位运算的时候一定要把负数也考虑进去,刚开始做的时候忘了考虑进去,结果输入一个负数的时候就彻底凌乱了。刚开始的思路是先判断整数的最右边一位是不是1,然后把整数右移一位,这样,原来处于右边第二位的数字现在被移到第一位了,再判断是不是1。这
2014-04-10 15:21:05
835
转载 并行快速排序
并行快速排序感谢网友浅水清流投递本稿。并发算法是多核时代开始流行的技术趋势,比如tbb,ppl都提供了大量有用的并发算法。经典算法中,排序是一个很适合采用分治法并发的场合,比如快速排序。常规的快速排序,先在数组中选取一个基准点,将数组分区为小于基准点和大于基准点(相同的数可以到任一边),对分区的子数组递归的执行分区的操作,当子数组长度为1时退出递归。此时数组就完
2014-04-09 16:10:45
6363
原创 算法学习九----在从1到n的正数中1出现的次数
题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次。要在一个数字中找到1的个数,可以简单地把数字转换成字符串,然后扫描字符串,判断每个字符是否为1,如果为1就把1的个数加1.另一种解法是通过除法和取模判断1的个数。首先,当数字为1位数时,将其除以10取模,然后判断是否
2014-04-09 09:49:45
858
原创 算法学习八----约瑟夫问题
题目:n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。经典的算法题目算法思路:采用循环链表的数据结构1、初始当前位置为链表第一个元素2、从当前位置开始,向前移动n-1
2014-04-08 09:51:31
712
原创 算法学习七----在一个字符串中找到第一个只出现一次的字符
题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 算法思路:此算法的实现在于选择适当的数据结构,可以选择一种叫映射表的数据结构映射表简单地说就是进化的“数组”,但是“数组”的下标可以是任意类型所以可以选择字符与数字的映射表作为数据结构,然后扫描字符串的每一个字符,如果当前字符还没有在映射表中,则添加进去映射表,并将其值设为1
2014-04-07 22:19:17
906
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人