技术饭 mongodb 时间与_id相互转换

mongodb 时间与_id相互转换,ObjectId() 方法可直接生成当前时间的_id,也可以给方法 ObjectId() 传参生成对应的_id,可通过 getTimestamp() 方法获取时间戳,其中时间转成 utc时间,时间戳需要乘以1000

阅读全文 » 156天前
2024年06月18日

技术饭 通过ghostscript将pdf转成图片

需要将pdf转成图片有很多种方式,对于php来说可以通过 ImageMagick 扩展来实现,ImageMagick 主要是处理一系列图片处理,但是如果需要支持pdf转图片需要用到 ghostscript 依赖来实现转换。ImageMagick >= 6.2.4 is required. The amount of file formats supported by Imagick depends entirely upon the amount of formats supported by your ImageMagick installation. For example, Imagemagick requires ghostscript to conduct PDF operations.

阅读全文 » 226天前
2024年04月09日

技术饭 PHP中的proc_open函数

proc_open函数是PHP中一个非常强大的函数, 执行一个命令,并且打开用来输入/输出的文件指针,它允许您在PHP脚本中执行外部命令。这可以用于各种目的,如:调用系统命令和工具、与其他应用程序进行交互、处理文件和数据、执行复杂的自动化任务,proc_open() 提供了更加强大的控制程序执行的能力

阅读全文 » 226天前
2024年04月09日

技术饭 PHP:PCNTL进程控制功能的基础使用

PHP:PCNTL进程控制功能的基础使用,多进程的作用主要用于日志分析、队列处理、批量处理等,如要处理10w级别的数据,一条数据需要执行1秒,那么一个进程不间断需要执行1天多的时间,但是如果分成20个进程(进程过多会导出cpu爆满),每个进程分5000条只需执行1.3小时左右就完成任务了。

阅读全文 » 252天前
2024年03月14日

技术饭 php通过ImageMagick类库将pdf转换成图片

php通过ImageMagick类库将pdf转换成图片,Imagick 是用 ImageMagic API 来创建和修改图像的PHP官方扩展。ImageMagick 是用来创建,编辑,合并位图图像的一套组件。 它能够用于读取,转换,写入多种不同格式的图像。 包含 DPX、EXR、GIF、JPEG、JPEG-2000、PDF、PhotoCD、PNG、Postscript、SVG 和 TIFF。

阅读全文 » 357天前
2023年11月30日

技术饭 HarmonyOS第一课

HarmonyOS第一课,华为鸿蒙系统(HUAWEI Harmony OS),是华为公司在2019年8月9日于东莞举行的华为开发者大会(HDC.2019)上正式发布的操作系统。 华为鸿蒙系统是一款全新的面向全场景的分布式操作系统,创造一个超级虚拟终端互联的世界,将人、设备、场景有机地联系在一起,将消费者在全场景生活中接触的多种智能终端,实现极速发现、极速连接、硬件互助、资源共享,用合适的设备提供场景体验。

阅读全文 » 372天前
2023年11月15日

技术饭 php的sm2加密、签名、验签,sm4加密

php的sm2加密、签名、验签,sm4加密,为了保障商用密码的安全性,国家密码局制定了一系列密码标准,包括:SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法(ZUC) 等。其中SM1、SM4、SM7、祖冲之密码(ZUC)是对称算法。SM2、SM9是非对称算法。SM3是哈希算法,其中SM1、SM7算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。

阅读全文 » 443天前
2023年09月05日

技术饭 php通过spatie/browsershot将html文件转成pdf、图片

php通过 spatie/browsershot 将html文件转成pdf、图片,最近需要将html文件转成png或者是pdf合同,如果使用php手动处理的话那过程就需要经过,html -> pdf -> png,这样单独写的话就比较麻烦,如果有composer或者类库的话那就很好用了,搜了一下 spatie/browsershot 比较好用些,只是需要依赖npm、puppeteer。

阅读全文 » 503天前
2023年07月07日

技术饭 java的非对称ItfRsa.encryptByRSA加密转换成php的openssl RSA加密

java的非对称ItfRsa.encryptByRSA加密转换成php的openssl RSA加密,之前整理了php的openssl加密扩展实现,现在项目用到了RSA加解密,在JAVA与PHP系统之间进行交互,RSA在不同语言的密钥格式不一样,所以过程中主要还是密钥转换问题,经过不断地尝试研究终于搞定了在Java、PHP的转换,可以参考。

阅读全文 » 505天前
2023年07月04日

技术饭 php生成pdf文件上传到七牛云

php生成pdf文件上传到七牛云,php生成pdf使用composer require tecnickcom/tcpdf,通过html生成对应的pdf使用还是很方便的,缺点是html样式不是很好调整,七牛云上传使用七牛云提供的类库 composer require qiniu/php-sdk即可。php下有多个类库可以生成pdf如tcpdf、mpdf,但是html需要比较写得纯粹些,否则很多样式不支持,导致生成得pdf很乱。

阅读全文 » 517天前
2023年06月23日

技术饭 php通过GD库生成简单的印章图片

php通过GD库生成简单的印章图片,GD库是php处理图形的扩展库,GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片,也可以给图片加水印。php的gd库有很多的函数可以生成各式各样的图片,比如电子印章、电子公司盖章等等。

阅读全文 » 517天前
2023年06月23日

技术饭 php语言composer包的开发与发布

php语言composer包的开发与发布,在php开发过程中最常见的就是composer包了。composer管理代码比较方便,对后续的开发大大提升了效率,降低了成本,而且如果作为开源的也可以提供给其他第三方使用,那么如何制作自己的composer包呢?步骤还是相对简单。

阅读全文 » 524天前
2023年06月16日

技术饭 php随机生成5到25范围内的数字,组成数组并且数组总和等于100

php随机生成5到25范围内的数字,组成数组并且数组总和等于100,生成一个总和是100的数组并不难,只要随机N-1次,然后最后一个数字是100扣除已生成得总和,补足100即可,但难点在于这些数字需要控制在5到25之间,所以只能采用每次赋值计算最大值最小值的方法,然后不随机生成数字,总数扣减,最大值最小值逼近相同。

阅读全文 » 526天前
2023年06月14日

技术饭 curl 发送 form-data 数据流:Content-Type:multipart/form-data; boundary=xxxxxxxxx; charset=utf-8

curl 发送 form-data 数据流:Content-Type:multipart/form-data; boundary=xxxxxxxxx; charset=utf-8,multipart/form-data是基于post方法来传递数据的,并且其请求内容格式为Content-Type: multipart/form-data,用来指定请求内容的数据编码格式。另外,该格式会生成一个boundary字符串来分割请求头与请求体的,具体的是以一个boundary=${boundary}来进行分割。

阅读全文 » 533天前
2023年06月07日

生活札记 Java学习笔记 - 基础入门(一)

Java 是一个通用术语,用于表示 Java 软件及其组件,包括“Java 运行时环境 (JRE)”、“Java 虚拟机 (JVM)”以及“插件”。 Java具有大部分编程语言所共有的一些特征,被特意设计用于互联网的分布式环境。Java具有类似于C++语言的形式和感觉,但它要比C++语言更易于使用,而且在编程时彻底采用了一种以对象为导向的方式。

阅读全文 » 535天前
2023年06月04日

技术饭 php的openssl加密扩展实现

php的openssl加密扩展实现对称和非对称加密,openssl这个扩展也是随 PHP 源码一起发布的,编译安装的时候加上 --with-openssl 就可以了。当然,它也是需要系统环境中安装 OpenSSL 软件的,在各类操作系统中基本都已经直接有了,如果没有的话就自己安装一下即可。最简单的,在操作系统命令行看看有没有 openssl 命令就可以看出当前系统有没有安装 OpenSSL 相关的软件。

阅读全文 » 535天前
2023年06月04日

技术饭 PHP的MongoDB\Driver\Manager实现对mongodb的操作

MongoDB是开发人员数据平台,提供必要的服务和工具,以快速、高性能和大规模地构建用户需求的分布式应用程序。MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

阅读全文 » 539天前
2023年06月01日

技术饭 PHP搜索引擎MeiliSearch实现全文检索

PHP搜索引擎MeiliSearch实现全文检索,Meilisearch 搜索引擎使用 Rust 语言开发,轻量,对中文搜索非常友好,几乎做到了零配置,零学习成本,部署即用,非常方便。建立在 LMDB 键值存储之上,安装在 Ubuntu 或 MacOS 上时,它以 35 MB 的二进制文件形式存在。 MeiliSearch 带有内置的客户端、服务器和 WebUI。 词干提取、停用词、同义词、排名、过滤器和分面等功能都是开箱即用的,使用合理的默认值并且可以轻松定制。

阅读全文 » 539天前
2023年06月01日

技术饭 PHP 导入导出csv文件函数:fgetcsv()、fputcsv()

PHP 导入导出csv文件函数:fgetcsv()、fputcsv(),数据导出格式正常是execl的.xsl、.xslx格式,但导出这两种格式的文件体积很大,还很占用内存,所以一般推荐导出csv格式,csv能处理的数据量比较大,文件还小,是导出数据文件格式的首选。excel导出csv,通过txt打开保存为utf-8。

阅读全文 » 541天前
2023年05月30日

技术饭 WSL2使用PHP访问Windows 11上的MongoDB报错:Uncaught MongoDB\Driver\Exception\ConnectionTimeoutException: [connection refused calling hello on 'localhost:27017']

WSL2使用PHP访问Windows 11上的MongoDB报错:Uncaught MongoDB\Driver\Exception\ConnectionTimeoutException: No suitable servers found (`serverSelectionTryOnce` set): [connection refused calling hello on 'localhost:27017'],解决方法是:1、防火墙需要运行wsl2、2、mongodb配置文件设置bindIp=0.0.0.0、3、设置wsl中对应host访问

阅读全文 » 543天前
2023年05月28日

生活札记 Laravel学习笔记 - 基础入门(一)

Laravel 是一个全栈Web应用程序框架,具有富有表现力、优雅的语法。它可以从面条一样杂乱的代码中解脱出来,它可以构建网络APP,而且每行代码都可以简洁、富于表达力。在Laravel中已经具有了一套高级的PHP ActiveRecord实现 -- Eloquent ORM。它能方便的将“约束(constraints)”应用到关系的双方,就具有了对数据的完全控制,而且享受到ActiveRecord的所有便利。Eloquent原生支持Fluent中查询构造器(query-builder)的所有方法。

阅读全文 » 565天前
2023年05月05日

技术饭 redis队列详解

现如今的互联网应用大都是采用分布式系统架构设计的,所以消息队列已经逐渐成为企业应用系统内部通信的核心手段,它具有低耦合、可靠投递、广播、流量控制、最终一致性 等一系列功能。当前使用较多的消息队列有 RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMQ 等,而部分数据库 如 Redis、MySQL 以及 phxsql ,如果硬搞的话,其实也可实现消息队列的功能。可能有人觉得,各种开源的 MQ 已经足够使用了,为什么需要用 Redis 实现 MQ 呢?有些简单的业务场景,可能不需要重量级的 MQ 组件(相比 Redis 来说,Kafka 和 RabbitMQ 都算是重量级的消息队列)。

阅读全文 » 569天前
2023年05月01日

技术饭 Redis的消息发布(Pub)与订阅(Sub)

Redis的消息发布(Sub)与订阅(Sub),Redis PubSub 模块又称发布订阅者模式,是一种消息传递系统,实现了消息多播功能。发布者(即发送方)发送消息,订阅者(即接收方)接收消息,而用来传递消息的链路则被称为 channel。在 Redis 中,一个客户端可以订阅任意数量的 channel(可译为频道)。消息多播:生产者生产一次消息,中间件负责将消息复制到多个消息队列中,每个消息队列由相应的消费组进行消费,这是分布式系统常用的一种解耦方式。

阅读全文 » 570天前
2023年05月01日

生活札记 golang学习笔记 - helper辅助函数(六)

Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。Go 是谷歌支持的开源编程语言,易于学习和入门,内置并发和强大的标准库,不断发展的合作伙伴、社区和工具生态系统。Golang没有提供类似PHP的内置函数,所以很多时候需要自行整理成一个辅助方法库。

阅读全文 » 582天前
2023年04月19日

生活札记 Flutter学习笔记 - 入门(一)

Dart是谷歌开发的计算机编程语言,是一个为全平台构建快速应用的客户端优化的编程语言。Flutter 是 Google 开源的应用开发框架,仅通过一套代码库,就能构建精美的、原生平台编译的多平台应用。Flutter 为软件开发行业带来了革新:只要一套代码库,即可构建、测试和发布适用于移动、Web、桌面和嵌入式平台的精美应用。

阅读全文 » 602天前
2023年03月30日

生活札记 pytest框架、Appium之自动化测试(三)

pytest 可以用来做系统测试的自动化,它的特点有:用Python编写测试用例,简便易用、可以用文件系统目录层次对应手工测试用例层次结构、灵活的初始化清除机制、可以灵活挑选测试用例执行、利用第三方插件,可以生成不错的报表。Appium 是一个移动 App (手机应用)自动化工具。Appium 自动化方案的特点:开源免费、支持多个平台iOS (苹果)、安卓 App 的自动化都支持、支持多种类型的自动化、支持苹果安卓应用原生界面的 自动化、支持应用内嵌WebView的自动化、支持手机浏览器中的web网站自动化、支持flutter应用的自动化、支持多种编程语言、像 Selenium一样,可以用多种编程语言调用它开发自动化程序。

阅读全文 » 605天前
2023年03月26日

生活札记 Python + Selenium Web之自动化测试(二)

Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。

阅读全文 » 612天前
2023年03月19日

生活札记 Fiddler抓包、JMeter性能测试、Postman接口调试工具之自动化测试(一)

抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具,用于对软件做压力测试。Postman是一个接口测试工具,在做接口测试的时候,Postman相当于一个客户端,它可以模拟用户发起的各类HTTP请求,将请求数据发送至服务端,获取对应的响应结果。

阅读全文 » 612天前
2023年03月19日

吃瓜群众 乐刷卡乐宝刷卡app,T+0显示0.55%+3费率,但实际收取2%,机器赶紧丢了吧

最近需要一笔钱,所以想起了好久没刷的乐刷pos机,刷卡前还特意看了卡乐宝的费率还是显示0.55%+3,所以就刷了一笔4w多的金额,没想到竟然收了1000多的手续费!!!经历:乐刷卡乐宝刷卡app,T+0显示0.55%+3费率,但实际收取2%。 3月13号刷了一笔45636.44,到账44621.71,差价手续费是1014.73,按照每年机子通信费99来算的话,45636.44*0.55%+3+99=353,那就多收了661.72。 4007779068 客服说是调了费率到2%,说是官网有公告,多收的钱没办法退还金额了,可是在app上为什么还是0.55?挂羊头卖狗肉吗?这以后谁还敢刷?客服也就一味的道歉道歉,就是没什么用,吃相太难看了,建议大家不要再刷了,机器都丢了吧!!!

阅读全文 » 618天前
2023年03月14日

生活札记 Docker+K8S+Devops零基础入门教程之Devops

DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。

阅读全文 » 640天前
2023年02月19日

技术饭 gitee+webhook+php实现自动拉取代码

gitee+webhook+php实现自动拉取代码,在项目开发中使用git进行代码的管理,每次完成更改上传代码后,还需要登录服务器将代码拉取下来,现在git服务器(gitee/gitlab/github)都会有Webhooks功能,以实现在向git仓库推送/合并等时机让服务器自动拉取新代码。

阅读全文 » 645天前
2023年02月15日

生活札记 Docker+K8S+Devops零基础入门教程之K8S

Kubernetes也称为 K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统。它将组成应用程序的容器组合成逻辑单元,以便于管理和服务发现。Kubernetes 源自Google 15 年生产环境的运维经验,同时凝聚了社区的最佳创意和实践。

阅读全文 » 645天前
2023年02月15日

生活札记 Docker+K8S+Devops零基础入门教程之Docker

docker是一种运行于 Linux 和 Windows 上的软件,用于创建、管理和编排容器。Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。docker images | grep hello | awk '{print $2}'

阅读全文 » 651天前
2023年02月08日

技术饭 微信分享:分享签名、分享链接需要注意的细节

微信分享JSSDK在1.4.0之后,废弃了很多的方法如:onMenuShareTimeline、onMenuShareAppMessage、onMenuShareQQ等,取而代之的是:自定义“分享给朋友”及“分享到QQ”按钮的分享内容(updateAppMessageShareData)、自定义“分享到朋友圈”及“分享到 QQ 空间”按钮的分享内容(updateTimelineShareData)

阅读全文 » 680天前
2023年01月11日

吃瓜群众 吴亦凡获刑13年附加驱逐出境

2022年11月25日上午,北京市朝阳区人民法院一审公开宣判被告人吴亦凡强奸、聚众淫乱案,对被告人吴亦凡以强奸罪判处有期徒刑十一年六个月,附加驱逐出境;以聚众淫乱罪判处有期徒刑一年十个月,数罪并罚,决定执行有期徒刑十三年,附加驱逐出境。 ​

阅读全文 » 727天前
2022年11月25日

技术饭 VS Code出现“由于找不到ffmpeg.dll,无法继续执行代码”的系统错误

点击桌面vs code快捷方式出现如图错误。打开Microsoft VS Code 文件夹,VS Code出现“由于找不到ffmpeg.dll,无法继续执行代码”的系统错误,发现一部分文件被打包进了一个叫“_”的文件夹(真奇怪啊),把该文件夹里的全部文件取出至Microsoft VS Code文件夹。可以正常打开Vs Code。

阅读全文 » 769天前
2022年10月14日

生活札记 Python学习笔记 - 进阶(二)

Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。

阅读全文 » 798天前
2022年09月15日

生活札记 Python学习笔记 - 入门(一)

Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。

阅读全文 » 830天前
2022年08月13日

技术饭 go的无限极分类

go的无限极分类,表结构是带有id、pid、name、rule,所有数据读取出来之后需要进行child之类的组装,刚学习go不久,搞了大半天也是迷迷糊糊,后来大佬帮我搞一下就出来了,十分感谢~~~

阅读全文 » 843天前
2022年08月01日

技术饭 Git:fatal: No url found for submodule path ‘xxx/xxx‘ in .gitmodules gitsubmodule子仓库无法拉取问题

Git:fatal: No url found for submodule path ‘xxx/xxx‘ in .gitmodules gitsubmodule子仓库无法拉取问题,报错:golang.org/x/mod/semver: gitee.com/DXTeam/idea-go.git@v0.0.0 (replaced by ./submodule/idea-go.git): reading submodule\idea-go.git\go.mod: open F:\wnmp\wwwgit\auth\submodule\idea-go.git\go.mod: The system cannot find the file specified.

阅读全文 » 847天前
2022年07月27日