自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 nginx相关解析

Nginx是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。Nginx转为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,有报告表明能够支持高达50000个并发连接数。...

2022-08-13 21:00:14 970 1

原创 将切片作为参数误区

Go语言中,slice作为函数参数时是值拷贝,意味着函数将获得切片的副本:指向基础数组的起始地址的指针,以及切片的长度和容量。func main() { nums:=make([]int,0,100) fmt.Printf("main里面的地址:%p\n",&nums) try(nums)}func try(nums []int) { fmt.Printf("try里面的地址:%p\n",&nums)}输出结果:可以看出两个nums切片的地址不一样,从而知道

2022-03-12 14:55:15 797

原创 MVCC详解

MVCC面试经典问题什么是快照读和当前读?了解MVCC吗?说下什么是MVCC?MVCC的实现原理?有什么好处?RC和RR级别下MVCC的差异?(在最后作出解答。。)MVCC实现的核心知识:事务版本号:每次事务开启前都会从数据库获得一个自增长的事务ID,可以从事务ID判断事务的执行先后顺序。表格隐藏列trx_id :每次一个事务对某条聚簇索引记录进行改动时,都会把该事务的 事务id 赋值给 trx_id 隐藏列。roll_pointer :每次对某条聚簇索引记录进行改动时,都会把旧

2022-03-10 16:23:29 3780 2

原创 二叉排序树总结

二叉排序树的定义二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:左子树上所有结点的值均小于根结点的值;右子树的所有结点的值均大于根结点的值;他的左右子树也分别都是二叉排序树;二叉排序树的查找过程首先和根结点的值进行比较,若相等,则返回成功,返回结点位置若小于根节点的值,则继续在其左子树上查找;若大于根结点的值,则继续在其右子树上查找;直至查找成功或者查找失败。查找成功:走了一条从二叉排序树的根到对应结点的路径。查找失败:从二叉排序树的根到路径末端。二叉排序树的插入查

2022-03-09 09:35:02 2664

原创 go基础总结(持续更新中。。)

文章目录1. init函数2. main函数3. init函数和main函数两者的异同4. 命令5.下划线a. 下划线在import中的作用b.下划线在代码中的应用6.基本数据类型a. 多行字符串b. 字符串的常用操作strings.Split()的用法:byte 和rune类型修改字符串类型转换7.数组a.一维数组的初始化方法:b. 多维数组8.切片a.创建切片的各种方式b. 切片的内存布局c. 用append内置函数操作切片d. slice中cap重新分配规律:e.切片的数据结构1. init函数g

2022-03-06 14:42:23 420

原创 Redis连接池及GO操作代码展示

通过redis连接池流程:事先初始化一定数量的连接,放入连接池。当Go需要操作Redis时,直接从redis链接池里取出连接即可。Redis使用的好处:这样可以节省临时获取Redis连接的时间,从而提高效率。(链接池可以类比于打电话,同时用多个手机进行打电话,使用连接池,就相当于随时将电话处于接通状态,这样当需要用到的时候就不需要重新拨号,从而节约了时间。)redis连接池代码演示github.com/gomodule/redigo/redis” 这个包中有连接池的Api,连接使用代码如下:

2022-02-09 12:29:46 523

原创 消息队列内容解析

消息队列应用背景消息队列常见的应用场景有:异步,解耦,削锋。1. 异步处理数据异步可以类举生活中的例子,比如说是取送快递,如果快递员需要直接对用户进行签收,那么效率会大大降低,而引入快递柜(消息队列)通过引入快递暂存的功能,从而可以达到异步的效果,效率可以大大增加。2. 系统应用解耦解耦:在不引入消息队列的情况下,消费者想要获取数据,需要直接于生产者进行联系,这样耦合度就会比较大,引入消息队列后,消费者想要获取信息,直接从消息队列中进行获取就可以了,生产者和消费者之间的联系就非常少了,从而达到

2022-02-07 09:34:08 1393

原创 JWT详解

JWT介绍JWT是JSON Web Token的缩写,是为了在网络应用环境间传递声明而执行的- -种基于JSON的开放标准((RFC 7519)。JWT本身没有定义任何技术实现,它只是定义了一种基于Token的会话管理的规则,涵盖Token需要包含的标准内容和Token的生成过程,特别适用于分布式站点的单点登录(SSO) 场景。一个JWT Token格式如下所示:他是由.分割的三部分组成,这三部分依次是:头部(Header)负载(Payload)签名(Signature)头部和负载以

2022-01-27 17:08:45 24028

原创 Token认证模式详解

1. 为什么要用Token?HTTP是一个无状态的协议,一次请求结束后,下次在发送服 务器就不知道这个请求是谁发来的了(同一个IP不代表同一个用户),在Web应用中,用户的认证和鉴权又是非常重要的一环。在Web应用发展的初期,大部分采用基于Cookie-Session的会话管理方式,但是基于Session的方法又存在这很多的问题:服务端需要存储Session,并且由于Session需要经常快速查找,通常存储在内存或内存数据库中,同时在线用户较多时需要占用大量的服务器资源。当需要扩展时,创建Se

2022-01-27 16:33:45 4349

原创 分布式ID生成器及snowflake(雪花)算法实现

分布式ID的特点全局唯一性:不能出现有重复的ID标识,这是基本要求。递增性:确保生成ID对用户或业务都是递增的。高可用性:确保任何时候都能生成正确的ID。高性能性:在高并发的环境下依旧表现良好。分布式ID生成器不仅仅用于生成用户ID,实际互联网中有很多场景都需要能够生成类似MYSQL自增ID这样不断增大,同时又不会重复的ID,以支持业务中的高并发场景。比较经典的场景有:电商促销时短时间会有大量的订单涌入到系统,比如每秒10w+;微博热搜在短时间会产生大量的相关微博转发和评论信息。在这些业务环

2022-01-26 10:04:40 1918

原创 goweb项目通用脚手架

这是项目需要用到的总目录,可以在此基础上构建你的项目,下面我将介绍每一部分的功能,以及演示各部分的代码。首先是main函数:package mainimport ( "context" "fmt" "github.com/spf13/viper" "go.uber.org/zap" "log" "net/http" "os" "os/signal" "syscall" "time" "web_app/dao/mysql" "web_app/dao/redis" "we

2022-01-25 18:18:43 1451

原创 air热重启配置相关问题总结

在配置热重启air的时候,一直配置不成功,具体的配置过程gin官方文档里介绍的非常清楚我就不再赘述,具体可以参考一下网址:使用Air实时加载gin项目我只说一下我遇到的问题windows用户需要把APP_ENV=dev APP_USER=air ./tmp/main改为:set APP_ENV=dev && set APP_USER=air && /path/to/tmp/main.exe2. 注意:这里的是:cmd ="go build -o

2022-01-23 16:05:54 611

原创 如何关闭占用的端口程序

需要两步:确定被占用的端口号,例如:8080查看占用端口的程序id具体步骤a. 快捷键win+R 输入cmd,出现命令框b. 查找你需要的端口,以8080为例netstat -nao|findstr 8080c. 关闭进程,在cmd中输入命令关闭对应的进程taskkill /pid 进程号(对应的pid值) /f按照上述步骤就可以关闭占用的端口号了...

2022-01-19 11:17:37 10227

原创 go get 命令下载gin包时出现报错

在goland终端执行go get github.com/gin-gonic/gin时,一直报错,搜了很长时间的资料,最后在这篇博客上找到答案go get 命令下载gin包时出现报错亲测有效

2022-01-18 22:00:40 470

原创 go语言连接Mysql数据库

一,连接Go语言中的database/sql包提供了保证sql类或类sql数据库的泛用接口,并不提供具体的数据库驱动,使用database/sql包时必须注入(至少)一个的数据库驱动下载依赖go get -u github.com/go-sql-diver/mysql使用mysql驱动fun open(diverName,dataSourcceName string)(*DB,error)open打开一个diverName指定的数据库,dataSourceName 指定数据源,一般包至少包括

2022-01-18 14:50:39 3330

原创 go导入“github.com/go-sql-driver/mysql“错误问题解决

在用goland来连接数据库时会出现一个问题。导包不成功可以通过以下方法来解决问题在goland的终端输入go get github.com/go-sql-driver/mysql在输入后也许会报这样的错误go get: module github.com/go-sql-driver/mysql: Get "https://proxy.golang.org/github.com/go-sql-driver/mysql/@v/list": dial tcp 142.251.42.241:443:

2022-01-17 20:55:56 28766 3

原创 操作系统期末复习及错题总结

死锁产生死锁的四大必要条件:资源互斥/资源不共享占有和等待/请求并保持资源不剥夺循环等待对待死锁,一般要考虑死锁的预防,避免,检测,和解除这四个问题防止(预防)死锁的方法:破坏死锁产生的四个必要条件之一避免死锁的方法:使用银行家算法提前计算一条不会死锁的资源分配方法,进程进入安全序列死锁检测:允许死锁产生,但系统定时运行一个检测死锁的程序,若检测到系统中发生死锁,则设法加以解除。死锁的解除:即死锁发生后的解除方法,如强制剥夺资源,撤销进程等死锁资源计算:系统内有n个进

2021-12-25 15:44:35 1836

原创 java 如何将一个字符串转换为arraylist

string 转 ArrayList先将字符串按照某个字符切割,转为string数组然后用Arrays的asList方法,将数组转为Listpublic class test1 { public static void main(String[] args) { //string 转 ArrayList String str1 = "a,b,c"; ArrayList<String> list = new Arra

2021-09-15 16:24:48 5091 1

原创 maven知识学习总结,在idea上部署maven项目

文章目录Mavenmaven简介传统开发项目的问题,没有使用maven的项目需要改进项目的开发和管理,需要maven,构建: 项目的构建maven核心概念:Mavenmaven简介Maven是项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Man

2021-09-06 20:16:10 885 1

原创 spring5学习总结

文章目录Spring5框架Springde的基本概述Spring是什么Spring有核心的部分:IOC和AopSpring 特点入门案例下载spring百度搜索 Spring.io下载地址:点击你所要下载的版本下载第一个链接 (spring-5.3.9-dist.zip)Ioc容器IOC概念ioc底层原理原始方法用工厂模式进行优化了解工厂模式:**IOC方法**xml解析反射IOC(接口)Spring提供了IOC容器实现的两种方式:(两个接口)ApplicationContext接口中的实现类IOC操作Be

2021-09-03 18:50:10 365

原创 jsp学习总结(详解版)

文章目录动态,静态网页构架(分为两种(cs和bs))cs:client server(QQ ,微信)BS :Broswer Server(网页版:京东)tomcat解压后目录:访问后常见状态现在对jsp有一个宏观的了解:虚拟路径虚拟路径的配置地点虚拟主机具体步骤如下:对于无法向hosts文件写ip的问题:解决startup闪退问题jsp的执行流程jsp执行流程Eclipise环境下配置tomcat在eclipse中创建项目:配置tomcat运行时的环境统一字符集编码JSP内部对象统一请求的编码request

2021-08-25 15:34:43 1033

原创 java反射机制详解

反射动态语言动态语言是一类在运行时就可以改变其结构的语言:例如新的函数,对象,甚至代码都可以被引用,已有函数可以被删除或是其他结构上的变化。通俗的说就是在运行是代码可以根据某些条件改变自身结构。反射概念Reflection(反射)是Java被是为动态语言的关键,反射机制允许程序在执行期间借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。Class c = Class.forName(“java.lang.String”)加载完类之后,在堆内存的方法

2021-08-23 14:21:56 169

原创 #1075-Incorrect table definition;there can be only one auto column and it must be defined as a key

在使用Navicat for MySQL建表时出现#1075-Incorrect table definition;there can be only one auto column and it must be defined as a key这样的问题。这个错误是:表定义不正确;只能由一个自动列,必须将其定义为主键。mysql建表时如果要设置自动递增,必须要是逐渐设置才行,且不能为零只能设置一个。所以出现这样的问题,检查建表语句,如果设置了自增,需要将自增字段设置为主键。...

2021-07-26 10:45:11 6738 1

原创 Mysql-connector-java 8.0使用注意事项

在使用之前需要在项目中加mysql-connector-java-jar 包 不会的可以参考在Eclipse中添加mysql-connector-java-8.0.19.jar的方法首先包的名称有mysql-connector -java-5.1.2-bin.jar 换成了:mysql-connector-java-8.0.12.jar在连接JDBC时操作方法也发生了变化;1.驱动的类换了个名字Class.forName("com.mysql.cj.jdbc.Driver")2.需要加上加上u

2021-06-02 09:33:55 338 1

原创 在Eclipse中添加mysql-connector-java-8.0.19.jar的方法

首先下载mysql-connector-java-8.0.19.jar 不会可以看下面链接:mysql-connector-java-bin-jar下载建立一个lib包,然后将其复制到lib包里打开project,然后就设置完成

2021-06-02 09:22:41 1197

原创 mysql-connector-java-bin-jar下载

打开mysql官网:https://www.mysql.com/点击下载’DOWNLOADS’点击MYSQL Community(GPL)Downloads点击Connector/J选择Platfrom Independent对应的的链接:https://dev.mysql.com/downloads/connector/j/点解下载即可完成

2021-06-02 08:38:19 1363

原创 JDBC建立与数据库的连接

JDBC 的含义是 java Database Connectivity,他是Java程序中访问数据库的标准API.JDBC是给java程序员提供的访问和操作众多数据库的一个统一接口,JDBC可以做三件事:第一,与数据库建立连接;第二,发送SQL语句;第三,处理SQL语句的执行结果。JDBC连接数据库的步骤:加载JDBC驱动程序在与某一特定数据库建立连接之前,首先要先加载一种可用的JDBC驱动程序。加载是用Class.forName()方法来实现的显示加载的,语句如下:java.lang.Cla

2021-06-01 15:21:59 1489 1

原创 二叉树的遍历

遍历的定义:指按某种搜索路径遍历每个结点且不重复(又称周游)遍历的用途:它是树结构插入,删除,修改,查找和排列运算的前提,是二叉树的一切运算的基础和核心。遍历的实质:将非线性结构线性化。二叉树的遍历可分为三种。1.先序遍历。2.中序遍历。3.后序遍历1).先序遍历若二叉树为空,则空操作;否则:先访问根结点(D)先序遍历左子树(L)先序遍历右子树(R)void DLR(BiTree T){if(T){printf(T->data);DLR(T->lchil

2021-06-01 10:40:13 80 1

原创 图的两种遍历方法

图的遍历图的遍历是指,从给定图中任意指定的顶点(称为初始点)出发,按照某种搜索方法沿着图的边访问图中的所有顶点,使每个顶点仅被访问一次,这个过程称为图的遍历。图的遍历过程根据搜索方法的不同,又可划分为两种搜索策略1.深度优先遍历2.广度优先遍历算法思想1.深度优先遍历(dfs)深度优先遍历的步骤访问顶点V依次从顶点V的未被访问的邻节点出发,进行深度优先搜索,直至和V有路径相通的顶点都被访问到。对于连通图进行遍历时,从一个顶点出发即可访问图中所有的顶点。对于非连通图进行遍历时,若图中尚

2021-05-31 22:24:05 13511 1

原创 方格取数算法详解

今天做到了一个比较难的算法,看了好久都没有思路。。记录一下。题目如下:设有 N×N 的方格图 (N≤9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字 0。如下图所示(见样例):A 0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 0 0 0 0 0 7 0 0 0 0 0 0 14 0 0 0 0 0 21 0 0 0 4 0 0 0 0 15 0 0 0 0 0 0 14 0 0

2021-05-28 09:29:37 4930 5

原创 vue搭建本地数据接口(jsonserver)

全局安装jsonseerver打开终端在根路径下 npm install -g json-server2、创建文件夹(名称自定义即可)在随意位置创建文件夹 jsonserver ,然后cd jsonserver 目录下3、初始化package.json在cd jsonserver 目录下 执行 npm init ,然后填写配置信息完成后在该文件夹下生成package.json文件4、在文件夹下cmd中执行npm install json-server --save-dev 安装依赖5、配

2021-05-01 16:27:03 529

原创 vue知识点总结

vue阶段已经差不多走完,总结一下做作品所需要的知识点1.vue如何引入本地json,并解决图片报错问题2.如何写一个json接口3.axios请求数据,绑定数据,动态加载4.vue+vuex实现购物车功能今天的分享就到这里。。...

2021-04-21 09:19:54 58 1

原创 vuex使用总结

什么是vuex如果不打算开发大型单页应用,应用够简单,最好不要使用 Vuex。一个简单的 store 模式就足够了。但是,如果需要构建一个中大型单页应用,就要考虑如何更好地在组件外部管理状态,Vuex 是不错的选择。vuex的使用在 Vue 的单页面应用中使用,需要使用Vue.use(Vuex)调用插件。将其注入到Vue根实例中。import Vuex from 'vuex'Vue.use(Vuex)const store = new Vuex.Store({ state: { co

2021-04-18 08:59:32 127

原创 localstorage增删改查易踩坑

localstorage增删改查易踩坑jQuery阶段作品是做一个具有增删改查功能的后台系统(模拟增删改查,不牵涉数据库),遇到了一些问题,耗费了很多时间,今天我将其总结一下。一.juery动态添加Dom节点,原点击事件无效的方法。详细看以下代码:<div id="box"> <span class="One">我是原有标签,点击我控制台输出信息</span> </div><script> //新

2021-03-21 10:03:08 281 1

原创 js原型和原型链详解

原型和原型链详解原型是js学习的一个难点,如果学习不深入,会特别头疼。查过很多资料对原型有了较深的了解,今天就谈下我对原型的认识。1.原型对象我们所创建的每一个函数,解析器都会向函数添加一个属性prototype,这个属性对应一个对象,这个对象就是我们所说的原型对象。当函数以构造函数的形式调用时,他所创建的对象中都有一个隐含的属性指向该构造函数的原型对象,我们可以通过_proto_来访问该属性。原型对象就相当于一个公共的空间,所有的同一类中的实例都可访问到这个原型对象因此,我们可以将对象共有的内

2021-02-23 16:05:16 193 1

原创 js必掌握的知识点

js阶段走完,今天刚好有空闲时间,对js所在阶段我认为比较重要的知识点进行总结,希望看到的小伙伴对你有所帮助。一.闭包官方对闭包的解释:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量便也是该表达式的一部分。简单来说,JavaScript允许使用内部函数–即函数定义和函数表达是是位于另一个函数的函数体内。而且,这些内部函数可以访问它们所在外部函数中声明的局部变量,参数和声明的其他内部函数。当其中一个这样的内部函数在包含他们的外部函数之外被调用时,就形成闭包。闭包是一种保

2021-02-23 08:42:54 1941 3

原创 js轮播图(自动播+点击播放)

js轮播图(自动播+点击播放)今天介绍一下js轮播图的实现思路。废话不多说直接上代码。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <style> *{margin:0; padding:0; list-style:none;} .wrap{height:300px; wid

2021-02-21 10:34:10 1231 1

原创 纯js手风琴实现

手风琴效果js实现分享一下手风琴的效果实现,正在学习js的小伙伴们可以看看哦。希望能对你有所帮助。。代码如下:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width

2021-02-21 09:59:17 239

原创 js滚轮控制图片的轮播

js控制图片的轮播这段时间学习js,遇到了一个问题,就是滚轮控制图片的轮播,今天就来详解一下这个问题,希望遇到这个问题的朋友对你有所帮助。话不多说,直接上代码。。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name=

2021-02-21 09:31:39 414 2

空空如也

空空如也

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

TA关注的人

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