- 博客(85)
- 收藏
- 关注
原创 Elasticsearch 实战:客户数据索引设计与精准筛选查询实践
前端通过sort_type(1 = 开启排序)和sort_mode(1 = 正序,其他 = 倒序)传参,后端收集所有有效排序字段,以最后一个开启排序的字段为唯一排序依据,覆盖前面所有排序配置,贴合前端的交互逻辑(用户最后选择的排序字段为有效字段)。Elasticsearch 的核心价值在于高效的全文检索和灵活的筛选查询,而要发挥其优势,必须坚持 **“索引设计贴合业务、查询方式按需选择、排序规则精细化”** 的核心原则。索引设计是基础。
2026-02-02 17:08:07
1074
原创 Windows 环境下 Apache+PHP+MySQL+Redis 全栈环境搭建与配置指南
本文档详细介绍了在Windows系统下搭建Apache+PHP8.3.29+MySQL+Redis全栈开发环境的完整流程。内容包括环境准备(软件版本匹配、目录规划)、分步配置(Apache、PHP、MySQL、Redis的安装与配置)、功能验证(PHP基础环境、MySQL和Redis连接测试)以及常见问题排查指南。重点强调版本匹配(特别是PHP扩展)和配置路径准确性,确保开发环境的稳定性。该环境适用于ThinkPHP、Laravel等主流PHP框架的本地开发,并提供了后续优化建议。
2026-01-12 15:05:08
975
原创 宝塔面板运行Python脚本全攻略:环境安装、虚拟环境配置与实战运行
若软件商店提供的Python版本不符合需求(如需要特定版本3.10.8),可通过源码编译安装,步骤如下:下载Python源码包:通过SSH终端进入服务器临时目录,执行下载命令(以3.10.8版本为例):若未安装wget,先执行(CentOS)或(Ubuntu)。,解压后生成“Python-3.10.8”目录。配置编译参数:进入解压目录,执行配置命令(指定安装路径为/usr/local/python310,避免与系统自带Python冲突):开启编译优化,提升Python运行性能;--with-ssl。
2025-12-23 16:52:06
998
原创 深度解析Go语言fmt包格式化动词
掌握格式化动词的核心是“按需选择”,结合开发场景总结以下最佳实践:快速调试:优先使用%v(默认格式)和%T(确认类型),高效定位问题;精准输出:整数用%d、浮点数用%.2f、字符串用%s,确保格式统一;进制转换:二进制用%b、十六进制用%x/%X,配合%#v可显示进制前缀;美观对齐:批量输出数据时,用宽度修饰符(如%10s%5d)保证对齐,提升可读性;避免踩坑:输出百分号需用%%转义;特殊字符(如换行、制表符)用%q自动转义。
2025-12-23 09:03:15
1032
原创 PHP 应用代码加密备份工具:安全设计与实现优化
本文介绍了一款PHP应用加密备份工具,通过AES-256-CBC算法实现代码安全保护,并优化了传统加密方案的安全缺陷。工具核心功能包括:1)带时间戳的完整目录备份;2)无语法错误的PHP文件加密;3)日志记录与异常处理;4)分离解密逻辑存储。重点解决了传统方案中解密逻辑硬编码的安全风险,采用独立文件存储解密函数、严格权限控制和环境变量管理密钥等安全措施。同时提供了递归备份、随机函数名生成、IV校验等增强功能,确保加密过程安全可靠。最后给出了生产环境部署建议,包括密钥管理、目录权限设置和备份策略等最佳实践方案
2025-12-19 16:36:58
881
原创 深度解析 Go 切片经典案例:从一行代码看透底层原理
本文通过一个经典的Go语言切片操作案例,深入剖析了切片的核心原理。案例展示了切片在append操作、map存储时的行为表现,揭示了切片底层三元组结构(指针、长度、容量)的关键作用。文章详细拆解了切片扩容规则、引用共享特性以及截取操作的影响,指出多个切片可能共享底层数组是常见问题的根源。最后给出了避免切片共享问题的实用建议:使用copy函数创建独立切片副本。全文帮助开发者深入理解切片机制,避免实际开发中的常见陷阱。
2025-12-19 16:21:19
665
原创 php使用aes-256-cbc加密thinkphp5.1业务代码层
这是一个PHP加密工具脚本,主要功能是对项目中的PHP文件进行加密处理。摘要如下: 自动备份application目录到带时间戳的备份目录 使用AES-256-CBC加密算法对所有PHP文件进行加密 加密后的文件包含自解密代码,使用相同密钥和IV进行解密 生成操作日志记录加密过程 执行方式:将encrypt.php放在项目根目录后,命令行运行"php encrypt.php" 主要特点: 32字节密钥保护 保留原始文件权限 支持递归处理子目录 生成可执行的自解密代码 详细的日志记录
2025-07-23 11:03:41
270
原创 php代码加密thinkphp5.1代码加密案例
这是一个专为ThinkPHP5.1框架设计的代码混淆工具,主要功能是对PHP项目代码进行混淆处理以提高安全性。该工具提供了以下核心功能: 保留框架关键类名、方法名和命名空间 自动识别并保留控制器方法、路由定义 支持变量、函数和类名的随机替换 提供完善的备份和日志记录机制 可配置排除特定目录和文件类型 支持调试模式和详细日志输出 使用方法:将obfuscate.php文件放在项目根目录后,执行php obfuscate.php命令即可生成混淆后的代码。混淆后的代码会保存在application_obfusca
2025-07-03 11:29:38
395
1
原创 phpOffice使用Spreadsheet将数据写入Excel并保存目录
thinkphp6使用phpOffice操作Spreadsheet将数据写入excel 并将excel文件保存到指定目录下返回目录地址
2024-01-23 11:38:39
951
原创 Go 分割字符串 案例01
有一个log日志文件,里面每行日志大概格式如下:其中_代表空格ab_c_"abc_adadfasd"_def_"dddd"需要对这样的数据进行处理,切分成数组。切分规则如下:(1)双引号""里面的空格不切分,分为整体(2)双引号""外的空格是分隔符这样上面这样数据切分后的数组如下:[ "ab", "c", "adadfasd", "def", "dddd"]
2023-03-30 16:23:04
369
原创 CentOS下安装Docker后运行HelloWorld 提示Unable to find image ‘hello-world:latest‘ locally
CentOS下安装Docker后运行HelloWorld 提示Unable to find image 'hello-world:latest' locally
2022-06-27 10:42:52
853
原创 算法-快速排序(php)
快速排序算法通过多次比较和交换来实现排序,其排序流程如下:[2](1)首先设定一个分界值,通过该分界值将数组分成左右两部分。[2](2)将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于分界值,而右边部分中各元素都大于或等于分界值。[2](3)然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。[2](4...
2022-05-06 17:09:19
1346
原创 MySQL5.7以上版本出现使用GROUP BY 报错问题
在MySQL5.7中使用group by 的过程中出现了报错 如下Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'daotianyiliao.d.d_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_fu
2022-04-13 09:05:02
6809
1
原创 QrCode生成二维码
composer 安装QrCodecomposer require endroid/qr-code 代码详细如下<?phpnamespace app\api\server;use Endroid\QrCode\Color\Color;use Endroid\QrCode\Encoding\Encoding;use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelLow;use Endroid\QrCode..
2022-03-28 11:33:42
1479
原创 FastAdmin 通过域名直接访问后台登录页面
修改文件:application/index/controller/Index.php通过重定向的方式 访问到后台登录页面
2022-03-23 15:46:45
3606
原创 Navicat12连接MySQL8.0版本,连接出现 Authentication plugin ‘caching_sha2_password‘ cannot be loaded...
1、在使用Navicat Premium 12,连接MySQL8.0版本数据库时会出现Authentication plugin 'caching_sha2_password' cannot be loaded的错误。 出现这个问题的原因是mysql8.0版本之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。 解决问题的方法有两种,一种是升级navicat驱动,另一种是把mysql用户登录密码加密规则还原
2022-03-20 22:55:14
1313
原创 Windows下MySQL8.0 安装与配置
下载地址:MySQL :: Download MySQL Installer (Archived Versions)如下图:选择MySQL版本双击打开下载后的文件如下图选择:Custom 自定义模式 点击next选择左侧列表MySQL Servers下的MySQL Server 找到对应的MySQL版本 点击右箭头加入到列表中点击右侧列表中的MySQL 版本 如下图下方出现Advanced Options 按钮 点击按钮出现两个路径如下图可根...
2022-03-20 20:20:13
708
原创 php 编写获取url地址中的文件名
我们前段时间做了个项目其中一个功能是需要获取上传图片的文件名且是多张上传 。我省略掉了上传图片的过程 以下方法适用于已经拿到了上传文件的服务器路径。希望能帮助到大家。 /** * 截取文件地址中的文件名称 * @param $data //可传入数组和字符串 * @return array */ public static function returnDocumentNameArray($data) { $array =
2022-03-08 14:54:07
1624
原创 Go语言安装并配置环境变量
1、Go语言下载地址:Downloads - The Go Programming Language2、选择所需要下载的平台和版本进行下载 本人在windows下操作3、点击下载的.msi文件如下图4、点击next 出现License5、点击next 出现选择安装目录默认为C盘选择自己的目录6、点击next 进行安装点击Install进行安装7、安装完成如下图8:配置环境变量:打开此电脑选择属性点击环境变量...
2022-02-24 10:35:28
3264
原创 php 实现工厂模式 实例
工厂模式:由工厂类根据参数来决定创建出哪一种产品类的实例工厂类是指包含了一个专门用来创建其他对象方法的类。根据传入参数进行选择返回具体类的实例。主要作用就是对象创建的封装、简化创建对象的操作。也就是调用工厂类的一个方法(传入参数)来得到需要的类<?php//定义一个抽象类abstract class Operation{ protected $numA = 0; protected $numB = 0; protected $result = 0; .
2022-02-09 10:03:18
625
原创 解决跨域问题 代码
header('Access-Control-Allow-Credentials: true');//支持cookie跨域header("Access-Control-Allow-Headers:token,Content-Type, Authorization, platform, Accept, Range, Origin,Token,Lang,lang,X-Auth-Token");header('Access-Control-Allow-Origin: *');header('Access-.
2021-10-12 11:34:06
332
原创 针对宝塔面板一个站点多个域名使用SSL证书的解决方案
而多个域名绑定一个站点,如果网站协议为https的,那么就要面临一个问题,如何解决一个站点多个域名使用SSL证书的问题。本文将以宝塔面板为例,告诉大家如何解决。在宝塔面板SSL证书设置中,只能上传一份SSL编码文件。因此,我们能做的就只能在“站点配置”里做修改。具体方法如下:对应域名的SSL证书下载保存到本地; 全部SSL证书上传至”/www/server/panel/vhost/cert/站点域名”目录下; 宝塔面板修改“站点配置”,复制再粘贴一份相同的内容至原配置下方; 对粘贴后那份内
2021-07-02 11:31:05
7018
2
原创 Fastadmin 列表自定义点击事件
{field: 'qr_code_address', title: __('二维码'), events:Controller.api.events.abc, formatter:function(value ,row, index){ return '<div class="qrcode'+row.v_id+' code">暂无</div>';}},在下面api中添加click为 事件 .code为 class名api: { ...
2021-06-09 18:05:10
2350
原创 thinkphp5.1使用redis并使用
创建一个redis类<?phpnamespace app\common\auth;class Redis{ //实例字典, 以实例名称为KEY, 对象实例为值 protected static $dict = array(); //配置信息// private $redis = array(// 'host'=>'172.21.20.13',// 'port'=>'6379',// 'time
2021-03-30 10:04:49
567
原创 thinkphp5.1接入阿里云短信服务
1. 使用composer安装依赖composer require alibabacloud/client2.创建类文件 use短信文件use AlibabaCloud\Client\AlibabaCloud;use AlibabaCloud\Client\Exception\ClientException;use AlibabaCloud\Client\Exception\ServerException;use think\Controller;3. 发送短信 /**
2021-03-20 17:11:35
514
原创 thinkphp5.1 缓存配置
单一缓存机制配置return [ 'type' => 'Redis', 'host' => '127.0.0.1', 'port' => '6379', 'password' => '', 'timeout' => 3600];多层并存缓存机制配置'cache' => [ // 选择模式 'type' => 'complex', // 默认(文件缓存)
2021-03-09 09:31:54
1223
原创 封装ResponseJson类 在thinkphp5.1中
代码如下<?phpnamespace app\response;trait ResponseJson{ /** * 返回一个json格式 * * @param $code * @param $message * @param $data * @return string */ private function jsonResponse($code,$message,$data) {
2021-03-08 17:09:58
547
原创 thinkphp5.1下使用控制器中间件
首先 在tp5.1根目录下运行#JwtCheck 为中间件名称 可以更改php think make:middleware JwtCheck运行后会在application下生成http\middleware\JwtCheck.php下面是本人的中间件内容如下图代码如下<?phpnamespace app\http\middleware;use app\common\auth\JwtAuth;use app\response\ResponseJson;cla
2021-03-08 17:04:30
758
原创 thinkphp5.1开发app接口版本控制(路由设置)
使用thinkphp5.1开发app接口进行版本控制在index\controller下创建v1和v2目录 v1下创建版本1的文件如下图在route\route.php中 如下图# :v获取版本例如 v1、v2# 下面第一个路由其实是 接口地址/版本(v1、v2)/regist 访问的是index/v1/register/registerDoRoute::get(':v/regist','index/:v.register/registerDo');Route::get(
2021-03-08 16:54:01
1528
原创 JWT -- thinkphp5.1中的使用
话不多说首先将composer镜像切换到composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/然后在tp5.1根目录运行composer require lcobucci/jwt 3.2在application目录下创建common目录 common目录下创建auth目录 创建JwtAuth.php如下图JwtAuth.php中代码如下<?phpname.
2021-03-08 16:28:49
697
1
原创 fastadmin 列表中添加按钮并传参
首先在js页面添加button在绑定tab 事件在index.html中添加控制器中添加这样就可以拿到传的值了
2020-12-01 19:46:56
3539
原创 请求fastadmin api 跨域、 403 问题
在Api 基类添加header信息header("Access-Control-Allow-Methods: *");header('Access-Control-Allow-Origin: 域名');header("access-control-allow-credentials: true");// 响应头设置// header('Access-Control-Allow-Headers:x-requested-with,Content-Type,X-CSRF-Token');if.
2020-11-17 16:18:30
1656
1
原创 fastadmin 前端列表根据status状态显示自定义
后端返回的数据标识一些状态码返回,然后前端根据这些码来显示对应的内容,在fastadmin下可以通过修改 js文件来自定义 {field: 'is_sure', title: __('是否确认上车'),formatter:function (value) { if(value ==1) { return "已确认上车"; }else if(value ==2) {
2020-11-12 16:35:37
2971
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅