af you jia 10 år siden
906
Mere som dette
PHP相关技术和工具
核心组件和外围框架:pear pecl yaf yar laravel yii zendframework thinkphp lazyphp
包管理:composer psr
规范IDE和编辑器:phpstrom zendstudio sublime editplus notepad++ vim
项目和版本管理工具:git svn github gitcafe gitbucket phabricator
部署工具:phing
数据库及其版本管理工具:pdo phpmyadmin adminer phinx
文档工具:phpdoc phpapi-doc
全文检索工具:sphinx
测试工具:phpunit simpletest behat selenium phpspec
调试工具:xdebug
缓存系统:apc xcache zendoptimizer+
模板系统:smarty twig
常用前端:bootstrap3
支持PHP的云平台:google app engine , sina app engine , baidu app engine
其他上下游技术mysql nginx php-fpm apache mod_php5
Linux优化篇1.mysql编译安装
Linux优化篇10.nginx优化2google-perftools安装
Linux优化篇11.nginx优化3google-perftools优化配置
Linux优化篇12.nginx优化4内核优化
Linux优化篇13.Nginx优化5
Linux优化篇14.php-fpm优化
Linux优化篇2.apache+php编译
Linux优化篇3.apache+php2
Linux优化篇4.apache+php编译脚本
Linux优化篇5.服务器验证失败解决方法
Linux优化篇6.php-fpm编译
Linux优化篇7.nginx编译
Linux优化篇8.nginx+php配置
Linux优化篇9.nginx优化1
Linux基础进阶10.系统启动流程
Linux基础进阶11.进程和服务管理
Linux基础进阶12.screen
Linux基础进阶13.进程管理
Linux基础进阶14.top
Linux基础进阶15.rpm和yum
Linux基础进阶16.yum源配置
Linux基础进阶17.apt-get
Linux基础进阶18.yum lamp
Linux基础进阶19.rsync
Linux基础进阶1安装前准备
Linux基础进阶2.virtualBox安装
Linux基础进阶20.课后交流
Linux基础进阶3.virtual的使用和基础配置
Linux基础进阶4.linux运行方式和目录结构
Linux基础进阶5.linux基础命令
Linux基础进阶6.linux正则
Linux基础进阶7.用户基础讲解和用户与组的管理
Linux基础进阶8.实验 single模式修改root密码
Linux基础进阶9.系统管理命令
Linux开发篇1.vi介绍
Linux开发篇10.smart_tar脚本详解
Linux开发篇11.shell流控制
Linux开发篇12.shell完结
Linux开发篇13.awk1
Linux开发篇14.awk练习1
Linux开发篇15.awk2
Linux开发篇16.sed
Linux开发篇17.linux性能分析
Linux开发篇18.日常分析
Linux开发篇2.vi三个模式命令讲解
Linux开发篇3.vim插件安装
Linux开发篇4.vim插件使用
Linux开发篇5.git安装
Linux开发篇6.计划任务
Linux开发篇7.shell1
Linux开发篇8.shell变量赋值和引用
Linux开发篇9.shell流控制1
Linux负载均衡1.web负载均衡
Linux负载均衡2.Nginx_upsteam
Linux负载均衡3.Ngnix+keepalived
Linux负载均衡4.check_nginx_port脚本
Linux负载均衡5.Nginx+keepalived实验结果
Linux负载均衡6.LVS介绍
Linux负载均衡7.lvs实战
memcache01-memcahced介绍及安装
memcache02-add命令详细介绍
memcache03-增删改查及统计命令
memcache04-memcached内存分配机制
memcache05-LRU删除机制
memcache06-Linux下编译memcached
memcache07-key value的长度限制
memcache08-windows下安装php-memcache
memcache09-Linux编译Apache+PHP
memcache10-编译php-memcache扩展
memcache11-分布式之取模算法的缺陷
memcache12-一致性哈希分布式算法原理与实现
memcache13-一致性哈希实验课(1)-实验准备
memcache14-一致性哈希实验课(2)-实验过程
memcache15-缓存雪崩现象
memcache16-缓存无底洞现象
memcache17-永久数据被踢现象
mongodb01-mongodb文档型数据库特点介绍
mongodb02-mongodb安装过程
mongodb03-mongo库表操作语句
mongodb04-CURD操作详解
mongodb05-深入查询表达式
mongodb06-游标操作
mongodb07-索引
mongodb08-用户管理
mongodb09-mongoDB备份与恢复
mongodb10-replication复制集
mongodb11-shard分片
mongodb12-手动预先分片
mongodb13-replcation与shard分片结合使用
mongodb14-PHP-Mongo扩展编译及使用
mongodb15-短网址项目之网址算法
mongodb16-短网址项目之添加网址
mongodb17-短网址项目之完成项目
mongodb18-聚集运算之group
mongodb19-aggregate聚集框架
mongodb20-mapReduce概念及用法
mongodb21-mapReduce实战地震数据分析
mysql优化01-MySQL优化大的思路
mysql优化02-awk简洁入门
mysql优化03-观察服务器周期性变化
mysql优化04-观察mysql进程状态
mysql优化05-列选取原则
mysql优化06-多列索引生效规则
mysql优化07-多列索引实验
mysql优化08-商城多列索引实验
mysql优化09-聚簇索引概念
mysql优化10-聚簇索引随机主键值的效率
mysql优化11-索引覆盖
mysql优化12-某聚簇索引排序慢案例分析
mysql优化13-索引长度与区分度
mysql优化14-伪哈希函数降低索引长度
mysql优化15-大数据量分页优化
mysql优化16-索引与排序
mysql优化17-冗余索引与重复索引
mysql优化18-索引碎片修复
mysql优化19-explain分析sql效果
mysql优化20-in型子查询陷阱
mysql优化21-exists一定比子查询慢吗
mysql优化22-max min非常规优化技巧
mysql优化23-count优化小技巧
mysql优化24-巧用变量减少查询
mysql优化25-MySQL主从集群配置
mysql优化26-binlog-format的区别
mysql优化27-主主复制
mysql优化28-主主复制时的主键冲突解决
mysql优化29-被动主主复制
mysql优化30-mysql-proxy完成负载均衡与读写分离
mysql优化31-partition分区
mysql优化32-事务讲解
nginx01-nginx介绍及编译安装
nginx02-nginx信号量
nginx03-nginx虚拟主机配置
nginx04-nginx日志管理
nginx05-nginx定时任务完成日志切割
nginx06-Location详解之精准匹配
nginx07-Location之正则匹配
nginx08-Location总结图解
nginx09-nginx Rewrite语法详解
nginx10-编译PHP并与nginx整合
nginx11-安装ecshop
nginx12-商城url重写实战
nginx13-nginx gzip压缩提升网站速度
nginx14-expires缓存提升网站负载
nginx15-反向代理实现nginx+apache动静分离
nginx16-nginx实现负载均衡
nginx17-nginx连接memcached
nginx18-第3方模块编译及一致性哈希应用
nginx19-大访问量优化整体思路
nginx20-ab压力测试及nginx性能统计模块
nginx21-nginx单机1W并发优化
nginx22-服务器集群搭建
nginx23-集群性能测试
oracle01-学习oracle的目的
oracle02-sqlplus连接与启动关闭实例
oracle03-sqlplus缓冲区操作
oracle04-sqlplus与外部编程器交互
oracle05-sqlplus中使用变量
oracle06-列类型与表创建
oracle07-约束
oracle08-序列
oracle09-同义词
oracle10-查询语句
oracle11-子查询
oracle12-连接查询
oracle13-视图
oracle14-索引
oracle15-事务
oracle16-第1个pl-sql程序
oracle17-变量与默认值设置
oracle18-if-else控制结果
oracle19-while结构
oracle20-for循环
oracle21-loop循环
oracle22-存储过程与存储函数
oracle23-plsql与数据库交互
oracle24-自定义数据类型
oracle25-利用表和列快速定义数据类型
oracle26-异常处理
oracle27-递归函数
oracle28-隐式游标
oracle29-显式游标
oracle30-触发器
oracle31-编译PHP-OCI8连接oracle
PHP底层分析01-PHP编译特点
PHP底层分析02-变量的底层实现
PHP底层分析03-变量类型的实现
PHP底层分析04-符号表 变量的花名册
PHP底层分析05-传值赋值发生了什么
PHP底层分析06-cow写时复制特性
PHP底层分析07-引用赋值发生了什么
PHP底层分析08-强制分裂
PHP底层分析09-引用数组时的怪现象
PHP底层分析10-循环数组时的怪现象_all
PHP底层分析11-符号表与作用域
PHP底层分析12-静态变量的实现
PHP底层分析13-常量
PHP底层分析14-对象
PHP底层分析15-内存分层
redis01-redis特点及安装使用
redis02-redis通用key操作命令
redis03-string结构及命令详解
redis04-list结构及命令详解
redis05-位图法统计活跃用户
redis06-set结构及命令详解
redis07-order set结构及命令详解
redis08-hash结构及命令详解
redis09-redis事务及锁应用
redis10-频道发布与消息订阅
redis11-rdb快照持久化
redis12-aof日志持久化
redis13-redis主从复制
redis14-redis运维常用命令
redis15-aof恢复与rdb服务器间迁移
redis16-sentinel运维监控
redis17-key设计原则
redis18-phpRedis扩展编译
redis19-微博项目之用户注册与微博发布
redis20-微博项目之粉丝关系与推送微博
redis21-增强微博cookie安全
redis22-哈希数据存储微博
redis23-微博key设计总结
redis24-粉丝拉取模式
redis25-微博冷数据写入mysql
redis26-高速写入测试
设计模式01-什么是设计模式
设计模式02-说说多态
设计模式03-面向接口开发
设计模式04-简单工厂
设计模式05-工厂方法
设计模式06-单例模式
设计模式07-面向过程完成页面风格切换
设计模式08-观察者模式做风格切换
设计模式09-PHP实现观察者模式
设计模式10-面向过程完成举报功能
设计模式11-责任链模式完成举报功能
设计模式12-策略模式
设计模式13-文章编辑的难题
设计模式14-装饰模式完成文章编辑
设计模式15-适配器模式
设计模式16-桥接模式
设计模式17-设计模式作业
Flash CS3 ActionScript 3.0游戏开发基础与范例
第四章面向对象
第三章actionscript
第一章基础语法
COCOS2D-X权威指南
COCOS2D-X核心类
坐标系
仿射变换
游戏大量使用的旋转、缩放、平移等都是仿射变换。所谓仿射变换是指在线性变换的基础上加上平移
锚点
在Cocos2D-x中锚点为默认值(0.5,0.5),这样的锚点设置要把一个节点表示锚点位于贴图长度乘0.5和宽度乘0.5的地方即放置于贴图的中央。
锚点指定了贴图上和所在节点原点(也就是设置位置的点)重合的点的位置,因此只有在CCNode类节点使用贴图的情况下,锚点才有意义。
节点坐标系
convertToNodeSpace
convertToWorldSpace
它和OpenGL坐标系的方向也是一致的,x轴向右,y轴向上,原点在父节点的左下角。
CCNode类的设置位置使用的就是父节点的节点坐标系
屏幕坐标系
原点在屏幕左上角,x轴向右,y轴向下
世界坐标系
世界坐标系和OpenGL坐标系方向一致,原点在屏幕左下角,x轴向右,y轴向上。
OpenGL坐标系
该坐标系原点在屏幕左下角,x轴向右,y轴向上。
导演类(CCDirector)
设置投影和朝向。
访问视图。
访问和改变场景以及访问Cocos2D-x的配置细节。
设置OpenGL的一些参数和方式。
初始化OpenGL会话。
节点类(CCNode)
函数
setRotation
setScale
setPosition
create
成员数据
保护成员数据
公共成员数据
CCNODE特点
CCNode类不含有贴图,它可以进行位置的平移、大小的伸缩变化、旋转变化。
一个类继承自CCNode类,说明它有如下特点
重写渲染的绘制方法。
在时间线上控制回调。
重写初始化的方法和周期性回调方法。
CCNode类不自带贴图,其实在屏幕上看不到任何节点类的效果,所以一般使用CCNode类的场合有两个
需要自己定义一个在屏幕上显示的对象,这时候让新定义的这个类继承自CCNode。
需要一个父节点来管理一批子节点,这时候可以设置一个“无形”的子节点来管理子节点
CCNode可以为它自己和它的子节点添加额外的功能。
父节点的设置都可以传递到子节点上,这点在一些游戏的开发中可以使我们的管理更轻松。
节点含有周期性回调的方法(Schedule、Unschedule等)
任何需要画在屏幕上的对象都是节点类。最常用的节点类包括场景类(CCScene)、布景层类(CCLayer)、人物精灵类(CCSprite)、菜单类(CCMenu)。
继承自CCObject
COCOS2D-X游戏概念
导演(CCDirector)
场景3(CCScene)
场景2(CCScene)
场景1(CCScene)
布景层2(CCLayer)
布景层1(CCLayer)
NPC(CCSprite)
人物精灵(CCSprite)
COCOS2D-X游戏开发之旅
重看一遍书
过一遍代码
PHPUnit/SimpleTest/Qunit
数理逻辑
许跃新
陈幼林
HOW
代码
书籍
PPT
视频
学习计划
开发阶段
实战学习
安装配置
掌握概念
技能树
一、storm入门到精通:
1、storm基本概念和组件介绍
2、storm分组策略
3、storm安装
4、Storm 记录级容错原理
5、Storm 配置详解
6、storm基本api介绍
7、Storm Topology的并发度
8、Storm消息机制原理讲解
9、Storm DRPC实战讲解
10、Storm Transaction 原理+实战讲解
11、Storm 实现滑动窗口计数和TopN排序
12、Storm流聚合
13、Storm的新利器Pluggable Scheduler
Storm项目实战
1、storm+kafka环境搭建-1
2、storm+kafka环境搭建-2
3、storm+kafka环境搭建-3
4、项目分析
5、kafka producer测试
6、storm整合kafka
7、整合项目测试
8、storm 订单有效性检查
9、storm 数据修正
10、storm 数据业务入库处理-1
11、storm 数据业务入库处理-2
12、storm 数据定时存库处理
13、入库mysql并进行测试和bug修复-1
14、入库mysql并进行测试和bug修复-2
15、优化数据结构-确保数据不丢失
16、zookeeper锁机制
17、增加zookeeper锁,保证多线程同时处理数据-1
18、增加zookeeper锁,保证多线程同时处理数据-2
storm实战
流聚合
实现滑动窗口计数和TopN排序
DRPC
storm基本api
storm开发工具
storm组件
Spout
Storm中Spout使用注意事项小结Storm中Spout用于读取并向计算拓扑中发送数据源,最近在调试一个topology时遇到了系统qps低,处理速度达不到要求的问题,经过排查后发现是由于对Spout的使用模式不当导致的多线程同步等待。这里罗列几点个人觉得编写Spout代码时需要特别注意的地方:
1. 最常用的模式是使用一个线程安全的queue,如BlockingQueue,spout主线程从queue中读取数据;另外的一个或多个线程负责从数据源(如各种消息中间件、db等)读取数据并放入queue中。
2. 如果不关心数据是否丢失(例如数据统计分析的典型场景),不要启用ack机制。
3. Spout的nextTuple和ack方法是在同一个线程中被执行的(可能最初觉得这块不会成为瓶颈,为了简单实现起见就单线程了,jstorm应该是已经改成了多线程),因此不能在nextTuple或ack方法里block住当前线程,这样将直接影响spout的处理速度,很关键。
4. Spout的nextTuple发送数据时,不能阻塞当前线程(见上一条),比如从queue中取数据时,使用poll接口而不是take,且poll方法尽量不要传参阻塞固定时间,如果queue中没有数据则直接返回;如果有多条待发送的数据,则一次调用nextTuple时遍历全部发出去。
5. Spout从0.8.1之后在调用nextTuple方法时,如果没有emit tuple,那么默认需要休眠1ms,这个具体的策略是可配置的,因此可以根据自己的具体场景,进行设置,以达到合理利用cpu资源。
Transaction
Pluggable Scheduler
storm相关知识点
编程语言
java
4. Java序列化Java序列化技术可以实现将Java对象保存为二进制文件,而反序列化过程则可以在另一个Java进程中将此二进制文件恢复为Java对象,其缺点在于不能很好的解决版本变化。Storm中Java序列化的应用场景:(1)客户端提交topology任务后,Storm将topology任务序列化并发送给nimbus;(2)supervisor从Zookeeper取得任务信息后,从nimbus下载序列化文件和jar包,启动worker进程并反序列化得到提交任务时的topology对象。
clojure
集群协调
zookeeper
Zookeeper是一个针对大型分布式系统的可靠协调服务系统,其采用类似Unix文件系统树形层次结构的数据模型(如:/zoo/a,/zoo/b),节点内可存储少量数据(<1M,当节点存储大数据量时,实际应用中可能出现同步问题)。
Zookeepr的高可靠性服务是通过配置Zookeeper集群实现的,官方建议Zookeeper集群至少包含3个节点,每个节点上存储一份数据,主节点挂掉后可以重新选取一个节点作为主节点。只要保证集群内有一半以上的节点存活,集群就可对外提供服务。
Zookeeper支持的操作类型有:
(1)创建树节点znode;
(2)删除树节点znode;
(3)读取树节点znode的内容和其子节点的内容;
(4)当节点内容发生变化或子节点增删时触发消息通知更新消息;
(5)支持瞬时节点(EPHEMERAL),创建节点的进程退出后节点自动被删除。
Storm中使用Zookeeper主要用于Storm集群各节点的分布式协调工作,具体功能如下:
(1)存储客户端提供的topology任务信息,nimbus负责将任务分配信息写入Zookeeper,supervisor从Zookeeper上读取任务分配信息;
(2)存储supervisor和worker的心跳(包括它们的状态),使得nimbus可以监控整个集群的状态, 从而重启一些挂掉的worker;
(3)存储整个集群的所有状态信息和配置信息。
关于Storm在Zookeeper的详细目录结构,可参考这里。
数据通信
Thrift
2. Thrift服务框架Thrift是一个跨语言的可扩展的服务框架,它通过一个中间语言(IDL,接口定义语言)来定义RPC的接口和数据类型,然后通过一个编译器生成RPC客户端和服务器通信的无缝跨编程语言。Storm中Thrift的应用场景:(1)客户端向nimbus提交topology任务;(2)supervisor从nimbus下载topology任务(代码和序列化文件);(3)storm ui从nimbus获取topology运行的统计信息。
数据输出
MYSQL
消息队列/数据接入
ZeroMQ
kafka
Kafka是一个高吞吐量分布式消息系统。linkedin开源的kafka。 Kafka就跟这个名字一样,设计非常独特。首先,kafka的开发者们认为不需要在内存里缓存什么数据,操作系统的文件缓存已经足够完善和强大,只要你不搞随机写,顺序读写的性能是非常高效的。kafka的数据只会顺序append,数据的删除策略是累积到一定程度或者超过一定时间再删除。Kafka另一个独特的地方是将消费者信息保存在客户端而不是MQ服务器,这样服务器就不用记录消息的投递过程,每个客户端都自己知道自己下一次应该从什么地方什么位置读取消息,消息的投递过程也是采用客户端主动pull的模型,这样大大减轻了服务器的负担。Kafka还强调减少数据的序列化和拷贝开销,它会将一些消息组织成Message Set做批量存储和发送,并且客户端在pull数据的时候,尽量以zero-copy的方式传输,利用sendfile(对应java里的 FileChannel.transferTo/transferFrom)这样的高级IO函数来减少拷贝开销。可见,kafka是一个精心设计,特定于某些应用的MQ系统,这种偏向特定领域的MQ系统我估计会越来越多,垂直化的产品策略值的考虑。
netty
数据收集
scribe
flume
storm安装配置
资料
Storm实时数据处理
<
Lessons Learned Building Storm
集群安装
单机安装
storm原理
Topology的并发度
记录级容错原理
概念
WHEN
2014
WHO
大数据开发工程师
国双科技技术部招聘大数据开发工程师9k-18k 深圳 经验3-5年 本科及以上 全职
职位诱惑 : 发展前景,创业氛围,发挥空间发布时间:3天前发布职位描述【公司简介】
目前国内领先的大数据技术公司,近几年高速增长,在多个行业领域奠定了领先地位,并在2010年和2011年分别完成迪斯尼和诺基亚的风险投资。
【职位要求】
1.精通Hadoop以及Hadoop生态圈上的各种应用的几种,如Hbase、Hive,或者分布式数据库Impala等。
2.精通JAVA编程语言,精通面试对象和设计模式,熟悉Linux平台,可以编写代码编程使用Hadoop和基于Haddop开发大数据处理系统。
3.拥有实际的Hadoop的项目经验。
4.熟悉软件开发流程和配置库的使用,拥有软件开发流程中的代码规范意识、配置管理规范意识、文档撰写规范意识和团队合作沟通交流意识。
【职责说明】
1.负责公司的大数据处理框架的研发设计工作。
2.负责公司产品研发过程中的数据库设计文档的撰写。
3.参与小组的产品设计讨论,共同讨论和设计产品。
【公司福利】
除了岗位工资之外,公司还提供饭补、通讯补助、节假日礼物等福利。
Chinatime招聘大数据开发工程师10k-20k 深圳 经验1-3年 本科及以上 全职
职位诱惑 : 公司为员工提供丰厚的薪资待遇与发展机会发布时间:3天前发布职位描述职位描述:
1.分布式平台应用开发(Hadoop/Hbase);
2.实时计算和分布式并行计算的程序开发。
任职要求:
1.本科以上学历,计算机及相关专业,至少2年的互联网大型系统开发经验;
2.精通JAVA,有2年以上JAVA开发经验;
3.熟悉Hadoop技术体系,有Mapreduce/hive/hbase等实际应用经验及编程经验;
4.熟悉Storm流计算框架或其他开源实时计算框架者优先;
5.个性开朗,对技术钻研好学、逻辑思维能力强,沟通能力优秀,有团队合作精神;
6.能承受较大的工作压力。
我们将提供具有竞争力的工资待遇,欢迎你的加入!
大数据平台工程师
工作职责:
1、海量实时数据分析与处理;
2、数据平台的运行与维护;
3、大规模数据挖掘。
职位要求:
1、2 年以上 Hadoop 相关工作经验,熟悉 MapReduce 开发,熟练使用 Hbase/Hive/Pig;
2、整体 3 年以上 Java/C/C++/Go 编程经验;
3、Java 编程特别深入、有分布式系统开发经验者,可免除 Hadoop 相关经验要求;
4、熟练使用 Linux, Shell, Python;
5、熟悉 Oracle/MySQL,对 SQL 语句优化具有一定经验者优先;
6、有 Storm/Spark 经验者优先。
资深java软件工程师
职责描述:
根据需求设计、开发基于Storm的应用;对Storm平台及应用进行深度优化;参与Storm集群的维护及故障排查;培训、指导新手进行Storm应用开发;任职要求:
五年以上Java开发经验,其中2年以上Storm应用开发经验;具备扎实的Java基础,熟练掌握Java内存管理机制和多线程编程;熟悉Clojure语言,熟练掌握Storm内部机制;熟悉ZooKeeper框架,具备Java、Storm应用性能调优经验;具备一定的算法能力,熟悉常用设计模式;具备良好的团队协作精神;
storm开发工程师
WHERE
实时分析,在线机器学习,持续计算,分布式RPC,ETL
WHY
Storm支持水平扩展,具有高容错性,保证每个消息都会得到处理,而且处理速度很快(在一个小集群中,每个结点每秒可以处理数以百万计的消息)。Storm的部署和运维都很便捷,而且更为重要的是可以使用任意编程语言来开发应用。
WHAT
Storm是一个开源的分布式实时计算系统,可以简单、可靠的处理大量的数据流。