后端
文章平均质量分 79
飞火龙在天
这个作者很懒,什么都没留下…
展开
-
分布式事务
今天我们来聊一聊分布式事务,在传统的单体应用中,事务的控制非常简单,Spring框架都为我们做了封装,我们只需简单地使用@Transactional注解就能进行事务的控制,然而在分布式应用中,传统的事务方案就出现了极大的问题:当用户进行下单操作时,我们需要查询出当前下单的用户、购物车中的商品、扣减商品库存,这些内容都被划分到不同的模块中,所以一个下单的操作往往需要远程调用多个模块。假设在执行下单流程中,扣减库存成功,但是在扣减用户余额的时候出现了异常,此时用户模块中会回滚扣减的金额,但由于用户模块和原创 2021-10-24 20:46:21 · 293 阅读 · 0 评论 -
springboot四大组件
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.mybatis</groupId><artifactId>myb...原创 2021-09-02 09:11:26 · 286 阅读 · 0 评论 -
RabbitMQ的重要概念及安装
一文搞懂 RabbitMQ 的重要概念以及安装 一 RabbitMQ 介绍 1.1 RabbitMQ 简介 1.2 RabbitMQ 核心概念 1.2.1 Producer(生产者) 和 Consumer(消费者) 1.2.2 Exchange(交换器) 1.2.3 Queue(消息队列) 1.2.4 Broker(消息中间件的服务节点) 1.2.5 Exchange Types(交换器类型) ① fanout ② direct翻译 2021-08-10 09:37:59 · 153 阅读 · 0 评论 -
几种分布式锁的解决方案
为了防止分布式系统中的多个进程之间相互干扰,我们需要一种分布式协调技术来对这些进程进行调度,而这个分布式协调技术的核心就是来实现这个分布式锁。分布式锁的几种解决方案分布式使用场景如果我们业务中确实存在这个场景的话,我们就需要一种方法解决这个问题,这就是分布式锁要解决的问题分布式锁实现的三个核心要素:加锁最简单的方法是使用 setnx 命令,key 是锁的唯一标识,按业务来决定命名。比如想要给一种商品的秒杀活动加锁,可以给 key 命名为 “lock_order_商品ID” .原创 2021-07-15 14:57:25 · 880 阅读 · 0 评论 -
Java语言异步非阻塞模式
本文首先介绍异步非阻塞模式,从线程模型的角度分析阻塞和非阻塞模式的区别。之后介绍 Promise 设计模式的应用场景及工作流程。最后,提供一种简易的 Java 实 现,能够实现基本的功能需求,并做到线程安全。在正式探索技术问题之前,我们先来看看什么是 异步非阻塞模型 。如图1-1所示,展示了两个小人通信的场景:假设左侧小人发起请求,而右侧小人处理请求并发送响应:左侧小人先投出一个苹果request,被右侧小人接收到;右侧小人进行处理后,再投出苹果 response,被左侧小人接收到。我们考察左侧小人原创 2021-07-15 14:15:49 · 285 阅读 · 0 评论 -
深入理解线程池
多线程并发是Java语言中非常重要的一块内容,同时,也是Java基础的一个难点。说它重要是因为多线程是日常开发中频繁用到的知识,说它难是因为多线程并发涉及到的知识点非常之多,想要完全掌握Java的并发相关知识并非易事。也正因此,Java并发成了Java面试中最高频的知识点之一。本系列文章将从Java内存模型、volatile关键字、synchronized关键字、ReetrantLock、Atomic并发类以及线程池等方面来系统的认识Java的并发知识。通过本系列文章的学习你将深入理解volatile关键字原创 2021-07-12 22:39:56 · 167 阅读 · 0 评论 -
kafka
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。Kafka 有如下特性:以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能。高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息的传输。支持Kafka Server间的消息分区,及分布式消费,同时保证每个Partition内的消息顺序传输。同时支持离线数据处理和实时数据处理。Scale out:支持在线水平扩展。kafka的术原创 2021-02-25 10:52:12 · 165 阅读 · 0 评论 -
kafka和storm集群的环境安装
storm和kafka集群安装是没有必然联系的,我将这两个写在一起,是因为他们都是由zookeeper进行管理的,也都依赖于JDK的环境,为了不重复再写一遍配置,所以我将这两个写在一起。若只需一个,只需挑选自己选择的阅读即可。这两者的依赖如下:Storm集群:JDK1.8 , Zookeeper3.4,Storm1.1.1; Kafa集群: JDK1.8 ,Zookeeper3.4 ,Kafka2.12;说明: Storm1.0 和Kafka2.0对JDK要求是1.7以上,Zookeeper3.原创 2021-02-25 10:51:53 · 155 阅读 · 0 评论 -
公共请求(二)利用IOC控制反转转发给分service的bean
EdspExecuter抽象接口:/***通过http请求的接口类**/public interfaceEdspExecuter{public Stringexecute(Map params) throws Exception();}总的执行类,通过IOC根据bean的值寻找具体的实现类:String serviceClass =interfaceTableDTO1.getServiceClass();EdspExecuter executeUnit =(...原创 2020-11-19 20:32:50 · 93 阅读 · 0 评论 -
公共请求(一)httpCommonMethod公共请求方法,接口及参数放在数据库里
public CommonServiceImpl implements CommonService{private Logger logger=Logger.getLogger(CommonServiceImpl.class);@Autowierdprivate CallInformationDao callInformationDao;@Autowierdprivate InterfaceTableDao interfaceTableDao;//公共方法httpCommonMethodp.原创 2020-11-14 15:54:39 · 1279 阅读 · 0 评论 -
@Configuration用于定义配置类,可替换xml配置文件
从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。注意:@Configuration注解的配置类有如下要求:@Configuration不可以是final类型; @Configuration不原创 2020-11-07 18:19:18 · 560 阅读 · 0 评论 -
本地URL直接快速请求本地接口或远程接口
//读取xml文件public static byte[] readFile(String file){try{ byte[] xml;File file2 = new File(file);if(!file2.exists()){return null}FileInputStream fis = new FileInputStream(file);BufferredInputStream bis=new BufferredInputStream(fis);xml=new byte...原创 2020-11-07 18:13:15 · 1342 阅读 · 0 评论 -
springboot 里main函数启动程序
springboot 里main函数启动批量程序@EnableTransactionManagement@SpringBootApplication@MapperScan(basePackages={"com.test.dao"})public class Tmain implements CommandLineRunner{Logger logger=LogManager.getLogger(Tmain.class); @Resource private TestService t原创 2020-11-07 16:33:36 · 1105 阅读 · 0 评论 -
IOC控制反转,你了解吗
IoC 思想IOC(控制反转)是一种依赖倒置原则的代码设计的思路,它主要采用(DI)依赖注入的方式来实现。不使用IoC思想的传统模式在传统模式中,对象由程序员主动创建,控制权在程序员手中。程序可以做到正常工作,但仍有一个难以避免的问题。如果用户需求变更,程序员就要修改对应的代码,代码量不大还好,如果代码量巨大的话 修改一次的成本…这个问题就是耦合性过高引起的,修改一次需求,或多或少会造成代码的修改,工作量先不说,维护起来也是极其不便的啊。就如上图中这四个齿轮(对象)一样,互相啮合,如果原创 2020-11-06 17:29:36 · 188 阅读 · 0 评论 -
nohup,linux后台挂起
一、Linux 下使用 nohupUnix/Linux下一般比如想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行。比如我们要运行weblogic在后台:./startWebLogic.sh &但是加入我们很多程序并不象weblogic一样做成守护进程,可能我们的程序只是普通程序而已,一般这种程序使用 &结尾。但是如果终端关闭,那么程序也会被关闭。但是为了能够后台运行,那么我们就可以使用nohup这个命令。比如我们有个startWebLogi原创 2020-10-17 16:01:47 · 5738 阅读 · 0 评论 -
解决Eclipse找不到或无法加载主类问题,请重点检查jar包是否出错
以前在用eclipse的时候经常遇到"找不到或无法加载主类"这样的问题,遇到了就很头疼,总是误打误撞的搞好了.但不知道问题的根源在哪,于是问题再次出现的时候又不知道从何下手.今天无聊,打算彻底研究下问题是如何出现的.其实eclipse的java编译器是根据原java文件是否更新而编译java文件的.也就是说原java文件如果没有更新那么就运行上一次已经编译好的class文件.我们做个小实验:进入项目文件夹下删除已经编译好的class文件再次运行程序错误出现了"找不..原创 2020-10-16 08:53:11 · 2152 阅读 · 0 评论 -
service加上异步
@overridepublic String getselect (String paramString){.......JSONObject jsonResult=null;jsonResult=......;returnjsonResult.toString();}@override@Asynpublic String getselect (String paramString){.......JSONObject jsonResult=null;...原创 2020-09-17 18:20:12 · 401 阅读 · 1 评论 -
经典的数据结构
上面根据季度然后根据不同类型来统计数据原创 2020-05-26 22:07:23 · 164 阅读 · 0 评论 -
Mapped Statements collection does not contain value for 等错误信息
上面的错误信息一般是类或接口名或命名空间没有对应上原创 2020-05-26 22:03:43 · 150 阅读 · 0 评论 -
基础接口及类的抽象及提炼
@Mapper 是 Mybatis 的注解,和 Spring 没有关系,@Repository 是 Spring 的注解,用于声明一个 Bean@Repository需要在Spring中配置扫描地址,然后生成Dao层的Bean才能被注入到Service层中。@Mapper不需要配置扫描地址,通过xml里面的namespace里面的接口地址,生成了Bean后注入到Service层中Bas...原创 2020-03-17 21:49:33 · 205 阅读 · 0 评论 -
项目总结
需求管理方面:鉴于项目实施过程中出现过开发人员错误理解需求的现象,后续做出以下调整:咨询调研需求尽量细化到细节,项目经理在项目正式进入开发前,组织咨询的当面给开发同事讲解一遍,一方面起到传达的作用,另一方面也给开发人员一个集中反馈提问的机会,尽量减少返工。项目管理方面;鉴于项目实施过程中出现浏览器不兼容,未及时通知UAT用户介入测试,基础模块开发进度滞后等低级错误影响整个项目进度的情况,项目经...原创 2020-01-31 21:29:13 · 260 阅读 · 0 评论 -
基本类型和字符串之间的相互转换的小问题
基本类型和字符串之间的相互转换:1.基本类型转换成String:(1) 基本类型变量+"";//基本类型加空字符串即可(2)String.valueOf(基本类型变量);//这两个都可以,相比加空字符串的方法,String.valueOf()效率更高。2.String类型转成基本类型(1) 调用包装类的parseXXX()方法,(2) 调用包装类的valueOf()方法...原创 2019-12-03 10:28:28 · 782 阅读 · 0 评论 -
git常用命令及解决方案
拉取代码:git clone 地址cd 文件夹git checkout dev或git checkout origin/devgit pullgit强制覆盖:git fetch --allgit reset --hard origin/mastergit pull或合并执行:git fetch --all &&am...原创 2019-11-29 15:58:20 · 784 阅读 · 0 评论 -
IDEA里常见设置及配置-----一文解决你的IDEA配置问题
caused by java.lang.NoclassDefFoundError javax/xml/blind/JAXBException包报错延伸的配置常见配置:1.在IDEA里,点击项目鼠标右键找到Open Module Settings,①Project,Project SDK 选择为9以下,jdk9以上里面不含这个包,故报错。还有Project language leve...原创 2019-11-29 09:31:00 · 68821 阅读 · 0 评论 -
分布式锁
分布式主要是产生了多个虚拟机JVM,故同一个变量会同时存在多个虚拟机里分布式系统多线程、多进程并且分布在不同机器上,这将使原单机部署情况下的并发控制锁策略失效,单纯的Java API并不能提供分布式锁的能力。为了解决这个问题就需要一种跨JVM的互斥机制来控制共享资源的访问,这就是分布式锁要解决的问题!分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency...原创 2019-10-15 22:38:50 · 698 阅读 · 0 评论 -
JAVA知识体系
目录Java 基础 容器 并发 JVM 其他 网络 操作系统 Linux 数据结构与算法 数据结构 算法 数据库 MySQL Redis 系统设计 必知 常用框架 Spring SpringBoot MyBatis 认证授权(JWT、SSO) 分布式 Elasticsearch(分布式...原创 2019-10-14 22:01:16 · 509 阅读 · 0 评论 -
集合collection和map
Collection├List│├LinkedList使用双向链表实现存储,插入数据较快│├ArrayList采用数组方式存储数据,插入数据慢,查找有下标,所以查询数据快│└Vector采用数组方式存储数据,由于使用了synchronized方法-线程安全,所以性能上比ArrayList要差│ └Stack└SetMap├Hashtable├HashMap...原创 2019-10-14 21:13:34 · 394 阅读 · 0 评论 -
后台与数据库操作交互之暴力反射
package com.tianjian.property.dao;import java.lang.reflect.Field;import java.math.BigDecimal;import java.sql.Connection;import java.sql.Date;import java.sql.PreparedStatement;import java.sql.SQ...原创 2019-08-22 15:50:40 · 1378 阅读 · 0 评论 -
RabbitMQ相关信息
ActiveMQ:功能特性:成熟的产品,在很多公司得到应用,有较多的文档,各种协议支持较好。开发语言是java,单机吞吐量达到万级,时效性ms级,可用性比较高为主从架构。RabbitMQ:功能特性:基于erlang语言开发,所以并发能力很强,性能极其好,时延很低,管理界面丰富。开发语言是erlang,单机吞吐量达到万级,时效性us级,可用性比较高为主从架构。RocketMQ...原创 2019-08-31 23:00:04 · 1927 阅读 · 0 评论 -
前后端交互之后端参数
1.直接传参public void login(HttpServletRequest request) { String password = request.getParameter("password"); }2.@RequestParam注解 @RequestMapping(value = "/login", method = RequestMethod...原创 2019-09-08 10:36:51 · 1692 阅读 · 1 评论 -
脚本攻击和sql语句注入安全问题
脚本攻击和sql语句漏洞是两大基本的安全漏洞,也是最常见的安全漏洞。脚本攻击:方案一:public class XSSFilter {public static String filter(String val) { if (val != null) { return val.replaceAll("\"", """); ...原创 2019-09-08 10:38:41 · 929 阅读 · 1 评论 -
java高并发之核心synchronized
一.synchronized的两个用法①对象锁方法锁(sychronized修饰普通方法,默认锁对象为this当前对象)和同步代码块锁(自己指定锁对象)eg1publicclasssynchronizedobjectcodeblock2implementsrunnable{staticsynchronized0bjectcodeblock2instance=ne...原创 2019-10-07 18:31:30 · 302 阅读 · 0 评论 -
Spring之面向切面编程
在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率...原创 2019-10-08 23:50:17 · 176 阅读 · 0 评论 -
JWT认证流程图
原创 2019-05-27 15:38:15 · 3418 阅读 · 0 评论 -
订单号的唯一性
1.用户编号加大随机数public enum OrderNo { SERVICE("YY"), //预约服务 SELFISH_REPAIR("JJ"), //居家维修 PUBLIC_REPAIR("GG"), //公共维修 COMPLAIN("TS"), //投诉 QUERY("GX"), //公共询问 PRAISE("BY"), //表原创 2018-10-08 14:21:54 · 2155 阅读 · 0 评论 -
本人写的一个傲娇的语句
客户在不同时间,可能过去的某一天缴费,他的账号的到期日期可能在过去的某一天,可能在未来的某一天,客户可能交一个月,可能交一年的费用,现在统计出过去一年,及未来一年,用户交的费用具体到每个月。这个背景下,动态的项目,动态的车牌,动态的人,动态的缴费时间,动态的缴费月数,动态的统计,动态的报表。于是下面一个逻辑性很强,又超级长的语句出来了select S.RealName,S.Prope...原创 2019-08-22 10:05:49 · 1070 阅读 · 1 评论 -
后台插入语句和更新语句的的两种设计思想
public void updateActivityPhoto(ActivityPhoto ActivityPhoto) { Map<String, Object> map = BeanUtils.transBean2Map(ActivityPhoto); String sql = "UPDATE t_ActivityPhoto SET PhotoPa...原创 2019-08-22 09:36:33 · 714 阅读 · 0 评论 -
spring cloud是一个集大成者的large container,是一个万象城
天下武功,唯快不破。spring cloud能快速开发一套分布式系统,而且还很强大。故微服务是未来web开发统一江湖的利器。它是一座面向未来的万象城,推古拉朽过去一切不合理的东西,快快拥抱这个集大成者吧。web开发,我觉得有两次革命是比较彻底的,一次是spring mvc框架的提出,一次是微服务框架的提出,算是web开发史上的工业革命了。不知道这么抬高它的江湖地位会不会被喷啊。哈...原创 2019-08-16 14:53:22 · 513 阅读 · 0 评论 -
控制台提示缓存不够,consider increasing the maximum size of the cache
consider increasing the maximum size of the cache解决办法在tomcat下面的conf/conext.xml中加入如下配置<!-- 设置最大缓存量 -->默认的是:The maximum size of the static resource cache in kilobytes. If not specified, the d...原创 2019-04-02 09:31:10 · 4682 阅读 · 0 评论 -
List Map的分组
需求:根据用户id,把小区合并eg{"EuserId":3953,"PropertyId":"100,103"}List<Map<String,String>> list = administratorService.dooradministratorselect(map); Map<String, Map&l..原创 2018-12-11 16:33:33 · 6351 阅读 · 0 评论