自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

谷子的博客

心得,问题分享,简单写写~~

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

转载 聊聊 Interface

在开发中我们的应用程序应该依赖于抽象(接口)而不是具体的(类)。为什么?我们开发的业务需求随时间和不断扩张而变化,我们的代码也是如此。所以我们的代码必须灵活。代码到接口使我们的代码松散耦合且灵活。示例class Logger { public function log($content) { //输出 Log 日志到文件。 echo "Log to file"; }}一个简单的 Logger 类将日志记录到文件,我们来在控制器中调

2022-05-16 18:20:21 335

原创 Redis 慢查询日志(一)

介绍Redis 的慢查询日志功能用于记录执行时间超过给定时长的执行命令,用户可以通过这个功能产生的日志来见识和优化查询速度。服务器有两个配置选项和慢查询日志有关:slowlog-log-slower-than该选项指定执行时间超过多少微秒的命令请求会被记录到日志上。slowlog-max-len该选项指定服务器最多保存多少条慢查询日志。服务器优先使用先进先出的方式保存指定条数的慢查询日志,当服务器存储的慢查询日志数量等于该选项的值时,服务器在添加一条新的慢查询日志前,会先将最旧的一条慢查询

2021-08-31 21:26:45 441

转载 如何设计一个高性能短链系统?

前言今天,我们来谈谈如何设计一个高性能短链系统短链系统设计看起来很简单,但每个点都能展开很多知识点,也是在面试中非常适合考察侯选人的一道设计题本文将会结合我们生产上稳定运行两年之久的高性能短链系统给大家简单介绍下设计这套系统所涉及的一些思路,希望对大家能有一些帮助。本文将会从以下几个方面来讲解,每个点包含的信息量都不少,相信大家看完肯定有收获。短链有啥好处,用长链不香吗短链跳转的基本原理短链生成的几种方法高性能短链的架构设计注:里面涉及到不少布隆过滤器,snowflake 等技术,由于

2021-07-30 19:55:34 1104

转载 HTTPOXY 漏洞说明

这里有一个核心的背景是, 长久一来我们习惯了使用一个名为"http_proxy"的环境变量来设置我们的请求代理。http_proxy=127.0.0.1:9999 wget http://www.laruence.com/如何形成在CGI(RFC 3875)的模式的时候, 会把请求中的Header, 加上HTTP_ 前缀, 注册为环境变量, 所以如果你在Header中发送一个Proxy:xxxxxx, 那么PHP就会把他注册为HTTP_PROXY环境变量, 于是getenv(“HTTP_PROXY”

2021-06-01 19:02:59 468

原创 愿大家努力终有所成

“我走了很远的路,吃了很多的苦,才将这份博士学位论文送到你的面前。二十二载求学路,一路风雨泥泞,许多不容易。如梦一场,仿佛昨天一家人才团聚过。”昨天突然看到一篇文章,讲的是中国科学院自动化所:黄国平博士的一篇论文的致谢部分火爆全网。看完之后感触很深,也在为自己曾经走过的时光惋惜。黄国平博士:黄国平在从中科院自动化所毕业后,进入腾讯工作,目前为腾讯AI Lab的高级研究员,研究方向是机器翻译。写这篇文章想留个印记,也想诫勉一下自己,虽然现在没有黄国平博士的成就那么大,但是还是要有让自己每天有一点进.

2021-05-18 08:55:37 210 2

原创 PHP8来了-新特性

文章目录简介新特性1、字符串与数字的比较2、构造器初始化属性3、[注解](https://www.php.net/manual/zh/language.attributes.php)3.1、注解类的声明3.2、注解语法及使用4、命名参数4.1、函数4.2、类参数5、Nullsafe 运算符6、Match 表达式7、联合类型8、即时编译JIT9、类型系统与错误处理的改进10、新的类,接口,函数11、其他语法调整和改进简介PHP 8.0 是 PHP 语言的一个主版本更新。它包含了很多新功能与优化项, 包

2021-04-09 11:07:27 359

原创 IDEA中启动Tomcat解决中文乱码问题

这个问题的解决方法,网上一大堆。但是很多是无效的,或者说很麻烦的。今天刚好重新下载了IDEA,出现了这个问题,顺道做个笔记,给初学的同学们一个小帮助。我的版本:IntelliJ IDEA 2020.2.3(版本影响不大解决方法一致)步骤1、首先打开idea,点击顶部导航 Help按钮,选择:Edit Custom VM Options(一般在倒数几个位置)2、点击后编辑改文件,增加以下这行配置:-Dfile.encoding=UTF-83、重启IDEA即可4、解决乱码后效果当然

2021-03-25 17:08:31 2997 3

原创 Vue 状态管理与Vuex

Vuex 是什么?Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。上面的是官方的说法,有兴趣的可以详细了解下:Vuex状态管理与使用场景我们知道Vue中的父子组件或者说跨级和兄弟组件在通信的时候,可以使用bus(中央事件总线)的方法,用来触发和接收事件,进一步起到通信的作用。Vuex解决的问题和 bus类似,它作为Vue的一个组件使用,可以更好的管理和维护整个项目的组件状态。常规例子一

2021-02-26 15:35:22 168

转载 【漏洞预警】Laravel <= 8.4.2 Debug模式 _ignition 远程代码执行漏洞

2021年1月13日,阿里云应急响应中心监控到国外某安全研究团队披露了Laravel <= 8.4.2 存在远程代码执行漏洞。漏洞描述Laravel 是一个免费的开源 PHP Web 框架,旨在实现的Web软件的MVC架构。2021年1月13日,阿里云应急响应中心监控到国外某安全研究团队披露了 Laravel <= 8.4.2 存在远程代码执行漏洞。当Laravel开启了Debug模式时,由于Laravel自带的Ignition功能的某些接口存在过滤不严,攻击者可以发起恶意请求,通过构造恶意

2021-01-13 17:53:52 1616

转载 PHP Kafka 消息队列使用

安装 Kafka 服务访问 kafka 官网 ,下载最新的版本wget https://mirror.bit.edu.cn/apache/kafka/2.5.0/kafka_2.13-2.5.0.tgz解压,进入目录tar -zxvf kafka_2.13-2.5.0.tgzcd kafka_2.13-2.5.0启动 Kafka 服务使用安装包中的脚本启动单节点 Zookeeper 实例bin/zookeeper-server-start.sh -daemon config/zookee

2020-12-15 14:58:47 456

原创 项目安全简谈

文章目录1.SQL注入漏洞2.XSS漏洞3.CSRF 跨站请求伪造漏洞4.逻辑漏洞前段时间接手了一个老项目的维护,发现了其中一些不规范的写法,有些已经对于整个项目的安全留下了潜在的隐患。今天就来说一下在PHP项目中几个常见的漏洞类型(以下代码演示框架为Laravel7)。1.SQL注入漏洞SQL注入算是一种最早就存在的,并且是非常流行的漏洞之一,危险性也同他的年龄成正比。原理就是:将未经过滤的用户输入拼接到 SQL 语句中。$product = DB::select("select * from

2020-10-24 14:57:14 467

原创 Laravel 中JWT做用户认证的使用

文章目录JWT用户认证的使用1.jwt安装2.生成配置文件3.生成秘钥4.修改auth配置(config/auth.php)5.User模型修改(app/User.php)6.生成Auth控制器7.路由编写(routes/api.php)测试1.token的获取2.使用token获取用户信息JWT JWT 全称叫 JSON Web Token, 是一个非常轻巧的规范。这个规范允许我们使用 JWT 在用户和服务器之间传递安全可靠的信息。前段时间,一个群里有人私聊问这个问题,我说随后写个基础的用户认证教

2020-09-07 18:05:38 1388

原创 warning: LF will be replaced by CRLF in .gitignore.

记录个小错误吧~warning: LF will be replaced by CRLF in .gitignore.The file will have its original line endings in your working directory解决:git config --global core.autocrlf false原因:因为路径中存在 / 的符号转义问题,设置为false不转符号...

2020-08-27 14:32:00 724

转载 PHP开发API离不开签名验证,你是如何设计?

开发过程中,我们经常会与接口打交道,有的时候是调取别人网站的接口,有的时候是为他人提供自己网站的接口,但是在这调取的过程中都离不开签名验证。我们在设计签名验证的时候,请注意要满足以下几点:可变性:每次的签名必须是不一样的。时效性:每次请求的时效,过期作废等。唯一性:每次的签名是唯一的。完整性:能够对传入数据进行验证,防止篡改。这里介绍一种方式,是目前国内互联网公司常用的一种方式,其中淘宝的支付宝支付接口、淘宝开放平台接口、腾讯开放平台等应用的一种方式。1.签名参数sign生成的方法第1

2020-07-31 16:35:07 271

转载 swoole-做一顿饭来理解协程

协程协程可以简单理解为线程,只不过这个线程是用户态的,不需要操作系统参与,创建销毁和切换的成本非常低,和线程不同的是协程没法利用多核 cpu 的,想利用多核 cpu 需要依赖 Swoole 的多进程模型。—— swoole 协程一章我的理解可以把协程看成一道小学数学的一道题目:“合理安排时间”,来我们先做一道题目:小明下班后回家煮饭,煲汤需要 10 分钟,煮饭需要 8 分钟, 炒菜需要 5 分钟,,请问小明最少需要多少分钟能煮好饭?同步版煮饭public function async()

2020-06-11 09:25:49 612

原创 关于Laravel中的异常处理

异常异常指的是在程序运行过程中发生的异常事件,通常是由外部问题所导致的。异常处理是程序开发中经常遇到的任务,如何处理异常,从一定程度上反映了我们的程序是否足够严谨。在本文的例子中,我将异常大致分为 用户异常 和 系统异常。未处理示例先来个未进行异常处理的例子,此处是关于商城中商品上下架展示的例子。访问商品详情页的时候,在处理非正常流程时使用了throw new Exception抛出异...

2020-04-24 09:47:39 2145

原创 PHP artisan storage:link 出现 symlink (): Protocol error

简单记录:Homestead中的Laravel项目执行创建软链接操作:PHP artisan storage:link 的时候出现symlink (): Protocol error................等错误。你可以这样操作:退出Homestead:exit关闭vagrant:vagrant halt以管理员身份重启cmd,进入homestead虚拟机,进入项...

2020-03-28 12:49:57 773

转载 使用vue实现HTML页面生成图片

这篇文章写得是实现HTML页面生成图片(附带二维码)并保存,之前做过这个需求,不过当时不太会使用VUE,采用的方法是后端来生成,前端也是使用了html2canvas辅助生成,比较麻烦,并且有延迟效果,刚好看到这篇文章,转载一番,做个记录。背景随着网络的发展,越来越多的网络平台应运而生。如何获得更多的流量,吸引更多的眼球已经成为网络平台生存、发展的必要条件。现在网络平台最常见的一种宣传方式就是人...

2020-03-26 15:27:15 5748 5

原创 Laravel MIX的使用(安装)

Laravel Mix 提供了定义 Webpack 构建步骤的 API,用于在应用中使用常见的 CSS 和 JavaScript 预处理器。通过链式调用这些简洁方法,可以流畅地定义资源管道。当然,你不一定非要使用它来开发应用;安装在安装 Mix 之前,要先确保机器上已经安装了 Node.js 和 NPM。如果你不知道是否安装了可以查看一下版本:node -vnpm -vLarave...

2019-12-10 14:37:31 2146

转载 Laravel 的 Eloquent ORM 之 什么是 N+1 问题,以及如何解决 Laravel 的 N+1 问题?

对象关系映射(ORM)使得处理数据惊人地简单。由于以面向对象的方式定义数据之间关系使得查询关联模型数据变得容易,开发者不太需要关注数据底层调用。ORM 的标准数据优化是渴望式加载相关数据。我们将建立一些示例关系,然后逐步了解查询随着渴望式加载和非渴望式加载变化。我喜欢直接使用代码来试验一些东西,并通过一些示例来说明渴望式加载是如何工作的,这将进一步帮助你理解如何优化查询。介绍在基本级别,OR...

2019-11-22 14:48:36 961

转载 实用 Docker 速查大全:快速认识 Docker 的概念和使用方法

文章转载自:https://learnku.com/articles/22822前面两篇文章,基于Docker搭建的MySQL主从复制。后来有网友QQ问我有没有Docker的相关文章,说没有接触过这个Docker,不知道如何上手,今天就借花献佛,转载一篇比较全面的Docker大全文章。本篇篇幅比较长,请耐心看完。如果转载请注明原文出处,不要注明本篇URL,尊重别人劳动成果。文章来自:lea...

2019-11-06 18:22:57 680

原创 MySQL-基于docker+GTID实现Replication集群主从复制及读写分离

在上一篇文章中:MySQL-基于docker实现Replication集群主从复制及读写分离介绍了基于Docker实现的MySQL主从,利用的是普通的日志方式实现的。文章末尾,提了一下基于GTID实现主从,以及它的优点。不过没有写完,这一篇就利用中午休息的时间介绍下基于GTID的主从实现。GTIDGTID,其全称是Global Transaction Identifier,可简化MySQL的主...

2019-10-31 14:13:44 535

原创 MySQL-基于docker实现Replication集群主从复制及读写分离

什么是MySQL集群MySQL集群是一个无共享的(shared-nothing)、分布式节点架构的存储方案,其目的是提供容错性和高可用性能。说的直白一点就是要做一件事,一个人做着非常吃力,没有那么多精力,所以需要多个人分工合作,最终一起完成。MySQL集群就是这个道理,比如读写分离等等。这个说的比较简单了,今天这篇文章就是一个简单的一主一从双节点的Replication集群,为了测试使用。介绍...

2019-10-24 17:21:59 1311

转载 使用 PHP Insights 在终端查看 PHP 项目代码质量

PHP Insights 是一个由 Nuno Maduro 发布的、可在控制台进行 PHP 即时质量检查的拓展包。在项目的 readme 文件中,可以发现 PHP Insights 的主要功能包含:代码质量 与 代码风格 分析一个针对于代码 结构 和 复杂度 的漂亮的预览界面在 Laravel、Symfony 中可开箱即用的设计,当然,还支持更多框架包含的内建的检查项使代码更可靠...

2019-09-29 18:11:13 298

原创 PHP中Traits详解及如何利用Traits实现代码重用

在正题开始之前,先来聊下PHP面向对象的三大特性:封装:把客观事物封装成抽象的类,且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。继承:让某个类型的对象获得另一个类型的对象的属性的方法,它支持按级分类的概念。多态:一个类实例的相同方法在不同情形有不同表现形式。我们说一下继承这个问题,PHP是一门单继承的语言,不支持多继承,一次只能继承一个类。但是上有政策,下有...

2019-09-18 16:18:45 881

原创 Vue-Ant Design Vue-自定义搜索功能的实现

之前几篇文章介绍了Ant Design Vue的部分组件使用,如,过滤,table等等。当然在中后台项目中,table是必不可少的,随之配套的就是搜索功能。应该说所有的中后台项目中搜索功能都是非常重要的一块。该篇就介绍一下,如何在Ant Design Vue中实现搜索。下面的案例所使用到的UI和中后台设计,前面也介绍过。是基于 Ant Design 体系精心设计的:Ant Design Pro ...

2019-09-17 17:17:27 13901 4

转载 Nginx 性能调优实战

本文转载自Linux社区我觉得文中讲述的一些优化点是非常有用的,phper伙伴们可以关注下第7点,关于 fastcgi调优,不需要一定按照文中的配置来,结合自己的架构,业务,服务器情况等作出合理配置才是正确的。当然,文中每一项都是有用的,可以仔细阅读实践一下。下面是正文了~1.Nginx运行工作进程数量Nginx运行工作进程个数一般设置CPU的核心或者核心数x2。如果不了解cpu的核数,...

2019-08-23 09:16:52 293

原创 DNS解析、智能DNS原理及CDN应用和原理

DNS域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。简单的来说,就是平时我们访问某一个网站输入的是一个域名,如:www.taobao.com,而不会去输入一个IP来访问淘宝网站,一个比较简单的原因就是,IP我们很难记得住咯。DNS就是将域名转化成IP的一个解析过程,这样...

2019-07-21 14:51:20 2959

原创 阿里云 Composer 全量镜像

本篇转自阿里云开发者社区:https://developer.aliyun.com/composer2017-7-12日,阿里云正式上线PHP Composer全量镜像,所有PHP开发者都可以通过阿里云开发者社区developer.aliyun.com/composer加速Composer安装器。这款镜像工具的最大优势是快,几乎实现与PHP Packagist官方实时同步,每隔30秒刷新...

2019-07-17 09:02:16 1045

原创 Vue-Ant Design Pro of Vue-数据表格组件S-Table的使用(二)

在之前的一篇文章中,对S-Table组件的的数据加载和数据渲染,以及分页参数的使用进行了描述:https://blog.csdn.net/gu_wen_jie/article/details/90702427这一篇中,我想展示的是关于如何使用slot插槽来进行一些数据的过滤展示,或者说成过滤不是太准确,但是用到的确实就是过滤器,filters,具体的场景就是:比如后端给你返回的一个字段:...

2019-07-11 15:20:24 19919 2

转载 PHP 安全问题入门:10 个常见安全问题 + 实例讲解

文章转自:https://learnku.com/php/t/24930相对于其他几种语言来说, PHP 在 web 建站方面有更大的优势,即使是新手,也能很容易搭建一个网站出来。但这种优势也容易带来一些负面影响,因为很多的 PHP 教程没有涉及到安全方面的知识。此帖子分为几部分,每部分会涵盖不同的安全威胁和应对策略。但是,这并不是说你做到这几点以后,就一定能避免你的网站出现任何问题。如果...

2019-07-07 11:36:39 317

原创 Java 开发工具包 JDK11,JDK12安装后无jre如何解决

Java的JDK开发工具包相较于之前的8.0版本,新的LTS版本11.0和最新的12.0版本差距较大,在进行安装安装之后并没有jre,如何解决呢?1.自主安装jre你可以到oracle官网下载jre进行安装,目前没有对应的11.0,12.0的jre,你可以继续下载之前的8.0jre进行安装。然后在配置环境变量的时候做好配置即可。2.命令行安装假如你安装的是11.0.3版本的JDK,安装为...

2019-06-29 15:50:15 3099

原创 Redis持久化实现及使用选择

Redis这个引用一下官文Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。也就是我们常说的NoSQL数据库的一种,和Memcached一样,是一种基于内存的非关系型数据库。看到基于内存就知道至少知道了它的一个优点,快。当然也是因为基于内存的,所以才写了这篇文章,持久化,不然其中存储的数据丢失了怎么办...

2019-06-17 09:11:50 450

转载 常用的Redis集群架构及对比

Redis集群架构,不同的公司可能又不同的架构实现,一般跑不出常用的哪几种,可能在自己的业务使用上有所改动。我所用过的Redis集群架构是Redis官方版本:Redis Cluster,这也是Redis4.0+版本的产物,资料显示,2015年的时候还是试用版本,但是到现在已经是一套非常成熟的Redis集群架构,又是官方版本,稳定性,维护性都非常高。这篇文章主要是介绍几个Redis集群的架构方案,...

2019-06-13 16:45:48 1702

原创 Laravel 使用PHP_XLSXWriter实现大数据量Excel导出

我在去年写过一篇关于laravel的Excel导出文章:Laravel Excel 实现 Excel/CSV 文件导入导出功能,使用的是Laravel Excel实现的。该扩展包含Excel导入导出功能,功能点是比较完善的,但是有一个地方,当实现大量数据导出到Excel的时候,会发现侠侣很慢,然后如果开启任务管理器查看的时候会发现CPU使用率飙升,内存使用率飙升,功能是没问题,但是总体导出效果不...

2019-05-31 16:33:30 5182 2

原创 Vue-Ant Design Pro of Vue-数据表格组件S-Table的使用(一)

Table 表格是我们平时在中后台系统中用到最多的组件之一了。在Ant Design Vue中,官方提供了一个Table 表格组件。我们先来介绍一下这个组件Table 表格组件https://vue.ant.design/components/table-cn基础用法分页组件,部分字段高亮特殊显示等等。详细使用请查阅文档。筛选排序当然也可以在列表上方做常规搜索,会在后面的S-Tab...

2019-05-30 18:10:24 39581 39

原创 Vue-Ant Design Pro of Vue-配置App.vue通过router-view组件实现局部刷新

项目实际开发中,很多地方经常需要一些局部刷新功能。如:创建后返回列表,修改后返回列表,局部操作刷新…如何简洁有效的实现局部刷新呢,在Ant Design Pro of Vue中,我们可以通过router-view组件来定义一个属性来实现局部刷新。并且在入口文件配置后,可以在项目任何地方使用,非常方便。Ant Design Pro of Vue-入口App.vue下载好Ant Design P...

2019-05-23 15:00:42 5288 1

原创 Vue-Ant Design Pro of Vue

Ant Design Pro of Vue本来呢是想写一些关于Ant Design Vue的文章,不过恰好用到了一个开源的基于Ant Design Vue 开发的Ant Design Pro of Vue的中后台框架,就在此基础上写一些关于Ant Design Pro of Vue的文章。在此之前,先介绍一下Ant Design Pro of Vue。准备本地环境首先需要安装 nod...

2019-05-22 15:00:21 21391 8

转载 深入了解浏览器存储

前言随着移动网络的发展与演化,我们手机上现在除了有原生 App,还能跑“WebApp”——它即开即用,用完即走。一个优秀的 WebApp 甚至可以拥有和原生 App 媲美的功能和体验。WebApp 优异的性能表现,有一部分原因要归功于浏览器存储技术的提升。cookie存储数据的功能已经很难满足开发所需,逐渐被WebStorage、IndexedDB所取代,本文将介绍这几种存储方式的差异和优缺点。...

2019-04-26 09:21:54 202

原创 MySQL使用root用户给某用户分配权限报错:Access denied for user 'root'@'%' to database 'xxx'

这个错误相信很多人都遇到过,一般我们想到的第一点就是没有授权,然后一条命令走起:grant all on xxxx.* to 'root'@'%' identified by 'password' with grant option; 然后flush,接着继续执行了之前的操作,发现:Access denied for user 'root'@'%' to database 'xxx'这...

2019-04-12 15:42:44 21142 8

空空如也

空空如也

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

TA关注的人

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