自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(142)

转载 php 判断是否有环存在

php判断单链表是否有环和相交前言前面几个文章讲了单链表和快慢指针的用法, 这里再延伸一下快慢指针的用法本文讲解三个例子:给定一个单链表,判断是否有环(链表后部分存在循环,或者就是一个循环链表) 如果有环,找到环的入口 判断两个单链表是否相交1.判断单链表是否有环如果一个链表存在循环, 则代表该链表有环,其中,可能是部分循环, 也可能是首尾相接的循环链表, 如下图在后面形成环的单链表首尾相接的循环单链表解析这里我们还需要用到快慢指针, 快慢指针同时从链表头出发

2020-10-27 16:43:11 5

原创 sqlyog 导入csv表格数据

表格中的数据如图我们要把这些数据导入到mysql数据库中数据库中存入两个字段 一个是 编号 一个是车牌号首先在 excel中对表格重排一下, 得到如下图然后 另存为csv文件在sqlyog中建立相对应的表, 导入数据 ,可以会报出下错误The used command is not allowed with this MySQL version同时导入的时候把csv文件转成utf8编码,就可以了...

2020-10-17 15:59:20 10

原创 mysql创建一个新的用户,并为其指定管理的数据库

1.远程登录mysqlmysql -h ip -u root -p 密码2.创建用户格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by “密码”;例1:增加一个test1用户,密码为123456,可以在任何主机上登录,并对所有数据库有查询,增加,修改和删除的功能。需要在mysql的root用户下进行mysql>grant select,insert,update,delete on *.* to test1@”%” identified by “12

2020-09-16 18:20:48 45

原创 composer 创建一个自已的项目

当我们想创建一个自已的php项目时, 我们可以选择使用composer , 它可以轻松的帮你实现自动加载的功能并且可以很方便的集成 其它的好用的 插件首选使用 composer init 之后,可以填, 也可以一路回车 , 完成之后 文件夹中就会多一个 composer.json 文件没有 我们熟悉的 vendor 目录下一步 composer install 此时 vendor目录就出现了 在其内部还有一个 composer目录 和一个 autoload....

2020-09-10 19:49:42 33

原创 进程中的僵尸进程和孤儿进程

笔记,只是个人理解 欢迎指正僵尸进程是指 子进程运行结束 但是主进程没有 wait() ,对其进行回收 , 那么这个进程就是变成僵尸进程, 因为没有回收,所以系统还认为其进程号是被占用的(而进程号数量是有限的) 一些相关的资源也不会释放, 所以大量的僵尸进程会使系统越来越慢孤儿进程 是指子进程还在运行时 父进程已经结束了, 这时的子进程会被系统的 0号进程收养, 这种孤儿进程 是有父进程管理的, 不会影响系统我们在使用tp框架的 队列功能的时候 , 就可以把队列的进程变成一个孤儿进...

2020-09-05 15:26:00 22

原创 Redis的事务功能详解

Redis的事务功能详解MULTI、EXEC、DISCARD和WATCH命令是Redis事务功能的基础。Redis事务允许在一次单独的步骤中执行一组命令,并且可以保证如下两个重要事项:>Redis会将一个事务中的所有命令序列化,然后按顺序执行。Redis不可能在一个Redis事务的执行过程中插入执行另一个客户端发出的请求。这样便能保证Redis将这些命令作为一个单独的隔离操作执行。 > 在一个Redis事务中,Redis要么执行其中的所有命令,要么什么都不执行。因此,Redis事务能够保

2020-08-11 11:28:26 29

原创 uniapp中弹出层组件的使用

我们在使用uniapp开发的时候,有时可以使用uniapp自有的样式模板,这样可以提高开发效率下面我来说的一uniapp中的弹出层组件,这个组件可以用在一些消息提示,confirm 等情况,自已自定义开发,界面可以自已写,不像uni.showToast 等,界面不能更改,首先我们在创建uniapp项目时,生成一套官方含有 ui的一个项目,之后在可以看到,uni-popup 还在引入 uniTransition 所以一起把 uni-popup 和 uni-transition 两个组件都复..

2020-08-08 13:34:44 805

原创 uniapp中 安卓头部使用 iconfont 是报错

在使用uni-app时,使用 style app-plus buttons 时是可以使用iconfont的,文档没有说 fontSrc 的写法,今天试了一下 ,fontSrc是要写绝对路径的。不然会报错 "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages { "path": "pages/index/index", "style":{ "app-plus":{ ..

2020-08-05 11:01:05 57

原创 uniapp中template标签和block标签的区别

uniapp中 是支付template标签和 block标签的, (个人感觉好像是 vue 中使用的 template标签 小程序中使用的是 block 标签)uniapp把这两个标签都整合了看了一下文档, uniapp 的建义用法是 block 用于 循环数据的情况 template用于 条件选择的情况...

2020-07-30 16:21:00 476

原创 fastadmin操作中添加自定义按钮,点击弹出表格

在实际开发的业务中,做一个问答的功能系统,数据库中有一个 ask 表,同样有一个answer表,ask和answer 表中以ask_id 做为关联的键,但是,后台的fastadmin 怎么做到在 ask列表的操作中添加一个按钮,点击后弹出框显示 answer表中的列表呢,下面说一下具体的做法,首先,我的利用命令行工具生成 基础的 ask 和 answer 的后以操作然后,在ask的相对应的js中,操作中添加一个弹出对话框按钮,(可以参考 一张图解析FastAdmin中的表格列表的功能)说的订..

2020-07-29 11:08:33 881 1

原创 阿里云的短信服务php接入笔记

公司要做用户手机号注册,所以要接入短信发送服务,刚开始接的是快递100的,都接好了,后来又说用阿里云的,怎么办,拿工资办事,领导们高兴就好下面记录一下阿里云的短信平台的接入步骤,真的是很烦,东一下的西一下,但都搞好了,接入的时候是真的方使,ctrlC+ctrlV就可以了1.登录阿里云的控制台,找到短信服务根据需要,在其中选择国内消息 , 之后 在签名管理中 -> 添加签名 有模板管理中->添加要用的模板2.为短信服务创建一个用户,这个并为这个用户配置权限,让其可以调...

2020-07-18 09:59:05 89

原创 laragon 更换php的版本

我使用过的php的集成环境有 phpstudy wamp 还有现在使用的laragon,总的感觉 laragon还是比较好用的laragon的下载安装就不说了,下载了安装包之后就下一步,下一步就好了,担有时 laragon自带的php 版本不能满足我们的需求,比如上面的 php 7.1版本的,我现在想用php 7.4 版本的,下面就说明一下更换的方法在php的下载网址下载php https://www.php.net/downloads.php看下图从php7.2 以后,都...

2020-07-07 15:59:14 129

原创 tp5 的队列使用注意事项

我们在使用tp5的队列的时候发现,队列中的代码,如果使用的 config(XXX)来获取配置参数时,全部返回的是 NULL出现这个问题的原因在于,队列使用了 php-cli的模式,所以它不会找到配置的参数,同样的,如果使用的 common.php中的自定义函数,也会报错,报不到这个函数解决的办法有很多,一个就是把所要用到的配置和函数在 job 的类中重新定义一遍,也就是写死在里面,这种方法当然很low另一种解决方法是,在job的处理函数中,重新引入配置和函数,如下图<?phpn

2020-06-14 17:41:01 519

原创 微信免密支付时,用户解除签约时的数据结构

小程序,用户签约了免密支付是可以解约的,解约是双方的,也就是说用户端可以解约,商户端也可以解约,商户端的解约,文档上写的很清楚了,只是用户端解约,连个说明文档都没有,这里着重说一下用户端的解约首先,要在微信的商户的后台配置解约的请求地址,也就是用户解约的时候,微信会对这个设置好的地址发送一个 post post post的请求,并且有相关的数据,没有文档,数据格是什么样的呢,我也是一脸懵,那你接收后打印出来自己看算了,<xml> <change_type>DE.

2020-06-09 16:44:47 153

原创 centos7下安装msyql

很久没有安装过mysql了,今天来安装一下虚机已备好,进入centos系统1. 检查本机是否已安装了mysql2 到mysql的官网去下载文件,如图3,下载到主机,使用wget 命令安装时候才发现有依赖的问题,直接说结果了要下载的有4个文件rpm 包,并且它们是有安装顺序的,按以上的顺序安装a.mysql-community-common-5.7.26-1.el7.x86_64.rpmb. mysql-community-libs-5.7.26-1.el...

2020-06-07 17:17:48 95

原创 小程序申请免密支付的开发

公司在与公交系统合作的时候,要求开发一款乘车码的小程序,这里面理所当然的用到了,小程序的免密支付功能怎么做的呢,首先,是联系腾讯的BD ,进行咨询,他会教你该怎么注册申请,因为我们公司做的是服务商模式的,也就是说 以我们公司的微信商户号作为主商户, 以公交公司的商户号做为子商户,最终申请下来后,这四个号要分清楚的了公众帐号id appid 也就是做为主商户的我们公司申请时用的 公众帐号id子商户公众帐号id sub_appid 在这里就是公交公司的商户号所对应的...

2020-05-24 22:30:53 743 2

原创 php 的 api接口返回二维码图片的问题 base64

我们做小程序开发,或者app开发的时间,经常会返的回的数据含有二维码图片,那么我们怎么可以普通数据和二维码数据一起返回给前端呢1. 首选解决 api返回图片数据的问题 答案就是 base64 方法,我们得到一个图片数据后,对其进行 base64字符编码 php 的方法就是 base64_encode("图片数据")2.和其它数据一起使用json格数传...

2020-05-03 10:55:29 264

原创 sqlyog 连接数据库失败

sqlyog连接远程的数据库失败,主要排查三个方法一,阿里云服的esc服务器配置,安全配置配置安全组放开3306端口, 入方向,出方向二.宝塔的安全配置开放3306端口三 宝塔的数据库 权限更改为所有人四 在sqlyog中填入正确的地址用户名和密码 就ok...

2020-04-18 15:29:47 136

原创 依赖注入与控制反转的理解

依赖注入(DI)与控制反转(IOC)其本上是一种编码的设计思想,可以理解为一个东西,实现了依赖注入,也就实现了控制反转,其实,我们在编写代码的时候,自已都可以用过了,但是,我们可以不知道而已,下面我们来举个例子说明一下,比如:人开车(假设每个人都有一辆车)首先 要建一个 车类(class Car) 和 人类 (class Person)从上面的代码可以看到,Person类和Car类...

2020-03-18 14:29:30 72

原创 SqlYog连接远程数据库时出现1045错误码的解决

我们经常用 sqlyog 来连接远程的mysql服务,方便于管理但是 mysql 为了安全,是禁止使用 root 用户的远程连接的, 如果不加配置就使这root的用户连接的话,那么只有 1045的错误号给你,这里我们要怎么解决呢1.我们在远程的 linux服务器上 使用 mysql -u root -p 登录进入mysql2.在mysql的命令行下输入第一种方案 我将...

2020-03-13 21:44:24 1183

原创 apache ab工具的安装与使用

apache 服务器会有一个自带的压测工具 ab工具,那么我们可不可以单独的安装这个压测工具呢,当然可以1.安装在linux机器 centos上使用 yum -y install httpd-tools就可以安装并使用 ab 压测工具了2.找到我们安装 ab 工具的位置 which ab进入ab命令的目录就可以使用了3.可以使用 ab -help查看如何使用4...

2020-03-12 15:28:50 115

原创 vendor目录中通过 复制插件目录安装

在php中我们一般使用 composer require ****** 来自到安装插件这种方式在安装的时候会自动帮我们在文件中添加一些东西那么有时我们是从别人的 vendor目录中拷贝了一个插件,粘贴到我们的 vendor 目录中怎么办呢比如说:我们从别人的vendor目录中拷贝了一个 mews/captcha首先,把别人的 captcha目录放在我们自己的 vendor目录中...

2020-03-11 22:02:41 246

原创 linux 安装php swoole的扩展

1.下载swoole2. 使用 php -m|grep swoole 查看是否已经安装了swoole3.使用 php --ri swoole 查看 swoole 的版本4.解压下载下来的swoole的源文件(假设为 /var/download/swoole4.5)5.找到phpize 文件 (可使用 whereis phpize)得到phpize文件的位置 /usr/bin...

2020-03-08 23:37:58 90

原创 初识swoole server的笔记

swoole可以创建的服务有 tcp udp http websocket等类型它们的继承关系是Swoole\Server 类是父类 Swoole\Http\Server 类是子类 Swoole\WebSocket\Server 类是孙子类父类的常用事件有 onconnect onrec...

2020-03-08 14:24:20 77

原创 php出现数据重复写入的解决方法

在我的袋鼠玩趣城小程序项目中,用户领取优惠券的操作时,出现上数据重复记录的现象,也就是说本来只能每人领取一张的操作,个别用户领到了2张或者3张分析了原因:可能是网络状态不好的情况下,用户多次点击了领取按钮,导至类似高并发的场景解决办法:1:从前端解决,(这个方法可以缓解一部分,但我个人认为不可能杜绝)小程序的前端加上 防抖操作或者做节流操作2:从后端解决,(php 后端)...

2020-01-07 18:04:00 713

原创 python中 将sqlalchemy中查询结果转换为字典的两种方法(目的是转换成json字符串)

开始,第一个方法之前,我们要来认识一下 dict() 这个函数, 它的传入参数可以是一个对象,但前提是这个对象的内部有 keys()方法返回转成字典所包含的键的列表并且,该对象的内部实现了 __item__()方法如下图:是没有实现这两个方法的类,代码报错:当我们在类的上面实现keys()和 __getItem__()方法时,就可以了有了以上的认识,我的想法是,在...

2020-01-06 17:22:30 950

原创 git 把本地的一个已有项目放到 git仓库中去

1.在本地的已有项目目录下运行git init 初始化一个项目2.在gitee (码云 以前叫 gitoschina) 上新建一个仓库创建好后,码云的跳转页也会给出提示我们使用 git remote add origingit@gitee.com:huangcom/mystore.git为本地的仓库连接了的一个远程仓库此时把 本地仓库中的代码...

2020-01-02 14:02:26 920 1

原创 python 中字符串(str)和字节串(bytes)的理解

我们在python中经常会遇到字节串和字符串之间的相互转换首先数字符串转为字节串有以下几种方法 如果一个字符串中全部为英文(也就是说全是ascii的英文字符)我们可以直接在 字符串前面加 b 就可以了 举个栗子: a = b'I am a coder' 此时的 a 就是一个字节串 如果 使用了 ...

2019-12-30 16:38:12 323

原创 pyton wtforms自定义验证器

这里只记录一下结果我们在使用wtforms时,有的时候插件给的验证器不足以满足我们的验证需求,此时就只有自定义验证器自定义验证器的方法是 定义一个函数 名称为 validate_(fieldname) 如下图可以看到 上面的 type字段,使用了自定义的验证器,这里要说明的就是自定义验证器中,如果验证失败,不能return False,必须抛出一个 异常 比如一个flask...

2019-12-28 17:38:07 46

原创 flask 数据库迁移 flask-migrate 的使用

我们在flask项目中,会使用flask_sqlalchemy来创建数据库( db.create_all(app) ),但是这个方法只适用于本来没有这个数据库重新创建的数据库才会被执行,如果我们修改数据库的字段,或者添加一个字段,这种方法是没有用的,这时我们就需要用到flask的数据库迁移,flask-migrate使用flask-migrate1,flask_migra...

2019-12-25 13:40:34 140

原创 python flask环境搭建

1.下载安装python,现在的python版本中,安装好python后,同时也就安装好了 pip pip是什么 pip 是 python的包管理工具 就好像是 node.js的 npm , php 的 composer java 的 maven或者是gradle都是包管理工具2.使用pip安装 pipenv工具,这个工具,在使用时会给 项目中 建立一...

2019-12-25 09:44:32 38

原创 tp5事务中得到新插入数据的id

当我们新增一个订单时,一般都会增加两个表的数据,一个是订单主表,记录订单信息,一个是订单附表,记录订单的商品信息,这时就会是一对多的表数据关系,那么附表中一定要记录一个定单的唯一字段,以前都用的是 生成的订单号 来做为外键的值,然后在新增的时候开启事务,保证两个数据的同时写入。因为以上做法不会在mysql的事务中关心,新生成的订单id,我们用的是订单号。但是,现在我考虑使用订单的 id来...

2019-12-22 17:13:49 630

原创 flask-sqlalchemy使用笔记

2019-12-18 18:31:10 35

原创 python各个模块循环引用问题解决办法

当项目中的模块过多,或功能划分不够清晰时会出现循环引用的问题,如下有两个模块moduleA 和 moduleB:#moduleA from moduleB import bdef a(): print 'aaaaaaaa' b()def c(): print 'cccc'if __name__ == '__main__': a()#mod...

2019-12-17 15:57:35 70

原创 进程与线程的区别

进程与线程的区别首先:进程是progress 线程是 thread 这是外观上的区别(我呵呵了)说正题吧 一个主进程,可以在其内部新建子进程,也可以新建线程,理论上是无限多个的进程 每一个进程相当于是在内存中开辟了独立的空间,主进程全局变量相当于被浅拷贝到了子进程中,在子进程中修改全局变量,只会影响到当前进程中的使用,对其它兄弟进程,或者父进程不会受到影响...

2019-11-12 10:50:45 53

原创 移动端 1 像素边框的解决方案

把下边的css代码,复制到自己的一个 css文件中,在开发时引入就可以了(可以收藏一下,备用)@charset "utf-8";.border,.border-top,.border-right,.border-bottom,.border-left,.border-topbottom,.border-rightleft,.border-topleft,.bor...

2019-10-25 23:28:02 132

原创 小程序中使用函数节流

我们在小程序中,为人防止用户手速过快,频繁请求某个接口,一般会使用 节流 或者 防抖,两个之间的差异,我个人理解为节流 :当用户第一次点击就执行, 后面的连续的几次忽略防抖: 当用户连续点击的最后一次才执行,前面的忽略我今天在小程序中使用了一下节流,下面是使用心得拿到网上的节流代码,我们来分析function throttle(fn, interval) { var e...

2019-10-21 19:31:26 248

原创 js中传递对象的键名的方法

起因,我们在小程序中经常会设置或更改 data 中的变量 (我这里只考虑每次只修改一个变量的情况)代码是这样写的this.setData({ currentIndex:e.detail.currentIndex})基本上每个方法中都有改变变量的值这个代码要三行,看着不爽,于是我就想在 app.js中定义一个公用的函数 因为每个页面上都有 app=getApp(...

2019-10-12 16:47:11 217

原创 git取消对文件的跟踪的两种命令的差异

当我们但用git的时候,有时候发现本地的有些文件不想再进行跟踪了但是我们以前已经提交过了这个文件,怎么能让git 取消跟踪了,git 命令提供了两种解决方案,都可以达到目的,但是效果上还是有些细微差别的先说第一种假设我以前跟踪了框架文件中的 vendor 目录,但是现在我不想再跟踪它了,因这它完全可以使用 composer install来自动安装命令如下git rm ...

2019-10-10 14:02:28 105

原创 小程序上传图片裁剪工具 we-cropper的使用方法

小程序中提供了上传文件的api wx.uploadfile() 但是,当用户上传头像或其它图片时,希望经过裁剪了之后再上传,微信没有提供裁剪的功能我个可以从 github 上找到一个插件 we-cropper 还有一个插件叫image-cropper(这个有兴趣可以研究一下,本人没有用过)地址:https://github.com/we-plugin/we-cropper...

2019-10-09 21:10:51 838 3

空空如也

空空如也

空空如也
提示
确定要删除当前文章?
取消 删除