Mybatis-Plus之多数据源
15、Mybatis-Plus之多数据源
适用于多种场景:纯粹多库、 读写分离、 一主多从、 混合模式等 目前我们就来模拟一个纯粹多库的一个场景,其他场景类似 场景说明:
我们创建两个库,分别为:mybatis_plus(以前的库不动)与mybatis_plus_1(新建),将 mybatis_plus库的product表移动到mybatis_plus_1库,这样每个库一张表,通过一个测试用例 分别获取用户数据与商品数据,如果获取到说明多库模拟成功
1、创建数据库及表创建数据库mybatis_plus_1和表product
12345678910CREATE DATABASE `mybatis_plus_1` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;use `mybatis_plus_1`;CREATE TABLE product( id BIGINT(20) NOT NULL COMMENT '主键ID', name VARCHAR(30) NULL DEFAULT NULL COMMENT '商品名称 ...
Mybatis-Plus之通用枚举
14、Mybatis-Plus之通用枚举
表中的有些字段值是固定的,例如性别(男或女),此时我们可以使用MyBatis-Plus的通用枚举来实现
1、数据库表添加字段sex
2、创建通用枚举类型123456789101112131415161718192021222324252627282930313233343536373839404142package com.jw.cloud.mybatisplus.enums;import com.baomidou.mybatisplus.annotation.IEnum;/** * @author JoyWu */public enum SexEnum implements IEnum<Integer> { /** * 性别枚举 */ MAN(1,"男"), WOMAN(2,"女"); public int value; public String sex; SexEnum(Integer value, String sex ...
Mybatis-Plus之插件介绍
09、Mybatis-Plus之插件介绍1、创建数据库及表1、创建表123456789CREATE DATABASE `mybatis_plus` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;use `mybatis_plus`;CREATE TABLE `user` ( `id` bigint(20) NOT NULL COMMENT '主键ID', `name` varchar(30) DEFAULT NULL COMMENT '姓名', `age` int(11) DEFAULT NULL COMMENT '年龄', `email` varchar(50) DEFAULT NULL COMMENT '邮箱', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2、添加数据123456INSERT INTO user (id, name, age, email) VALUES(1, ...
线上问题排查之使用Arthas
线上问题排查之使用Arthas
官网:https://arthas.aliyun.com/doc/
是什么?Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率
什么作用?可以在线上的时候排查各种问题,详细的可以直接跳转官网。
实时诊断:可以在运行的 Java 应用中实时查看线程、堆栈、CPU 使用率等信息,帮助快速定位应用的性能问题和瓶颈。
方法追踪:可以对 Java 方法进行追踪,监控方法的调用情况、参数和返回值,用于定位代码中的问题。
监控应用类加载情况:可以查看应用中加载的类信息,包括类加载路径、加载时间等,帮助分析类加载问题。
内存分析:可以查看 Java 应用的内存使用情况,包括堆内存、非堆内存等,用于分析内存泄漏和优化内存使用。
OGNL 表达式支持:可以通过 OGNL 表达式(对象图导航语言)来查看和修改 Java 对象的属性,方便动态调试。
热更新:可以在不重启应用的情况下,动态 ...
自定义协议之TCP/IP分包问题解决
自定义协议之TCP/IP分包问题解决
这是我自己第一个完完全全都是我负责的模块,之前的项目虽然是属于我负责,但是代码一开始并不是我写的,我只是在原来的代码上进行了修修改改,这次记录的也是网络编程中一个最常见的问题–TCP/IP分包问题。
项目背景我们PIS(乘客信息系统)系统需要去对接ATS(列车自动监控系统)系统,然后就必不可少的需要通信协议去支持,对方是属于服务端,我这是属于客户端,需要去接收对方发送过来的数据,并解析,我这在将解析出来的数据转发给我们的设备显示列车到站信息。
技术实现
介绍下使用了什么技术和解决分包的一个思路。
网络框架搭建—Netty选用了Netty的框架,去实现网络通信。netty的详细介绍也会在后面有空的时候进行整理出来。然后简单说下对方系统给我们提供出来的协议吧。首先他会将所有的数据封装到一个大包中去,这么包中有20-30多帧消息,每一帧消息不超过1024个字节,这一帧消息中可能有多个站台的消息,每个站台消息都会有一个消息体去单独的记录,每一帧消息会有消息头消息尾,记录当前是多少帧。下面这是一张简单的图,帧头帧尾,还有站台消息体就没 ...
组播与跳数排查记录
组播与跳数排查记录
这篇文章不是技术文章,这是我入职公司后第一次出差排查线上问题的记录。
项目背景我们公司的项目属于地铁方面的业务,采用了组播的形式给我们的设备发送消息,让设备根据组播的消息显示相应的数据。
问题排查问题描述:我在中心的服务上给我们的设备发送组播数据,发现只有在中心的服务中能接收到组播数据,在车站中是接收不到任何的组播数据的。
排查方法:通过搜索引擎搜索。
一开始我通过百度查到这个是需要交换机打开组播功能的,经过排查发现交换机的厂家是有把交换机的组播功能打开的。然后只能去抓包,在我们出口的交换机还有抓到包,但是在经过另外一个交换机的时候 数据就接收不到了,然后接下来又是一顿搜索。最后搜索到这个一般组播程序中是会涉及到跳数这一个概念的,也就是TTL(跳数(Hops)是一个网络通信的概念,用来衡量数据包从源节点到目标节点经过的中间路由器或交换机数量)。最后就修改程序,给socket设置了跳数,防止层级过多,就设置的比较大了。
12345678910111213141516171819202122232425262728/** * 组播下发 * * @param data ...
markdown书写工具-Typora
Typora用法介绍[TOC]
标题的写法123一级标题: 可以直接输入 # 一级标题; "#"后面有个空格的,也可以ctrl+1二级标题: 可以直接输入 ## 一级标题; "##"后面有个空格的,也可以ctrl+2依次这样的.....
分割线1采用 --- 来实现 英文的
需要突出的字段
斜体 效果: 斜体
1采用 *你要显示的内容*
粗体 效果: 粗体
1采用 **你要显示的内容**
斜粗体 效果: 斜粗体
1采用 ***你要显示的内容***
删除线 效果: 我中间被画了一条线
1采用 ~~你想划掉的部分~~ 或者 alt+shift+5
下划线 效果: 我这是下划线
1<u>使用Ctrl+U可以实现下划线,或者在文本的两边加上一个HTML标签u。</u>
脚注 效果:我是^DYL
123# 添加文本后[^DYL]: dyl 当这个你下面没有把脚注补充完整的时候 他会提示你,这个时候你只需要点击他的提示 他就会帮你补充完整如下图
...
设计模式之适配器模式
设计模式之适配器模式概念定义123456菜鸟教程定义:适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合 了两个独立接口的功能。场景: 将旧的接口适配成新的接口:当系统中使用的旧接口与新的业务需求不兼容时(比如需要新增一些旧系统没有的功能),可以使用适配器模式将旧接口适配成新的接口,使得旧接口可以与新的业务需求协同工作。 复用已有的类:当一个已有的类提供的接口与当前需要的接口不匹配时,可以使用适配器模式将该类适配成满足需求的接口,从而复用该类的功能。 统一多个类的接口:当系统中存在多个类的接口不一致,而客户端需要统一调用它们的接口时,可以使用适配器模式将这些类的接口适配成统一的接口,使得客户端可以一致地操作这些类。
代码实现
适配器模式的代码理解
1234567891011121314151617181920212223package com.jw.cloud.modulepattern.adaptee;/** * 要用一个自己当前实现了的 ...
IOC个人总结
Spring Ioc 个人总结IOC思想 inversion of control 控制反转:
大部分的定义就是:构造对象的权利被反转,原先我们自己主动创建对象调用构造方法传参,现在我们依赖于工厂或者说依赖于某一个容器,将对象构造的权利交给其他对象,构造对象的权利被反转了。说白了也就一句话:将创建对象的权力交由Ioc容器来完成。 在springioc中最常见的问题是对注解的不了解,也就导致了对bean认知不够到位,当热我也是菜鸡,这里也只是分享了自己的想法。 谈ioc之前,先说说mybatis的一些问题。先上代码(configuration.xml文件):
1234567891011121314151617181920212223 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/ ...
设计模式
设计模式之责任链模式概念定义12345678菜鸟教程定义:顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 个人理解:责任链模式就是一个请求在多个处理器(就是需要执行各种方法达到需求的java类)之间进行按顺序的执行,他的一个主要优点就是可以手动设置执行的顺序,设置下一个处理器,进行代码上的解耦 在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推场景:身份认证:可以将身份认证请求传递给不同的认证处理器,例如进行密码验证、指纹验证、证书验证等。请求拦截与过滤:可以将请求传递给多个过滤器,每个过滤器根据特定条件判断是否拦截请求或继续传递。购买流程:可以将购买请求传递给不同的处理器,例如库存检查、价格计算、支付处理等总之,责任链模式适用于有多个处理器可以处理同一类型请求、需要灵活调整处理顺序、需要解耦发送者和接收者、需要保证请求被处理等场景。它可 ...