- 博客(185)
- 资源 (7)
- 收藏
- 关注
原创 MyBatis-Plus 多数据源动态切换不生效
Transaction的默认propagation=Propagation.REQUIRED,即事务的传播属性是,存在事务加入当前事务,不存在就创建事务,1.项目中使用的多数据源,各个方法上加了@DataSource注解,对于批量操作,需要做使用事务保持批操作的一致性。要切换数据源,则必须是一个新的事务,所以需要修改事务的传播数据,使其创建一个新的事务,获取新的数据库连接。而在事务内的所有数据库操作,都是在事务连接建立之后进行的,所以会产生数据源没有切换的问题。2.如何保证数据源切换正常,且事务正常?
2023-02-24 09:32:31
2748
1
原创 关于版本eclipse2022-09如果去掉html文件的验证
最近更新了eclipse的版本,现在是2022-09,但是有些html中的jquery语法,eclipse无法识别,虽然不影响运行,但看着很不输入,在eclipce里面设置一下就行了,
2022-12-14 15:43:26
506
原创 ajax给后端传递json格式数据,请求直接cancele了
点击确定按钮,发出请求,点击确定,弹窗消息,请求也取消了,坑就在于,请求还没有返回,弹窗就消失了,所以请求也就取消了。解决办法就是在请求返回体中close这个弹窗。这是子页面中的ajax方法,等请求返回以后,在关闭弹窗,不然请求会中途取消,之前没问题的原因是之前请求很快返回了(在弹窗关掉之前),现在慢一些。这是请求父页面左边树的前端请求,点击短信发送会调用sendSms()方法、回调子页面中的submitHandler()方法。上面是后端接口接收请求的代码。
2022-12-14 15:05:54
552
原创 Linux常用命令
ls 命令是英文单词list的简写, 其功能为列出目录的内容,是用户最常用的命令之一ls #查看当前目录内容 (缺点: 隐藏文件看不到)ls -a #查看当前目录内容 ,包括隐藏文件ls -al #查看目录内容的详细信息(查看文件类型、权限、大小等)ls -lh #查看目录内容的详细信息,以K,M,G方式显示文件大小ls /root #查看/root目录下内容mkdir命令创建文件夹mkdir test 创建文件夹mkdir -p /root/aaa/bbb 创建有层级的文件夹rm
2022-03-29 17:52:52
237
原创 基于Xterm.js+experss-ws+websocket+ssh2+typescript实现webssh(网页端xshell)
实现网页版xshell,需要学习的东西有点多,下面一个个简单介绍Xterm.js这是网上的一个开源框架,其作用主要是界面方面,比如新建一个小黑窗,设置各种样式等作用,用法也很简单,具体可查https://xtermjs.org/experssexpress是一个开源的框架,大多数公司也在使用这样的框架作为Node中间层或者是服务端使用,可以快速搭建一个服务端出来,var express = require('express');var app = express();app.get('/',
2021-11-22 17:27:52
3579
2
原创 ES6高阶总结
promisePromise 是异步编程的一种解决方案,主要解决回调地狱的问题,因为有的需求需要先完成某一个步骤,再进行下一个步骤,或者下一个步骤需要上一个步骤的结果。三种状态:pending(进行中)、resolved | fulfilled(火狐)(已成功)和rejected(已失败)只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变,只有两种可能:从pending变为resolve
2021-10-26 18:03:56
443
1
原创 ES6语法基础总结
letvar a = 1;全局变量,能重复声明,可以先使用,在声明let a = 1 全局声明即全局变量,局部声明即局部变量,不能重复声明,必须先声明后使用const a = 1 常量,常量只能在声明时赋值,并且一旦赋值不能修改,其他和let类似解构赋值对象的解构赋值对象的解构赋值let obj = { a: 1, b: 2, c: 3};let {a,c} = obj; console.log(a,c);//输出1 3数组的解构赋值 let arr =
2021-10-19 17:42:27
278
原创 react使用ReactEchartsCore的时候如何清除缓存
前言最近在做项目的时候,发现柱状图切换的时候出了问题,比如legend有12个,切换以后接口返回的数据只有9个,9个中没有12个中的三个就会显示,但实际上是应该没有的。解决 <ReactEchartsCore notMerge={true} echarts={echarts} option={Option} />加上notMerge={true}即可解决。option (必需,对象):echarts 选项配置,可以查看https://echarts.apache.org/optio
2021-09-16 16:24:08
1241
原创 喂狗判断?如何处理websocket请求没有数据返回的情况下数据归零
前言最近遇到一个需求,就是前端接收到的websocket数据,如果只返回了几条数据,后面没有返回了,就会出现页面一直显示最后一次数据的情况,但实际业务可能需要数据归零或者清空不显示。这时候怎么判断呢,问了同事,同事说做一个喂狗判断,我一脸懵逼。其实就是监听数据返回,如果一直没有变化,就做对应的处理(归零或者不显示等)处理方式这里采取的方式是使用useEffect监听websocket返回的数据是否有变化。上代码: let timer : any useEffect(() => {
2021-09-07 15:35:10
1121
1
原创 记一次echart使用过程踩的坑
前言本来用的echart版本是4.9.1,按照官方的文档以及网上的博客,确实没什么问题,但是由于要做油表图,不得不升级到5.1.2版本,然后之前做的图例很多都出了问题。问题1从4.9升级到5.12后,之前用富文本编辑器rich做的图例换行,并且对其的效果失效了,又变成了没有间距,缩到一行去了。主要原因是设置的width失效了,然后仔细看文档,也没错啊,知道看到这里然后抱着试一试的心态,加了个backgroundColor,竟然就可以了,官方文档也不说清楚,搞不懂、完整代码这块代码做了兼容,因为
2021-07-27 19:42:56
399
转载 React Hooks: 深入剖析 useMemo 和 useEffect(转载)
背景最近 React 团队发布消息,称他们即将基于 Hooks 重写官方文档,Function Component 即将代替 Class Component 成为官方主推的开发方式。大家可能都开始慢慢从 Class Component 转向 Hooks,但是理想和现实还是有些差距,我们团队从 2019 年开始尝试使用 Hooks,事实也证明 Hooks 非常适合我们的业务场景,从一定程度上来讲可是大大提升了开发体验也降低了代码的维护成本,但是一方面项目旧代码主要还是基于 Class Component,另
2021-04-16 15:42:38
1872
原创 springCloud入门及服务的注册与发现-(1)
前言springCloud即微服务,是当前最流行的架构之一,为什么会出现微服务,这得从系统结构的历史说起。最开始是单体应用架构,即所有的功能模块甚至包括前端全部在一个web容器中运行。这显然很多问题,后来变成将不相关的应用分别开发,但依旧是将很多功能堆积在一起,再后来是SOA,即将公用的可复用的抽离出来,显示服务的快速再生。但是这样抽取的粒度太大,而且耦合度高。微服务是在此基础上进一步优化,没一个功能模块都可以是一个项目,颗粒度低,微服务之间采用Restful等轻量协议传输。大概知道是怎么
2021-02-26 14:11:27
262
原创 springBoot使用swagger-ui实现接口可视化调用-(2)
前言接口写好以后怎么测试?交给前端调用接口测试?效率太低了!使用Postman调用接口测试,可以,但不是很方便最好的方法就是所有接口可视化,想调用哪个就调用哪个!实现接口可视化调用第一步加入swagger-ui依赖 <!-- 接口可视化 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId
2021-02-20 18:05:36
535
原创 springBoot的基本使用及与其他框架的整合-(1)
Springboot是什么?1、springboot是在spring的基础上进一步封装,让以前繁杂的配置全部简化,从而快速构建项目。2、对主流框架无配置集成,提高开发效率。3、内置tomcat无需先部署在运行白话:轻量级使用简单,spring的升级版,减少了大量繁琐的配置,因为springboot已经预配置了大部分。快速搭建springboot项目springboot创建项目与之前相同,没什么大的区别。创建一个常规的mavne项目。在pom.xml文件中导入依赖 <pare
2021-02-20 17:51:29
752
原创 温故而知新(8)-Java基础之网络编程
前言两个概念简单看看网络通信协议:通信协议是对计算机必须遵守的规则,只有遵守这些规则,计算机之间才能进行通信。这就好比在道路中行驶的汽车一定要遵守交通规则一样,协议中对数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守,最终完成数据交换。TCP/IP协议:传输控制协议/因特网互联协议( Transmission Control Protocol/Internet Protocol),是Internet最基本、最广泛的协议。它定义了计算机如何连入因特网,以及数据如何在它们之间传输
2021-02-20 10:37:05
142
原创 温故而知新(7)-Java基础之文件操作、递归的使用
前言此文主要简单记录文件的基本用法,以及网络编程的使用文件操作获取文件对象 // 通过父路径和子路径字符串 方式一 String parent = "d:\\aaa"; String child = "bbb.txt"; File file3 = new File(parent, child); // 文件路径名 方式二 String pathname2 = "D:\\aaa\\bbb.txt"; File file2 = new File(pathname2
2021-01-26 16:50:55
121
原创 温故而知新(6)-Java基础之字节流、字符流、缓冲流、转换流的使用
前言先来一个流的大致分类分类输入流输出流字节流字节输入流 InputStream字节输出流 OutputStream字符流字符输入流 Reader字符输出流Writer上面的类都是流的超类。为什么会有字节流和字符流?因为如果使用字节输出流,在读取有些字符(中文字符)的时候,可能读取不全,因为一个中文占取多个字节,字符流一次读取是一个字符。OutputStream字节输出流OutputStream 是表示字节输出流的所有类的超类常用方法:public v
2021-01-08 17:29:15
191
原创 温故而知新(5)-Java基础之线程的使用
前言一个应用程序可能有多个进程,一个进程可能有多个线程,多线程并非同时进行,而是充分利用cpu的资源,因为其切换时间很短,所以直观上认为是并行的。创建线程的两种方式不管是哪种方式,都需要重写run方法,所有的业务处理都在这里继承Thread自定义线程类:public class MyThread extends Thread { //定义指定线程名称的构造方法 public MyThread(String name) { super(name); //调用父类的Strin
2020-12-09 16:58:38
126
原创 温故而知新(4)-Java基础之集合的使用(list、set、map)
前言集合是日常中最常用的数据结构,我们从数据库中查找数据,总是需要通过各种处理,然后将对应的结果或者中间值存到集合中,最终将数据以集合或者其他形式(如json)输出。常见的数据结构数据存储的常用结构有:栈、队列、数组、链表和红黑树栈栈:stack,又称堆栈,它是运算受限的线性表,其限制是仅允许在标的一端进行插入和删除操作,不允许在其他任何位置进行添加、查找、删除等操作。特点先进后出(即,存进去的元素,要在后它后面的元素依次取出后,才能取出该元素)队列队列:queue,简称队,它同堆栈一样
2020-12-08 18:07:11
186
原创 温故而知新(3)-Java基础之常用工具类的使用
Scanner类一个可以解析基本类型和字符串的简单文本扫描器。 例如,以下代码使用户能够从 System.in 中读取一个数:Scanner sc = new Scanner(System.in);int i = sc.nextInt();备注:System.in 系统输入指的是通过键盘录入数据。例子:import java.util.Scanner;public class Test01Scanner { public static void main(String[] args)
2020-11-14 17:16:59
268
原创 温故而知新(2)-Java基础之类和对象、封装、构造方法、继承、抽象类、接口及多态的使用
前言什么是类。这个概念有点虚,算是一种标准吧,是属性和行为的合集。对象是类的具体实现,一个对象中包含了属性和行为,什么是属性和行为,比如一个小猫有名字、体重,这就是属性,他可以跑。可以叫,这就是行为。为什么需要面向对象的编程,因为很多行为及其附带的属性需要封装到一个对象中,使用的时候只需要声明这个对象,就可以使用其中的行为即方法,而抽象类、接口等都是为了代码整体架构的适用性更高而发明的。对象的使用成员变量的默认值对象内存图成员变量和局部变量成员变量是声明在类中的,局部变量是声明在方法中的。
2020-11-13 16:37:29
161
1
原创 温故而知新(1)-Java基础之数组的使用及原理
前言闲暇之际,突然想看一下java基础,因为以前学的时候有些东西可能理解的并不是很透彻,前面还有一些基础,比如运算符,常量、变量、ifelse等。太简单了,就不写了,但大家可以去复习一下数据类型及其字节数废话不多说,直接上干货。此文章只适合有经验的同学看看。数组声明方式第一种int[] arr = new int[3];arr[0]=1;第二种int[] arr = new int[]{1,2,3,4,5};第三种int[] arr = {1,2,3,4,5};数组原理
2020-11-12 17:12:37
278
2
原创 Rabbitmq的高级应用(过期时间、死信队列、延迟队列、消息追踪、消息日志)
过期消息解释消息队列中,有些消息可能一直不会被消费,可以设置过期时间,防止消息队列堵塞,可以通过两种方式设置,一种是xml配置的方式,一种是代码的方式,这里写一下代码配置的方式/**过期消息* 该消息投递任何交换机或队列中的时候;如果到了过期时间则将从该队列中删除*/@Testpublic void ttlMessageTest(){MessageProperties messageProperties = new MessageProperties();//设置消息的过期时间,5 秒
2020-11-04 11:18:56
1456
原创 Rabbitmq整合springboot实现消息队列简单案例
前言此篇需要springboot基础,springboot简单来说是一个集成框架,使用springboot简化了绝大多数的框架,可以直接使用rabbitTemplate直接发送消息,大概步骤为新建maven项目,加入springboot依赖,然后配置生产者与交换机以及队列路由的绑定,然后发送消息。消费端直接用一个注解注释,监听某个队列消息,然后消费即可。生产者项目第一步 新建maven项目新建maven项目,并且加入相关依赖。 <!-- 这是springboot依赖,是一个大的集合,里面已经
2020-10-31 14:51:48
846
原创 Rabbitmq的几种工作模式介绍
前言上一篇文章对mq做了简介,并且说了rabbitmq的六种模式,这篇文章主要记录一下这几种模式是什么样的,以及怎么用的。第一种不再说,跟简单。一下几种模式均有对应的案列代码供参考,请看https://github.com/Coderxiangyang/Rabbitmq/tree/master/rabbitmq-01-hellowork queues模式这种模式和hello world模式差不多,只不过是多个消费端,主要是应对消息太多,处理不过来的情况。多个消费端可以共同消费一个队列中的消息,他们的
2020-10-28 18:09:46
1862
原创 Rabbitmq基础之概述分类
前言Rabbitmq归属于mq,mq的全称是 Message Queue,又称消息队列/消息中间件,其实应用程序与应用程序之间的通信方法。作用在项目中,可将一些无需即时返回且耗时的操作提取出来,进行 异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而 提高了 系统的吞吐量 吞吐量。就是直接把数据丢到消息队列,放到另一个程序去处理,这样可以及时返回结果,不会造成堵塞。如图:如果没有了消息队列。高峰时期服务器承受不了。有了消息队列,高峰时期,直接丢到消息队列,由消费者慢慢处理就可以了
2020-10-28 15:29:37
189
原创 Centos 7 安装Rabbitmq及角色权限设置
在线安装依赖环境:yum install gccyum install socat安装Erlangyum install erlang安装 rabbitmqrpm -ivh http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.noarch.rpm开启管理界面rabbitmq-plugins enable rabbitmq_management启动rabbitmqserv
2020-10-27 15:06:52
614
原创 Netty应用之粘包拆包及编码解码
前言为什么要把编码解码和粘包拆包放在一起呢?原因是粘包拆包的解决方案就是利用编码解码。当 Netty 发送或者接受一个消息的时候,就将会发生一次数据转换。入站消息会被解码:从字节转换为另一种格式(比如 java 对象);如果是出站消息,它会被编码成字节。编码解码这里简单说一些编码器解码器的接口MessageToMessageEncoder对应MessageToMessageDecoderMessageToByteEncoder对应ByteToMessageDecoder上面一个是编码,一个是
2020-10-22 19:56:49
472
原创 Netty应用之实现websocket长连接
前言有时候前后端交互的时候,会用到websocket。这时前端是用js代码实现的,后端需要写一个websocket服务供前端调用,netty也可以实现websocket服务端,下面是实现案例代码服务器端package com.huali.netty.websocket;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelIn
2020-10-21 16:51:31
808
原创 Netty核心模块API说明及其使用
前言建议先去看看https://github.com/Coderxiangyang/NettyExercise/tree/master/NettySimple这个案例,在阅读下面的文章,理解效果会更好。此文主要记录Netty常用的模块以及API。梳理一下代码顺序,先使用引导器,加载各种配置,然后加载各种handler(业务处理类),然后客户端去连接服务端的IP地址以及端口,服务端监听端口即可。然后获取通道,将数据写入通道即完事。Bootstrap ServerBootstrap解释Bootstra
2020-10-21 15:28:36
419
原创 Netty架构概述及其原理说明
为什么要用Netty架构前面一篇文章写了java原生支持的NIO模型也是可以实现网络数据传输的,为什么还有Netty出现呢?NIO的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer等要熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor 模式,你必须对多线程和网络编程非常熟悉开发工作量和难度都非常大:例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常流的处理等
2020-10-20 16:24:20
656
原创 Netty架构基础之BIO NIO AIO网络编程模型
前言公司业务需求,需要用到tcp数据传输,基于java自带的socket太low,而且编程复杂,市面上比较流行的netty比较适合。学习netty之前,先简单总结一下各种数据传输类型。java支持的类型Java 共支持 3 种网络编程模型/IO 模式:BIO、NIO、AIOJava BIO:理解: 同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销适用场景:BIO 方式适用于连接数目
2020-10-19 20:28:36
624
3
原创 html知识点之利用css四边形切角并且加上边框
前言这几个月做了很多前端工作,其中一个需求还是蛮头疼,UI给的图上面的四边形是一个带斜边的,直接用背景图可以实现,但是会出现各种布局的问题,比如内容太大了,边框不会跟着扩大,废话不多说,这里写一些如何利用css话四边形带有斜边,并且给斜边加边框,在这之前,先简单说一下需要用到的函数linear-gradient()函数#grad { background-image: linear-gradient(red, yellow, blue);}看上面的代码是从头部开始的线性渐变,从红色开始,转为
2020-09-14 20:06:07
4260
2
原创 typeScript知识点之装饰器的使用
前言装饰器是一种特殊类型的声明,它能够被附加到类声明,方法,属性或参数上,可以修改类的行为。通俗的讲装饰器就是一个方法,可以注入到类、方法、属性参数上来扩展类、属性、方法、参数的功能。常见的装饰器有:类装饰器、属性装饰器、方法装饰器、参数装饰器装饰器的写法:普通装饰器(无法传参) 、 装饰器工厂(可传参)类似于java设计模式中的装饰模式。类装饰器类装饰器在类声明之前被声明(紧靠着类声明)。 类装饰器应用于类构造函数,可以用来监视,修改或替换类定义。 传入一个参数普通装饰器(无法传参)fun
2020-09-10 16:54:03
427
Erlang-win64_20.1
2018-04-18
模拟ATM登陆取款存款修改密码程序
2016-01-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人