- 博客(79)
- 资源 (12)
- 收藏
- 关注

原创 redis6.0多线程源码剖析
1、概述redis6.0 新增了 多线程机制,跟memcache 相同的是都采用了 master-worker 这一经典思路,不同的是Memcached 执行主逻辑也是在 worker 线程里,模型更加简单,不过这也归功于 Memcached 简易数据操作的特性产生的天然隔离;而 Redis 把处理逻辑还 交还给 master 线程,虽然一定程度上增加了模型复杂度,但是如果把处理逻辑放在 worker 线程,也很难保证隔离性。2、 关键变量io_threads_active:是否开始 IO 多线
2020-05-21 14:19:05
925

转载 ffmpeg 编码延迟问题
近日在做一个分布式转码服务器,解码器是采用开源的ffmpeg,在开发的过程中遇到一个问题:编码延迟多大5、6秒钟,也就是最初编码的几十帧并不能马上取出,而我们的要求是实时编码!虽然我对视频编码方面不是很熟悉,但根据开发的经验,我想必定可以通过设置一些参数来改变这些情况。但我本人接触ffmpeg项目时间并不长,对很多与编解码方面参数的设置并不熟悉,于是google了很久,网上也有相关方面的讨论,说什
2014-06-03 23:27:23
5235
2
原创 2020年一个7年老程序员的面试经历
2020年,突如其来的疫情,打乱了我的面试机会但同时也提供了机会,在家工作的同时也可以适当安排远程面试于是,2020年的面试经历开始了 ------题记...
2020-05-27 10:27:20
699
原创 Elasticsearch原理学习(一)
1、WHY 1)、大规模的数据检索应该怎么做? 2)、怎么样避免单点故障 3)、如何保证数据安全性,热备、冷备、异地多活 ES 应运而生,ES 是开源高扩展的分布式全文检索引擎,可以实现近乎实时的查询,检索数据;本身扩展性非常好,可以扩展到上百态服务器,处理PB级别的数据。所以学习ES 是很有必要的。2、HOW 如果去学习: 1)、了解原理 2)、熟悉DSL 3)、安装应用2.1、基本...
2020-05-22 16:53:55
294
原创 活着的意义
短片小说 -- 记录生活初夏,第一天,天气热的发慌斐然走出地铁,一位奇装异服的小哥映入眼帘红色夹克,红色衬衣,红色裤子,走着妖娆的步伐,目光飘向远方外面的一切与我无关,我走我的妖娆大道斐然只觉得搞笑第二天, 红衣小哥又出现了,依然走着妖娆的步伐,目空一切......一周,红衣小哥,依然出现在地铁口,准时准点,依然目空一切...........一个月,地铁口, 依然是那个时间,依然是那个时刻,红衣小哥,从不缺席,步伐依然...
2020-05-21 21:14:41
223
原创 知识累计(二)
1、mysql索引原理:唯一性索引列允许空值,而主键列不允许为空值。主键可以被其他表引用为外键,而唯一索引不能。一个表最多只能创建一个主键,但可以创建多个唯一索引。这里有详细解释:http://www.cnblogs.com/tgycoder/p/5410057.htmlInnodb 的索引 B+tree 必须有主键索引,但是辅助索引搜索需要检索两遍索引:首先检
2017-06-25 22:17:56
371
原创 知识点累计
1、nginx原理模块:核心模块、基础模块、第三方模块 handlers、filters、proxies将客户的请求转location,然后conf配置文件中确定加载什么模块。进程:master、worker master主进程接收信号,转发给worker进程处理。重启worker进程,监控worker kil
2017-06-25 20:08:06
404
原创 总结2
1、PHP5.2到7.0整个过程中的变化举例2、数据库符合索引3、shell读取文件中三行数据,并统计每行倒数第三个数之和4、如何查看apahce当前并发的连接数5、正则匹配中.*?6、http状态吗399,3037、数据库mysql引擎8、redis和memcache 分别如何保证原子性操作9、redis可以存储的数据结构10、Nginx性能调优11、查看
2016-07-27 22:11:02
467
原创 CI框架源码研读(路由解析)
上篇文章当中我们提到,在CodeIgniter.php中,解析出你访问的url所对应的controllers和action,然后在调用call_user_func_array()方法,进入到action中,而这里是如何得到这个对应关系的呢,这就是我们现在要讨论的内容。1、CodeIgniter.php 我们首先来到CodeIgniter.php,发现这其实是在Router类中实现的
2016-06-12 17:46:19
2886
原创 CI框架源码研读(整体架构)
有人说phper的深入要从研读mvc框架开始,我跳了一个常用的CI框架入手,一是因为 CI框架简单轻巧,二是原来用的最多的就是CI框架了。 1、首先来看CI的整体架构图:上图中是我最新下载CI3.0版本,application是用户级开发目录,我们关心system系统源码目录,CI的核心代码都在这里了。1、core 系统核心代码2、database数据库
2016-06-12 17:45:12
3286
转载 PHP获取客户端IP
在PHP获取客户端IP中常使用 $_SERVER["REMOTE_ADDR"] 。但如果客户端是使用代理服务器来访问,那取到的是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取。但只有客户端使用“透明代理”的情况下,$_SERVER["HTTP_X_F
2016-04-25 16:52:07
490
转载 memcached 命中率
Memcached,人所皆知的remote distribute cache(不知道的可以javaeye一下下,或者google一下下,或者baidu一下下,但是鉴于baidu的排名商业味道太浓(从最近得某某事件可以看出),所以还是建议javaeye一下下),使用起来也非常的简单,它被用在了很多网站上面,几乎很少有大型的网站不会使用memcached。 曾经我也看过很多剖析memcac
2016-04-24 20:02:27
781
原创 php数组的数据结构
从zvalue_value结构中看出,php的数组是用哈希表来实现的:HashTable *ht;引用网上的内容介绍下哈希表:哈希表是一种通过哈希函数,将特定的键映射到特定值的一种数据结构,它维护键和值之间一一对应关系。键(key):用于操作数据的标示,例如PHP数组中的索引,或者字符串键等等。槽(slot/bucket):哈希表中用于保存数据的一个单元,也
2016-03-01 11:24:43
3804
转载 redis和memcache的区别
1、网络IO模型方面:Memcached是多线程,分为监听线程、worker线程,引入锁,带来了性能损耗。Redis使用单线程的IO复用模型,将速度优势发挥到最大,也提供了较简单的计算功能 2、内存管理方面:Memcached使用预分配的内存池的方式,带来一定程度的空间浪费 并且在内存仍然有很大空间时,新的数据也可能会被剔除,而Redis使用现场申请内存的方式来存储数据,不会剔除任何非临时数据
2016-02-01 14:37:18
507
原创 流程状态图
一 、 所用技术 jQuery 和 bootstrap二、 箭头是 图片,状态是bootstrap里的btn三、开发时遇到的问题 1) 使用bootstrap的插件popover时候,在先啦框中添加新的按钮。 2)popover里的按钮右击相应图片被覆盖。如下图: 3) jQuery 给页面元素赋值:
2015-10-19 15:26:46
1504
原创 一起来做属于自己的PHP项目
前言:一直以来就想做一套属于自己的PHP项目,这次采用最流行的Laravel框架,前端采用非常酷的H+框架。项目部署在wamp环境中。Laravel的下载到官网上直接找就可以。 H+前端框架,提供下载地址:点击下载1、安装插件 安装php artisan的generate插件。 修改composer.json中增加:"require-dev": { "way/generators":
2015-09-02 17:41:20
4668
转载 SED用法详解
1. Sed简介 sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
2015-07-15 14:48:24
706
转载 awk用法
简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。awk其名称得自于它的创始人 Alfr
2015-07-15 14:13:45
418
转载 【问底】王帅:深入PHP内核(二)——SAPI探究
SAPI是Server Application Programming Interface(服务器应用编程接口)的缩写。PHP通过SAPI提供了一组接口,供应用和PHP内核之间进行数据交互。简单的讲,就像函数的输入和输出一样,我们通过Linux命令行执行一段PHP代码,本质是Linux的Shell通过PHP的SAPI传入一组参数,Zend引擎执行后,返回给shell,由shell显示出来的
2015-07-13 11:04:35
473
转载 【问底】王帅:深入PHP内核(一)——弱类型变量原理探究
PHP是一门简单而强大的语言,提供了很多Web适用的语言特性,其中就包括了变量弱类型,在弱类型机制下,你能够给一个变量赋任意类型的值。 PHP的执行是通过Zend Engine(下面简称ZE),ZE是使用C编写,在底层实现了一套弱类型机制。ZE的内存管理使用写时拷贝、引用计数等优化策略,减少再变量赋值时候的内存拷贝。下面不光带你探索PHP弱类型的原理,也会在写PHP扩展角度,介绍如
2015-07-13 10:41:49
1019
转载 AMQP机制
当前各种应用大量使用异步消息模型,并随之产生众多消息中间件产品及协议,标准的不一致使应用与中间件之间的耦合限制产品的选择,并增加维护成本。AMQP是一个提供统一消息服务的应用层标准协议,基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言等条件的限制。 当然这种降低耦合的机制是基于与上层产品,语言无关的协议。AMQP协议是一种二进制协议,提供
2015-06-30 18:02:14
1801
转载 PHP语言中的SPL
作者: 阮一峰日期: 2008年7月 8日这几天,我在学习PHP语言中的SPL。这个东西应该属于PHP中的高级内容,看上去很复杂,但是非常有用,所以我做了长篇笔记。不然记不住,以后要用的时候,还是要从头学起。由于这是供自己参考的笔记,不是教程,所以写得比较简单,没有多解释。但是我想,如果你是一个熟练的PHP5程序员,应该足以看懂下面的材料,而且会发现它很有用
2015-05-29 15:18:54
1316
转载 php中stream(流)的用法
Stream是PHP开发里最容易被忽视的函数系列(SPL系列,Stream系列,pack函数,封装协议)之一,但其是个很有用也很重要的函数。Stream可以翻译为“流”,下面是使用方法在Java里,流是一个很重要的概念。流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等。根
2015-05-29 15:14:43
784
原创 spring的单元测试
import javax.annotation.Resource;import org.junit.Assert;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.test.con
2015-05-15 13:55:57
491
原创 spring 动态数据源配置以及相关问题
项目中要求读写分离,在spring中做到读写分离,很简单的想到在配置文件中设置两个数据源,一个datesource(只写),一个datesourceread(只读)。但是要根据上下文动态切换数据源,还需要增加两个帮助类。 类1 ContextHolder主要功能是帮助切换数据源,其中ThreadLocal保证线程中的一致性,不受其他线程影响。public class Cont
2015-05-14 16:01:34
6102
原创 java的几个基础问题
1、java系统出现OOM,应该如何处理。首先,要搞清OOM的分类:OMM主要三类: permgen OOM , heap OOM, stack overflow 1)permgen OOM: 这个主要是由于加载的类太多,或者反射的类太多, 还有 调用 String.intend(jdk7之前)也会造成这个问题。所以出现了这个问题,就检查这三个方面;2)heap OOM:把
2015-05-13 15:38:51
708
转载 Quartz使用自己定义的listener和trigger调用
package com.taobao.terminator.allen.QuartzTest;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.quartz.CronTrigger;import org.quartz.JobDetail;import
2015-05-13 13:47:53
922
转载 ThreadLocal原理及应用
首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个线程中访问的是不同的对象。 另外,说ThreadLocal使得各线程能够保持各自独立的一个对象,并不是通过ThreadLocal.set()来实现的,而是通过每个线程中的new 对象 的操作
2015-05-12 10:05:10
434
转载 Apache Qpid:一个AMQP的开源实现
通信是一个基本的需求,正如人与人之间需要交流一样,比较大型的软件系统也往往需要内部或者外部通信。在系统间通信最基础的通信方式是 socket,但 socket 比较底层。使用起来非常不易。如果需要一些高级特性,需要很多的编程负担。与 socket 的原始对应,企业级的应用软件往往有着各种各样从简单到复杂的通信需求,表现为不同的通信模型。常见的有:点对点:A 发消息给 B。广
2015-04-27 13:51:12
757
原创 学习计划
1、Thrift 2、spring 3、mybatis 4、log4j 5、AOP 6、redis 7、Kafka 8、zookeeper 9、newrelic 10、eagleye 11、kibana12、logstash 13、elasticsearch
2015-04-14 15:40:51
552
转载 h264 i帧p帧b帧
前言 H264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输著称,在编码方面,我理解的他的理论依据是:参照一段时间内图像的统计结果表明,在相邻几幅图像画面中,一般有差别的像素只有10%以内的点,亮度差值变化不超过2%,而色度差值的变化只有1%以内。所以对于一段变化不大图像画面,我们可以先编码出一个完整的图像帧A,随后的B帧就不编码全部图像,只写入与A帧的差别,
2014-06-03 14:51:09
2582
转载 ffmpeg 解码
static void pgm_save(unsigned char *buf, int wrap, int xsize, int ysize,char*filename){ FILE *f; int i; f=fopen(filename,"wb"); fprintf(f,"P5\n%d%d\n%d\n",xsize,ysize,255); for(
2014-06-03 14:48:56
707
转载 Nagios学习
转载地址:http://www.cnblogs.com/mchina/archive/2013/02/20/2883404.html一、Nagios简介 Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件
2013-07-14 20:41:29
2068
原创 Linux 学习笔记
1 绝对路径 一定是由根目录/写起;相对路径 不是由/写起。2 rmdir 仅能删除空目录,要删除非空目录需要使用 rm -r 命令。3 不同身份的用户(root和一般用户)系统姆人的PATH并不相同,差异较大的地方在于/sbin 和/usr/sbin。4 ls查看文件属性 -d 紧列出目录本身,而不是列出目录内的文件数据。 -a 全部数据,连同
2013-07-07 22:00:06
597
原创 Linux学习笔记四--文件系统
一 文件含义:/boot:用来存放与Linux系统启动有关的程序,比如启动引导装载程序等。/:Linux系统的根目录,所有的目录都挂在这个目录下面。/home:存放普通用户的数据,是普通用户的宿主目录。swap:实现虚拟内存,建议大小是物理内存的1~2倍。/etc : 系统配置文件。/var:包含经常发生变动的文件,如邮件,日志文件,计划任务文件。/usr:存放所有命令
2013-07-06 21:51:33
589
原创 Linux学习笔记(三)--shell脚本中的四大变量
1 Shell的作用: 2 shell里的别名#ll = ls -l# alias取消时:unalias ll 3 Shell里的重定向ll > test.txt 输出重定向cat 4 Shell里的管道#ll |wc -l 检查ll的输出有多少行5 历史history!ps表示执行最近的以ps开始的命令修改histor
2013-01-07 21:18:32
724
原创 这学期看的书
最近一直很低迷,总感觉这学期什么都没干,什么都没学。为了证明我还是学了点什么的,所以要写这篇博客。这学期看了三本书第一本:php设计模式本书讲了php当中的17种设计模式,现以代码形式总结如下。1)适配器模式:<?php//原始错误提示类class errorObject{ private $__error; public function __construct(
2012-12-25 20:16:10
524
原创 MongoDB中的Capped Collection和GridFS
1 显示创建集合 db.createCollection("c1"); db.c1.drop(); db.c1.stats(); 查看集合的状态 db.system.indexes.find(); 查看数据库中所有索引2 Capped Collection 固定集合 属性1 对固定集合进行插入速度极快 属性2 按
2012-12-04 18:23:29
902
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人