自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (8)
  • 收藏
  • 关注

原创 nacos源码注释

前言小编最近跑去研究nacos的源码了,从spring-cloud-commons、spring-cloud-alibaba、netflix集成在一起写了一些注释,源码注释提交到了码云,欢迎大家品鉴。spring-cloud-alibaba源码注释地址spring-cloud-commons源码注释地址spring-cloud-netflix源码注释地址nacos-1.2.1源码注释地址注释内容netflix扩展spring-cloud-commons实现服务注册骨架nacos-dis

2020-09-19 15:52:20 471

原创 dubbo源码注释集

前言近一个月没冒泡了,其实不是小编偷懒了。最近在研究spring和dubbo的源码,并且在gitee开了一个仓库,给dubbo做了一点注释。还未完成,会尽能力多写一些,欢迎大家品鉴。大家可以clone仓库,一起做注释,一起学习,一起进步。dubbo源码仓库地址目前做的部分注释ExtensionLoader以ExtensionLoader.getExtention(name)方法为主线,标注扩展类加载过程的注释以ExtensionLoader.getAdaptiveExtension()方法

2020-08-29 10:52:20 253

原创 dubbo基础调用搭建

前言dubbo是一个高性能的RPC框架,提供面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现等能力(从官网上抄过来的,反正很强大),可以和spring无缝整合,实现接口透明化调用。简单说就是,通过dubbo,可以将本地spring容器中的服务暴露出去,也可以将远程服务引用到spring中(体现在代码中,就是简单换了两个注解,就好了!!!)。这里呢,介绍下dubbo的几种调用方式,主要分为:xml配置、属性文件+注解方式、API调用方式。dubbo官网地址:http://dubbo

2020-07-26 10:23:13 192

原创 RMI+Spring,实现远程调用

前言上篇实现了rmi远程跨JVM调用service,但是感觉很鸡肋吧!不能每个接口都单独注册一个RMI路径呀,太累了。所以这篇呢,会将rmi和spring集成起来,通过rmi实现远程反射调用spring容器中的其他接口。准备工作修改pom文件<!-- spring支持 --><dependency> <groupId>org.springframework</groupId> <artifactId>spring-co

2020-07-25 11:18:00 207

原创 RMI远程调用小样

前言由于单机应用的限制,整个系统在高并发量、用户量急剧上升时,系统可能就扛不住了。这个时候,给应用做集群或者拆分服务都可以解决。SpringCloud和dubbo都是不错的选择,但是整个系统重构起来还是很复杂的。当然,我们还有一种选择,那就是JDK为我们提供的RMI(remote method invoke)-- 远程方法调用,简单的说就是,可以跨JVM调用接口。比如你哪个接口扛不住压力了,可以拆分出来,放到独立的机器上,原服务使用远程调用的方式,分担节点的压力。下面,就简单实现一个RMI调用。

2020-07-21 21:08:21 93

原创 简单实现一个springmvc

前言做Java的应该不会有人没听过Spring吧!!Spring是一个优秀的IOC容器,为了增加对spring的了解,自己简单实现一个SpringMVC。先说明以下几点:1、IOC容器是个啥?就是一个大Map,可以理解为HashMap<String,Object>2、springmvc的核心从哪开始?DispatcherServlet熟悉servlet编程的小伙子,肯定都知道,面向Servlet编程时,会在web.xml中配置一个ServletMapping,指定了每个Servle

2020-07-11 10:38:50 420

原创 keepalived实现nginx软负载

前言nginx一般用作集群的反向代理,前端的请求先到nginx,nginx再将请求分发给集群中的机器,这样可以有效的避免单点故障。但有一个问题,nginx挂掉了怎么办?岂不是所有的东西都不能玩了!一般都是做nginx集群,始终保证有nginx存活着,但是不是感觉又有问题呢?nginx集群前面负责路由的那台机器是单点的,死掉了怎么办?这时候是不是感觉陷入了死循环。ok,解决该问题,方式有很多,以下提出两个:1 域名解析到多个nginx,一个域名可以解析到多个ip2 使用keepalived在多个

2020-06-27 14:22:05 303

原创 敏感字过滤:AOP+注解+DFA算法

前言敏感字过滤这个事情呢,说大不大,说小不小。一般合法用户是不会出很大问题的,但是一些非法用户故意搞你事情,就不是很友好了!毕竟现在网络这么发达,啥事传到互联网上,影响都不会小!!!今天基于DFA算法,使用AOP和自定义注解实现敏感字过滤方案!这里注明一下:从网上找了一个DFA算法工具类,将他修改了一下,结合AOP,使用起来更加的方便了!!!操练起来DFA算法的JAVA工具类说下我对这个工具类的改进:他本来是一个静态的工具类,字库的路径每次需要修改代码,修改为了使用Spring注入的方式

2020-06-27 09:05:41 999

原创 git项目管理方面的一些心得

前言接上一篇,分享一下git管理方面的心得。主要分为git项目管理的流程以及常用的git操作,一家之言,不喜勿喷!!!项目管理的一些问题团队成员之间如何快捷的管理代码,而不用考虑网络的问题git分为本地仓库和远程仓库。每个成员应确保有远程仓库的本地副本(将远程仓库的内容clone到本地),永远在自己本地副本上进行代码修改,实现本地副本的代码管理。git同时提供了离线状态下的版本控制,在有网络的时候,再将变更提交到远程仓库。定义团队成员的权限等级,不能太麻烦,但要确保安全性以及有序性权

2020-06-26 11:44:03 306

原创 centos7下使用gitblit搭建git服务器

前言程序员不知道git感觉很尴尬呀!git作为分布式版本控制工具,能在离线的状态下做本地的代码管理,比传统的svn体验要好很多。同时还可以在github、gitee上建立远程仓库,上传本地代码,实现合作式开发!!!但是在企业开发中,很多都不是使用github等作为仓库,而是要搭建自己的git服务器,实现本地仓库。通常实现的方法有gitlab、gitblit等,其中gitlab目前还没有windows版的,gitblit较为轻量,支持linux、windows版。今天就使用gitblit在centos7

2020-06-25 15:00:03 449 2

原创 centos7安装docker

准备centos7虚拟机安装步骤更新yum包yum update安装一些依赖包yum install -y yum-utils device-mapper-persistent-data lvm2添加阿里云的yum源yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docke r-ce.repoyum安装dockeryum install docker-ce启动do

2020-06-21 15:31:30 104

原创 Linux下安装nginx-1.15.8

前言nginx是个高性能的http和反向代理服务器,通常用于部署静态资源和反向代理服务器,能在最前端承接大量的请求,转发给服务层集群中的节点。今天在linux下搭建一个nginx服务器,用于日常记录环境准备Centos7虚拟机(配置好了独立IP)SecureCRT远程连接工具操练起来SecureCRT连接Centos7虚拟机中查看ip详情ifconfig使用远程工具连接查看是否可以连通网络ping www.baidu.com下载nginx的源码包cd /u

2020-06-20 10:08:09 711

原创 redis+lua+拦截器实现限流

前言当非法用户死命调用你的接口(机器攻击)时,怎么办?正常情况下,用户是不会那么频繁的通过前端调用你的接口的。一般出现某个用户极其频繁的调用你的接口时,那就一定要小心了,可能是想搞你!!!所以,一定要在API调用前端加个限流策略,也就是将用户的一段时间的访问次数记下来,超过某个值的时候,拒绝其访问。这种限流,可以加在nginx里面,也可以加在项目的过滤器中。但是这种高频数据放在哪呢?数据库?那你的数据库可能直接就炸了!!!ok,还是放在redis里吧!这时候就要考虑操作的原子性了。今天用lua来实

2020-06-13 16:30:00 591

原创 RedisTemplate+lua脚本实现redis分布式锁

前言redis本身属于弱事务,同一个线程向redis提交的指令,并不一定会紧挨着执行,这就会产生数据安全问题。但由于redis是单线程执行指令的,所以只要能将多个指令打包到一起,就可以保证多个操作的原子性。并且redis是支持lua脚本的,会一次性将lua脚本中的所有指令全部顺序执行完毕,中间不会插入其他线程提交的指令。鉴于以上特性,使用RedisTemplate+lua脚本实现一把可重入的分布式锁,且支持设定锁时间。lua脚本准备上锁的脚本-- 加锁脚本-- key1:要加锁的名称 ar

2020-06-13 14:25:28 1304

原创 在mysql双主复制基础上,实现代码自动切换数据源

前言mysql双主复制已经搞完了,干点实事。在代码里面使用多个数据源,并实现自动检测数据源的可用性,实现代码层面的数据库热切换。原理Spring为我们提供了一个AbstractRoutingDataSource,可以注入多个数据源(内部存储为一个map键值对,key为数据源的别名,value为数据源的实例),并且通过钩子函数determineCurrentLookupKey来选择要切换的数据源。通过这种方式,可以实现读写分离,以及数据库热切换。实现过程实现mysql的双主复制修改appl

2020-06-11 23:24:18 357

原创 java使用zookeeper实现分布式锁的两种方式

前言在同一个运行的项目(同一个JVM)中,并发操作时,可以使用jdk提供的synchronize或者lock显示锁来控制线程安全。但是放到分布式环境下,这种方式就玩不转了,必须要用到分布式锁。实现分布式锁的方式数据库(性能较低)redis(可能出现死锁)zookeeper(实现难度较大)使用zookeeper实现分布式锁的两种方式基于zookeeper的异常处理机制(性能损耗较大,会出现多个线程同时竞争的情况)基于zookeeper顺序节点的互相监听机制(公平锁)代码实现使用

2020-06-10 20:07:52 795

原创 Java实现动态代理的两种方式

Java实现动态代理JDK提供的基于接口的动态代理机制,使用InvocationHandler和Proxy实现cglib提供的基于继承的动态代理机制,使用Enhancer和MethodInterceptor实现优缺点jdk的动态代理,要求被代理的类必须实现接口cglib的动态代理,不要求被代理的类实现接口,但要求被代理的类方法,必须能被重写(final会代理失败)代码实现基于JDK实现的动态代理package utils.dynamic;import java.lang.refl

2020-06-08 22:48:24 356

原创 【百度搜不到】Spring-Security+Swagger根据指定的用户角色生成不同的API文档

前言Swagger用来制作API文档十分方便,但是在项目分角色进行API鉴权时,如果事先没有对整个项目的API层级有很好的定义的时候(代码的分包比较混乱,一个controller中包含多个角色调用的接口),会显得整个API文档非常的臃肿,看起来很不方便。这个问题,就被小编我遇到了。并且在网上浏览时,发现这方面的资料及其少,甚至说没有。。。万不得已,只能去撸一撸swagger的源码,并且源码也搞得我云里雾里的,但还是被我给找到了解决的方法,这里跟大家分享一下。分析重头分析下Swagger的配置类

2020-06-06 13:44:00 681

原创 Java实现常见的排序算法

前言算法对于工程师来说,是很重要的知识,能直接体现一个人的逻辑思维能力。鉴于此,我实现了常用的几种排序算法,用来加深记忆。排序算法冒泡排序/** * 冒泡排序:升序 * * @param array * @return */ public static int[] bubbleSortAsc(int[] array) { if (array.length == 0) { return array; } for (int i =

2020-06-06 12:42:01 100

原创 windows下实现mysql双主复制

前言实现双主复制其实也就是在主从复制的基础上,开启从节点的binlog日志。在从节点上也创建一个用于同步数据的账号,同时在原来主节点上配置同步信息即可。实现主从复制可参考我的另一篇博客,windows下实现mysql主从复制。搞起来1 3308节点(原来的从节点)配置1.1 开启binlog日志log-bin = mysql-bin该配置在创建mysql实例时已开启,所以本次忽略1.2 创建用于同步数据的账号create user 'syncUser'@'127.0.0.1' iden

2020-05-24 10:35:13 368

原创 windows下实现mysql主从复制

前言所谓主从复制,其实就是为了分摊单个数据库节点的压力,将原来的一个数据库节点,变成多个。不管是主从复制还是双主复制,原理都是根据指定节点的binlog日志,在自己的节点中做同样的操作而已,借这种手段完成数据库之间的同步。主从复制,主库数据发生变化时,从库会根据主库的binlog日志,跟着做同样的操作,但是从库自己的变化,不会同步到主库。一般的应用场景就是数据库的读写分离,主写从读。双主复制,在主从复制的基础上,从库的变化也会同步到主库,此时两个数据库是完全一致的。从哪个节点发起的数据变更,最后都会

2020-05-24 00:13:37 1116

原创 windows下源码安装mysql实例(一)

前言为啥要使用源码安装mysql?使用exe安装mysql时,会默认安装一大堆的东西,不能满足个性化的需求。并且安装多个实例时,使用exe可能会有冲突!开始安装下载mysql源码1 访问mysql官网地址2 选择对应版本的源码,进行下载安装mysql实例1 解压下载好的源码包,复制到自己想要的位置,并解压2 在node1下创建一个my.ini文件(mysql实例的配置文件)[client]port = 3307default-character-set = utf8[m

2020-05-21 21:09:32 708 1

原创 SpringSecurity自定义登录认证

前言为啥要写这篇呢?昨天写了个security+jwt做token令牌及鉴权,其中登录认证是用自己的方法做的,只使用了授权校验,并没有用spring-security的登录认证。今天刚好有个水友碰到了登录认证的相关问题,帮忙解决后也在这里记一笔,方便以后回忆!!!解决思路自定义一个登录认证处理器注入到security的登录认证管理器中(可以支持多个)登录接口中,使用认证管理器进行登录认证(认证时会使用策略模式进行适配)认证成功后,做一些业务处理(结合原有的token逻辑)搞起来1 自

2020-05-21 19:58:55 1055 1

原创 SpringBoot集成redis,redis操作工具类以及测试,fastjson序列化

前言redis作为一个高性能的缓存服务器,支持多种数据格式的存取,使用范围十分广泛,在web后台缓存界中有不可动摇的地位。redis的优势就是,单节点能支持超大的并发量(数万乃至数十万),性能强劲。通常的用法就是将数据库中的热点数据,存放到redis中,减少数据库的压力,增强系统的稳定性。且支持各种集群模式,所以将redis操作好,相当于系统多了好几条命。操作起来1 docker安装redis这里我使用docker安装一个redis,非常方便快捷。没用过的朋友可以下载redis的window

2020-05-20 18:27:11 410

原创 Springboot集成JWT实现token令牌,同时集成SpringSecurity实现API鉴权

前言为啥不用session和cookie,而要用token传统的web应用,使用jsp作为前端展示的情况下,大家习惯用的手段都是用户登录后,将用户的信息放到tomcat的session中保存,返回前端时,cookies中有个jsessionId。后续的各种操作都会用到这个jsessionId从tomcat的session列表中,读取用户的信息,再根据用户的信息做各种数据的处理。这种处理方式在单web应用中问题是不大的。但是自从分布式、微服务等理念流行之后,各个服务组件之间的session共享问题就有

2020-05-20 15:00:34 1319

原创 迭代慢hash密码让你的用户更放心

前言项目中,用户的登录密码怎么保存呢?明文?MD5加密?MD5加盐?其实这些做法都不是很好的选择!原因如下:明文肯定是不可取的,一旦数据库被“脱裤”了,基本上用户信息就完蛋了简单的MD5加密安全性上只比明文高一点,为什么呢?只要你有一个MD5加密集,对照数据库里的密文,很容易就能把密码破解出来!常用的手段就是:字典破解、彩虹表MD5加盐,其实就是在生成密码MD5值的时候,随机拼接一个字...

2020-05-03 21:18:51 913

原创 springboot集成mybatis做数据库操作

前言为啥要用mybatismybatis作为一个优秀的orm框架,功能强大,却又很轻量,他不像hibernate那么重(使用hibernate是真的不需要写sql,只要你了解hql语言就好了)应用场景广,可定制化sql,完美兼容sql语句,实现sql的动态调整性能高,跟项目的耦合度低代码撸起来做到以下几步,springboot集成mybatis就搞定了1 修改pom文件&l...

2020-05-02 22:52:48 182

原创 springboot使用mybatis-generator自动生成代码

前言为啥要使用mybatis-generator写一大推的实体类、mybatis中的mapper类和sql文件很累(整个项目只有一个表的同学请安静,别抬杠!)不太记得mapper类和sqlmapper映射文件的格式了,有点尴尬分模块开发时,给其他人拷贝一大推的基础类,很傻哦使用mybatis-generator的好处只要你数据库设计好了,快速帮你生成实体类,不用再哼哧哼哧的撸...

2020-05-02 21:58:04 538

原创 boot集成swagger2,做API说明和测试

前言在前后端分离的开发模式下,两边的开发人员如何快速沟通?后端开发者将功能做出来之后,如何告知前端工作者?写个API文档?API升级时,如何维护API文档?再搞一个?No!效率太慢了,不适合快速开发的场景。这些情况下,swagger你值得拥有!!!swagger能和和spring完美结合,自动生成线上API,接口开发完毕,API也就搞定了。这时候前端工作者要API,直接告诉他个网址就好了...

2020-04-19 20:40:08 374

原创 给你的Springboot项目加个日志

给你的boot项目加个日志说明SpringBoot默认集成了日志模块,所以我们只用在yml配置文件中配置日志即可找一找日志依赖怎么加进去的看看spring-boot-dependencies里面有啥东西看看spring-boot-starter-logging里面有啥东西找了这么多,就是想告诉大家,boot默认为我们集成了logback的日志依赖配置yml开启日志logging...

2020-04-19 14:59:49 2052

原创 idea中配置Terminal调用git-cmd

介绍idea的Terminal中默认调用的是操作系统的cmd命令。这里为了使用git管理更方便一点,将Terminal修改为调用git-cmd命令,具体步骤如下git的重要性这里不用再赘述了吧,开发的小伙伴应该都明白,为啥不用svn,自行百度!安装git请在浏览器中输入【Git安装教程】,对着安装就好,很简单重头戏,在idea中配置Terminal在idea中配置下git修改T...

2020-04-19 13:34:37 2388

原创 快速使用idea搭建springboot项目

使用idea搭建springboot项目创建项目1 打开idea,file -> new -> projects,选择Spring Initillizer2 填写项目的基本信息,包路径等等3 给springboot选择相关的依赖4 剩下一路点击next,成功创建项目创建成功后,项目文件路径如下图,符合maven的项目格式,并且有git的支持,项目有g...

2020-04-19 12:57:11 178

zyu-springmvc.rar

一个SpringMVC的简单实现,仿照SpringMVC定义相关的注解,进行bean扫描、实例化、依赖注入、url映射、参数解析等,实现自己的mvc

2020-07-11

spring-security实现自定义登录认证.rar

springboot集成spring-security,实现自定义登录认证,代码亲测,同时附带jwt+security集成的代码,亲测可用

2020-05-21

springboot+jwt+spring-security.rar

springboot集成jwt实现token令牌,集成spring-security实现API鉴权,集成redis做token黑名单,代码亲测,欢迎品尝!!!

2020-05-20

springboot+mybatis实现迭代慢hash验证登录.rar

springboot+mybatis实现迭代慢hash验证登录,附带慢hash验证工具类,亲测可用!!!

2020-05-03

springboot+mybatis集成demo.rar

springboot集成mybatis,附带测试类,脚手架代码,亲测可用,欢迎下载,共同学习,我是zyufocus

2020-05-02

springboot+mybatis-generator.rar

springboot集成mybatis-generator,实现项目基本框架的搭建,快速开发,代码亲测

2020-05-02

boot+swagger2.rar

Springboot集成swagger,做前后端分离下的API管理、以及调试功能源代码,亲测可用,欢迎大家指正!!!

2020-04-19

springboot_demo.rar

springboot示例项目,一个积分意思一下,还要凑字数很痛苦,大家理解一下,关注我,一起学习一起提高,加油啊

2020-04-19

空空如也

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

TA关注的人

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