自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

新林的博客

宝剑锋从磨砺出,梅花香自苦寒来

  • 博客(84)
  • 资源 (1)
  • 问答 (2)
  • 收藏
  • 关注

原创 spring cloud入门学习以及spring cloud技术栈架构图(分布式系统架构图)

spring cloud入门学习以及spring cloud技术栈架构图。分布式系统架构图。一、Spring Cloud是什么?spring cloud是微服务架构的一整套微服务解决方案的技术栈,是这些技术栈的框架集合,包含了服务治理、注册中心、配置中心、客户端负载均衡、网关、限流熔断、分布式链路追踪、分布式事务等技术栈,这些技术栈提供了微服务架构存在的各种问题的解决方案。

2020-07-26 23:14:42 6102

原创 基本排序算法的总结笔记

排序算法的总结

2022-11-05 00:14:13 742 1

原创 使用redis实现延时队列的一个简单方案(延时队列的设计方案,源码分享)(草稿)

一、背景,开发场景之前负责开发过一个会议室系统,这个系统整体不难,唯一有一个技术难点,就是需要延时任务,会议的开始、结束需要系统自动更新状态(进行中、已结束)以及开始前多分钟、快结束后多少分钟需要发送邮件提醒、短信提醒,以及超时待审批的会议室申请自动审核不通过。这些操作对我们系统来说,不是固定时刻的定时任务轮询就可以的了,因为每一时刻(粒度可能会小到秒)都有可能有执行的。这种开发场景,就需要使用到延时任务了。不使用延时任务不可以吗?使用定时任务每隔一段很短的时间轮询去数据库查询数据?当然可以,但是如

2021-12-31 19:04:24 3306

原创 springboot动态多数据源配置和使用(从数据库读取数据源配置)(三)

上两遍已经描述了动态多数据源的原理和基础实现了,上面两篇都是从applition.yml中配置多数据源的,这里再拓展补充一下其他场景,如何读取数据源不从applition.yml中配置,实现从数据库中读取数据源配置并动态切换数据源。

2021-11-30 08:15:00 14206 19

原创 springboot动态多数据源配置和使用(二)

很久之前写一篇静态的springboot多数据源配置,一直没写下篇,这里补充一下自己用动态多数据源的场景和开发逻辑。之前说的静态多数据源是每个数据源配置一套mapper,现在说说如何动态多数据源共用一套mapper,以及数据源不从applition.yml中配置,实现从数据库中读取数据源配置并动态切换数据源。

2021-11-29 16:54:57 6333 2

原创 计算机网络-字符编码的由来(为什么会有乱码,ASCII、Unicode、GBK和UTF-8字符编码区别)

为什么我们在网络中传输数据,需要指定字符编码,例如使用UTF-8、GBK等编码。那么字符编码到底是什么?以前我也很困惑这个问题,但是对于计算机来说,由于底层电路的设计本质,只能是识别0和1两种代码,那么传递的也只能是0和1了。既然计算机只能识别0和1,那怎么才能把0和1转成我们的中文、英语等各种字符语言呢。

2021-08-11 15:05:01 1391 1

原创 计算机网络-传输层的工作原理以及TCP协议:三次握手

那传输层具体是什么样子的,传输层做了些什么工作呢?传输层的功能是由操作系统提供负责实现的,传输层位于操作系统的协议栈。感觉这篇没有写出我想要的效果,试着写,后面有时间再优化,这篇大多参考《网络是怎么连接的》,感兴趣的同学建议直接读这本书,我这里做一些自己的笔记

2021-08-08 17:22:16 1988 2

原创 计算机网络-DHCP的工作原理,IP地址如何获取

我们计算机的IP地址如何来的?DHCP的工作原理是什么?看了前面交换机、路由器、网络包传输的文章,那么就知道要连上网络,就需要IP地址,那么IP地址是如何来的呢?IP地址其实只是一个标志,例如是在公网上的唯一标志,在局域网上的唯一标志,通过这个标志来找到某个网段对应这个IP的计算机。最早的时候我们都是自己手动配置电脑的IP地址。获取IP地址有两种方式,一种是手动配置获取,一种是通过DHCP服务器获取。

2021-08-06 22:38:36 6283 2

原创 计算机网络-路由器和交换机的区别

经过了前面两篇博客,我们大概都认识了交换机和路由器了,那么再总结一下交换机和路由器的区别。交换机和路由器都是网络硬件,那么主要区别是什么呢?按我理解,交换机是用来连接局域网的,路由器是用来连接互联网的。

2021-08-05 14:56:45 18202 4

原创 计算机网络-学习路由器

记录一下学习笔记,路由器是什么,路由器的工作原理,路由器是如何连上互联网的,路由器和交换机的区别。这篇大多参考《网络是怎么连接的》,感兴趣的同学建议直接读这本书,我这里做一些自己的笔记。

2021-08-05 14:33:04 7858 1

原创 计算机网络-学习交换机

交换机是什么?交换机有什么作用?交换机如何传输数据包?交换机和和集线器、路由器的区别?交换机是一种用于电(光)信号转发的网络设备,能连接多台设备形成一个局域网,简单来说就是可以把多台计算机连接起来,形成一个局域网。交换机是用于连接多台设备,让这些设备相互具备网络互通。

2021-08-04 14:01:03 3923 2

原创 使用Memory Analyzer分析内存溢出问题(分析hprof文件)

背景:生产环境有一个程序突然挂掉了,进去控制台没有任何反应,看到服务器已经生成了hprof文件,hprof后缀文件是堆内存溢出导致程序挂掉时保存的快照,但是是什么原因导致程序内存溢出的呢?记录一下分析hprof文件的流程笔记。hprof是什么文件?是java进程的内存镜像文件,里面包含了内存堆详细的使用信息

2021-06-01 22:42:11 14296 1

原创 计算机网络-网络包介绍以及网络包如何通过互联网传输

计算机网络网络中传输的网络包具体是什么样子的?又是如何通过一台终端传输到另一个终端?1.数据包的定义其实网络包本质就是连续有顺序的0和1的一连串数字,一个终端通过互联网把这一连串有顺序的数字传输到另一个终端接收,这就是网络包传输。计算机只能识别二进制的数据,数据也是用二进制的方式存储在计算机中。要想实现多台计算机之间的通信,就要依赖一定的通信协议,把二进制的0和1按通讯协议的格式来构成有顺序的0、1串来传输注:单纯的0和1并没有意义,必须是有顺序的包是由头部和数据两部分构成的。头部包含目的地址

2021-04-05 22:06:35 3601 2

原创 k8s-学习笔记总结(从入门到放弃的学习路线)

刚入门学习k8s,我觉得挺难的,一头雾水,买了一本《Kubernetes权威指南》,真的很厚。我觉得作为应用开发人员的学习路线,不要想着一口气看完k8s的所有概念,要逐步学习,要看完这么厚的书,没有实战也很懵的。 我觉得比较合适的学习路线应该是:应用开发人员只需要先学很少的几个 Kubernetes 关键概念,比如 Pod、Service 和 Deployment,然后直接把精力放在如何把自己的应用部署上去,并着手研究部署到 Kubernetes 之后的各类场景化需求,再反过来去逐个学习

2021-01-12 21:53:27 53024 16

原创 k8s-(八)通过Ingress-nginx暴露service给外部网络访问

前面总结了Kubernetes暴露服务的三种方式,这里再总结一下如何通过Ingress-nginx暴露service对象给外部网络访问

2021-01-12 13:58:56 15732 3

原创 k8s-(七)暴露服务的三种方式

上一篇博客总结的项目怎么部署到k8s上运行,但是运行pod ip是docker网桥的IP地址段进行分配的,通常是一个虚拟的二层网络,外部网络并没有办法访问,并且,pod ip是随时会变的,不是固定的,k8s引入了Service的概念,通过Service管理这些pod,Service创建后的Service IP是固定的。但是Service IP(Cluster IP)是一个虚拟的IP,由Kubernetes管理和分配P地址,外部网络无法访问。k8s有三种方式暴露Service给外部网络访问

2021-01-11 21:05:01 30177 8

原创 k8s-(六)在kubernertes上部署运行项目

前面的博客总结了k8s的概念以及集群部署,那么,k8s集群都搭建好了,搭建了集群,最重要的是要干嘛?肯定要部署我们的项目程序,把我们的项目放到k8s上运行。在docker的时候,我们通过docker镜像生成容器运行,k8s也一样,把镜像生成容器运行,但是k8s并不直接使用docker容器,而是使用pod,Pod 可以理解是一组容器,是k8s最小的调度单位。在k8s上创建一个pod资源对象来运行我们的项目。我们不会单独创建一个pod,而是创建Deployment对象,通过Deployment来管理pod

2021-01-11 15:19:27 7769

原创 docker私有仓库搭建,推送镜像到私有仓库

Docker 官方提供了一个搭建私有仓库的镜像 registry ,只需把镜像下载下来,运行容器并暴露5000端口,就可以使用了

2020-12-31 17:09:24 2510

原创 k8s-(五)最全的安装教程(使用kubeadm在Centos7上部署kubernetes1.18)以及安装异常问题记录

k8s使用kubeadm进行安装步骤,使用kubeadm安装k8s会简单很多,一直想总结写一篇简单明了的安装教程,希望能有用。k8s在2020年初发布的第一个版本是1.18.0,目前最新版本是1.19.4,并且1.20的版本应该会在年底发布,但是我们这里安装的版本是1.18。

2020-11-26 21:01:40 32813 17

原创 git把测试分支误合并到开发分支后的回滚操作

场景:正常开发流程,我们会从master分支上拉一个新分支作为开发分支进行开发,但是在开发过程中有伙伴把测试分支合并到了开发分支,最后如果把开发分支合并回master分支的话,master分支会多了测试分支的代码,这些代码可能在其他开发模块还没上线,可能会导致生产环境出现异常,那么,如何从开发分支撤销掉从测试分支合并过来的代码呢?

2020-11-25 22:00:21 4132 1

原创 springboot项目dubbo禁止本地服务向zk、nacos注册中心注册并且能调测试环境的dubbo服务

在本地环境启动dubbo服务的项目,遇到一个问题,就是项目启动后,本地的dubbo服务会注册到测试环境的zookeeper、nacos上,但是注册的ip地址是只有自己电脑能访问的,就会导致测试环境拿到了我本地的ip地址,但是连接不上,但是我们想调用测试环境的dubbo服务,又不想自己本地的dubbo服务注册到注册中心。记录一下处理方案加上dubbo.registry.register=false即可背景:我们的dubbo注册中心是集群,有多个,有zk和nacos作为dubbo的注册中心sprin

2020-11-24 17:25:54 4367 5

原创 mysql按组区分后获取每组前几名的sql写法(以及学生各科成绩大于多少分的总结)

遇到一个场景,要把数据分组,然后获取每组前10条数据,首先我想到用group by分组,但是难点是分组后怎么知道该数据在组里面排第几条。研究了一下,写个demo,记录一下笔记,后面顺便也记录一下常规sql的一些考试题(统计各科学生成绩大于多少多少分的题目)

2020-11-21 18:32:31 3318 3

原创 springboot中参数验证自定义注解,@Valid总结

使用spring的@Valid注解加在接口参数上的类上,然后在类的属性上加上实现了JSR-303规范的注解即可实现校验对象的属性JSR-303是一个数据验证的规范,但是spring并没有对其进行实现,Hibernate Validator是实现了这一规范的我们springboot项目里面是已经引入了hibernate-validator的包,里面包含了实现JSR303规范的注解我们点击进去源码可以看到validation-api包的已有很多实现JSR-303规范的注解注解名称功

2020-11-13 13:42:23 3868 4

原创 springboot项目中自定义注解的使用总结、java自定义注解实战(常用注解DEMO)

初学spring的时候使用注解总觉得使用注解很神奇,加一个注解就能实现想要的功能,很好奇,也想自己根据需要写一些自己实现的自定义注解。问题来了,自定义注解到底是什么?肯定会有人和我一样有这个疑惑,我根据自己的理解总结一下。看完下面的几个使用自定义注解的实战demo,小伙伴大概就懂怎么用了。其实注解一点也不神奇,注解就是一种标志,单独使用注解,就相当于在类、方法、参数和包上加上一个装饰,什么功能也没有,仅仅是一个标志,然后这个标志可以加上一些自己定义的参数。

2020-11-12 23:50:24 25859 26

原创 spring boot2.x使用kafka消息队列(以及低版本springboot1.5x整合kafka后的问题)

项目中经常会用到kafka作为消息中间件,有kafka记录收集日志,也有用kafka传消息异步处理业务逻辑,如果kafka处理业务逻辑,则要业务考虑是否要保证消息可靠性。记录一下springboot使用kafka的项目demo,以及配置文件如何配置

2020-07-30 22:45:40 2804 3

原创 spring cloud gateway网关的简单使用

原来springcloud使用的网关是Zuul,但是Zuul1.0性能不太好,而Zuul2.0一开始并没有开源,Spring为了替换Zuul1.0而开发了Spring Cloud Gateway,所以Spring现在推荐使用的网关是Spring Cloud Gateway。为什么要用网关?因为在微服务架构里面,可能有成百上千的微服务,IP、端口不能写死。所有外网客户端访问,都经过网关,然后网关也会从注册中心发现要访问的服务的IP列表,通过网关转发这些请求到相关内部的服务

2020-07-26 19:09:17 1006

原创 引入spring-cloud-starter-dubbo后启动项目失败:No application config found or it‘s not a valid config!

引入spring-cloud-starter-dubbo后启动项目失败:java.lang.IllegalStateException: No application config。检查源码是说dubbo.application.name这个配置没有,但是我配置了也是提示这个异常,再检查发现是jar版本问题。spring-cloud-alibaba-dependencies由2.1.0.RELEASE修改为2.1.1.RELEASE即可解决

2020-07-26 12:17:48 19306 5

原创 spring cloud使用dubbo实现服务调用,以及dubbo调用服务和springcloud的feign调用服务的区别

spring cloud整合dubbo组件实现服务调用,以及dubbo调用服务和springcloud的feign调用服务的区别

2020-07-26 00:16:27 6123 1

原创 spring cloud基于Ribbon和OpenFeign组件实现服务远程调用

Ribbon和Feign是什么?为什么要使用这两个组件?Ribbon 和 Feign是spring cloud里面基于http请求的实现客户端负载均衡调用其他服务的组件,是一个HTTP客户端工具类框架,直接引入到项目中使用,不需要单独部署。Feign 是在 Ribbon的基础上进行了一次改进,可以更优雅而简单的实现了服务调用。为什么使用Ribbon、Feign这两个组件?在没有使用ribbon、feign之前,我们怎么调用其他服务的HTTP接口?我们一般使用HttpClient 或 RestTemplat

2020-07-19 19:32:07 643

原创 spring cloud使用nacos作为注册中心以及nacos的下载、服务器搭建

nacos是阿里巴巴开源的注册中心,而eureka2.0已经闭源了,所以nacos可能是接下来替换eurea的一种解决方案。对比于现在用的Zookeeper,Eureka注册中心,Nacos即能支持Dubbo生态,又能支持springcloud生态。相当于springcloud体系中的 Eureka + springcloud config。这里使用springboot2.0整合nacos,记录这个流程的笔记

2020-07-15 21:34:01 1467 1

原创 java 1.8 stream使用总结+实战demo

stream是jdk1.8引入的一个新概念,把列表流stream化,然后再加工成我们想要的列表或者别的数据我们经常会对列表list数据用for循环,用stream来替换for循环会更简洁。参考网友的图,我觉得这张图描述的很清楚,steam可以不断进行加工Stream的操作符大体上分为两种:中间操作符和终止操作符1.中间操作符就是Lambda表达式的链式操作,可以链式对流进行操作,操作完后...

2020-01-22 14:57:43 810 1

原创 dubbo springboot+dubbo泛化的使用,以及开发时直连本地的dubbo服务(dubbo指定点对点调用服务)

一般情况我们使用dubbo通过rpc调用dubbo提供方的服务,首先要在消费者的项目中引入接口提供者的jar包(provider端暴露的接口和方法),然后使用jar包里面的类和方法,两端才能正常通信调用。但是如果要调N个不同服务提供者的接口,就要引入N个jar包,这时候消费者项目有N多个dubbo提供者的jar,项目耦合度就会很大。我们可以用dubbo的泛化实现调用dubbo服务,泛化调用不需要引入provider提供的jar即可实现远程调用,降低耦合。区别就在于参数和返回值中所有的POJO都用Map表示。

2020-01-04 00:24:52 3963

原创 dubbo springboot+dubbo入门demo,以及windows的zookeeper环境搭建

搭建一个简单的springboot+dubbo的入门项目,首先要启动一个zookeeper作为注册中心,然后启动一个springboot的dubbo服务提供者,再启动一个springboot的dubbo服务消费者,那么服务消费者就可以在启动时去注册中心拿到dubbo服务提供者的调用连接,然后服务消费者直连dubbo服务提供者获取服务。注:不启动注册中心,在dubbo消费者指定dubbo服务提供...

2020-01-03 23:04:07 521

原创 分享一个简单好看的html的表格table(个人简历的html表格),vue table,以及vue打印(简单好用的vue打印插件)

想写一个很普通的那种word文档样式的table,发现网上很多都是什么教程,没有合适的,我只想要一个拿来就能用的html的table,没有什么别的依赖,而且样式要很普通的简单的表格。既然没有合适的,那我分享一个。以及记录一下在vue里面如何让浏览器弹出打印框打印这个表格table(一个在git上发现的好用的打印插件,不用install进项目,直接存一个js文件就能用,简单好用的vue打印插件)。下面代码粘贴出来另存为html文件就能直接用,没有别的依赖,先看效果图

2020-01-02 21:30:25 6382 6

原创 js splice使用总结(对js数组的增删改),替换数组的指定位置的数据,以及js数组的位置移动,向上(前)移动,或者向下(后)移动,el-table上移下移

在vue里面修改数组,发现页面不会重新渲染,这时候需要用到splice来操作数据,学习总结一下splice,增删改,splice实现替换数组的指定位置的数据,以及实现数组的位置移动,数组的数据项向前移动向后移动。splice3 个参数:起始位置、要删除的项数和要插入的任意数量的项,再简单说splice有三个位置的参数,第一个index是数组的位置,第二个是这个位置要删除的项数、,第三个位置以及后面的第四五等位置都表示插入的数组项。看代码理解吧

2020-01-01 16:43:03 4824

原创 js 对象深拷贝、对象数组深拷贝的几种方法总结

写前端的时候经常会遇到对象的拷贝,一般我们会用到深拷贝,深拷贝就是完完整整的将一个对象从内存中拷贝一份出来,放到另一块新开辟的内存中去。向下面这种赋值是浅拷贝,a、b都是对同一块内存进行引用,a、b哪一个变量修改对象的属性值都会相互影响。总结一下常用的对象深拷贝以及数组对象的深拷贝。1. 序列化转成json字符串深拷贝,以及存在的问题;2. Object.assign()深拷贝,以及存在的问题; 3. 循环递归深拷贝。

2020-01-01 14:27:39 8767

原创 vue 组件间的通信,子组件向父组件传值的方式总结

写vue,如果页面涉及到多个组件,就会涉及组件之间的通讯,可能是父子组件间的通讯,也可以是同级组件间的通讯,那么,vue里面的组件如何通讯。一般来说在vue的数据传递是在父组件传子组件通过属性来传,子组件传父组件通过事件来传值。1. 子组件通过通过this.$emit()的方式将值传递给父组件;2. 通过vuex来传递组件间的数据;3. 通过中央总线来传递组件间的数据;4. 通过修改父组件传过来的对象属性

2019-12-15 22:51:03 6539 1

原创 vue element-ui修改form表单的el-input的宽度,el-select的宽度

自从用了element-ui,确实好用,该有的组件都有,但是组件间的样式都固定好了,有时候像form表单这样,页面的input、select等宽度不一定会是一样的,可能有些长,有些短,这时候改变这些控件的宽度就有点麻烦了。很多都说在el-input里面加width,但是效果不好,简单总结一下这个,利用css的样式优先级覆盖原来elment-ui里面的控件样式

2019-12-15 21:24:03 53155 2

原创 vue element-ui的form表单校验总结,动态校验、自定义校验(用正则校验手机号码、数字、url、中文)

写了一段时间的vue,前端用了element-ui,经常会用到from表单,总结一下form表单的校验,以及遇到过的问题。1. 正常添加校验流程。在form表单加rule;2. 只想对单个input校验;3. 自定义校验;4. 添加动态校验(可以根据需要显示校验或者改变校验规则);5. 遇到校验无效的问题

2019-12-14 23:31:32 43070 5

原创 git IDEA的分支合并时的冲突问题总结,merge和rebase的区别

以前用习惯了svn,一直觉得svn简单好用。用了git之后,git真的更好用,不过刚开始用的时候,特别不懂怎么解决冲突问题,以及在分支合并的时候有点怕怕的,怕合并少了别人的代码,或者合并错分支等等。还有idea上的git我一开始也只会pull和push,对别的功能点也不懂。探索一下merge和rebase和冲突时的操作,合并分支有merge 和rebase两种方式

2019-12-04 22:02:56 17288 7

code-generate.zip

以前开发过完整的快速开发平台,想分享里面的基本代码生成的开发流程,大概就两个重点,一是数据库表转java实体类,二是编写模版 代码生成器的核心开发流程 如何连接数据库,获取数据库信息,以及根据数据库的表字段信息如何转换成java实体类型 1)获取数据库表信息 2)数据库表信息转java类型 配置必须的基本数据,根据模版语言编写代码模版,根据模版生成代码文件(我这里用freemarker模版语言) 1)配置数据库类型,帐号,密码,需要生成的表的基本信息 2)编写模版,根据配置的信息注入模版生成代码文件以及生成代码文件的路径 参考文章:https://blog.csdn.net/qq_21187515/article/details/92182434

2019-06-16

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

TA关注的人

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