9 苍穹0113

奇虎360 - 高级软件工程师

我要认证

奇虎360服务器端资深开发,曾担任中国体育直播TV网站开发组长,网信集团先锋支付架构师,负责系统分布式架构设计,项目框架的搭建以及数据库的优化,企业类库的搭建与维护以及制定技术解决方案。擅长Golang、PHP、面向对象设计模式、Redis、Mysql、微服务等

等级
TA的排名 1w+

数据结构

1. 数据结构提到算法不能不提数据结构,数据结构就是数据元素按照一种或多种关系的集合,按照逻辑结构划分,可以分为:1.1 集合集合是由一堆无序的、相关联的,且不重复的数据元素组成的集合。1.2 线性结构线性结构是数据元素之间存在“一对一”关系的线性关系的集合。1.3 树树是数据元素之间存在”一对多“关系的集合。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qk5EYuPI-1597892231495)(https://404.360try

2020-08-20 11:00:56

db封装

db封装以下Connection类封装支持以下几个特性1.参数绑定防止sql注入2.读写分离3.多主多从,多节点负载均衡4.故障自动摘除及自动恢复代码实现<?phpclass Connection{ /** * @var array * @datetime 2020/7/5 10:20 AM * @author roach * @email jhq0113@163.com */ public $master

2020-08-19 10:25:32

pdo-mysql

pdo-mysqlPHP连接数据库推荐使用PDO,PDO扩展为PHP访问数据库定义了一个轻量级接口。我们可以通过实现PDO接口的每个数据库驱动来访问数据库服务。访问mysql数据库服务,我们使用PDO_MYSQL驱动1.PDO实现CRUD在192.168.1.13:3306的mysql实例上创建数据库roach,创建roach用户并授权,在roach库中创建表t_user,sql如下CREATE TABLE `t_user` ( `id` int(10) unsigned NOT

2020-08-17 11:10:47

模板模式

模板模式模板模式准备一个抽象类,将部分逻辑以具体方法以及具体构造形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。先制定一个顶级逻辑框架,而将逻辑的细节留给具体的子类去实现。讲到模板模式,我不得不提的就是我们著名的PSR-3规范,PSR-3为我们提供了模板的接口<?phpnamespace Psr\Log;/** * Describes a logger instance. * * The me

2020-08-13 18:37:25

观察者模式

观察者模式观察者模式又称发布订阅模式,我们常用的redis、rabbitmq和kafka等都支持发布订阅,那么这个模式是怎么回事儿呢?观察者模式主要有通知者和观察者等角色,观察者一般有多个。我们看下面代码示例<?php/** * Class Controller * @datetime 2020/7/17 6:46 PM * @author roach * @email jhq0113@163.com */class Controller{ /**

2020-08-10 10:28:40

策略模式

策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化,即封装变化的算法。策略模式的本质是将算法封装起来。下面看一个常见的代码<?php/** * @param string $driver * @param string $msg * @datetime 2020/7/17 5:42 PM * @author roach * @email jhq0113@163.com */function log($dr.

2020-08-07 18:20:10

简单工厂

简单工厂简单工厂让对象的调用者和对象创建过程分离,当对象调用者需要对象时,直接向工厂请求即可。从而避免了对象的调用者与对象的实现类以硬编码方式耦合,以提高系统的可维护性、可扩展性。<?php/** * Class IPay * @datetime 2020/7/15 8:29 下午 * @author roach * @email jhq0113@163.com */abstract class IPay{ /**创建订单号 * @param int

2020-08-06 11:23:12

单例

单例模式每一种设计模式都是为了解决特定的问题,单例模式从名字就可以看出,是软件系统中只需要一个对象时使用。如果一个类在系统中只能有一个实例,可以通过如下代码实现<?php/** * Class Singleton * @datetime 2020/7/12 10:08 PM * @author roach * @email jhq0113@163.com */class Singleton{ /** * @var Singleton * @da

2020-08-02 17:30:38

设计模式

1.什么是模式设计模式是对某些典型易变问题的特定解决方案,这些问题和解决方案经过分类总结,并且为了方便交流给每个解决方案都起了特定的名字。模式是为了解决变化的问题,将变化的问题进行封装,让变化单独变化而互不影响,以达到项目系统的扩展性,模式是一种更高层次的代码复用。设想一下,假如我们的项目是一次性项目,一旦发布,以后再也不会修改,那么我们完全没有必要使用设计模式,反而使用了设计模式会增加系统的复杂度,但是一次性的项目在我们实际工作环境中是极少的,如果实际工作环境中都是一次项目,那个时候我们开

2020-08-01 09:55:56

seaslog

seaslog是一个第三方提供的高性能日志扩展,是性能最好的PHP日志框架之一,其代码库地址https://github.com/SeasX/SeasLog1.安装下载安装包时注意版本兼容性,即seaslog版本与PHP版本的兼容性,在seaslog的release日志里会有PHP版本的支持说明。预编译与安装,安装方式和其他扩展一样,不清楚可以参考http://404.360tryst.com/views/7.html#layout./configure --with-php-co.

2020-07-31 18:36:24

openssl

openssl是一个加解密相关的库,这个库在计算机领域得到了广泛的应用。1.操作系统中安装openssl安装openssl扩展之前,你的操作系统需要先安装openssl,centos操作系统安装方式yum install openssl openssl-devel执行一下命令,如果可以输出版本信息表示安装成功openssl version -a作者环境输出OpenSSL 1.0.2k-fips 26 Jan 2017built on: reproducible buil.

2020-07-30 16:53:39

bcmath

bcmath对于任意精度的数学,bcmath提供了支持用字符串表示的任意大小和精度的数字的二进制计算,最多为2147483647-1在编译PHP时加上参数--enable-bcmath即可启用改扩展,也可以在编译安装完成后,通过phpize方式安装,源码目录位于PHP的源码目录中的ext目录。phpize安装方式可以参考http://404.360tryst.com/views/7.html#layout1.浮点型计算问题也许有人会说,PHP不是提供了数学运算的符号,比如说+,-,*

2020-07-29 17:59:12

密码散列算法

密码散列算法是password扩展,他是PHP核心的一部分,不需要单独安装这个库是专门对密码做hash运算与校验的。大家都知道,用户注册设置的密码需要存储在数据库,很多老项目都是把密码就行md5运算然后存储到数据库表中,但是由于现在计算机硬件性能提升,md5算法已经不再安全,那么应该用什么算法呢?对密码进行hash运算并校验<?php//对密码进行hash运算,算法采用PASSWORD_BCRYPT$hash = password_hash('jhq2312.

2020-07-28 11:54:11

hash扩展

hash扩展是PHP核心的一部分,使用hash扩展中的函数不需要安装扩展hash是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值,PHP的hash扩展提供一些hash算法hash算法一般是非可逆的,常用作数据签名1.查看自己的PHP环境支持的hash算法<?php/** * Created by PhpStorm. * User: Jiang Haiqiang * Date: 2020/7/7 * Time: 10:53 PM */$algoLi.

2020-07-27 15:28:00

php扩展

php扩展1.安装PHP生产环境PHP都是运行在Linux操作系统中,如:Centos操作系统,在Centos操作系统中安装PHP需要经过预编译、编译和安装等阶段。安装步骤如下:1.从PHP官方网站下载某个版本的PHP源码包,如:7.2.31PHP官网地址:https://www.php.net/2.创建php-fpm运行用户组与用户 # 创建www用户组 groupadd www #创建www用户,且www用户不能登录 useradd www -g w

2020-07-26 19:05:09

composer

composercomposer是PHP依赖管理工具,composer集成了PSR-4规范的类自动加载,composer官网地址:https://www.phpcomposer.com/composer包托管在https://packagist.org/,当我们需要检索某项功能的依赖包时可以到这里自行检索,目前这里包含了很多著名的依赖框架和库,如:phpunit、guzzle、elasticsearch、phpoffice等。1.composer的安装下载前请确保您的电脑能够成功连接互联

2020-07-25 11:06:42

异常与错误处理

异常与错误处理PHP的异常与错误是分开的,当程序出现异常时会throw一个\Exception(或子类)对象,但是当出现错误时会触发一个错误。1. 异常处理1.1 通过try...catch主动处理异常<?php/** * Class UserNotExistsException * @datetime 2020/7/2 5:11 下午 * @author roach * @email jhq0113@163.com */class UserNotExistsExc

2020-07-24 14:43:40

反射

反射反射是一种动态获取类成员属性和成员方法,并且可以动态创建对象进行调用的一种技术。Java语言有一个特别著名的框架叫Spring,几乎任何Java程序员对这个框架非常熟悉,这个框架早期最核心的思想就是DI(依赖注入),底层的技术实现核心就是依赖反射技术。PHP本身其实不通过反射也能动态创建对象,通过new关键字就可以创建对象,如下例程:<?phpnamespace popo;class User{ /** * @var string * @da

2020-07-23 12:21:03

自动加载

类自动加载在编写面向对象程序时,每个类新建一个PHP文件,这会带来一个烦恼:每个脚本的开头,都需要require一个长长的列表。这就需要一种自动加载机制。所谓类自动加载就是当我们想使用某个命名空间下的某个类时,直接use某个类,然后在使用这个类时自动按照某个规则将文件require,不用自己显示的require相应的代码文件。我们在使用一些开源框架时,一般都引入了类自动加载。在PHP早期版本中通过__autoload()函数完成自动加载,在PHP5以后,官方推荐使用spl_autoload_

2020-07-20 13:06:16

面向对象

面向对象不管你是商城、直播或者其他任何类型的项目,都需要面向对象编程。面向对象来源于生活,同时解决的也是生活中的问题,面向对象模拟真实生活中解决问题的方式来解决问题,比如,当我们生病需要就医时,我们会到某个医院或者诊所去看医生,医生就是个类,某个科室的某××医生就是我们new出来的对象。生活中类似的例子还有很多,就不再一一列举。关于面向对象编程,是一个非常能够考察一个开发人员编码功底的技术点。刚走出校园的应届毕业生、做过2年左右的业务开发和具有5年以上底层框架开发经验的三个人对面向对象的理解是完全

2020-07-18 14:56:28

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。