JavaEE
文章平均质量分 79
kingdoooom
这个作者很懒,什么都没留下…
展开
-
说说代码中的异常处理问题
前言作为Java开发人员,开发过程中不可避免的需要处理各种异常。以运行时异常为例,在最常见的Springboot项目中,偷懒的同学可能一遇到异常就直接往上抛,或者简单地用try catch做处理,catch块打印堆栈信息。但是这么做存在2个值得我们考虑的问题。1、如果我们只是一味地层层地往上抛,最终在Controller层再次抛出异常,并没有进过处理,Controller再次抛出,异常被servlet捕获,服务器会认为是我们自己写的代码业务出现异常,接口直接返回500,这是非常不友好的。并且如果你公原创 2021-02-08 11:07:34 · 563 阅读 · 0 评论 -
springboot项目redis分布式锁实现(基于luttuce)
问题背景对于大部分的后端服务,服务很多都是多实例部署的,而在我们的工程中,比如说代码中定义的定时任务需要从数据库中捞数据,那么多机部署上的每个实例都会执行,那么就会存在数据重复上报,那么就不可避免得出现脏数据,影响数据的准确性。问题分析解决这个问题最直接的思路就是,当多机部署中无论哪个实例捞到了某条数据,那么其他的实例就不能再次捞取。针对这个思路,我们大致可以有以下两个解决方案:1. 在数据库层解决。给访问的数据表中,增一个字段flag,标识是否已经上报过,每个实例上报一条,就更新一下这个状原创 2021-01-26 14:51:43 · 834 阅读 · 2 评论 -
大量数据推送kafka,进行数据上报
需求背景最近做的一个需求,需要将数据(数据分为产品基本数据和产品使用数据,分处同一个连接下的两个数据库)推送上报后,运营部门进行分析,简单翻译过来就是需要从数据库中把历史数据和每日数据捞出来,推到kafka上,其中一些的细节想在本文记录分享一下。分析1、数据分类在背景中交代过数据分为产品基本数据和产品使用数据(一下通称为基本数据和使用数据),很多同学(包括我)的第一反应是必然是要创建两个独立的数据实体类,基本数据类和使用数据类。但是有经验的同学肯定会想到,既然都属于产品的数据类,两类数据在从原创 2021-01-20 21:00:38 · 2597 阅读 · 0 评论 -
SpringBoot-HelloWorld的pom文件配置
前言关于如何搭建Springboot hellowolrd应用其实很简单,网上也有非常多的教程,我之前也写过一个最简单的springboot hello world应用,可以看看Springboot hello world搭建其实在搭建springboot应用中,可能会明显感觉到其中省去了很多之前惯用的Spring+SpringMVC+Mybatis中的一些配置,在之前,我们需要在SpringMVC中开启扫描和注解,Spring配置文件中同样要配置扫描以及数据源等诸多配置,当这些工作准备好了之后才能原创 2020-12-17 21:46:36 · 599 阅读 · 0 评论 -
IDEA搭建Springboot-Helloworld应用
网上已有非常多的spingboot项目的教程,基本上都是通过Spring Initializr构建出完整的Springboot应用,但是我觉得对于入门者来说,还是希望从最简单方式来搭建helloworld,以便更好地理解SpringBoot的一些原理,本文我就以jar包的形式,通过IDEA工具完成一个最简单的Helloworld应用。环境准备JDK:1.8及以上IDE:IDEAmaven:3.3及以上Springboot:2.3.4环境的配置以及检验这里就不多说了,不熟悉话可以自行百原创 2020-12-17 15:26:03 · 1553 阅读 · 2 评论 -
Java实际开发中业务实体多种状态的管理
背景在实际的开发中,业务场景下常会涉及业务实体拥有多种状态,例如产品的发布,产品实体必然会有多种操作,比如发布者提交发布审核(可自主撤销),审核人员进行审核(通过或拒绝),发布者还可以申请产品下线(如果产品拥有多个版本,还可以细分为只下线当前版本和将该产品的所有版本均下线),管理人员还可以自主地将产品进行强制下线等等诸多操作。多种操作的存在,需要对应产品自身的不同状态的良好管理机制,比如,已经已经进入发布审核状态的产品只能进行审核人员审核的操作,而不能进行下线或者强制下线操作;对已经下线的产品不能申原创 2020-12-03 18:55:45 · 1372 阅读 · 0 评论 -
谈谈spring中的IOC
学习过Spring框架的人一定都会学习Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 、DI这两个概念是模糊不清的,是很难理解的,今天谈谈我对Spring Ioc的理解。1.什么是IOCIoc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交...原创 2018-07-19 10:41:56 · 242 阅读 · 0 评论 -
SpringMVC中的@Resource与@Autowired
这两天在看同事原来的写的代码时,发现在Controller中使用了@Resource的注解方式,而我们现在使用较多的是@Autowired的自动装配的注解。我想在此篇博客中具体说说两个注解的区别和简单原理@Autowired与@Resource首先在使用上,两者都是用来装配bean的,但是两者有以下区别:@Autowired默认是按类型进行装配的,它一般会要求依赖对象必须存在,还有就是@Antow...原创 2018-03-01 15:36:32 · 1712 阅读 · 0 评论 -
SpringMVC中@RestController与@Controller的区别
在使用SpringMVC时,对于Controller中的注解@RestController和@Controller需要区分一下我们可以先行查阅官方的文档:@RestController is a stereotype annotation that combines @ResponseBody and @Controller.相信大家都能看懂这句话的意思:@RestContrller注解相当于@R...原创 2018-03-01 09:51:15 · 3775 阅读 · 1 评论 -
java中的代理模式与spring中的AOP
1.java的代理模式代理(proxy)是一种设计模式,是属于23种常见设计模式中的一种。谈到设计模式,我们首先想到的是设计模式的几大原则,其中谈论最多的还是单一职责和开闭原则,代理模式实现了对目标对象其他的访问方式,即通过代理对象(proxy)访问目标对象(target)。这样一来,我们可以在目标对象实现的基础上,通过代理对象来对目标对象的功能扩展,它很好地阐释了开闭原则,即对程序的扩展开放原创 2017-11-21 21:38:18 · 475 阅读 · 0 评论 -
Spring框架中的ioc(控制反转)
Spring框架中的ioc(控制反转)本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦:在Spring框架中,控制反转(inversion of control)是Spring中的一个重要思想。一般来说,Java中的对象是由程序自己本身来创建,如果两个类之间进行相关交互,在A类的方法中创建一个B类对象,调用B中的相关方法,无形之中增大了两个类的耦合原创 2017-02-23 21:02:24 · 417 阅读 · 0 评论