java后端架构
文章平均质量分 94
哔哔小子
这个作者很懒,什么都没留下…
展开
-
RabbitMQ延迟队列
今天要做一个让用户A发布一个加密文件,设置下载次数,存在短时间内并发高的问题,无法预料用户设置的时间和次数,通过MQ延时队列实现https://www.cnblogs.com/mfrank/p/11260355.html转载 2020-12-03 16:15:58 · 116 阅读 · 0 评论 -
数据库优化java设计模式架构 策略 责任链
这里更像是一种思想:对业务进行拆分,通过设计模式将其分成一个一个单体,通过数据库进行管理,通过上下文(content)容器类进行获取,前台可以直观看到单个业务之间关系,也能进行管理。比如策略模式遇到的问题,项目中创建或者返回多态声明时往往遇到的:避免不了使用ifswitch (report.getCode()){ case "1": pass(report); break; cas.原创 2020-10-19 19:20:44 · 187 阅读 · 0 评论 -
EasyExcel 并发读取文件字段并进行校验,数据写入到新文件,批量插入数据到数据库
背景公司要求做一个数据统计类的功能,大概就是由每个地方采集数据用excel进行导入,根据地方大小每个文件的数量可能在10万-100万之间不等,导入时要求对每个字段进行校验,可能存在的规则有非空判断,时间格式判断,长度判断,手机号这类正则表达式类校验,文件有多个sheet,每个sheet对应一个表,对应的数量不确定但是不会重复表,有个别sheet需要前面sheet的字段判断。如果数据有错的,要求在后面新加一列告诉用户错误的原因,正确的数据也要输出一遍(不理解客户的想法。。。),未来有可能会开新shee原创 2020-09-29 11:15:42 · 3533 阅读 · 0 评论 -
解决使用redis作为session缓存 报错 Error: no such key 的问题
https://www.cnblogs.com/esileme/p/10063898.html原创 2020-08-20 16:43:43 · 2664 阅读 · 0 评论 -
zuul网关,springsecurity认证中心 和 Swagger2 整合遇到的问题
背景前后端分离项目,后台有若干个接口,并且已经集成了认证中心,每个接口都实现swagger,现在实现的功能是在一个入口处查看各个子服务的信息。效果如图所示,网关端口是9999,下面先弄了3个子服务。遇到的问题1.依赖问题因为依赖的版本和springboot有冲突,导致swagger一直报错,springboot2X版本和swagger老版本好像有兼容性问题,现在统一引入下面的版本。<dependency> <groupId>.原创 2020-08-20 16:40:21 · 805 阅读 · 0 评论 -
springboot整合mybatis-pluss、sharding-JDBC 水平分表demo
网上的资源真的是太乱了,各种版本混杂。。。。。。项目下载地址:https://gitee.com/bibiboy/sharding-jdbcA38表不需要被代理,A31需要被代理,结果两者插入数据时都会被sharding-jdbc拦截,sharding-jdbc可能是在myabtis-plus代理完生成sql语句之后连接数据库之前,又进行了代理。。。。。最终是sharding-jdbc去和数据库进行互交的,怪不得叫“升级版jdbc”。...原创 2020-08-13 19:06:50 · 2321 阅读 · 0 评论 -
springboot 集成 jwt+oauth+springsecurity 实现单点登录,feign远程调用,eruka注册中心,seata分布式事务配置
单点登录,注册中心,feign远程调用,分布式事务,swwgger这些项目基本功能都已经实现了,直接下载就能用,sql我已经放到项目里了。之前遇到的一个bug就是feign会被拦截,找了很多解决办法都不行,最后有一次清了redis数据以后feign请求居然不会被拦截了,于是联想到可能是redis方面的问题,结果最后发现客户端没有引入redis-session,加入依赖以后就可以了。之后学了一些necos,发现necos功能真的很强大,中文界面十分友好,自带分布式配置中心,正在将相关jar包全部换成s原创 2020-08-12 10:33:46 · 299 阅读 · 0 评论 -
necos 分布式配置中心 配置方法 动态修改值 切换生产环境
之前服务少,现在一旦搞微服务,后台加起来十几个项目,配置文件太多,再加上生产环境切来切去,经常弄迷,有时候很容易遗漏某个参数。之前只知道nacos是注册中心,现在知道他还是个配置中心,这个功能很实用。使用分布式配置中心的好处,一是数据都放到数据库里更安全更好改,二是前台查看修改分类等更加直观。springcloud+springconfig这个配置中心不知为何国内很少用,可能全英文的前端页面还不如改项目里的......apollo这个也可以,但是修改端口还得重新builder,而且建表什么.原创 2020-08-12 10:24:41 · 3558 阅读 · 0 评论 -
java项目中遇到的幂等性问题
前端多次调用(伪幂等性问题)1.一般情况前端控制消息调用频率,禁用请求2.网络不好,第一次调用响应时间过长,第二次又调用针对一些重要的接口,建议进入页面时分配一个全局ID放到前端设备中,之后调用接口时先判断全局ID是否存在redis中,若已有则直接返回,若没有就设置超时时间存放到库里,业务处理完清理掉改全局ID。(安全等级高则可以选择redis分布式锁机制)rpc调用幂等性问题rpc的默认重试机制会导致调用方在规定超时时间和次数内反复调用被调用方1.禁用重试(不合理)2.加大原创 2020-08-05 13:18:46 · 640 阅读 · 0 评论 -
携程Apollo 启动失败遇到的坑
Apollo启动挺简单的,网上一大堆教程,这里直接提供一个编译好的版本:链接:https://pan.baidu.com/s/1yn0IPQQaV92QGDwQuwbffg提取码:rr5m问题是修改了demo.sh后一直启动失败,Eruka启动正常,门户和admin俩系统一直其不来,日志报错:com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: ..原创 2020-07-31 16:23:21 · 3563 阅读 · 0 评论 -
分布式事务解决方案 Seata 的原理个人理解以及 demo 配置
最近项目微服务之间需要加入分布式事务,总结一下现有的技术,可以大致分为:cap为原理的LCN,Seata;base原理的MQ解决方案。结合本项目,因为互相调用的接口比较多,而且接口数量比较多,更偏向与对业务的0侵入类型的,LCN目前停止维护,Seata由阿里大厂集成,成了主流。Seata官网上有源码,可以直接引入项目中,这里我为了节省项目结构直接用服务端Release版了,这里记录一下刚配置好的方法。下载地址:https://github.com/seata/seata/releases/tag原创 2020-07-30 09:17:49 · 1079 阅读 · 1 评论 -
Mybatis缓存的使用和注意事项
一级缓存:mybatis默认开启一级sqlsession缓存,sqlsession指的是一次会话,就是通过数据库连接池获取连接,然后在不关闭本次连接的情况下进行增删改 称为一次会话。sqlsession内部由好几部分组成,比如Executor(好几种,cacheExecutor,selectExecutor,updateExcutro等等...)是用来执行增删改的,如果开启了1级缓存,他在连接...原创 2019-09-18 15:12:02 · 256 阅读 · 0 评论 -
Mybatis查询时数据丢失的问题
公司里的实体类和mapper文件均由mybatis逆向工程生成之前使用myabtis查询时直接使用注解@select(......)时遇到了一个问题。结果显示数据库查询没有问题,但是有的数据缺没有插入到指定的字段中,如下图中ID成功存储,Z40_ID,Z40_103到Z40_113均失败。经过排查得出结论:如果数据库命名很规范比如user_name,用逆向插件生成实体类时该字段...原创 2019-08-12 16:31:21 · 2807 阅读 · 0 评论 -
springboot对应springcloud各个版本和官网查询地址
一般来说springboot 2.0版本比较稳定吧。。。相关资料比较多,不过springcloud alibaba在2.1版springboot中版本挺新的!Spring Boot Spring Cloud Spring Cloud Alibaba 2.1.x Greenwich 0.9.x 2.0.x Finchley 0.2.x 1.5.x...原创 2019-08-14 10:47:42 · 4684 阅读 · 0 评论 -
Spring 常见注解原理和自定义@interface注解
一、认识注解注解(Annotation)很重要,未来的开发模式都是基于注解的,JPA是基于注解的,Spring2.5以上都是基于注解的,Hibernate3.x以后也是基于注解的,现在的Struts2有一部分也是基于注解的了,注解是一种趋势,现在已经有不少的人开始用注解了,注解是JDK1.5之后才有的新特性JDK1.5之后内部提供的三个注解 @Deprecated 意思是...转载 2019-04-12 13:35:42 · 14088 阅读 · 0 评论 -
使用Linux快速使用redis集群
安装环境:Linxu(Cent-OS64位)。只有Base-Serve的Linux占用的资源更少,更快速,适合在上面搭建服务器 secureCRT。一款非常方便的远程控制软件,安装在Windos上,在上面操作要比直接在虚拟机里方便,Alt+P可以把Winods的文件上传文件到Linux中。 gcc。redis是C语言开发,安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境。如...原创 2018-07-26 16:50:39 · 1870 阅读 · 0 评论 -
Linux下的SVN服务器搭建
鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此总结/******开始*********/系统环境:Centos 6.5第一步:通过yum命令安装svnserve,命令如下:>yum -y install subversion此命令会全自动安装svn服务器...转载 2018-08-03 20:44:59 · 104 阅读 · 0 评论 -
@Controller和@RestController的区别?
知识点:@RestController注解相当于@ResponseBody + @Controller合在一起的作用。 1) 如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,或者html,配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。 2...转载 2018-08-09 19:57:26 · 297 阅读 · 0 评论 -
遇到 no plugin found for prefix 'tomcat 7' in the current project and in the plugin groups 的解决办法
解决方法一:命令:tomcat7:run 注意:trim(run) run前后不存在空格解决方法二: 找到这个settings.xml文件,进行编辑,在pluginGroups标签下加入下面的配置 <pluginGroups><pluginGroup>org.apache.tomcat.maven<...转载 2018-08-06 09:24:11 · 24586 阅读 · 5 评论 -
项目maven依赖成功,但编译一直报错:引用项目的类路径找不到
使用IDE:Intellij Idea框架:spring-boot项目结构:两个子项目之间的引用,A和B均为C项目的子项目,A需要依赖B。问题探索的过程(浪费了a lot of time,时间就是金钱啊,心疼~~~,希望看到这篇文章的小伙伴少走弯路 )1.A项目在依赖了B之后,maven compile时报错;2.检查所有的依赖,还有项目配置,没问题,清缓存,报错依旧3.而且有...转载 2018-08-06 21:32:22 · 1347 阅读 · 0 评论 -
把CAS部署远程服务器上,在本地client访问CAS会出现无法统一注销的问题
学习CAS时发现如果把CAS服务器放到Linux上,在本地创建Client去访问CAS时能实现统一登录,但是Client2点击注销自己却不能注销,反而把Client1给注销了。其他排查后一切正常,在使用localhost作为本地client地址时会有无法注销的情况,不同会话间cookie会话ID会一直不停的变,认证后存在一些web会话无法被service注销session,导致无需登录还能继...原创 2018-08-18 21:16:58 · 1262 阅读 · 2 评论 -
Java web项目的解耦合
以前的项目大多数都是java程序猿又当爹又当妈,又搞前端(ajax/jquery/js/html/css等等),又搞后端(java/mysql/oracle等等)。随着时代的发展,渐渐的许多大中小公司开始把前后端的界限分的越来越明确,前端工程师只管前端的事情,后端工程师只管后端的事情,正所谓术业有专攻,一个人如果什么都会,那么他毕竟什么都不精。 大中型公司需要专业人才,小公司需要全才,...转载 2018-08-16 16:31:31 · 428 阅读 · 0 评论 -
CAS的实现原理
一、锁机制 常用的锁机制有两种:1、悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。悲观锁的实现,往往依靠底层提供的锁机制;悲观锁会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁。2、乐观锁:假设不会发生并发冲突,每次不加锁而是假设没有冲突而去完成某项操作,只在提交操作时检查是否违反数据完整性。如果因为冲突失败就重试,直到成功为止。乐观锁大多是基于数据版本记录机...转载 2018-08-16 17:21:15 · 6924 阅读 · 0 评论 -
分布式服务框架Dubbo
授权协议:Apache开发语言:Java操作系统:跨平台开发厂商:阿里巴巴Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。主要核心部件:Remoting: 网络通信框架,实现了 sync-over-async 和 request-response 消息机制.RPC: 一个远...转载 2018-09-06 16:18:12 · 105 阅读 · 0 评论 -
@RequestBody 的使用方法和注意事项
使用@RequestBody注解时,是用于接收Content-Type为application/json类型的请求,数据类型是JSON:{"aaa":"111","bbb":"222"}不使用@RequestBody注解时,可以接收Content-Type为application/x-www-form-urlencoded类型的请求所提交的数据,数据格式:aaa=111&bbb=222...原创 2019-02-22 11:45:46 · 10220 阅读 · 0 评论 -
resultMap与resultType、parameterMap与 parameterType的区别
Map:映射;Type:Java类型 resultMap 与 resultType、parameterMap 与 parameterType的区别在面试的时候被问到的几率非常高,出现的次数到了令人发指的地步,笔者认为有必要单独列一章郑重声明,共勉resultMap & resultType 两者都是表示查询结果集与java对象之间的一种关系,...转载 2019-02-14 14:18:02 · 3358 阅读 · 0 评论 -
最常用的springmvc注解使用技巧
在这篇文章中,你将会看到 @RequestMapping 注解在被用来进行 Spring MVC 控制器方法的映射可以如何发挥其多才多艺的功能的。 Request Mapping 基础用法 在 Spring MVC 应用程序中,RequestDispatcher (在 Front Controller 之下) 这个 servlet 负责将进入的 HTTP 请求路由到控制器的处理方法。 在对 S...转载 2019-02-26 10:30:53 · 156 阅读 · 0 评论 -
分布式与集群的区别
作者:大闲人柴毛毛链接:https://www.zhihu.com/question/20004877/answer/282033178著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。下面就正经解释下三种结构的区别吧~单机结构我想大家最最最熟悉的就是单机结构,一个系统业务量很小的时候所有的代码都放在一个项目中就好了,然后这个项目部署在一台服务器上就好了。整个...转载 2018-07-26 14:21:33 · 171 阅读 · 0 评论