自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

paul的专栏

简单即是美

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

转载 2021-08-22

超详细的Git使用教程https://blog.csdn.net/qq_37883866/article/details/105349257

2021-08-22 22:28:06 236

原创 java虚拟机知识回顾

面试时被问道虚拟机相关问题,这知识也不是天天用到,有些生疏了 ,找了篇文章算是在复习下原文地址https://blog.csdn.net/qq_41701956/article/details/81664921

2021-07-28 11:33:49 219

原创 若依的数据权限实现思路和过程(二)-数据模型

若依的数据权限实现思路和过程(二)-数据模型

2021-07-11 10:41:45 634 4

原创 若依的数据权限实现思路和过程初探(一)-代码实现

今天研究了下 若依的数据权限,还是很有收获,尤其从全县管理的思路上。其基本实现思路是通过注解的方式,把需要权限通知的部分在注解中提前拼接好,当使用的时候根据注解中传入的 参数决定控制的权限范围。过程大致如下一、自定义注解二、通通过切面方式来处理需要进行权限管理的方法三、需要进行权限控制的方法四、把aspect拦截加工好的sql在mybatis中进行处理 ,已达到数据权限控制的目的ps: 第四部的params.dataScope 这个怎么来的?所有对象都集成了一个基类:BaseEnt

2021-07-10 22:31:04 1864 3

原创 Spring Cloud Feign的使用方法

Spring Cloud Feign的使用方法主要有以下两种方式:1、服务提供者的RequestMapping和Feign接口的RequestMapping保持一致的形式2、 服务提供者实现Feign接口的形式两种调用方式主要体现在服务提供者的写法上同一个feign接口:第一种实现方式:第二种实现方式...

2021-02-19 20:49:32 229

转载 zuul限流

在项目中,大部分都会使用到hyrtrix做熔断机制,通过某个预定的阈值来对异常流量进行降级处理,除了做服务降级以外,还可以对服务进行限流,分流,排队等。当然,zuul也能做到限流策略,最简单的方式就是使用自定义的filter加上限流算法,生产环境中zuul网关肯定是部署的多节点,所以还会借助类似Redis的K/V存储工具。这里借助的是第三方工具《spring-cloud-zuul-ratelimit》,开箱即用,直接加入pom依赖即可:<dependency> &l

2021-02-10 17:10:17 1244

转载 Spring Cloud 优雅下线以及灰度发布

前言在生产环境中,如何保证在服务升级的时候,不影响用户的体验,这个是一个非常重要的问题。如果在我们升级服务的时候,会造成一段时间内的服务不可用,这就是不够优雅的。那什么是优雅的呢?主要就是指在服务升级的时候,不中断整个服务,让用户无感知,进而不会影响用户的体验,这就是优雅的。实际上,优雅下线是目标,而不是手段,它是一个相对的概念,例如kill PID和kill -9 PID都是暴力杀死服务,相对于kill -9 PID来说,kill PID就是优雅的。但如果单独拿kill PID出来说,我们能说它是

2021-01-15 09:28:36 332

转载 golang: channel单项通道

http://www.topgoer.com单向通道有的时候我们会将通道作为参数在多个任务函数间传递,很多时候我们在不同的任务函数中使用通道都会对其进行限制,比如限制通道在函数中只能发送或只能接收。Go语言中提供了单向通道来处理这种情况。例如,我们把上面的例子改造如下:func counter(out chan<- int) { for i := 0; i < 100; i++ { out <- i } close(out)...

2021-01-06 09:27:01 493

原创 golang异常: main.go:1:1: expected ‘package‘, found ‘EOF‘

go build main.go 运行时报错如下:main.go:1:1: expected ‘package’, found ‘EOF’解决:ctrl+s保存下就可以了

2021-01-04 20:29:52 6309 2

原创 golang: goroutine与线程

可增长的栈OS线程(操作系统线程)一般都有固定的栈内存(通常为2MB),一个goroutine的栈在其生命周期开始时只有很小的栈(典型情况下2KB),goroutine的栈不是固定的,他可以按需增大和缩小,goroutine的栈大小限制可以达到1GB,虽然极少会用到这个大。所以在Go语言中一次创建十万左右的goroutine也是可以的。goroutine调度GPM是Go语言运行时(runtime)层面的实现,是go语言自己实现的一套调度系统。区别于操作系统调度OS线程。1.G很好理解,就是个goro

2021-01-04 20:18:22 362

原创 go字符串拼接方法

+拼接方式这种方式是我在写golang经常用的方式,go语言用+拼接,php使用.拼接,不过由于golang中的字符串是不可变的类型,因此用 + 连接会产生一个新的字符串对效率有影响。转自:go语言中文文档:www.topgoer.comfunc main() {s1 := “hello”s2 := “word”s3 := s1 + s2fmt.Print(s3) //s3 = “helloword”}sprintf函数s1 := “hello”s2 := “word”s3 := f

2021-01-04 08:36:44 3383

原创 spring事务事项

业务需求:有个AService和BService都配置了事务,AService调用了BService,BService需要记录日志,但是当BService出现异常的时候,发现没有记录日志,原因是AService和BService配置事务的时候有个参数propagation,默认都配置了REQUIRED<tx:method name=“save*” propagation=“REQUIRED”/>使用这种策略时BService将使用Aservice的事务,所以AService回滚将整个方法体

2020-12-17 10:59:38 128

转载 gin之处理form表单获取参数和映射结构体

不管是传递json还是form传值注意 ,在结构体定义时 首字母必须大写//定义结构体Id int form:"id"Name string form:"name"//获取和绑定参数id := context.Query(“id”)var user Usercontext.Bind(&user)//定义结构体Id int json:"id"Name string json:"name"总结://如上:如果是form传值,结构体参数后面定义的是form,都可获取参数,也可绑定

2020-11-12 22:03:20 1676

转载 golang编码规范参考

格式化规范go默认已经有了gofmt工具,但是我们强烈建议使用goimport工具,这个在gofmt的基础上增加了自动删除和引入包.go get golang.org/x/tools/cmd/goimports不同的编辑器有不同的配置, sublime的配置教程:http://michaelwhatcott.com/gosublime-goimports/LiteIDE默认已经支持了goimports,如果你的不支持请点击属性配置->golangfmt->勾选goimports保存之前

2020-11-04 11:13:29 201

原创 go mod使用

go mod 相关命令 go mod download 下载go.mod文件中指明所有依赖 go mod tidy 整理现有的依赖,删除未使用的依赖 go mod graph 查看现有的依赖结构 go mod edit编写go.mod文件 go mod -replace 旧=新 lastest go mod -require go mod verfiy 校验一个模块是否被篡改过 go clean -modcache 清理所有已缓存的模块版本数据

2020-11-03 09:08:47 209

转载 Go 中关于方法的 receiver 的总结

关于这部分内容,在写代码时一直都是用指针类型的 receiver,但没有系统整理过规则,这里进行总结。首先是官方 FAQ 中说的那三条:第一条也是最重要的一条,方法是否要修改 receiver?其次是效率的考虑,如果 receiver 非常大,比如说一个大 struct,使用指针将非常合适。接下来是一致性,如果该类型的某些方法必须使用指针 receiver,剩下的也要使用指针。不论使用什么类型的 receiver,方法集要一致。还有一些其它的规则:实例和实例指针可以调用值类型和指针类型 rec

2020-11-02 22:37:52 1252

转载 Golang中database/sql包的学习

2020-10-30 10:05:09 196

转载 报错package xxx is not in GOROOT or GOPATH 或者 cannot find package “xxx“ in any of

GO111MODULE=“off”在GO111MODULE="off"的条件下,并且写的代码不在GOPATH/src下,也就是说下面的main.go不在GOPATH/src下,也就是说下面的main.go不在GOPATH/src下,也就是说下面的main.go不在GOPATH/src目录下面,同时我想要使用另一个module里面的内容,并且这个module不是标准库,或者说不在GOROOT里(一般我们不会修改GOROOT中的内容)...

2020-10-29 21:17:16 6351 6

转载 解决vscode编写go代码时提示过慢(gopls)

前言之前用的vscode的自动代码提示,发现太慢了,隔3,4秒才会出提示,所以换为Google推荐的 gopls来代替。下载过程方案一打开 VS Code 的setting, 搜索 go.useLanguageServe, 并勾选上.默认情况下, 会提示叫你reload,重新打开之后,右下角会自动弹出下载的框框,点击 install即可。如果下载时间过长,不成功,可以看方案二方案二直接上 github 下载,下载下来 之后go install github.com/golang/

2020-10-25 21:01:35 3996

转载 ntp服务器是什么,有什么用?

ntp服务器隶属于小众时间频率行业,对于初次接触者和未涉猎此行业的人群来说,就会有很大的疑问:ntp服务器能做什么,为什么会需要ntp服务器?本文主要通过这两个问题,对ntp服务器进行分总式的说明,希望更多的人能认识ntp服务器,了解ntp服务器,并意识到随着科学技术发展ntp服务器对人文生活,科技发展的重要性和不可或缺性。ntp服务器是什么,有什么用?1、什么是ntp服务器?ntp服务器,对大多数人来说是一个一穷二白的陌生词汇,但是要理解ntp服务器必须先了解什么是ntp和什么是服务器?1)什么

2020-08-07 14:48:28 7674 3

转载 数据传输的加密

一、对称加密加密数据与解密数据使用相同的密钥,这种加密方法称为对称加密特点 加密与解密使用相同密钥,加密解密速度快 将原始数据进行切块,逐个进行加密。缺点 每一个通信的对象都有一把密钥,如果通信对象过多导致密钥过多。 密钥分发问题,如何保证密钥不被窃取二、非对称加密加密数据与解密数据使用一堆不相同的密钥,公钥公开给所有人,私钥自己保存。使用公钥加密的数据只有自己的私钥可以解开。特点 用公钥加密数据,只能使用配对的私钥进行解密。 用私钥加密的

2020-07-08 07:52:44 4337

转载 Hystrix 属性配置

配置参数默认值说明命令-执行属性配置hystrix.command.default.execution.isolation.strategyTHREAD配置隔离策略,有效值 THREAD, SEMAPHOREhystrix.command.default.execution.isolation.thread.timeoutInMilliseconds1000命令的执行超时时间,超...

2020-02-20 20:01:32 299

转载 微服务部署:蓝绿部署、滚动部署、灰度部署(金丝雀部署)

简介产品或者项目不可能一步到位,一次性推向用户,故而有版本的存在。在app版本更新或者项目迭代的过程中,不可避免需要发布。发布就是部署/重新部署;部署就是修改;修改则意味着风险。目前有很多用于部署的技术,本文将目前常用的布署方案做一个总结。备注:本文不具有多少原创性,多是网络资源的整理,加上个人的理解。分类一、蓝绿部署Blue/Green Deployment定义蓝绿部署是不停老版...

2020-02-13 10:45:43 635

转载 语义化版本管理2.0.0

语义化版本 2.0.0摘要版本格式:主版本号.次版本号.修订号,版本号递增规则如下:主版本号:当你做了不兼容的 API 修改,次版本号:当你做了向下兼容的功能性新增,修订号:当你做了向下兼容的问题修正。先行版本号及版本编译元数据可以加到“主版本号.次版本号.修订号”的后面,作为延伸。简介在软件管理的领域里存在着被称作“依赖地狱”的死亡之谷,系统规模越大,加入的包越多,你就越有可能...

2020-02-13 10:12:27 189

转载 微服务编排工具

uber/cadence分布式、伸缩、高可靠的异步执行业务逻辑,工具比较丰富,同时提供了可视化UIhttps://github.com/uber/cadencenetflix/conductor来自netflix 的为微服务编排引擎,支持的功能很丰富,同时文档也比较全参考架构Architecturehttps://github.com/Netflix/conductorzeebe...

2020-02-11 12:17:08 1311

转载 rabbitmq实现延时队列(死信队列)

基于队列和基于消息的TTLTTL是time to live 的简称,顾名思义指的是消息的存活时间。rabbitMq可以从两种维度设置消息过期时间,分别是队列和消息本身。 队列消息过期时间-Per-Queue Message TTL: 通过设置队列的x-message-ttl参数来设置指定队列上消息的存活时间,其值是一个非负整数,单位为微秒。不同队列的过期时间互相之间没有影响,即使是对于同一条消息...

2019-12-31 10:13:02 230 1

原创 j2Cache java 两级缓存框架

https://gitee.com/ld/J2Cache

2019-12-31 10:07:41 343

转载 MongoDB 比较适用哪些业务场景?

在云栖社区上发起了一个 MongoDB 使用场景及运维管理问题交流探讨的技术话题,有近5000人关注了该话题讨论,这里就 MongoDB 的使用场景做个简单的总结,谈谈什么场景该用 MongoDB?很多人比较关心 MongoDB 的适用场景,也有用户在话题里分享了自己的业务场景,比如案例1用在应用服务器的日志记录,查找起来比文本灵活,导出也很方便。也是给应用练手,从外围系统开始使用Mongo...

2019-12-24 10:50:43 1008

转载 ZooKeeper 集群搭建

ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效、高可用的分布式协调服务,提供了诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知和分布式锁等分布式基础服务。由于 ZooKeeper 便捷的使用方式、卓越的性能和良好的稳定性,被广泛地应用于诸如 Hadoop、HBase、Kafka 和 Dubbo 等大型分布式系统中。本文的目标读者是对 ZooKeeper 有一定...

2019-12-20 11:03:40 126

转载 9种高性能高可用高并发的技术架构

1、分层分层是企业应用系统中最常见的一种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对简单并比较单一的职责,然后通过上层对下层的依赖和调度组成一个完整的系统。在网站的分层架构中,常见的为3层,即应用层、服务层、数据层。应用层,具体负责业务和视图的展示;服务层,为应用层提供服务支持;数据层,提供数据存储访问服务,如数据库、缓存、文件、搜索引擎等。分层架构是逻辑上的,在...

2019-12-09 08:51:30 333

转载 BFF —— Backend For Frontend

本文主要内容:什么是 BFFBFF 解决了什么问题使用 BFF 的正确姿势实战中的玩法什么是 BFFBFF,即 Backend For Frontend(服务于前端的后端),也就是服务器设计 API 时会考虑前端的使用,并在服务端直接进行业务逻辑的处理,又称为用户体验适配器。BFF 只是一种逻辑分层,而非一种技术,虽然 BFF 是一个新名词,但它的理念由来已久。BFF 解决了什么...

2019-11-06 22:11:05 536

转载 元数据驱动的SAAS架构

https://yq.aliyun.com/articles/720185

2019-11-06 11:57:29 1570

转载 zookeeper持久化

注:本文中的请求和事务是同一个含义,表示来自客户端的写请求背景Zookeeper虽然是内存数据库,但为了保证高可靠性,其同时提供了持久化功能,通过快照和事务日志将数据保存在磁盘中.事务日志每个执行的事务都会写入到事务日志中,其存储位置由dataLogDir配置,当未配置dataLogDir时,使用dataDir作为存储目录,由于事务日志的写入速度较为影响Zookeeper的性能,可以将da...

2019-10-17 11:27:02 910

转载 分布式任务调度平台XXL-JOB搭建教程

一、使用XXL-JOB的原因1、 Quartz的不足Quartz作为开源任务调度中的佼佼者,是任务调度的首选。但是在集群环境中,Quartz采用API的方式对任务进行管理,这样存在以下问题:通过调用API的方式操作任务,不人性化。需要持久化业务的QuartzJobBean到底层数据表中,系统侵入性相当严重。调度逻辑和QuartzJobBean耦合在同一个项目中,这将导致一个问题,在调度任...

2019-09-20 18:28:07 1279

转载 分布式锁实现

现在面试,一般都会聊聊分布式系统这块的东西。通常面试官都会从服务框架(Spring Cloud、Dubbo)聊起,一路聊到分布式事务、分布式锁、ZooKeeper 等知识。所以咱们就来聊聊分布式锁这块的知识,先具体的来看看 Redis 分布式锁的实现原理。说实话,如果在公司里落地生产环境用分布式锁的时候,一定是会用开源类库的,比如 Redis 分布式锁,一般就是用 Redisson 框架就好了...

2019-09-20 18:17:42 164

转载 分布式锁的三种实现方式

在很多场景中,我们为了保证数据的最终一致性,需要很多的技术方案来支持,比如分布式事务、分布式锁等。有的时候,我们需要保证一个方法在同 一时间内只能被同一个线程执行。在单机环境中,Java中其实提供了很多并发处理相关的API,但是这些API在分布式场景中就无能为力了。也就是说单纯的Java Api并不能提供分布式锁的能力。所以针对分布式锁的实现目前有多种方案:分布式锁一般有三种实现方式: ...

2019-09-20 15:05:23 550

转载 微服务拆分注意事项

一、服务拆分的前提说到微服务,服务拆分是绕不过去的话题,但是微服务不是说拆就能拆的,有很多的前提条件,需要完成前面几节所论述的部分。首先要有一个持续集成的平台,使得服务在拆分的过程中,功能的一致性,这种一致性不能通过人的经验来,而需要经过大量的回归测试集,并且持续的拆分,持续的演进,持续的集成,从而保证系统时刻处于可以验证交付的状态,而非闭门拆分一段时间,最终谁也不知道功能最终究竟有没有bug...

2019-09-17 11:12:47 750

转载 Redis集群搭建的三种方式

一、单节点实例  单节点实例还是比较简单的,平时做个测试,写个小程序如果需要用到缓存的话,启动一个Redis还是很轻松的,做为一个key/value数据库也是可以胜任的。单节点部署参照:http://www.cnblogs.com/yiwangzhibujian/p/7053840.html 中的初级教程。二、主从模式(master/slaver)  主从模式的简介和配置,此处不再说,2....

2019-09-10 10:33:15 62790 11

转载 Spring Boot缓存注解@Cacheable、@CacheEvict、@CachePut使用

从3.1开始,Spring引入了对Cache的支持。其使用方法和原理都类似于Spring对事务管理的支持。Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存放在缓存中,等到下次利用同样的参数来调用该方法时将不再执行该方法,而是直接从缓存中获取结果进行返回。所以在使用Spring Cache的时候我们要保证我们缓存的方法对...

2019-09-09 19:53:31 181

原创 dubbo消费方和服务方调用流程

消费端调用流程、在业务层代码中调用远程接口的方法时,实际上是调用的本地创建的代理对象。即在《4.4.3 创建服务类的本地代理》中创建的代理对象。2、在该代理对象中,调用了InvokerInvocationHander.invoke方法。远程调用以Invcation、Result为中心,在这个方法中根据调用的远程方法和传入的参数构建RpcInvcation对象,该对象中的成员变量包括远程...

2019-09-06 10:31:59 1843

空空如也

空空如也

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

TA关注的人

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