- 博客(54)
- 收藏
- 关注
原创 Win10 安装 Maven
1、下载官网地址http://maven.apache.org/download.cgi2、配置1、解压文件解压之后的文件放到安装目录,注意路径不要有中文或其他特殊字符,免得出现莫名其妙的bug。如:D:\Program Files2、配置环境变量右键 “计算机”,选择 “属性”,之后点击 “高级系统设置”,点击"环境变量",来设置环境变量,有以下系统变量需要配置新建系统变量 MAVEN_HOME,变量值D:\Program Files\apache-maven-3.6.3
2020-11-30 17:29:42
262
原创 Git 使用笔记
1、Git 回滚代码到某个 commit回退到上个版本git reset --hard HEAD^回退到前2次提交之前,以此类推,回退到n次提交之前git reset --hard HEAD~2退到/进到 指定commit的sha码git reset --hard commit_id强推到远程git push origin master --force或git push origin master -f2、重置分支切换到master分支git checkout master
2020-10-27 17:04:31
158
原创 vagrant 使用记录
执行vagrant up启动虚拟机出错Bringing machine 'homestead' up with 'virtualbox' provider...A VirtualBox machine with the name 'homestead' already exists.Please use another name or delete the machine with the ...
2020-03-29 21:16:31
396
原创 apt更新163源
直接追加echo deb http://mirrors.163.com/debian/ jessie main non-free contrib > /etc/apt/sources.list \ echo deb http://mirrors.163.com/debian/ jessie-updates main non-free contrib >> /etc/apt/s...
2020-03-29 21:11:56
469
原创 Docker中PHP安装扩展(二)
Docker中PHP容器安装扩展有两种方式通过pecl方式安装通过php 容器中自带的几个特殊命令来安装,这些特殊命令可以在Dockerfile中的RUN命令中进行使用第一种方式这里说第二种方式,也是安装redis扩展演示命令介绍docker-php-sourcedocker-php-ext-installdocker-php-ext-enabledocker-php-ex...
2020-03-29 20:57:37
689
原创 Docker中PHP安装扩展(一)
1、查看容器id并进入容器[root@bogon vagrant]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES2cdf6fe65d46 ...
2020-03-29 20:55:56
987
原创 win10 安装Java开发环境
简介Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称。由James Gosling和同事们共同研发,并在1995年正式推出。Java分为三个体系:JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版)JavaEE(J2EE)(Java 2 Platform,Ent...
2019-12-14 13:36:55
514
原创 数据结构
什么是数据结构数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。数据结构与算法密切相关,这里只介绍数据结构。定义数据结构(data structure)是带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和数据的物理结构以及它们之间的...
2019-11-24 23:28:44
256
转载 网络通信简介
网络是用物理链路将各个孤立的工作站或主机相连在一起,组成数据链路,从而达到资源共享和通信的目的。通信是人与人之间通过某种媒体进行的信息交流与传递。网络通信是通过网络将各个孤立的设备进行连接,通过信息交换实现人与人,人与计算机,计算机与计算机之间的通信。
2019-11-10 10:54:41
2479
1
原创 Win10 安装Redis服务
下载安装https://github.com/microsoftarchive/redis/releases选择一个版本下载,这里选择最新稳定版下载压缩包下载成功解压之后文件介绍redis-server.exe:服务端程序,提供redis服务,双击启动即可redis-cli.exe: 客户端程序,通过它连接redis服务并进行操作redis-check-dump.exe:本地数...
2019-11-09 14:35:51
424
原创 BitMap(三):RoaringBitmap
Roaring Bitmap的算法是将整数的32-bit的范围 ([0, n]) 划分为 2^16 个数据块(Chunk),每一个数据块对应整数的高16位,并使用一个容器(Container)来存放一个数值的低16位。 Roaring Bitmap将这些容器保存在一个动态数组中,作为一级索引。容器使用两种不同的结构: 数组容器(Array Container)和 位图容器(Bitmap Container)。数组容器存放稀疏的数据,位图容器存放稠密的数据。如果一个容器里面的整数数量小于4096,就用数组容器
2019-11-09 13:31:42
395
原创 BitMap(二):布隆过滤器(Bloom Filter)
用一个哈希算法(Hash函数)将一个集合元素映射到一个二进制位数组(位数组)中的某一位。如果该位已经被置为1,那么表示该元素已经存在。为了减少hash冲突问题,所以引用了多个哈希函数,如果通过其中的一个Hash值得出某元素不在集合中,那么该元素肯定不在集合中。只有在所有的Hash函数告诉我们该元素在集合中时,才能确定该元素存在于集合中。这便是Bloom-Filter的基本思想。
2019-11-09 13:07:53
441
原创 BitMap(一):位图算法简介
BitMap算法的核心思想是用bit数组来记录0-1两种状态,然后再将具体数据映射到这个比特数组的具体位置,这个比特位设置成0表示数据不存在,设置成1表示数据存在。适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存在或不存在的。
2019-11-08 18:46:39
853
原创 面向切面编程
AOP(Aspect-Oriented Programming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。
2019-11-08 17:28:29
125
原创 设计模式六大原则——SOLID
1、单一职责原则(Single Responsibility Principle)定义: 有且只有一个原因引起类的更变。就是说,不能有多个导致类变更的原因。使用场景: 如果一个接口业务过于庞大复杂,则可以将这个接口分离成几个小接口,每个接口负责的方法功能相近。单一职责原则要求: 类一定要做到单一职责,类的设计尽量做到只有一个原因引起变化。对于接口和方法也适用,即一个接口/方法,只负责一件事,...
2019-11-08 13:37:55
118
原创 PHP 设计模式(十一):代理模式
什么代理模式给某一个对象提供一个代 理,并由代理对象控制对原对象的引用。代理模式的英 文叫做Proxy或Surrogate,它是一种对象结构型模式角色分析:抽象主题角色(Subject):定义了RealSubject和Proxy公用接口,这样就在任何使用RealSubject的地方都可以使用Proxy。真正主题角色(RealSubject):定义了Proxy所代表的真实实体。代理对象(...
2019-11-08 10:32:02
150
原创 PHP 设计模式(九):过滤器模式
什么过滤器模式过滤器模式(Filter Pattern)或标准模式(Criteria Pattern)是一种设计模式,这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准。应用场景数据过滤或筛选PHP 代码实现<?php/** * 对象类 * Class Person */...
2019-10-23 23:16:00
188
原创 PHP 设计模式(八):外观模式
什么是外观模式外观模式(有时候也称门面模式)是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使用子系统更容易使用。角色分析:门面(FacadeCompany)角色:此角色封装一个高层接口,将客户端的请求代理给适当的子系统对象,是门面模式的核心接口。子系统(ICBC)角色:实现子系统的具体功能,处理FacadeCompany对象指派的任务...
2019-10-23 19:16:32
104
原创 PHP 设计模式(七):装饰器模式
什么是装饰器模式装饰器模式(Decorator Pattern): 允许向一个已有的对象添加新的功能或部分内容,同时又不改变其结构。属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。为什么需要装饰器模式我们要对一个已有的对象添加新功能,又不想修改它原来的结构。使用子类继承的方法去实现添加新功能,会...
2019-10-23 17:44:24
113
原创 PHP 设计模式(五):适配器模式
什么是适配器模式将一个类的接口转换成外部希望的另外一个接口,使用原本不兼容的而不能在一起工作的那些类可以在一起工作。适配器就是一个把拥有相似功能但是接口名不同的类封装成拥有同样接口名的类,这样只需要更改接口引入的类,但不需要改变类中的方法,就可以换成另一个相同功能不同类名和方法名。应用场景如数据库多种驱动的适配、缓存多种方案的适配、日志存储的适配等。跟策略模式不要混淆,这是不同的,适配器模...
2019-10-22 14:59:30
114
原创 PHP 设计模式(四):策略模式
什么是策略模式在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法:可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法;当然也可以将这些查找算法封装在一个统一的方法中,通过if…e...
2019-10-22 13:05:28
85
原创 PHP 设计模式(三):观察者模式
什么是观察者模式观察者模式,属于行为型模式。观察者模式有时也被称作发布/订阅模式,该模式用于为对象实现发布/订阅功能:一旦主体对象状态发生改变,与之关联的观察者对象会收到通知,并进行相应操作。将一个系统分割成一个一些类相互协作的类有一个不好的副作用,那就是需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,这样会给维护、扩展和重用都带来不便。观察者就是解决这类的耦合关系的。 ...
2019-10-22 10:52:28
100
原创 PHP 设计模式(二):工厂模式
什么是工厂模式工厂模式是一种类,可以理解为创建类实例的工厂,它具有创建对象的某些方法。可以使用工厂类创建对象,而不直接使用 new。这样,如果想要更改所创建的对象类型,只需更改该工厂即可。使用该工厂的所有代码会自动更改。根据抽象程度不同,php工厂模式分为:简单工厂、工厂方法和抽象工厂。区别三种工厂的区别是,抽象工厂由多条产品线,而工厂方法只有一条产品线,是抽象工厂的简化。而工厂方法和简单...
2019-10-21 16:36:01
97
原创 PHP 设计模式(一):单例模式
什么是单例模式作为对象的创建模式,单例模式确保某一个类只有一个实例,并且对外提供这个全局实例的访问入口。它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。特点需要一个保存类的唯一实例的静态成员变量;构造函数、重建函数和克隆函数必须声明为私有的,防止外部程序创建或复制实例副本;必须提供一个访问这个实例的公共静态方法,从而返回唯一实例的一个引用。简称四私一公(三个私有方法、...
2019-10-21 16:25:39
208
1
原创 PHP 对象与数组的转换
/** * 数组 转 对象 * @param array $arr 数组 * @return object */function array_to_object($arr) { if (gettype($arr) != 'array') { return; } foreach ($arr as $k => $v) { if (...
2019-10-21 15:38:49
321
原创 PHP 把图片转换成base64编码格式
图片转换成base64编码问题图片的保存和传输有些不是很方便,这是可以转成字符串。例如远程下载图片,一般是没有权限操作的。常用的有两种方案:把远程图片下载到当前服务器,再给当前服务器的图片地址前端下载,下载的是当前服务器的图片,绕过跨源问题;把远程图片转成base64编码格式,传输图片字符串给前端,前端转换成图片。这里介绍第二种方案。PHP 实现<?php/** * ...
2019-10-17 14:15:19
901
原创 PHP 生成二维码
1、composer安装phpqrcode配置首先切换composer地址回国内的,这样下载包快点查询配置,看到下面的地址是国内阿里云$ composer config -l -g[repositories.packagist.org.type] composer[repositories.packagist.org.url] https://mirrors.aliyun.com/co...
2019-10-15 13:05:49
381
原创 PHP 下载图片并压缩
下载图片并生成压缩包<?php/** * 下载图片并生成压缩包 * @param $data 图片数组,一维 * @param $tmpDir 存放路径 * @return string */public function creatZipImg($data,$tmpDir){ if (!file_exists($tmpDir)) { //创建文件夹...
2019-09-27 17:02:26
639
原创 ThinkPHP 5.0 组合多条件whereOr查询
问题多个条件or时SQL语句的拼接,例如:$where = [ 'name'=> 'aaa'];$whereOr = [ 'phone' => 12345678999, 'email' => '11@qq.com',];$this->->name('user')->field('id,name,phone,email'...
2019-09-27 15:08:35
7304
原创 PHP 利用 array_walk 往二维数组添加元素
二维数组添加元素对于一些操作需要批量处理的,比如批量操作订单,如何循环操作一个个订单,这样效率很低,这时就可以考虑批量处理,而操作则会备注都是相同的,这时可以往现有数组添加相同元素的方式组装新数组。对于某些一对多的插入操作也适用,比如生一个一个主订单,子订单需要拆单的情况,这时每个子订单都会关联刚生成的主订单ID。<?php//原数组$data = [ 0 => [...
2019-09-27 15:08:06
2918
原创 Apache 无法获取header头Authorization
解决:<IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On #开启rewriteEngine #!-d的意思是不是目录或目录不存在 RewriteCond %{REQUEST_FILENAME} !-d #!-f的意思是不是文件或文件不存在 Rewri...
2019-09-27 15:07:13
1385
原创 Apache 服务器出现:No input file specified
问题:apache 环境下访问 url 显示:No input file specified.解决:找到apache配置重写文件 .htaccess,在 RewriteRule 后面的 index.php 后面添加一个问号 “?”RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]改成RewriteRule ^(.*)$ index.php?/$1...
2019-09-27 15:06:46
157
原创 密码及其他敏感信息保存问题
此处简单介绍密码如何保存,或者说其他敏感信息如何保存的方案。不局限于密码,其他敏感信息也可以参考一下,比如用户身份证信息、用户照片等,此类信息一旦验证通过是不能直接保存原信息的,涉及到用户隐私这是不合法的,所以一般方案是验证通过之后加密保存,或者不保存,标记该用户已通过身份验证即可。如要更换信息只能重新验证,跟找回密码类似。下面以密码为例进行说明密码如何保存既然是密码,那就不能保存明文,这不用...
2019-09-10 09:21:41
2781
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人