性能优化
文章平均质量分 79
云焰
集思广益,不必拘执,融百家之长为吾所用。
展开
-
JWT机制原理及实战指南
介绍JWT,JSON Web Token,开放的、行业标准(RFC 7519),用于网络应用环境间安全传递声明。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的业务逻辑所须的声明信息。特点:跨语言:支持主流语言自包含:包含必要的所有信息,如用户信息和签名等易传递:很方便通过HTTP头部传递具体来说:JWT 默认是不加密,但也是可以加密的。生成原始 Token 以后,可以用密钥再加密一次JWT 不加密的情况下,不能原创 2022-05-02 20:10:14 · 1066 阅读 · 0 评论 -
GoLang-Gin框架之自动路由封装
Gin框架封装了基础框架,给开发人员带来了很多方便,但是具体项目中,如果只使用Gin框架原生的来开发,还是有些单薄,如Gin的路由,写法比较冗长,如果开发项目,代码量过多,冗余重复代码比较多,看起来逻辑不够清晰,我们经过一些封装可能就比较简单清晰,我们就可以专注于业务逻辑的实现来编码了。原创 2022-04-26 00:23:29 · 4966 阅读 · 2 评论 -
laravel框架之模型
介绍 MVC模式中的Model模型,就是一个快速操作数据库(准确的说是对应的数据表,一个模型对应一个数据表)的方法,可以利用模型加上一些自己想要的操作对数据表进行快速操作。如查找特定的记录,增删查改都可。很多语言(Java、Go)都会提供Model的封装,Java有Hibernate,Go的Gin框架的Gorm等,这些封装的提供了接口方法来实现MVC程序逻辑。laravel框架提供的一套Model机制,很多方面值得学习,模型是laravel框架很重要的基础,Eloquent ORM组件提供...原创 2021-06-18 00:19:09 · 1303 阅读 · 3 评论 -
laravel之实现秒杀
介绍 秒杀多用在电商中,秒杀、抢购、抢票等实现特定需求场景,都可以归为一种资源争用模式,要保证交易的安全性、可靠性,实现方法较多。先看下秒杀的特点、逻辑。 秒杀特点:抢购人数远多于库存,读写并发巨大 库存少,有效写少 写需强一致性,商品不能超卖 读一致性要求并不高 秒杀逻辑: 1.获取秒杀抢购数据信息 ⒉.校验抢购商品的信息,主要商品类型,库存,上下架,时间进行校验 ...原创 2021-06-16 20:26:43 · 1075 阅读 · 4 评论 -
linux时间同步
介绍 linux作为服务器使用时,时间保持正确同步很重要,比如秒杀等场景,用到系统时间如果不精确,到了准点了,秒杀没有及时开始、结束,大家对系统就很不信任。所以部署服务器时,我们必须将系统时间调整准确,随时都要准确。参考Linux系统时间同步方法小结:https://www.cnblogs.com/williamjie/p/10768657.html方法本人以linux,centos7为例,进行如下步骤。安装ntpdate工具# yum install -...原创 2021-06-16 15:22:43 · 513 阅读 · 0 评论 -
laravel之rabbitmq组件使用
介绍 laravel入门及技术指南,参见相关文章。laravel集成使用消息中间件rabbitmq,提供服务器异步消息处理,提升服务器性能。下面谈谈如何安装及集成使用。安装代码集成.env文件...#laravel默认连接为sync,改为rabbitmq QUEUE_CONNECTION=rabbitmq#增加rabbitmq QUEUE_DRIVER=rabbitmqRABBITMQ_HOST=172.17.0.3RABBITMQ_PORT=567...原创 2021-06-15 18:17:47 · 2727 阅读 · 2 评论 -
laravel之laravels组件构建Redis连接池
介绍 laravel框架入门可参见(《laravel入门及技术指南》https://blog.csdn.net/yan_dk/article/details/117375890),laravel结合swoole,可以实现高性能Http服务,提升应用性能。hhxsv5/laravel-s是第三方的组件包,我们可以安装使用。可参见(《laravel之laravel-s组件技术指南》https://blog.csdn.net/yan_dk/article/details/117867961)...原创 2021-06-13 20:13:58 · 1284 阅读 · 0 评论 -
laravel之laravel-s组件技术指南
介绍 laravel框架入门可参见(《laravel入门及技术指南》https://blog.csdn.net/yan_dk/article/details/117375890),laravel结合swoole,可以实现高性能Http服务,提升应用性能。hhxsv5/laravel-s是第三方的组件包,我们可以安装使用。参考Laravel6使用hhxsv5/laravel-s实现高性能Http服务https://blog.csdn.net/php12345679/ar...原创 2021-06-13 09:44:58 · 995 阅读 · 0 评论 -
GoLang之统一框架
GoLang语言开发,有beego、gin等框架,gin框架使用较多,笔者也较为熟悉。gin框架提供的是基础框架,对于如何封装框架gin框架没有做固定的要求,我们在go程序开发中对它进行的封装也有很多不同的方法,笔者看到的很多golang的gin框架封装代码的可以说千差万别、各自为阵,有些封装的也冗余太多,不够精简和统一,其实让我们更加清晰的看懂和进行加入团队进行开发的框架结构,决定了我们的开发效率,如果很多差异太多的框架封装,往往会占用我们很多学习成本。原创 2021-06-10 17:13:51 · 1097 阅读 · 2 评论 -
docker之apt-get update解决方法
问题 使用docker生成容器后,进入容器后,提供的指令很少,使用apt-get组件进行扩展,但是会遇到apt-get update有时会失败的问题。参考创建好docker后不能apt-get update解决方法https://blog.csdn.net/TJH_I_CAN/article/details/80812022?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-1&spm=1001....原创 2021-06-08 00:55:16 · 6508 阅读 · 0 评论 -
docker搭建ngnix+php
介绍 我们应用中往往会需要不同的应用服务器环境,如果服务器中已经有应用程序在运行了,如果用原有的环境可能不能满足需求,如果覆盖安装新环境,会影响服务器原有程序正常运行。比如我要新建一个php7.3的应用,而现在环境是7.1。比较好的方式是使用docker重新搭建,我们常见nginx,nginx本身不能解析php,需要再安装新的php,做好fastcgi的对应php解析,才能正常运行php程序。下面我们用docker来搭建一下这个环境。参考https://blog.csdn....原创 2021-06-08 00:51:46 · 436 阅读 · 2 评论 -
GoLang之网络并发编程
介绍并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。网络程序性能比较差、网络流量高时容易发生并发问题。并发涉及进程、线程的执行,以及CPU对进程、线程的调度等问题,如果没有控制好并发的应对处理,可能造成程序执行错误(如超卖、支付数据错误等严重问题),也会造成网站系统瘫痪等问题。因此并发问题需要对程序的优化、系统调优处理。Go语言自身性能优良、以及提供协程、消息队列等特性,可以有效应对并发问原创 2021-06-06 20:47:02 · 196 阅读 · 0 评论 -
GoLang之网络基本编程
介绍网络通信:就是两个程序(我们称为客户端、服务端)通信方式。网络通信协议:就是通信约定的规范协议(tcp/udp/websocket/http)。Tcp: 传输控制协议(TCP,Transmission Control Protocol),是一种面向连接(连接导向)的、可靠的、基于字节流的传输层(Transport layer)通信协议,因为是面向连接的协议,数据像水流一样传输,会存在黏包问题。场景:短信、聊天Udp:用户数据报协议(UDP,User Datagram Protocol原创 2021-06-06 11:17:06 · 238 阅读 · 0 评论 -
kafka入门及技术指南
介绍 Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。主要应用场景是:日志收集系统和消息系统。1. kafka具备吞吐量大无限扩容的特点,相比起同类,它更适合需要无限扩容, 吞吐量要大(并发量很大) 的场景,比如日志大数据等。 2. 本来...原创 2021-06-05 18:52:32 · 494 阅读 · 1 评论 -
GoLang之RPC学习及技术指南
介绍RPC 原理示例1(简单通信)RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。RPC原理及调用步骤 了解完了RPC技术的组成结构我们来看一下具体是如何实现客户端到服务端的调用的。实际上,如果我们想要在网络中的任意两台计算机上实现远程调用过程,要 解决很多问题,比如: 两台物理机器在网络中要建立稳定可靠的通信连接。 两台服务器的通信协议的定义问题,即两台原创 2021-06-04 00:46:54 · 436 阅读 · 0 评论 -
openresty入门及技术指南
介绍 OpenResty是一个基于Nginx与Lua的高性能web平台,由中国人章亦春发起,其内部集成了大量精良的Lua库、第三方模块以及大多数的依赖项。用于方便搭建能处理超高并发、扩展性极高的动态Web应用、web服 务和动态网关OpenResty简单理解成就相当于封装了NGINX,并且集成了LUA脚本,开发人员只需要简单的使用其提供了模块就可以实现相关的逻辑,而不像之前,还需要在NGINX中编写lua的脚本。 安装部署我们在linux环境使用docker...原创 2021-05-25 18:22:39 · 361 阅读 · 0 评论 -
Elasticsearch入门及技术指南
简介 Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、 分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将 对应的语句分词,将其权重和...原创 2021-05-24 12:30:34 · 435 阅读 · 0 评论 -
rabbitmq入门及指南
参考https://registry.hub.docker.com/_/rabbitmq/https://blog.csdn.net/qq_34701838/article/details/107231204 最新安装rabbitmq都要求使用docker安装(大概现在趋势很多linux组件都会使用docker安装),以前的安装文档可能不适用了,有些都不提供链接地址下载安装了。所以我们要先安装docker,参考可以链接https://blog.csdn.net/yan_dk/art...原创 2021-05-20 19:56:17 · 161 阅读 · 0 评论 -
php处理ajax请求json格式的方法
web应用,使用ajax调用,请求参数类型为json时,php仅用$_POST或$_REQUEST方式时,会出现接受不到请求参数,因为是json格式需要一定的转换处理。我们抽取方法代码如下:/** * 获取 post 参数; 在 content_type 为 application/json 时,自动解析 json * @return array */ public function initPostData() { $data=f...原创 2020-12-03 22:36:52 · 580 阅读 · 0 评论 -
mysql迁移时遇到表坏,打不开,提示table not exists问题解决方法
mysql迁移数据库表数据,后来发现个别的表打开时提示“table not exists”,明明看见这个表,却提示这个错误,如下是处理方法:很简单的方法:在mysql数据库安装目录的data目录下找到相应的数据库,查找到相关的表名,以.ibd后缀的文件,删除掉,然后重新迁移这张表,就解决了。...原创 2020-11-29 10:31:38 · 1271 阅读 · 0 评论 -
php实现JWT验证的方法
JWT,全称Json web token,是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。php实现JWT,本例使用thinkphp框架,代码如下:在vendor包中建...原创 2020-11-26 00:12:58 · 401 阅读 · 1 评论 -
php实现接口http协议中的Authorization Basic认证、调用
我们应用API接口实现中通过Authorization Basic认证是比较常见的,下面谈谈使用php实现接口认证、调用的方法。需求场景描述应用系统API接口,需要通过Authorization Basic认证实现,接口方给客户端相应的密钥才能实现认证,并且客户端也通过Authorization Basic认证的调用来实现通信。实现方法是,将http协议请求头中压入认证字符串,认证字符串可以以base64编码加密,格式如:Authorization:Basic base64_enco...原创 2020-11-25 20:05:52 · 3262 阅读 · 0 评论 -
伪静态相关配置技巧实例(nginx/apache)
web开发中伪静态的配置比较常见,主要用在nginx、apache应用服务器,语法也不相同,其中要用到正则表达式,这方面我们可以看看相关的文档。配置文件一般在web根路径下,如下图:nginx的配置文件如下if (!-d $request_filename){set $rule_0 1$rule_0;}if (!-f $request_filename){set $rule_0 2$rule_0;}if (!-e $request_filename) {rewr...原创 2020-11-24 19:52:44 · 323 阅读 · 0 评论 -
php使用yield进行大量数据处理方法
我们在处理大量数据,比如100万数据导入数据库,一般常规方法如果使用普通循环做逐个处理,很快会导致内存崩溃,无法实现正常的处理。php提供了yield方法来处理。我们看看如何来做的吧。for($i=0;$i<1000000;$i++){ echo $i; //这里处理业务数据}我们看到上面是,普通循环100万次处理,这样处理如果仅输出$i,比较小,但累计起来也会使电脑变得很慢,直至内存耗尽程序崩溃,如果是数据导入,需要每次连接数据库非常耗内存操作的话,会很快崩溃。所以...原创 2020-11-23 15:19:30 · 1545 阅读 · 0 评论 -
php处理正则表达式相关技巧方法
正则表达式是一门通用语言,应用比较广泛,就像json,他的应用很多语言实现,主要是解析处理相关的字符串的数据结构,下面谈谈php处理正则表达式的方法。比较常用的方法如下:正则匹配 preg_match,preg_match_all//PHP匹配多对中括号中的内容:$str = '这是[a12]def[b25]我的[c26]';$pattern = '/\[([a-z0-9]*)\]/';preg_match_all($pattern, $str, $match);var_...原创 2020-11-17 17:28:35 · 143 阅读 · 0 评论 -
谈谈悲观锁和乐观锁
我们在软件开发中比较常见的概念,数据库的悲观锁、乐观锁。 为什么会有这两种锁,主要解决什么问题? 通常是解决并发读写的问题,用生活中例子就是,上厕所需要上锁,一次只能进1个人,加上锁等方便完后再轮到下一个人得到锁去方便。用在数据库方面的锁,只不过是换了一种技术概念,叫做并发读写的锁。悲观锁,顾名思义,是比较悲观的锁,在写入时认为别人也会同时改写数据,所以会上这种锁,防止别人改写,这种加锁限制比较严格些,导致吞吐量下降,适用于多写少读的场景。乐观锁,顾名思义,是比较乐观的锁,允许多人同...原创 2020-11-05 17:47:31 · 215 阅读 · 0 评论 -
Json数据的解析处理技巧小结
关于Json数据结构的概念和内容这里不必过多讲解(网上资料很多),在我们很多项目中都使用Json来传递数据,以及作为Api 接口输入输出的参数,因为Json数据结构相对确实比较统一、清晰、简化,有助于减少和优化开发的处理代码,很多不同系统可能是用不同语言、不同框架写的,如果没有一个统一的数据结构,那么代码可能会千变万化,无法把握。如果有了Json统一的结构,那么我们去做统一的解析处理,统一的接口、实现方法允许不同。这样也便于对系统的整合和重构。那么我们来看看使用Json解析处理有哪些技巧吧...原创 2020-10-29 20:15:04 · 480 阅读 · 1 评论 -
切换系统php版本的环境
linux系统中部署的php软件或网站,往往使用不同的php版本,那么当前的php版本是多少,可能在线运行着一些定时任务,如果版本不对,有些php程序运行可能会出现错误,所以当前的php版本切换到相应的版本是比较关键的。我们看一下如何切换。1.查看当前的php版本环境#php -v2.切换当前php版本#ln -sf /www/server/php/71/bin/php /usr/bin/php#php -v发现当前php版本已经正常切换。...原创 2020-10-16 08:26:36 · 352 阅读 · 0 评论 -
Redis入门及技术指南之2
参考文档Redis入门及技术指南之1:https://blog.csdn.net/yan_dk/article/details/89470966上述《Redis入门及技术指南之1》介绍了redis的环境安装。回顾redis基本指令#redis-cli -h [localhost]-p [6379] //连接redis>auth [password] //认证>flushall //清除全部缓存,谨慎操作>keys * //列出全部...原创 2020-10-06 18:48:44 · 162 阅读 · 0 评论 -
Lua入门及技术指南之2
参考文档https://blog.csdn.net/yan_dk/article/details/89643763lua的环境安装及入门可参考上述文档。为什么要引入lua脚本?Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。redis是单线程的,每执行一次redis,都会有脚本缓存,如果执行过多redis操作指令,会非常消耗内存。那么引入高性能的lua脚本,可以将批量的redis操..原创 2020-10-06 17:25:15 · 463 阅读 · 0 评论 -
docker建立mysql集群-使用percona-xtradb-cluster
经过几天的探索,使用docker+percona-xtradb-cluster搭建mysql集群环境终于成功了。期间遇到一些错误,先分享一下:1.docker pull percona/percona-xtradb-cluster,这个最新版本搭建时,第一主节点可以搭建成功,但是第2节点连接集群时出现闪退,查docker日志发现报错“New joining cluster node didn't find needed SSL artifacts”,应该是此版本要求节点间通讯使用SSL,配置的...原创 2020-09-03 16:37:16 · 520 阅读 · 0 评论 -
docker启动容器后就闪退的解决方法参考
经常遇到docker运行容器后,会启动不了,不能正常运行的情况,如下图:几天探索方法未果,无奈。经过查找资料了解到原因,:Docker容器后台运行,就必须有一个前台进程.容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。针对这种情况的解决方法是:在运行容器指令,同时加一个tail指令,这样docker容器后台发现前台进程运行,就不会退出,一直运行了。示例指令如下:#docker run -d --name mysql_s02 ... /bin/ba.原创 2020-09-01 00:28:08 · 11782 阅读 · 1 评论 -
成功处理挖矿病毒劫持,crontab注入顽固脚本,cpu、内存飙升
本人的linux centos服务器被挖矿病毒劫持有几个月了,crontab 顽固脚本一直占用,删除也删除不了,cpu、内存一直被长期占用,真是非常痛苦。最近花了几天时间研究,终于成功处理了。cpu、内存也平稳运行了,心情轻松了很多。 有需要技术支持解决问题的朋友,可以联系我。手机:18034263356...原创 2020-08-30 09:17:07 · 2278 阅读 · 0 评论 -
Beanstalkd消息中间件实现秒杀功能
Beanstalkd技术及环境搭建参考《消息中间件Beanstalkd技术指南》参见:https://blog.csdn.net/yan_dk/article/details/104176990Beanstalked的初步了解和使用(包括利用beanstalkd 秒杀消息队列的实现)https://blog.csdn.net/m_nanle_xiaobudiu/article/det...原创 2020-02-07 23:59:34 · 508 阅读 · 0 评论 -
linux配置开机启动进程的方法
linux服务器安装很多软件Mysql,Apache等,安装后有些提供开机自动启动的方法,而有些使用的开源组件没有提供这些方法,这样我们就需要自己来配置开机自动启动。如:消息中间件beanstalkd。我们就以消息中间件beanstalkd为例,服务器系统为Centos7,讲解如何配置。beanstalkd技术指南参考:https://mp.csdn.net/posted...原创 2020-02-06 11:38:43 · 422 阅读 · 0 评论 -
Webpack入门及技术指南
初识Webpack webpack是一个基于node.js编写的资源整合打包器(官方原称:MODULE BUNDLER),通过指定入口文件,他能将该入口文件中引用的所有前端资源都合并打包,并最终输出到你指定的输出目录。参考资料我为什么要使用Webpack?https://www.jianshu.com/p/9f2d0b64f3b8什么是Webpack?怎么使用...原创 2020-01-31 23:55:12 · 222 阅读 · 0 评论 -
关于php序列化serialize字符串结构的说明
许多php项目中运用序列化serialize字符串存取、解析变量,或者保存到数据库字段中,不是Json格式、XML格式,是一种特有的结构,如果不注意删除的部分字符,就会解析不正确,报错导致程序运行不正常了。最近有个项目中,因为程序导致存取在数据库中字段的序列号字符串丢失,需要恢复数据,就需要对结构熟悉,才能解决问题。下面我们对这个序列化字符串进行说明。格式类似json,但是有很...原创 2019-10-16 10:49:23 · 1298 阅读 · 0 评论 -
微信小程序调用获取手机号接口,出现-41003错误
参考:https://blog.csdn.net/qq_39474344/article/details/90512478 本人在做微信小程序获取手机号的时候遇到了-41003问题,主要是在获取手机号的回调函数里面使用了wx.login(),导致刷新了登录态。偶尔有一定几率出现-41003问题。查阅了相关资料,说是encryptedData中有+号,或者是iv内空格导致解密失败...原创 2019-10-11 18:09:43 · 2348 阅读 · 0 评论 -
谈网络通信处理的原理的演进及编程实现详解
最早的网络通信是两台联网的计算机是通过操作系统的套接字(Socket)部件进行通信的,Socket也成为后来网络通信的基础部件。随着网络通信的普及,多台计算机连接网络,网络通信分层,经典的OSI的7层协议、TCP/IP的四层协议这里就不再赘述。 重点讲下基于TCP的客户端与服务器通信的演进,大致如下:单进程阻塞的网络服务器 早期网络通信是...原创 2019-04-26 11:14:25 · 470 阅读 · 0 评论 -
Mysql入门及技术指南
1. Mysql基础介绍初识Mysql官网地址:https://www.mysql.com/版本包括4种:Oracle MySQL Cloud Service、Enterprise 、Community、Cluster CGE我们常用的是Community(社区)版,目前最新版本为5.7.x2. Mysql安装Docker方式安装(推荐)参见:https://bl...原创 2019-04-25 20:30:32 · 142 阅读 · 0 评论