- 博客(170)
- 收藏
- 关注
原创 最近一个项目的反思
最近一个项目的反思大约在三个月前,也写过一篇这样的文章,最近也在忙一个项目,最近几天有时间,所以就来这里发发牢骚。这次要开发两个产品,为期两个月,包括两个APP和三个后台。与上次开发的项目相比,规模要大很多,功能点也要多一些,难度也要大一些。我负责的是整个后台的前端、部分后台逻辑、部分API接口逻辑与数据抓取分析。一、雾中前进这是我在这个迭代期中最直观的感觉,看不到前进的方向,
2017-02-07 14:54:41 829
原创 PHP中的魔术方法总结
PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __set_state, __clone and __autoload1、__get、__set这两个方法是为在类和他们的父类中没有声明的属
2017-01-13 21:06:04 537
原创 线程和进程
进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含义就是,单个CP
2017-01-13 20:03:21 567
原创 http和socket之长连接和短连接区别
TCP/IPTCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。在传输层...TCP/IP TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。 在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。 在传输层中有TCP协议与UDP协议。 在应用层有:TCP
2017-01-13 19:49:25 641
原创 php error_log记录日志的使用方法和配置
对于PHP开发者来 说,一旦某个产品投入使用,应该立即将 display_errors选项关闭,以免因为这些错误所透露的路径、数据库连接、数据表等信息而遭到黑客攻击。但是,任何一个产品在投入使用后,都难 免会有错误出现,那么如何记录一些对开发者有用的错误报告呢?我们可以在单独的文本文件中将错误报告作为日志记录。错误日志的记录,可以帮助开发人员或者 管理人员查看系统是否存在问题。 如果需要将程序中的
2017-01-13 19:20:54 942
原创 PHP7新特性介绍
PHP7-New-Features本文档只介绍PHP7相关的新特性以及功能修改等, 对PHP7的性能和源码结构不做分析.新增功能常用的语法糖合并比较运算符: // PHP 7之前的写法:比较两个数的大小 function order_func($a, $b) { return ($a $b) ? -1 : (($a > $b
2017-01-13 19:16:48 809
原创 Redis的快照功能
引言: Redis是基于内存的数据库,同时也提供了若干持久化的方案,允许用户把内存中的数据,写入本地文件系统,以备下次重启或者当机之后继续使用。本文将描述如何基于Redis来设置这些功能。 快照的设置 a. 设置Redis.conf配置文件 Redis快照写入的频率 save 900 1 save 300 10 save 60 10000
2017-01-13 19:12:26 576
原创 PHP的抽象类、接口的区别和选择
区别:1、对接口的使用是通过关键字implements。对抽象类的使用是通过关键字extends。当然接口也可以通过关键字extends继承。2、接口中不可以声明成员变量(包括类静态变量),但是可以声明类常量。抽象类中可以声明各种类型成员变量,实现数据的封装。(另Java接口中的成员变量都要声明为public static final类型)[php] view plai
2017-01-12 11:34:39 448
原创 集群、分布式、负载均衡区别与联系
1、Linux集群主要分成三大类( 高可用集群, 负载均衡集群,科学计算集群)集群是一个统称,他分为好几种,如高性能科学群集、负载均衡群集、高可用性群集等。 科学群集 、高性能集群(High performance cluster,HPC)它是利用一个集群中的多台机器共同完成同一件任务,使得完成任务的速度和可靠性都远远高于单机运行的效果。弥补了单机性能上的不足。该集群在天气预报、环境监
2017-01-09 20:43:47 651
原创 详解PHP处理密码的几种方式
在 PHP中,经常会对用户身份进行认证。本文意在讨论对密码的处理,也就是对密码的加密处理。MD5相信很多PHP开发者在最先接触PHP的时候,处理密码的首选加密函数可能就是MD5了,我当时就是这样的:$password = md5($_POST["password"]);上面这段代码是不是很熟悉?然而MD5的加密方式目前已经不太安全了,因为它的加密算法实在是显得有点简单了,而且很多破
2017-01-09 19:32:22 652
原创 PHP实现支付宝即时到账功能
首先需要下载即时到账交易接口,传送门https://doc.open.alipay.com/doc2/detail?treeId=62&articleId=103566&docType=1选择(create_direct_pay_by_user)然后解压,选择MD5签名版本的文件此文件夹里有个叫create_direct_pay_by_user-PHP-UTF-8的文件,我们就用这个文
2017-01-09 19:14:24 2911
原创 浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
Sphinx是一个基于SQL的全文检索引擎;普遍使用于很多网站Sphinx的特性如下:a) 高速的建立索引(在当代CPU上,峰值性能可达到10 MB/秒);b) 高性能的搜索(在2 – 4GB 的文本数据上,平均每次检索响应时间小于0.1秒);c) 可处理海量数据(目前已知可以处理超过100 GB的文本数据, 在单一CPU的系统上可处理100 M 文档);Sphinx本身
2017-01-09 19:10:52 637
原创 使PHP即时输出结果到浏览器
PHP: for ( $i =0 ; $i 10; $i ++ ) { echo $i; sleep (1 ) ; }?> 类似上面的程序如果在PHP解释器中执行,每秒会输出一个数,和想象中一样。但是如果使用浏览器来访问,情况就有所
2017-01-09 18:55:51 1069
原创 memcache的介绍与应用场景
Memcached是一个高性能的分布式的内存对象缓存系统,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。MemCache的工作流程如下:先检查客户端的请求数据是否在memcac
2017-01-09 18:47:15 449
原创 SQL资料总结
Insert Into 数据表名称(字段名称1,字段名称2,...) values(字段值1,字段值2,...)insert into user(username,password,age)values('李老四','6666',45)Update 数据表名称 Set 字段名称=字段值,字段名称=字段值,...[Where 条件]Delete From 数据表下列查询返回在LOND
2017-01-09 17:01:34 496
原创 十五个常用Linux命令行总汇
众多Linux管理员在使用Linux的时候会经常使用到很多Linux命令行,其中有绝大部分不是经常使用到的。在本文中主要为大家总结了经常使用的十五个最常用Linux命令行,希望对刚刚接触Linux命令行的使用者有所帮助。1. 最常用的命令列表下面列出十个在使用linux过程中使用频率最高的命令。这里只作简单介绍,具体用法请参考后面内容。cat,显示文件内容。cd,改变目录路径。cp
2017-01-09 16:49:30 418
原创 在命令行下运行PHP脚本[带参数]的方法
通常PHP都做http方式请求了,可以使用GET or POST方式接收参数,有些时候需要在shell命令下把PHP当作脚本执行,比如定时任务。这就涉及到在shell命令下如何给php传参的问题,通常有三种方式传参。一、使用$argv or $argc参数接收php/** * 使用 $argc $argv 接受参数 */ echo "接收到{$argc}个参数";pri
2017-01-09 16:45:21 1215
原创 SQL注入漏洞产生的原因 ? 如何防止?
SQL注入产生的原因:程序开发过程中不注意规范书写sql语句和对特殊字符进行过滤,导致客户端可以通过全局变量POST和GET提交一些sql语句正常执行。 防止SQL注入:1、开启配置文件中的magic_quotes_gpc和magic_quotes_runtime设置2、执行sql语句时使用addslashes进行sql语句转换3、Sql语句书写尽量不要省略小引号和单引号4
2017-01-09 16:40:43 2001
原创 表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
------------------------------------------select (case when a>b then a else b end ),(case when b>c then b esle c end)from table_name[sql] view plain copy drop table table1 cre
2017-01-09 16:37:48 1615
原创 字符串“open_door” 转换成 “OpenDoor”、”make_by_id” 转换成 ”MakeById”。
$a="open_door"; $b=Str_replace('open_door','open door',$a);//字符串替换函数将"_"替换成" ",使一个单词变成两个单词 $name=Ucwords("$b"); //将每个单词首字母换成大写 $success=str_replace(' ', '',"$name"); //
2017-01-09 16:34:30 5953
原创 java课程设计例子 Java如何获取文件编码格式
1:简单判断是UTF-8或不是UTF-8,因为一般除了UTF-8之外就是GBK,所以就设置默认为GBK。 按照给定的字符集存储文件时,在文件的最开头的三个字节中就有可能存储着编码信息,所以,基本的原理就是只要读出文件前三个字节,判定这些字节的值,就可以得知其编码的格式。其实,如果项目运行的平台就是中文操作系统,如果这些文本文件在项目内产生,即开发人员可以控制文本的编码格式,只要判定两种
2017-01-09 16:28:23 622
原创 封装ThinkPHP的一个文件上传方法实例
这阵子,对WBlog的上传功能作了优化。改进后的上传功能可以实现缩略图上传,图片上传,生成水印,文件上传,并且可以在后台对上传的附件进行大小(文件大小),类型(文件类型),水印(针对图片)的进行设置。此外还可以对上传的文件进行分类保存到相应的文件夹里,方便管理。下面是对改进后的上传功能作简约的说明。缩略图上传先前的缩略图上传功能使用了KindEditor的上传组件,除非上传之前对图片进
2017-01-09 16:23:45 405
原创 常见的web安全攻击手段及解决办法
(1).跨站脚本攻击(XSS)。 常见解决办法:确保输出到HTML页面的数据以HTML的方式被转义(2).跨站请求伪造攻击(CSRF)。 采用POST请求,增加攻击的难度.对请求进行认证,确保该请求确实是用户本人填写表单并提交的(3).Cookie攻击。 在cookie上打上HttpOnly的标记(4).重定向攻击。 解决方案是白名单,将合法的要重定
2017-01-09 16:15:04 415
原创 面向对象和面向过程的区别以及优缺点
面向过程 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。 缺点:没有面向对象易维护、易复用、易扩展 面向对象 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护
2017-01-09 16:12:08 692
原创 两台服务器之间拷贝文件-scp方法
两台服务器之间拷贝文件-scp方法 使用实例:sup -r /mnt/yilinli_api root@***.**.**.**:/mnt/LL_api11不同的Linux之间copy文件通常有4种方法1.ftp 2.samba服务 3.sftp 4.scp以上前三种方法,都比较繁琐,这里不赘述。最简单的方法就是scp,可以理解为ssh管道下的cp命令。把当
2017-01-09 16:09:16 412
原创 登录安全性 一天内连续输入密码错误3次,第二天才能登录(过了当天凌晨24点),实现原理
[php] view plain copy 登录安全性 一天内连续输入密码错误3次,第二天才能登录(过了当天凌晨24点) 下面我们先在数据库中建立一个试验表,id,用户名username,密码pwd,次数num,时间time(date); 这个功能主要在数据库中分3中情况判断 1:解锁时间到了,清除数据库以前的记录数,次数值还原0 2:在解锁时间内,但是
2017-01-07 11:04:17 4779
原创 PHP的垃圾回收机制
最近由于使用php编写了一个脚本,模拟实现了一个守护进程,因此需要深入理解php中的垃圾回收机制。本文参考了PHP手册。在理解PHP垃圾回收机制(GC)之前,先了解一下变量的存储。php中变量存在于一个zval的变量容器中。结构如下:is_ref类型refcount值zval中,除了存储变量
2017-01-05 21:18:01 363
原创 Mysql 高级部分
Mysql 高级部分 (1)索引(index).....................................................................1(2)..........................................................................视图(view)2(3)触发器(tr
2016-12-27 15:04:06 2898 1
原创 访问流程
当你在浏览器敲下一行网址:http://www.xxx.com/index.php,回车的时候,发生了什么? 1.键盘产生了一个电平信号,产生一个 CPU 中断 2.CPU 执行 OS 提供的键盘驱动程序读取键盘输入的字符 3
2016-12-27 15:00:33 400
原创 php中mysql一条sql语句查询出所有符合条件的数据,该怎么写?
假如一个表里有个classid字段是类别的id,我想用一条sql语句查出classid=5的所有数据的id该怎么查呢?正常是要循环,放到数组里的吧如图,我想查询classid=2的对应所有id,用一条sql语句不知道你的a,b两表有没有关联,假定没有关联select count(1)from (select idfrom a where id>5union alls
2016-11-21 21:12:46 7279
原创 php查询到多条数据结果后,将每一条结果放入数组
PHP查询到的数据存放到数组里面,一般使用$arr[]=$row的方式实现,$row是mysql_fetch_array获得的一行数据,本身是一个数组,执行上面的语句之后,这一行会添加存放在额为数组$arr的最后。 典型的例子代码是这样的:mysql_connect('127.0.0.1', 'root', '123456');
2016-11-21 21:07:01 10921
转载 Yii2.0源码分析之——控制器文件分析(Controller.php)创建动作、执行动作
先说一下Yii中的控制器是做什么用的,以及在什么地方使用.在Yii中,当请求一个Url的时候,首先在application中获取request信息,然后由request通过urlManager解析出route,再在Module中根据route来创建controller并处理request。如:http://www.yiifans.com/index.php?r=site/login。会
2016-11-18 16:48:18 863
转载 Yii框架源码分析之文件结构、程序结构及配置
入口文件index.php流程//用于调试的配置常量:define('YII_DEBUG',true); //启用调试,默认为falsedefine('YII_TRACE_LEVEL',3); //出错时错误信息显示的调用堆栈深度,默认为0//以上选项必须在require yii.php之前定义//加载Yii框架启动文件requi
2016-11-18 16:42:30 849
原创 PHP用单例模式实现一个数据库类
使用单例模式的出发点: 1、php的应用主要在于数据库应用, 所以一个应用中会存在大量的数据库操作, 使用单例模式, 则可以避免大量的new 操作消耗的资源。 2、如果系统中需要有一个类来全局控制某些配置信息, 那么使用单例模式可以很方便的实现. 这个可以参看ZF的FrontController部分。 3、在一次页面请求中, 便于进行调试, 因为所有的代码(例如数据库操作类d
2016-11-11 11:48:10 396
原创 PHP设计模式之:单例模式
单例模式(职责模式):简单的说,一个对象(在学习设计模式之前,需要比较了解面向对象思想)只负责一个特定的任务;单例类:1、构造函数需要标记为private(访问控制:防止外部代码使用new操作符创建对象),单例类不能在其他类中实例化,只能被其自身实例化;2、拥有一个保存类的实例的静态成员变量3、拥有一个访问这个实例的公共的静态方法(常用getInstance()方法进行实例化单
2016-11-10 15:44:22 271
原创 redis数据类型和应用场景
Redis是什么?两句话可以做下概括:1. 是一个完全开源免费的key-value内存数据库 2. 通常被认为是一个数据结构服务器,主要是因为其有着丰富的数据结构strings、map、 list、sets、 sorted sets redis 五种数据类型:string,hash(哈希类型),list(链表结构),set(无序集合)及zset(sorted set --有序
2016-11-10 13:46:24 375
原创 【php】mysql全局ID生成方案
生产系统随着业务增长总会经历一个业务量由小变大的过程,可扩展性是考量数据库系统高可用性的一个重要指标;在单表/数据库数据量过大,更新量不断飙涨时,MySQL DBA往往会对业务系统提出sharding的方案。既然要sharding,那么不可避免的要讨论到sharding key问题,在有些业务系统中,必须保证sharding key全局唯一,比如存放商品的数据库等,那么如何生成全局唯一的ID呢,下
2016-11-10 10:59:01 414
原创 分布式存储中,生成全局唯一ID的几种方案
1.自定义生成规则 eg: 3位服务器编码+15位年月日时分秒毫秒+3位表编码+4位随机码 (这样就完全单机完成编码任务)---共25位 3位服务器编码+15位年月日时分秒毫秒+3位表编码+4流水码 (这样流水码就需要结合数据库和缓存)---共25位2.单独开一个数据库,获取全局唯一的自增序列或个表的MaxId eg: Flickr
2016-11-10 09:53:55 2474
原创 如何实现字符串翻转?
strrev函数对英文很好用,直接可以实现字符串翻转,但是面对中文呢?肯定都是乱码,对于这样的问题有很多,比如strstr,substr等函数都是这样的。还好PHP提供了mb_类的函数实现不同编码、不同语言之间的相互转换等操作。下面是我写的PHP字符串翻转函数(mb_类的函数需要开启一个mb_string实现)。 function getRev($str,$encod
2016-11-09 20:37:59 740
原创 面试题之字符串反转
要求,如下:首先做了一个提交表单页面,form.PHP代码如下: header('content-type:text/html;charset=utf8 '); ?>
2016-11-09 20:27:51 470
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人