自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 问答 (3)
  • 收藏
  • 关注

原创 PHP版本等详细信息

服务器IP地址 $_SERVER[‘SERVER_ADDR’]服务器域名 $_SERVER[‘SERVER_NAME’]服务器端口 $_SERVER[‘SERVER_PORT’]服务器版本 php_uname(‘s’).php_uname(‘r’)服务器操作系统 php_uname()PHP版本 PHP_VERSION获取PHP安装路径: DEFAULT_INCLUDE_PATH获取当前文件绝对路径: FILE获取Http请求中Host值: $_SERVER[“HTTP_HOST”]获取Z

2021-10-24 18:06:45 221

原创 thinkphp6的防注入

防注入

2021-10-24 18:04:27 1955

原创 深入理解thinkphp6的路由机制

路由映射

2021-10-24 17:55:37 1445

原创 判断是否是一维数组

if(count(data)==count(data) == count(data)==count(data,1)){echo ‘一维数组’;}else{echo ‘不是一维数组’;}

2021-10-24 16:58:31 232

原创 MySQL的语句和索引的优化方法

https://blog.csdn.net/qq_35642036/article/details/82820129① SQL语句及索引的优化SQL语句的优化:1、尽量避免使用子查询2、避免函数索引3、用IN来替换OR另外,MySQL对于IN做了相应的优化,即将IN中的常量全部存储在一个数组里面,而且这个数组是排好序的。但是如果数值较多,产生的消耗也是比较大的。再例如:select id from table_name where num in(1,2,3) 对于连续的数值,能用 between

2021-10-24 16:55:07 107

原创 mysql的explain关键字

索引优化

2021-10-24 16:53:39 507

原创 php+mysql锁实现并发处理

悲观锁,乐观锁

2021-10-24 16:53:03 175

原创 mysql事务

一、事务的基本要素(ACID)1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。2、一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。3、隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向

2021-10-24 16:52:17 57

原创 php7新特性

1.类型的声明。可以使用字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 (bool),来声明函数的参数类型与函数返回值。declare(strict_types=1);function add(int $a, int $b): int {return a+a+a+b;}echo add(1, 2);echo add(1.5, 2.6);php5是无法执行上面代码的,php7执行的时候会先输出一个3和一个报错( Argument 1 passed to ad

2021-10-24 16:51:41 50

原创 mysql数据库引擎

数据库引擎简单来说就是一个"数据库发动机"。当你访问数据库时,不管是手工访问,还是程序访问,都不是直接读写数据库文件,而是 通过数据库引擎去访问数据库文件。以关系型数据库为例,你发SQL语句给数据库引擎, 数据库引擎解释SQL语句,提取出你需要的数据返回给你。因此,对访问者来说,数据库引擎就是SQL语句的解释器。  正式来说,数据库引擎是用于 存储、处理和保护数据的核心服务。利用数据库引擎可以 控制访问权限并快速处理事务,从而满足企业内大多数需要 处理大量数据的应用程序的要求,这包括 创建用于存储数据的表

2021-10-24 16:35:52 88

原创 Python requests中的.content和.text方法的区别

requests请求获取网页内容,可以使使用.text和.content获取响应体,二者的却别在于.text 返回的是响应的内容,是根据响应头部的字符串编码进行解码的字符串。.content 返回的是字节方式的响应体,是bytes字节码,会自动解码gzip和deflate编码的响应数据。.text是现成的字符串,.content还要编码,但是.text不是所有时候显示都正常,这是就需要用.content进行手动编码。...

2021-05-13 17:45:34 1336

原创 python csv error: line contains null byte

使用python读取csv文件时,报错"line contains null byte"造成这个错误的原因是文件里包含了’\0’或则’\x00’这种字符串。可能的原因是csv文件中本身就存在这样的字符串。还有一种可能是该csv文件是从excel文件转换而来的。最简单处理方式就是重新保存成csv。另外一种解决方式是使用replace()方法去掉换行符csv_reader = csv.reader((line.replace('\0','') for line in csvfile),delimit

2021-05-13 17:45:03 1010

原创 PHP内置函数memory_get_usage()获取内存

PHP内置函数memory_get_usage()能返回当前分配给PHP脚本的内存量,单位是字节(byte)。在WEB实际开发中,这些函数非常有用,我们可以使用它来调试PHP代码性能。echo '初始内存:'.$m1 = memory_get_usage(); //初始内存echo '<br>';$var_string = '123';echo '字符串消耗内存:'.$m2 = memory_get_usage()-$m1;echo '<br>';$n = 123;e

2021-05-13 17:44:22 374

原创 laravel-admin报错Disk [admin] not configured, please add a disk config in `config/filesystems.php`.

laravel-admin报错Disk [admin] not configured, please add a disk config in config/filesystems.php.在config/filesystems.php文件中的disks项添加’admin’项'disks' => [ 'local' => [ 'driver' => 'local', 'root' => storage_path('

2021-05-13 17:43:26 304

原创 laravel-admin显示日期的时候,多了.000000Z

在使用 laravel-admin扩展显示时间格式的时候,时间后面出现了.000000Z。查询数据库中的时间是正确的,怎么也搞不懂这个.000000Z是怎么出现的。查看laravel-admin的文档,并未有对此现象的说明。那么很有可能是laravel框架本身的问题,于是查看laravel的文档说明,并未找到有此方面的说明,不过找到一个自定义日期序列化格式的方法,按照文档操作,重写serializeDate方法,问题成功解决。protected function serializeDate(\Dat

2021-05-13 17:42:27 2308 1

原创 laravel 分割多个路由文件

laravel框架将web.php拆分为多个路由文件第一种方法:使用inclue_once将创建的其他路由文件引入到web.php文件中在/routes目录下创建test.php路由文件在web.php使用include_once引入路由文件include_once ‘…/routes/test.php’;第二种方法:查找laravel框架加载web.php的方式,仿照web.php的加载凡是添加新的路由文件在/routes目录下创建test.php路由文件找到app\Providers\

2021-05-13 17:39:19 586 2

原创 python字典函数

dictdata = {‘name’:‘tony’,‘age’:28,‘gender’:‘男’}dict_len = len(dictdata)print(‘字典元素个数’,dict_len) #字典元素个数dict_str = str(dictdata) #输出字典print(‘输出字典’,dict_str)dict_type = type(dictdata) #判断变量类型print(‘变量类型:’,dict_type) dictdata = {'nam

2021-03-29 17:01:10 360

原创 python元组内置函数

tup = ('a','b','c')t_len = len(tup) #计算元组元素个数print(t_len)t_max = max(tup) #计算元组元素的最大值print(t_max)t_min = min(tup) #计算元组元素的最小值print(t_min)l = [1,2,3]tup = tuple(l) #将可迭代对象转化为元组print(tup)tup = ('a','b','c','c','d')t_c

2021-03-29 17:00:02 189

原创 python列表函数和方法

python列表函数l = ['a','b','c']l_len = len(l) #返回列表元素个数print(l_len)l_max = max(l) #返回列表中的最大值print(l_max)l_min = min(l) #返回列表中的最小值print(l_min)t = ('a','b','c','d')l_tuple = list(t) #将元组转化为列表print(l_tuple)输出结果为:3

2021-03-29 16:59:35 84

原创 python使用format格式化字符串

format()函数式增强了字符串的格式化功能,使用形式是 str.format()。format由两个部分组成,字符串模板和模板数据内容组成,通过大括号{},将模板数据内容嵌到字符串模板对应的位置。template = 'hello {}' #字符串模板world = 'world' #模板数据内容result = template.format(world)print(result)输出结果:hello world需要格式化多个内容时,可以指定顺序

2021-03-25 17:57:31 321

原创 Python中raw字符串与多行字符串

python中的raw字符串主要是用来批量转义。在python变量中,如果一个字符串包含很多需要转义的字符,对每一个字符都进行转义会很麻烦。为了避免这种情况,我们可以在字符串前面加个前缀r,表示这是一个 raw 字符串,字符串里需要转义的字符就不需要一个一个转义了单独转义字符串print('this is \\n and \\t')使用raw转义字符串print(r'this is \n and \t')两句代码运行的结果完全相同this is \n and \t但是raw字符串表示法不

2021-03-25 17:56:55 163

原创 python短路运算

Python解释器在做布尔运算时,只要能提前确定计算结果,就不会继续往后算了,直接返回结果。在计算a and b时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。b = 'world'a = ''print('hello,', a and b)a = 'python'print('hello,', a and b)运行结果为hello,hello, world在计算a or b

2021-03-25 17:56:13 778

原创 v-if和v-show的区别

v-if和v-show区别v-if通过控制dom节点是否存在来控制元素的显示和隐藏。既如果显示元素,则编译元素,元素在源代码中显示;如果不显示元素,则不编译元素,元素在源代码中也不会显示v-show通过控制dom节点的display属性来控制元素的显示和隐藏。既如果显示元素,display的属性值为block,如果隐藏元素,display的属性值是none...

2021-03-23 16:16:31 50

原创 composer查看源,修改源

1,查看源composer config -g -l2,修改源:配置只在当前项目生效composer config repo.packagist composer https://mirrors.aliyun.com/composer/取消当前项目配置composer config --unset repos.packagist3,修改源:配置全局生效composer config -g repo.packagist composer https://mirrors.aliyun.com/com

2021-03-23 16:16:01 2683

原创 laravel分多个路由文件

laravel框架将web.php拆分为多个路由文件这里介绍两种方法第一种方法:在/routes目录下创建demo.php路由文件在web.php添加include_once ‘…/routes/demo.php’;引入新创建的文件第二种方法思路:查找web.php在laravel框架下是怎么加载的,仿照web.php的加载方式添加新增的路由文件在/routes目录下创建demo.php路由文件在app\Providers\RouteServiceProvider.php文件boot()方法

2021-03-23 16:15:02 659

原创 nginx配置文件详解

我的系统环境是centos8.2,nginx版本是1.18.0。yum方式安装的nginxnginx配置文件/etc/nginx/nginx.conf#启动nginx工作进程的用户和组user nginx;#启动的工作进程数worker_processes 1;#将nginx工作进程绑定到指定的CPU核心,默认nginx不进行进程绑定#worker_cpu_affinity 0001 0010 0100 1000#nginx错误日志配置#warn表示错误级别,除了warn还设有deb

2021-03-23 16:14:21 183 1

原创 nginx代理实现不同的端口号访问不同的项目

server{listen 80;server_name localhost;root /var/www/html/test/;location /{index index.htm index.html index.php;}}server{listen 81;server_name localhost;root /var/www/html/test1/;location / {index index.htm index.html index.php;}}开通端口号:fire

2021-03-23 16:13:38 756

原创 Uncaught TypeError: form.attr is not a function 解决办法

首先说结论:form是个js对象,不是jQuery对象,不能用jquery对象的方法。一开始以为是form没定义,找了半天也解决不了。最后看chrome的sources栏,form不是undefind的样子。主要是因为,这里传入的form是js对象,而form.attr()的用法是jquery的方法。报错日志路径中也是提示了是jQuery的错误。所以把ajax里的form改为$(form),由js对象改为jQuery对象,方法就能正常使用了...

2021-03-23 16:09:44 699

原创 python json序列化和反序列化

def jsondumps():result = {}data = {‘num’:1002,‘name’:‘xiao zhi’}json_str = json.dumps(data) #json序列化result[‘json_dumps’] = json_strjson_loads = json.loads(json_str)result[‘json_loads’] = json_loadsreturn result

2021-03-08 18:04:16 117

原创 python使用pickle序列化和反序列化

def pickeldumps():#使用dumps序列化,然后将序列化的文件存入文件filepath = ‘G:\www\centos8\python\flaskdemo\tests\test3.txt’d = dict(name=‘xiao zhi’,num = 1002)xuliehua = pickle.dumps(d) #序列化变量handle = open(filepath,‘wb’)handle.write(xuliehua)handle.close()#使用

2021-03-08 18:03:54 613

原创 python重命名文件

def renamefile():filepath = ‘G:\www\centos8\python\flaskdemo\tests\test1.txt’os.rename(filepath, ‘/tests/test1_rename.txt.txt’)return ‘文件重命名’

2021-03-08 18:02:47 52

原创 python写入多行内容

def writelinesfile():filepath = ‘G:\www\centos8\python\flaskdemo\tests\test2.txt’handle = open(filepath,‘a’,encoding=‘utf-8’)str = [‘第一行\n’,‘第二行’]handle.writelines(str)handle.close()return ‘向文件中添加一个序列的内容’...

2021-03-08 18:02:06 4336

原创 python读取文件中的一行

def readlinefile():filepath = ‘G:\www\centos8\python\flaskdemo\tests\test1.txt’handle = open(filepath,‘r’)filelist = {}#读取一行,也可以传入要读取的字符数,不传则读取整行filelist[‘readlink’] = handle.readline()handle.seek(0,0) #恢复文件指针位置#读取文件多有行,保存在一个列表中filelist[‘rea

2021-03-08 18:01:03 5629

原创 python 打开文件的方式汇总

打开文件的方式r: 只读,文件指针在文件头rb: 二进制格式只读,文件指针在文件头r+: 读写,文件指针在文件头rb+: 二进制读写,文件指针在文件头w: 写入,如果文件已经存在,则覆盖,文件不存在则创建文件wb: 二进制写入,如果文件已经存在,则覆盖,文件不存在则创建文件w+: 读写,如果文件已经存在,则覆盖,文件不存在则创建文件wb+: 二进制读写,如果文件已经存在,则覆盖,文件不存在则创建文件a: 追加写入,文

2021-03-08 17:59:54 667

原创 python连接mysql数据库

def connectmysql():#连接mysqldb = pymysql.connect(host=‘localhost’,port=3306,user=‘root’,passwd=‘Ma907846889’,db=‘demo’)#使用cursor方法创建一个游标对象cursor = db.cursor()datadict = {}#使用execute()方法执行sql查询sql = ‘SELECT * from py_test’cursor.execute(sql)dataone

2021-03-08 17:58:17 76

原创 python安装pymysql

查看已经安装的pip模块pip list使用pip安装pymysqlpip install PyMySql再次使用pip list查看是否有pymysql模块

2021-03-08 17:57:09 414

原创 php 打开文件方式

打开并读取文件r:只读,文件指针指向文件头r+:读写,文件指针指向文件头w:写入,文件指针指向文件头,并将文件大小截为零,如果文件不存在则创建文件w+:读写,文件指针指向文件头,并将文件大小截为零,如果文件不存在则创建文件a:写入,文件指针指向文件末尾,如果文件不存在则创建文件a+:读写,文件指针指向文件末尾,如果文件不存在则创建文件x:创建并写入,将文件指针指向文件头,如果文件存在返回false,如果文件不存在则创建文件x+:创建并读写,将文件指针指向文件头,如果文件存在返回false.

2021-03-08 17:01:50 370

原创 HTTP常见状态码

HTTP常见状态码1,100~199:用于指定客户端相应的某些动作2,200~299:用于表示请求成功200:服务器成功返回网页3,300~399:用于已经移动的文件,并且常被包含在定位头信息中指定新的地址信息301:永久跳转,所请求的网页将永久跳转到指定的心地址4,400~499:用于指出客户端的错误403:禁止访问,服务端匹配预先设置的规则而拒绝响应客户端的请求。一般为服务器或者是服务权限配置不当造成404:服务器找不到客户端请求的页面,可能原因是客户请求了服务器不存在的资源5,500

2021-03-08 16:54:53 146 1

原创 laravel-admin报错Disk [admin] not configured, please add a disk config in `config/filesystems.php`.

laravel-admin报错Disk [admin] not configured, please add a disk config in config/filesystems.php.在config/filesystems.php文件的disks项添加'admin' => [ 'driver' => 'local', 'root' => public_path('upload'), 'vi

2021-02-17 22:01:14 106

原创 将键值对做为元组返回,并存储在变量中

使用poopitem()方法将,键值对作为元组返回,并直接复制到两个变量中student = {'name':'小梦','number':'10002'}key,value = student.popitem() #将键值对作为元组返回,并直接赋值到两个变量中print(key,value)输出结果:number 10002...

2021-02-12 17:24:08 226

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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