![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
后端
文章平均质量分 51
CodeSerial
这个作者很懒,什么都没留下…
展开
-
VMware centos7 Destination Host Unreachable
VMWARE centos7 Destination Host Unreachable原创 2022-12-21 20:54:07 · 2578 阅读 · 1 评论 -
阿里云依赖冲突 java.lang.NoSuchFieldError: REFLECTION
java.lang.NoSuchFieldError: REFLECTION原创 2022-11-09 20:13:41 · 660 阅读 · 0 评论 -
Java Itextpdf 导出pdf
Java Itextpdf 导出pdf需求公司新需求:导出前端页面上的某个部分为pdf,由于涉及领导签名的图片以及只是页面的一部分而非整个页面 这个需求交给后端完成接下去我将以Java为基础讲述在服务端如何导出pdf思路使用itextpdf+原生Document编写过于麻烦需要掌握大量元素,在后端写前端页面使用itextpdf + pdf模板对基本字段替换支持较好样式不好看需要自己绘制模板,工具有限使用html模板+html转为pdf可以与前端同学配合完成cs原创 2021-11-18 17:27:33 · 1038 阅读 · 0 评论 -
1241 - Operand should contain 1 column(s)
MYSQL 出现 1241 - Operand should contain 1 column(s)操作数应该包含一列错误原因:使用操作符出现问题例如=后面应该只能跟一列status_code = (1,2,3) 而不是status_code in (1,2,3)或者in出现问题in (select a,b from table_c)in后面应该只跟一列字段...原创 2021-07-06 11:24:40 · 2002 阅读 · 0 评论 -
基于redis stream + spring boot的消息队列机制简单实现
基于redis stream + spring boot的消息队列机制简单实现1.通知结构整体设计2.流程解析在各个不同的功能点都可能触发消息通知,借助LxNoticeStreamUtil#addNoticeMessage(Integer noticeAction,String actionParam)方法将消息推送到指定队列在程序启动时就会由StreamConsumerRunner启动MQ的监听器StreamMessageListener,一旦有消息产生,监听者自动接收消息,并解析执行原创 2021-06-26 15:06:29 · 1466 阅读 · 0 评论 -
shiro用户信息自动更新并删除授权缓存
shiro用户信息自动更新并删除授权缓存业务场景一个权限管理系统下需要切换系统空间,此时需要更新登录用户在不同空间下的用户信息。一个用户在一个空间下会拥有特定的功能权限,因此切换空间的动作会引起当前登录用户功能权限变更。思路通过shiro框架进行登录用户权限管理每个登录用户在shiro中都使用Subject来标识根据subject获取principal将principal反序列化为存储用户信息的POJO对象修改对象中的某项参数达成更新不同空间下用户信息的需求删除用户之前的授权缓存,让下原创 2021-05-16 13:08:23 · 1743 阅读 · 1 评论 -
Redis Stream 消息队列的简单应用
Redis Stream 消息队列的简单应用目标借助Redis Stream构建一个简单消息队列有以下特点:拥有一个不断增长的队列,但支持容量限制自动缩容,避免超出内存限制,并支持配置化开启消息监听,支持 consumer group 监听队列手动确认与消息重试机制,消息被消费并不出现问题时手动确认消息消费,如果出现异常则通过补偿机制对未处理完成队列(pending list)中的消息进行重试。Redis Stream 基础概念介绍基本数据结构中间最核心的是一个基础的消息队列,队列中的原创 2021-04-17 16:12:31 · 736 阅读 · 0 评论 -
springboot 将yaml属性注入转为list
@Value("#{'${a.b}'.split(',')}")private List<String> testList;原创 2021-04-13 11:02:15 · 1098 阅读 · 0 评论 -
java 数组与list互相转换
public static void main(String[] args) { // 数组转list String testStr = "a,b,c"; String[] myArray = {"a","b","c"}; List<String> arrayToList = new ArrayList<>(Arrays.asList(myArray)); System.out.println("...原创 2021-04-01 17:35:26 · 75 阅读 · 0 评论 -
Java请求跨域处理
Java请求跨域处理参考Access to XMLHttpRequest at ‘http://localhost:88/api/sys/login’ from origin ‘http://localhost:8001’ has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is原创 2021-03-28 18:30:05 · 1375 阅读 · 0 评论 -
nacos+spring cloud gateway 出现503 Service Unavailable
由于nacos自带spring-cloud-starter-netflix-ribbon,并且spring-cloud-gateway自动集成ribbon,如果将nacos的ribbon去掉,则出现503错误,无法通过lb路由到指定微服务 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-start原创 2021-03-28 17:13:46 · 9872 阅读 · 15 评论 -
idea 在选中范围内替换数据
选中内容后CTRL+R记得勾选search in selection only 即可只替换指定范围内容shift+alt+insert可切换为块选择原创 2021-03-25 14:24:46 · 5395 阅读 · 0 评论 -
springcloud gateway 映射失效
网关解决的问题:自动路由,反向代理,负载均衡鉴权、监控使用spring cloud gateway路由匹配predicate 并到达指定位置请求过来通过handler mapping来判断是否可以处理,能处理通过handler去处理,处理前经过一系列filtergateway配置id代表某一条规则uri代表目的地predicate代表路由规则,解析请求头、请求方法、请求时间、请求路径等请求参数才可路由到uri的目的地filter代表过滤器,可在请求过程中额外添加参数使用:原创 2021-03-14 15:55:05 · 2271 阅读 · 1 评论 -
nacos 无法获取DATAID 配置刷新失败
遇到nacos上变更完后本地触发拉去动作,但无法获取DATAID的缓存导致本地刷新失败,引用@RefreshScope注解的目的在于 将某个类的scope声明为可刷新模式,spring boot默认的bean实例是单例模式以节省空间,而想动态加载配置文件就意味着某个bean需要刷新,因此需将Java类声明为@RefreshScope以达成此功能。但是版本不一致的清空下使用springboot2.4.3+spring cloud 2020.0.1 + nacos1.4.1 +spring cloud ali原创 2021-03-13 16:47:52 · 5298 阅读 · 0 评论 -
MYSQL 索引优化
SQL优化被驱动表(大表)会用到索引left join在优化关联查询,只有被驱动表建立索引才有效,LEFT JOIN 小表驱动大表 左表驱动右表,因此在右表构建索引生效,而在左表构建则不生效,即使左表用到了索引扫描的行数依旧未变inner join 自动选择小结果集作为驱动表,如果两表都构建索引,且数据量一样,默认使用右表索引,如果削减右表数据量使左表作为大表此时 索引使用 左表,依旧使用大表上构建的索引# 测试SQLselect id,status_code from event_p原创 2021-03-12 18:50:41 · 90 阅读 · 0 评论 -
数据库树形结构存储方法的选择
树形结构存储方法的选择简单的方法跟踪多级回复构成的树形分支:parent_id一开始的思路使用parent_id跟踪分支使用先找出所有节点,按照一定顺序整合成树形结构缺陷:在深度过深时仅用parent_id需要执行很多次SQL才能获取给定主题的所有数据每天的数据变动可能非常大,每访问一次整合一次过于浪费时间且不切实际目标:一个更好的存储多级结构及简单高效获取一个完整分支的方法分层存储合查询树形结构举例:组织架构图、线程化讨论解决方案邻接表依赖父节点构成的邻接表,由paren原创 2021-02-04 17:31:27 · 3846 阅读 · 1 评论 -
数据库存储的多叉树遍历
多叉树遍历针对数据库仅由PID存储父子结构的情况递归遍历数据库全量取出数据根据pid找出第一批节点递归组装剩下节点遍历根节点,找到根节点的下一层节点深度优先遍历public List<Node> compositeChildren(Integer pid,List<Node> allNodes){ List<Node> children = new ArrayList<>(); // 找到下一层的子节点 allNod原创 2021-02-04 17:26:16 · 444 阅读 · 0 评论 -
spring自定义pojo参数映射原理
自定义pojo参数映射原理树形结构的存储方案选择与设计自己通过反射产生的JavaBean如何交给spring容器管理HttpServlet接口由spring实现FrameworkServlet get/post -> doService衍生到子类DispatcherServlet实现doDispatcher来分配并执行方法,getHandler(processedRequest)获取合适的handlerExecutionChain来执行请求找到HandlerAdapter原创 2021-01-31 17:20:55 · 675 阅读 · 0 评论 -
网络协议模型
网络协议模型应用层通过HTTP协议发起请求请求方法,协议版本,数据格式传输层通过TCP协议进行三次握手建立连接,四次挥手释放连接三次握手需要双方都知道自己的发送/接收没问题四次挥手需要双方都想要关闭并且得到对方确认网络层通过封包(source ip destination ip)+数据进行数据包传递网络层在局域网内通过子网掩码确认交给哪个IP地址去处理请求,内部局域网直接转发,如果连接外网则通过网关地址,网关地址如何找到对应物理设备则通过链路层数据链路层通过ARP协议在网络层原创 2021-01-22 09:50:46 · 177 阅读 · 0 评论 -
springmvc 请求映射原理
请求映射原理DispatcherServlet请求拦截:重写HttpServlet的HttpServletBean没重写doGet/doPost有继承的子类FrameworkServlet实现doGet/doPostFrameworkServlet实现的方案都指向processRequest(request, response);processRequest中指向doService方法,然而并没有直接实现doService衍生到子类DispatcherServlet的doS原创 2021-01-21 13:35:35 · 481 阅读 · 0 评论 -
文件上传 参数设定 源码分析
dispatcher接到请求判断请求是否是multipart文件请求是就转为StandardMultipartHttpServletRequest调用handle处理请求已转为multipartFiles由于使用POJO封装来接收参数所以使用ServletModelAttributeMethodProcessor去解析参数,否则单纯的文件标注@RequestPart注解的就调用RequestPartMethodArgumentResolverattribute = cre..原创 2021-01-09 13:50:25 · 166 阅读 · 0 评论 -
mysql一列多值多属性设计-乱穿马路
乱穿马路需求:每个产品都可能有多个联系人简单方案:将单值存储改为逗号分隔存储多值常用逗号分隔的列表来避免在多对多关系中创建交叉表,这是一种反模式,称为乱穿马路(Jaywalking),因为可以避免十字路口目标:存储多值属性如何在一列中存储一系列相关数据的集合一个账号对应多个产品每个产品对应一个联系人但每个产品可能对应多个联系人反模式:格式化的逗号分隔列表查询指定账号的产品查询异常困难,不能再用等号不得不借助模式匹配困难出错且无法带来性能的优势查询指定产品的账号多表连接也不原创 2020-12-25 19:52:54 · 966 阅读 · 0 评论 -
自己编译JDK
自己编译JDK下载ZIP文件https://gitee.com/isspark/OpenJDK12解压unzip -o -d /root/jdk/ isspark-OpenJDK12-master.zip下载openjdk11yum install java-11-openjdk-devel -y配置bash configure出错:configure: error: Could not find all X11 headers (shape.h Xrender.h Xr原创 2020-10-31 17:22:23 · 415 阅读 · 0 评论 -
XXL源码解析
源码分析目标:找出执行的故障转移及其他策略如何实现的(居然属于路由策略,去查看路由策略相关的源码由官方文档[执行器 RESTful API](https://www.xuxueli.com/xxl-job/#6.2 执行器 RESTful API)引发的源码阅读现在进度:找到了任务运行的源码,主要是密集调度时的阻塞处理策略分配方式、执行器ID及handler的优先级,具体执行方法handler发生变更时的变化,内部的任务存储容器,任务超时时间的设定、运行模式的匹配对运行产生的影响任务超时时间的设定与原创 2020-10-23 19:07:36 · 1196 阅读 · 0 评论 -
onjava8 函数式编程与流式编程
onjava8 函数式编程与流式编程函数式编程函数式编程允许用户将代码逻辑封装为函数并且将函数作为参数进行传递新旧对比代码:package priv.wzb.javabook.fp;/** * 一个接口 接收String类型的参数返回String类型的结果 */public interface Strategy { String approach(String msg);}/** * @program: Design_Pattern * @description: soft原创 2020-10-02 11:14:11 · 470 阅读 · 0 评论 -
数据库事务原子性、一致性是怎样实现的?
数据库事务原子性、一致性是怎样实现的?atomicity/consistency数据库的一致性依赖于其他三种特性:原子性,隔离性,持久性原子性用于保证事务中的语句要么全部执行要么全部不执行隔离性用于保证多事务并发处理下事务处理顺序与结果的保证隔离性的处理分为四个级别read uncommit tedread committedrepeatable readserializable原子性如何保证atomicityinnodb使用undo log回滚日志,记录事务操作以便回滚i原创 2020-10-02 10:25:28 · 3112 阅读 · 0 评论 -
Apache Shiro Architecture shiro架构
Apache Shiro ArchitectureApache Shiro以直观简单的简化应用程序安全性为目标。shiro的核心设计模拟了大队哦熟人在某人(或某物)与应用程序交互的情况下对应用程序安全性的看法。软件应用程序通常是根据用户案例设计的。也就是说你会经常根据用户与软件交互的方式来设计用户界面或服务API。例如,你可能会说如果与我的应用程序交互的用户已登录,我会给他们一个看到自己账户信息的按钮。如果没有登录我会提供一个登录按钮。这个例子表明应用程序主要是为了满足用户需求而写的。甚至“用户”可能翻译 2020-09-05 13:52:49 · 140 阅读 · 0 评论