![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 91
新林。
这个作者很懒,什么都没留下…
展开
-
基本排序算法的总结笔记
排序算法的总结原创 2022-11-05 00:14:13 · 764 阅读 · 1 评论 -
使用redis实现延时队列的一个简单方案(延时队列的设计方案,源码分享)(草稿)
一、背景,开发场景之前负责开发过一个会议室系统,这个系统整体不难,唯一有一个技术难点,就是需要延时任务,会议的开始、结束需要系统自动更新状态(进行中、已结束)以及开始前多分钟、快结束后多少分钟需要发送邮件提醒、短信提醒,以及超时待审批的会议室申请自动审核不通过。这些操作对我们系统来说,不是固定时刻的定时任务轮询就可以的了,因为每一时刻(粒度可能会小到秒)都有可能有执行的。这种开发场景,就需要使用到延时任务了。不使用延时任务不可以吗?使用定时任务每隔一段很短的时间轮询去数据库查询数据?当然可以,但是如原创 2021-12-31 19:04:24 · 3377 阅读 · 0 评论 -
springboot动态多数据源配置和使用(从数据库读取数据源配置)(三)
上两遍已经描述了动态多数据源的原理和基础实现了,上面两篇都是从applition.yml中配置多数据源的,这里再拓展补充一下其他场景,如何读取数据源不从applition.yml中配置,实现从数据库中读取数据源配置并动态切换数据源。原创 2021-11-30 08:15:00 · 14787 阅读 · 20 评论 -
springboot动态多数据源配置和使用(二)
很久之前写一篇静态的springboot多数据源配置,一直没写下篇,这里补充一下自己用动态多数据源的场景和开发逻辑。之前说的静态多数据源是每个数据源配置一套mapper,现在说说如何动态多数据源共用一套mapper,以及数据源不从applition.yml中配置,实现从数据库中读取数据源配置并动态切换数据源。原创 2021-11-29 16:54:57 · 6467 阅读 · 2 评论 -
使用Memory Analyzer分析内存溢出问题(分析hprof文件)
背景:生产环境有一个程序突然挂掉了,进去控制台没有任何反应,看到服务器已经生成了hprof文件,hprof后缀文件是堆内存溢出导致程序挂掉时保存的快照,但是是什么原因导致程序内存溢出的呢?记录一下分析hprof文件的流程笔记。hprof是什么文件?是java进程的内存镜像文件,里面包含了内存堆详细的使用信息原创 2021-06-01 22:42:11 · 15689 阅读 · 1 评论 -
mysql按组区分后获取每组前几名的sql写法(以及学生各科成绩大于多少分的总结)
遇到一个场景,要把数据分组,然后获取每组前10条数据,首先我想到用group by分组,但是难点是分组后怎么知道该数据在组里面排第几条。研究了一下,写个demo,记录一下笔记,后面顺便也记录一下常规sql的一些考试题(统计各科学生成绩大于多少多少分的题目)原创 2020-11-21 18:32:31 · 3401 阅读 · 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 · 3953 阅读 · 4 评论 -
springboot项目中自定义注解的使用总结、java自定义注解实战(常用注解DEMO)
初学spring的时候使用注解总觉得使用注解很神奇,加一个注解就能实现想要的功能,很好奇,也想自己根据需要写一些自己实现的自定义注解。问题来了,自定义注解到底是什么?肯定会有人和我一样有这个疑惑,我根据自己的理解总结一下。看完下面的几个使用自定义注解的实战demo,小伙伴大概就懂怎么用了。其实注解一点也不神奇,注解就是一种标志,单独使用注解,就相当于在类、方法、参数和包上加上一个装饰,什么功能也没有,仅仅是一个标志,然后这个标志可以加上一些自己定义的参数。原创 2020-11-12 23:50:24 · 28260 阅读 · 26 评论 -
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 · 4020 阅读 · 0 评论 -
spring boot2.x使用kafka消息队列(以及低版本springboot1.5x整合kafka后的问题)
项目中经常会用到kafka作为消息中间件,有kafka记录收集日志,也有用kafka传消息异步处理业务逻辑,如果kafka处理业务逻辑,则要业务考虑是否要保证消息可靠性。记录一下springboot使用kafka的项目demo,以及配置文件如何配置原创 2020-07-30 22:45:40 · 2861 阅读 · 3 评论 -
spring cloud入门学习以及spring cloud技术栈架构图(分布式系统架构图)
spring cloud入门学习以及spring cloud技术栈架构图。分布式系统架构图。一、Spring Cloud是什么?spring cloud是微服务架构的一整套微服务解决方案的技术栈,是这些技术栈的框架集合,包含了服务治理、注册中心、配置中心、客户端负载均衡、网关、限流熔断、分布式链路追踪、分布式事务等技术栈,这些技术栈提供了微服务架构存在的各种问题的解决方案。原创 2020-07-26 23:14:42 · 6342 阅读 · 0 评论 -
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 · 1018 阅读 · 0 评论 -
引入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 · 19589 阅读 · 5 评论 -
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 · 1499 阅读 · 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 · 654 阅读 · 0 评论 -
java 1.8 stream使用总结+实战demo
stream是jdk1.8引入的一个新概念,把列表流stream化,然后再加工成我们想要的列表或者别的数据我们经常会对列表list数据用for循环,用stream来替换for循环会更简洁。参考网友的图,我觉得这张图描述的很清楚,steam可以不断进行加工Stream的操作符大体上分为两种:中间操作符和终止操作符1.中间操作符就是Lambda表达式的链式操作,可以链式对流进行操作,操作完后...原创 2020-01-22 14:57:43 · 827 阅读 · 1 评论 -
dubbo springboot+dubbo入门demo,以及windows的zookeeper环境搭建
搭建一个简单的springboot+dubbo的入门项目,首先要启动一个zookeeper作为注册中心,然后启动一个springboot的dubbo服务提供者,再启动一个springboot的dubbo服务消费者,那么服务消费者就可以在启动时去注册中心拿到dubbo服务提供者的调用连接,然后服务消费者直连dubbo服务提供者获取服务。注:不启动注册中心,在dubbo消费者指定dubbo服务提供...原创 2020-01-03 23:04:07 · 538 阅读 · 0 评论 -
spring 下载文件的两种方式,以及两种重命名文件名称的方式
在开发过程中遇到了一个下载文件的问题,上传的时候有保存文件名称到数据库,但是文件名称改成了按时间命名的文件名,上传到ftp去了,然后现在的需求要在下载文件的名称要是原来上传的名称,这就要在下载的时候对文件重新命名。原来下载是不用经过后端的,直接在浏览器通过window.open(url),直接指向ftp上的文件就可以了。这时候要想重命名,就有两种方式,- 要么在浏览器通过js下载文件后再修改名称给用户下载,- 要么在java后端把文件下载回来,然后通过resonse返回浏览器下载原创 2019-11-26 19:08:09 · 3578 阅读 · 0 评论 -
Java多线程-线程状态以及状态间的转换(结合代码理解)的学习笔记
线程状态有6种,所有的线程在任何时刻必须是在这六种状态中的一种,初始(NEW):初始状态,线程被构建,但是还没有调用start()方法;运行(RUNNABLE):运行状态(就绪+运行),就绪状态的意思是指调用了start方法,在等待系统分配cpu调度的过程;阻塞(BLOCKED):阻塞状态,表示线程阻塞于锁等待(WAITING):等待状态;超时等待(TIMED_WAITING):超时等待状态;终止(TERMINATED):终止状态。只看线程的状态图好像大概知道这回事,还要结合代码原创 2019-08-07 23:44:01 · 313 阅读 · 0 评论 -
javaWeb简单的口算游戏的开发流程(springboot+jpa)附源码
记一个javaWeb写的网页速算小游戏的开发流程,前段时间找到了一个自己大学那会写的一个简单口算游戏的程序,大学那时候一直想起高中玩过的一个在塞班系统的索爱手机的口算游戏,没有找到一模一样的了,只能通过自己的记忆,重新写一个类似的游戏出来,原来在学校的写的程序架构是javaWeb项目,那时候程序架构是ssh,也没有用到maven管理jar,前两天重新整理成springboot+docker+maven的架构发出来,后面...原创 2019-05-22 04:58:33 · 2429 阅读 · 2 评论 -
英雄对决游戏开发流程(格斗游戏,电脑桌面对打游戏)附java源码
这是我大二那时候写的一个程序,那时候刚上完老师说的java抽象类的课,老师打了个比方,具体的忘了,大概说英雄联盟里面的游戏人物,都是继承一个基类的模型,每个英雄都是拥有攻击、防御等相同的操作,但是每个攻击操作的技能效果又是不一样的,这就是抽象。每个英雄继承了基类的攻击防御方法,但是在具体的英雄实现类重写了原来的抽象方法。听完老师的课,感触特别多,好像英雄联盟也是这么回事,只是动画效果多了一些,以...原创 2019-05-22 11:34:02 · 3735 阅读 · 3 评论 -
springboot aop的简单使用demo、RequestBody的参数只读一次的问题
在项目中遇到接口参数@RequestBody的参数需要在后面的全局异常处理器中打印出来,发现@RequestBody注解的参数是流的形式,内部的流限制为只能读取一次(inputStream的数据只能读取一次,从inputStream中读取过数据之后,后续再从inputStream中就不能再读取到数据了),解决方案采用aop面在进入方法前通过JoinPoint获取方法参数并把参数set进reques...原创 2019-05-17 11:45:10 · 3404 阅读 · 2 评论 -
centos7 jdk1.8安装教程
jdk8下载参考,下载jdk-8u161-linux-x64.tar.gzhttps://blog.csdn.net/qq_21187515/article/details/84850814在/usr/目录下创建java目录mkdir /usr/javacd /usr/java把下载的jdk-8u161-linux-x64.tar.gz上传到linux上的/usr/java可以...原创 2019-05-17 16:04:55 · 31214 阅读 · 15 评论 -
IntelliJ IDEA 15 创建maven项目(新建项目Artifacts中无法添加Web Application:Exploded)
原文:IntelliJ IDEA 15 创建maven项目说明创建Maven项目的方式:手工创建好处:参考IntelliJ IDEA 14 创建maven项目二(此文章描述了用此方式创建Maven项目的好处)及idea14使用maven创建web工程(此文章描述了用...转载 2019-05-22 23:09:06 · 2276 阅读 · 0 评论 -
校友捐赠程序的开发(含微信支付流程)附源码(未完待续)
大三那会设计的一个程序,大三那一年干了一年勤工俭学,负责学校的学生处官网维护,刚好那时候学校要成立一个种子基金会,所以老师有一个需求,希望我在学生处的微信公众号上再开发一个种子基金会的捐赠功能。...原创 2019-05-23 00:03:38 · 1588 阅读 · 2 评论 -
IDEA推送docker镜像到私服/利用dockerfile-maven-plugin插件在springboot中上传镜像到远程的docker服务器、远程仓库
利用dockerfile-maven-plugin插件在springboot中上传镜像到远程仓库、阿里云这篇文章讲解在开发工具中把打包好的jar编译成docker镜像,上传到远程的docker服务器,以及根据镜像创建测试docker容器,验证springboot程序,以及Dockerfile配置如何生成证书以及docker服务器开启远程端口,参考这篇文章原创 2019-05-17 23:21:39 · 9262 阅读 · 6 评论 -
总结java数据类型和mysql、oracle、pgsql数据类型对应关系,附数据库字段类型转java类型代码
**java的基本数据类型有八种:** byte、short、int、long、float、double、char、boolean **总结java和mysql、oracle、pgsql数据类型对应关系**| java|byte | short|int|long|float|double|char|boolean|string|java.sql.Date|java.math.BigDecimal|java.sql.Blob|java.sql.Clob|--|--|--|-原创 2019-06-12 14:24:50 · 12589 阅读 · 1 评论 -
mysql如何查询多样同样的表/sql分表查询、java项目日志表分表的开发思路/按月分表
之前开发了一个监控系统,数据库的日志表是单表,,虽然现在数据还不大并且做了查询sql优化,不过以后数据库的日志表数据肯定会越来越庞大,将会导致查询缓慢,所以把日志表改成分表,日志表可以按时间做水平分表,我是按月分的,每个月一张表,这时候的问题是1. 数据库有多张同样的分表如何根据条件查询?2. 在进行分页的时候如何计算总记录数?如何查询出所有分表?3. 每个月的新表是如何创建?系统如何自动创建?4. 不确定哪个分表的情况如何查询某一条详细记录?分表查询用union或者union或者uni原创 2019-06-01 16:25:23 · 6611 阅读 · 0 评论 -
java移除/去掉字符串指定前缀以及清除字符串下划线的方法
java移除去掉字符串指定的前缀,移除字符串前面特定的字符串1. 利用正则判断字符串前缀是否存在str.toLowerCase().matches("^" + pf.toLowerCase() + ".*")2. 如果存在,利用substring截取前缀字符串长度的后面的字符串清除字符串下划线,去掉下划线后首字母大写原创 2019-06-13 23:23:00 · 14678 阅读 · 0 评论 -
英语四六级考试系统+爬虫获取试题的系统(数据库设计)的开发思路
曾经开发过的一个四六级模拟考试系统,分享一下开发的部分思路以及数据库设计,一个通过爬虫爬取到的试题聚合成在线模拟考试系统:通过JavaEE语言设计,利用网络爬虫技术Jsoup爬取网络上各大英语四六级学习网站的数据,聚合数据到本系统并以简洁的界面展示出来,为用户提供学习四六级资源的检索和模拟四六级考试的练习。系统分为几大模块:系统管理模块、爬虫聚合试题模块、考试试题学习模块、在线模拟考试模块原创 2019-06-18 22:43:19 · 2843 阅读 · 3 评论 -
简单java代码生成器的开发教程(一),根据数据库表逆向工程生成实体类(附源码)
以前开发过完整的快速开发平台,想分享里面的基本代码生成的开发流程,大概就两个重点,以前开发过完整的快速开发平台,想分享里面的基本代码生成的开发流程,大概就两个重点,一代码生成引擎,二是编写模版代码生成器的核心开发流程1. 如何连接数据库,获取数据库信息,以及根据数据库的表字段信息如何转换成java实体类型 1)获取数据库表信息 2)数据库表信息转java类型2. 配置必须的基本数据,根据模版语言编写代码模版,根据模版生成代码文件(我这里用freemarker模版语言)原创 2019-06-15 22:02:22 · 5751 阅读 · 0 评论 -
简单java代码生成器的开发教程(二),生成springboot+mybatis-plus的增删查改的基本代码(开发利器,附源码)
可以节约不少时间,提升开发效率。针对单表的增删查改会很快在上篇简单java代码生成器的开发教程(一)讲了代码生成器的基本流程,生成引擎+生成模板,这篇在上一篇的基础上进行拓展,使得代码生成器不仅仅生成实体类bean,还可以生成该实体类相关的增删查改的接口问题:不同的项目,如何进行兼容,写一套公用的模板?我觉得不能,不同项目,不同的架构,肯定是不行的,但是我们可以针对特定项目,把通用的部分总结成模板,不同的项目就用不同的模板springboot+mybatis-plus原创 2019-06-17 21:15:12 · 3022 阅读 · 2 评论 -
java 封装poi导出excel的工具类,根据参数生成excel
用到过好几次的poi,之前用的时候时间赶都是直接写一个特定的方法导出一个特定的excel,一直想总结一个poi导出excel的工具类,主要的问题是怎么把excel表格的列头以及列表数据对应出来。(springboot下载文件demo)原创 2019-07-24 19:29:12 · 834 阅读 · 0 评论 -
Java多线程-executor框架、线程池、ThreadPoolExecutor的学习笔记
在Java中,使用线程来异步执行任务,每个线程的创建和销毁需要一定的开销。如果每个任务都创建一个新线程来执行,线程频繁的创建和销毁会消耗大量的计算资源。所以这种情况我们需要使用线程池。从JDK1.5开始,为了把工作单元与执行机制分离开,引入了Executor框架。线程池的好处降低了资源消耗提高了相应速度提高了线程的可管理性Executor框架最核心的类是ThreadPoolExecu...原创 2019-08-05 00:10:52 · 223 阅读 · 0 评论 -
springboot+mybatisplus多数据源配置和使用(一)
一般多数据源的配置方式有两种 - 静态的多数据源:每个数据源配置一套mapper - 动态的多数据源:多个数据源通用一套mapper原创 2019-05-15 15:39:52 · 20560 阅读 · 12 评论