自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xinu's note

开发笔记,坚持学习!!

  • 博客(38)
  • 收藏
  • 关注

原创 windows服务器环境下使用php调用com组件

使用php在windows server 2012r2 环境下 调用 com组件 操作word、excel等

2023-10-27 09:17:29 378

转载 PHP的输出缓冲区

PHP的输出缓冲区什么是输出缓冲区?PHP的输出流包含很多字节,通常都是程序员要PHP输出的文本,这些文本大多是echo语句或者printf()函数输出的。对于PHP中的输出缓冲区,你要知道三点内容。第一点是任何会输出点什么东西的函数都会用到输出缓冲区,当然这说的是用PHP写的程序。如果你是编写PHP扩展,你使用的函数(C函数)可能会直接将输出写到SAPI缓冲区层,而不需要经过OB层。你可以在源文件main/php_output.h中了解到这些C函数的API文档,这个文件给我们提供了很多其他的信息,例

2021-06-22 19:16:45 507

原创 pdf2htmlex安装及使用

PDF 转 HTML环境安装 docker版安装docker# 通过yum安装yum install -y yum-utilsyum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum makecacheyum install docker-ce# 启动server服务systemctl start docker# 设置开机启动systemctl e

2021-05-13 23:22:11 1302 2

原创 mysql 高性能查询

优化数据访问只查询需要的数据永远不要使用select * 除了count(*)用缓存等手段减少重复数据访问关注查询的响应时间,扫描行数,返回行数如果发现某个查询扫描行数远大于返回行数,可以从以下角度优化使用覆盖索引改变表库结构,使用汇总表等改进查询方式应用where的三种方式,性能从高到低在索引中使用where条件过滤不匹配的内容,存储引擎层完成;使用索引覆盖扫描(Extra列中出现 Using Index),直接从索引中过滤并返回结果,服务层执行,但是无须回

2021-04-16 13:21:35 234

原创 PHP安全基础--生产环境配置推荐

PHP安全基础–生产环境配置推荐生产环境php.ini推荐配置; 基础设置; 关闭错误输出display_erros = Off; 错误日志输出到指定位置error_log = /var/log/error.log; 显示除通知和编码标准警告之外的所有错误。error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED; 关闭php版本号在http头中的显示expose_php = Off; 限制

2021-04-16 13:12:01 289

原创 nginx反向代理DNS缓存问题

nginx反向代理DNS缓存问题遇到的问题nginx中使用反向代理,目标服务器更换解析ip后,请求无法代理到新服务器上原因nginx在启动的时候会将代理服务器域名解析的ip地址缓存起来。解决方案方案一重启nginx,会重新缓存DNS解析结果方案二使用 resolver配置解决在nginx中配置解析服务器,搭配变量解析。可在http|server|location中设置resolver address1 address2 [valid=time] [ipv6=on|off] [statu

2021-04-08 15:03:15 637

原创 Nginx限流设置

Nginx限流设置nginx 提供两种不同的限流方式,分别为ngx_http_limit_req_module, ngx_http_limit_conn_module,两个模块可以搭配使用,其中 ngx_http_limit_req_module用来限制请求次数,ngx_http_limit_conn_module限制并发连接数,一般都是以IP为key做限制,ngx_http_limit_req_module更常用ngx_http_limit_req_module使用方法为limit_req_zone

2021-03-14 20:54:20 207

原创 PHP实现的单向链表,实现了迭代器接口和数组访问接口

#PHP实现的单向链表,实现了迭代器接口和数组访问接口<?php/** * Created by PhpStorm. * Author: xinu [email protected] * Coding Standard: PSR2 * DateTime: 2020-09-08 17:50 * php版本链表 实现迭代器,数组访问接口 *//** * Class LinkedList */class LinkedList implements Iterator, ArrayAc

2020-09-09 14:51:56 105

原创 win10 将sublime3添加到右键菜单

将以下代码复制,其中路径更换为自己电脑的路径,如果希望菜单是中文,请将该文件以记事本打开,并以ANSI格式保存,保存文件名为 sublime_addright.reg,放到sublime根目录,双击执行Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\SublimeText3]@="用 SublimeText3 打开""Icon"="D:\\Program Files\\Sublime Text 3\\sublime_tex

2020-09-08 09:36:15 121

原创 Nginx常用变量 非常常用 $host $server_name

Nginx常用变量测试demo发起一次请求,地址为 http://ngxin.arg.test/a/b/c/?d=test&e=123&username=用户GET /a/b/c/?d=test&e=123&username=%E7%94%A8%E6%88%B7 HTTP/1.1Host: ngxin.arg.testConnection: keep-aliveCache-Control: max-age=0DNT: 1Upgrade-Insecure-Req

2020-09-07 21:14:11 3873

原创 mysql根据自定义种子生成流水号

mysql根据种子生成流水号需求根据传入的种子生成流水号,例如以日期做种子,第一天以20200907 + 1 开始第二天则换成20200908重新从1开始解决方案CREATE TABLE tb_sequence( seed_key VARCHAR(50) NOT NULL, current_value INT NOT NULL, _increment INT NOT NULL DEFAULT 1, PRIM

2020-09-07 17:12:43 449

原创 Nginx location 语法

Nginx location 语法location只有两类,正则location,普通location正则匹配~:区分大小写的正则匹配~*:不区分大小写的正则匹配字符串匹配=:精确匹配,优先级最高。如果找到了这个精确匹配,则停止查找。^~:URI 以某个常规字符串开头,不是正则匹配/:通用匹配, 优先级最低。任何请求都会匹配到这个规则结论先普通,后正则,与配置顺序无关普通location之间的匹配顺序:按最大前缀匹配,首先要能匹配上,简单来说就是uri中要全包含该locati

2020-09-07 16:51:51 95

原创 nginx 常用指令 try_files allow root alias

nginx 常用指令 try_files allow root alias正则匹配条件~ 为区分大小写匹配~* 为不区分大小写匹配!~和!~*分别为区分大小写不匹配及不区分大小写不匹配文件及目录匹配,其中:-f和!-f用来判断是否存在文件-d和!-d用来判断是否存在目录-e和!-e用来判断是否存在文件或目录-x和!-x用来判断文件是否可执行flag标记last 相当于Apache里的[L]标记,表示完成rewritebreak 终止匹配, 不再匹配后面的规则redirec

2020-09-07 16:36:02 438 1

原创 Vmware虚拟机提示 获取所有权失败 无法开启

Vmware虚拟机提示 获取所有权解决方案方案一 删除虚拟机在物理机中时间存放目录下的 xxx.lck 目录,然后重启该虚拟机删除前记得备份,万一解决不了也能回退到之前的状态方案二 使用记事本打开*.VMX文件上加上一行代码disk.locking = “FALSE”,重新启动该虚拟机。出现的原因这是由于虚拟磁盘(.vmdk)本身有一个磁盘保护机制,为了防止多台虚拟机同时访问同一个虚拟磁盘(.vmdk)带来的数据丢失和性能削减方面的隐患,每次启动虚拟机的时候虚拟机会使用扩展名为.l

2020-09-07 14:11:19 887

原创 PHP数组的一些实用技巧与建议

PHP数组的一些实用技巧与建议文章目录PHP数组的一些实用技巧与建议使用连续整数填充数组删除多个连续元素判断元素是否存在于数组中array_filter 性能远不如 foreach循环判断不要使用引用循环通过生成器读取大文件使用连续整数填充数组range($start, $end, $step = 1)使用连续整数填充一个数组,可以通过修改$step改变填充间隔删除多个连续元素array_splice($array, $offset, $length)判断元素是否存在于数组中in_array

2020-09-03 22:38:58 252

原创 nginx、php全链路超时设置,一次性搞懂

nginx + php全链路超时设置文章目录nginx + php全链路超时设置nginx相关超时设置fastcgi通信proxy代理通信php相关设置避免没有超时机制的请求不同超时设置起作用的状态码nginx相关超时设置fastcgi通信fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;proxy代理通信proxy_connect_timeout 15s;#连接超时proxy_r

2020-09-03 13:54:45 402

原创 Vmware虚拟机网速慢,延迟高 Composer 无法安装包

Vmware虚拟机网速慢,延迟高虚拟机网络使用Nat模式,ping www.baidu.com 延迟有240ms+而在使用阿里云的镜像网站时,都无法ping通。修改DNS服务器地址来解决这个问题。控制面板中找到 VMware Network Adapter VMnet8 网卡修改为常用的DNS地址,114.114.114.114...

2020-09-02 18:02:04 1040

转载 MySQL大表优化方案

当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化:单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量:字段 尽量使用TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNED VAR

2020-09-02 14:44:05 289 1

原创 时间复杂度与空间复杂度分析学习

时间复杂度所有代码的执行时间 T(n) 与每行代码的执行次数 n 成正比。大 O 时间复杂度表示法。大 O 时间复杂度实际上并不具体表示代码真正的执行时间,而是表示代码执行时间随数据规模增长的变化趋势,所以,也叫作渐进时间复杂度(asymptotic time complexity),简称时间复杂度。如何分析时间复杂度1. 只关注循环执行次数最多的一段代码我们在分析一个算法、一段代码的时间复杂度的时候,也只关注循环执行次数最多的那一段代码就可以了。

2020-09-01 23:13:37 223

转载 HTTP协议之CORS 跨域资源共享

HTTP CORS 跨域资源共享 一、简介CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。整个CORS通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。

2020-09-01 21:41:28 206

原创 php实现http协议中的Authorization Basic认证

HTTP协议中的 身份认证客户端发起请求,未携带Authorization头,服务端返回 401 Unauthorized及响应头 WWW-Authenticate: Basic告诉客户端以Basic方式进行身份验证,客户端会显示输入框,需要输入帐号密码,发起请求会携带Authorization: Basic base_encode(username:password),服务端进行鉴权。php代码实现如下<?phpheader("Content-Type: text/html; CharS

2020-09-01 13:08:55 1346

原创 HTTP协议基础知识 速查 常用

HTTP协议文章目录HTTP协议请求方法常用状态码常用首部字段1. 通用首部字段(General Header Feilds)2、请求首部字段(Request Header Fields)3、响应首部字段(Response Header Fields)4、实体首部字段(Entity Header Fields)报文结构HTTP实体数据,内容协商数据类型与编码语言类型与编码内容协商的质量值内容协商的结果总结请求方法方法名响应状态码说明备注GET200获取资源POST

2020-08-31 21:47:35 166

原创 以太网数据帧详细解析 逐字节分析

以太网数据帧详细解析详细解析以太网通信数据帧测试环境机器名macipporttcp_server00:0c:29:8b:37:da10.1.2.79502tcp_client00:50:56:c0:00:0810.1.2.112345抓包 客户端向服务端发送 'hello world’# 原始数据帧00 0c 29 8b 37 da 00 50 56 c0 00 08 08 00 # Ethernet_II格式数据帧首部45 00 00 33 28

2020-08-25 21:18:49 17226 1

原创 php文件读取错误 failed to open stream: Invalid argument in I/O warning : failed to load external entity

php文件读取错误复制文件路径时,混入了奇怪的字符# 使用simplexml_load_file读取xml文件内容 始终报错# Warning: simplexml_load_file(): I/O warning : failed to load external entity "‪C:/Users/Administrator/Desktop/1.xml# 使用file_get_contents依然报错 failed to open stream: Invalid argument in$fil

2020-08-24 21:24:02 809

原创 ElasticSearch中的analysis、analyzer、tokenizer、filter都是什么意思?

ElasticSearch中的analysis、analyzer、tokenizer、filter都是什么意思?Elasticsearch把每条数据叫做Document,然后提交到Index中。简单说,Document中的数据是如何转变成倒排索引的,以及查询语句是如何转换成一个个词(Term)使高效率文本搜索变得可行,这种转换数据的过程就称为文本分析(analysis)。analysis 基本概念 === elasticsearch全文搜索引擎会用某种算法(Tokenizer)对要建索引的文档进行分析

2020-08-24 21:21:05 2476

原创 ElasticSearch 安装启动及报错处理

ElasticSearch 安装启动及报错处理下载及安装https://www.elastic.co/cn/downloads/elasticsearch选择合适的版本,服务器使用centos系统wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.7.1-linux-x86_64.tar.gztar -zxvf elasticsearch-7.7.1-linux-x86_64.tar.gz# 安装到/

2020-08-24 21:17:01 498

原创 Nginx配置项详解

Nginx配置项详解Nginx安装文档Nginx–Linxu下编译安装Nginx基础配置详解nginx.conf 配置结构... #全局块events { #events块...}http #http块{ ... #http全局块 server #server块 { ... #server全局块 location [PATTERN] #location块 { ... }

2020-08-24 12:36:54 1301

原创 php composer 基础使用

composer 使用文章目录composer 使用安装使用修改为阿里镜像源基本使用流程安装php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a

2020-08-23 23:03:01 94

原创 mysql数据类型选择与优化 整理自高性能Mysql 绝对干货

mysql数据类型选择与优化文章目录mysql数据类型选择与优化数据类型选择与优化数据库数据类型选择原则数据类型整型实数类型字符串类型枚举类型日期与时间类型注意schema设计中的陷阱缓存表、汇总表影子表操作计数器表总结数据类型选择与优化数据库数据类型选择原则更小的通常更好,尽量使用可以正确存储数据的最小类型,例如age字段,tinyint unsigned 是更好的选择简单就好,能用整型不用字符串,用datetime、date等内建类型存储日期时间,用整型存储ip地址等 INET_ATON

2020-08-21 18:00:31 212 1

原创 php excel多sheet导出

php excel 多sheet导出函数安装 phpoffice/phpspreadsheet 包composer require phpoffice/phpspreadsheet实现代码如下<?php/** * Created by PhpStorm. * User: xinu [email protected] * Coding Standard: PSR2 * DateTime: 2020-07-11 21:24 */use PhpOffice\PhpSpreadsheet

2020-08-20 23:17:46 344

原创 PHP错误、异常详细解析,配置项相关及处理

PHP错误、异常详细解析及配置文章目录PHP错误、异常详细解析及配置错误错误级别类型错误处理相关配置异常与错误处理错误异常php7中内置异常类错误语法错误环境错误逻辑错误错误级别类型错误和日志记录值常量说明备注1E_ERROR致命的运行时错误。这类错误一般是不可恢复的情况,例如内存分配导致的问题。后果是导致脚本终止不再继续运行。2E_WARNING运行时警告 (非致命错误)。仅给出提示信息,但是脚本不会终止运行。4E_PARSE编译时语

2020-08-20 22:55:48 355

原创 php.ini 常用配置详解

php.ini 常用配置详解文章目录php.ini 常用配置详解配置项修改范围配置项文件上传相关数据处理重要参数项日期相关异常错误相关设置session配置项.user.ini 文件配置项修改范围PHP_INI_* 模式的定义模式含义PHP_INI_USER可在用户脚本(例如 ini_set())或 Windows 注册表)(自 PHP 5.3 起)以及 .user.ini 中设定PHP_INI_PERDIR可在 php.ini,.htaccess 或 httpd.co

2020-08-20 16:54:11 1671

原创 MongoDB数据库三种服务集群部署安装文档

MongoDB 三种集群详细搭建步骤,只要跟着步骤走,都能搭建出正常的集群

2020-08-13 20:51:54 640

原创 ES学习笔记-内置分析器(Analyzer ),扩展分词器及如何自定义分析器

ES学习笔记-内置分析器(Analyzer ),扩展分词器及如何自定义分析器内置分析器es在索引文档时,会通过各种类型 Analyzer 对text类型字段做分析,不同的 Analyzer 会有不同的分词结果,内置的分词器有以下几种,基本上内置的 Analyzer 包括 Language Analyzers 在内,对中文的分词都不够友好。中文分词需要安装其它 Analyzer分析器描述分词对象结果standard标准分析器是默认的分析器,如果没有指定,则使用该分析器。它提

2020-08-12 17:56:21 1016

原创 ElasticSearch 学习笔记 Mapping相关内容概述

ES学习笔记-Mapping概述文章目录ES学习笔记-Mapping概述什么是Mapping字段的数据类型什么是Dynamic Mapping类型自动识别规则能否更改Mapping 的字段类型控制 Dynamic Mapping显式Mapping 设置与常见参数介绍设置mapping字段常用属性analyzerboostindexindex_optionsnull_valuecopy_to什么是MappingMapping 类似数据库中的schema的定义,作用如下定义索引中的字段的名称定义

2020-08-11 21:57:40 214

原创 Mysql权限管理控制及安全相关

授权操作详解授权五要素要授予的权限【权限列表中的内容】被授予访问权限的数据库或表【授权级别表中的内容】用户名地址【地址列表中的内容,mysql.user表中的host字段】密码【非必须】授权立即生效flush privileges;# 使用flush privileges;立即使权限生效,否则需要重启服务授权\取消授权 语句grant 权限 on 授权范围 to username@'地址' [identified by '密码'];# 授权给账户root所有权限,允许任意地址.

2020-08-11 15:12:15 165

原创 mysql高性能索引应用

高性能索引文章目录高性能索引B-Tree索引的限制哈希索引的限制前缀索引计算方式复合索引顺序选择高效索引案例延迟关联索引在where与order中的使用索引案例1. 考虑支持多种过滤条件,而不是随便创建符合条件的索引2. 尽量将范围查询索引后置3. 避免多个范围查询维护索引和表索引使用频率总结B-Tree索引的限制create table peoples ( last_name varchar(50) not null, first_name varchar(50) not null,

2020-08-11 15:04:00 81

原创 Centos下源码编译安装apache、php、mysql

安装前准备安装目录创建mkdir /server需要安装以下依赖yum install gccyum install gcc-c++yum install ncurses-develyum install autoconfyum install expat-develyum install zlib-develyum install libxml2-develyum ins...

2019-07-19 10:21:25 578

空空如也

空空如也

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

TA关注的人

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