自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(500)
  • 资源 (3)
  • 收藏
  • 关注

原创 Go环境搭建与IDE开发工具配置

Go语言编译器=》编译器=将源代码编译为可执行程序=》源代码=程序员使用高级语言所书写的代码文件=》高级语言=c/c++/go…解决方式:进入Go的安装目录,如C:\Program Files\Go\src\runtime\internal\sys,打开zversion.go文件,加上自己go的版本号即可。出现这个错误的原因是 idea 的 Go-plugin 插件,和 Go 的sdk版本不匹配;在未配置全局变量执行go程序情况下,可以到go编译器下的bin目录执行go程序进行编译。为go get做准备。

2022-12-18 12:09:23 1467 1

原创 制作composer包提供sdk扩展

1、初始化包2、将代码推送到github远程仓库3、为写好扩展包打上tag标签标记当前代码版本4、将包发布到包管理平台Creates a basic composer.json file in current directorycomposer init 按照引导就可以生成了 , 详细的引导解释如下随后调整composer.json配置文件,内容示例如下:生成vendor目录编写测试代码src/Test.php后再根目录 创建一下 index.php 引入类执行自动加载命令,为创建的类文

2022-12-04 00:48:15 808

原创 MySQL触发器

触发器是与表有关的数据库对象,指在 insert/update/delete 之前或之后,触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性 , 日志记录 , 数据校验等操作。使用别名 OLD 和 NEW 来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。现在触发器还只支持行级触发,不支持语句级触发。

2022-11-11 11:07:27 402

原创 MySQL锁问题

锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算机资源(如CPU、RAM、I/O等)的挣用外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。行锁特点:偏向InnoDB存储引擎,开销大,加锁慢;会出现死锁;锁定颗粒度最小,发生锁冲突的概率最低,并发度也最高。InnoDB与MyISAM的最大不同有两点:一是支持事物;

2022-11-09 21:03:40 2184

原创 MySQL主从复制

复制是指将主数据库的DDL和DML操作通过二进制日志传到从库服务器,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。MySQL支持一台主库同时向多台从库进行复制,从库同时也可以作为其他从服务器的主库,实现链状复制。

2022-11-09 14:51:18 264

原创 MySQL日志

二进制日志(BINLOG)记录了所有的DDL(数据定义语言)语句和DML(数据操纵语言)语句,但是不包括数据查询语句。此日志对于灾难时的数据恢复起着极其重要的作用,MySQL的主从复制,就是通过该binlog实现的。二进制日志,默认情况下是没有开启的,需要到MySQL的配置文件中开启,并配置MySQL日志的格式。日志存放位置:配置时,给定了文件名但是没有指定路径,日志默认写入MySQL的数据目录。#编辑配置文件。

2022-11-08 21:15:51 441 2

原创 go基础知识学习笔记

当一个包导入时,如果该包还导入了其他的包,那么先将其他包导入进来,然后再对这些包中的包及常量和变量进行初始化,接着执行init函数(如果存在init的话),依次类推。等所有被导入的包都加载完毕了,就会开始对main包中的包及常量和变量进行初始化,然后执行main包中的init函数(如果存在的话),最后只执行main函数。在go语言中,函数类型也是一种数据类型,我们可以通过type来定义它,它的类型就是所有拥有相同的参数,相同的返回值的一种类型。回调函数,函数有一个参数是函数类型,这个函数就是回调函数。

2022-10-29 00:42:53 971

原创 Vue-单文件组件使用说明

.vue文件,称为单文件组件,是Vue.js自定义的一种文件格式,一个.vue文件就是一个单独的组件,在文件内封装了组件相关的代码:html、css、jsvue-loader浏览器本身并不认为.vue文件,所以必须对.vue文件进行加载解析,此时需要vue-loader类似的loader还有许多,如:html-loader、css-loader、style-loader、babel-loader等需要注意的是vue-loader是基于webpack的webpack是一个前端资源模板化加载器和打包工具

2022-06-23 08:15:02 1698

原创 Vue-组件及组件间的通信方式

1)什么是组件?组件(Component)是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码组件是自定义元素(也相当于对象)2)定义组件的方式方式1:先创建组件构造器,然后由组件构造器创建组件方式2:直接创建组件组件的分类分类:全局组件:可以在所有vue实例中使用局部组件:局部组件:只能在当前vue实例中使用引用模板和动态组件1)引用模板将组件内容放到模板template中并引用2)动态组件(内置组件)component :is=""组件

2022-06-22 16:36:43 303

原创 页面布局设计与PC端后台界面实战

前端页面布局初探

2022-06-16 13:08:49 758

原创 Redis基础知识巩固

1)关于NoSQLNoSQL的全称是Not only SQL,在过去的几年中,NoSQL数据库一度成为高并发、海量数据存储解决方案的代名词,与之相应的产品也呈现出雨后春笋般的生机。然而在众多产品中能够脱颖而出的却屈指可数,如Redis、MongoDB、BerkeleyDB和memcached等内存数据库。由于每种产品所拥有的特征不同,因此它们的应用场景也存在着一定的差异,下面仅给出简单的说明:1). BerkeleyDB是一种极为流行的开源嵌入式数据库,在更多情况下可用于存储引擎,比如BerkeleyD

2022-06-15 01:42:49 284

原创 高并发大流量秒杀方案思路

秒杀场景一般会在电商网站举行一些活动或者节假日在12306网站上抢票时遇到。对于网站中一些稀缺或者特价的产品,电商网站一般会在约定的时间对其进行限量销售,因为这些产品的特殊性,会吸引大量用户前来抢购,并且会在约定时间同时在秒杀页面进行抢购。1)秒杀时大量用户会在同一时间同时进行抢购,网站瞬时访问量激增。2)秒杀一般是访问请求数量远远大于库存数量,只有少部分用户能够秒杀成功3)秒杀业务流程比较简单,一般就是下订单减库存。限流: 鉴于只有少部分用户能够秒杀成功,所以要限制部分流量,只允许少部分流量进入服务器

2022-06-06 10:44:43 584

原创 Memcache高性能缓存与实现跨站登录

快速数据缓存跨服务器登录官网-可以自行选择下载的版本http://memcached.org/downloads启动命令参数说明memcache服务器操作php操作memcache服务器1、下载memcache扩展,并编译安装扩展;注意选择的是memcache第一行的2、编辑php.ini配置文件,开启memcache扩展模块;3、重启nginx、php-fpm4、php操作memcachememcache缓存操作实例...

2022-06-04 15:29:22 340

原创 PHP协程程序

协程协程与子进程(某个主程序的一部分代码)一样,协程也是一种程序组件。协程(coroutine)不是进程或线程,其执行过程更类似于子进程,或者说不带返回值的函数调用对比一个程序可以包含多个协程,对比一个进程可以包含多个线程,多个线程相对独立,有自己的上下文,切换受系统控制;协程也相对独立,有自己的上下文,但切换由自己控制,从当前协程切换到其它协程由当前协程来控制。协程的支持Lua5Python的yield关键字PHP5.5的yield关键字生成器使用迭代器(Iterator)可在内部迭

2022-05-29 12:43:28 564

原创 PHP-阿里云oss使用

为什么要使用第三方存储?1)静态文件会占用大量带宽;2)加载速度3)存储空间第三方存储有哪些?1)阿里云oss2)七牛云3)又拍云等等阿里云OSS的介绍https://www.aliyun.com/product/oss/阿里云oss的使用阿里云oss使用步骤:1.申请key和secret(把key和secret保存好,项目中配置使用);2.新建Bucket3.查看文档(对象存储oss->开发者指南->sdk参考->PHPsdk)composer requir

2022-05-28 16:31:09 3933

原创 Elasticsearch在PHP下的使用

php操作ElasticSearches-php客户端安装php环境版本要求:PHP >=7.1.0ext-curlext-jsones-php扩展下载地址:https://www.elastic.co/guide/en/elasticsearch/client/php-api/7.x/installation.html引在thinkphp6框架中引入elasticsearch/elasticsearch包composer require elasticsearch/elas

2022-05-12 17:10:01 4706 1

原创 Elasticsearch环境搭建与基本使用

什么是ElasticsearchElasticSearch 是一个分布式的RESTful开源全文搜索和分析引擎,使用 Java 开发并使用 Lucene 作为其核心来实现所有索引和搜索的功能, 2010 年首次发布。快速,近实时地存储,搜索和分析大量数据。它通常用作底层引擎、技术,为具有复杂搜索功能和要求的应用程序提供支持。Lucene介绍Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎

2022-05-08 23:45:17 1268

原创 tp6实战消息队列rabbitmq

需求1、用户登录成功后通过消息队列写入mysql数据库2、用户下单,付款成功和付款失败都会通过延时队列写入mysql数据库,处理掉该订单信息环境准备下载tp6框架并下载指定版本rabbitmq扩展包composer create-project topthink/think=6.0 tp6# 下载指定版本rabbitmq扩展包D:\phpstudy_pro\WWW\thinkphp6>composer require php-amqplib/php-amqplib=^3.0# 安装

2022-05-02 17:39:09 3321 1

原创 rabbitmq死信队列以及延迟

死信队列介绍死信(Dead Letter)是RabbitMQ中的一种消息机制,当你在消费消息时,如果队列里的消息出现以下情况:1)消息被拒绝2)消息在队列的存活时间超过设置的TTL时间。3)消息队列的消息数量已经超过最大队列长度。那么该消息将成为“死信”。“死信”消息会被RabbitMQ进行特殊处理,如果配置了死信队列信息,那么该消息将会被丢进死信队列中,如果没有配置,则该消息将会被丢弃。RabbitMQ 中有一种交换器叫 DLX,全称为 Dead-Letter-Exchange,可以称之为死

2022-05-01 20:07:54 1920

原创 消息队列RabbitMQ入门与PHP实战

消息队列介绍以及消息队列应用场景RabbitMQ说明MQ(Message Queue) 即消息队列,是应用间的通信方式,消息发送后可立即返回,由消息系统来确保消息的可靠传递。”消息队列“是在消息的传输过程中保存消息的容器。它是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,这样就实现生产者和消费者的解耦。为什么使用消息中间件?消息队列是分布式系统中重要的组件,解决应用解耦,异步

2022-04-29 21:34:55 2995

原创 基础数学-递归实现斐波那契数列

递归求斐波那契数列第N项的值,例如:第10为55。//求N=3的值是多少。结果:2+1 = 3。

2022-04-24 23:50:12 365

原创 Go语言管道与高并发实战

固定时长定时器写法一package mainimport ( "fmt" "time")func main() { //创建3秒定时器 timer := time.NewTimer(3*time.Second) fmt.Println("定时器创建完毕") //打印当前时间 fmt.Println(time.Now()) x := <-timer.C fmt.Println(x)}2) 写法二package mainimport ( "fmt" "

2022-04-24 23:13:51 314

原创 Go语言管道与高并发

并发理论异步async并行:多个任务并发执行同步sync串行:多个任务依次执行阻塞block并发的任务由于缺少资源而等待异步回调async callbackA线程唤起B线程,令其干活,同时给B一个回调函数,命令B在干完活以后执行这个回调函数。这个回调函数会与A线程发生交互,A不必等待B执行的结果,AB两个线程可以并发执行。好处:效率高不好:回调Callback逻辑线不清晰共享内存多个并发放线程通过共享内存的方式交互数据线程安全问题:AB间共享的数据地址可能被C并发修改同步

2022-04-23 20:27:16 541

原创 Go语言程序测试使用

目录单元测试1、封装数学工具类MathUtil,包含普通求自然数的和、递归求自然数的和2、书写单元测试类MathUtil_test,验证MathUtil工具方法正误;3、在命令行和IDE环境下调试跑上述单元测试1、封装数学工具类MathUtilD:\go_work\src\demo\mymath\MathUtil.gopackage mymath//循环累加func GetSum(n int) int { var sum = 0 for i := 1; i < n+1; i+

2022-04-23 19:20:12 464

原创 Go对文件操作

目录文件读写文件读操作1)文件打开与关闭简易方式打开一个文件,对文件操作,一秒后关闭package mainimport ( "fmt" "os" "time")func main() { file, err := os.Open("D:/go_work/src/demo/1.json") if err == nil { fmt.Println("文件打开成功") } else { fmt.Println("文件打开失败,err=", err) return

2022-04-23 12:08:15 483

原创 Go语言JSON包使用

目录序列化与反序列化1、序列化1)结构体数据转JSON,属性必须是公有的大写开头使用Person结构体描述用户信息并转JSONpackage mainimport ( "encoding/json" "fmt")type Person struct { Name string Age int Rmb float64 Sex bool Hobby []string}func main() { person := Person{"于谦", 50, 123

2022-04-22 19:53:33 1045

原创 Go实现TCP、UDP、HTTP通信代码示例

TCP通信需求服务端:服务端在本机的8888端口建立TCP监听为接入的每一个客户端开辟一条独立的协程循环接收客户端消息,不管客户端说什么,都自动回复“已阅xxx”客户端:如果客户端说的是“im off”,则回复“bye”并断开其连接拨号连接服务端主机的8888端口,建立连接循环从标准输入(命令行)读取一行用户输入,向服务端发送接收并打印服务端消息,如果消息是“bye”,就退出程序服务端:package mainimport ( "net" "fmt" "os")/*·

2022-04-20 15:48:38 2603

原创 Go 面向对象方法、继承、多态实现代码示例

Go 语言对数据和方法的封装是一种分离式的封装由于在go语言中没有class关键字,因此没有类的方式对数据(属性)和方法进行封装1、通过struct完成属性的封装2、方法与结构体进行绑定package mainimport ( "fmt")//创建结构体,并声明属性type Person struct { name string}//将Person结构体与Say方法进行绑定func (p *Person) Say(content string) string { retur

2022-04-13 13:43:26 613

原创 go语言指针

前言计算机是通过地址来定位真实物理内存的数据指针的基本使用方法package mainimport "fmt"func main() { var a int = 10 //传址 p := &a //*p 当星号放在指针前面的时候就可以对里边的内存地址指向的数据进行修改 *p = 12 //*int 当一个星号放在什么类型前面时候表示它是什么类型的指针 fmt.Printf("%T\n", p) fmt.Println(&a, p, *p, a)}传值还是

2022-04-12 23:07:40 270

原创 go语言学习遇到的一些小细节记录

main函数外变量声明不能使用简写方式报错示例package mainimport ( "fmt")name := "test"func main() { fmt.Printf("类型:%T", name)}改正package mainimport ( "fmt")var name string= "test"func main() { fmt.Printf("类型:%T", name)}...

2022-04-12 17:53:28 259

原创 Laravel 实现单人登录方案思路

需要避免多人使用同样一个会员账号登录网站是一个重要的技术防护手段,掌握了基础的 HTTP 协议之后,很多问题的解决方案很容易就可以推导出来,不管是限制用户登录、跨站登录、还是超时自动登出都可以轻松的找到解决方案单人登录可以更好的保护用户和网站的账户安全好处:1、保护用户利益,当用户的用户名和密码泄露后,用户可以得到提示你的账号已经在其他地方登录,请注意你的账户安全2、保护网站利益,避免很多人使用同一个账户登录网站获取网站的服务不要太把执行效率当回事,数据沉淀会带来长远的价值当用户登录后就会创建用

2022-04-05 21:09:44 937

原创 Laravel 事件监听

Laravel Event & Listener 事件监听机制,让开发者不光是可以把代码组织得更加有条理的手段,而且也是对现实社会运行规则的高度抽象化映射,我们的现实社会本来也是这样,我们监控事物的变化,并对变化做出反应,让事物的发展按照我们的预期发展。当现实映射到代码逻辑中时,事件及其处理逻辑通常是分开的,毕竟不是所有的事件我们都需要马上进行响应处理。结合队列,我们可以把事件的监听和处理的工作流程做到更加完美。使用案例:监听log日志文件大小变化用户登录:记录用户登录次数、记录访问相关信息

2022-04-05 16:15:07 1551

原创 Mysql分布式之缓存(Memcache)的应用 09

思路1、查询单条数据详情时,根据key从缓存中读取,读取不到的查库并缓存一份2、在更新数据时,根据key从缓存中清除该条数据缓存实现查询单挑数据详情find.php查询单条数据详情时,根据key从缓存中读取,读取不到的查库并缓存一份<?phprequire "./RunDbPdo.php";require "./MmCache.php";$model = new RunDbPdo();$cache = new MmCache();$model->configFile =

2022-03-20 11:45:22 801

原创 面试题-二维矩阵算法题

实现代码:<?php//1、对于点(m,n),统计周边格子“1”的数量,记为N(m,n)//$arr = [// [0, 1, 1, 1],// [1, 0, 0, 0],// [0, 1, 1, 1],// [1, 1, 0, 0],//];$arr = init(4, 4);/** * 生成随机二维数组 * @param int $x * @param int $y * @return array */function init($x =.

2022-03-19 10:52:08 307

原创 Laravel Service Container 类的依赖管理和依赖注入等容器相关案例

Laravel Service Container 类的依赖管理和依赖注入优点:很好的管理类与类之间的依赖管理使用简单流程:1、在创建Family前先将相关的依赖Head、Person、Tv先进行了注入和管理,最后在才进行Family的实例化2、流程Head-》Person、Tv-》FamilyRoute::get('/', function (Family $family) {});class Head{ public function __construct()

2022-03-17 18:15:15 333

原创 PHP设计模式-策略、适配器、观察者

策略模式特点定义一系列算法封装起来, 让他们可以相互替代,策略模式提供了管理相关算法族的办法, 提供了可以体会继承关系的棒法, 避免使用多重条件转移语句实现<?phpabstract class Strategy{ abstract function goSchool();}class Run extends Strategy{ public function goSchool() { echo "走路去学校"; }}class S

2022-03-12 14:56:46 180

原创 Phpstorm IDE常用设置项

File-》Settings-》Plugins-》Material Theme UI-》安装后重启Phpstorm。File-》Settings-》Edited-》Font-》点击Current editor font。prif + tab (生成私有方法)prof + tab (生成受保护方法)pubf + tab (生成公有方法)1、快速打开文件、根据变量查找文件。2)根据属性生成get、set方法。2、快速打开之前浏览过的文件。4、显示当前类下的所有方法。1)快速生成函数方法。

2022-03-06 21:24:43 712

原创 Docker网络与容器之间通信原理

1、namespace扩展知识:https://www.jianshu.com/p/b2fdf18a88ed实战:打通两个命名空间的网络,模拟两个容器通信原理查看命名空间列表ip netns list新增一个网络命名空间(名称test1)ip netns add test1删除网络命名空间test1ip netns delete test1查看本机namespace默认是down的状态ip netns exec test1 ip a变为up状态,显示为unknownip netn

2022-02-11 22:11:30 2129

原创 docker-compose安装与实战生产用例

Docker Compose 是一个工具,用于定义和运行多个 Docker 容器的应用程序。docker-compose类似于批处理,是一个命令行工具文件以docker-compose.yml命名。docker-compose里重要的概念:Services Networks VolumesServices:相当于containerNetworks:相当于使用的网络Volumes:数据持久化build:构建镜像。可以指定 Dockerfile 的路径或者直接使用已有的镜像。

2022-02-10 22:27:25 1122

原创 Dockerfile构建镜像详解与案例

docker Dockerfile构建镜像

2022-02-10 00:42:58 1426

jq验证器插件.zip

jq验证器插件.zip

2020-10-06

微信小程序企业展示.zip

小程序企业展示.zip

2020-09-20

微信小程序开锁公司.zip

微信小程序开锁公司.zip微信小程序开锁公司.zip微信小程序开锁公司.zip微信小程序开锁公司.zip微信小程序开锁公司.zip微信小程序开锁公司.zip微信小程序开锁公司.zip微信小程序开锁公司.zip

2020-09-13

空空如也

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

TA关注的人

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