自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 golang 排序

golang 标准库实现的排序这里我只针对自定义结构体的排序简单记录下此前我一直用的是实现sort包下的Less、Len、Swap三个方法实现排序// 实现接口可以控制更细的粒度// 但其实有一种更简单的写法,实现简单的排序// eg.sort.Slice(pp, func(i, j int) bool { return pp[i].ID < pp[j].ID})...

2021-11-29 18:43:43 88

原创 go语言定时器

golang定时器标准库time下封装了非常简单好用的定时器time.Ticker// 每两秒触发一次 <-ticker.Cticker := time.NewTicker(2e9)// go1.16增加了一个时间间隔的重置方法ticker.Reset(6e9)// stopticker.Stop()该包下有个特别类似的实体time.Timer// 唯一的区别就是他只触发一次,完全靠Reset重置实现定时任务,其他一模一样对于time.Sleep(d Duration)

2021-11-29 17:32:09 265

原创 golang函数选项模式(创建者)

Functional Option Pattern属于是创建者模型我们创建实例有很多方法,其本质都是创建结构体但缺点是,直接去构造结构体代码的可读性并不高,也并不是良好的接口最常见的方式type Server struct { host string port int}func New(host string, port int) *Server { return &Server{ host: "127.0.0.1", port: 8080, }}一种简单进阶的

2021-11-29 10:40:51 154

原创 Nginx轮询算法

以下代码均用go实现普通轮询算法func main() { r := new(RoundRobinBalance) r.Add("127.0.0.1:80") r.Add("127.0.0.1:81") r.Add("127.0.0.1:82") fmt.Println(r.Next()) fmt.Println(r.Next()) fmt.Println(r.Next()) fmt.Println(r.Next()) fmt.Println(r.Next())}type Rou

2021-11-23 13:59:06 1825

原创 go语言编译静态文件

新接触go的朋友会发现通常情况下是没有办法把静态文件编译到程序里面的1.16版本加入了一个新的标准库解决了这个烦恼demo//go:embed test.txtvar s string//go:embed test.txtvar bs []byte//go:embed test.txtvar f embed.FS非常简单,就可以直接读取了,并且可以打包...

2021-11-22 10:29:31 460

原创 go中间件制作

参考gin中间件type Context struct { handlers []func(c *Context) index int8}func (c *Context) Use(f func(c *Context)) { c.handlers = append(c.handlers, f)}func (c *Context) Next() { c.index++ c.handlers[c.index](c)}func (c *Context) GET(path stri

2021-11-16 22:31:33 51

原创 GO操作mongoDB

GO操作mongo数据库实战主要是mongo官方文档抄过来的,加上一些自己简单的话术先决条件有go环境和mongo环境创建好go mod文档,导入驱动 require go.mongodb.org/mongo-driver写个demo创建一个main.go导入本次需要的包,和写上一个结构体做案例import ( "context" "fmt" "log" "go.mongodb.org/mongo-driver/bson" "go.mongodb

2021-05-26 20:22:21 159

原创 redis_2021

redis_2021关于redis前言一、redis是什么?二、Redis的持久化机制1.RDB(默认)2.AOF三、Redis的集群演变1.单机2.主从复制3.哨兵模式4.redis cluster四、缓存相关问题1.缓存穿透2.缓存击穿3.缓存雪崩4.缓存与数据库的一致性总结新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可

2020-10-29 20:08:57 241 1

原创 设计模式之golang实现

工厂模式工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。/** 多个实现了同一接口的类 用一个工厂去实现不同的需求 */func main() { factory := ShapeF...

2020-03-04 21:50:04 167

原创 go变量、常量以及print

变量go语言的声明方式并不单一,我只写出我们常用的表达方式不给值就会有默认值,以下以批量声明的方式给出var( name2 string // "" age2 int // 0 isOK2 bool // false)在局部变量声明的时候我们通常str := "abc" //简单快速的去实现匿名变量,go声明的局部变量必须被使用,但如果不想使用,可以匿名掉...

2020-02-24 18:21:06 143

原创 gorm

Go原生提供了连接数据库操作的支持,在用 Golang进行开发的时候,如果需要在和数据库交互,则可以使用database/sql包。这是一个对关系型数据库的通用抽象,它提供了标准的、轻量的、面向行的接口。在Go中访问数据库需要用到sql.DB接口:它可以创建语句(statement)和事务(transaction),执行查询,获取结果。使用数据库时,除了database/sql包本身,还需要引...

2020-02-13 21:19:16 193

原创 gin

框架一直是敏捷开发中的利器,能让开发者很快的上手并做出应用,甚至有的时候,脱离了框架,一些开发者都不会写程序了。成长总不会一蹴而就,从写出程序获取成就感,再到精通框架,快速构造应用,当这些方面都得心应手的时候,可以尝试改造一些框架,或是自己创造一个。Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,已经发布了1.0版本。具有快速灵活,容错方便等特点。其实对于golan...

2020-02-13 18:14:16 141

原创 go cookie

package mainimport ( "github.com/gin-gonic/gin" "net/http")func main() { r := gin.Default() r.GET("/login", func(c *gin.Context) { //cookie的key和value,生存时间60s,127.0.0.1可以存这个cookie c.SetCook...

2020-02-12 21:47:56 104

原创 go语言-基础

在此,我不准备过多的赘述关于go语言前生,你有所耳闻,才会来到这里关于一些编程的基础,我也不在此详解关于其执行一、可以编译后执行1、预先编写好一个go文本(扩展名为go)2、在该目录下执行go biuld hello.go3、此时就会生成一个hello.exe的可执行文件二、直接运行go run hello.go执行此语句不会生成exe文件,但实质上也是先生成exe在执行的实际...

2019-10-27 20:52:12 106

原创 Idea

旨在如何使用idea,充分发挥它的强大之处helloworld转载出处,更详细用maven仓库管理建立一个新的webapp准备工具JDK、maven、tomcat新建项目选一个webapp模板,注意不要选错了maven配置接下来是配置maven,一般不要使用默认在c盘的maven,配置maven就两个事,maven仓库位置和镜像都是在settings.xml里面配置仓库位置...

2019-08-27 08:52:45 126

原创 swagger

swaggerAPI文档变成了前后端开发人员联系的纽带,变得越来越重要,swagger就是一款让你更好的书写API文档的框架导入依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId...

2019-07-31 17:36:13 98

原创 图形验证码(ValidateCode)

效果图其实现在很少有再用这种验证方式了的,不过作为经典的图形验证码验证,留恋一下导入依赖ValidateCode.jar就可以用了,当然也可以自己去写一个验证图形(实际上很简单)这里介绍的是java的用法,其他语言大同小异后端代码部分写一个请求,专门请求验证码做两件事,一是把验证码存入session供验证,二是把验证码渲染给前端@Controllerpublic class Co...

2019-07-25 10:58:29 1771

原创 Axios

Axios 各种请求方式传递参数首先get传参会传到url地址,我反正@RequestBody没取到,直接写参数就拿到了-----get、写上params-----axios.get('demo/url', { params: { id: 123, name: 'Henry', sex: 1, phone: 133333...

2019-07-23 20:24:26 109

原创 SpringCloud

eureka注册中心Feign远程服务调用启动类加上注解 @EnableFeignClientscontroller类,方法名、参数、返回值和远程调用方法保持一致,并编写feign(就像调用service)该接口添加注解@FeignClient,并加上远程服务的名字,按照调用方法写接口熔断在服务的方法上加上注解@HystrixCommand(fallbackMetho...

2019-07-17 20:29:53 114

原创 Rabbitmq

RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库特点RabbitMQ起源于金融系统,用在分布式中存储转发消息1、可靠性(reliability),使用某些机制保证可靠性,如持久化、传输确认、发布确认。2...

2019-07-08 23:23:21 109

原创 nginx

一个高性能的HTTP和反向代理web服务器特点1、高并发(支持5万甚至更多的并发)2、内存消耗小3、可以做HTTP的反向代理,可以完成负载均衡4、Nginx启动了安全检查,某一台配置服务器宕机,自动剔除,不影响访问5、通过cache插件,可以完成缓存操作6、动静分离(懂的人自然懂)反向代理使用代理服务器来接收客户端的请求(如nginx代理多个tomcat,有了代理就可以轻松实现负...

2019-07-08 20:06:11 90

原创 Redis的主从复制

目的:高可用实现策略:一主多从(master=>slave…)搭建一主两从即需要多个redis服务器运行作为练习,我在一台服务器上运行三个redis实现一主两从的搭建复制三个redis.conf出来分别改名为redis6379.conf、redis6380.conf、redis6381.conf更改配置文件,因为是一台服务器上运行,其实改关于端口的内容就行了,真实开发无需这样d...

2019-07-05 12:19:30 203

原创 Redis的数据持久化

redis的持久化技术Redis是一种高级key-value数据库redis提供了两种不同级别的持久化方式RDB(redis database)持久化可以在指定的时间间隔内生成数据集的时间点快照RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快它只有一个文件,并且内容都非常紧凑,非常适合用于灾难恢复RDB 可以最大化 Redis 的性能RDB 是一个非常紧凑的文件,它保存了 R...

2019-07-04 17:57:56 75

原创 redis的操作

redis里面有string、hash、list、set、sortedset,他们都用一个Key去指向,这个是特点key的相关操作 DEL 删除一个或者多个key EXISTS 检查key是否存在 EXPIRE 设置key的生存时间,单位是秒 KEYS 查找符合查找key,这里可以配合正则查找 PERSIST 如果被expire赋予了生存时长,此命令可以将key持久化 T...

2019-07-04 16:06:44 101 1

原创 Linux下安装Redis数据库

1、首先上官网下载redis压缩包利用xshell或者其他工具传到linux下面的opt目录下/opt/redis-3.0.4.tar.gz2、切换到该目录下解压gz文件tar -zxvf redis-3.0.4.tar.gz 现在opt目录下就有了一个新的文件夹redis-3.0.4,并进入这个文件夹3.1安装redis,在redis文件夹下输入命令make(前提是linux已经...

2019-07-04 13:11:17 127

原创 vue

vue的关键描述是一套构建用户界面的渐进式框架,自底向上增量开发的设计,vue 的核心库只关注视图层vue只是前端的一个工具,想用就用,不想用就可以不用,没有必须的说法vue的使用方式1.v-bind绑定dom中的属性这个也没什么好说的v-bind:可以直接写成:,可以绑定属性,动态给属性值,高级哦~<div id="app"> {{message}} <p...

2019-07-03 13:29:31 117

原创 springboot上传文件

准备的依赖在springboot项目下加入springmvc和thymeleaf前端准备两个页面,一个upload.html(用于上传),一个uploadStatus.html(上传后的返送信息)upload.html: <form action="/upload" method="post" enctype="multipart/form-data"> &l...

2019-07-02 13:19:29 130

原创 Spring

简介广义上讲,spring应该是java框架里面的一个生态链,它包括了一系列官方推荐的spring相关框架而单独把spring拿出来讲就是以核心为控制反转(IoC)和面向切面(AOP)的编程思想构建的框架,且这个spring的思想不一定是用在web开发上的,即使是javaSE也可以使用。(面向接口的思想)优点方便解耦,简化开发,高内聚,低耦合Spring 就是一个大工厂(容器),可以将所...

2019-07-01 13:48:43 103

原创 Thymeleaf

认识ThymeleafThymeleaf是面向Web和独立环境的现代服务器端Java模板引擎,能够处理HTML,XML,JavaScript,CSS甚至纯文本。是springboot推荐的模板引擎。额外说明,虽然主旨是为了讲thymeleaf,但是我也会涉及到很对mvc的内容,请谅解小陷阱(细节)在spring引入thymeleaf后,你的转发就要注意了,转发的页面一定要放在templa...

2019-06-30 23:42:30 107

原创 Java时间戳和日期的相互转换

时间 SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");无论如何我希望你可以先认识他,它的唯一作用是定义一个格式,你想要的格式Date d = new Date();然后是它,他默认获得当前时间,Date有着自己的格式如:Thu Jun 27 11:24:18 CST 2019String s = f.format(d);...

2019-06-27 11:39:56 953

原创 springMVC你不得不知~

what’s springMVC有必要解释一下,springMVC也是一种MVC而MVC则是Model View ControllerModel(模型):是应用程序中用于处理应用程序数据逻辑的部分。    通常模型对象负责在数据库中存取数据。View(视图):是应用程序中处理数据显示的部分。    通常视图是依据模型数据创建的。Controller(控制器):是应用程序中处理用户交互...

2019-06-26 00:11:51 113

原创 mybatis你不得不知~

what’s mybatis?半ORM框架(手动sql,自动jdbc),内部封装了JDBC(所以所有能支持jdbc的数据库都可以使用mybatis)浅谈优缺点优点:减少代码,能够与spring很好的集成缺点:sql工作量不小,对sql功底有一定要求,依赖数据库,不能随意更换数据库(相比hibernate有很高的数据库无关性)#和$的认识在mybatis中,可以使用这两个符号在sql语句...

2019-06-25 23:52:33 90

原创 python面向对象

python面向对象 从面向对象开始,我们就已经进入了编程语言的高级部分,但我们一定以之前学习的内容为基础,来构建自己的编程金字塔。Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成...

2019-06-21 16:53:17 427

原创 python函数

python函数函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。这基本上是所有语言函数的特性,所以,函数的出现不适偶然,也不是巧合,更不是无所谓的,相反的,它极其重要。其实你已经使用过函数了,可能你不知道,无论是print()还是input()都是函数,只不过这是python内置的函数,而我们学习的目的是要能够自己认识函数,使用...

2019-06-19 18:52:47 70

原创 python基本语法

认识pythonPython是一种计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚 本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。运算表达式>>> 2+24>>> 2-6-4>>> 2*510>>> 2/50.4>>&...

2019-06-18 19:59:13 151

原创 GIT

认识gitGit(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 [1] Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。(from百度百科)操作git无论怎样,在我们简单的开发人员的眼中,git也只是一个工具,当然开发需要的是很多这样那样的工具,所以没必要花时间在一些对...

2019-06-17 14:05:05 82

原创 shiro

Shiro贯穿整个项目权限管理:oa系统Java安全框架,不属于三层框架的任何一层Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。三个核心组件:Subject, SecurityManager 和 Realms.shiro...

2019-06-10 15:29:24 117

原创 maven

Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。1.创建项目2.管理项目:编译、打包、部署、分模块、管理jar包(下载、导入)maven的安装步骤:①解压maven压缩包②将一个jar包发到eclipse的plugins文件夹中③配置好中央仓库的位置eclipse建maven项目(之web)创建项目:这里勾选上simple ...

2019-06-06 12:11:22 82

原创 hibernate

Hibernate(开放源代码的对象关系映射框架)对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。搭建环境和基本操作流程1、导jar包(这没什么好说的)2、编写hibernate.cfg.xml,hibernate的主配置文件,...

2019-06-05 15:58:07 89

原创 代理模式(aop实现)

代理模式(proxy):是一种设计模式,不改变原代码的情况下增加功能静态代理:在编写代码的阶段就以及确定要执行代码、指向对象等等动态代理:在程序运行阶段根据实际的情况执行不同的代码、指向不同对象等等,jdk自带的和cglib实现静态代理演示interface PlayBasketball{ public void play();}class Ikun implements PlayB...

2019-05-29 15:32:09 175

空空如也

空空如也

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

TA关注的人

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