自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 资源 (5)
  • 收藏
  • 关注

原创 永磁同步电机控制系统——模型预测控制(MPC)

模型预测控制(Model Predictive Control, MPC)是近年来被广泛讨论的反馈控制策略。模型预测控制的机理可描述为:在每一采样时刻,根据获得的当前测量信息,在线求解一个有限时域开环优化问题,并将得到的控制序列的第一个元素作用于被控对象。在下一个采样时刻,重复上述过程,用新的测量值刷新优化问题并重新求解。...........................

2022-06-08 17:35:53 6474 3

原创 永磁同步电机控制系统——电流采样

在电机控制中,电流环是最重要的环节,是整个控制系统的核心。电流环涉及一个最基础的问题,那就是电流采样。本文主要介绍电阻采样,常用于低功率电机控制中。所谓的电阻采样方法,就是在逆变电路的下桥臂串联电阻,通过采集电阻两端的电压来计算三相电流,准确的说,通过这种方法采集的电流并不是真正的三相电流。...

2022-05-12 09:14:51 7534 2

原创 基于RabbitMQ的分布式事务最终一致性解决方案

1. 分布式事务所谓事务,通俗一点讲就是一系列操作要么同时成功,要么同时失败。而分布式事务就是这一系列的操作在不同的节点上,那要如何保证事务的ACID特性呢。原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的操作要么都成功,要么都失败。一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务

2021-04-22 21:39:33 2985 2

原创 你不知道的redis缓存那些事

1. 缓存哪些数据适合放入缓存即时性、数据一致性要求不高访问量大且更新频率不高的数据(读多写少)cache本地缓存分布式情况下的问题:多台机器,负载均衡到不同的机器,都要查一遍数据库更新存在数据一致性问题:更新操作只更新某台机器的缓存,若下次查询负载均衡到其他服务器,获取的数据不一致。解决:共享缓存中间件(redis)整合redis引入spring-boot-starter-data-redis<dependency> <groupId

2021-04-05 11:03:52 183

原创 关于幂等性那些事

1. 幂等性接口幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因多次点击而产生副作用。比如支付场景,用户购买了商品支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,流水记录变成2条,这就没有保证接口的幂等性2. 哪些情况需要防止用户多次点击按钮用户页面回退再次提交微服务之间相互调用,由于网络问题,导致请求失败。feign触发重试机制其他业务情况3. 哪些情况需要幂等以SQL为例幂等select

2021-04-05 10:48:28 84

原创 单点登录

1. 单点登录单点登录(Single Sign On),简称为 SSO,是比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。对于相同父域名下的单点登录比较简单,只需要将cookie的作用域放大到父域名即可。@Beanpublic CookieSerializer cookieSerializer(){ DefaultCookieSerializer cookieSerializer = new DefaultCookie

2021-03-31 22:33:06 218

原创 社交登录

社交登录,是指用户可以使用微博、QQ、微信等社交媒体账号登录网站。从用户的角度来看,社交登录不仅可以省去注册账号的操作过程,也可以不用记忆账号和密码,网站接入社交登录功能是真的香。该如何接入社交登录呢?接入流程是怎样的呢?别急,且听我慢慢道来。一、环境搭建1. 申请微博登录接口以微博登录为例,你首先需要到微博开放平台申请一个网页应,填写应哟用相关信息。等待审核通过,就可以获得一个App Key和App Secret,你需要设置授权回调页的地址,现在你就可以使用微博登入接口了。2 社交登录流程

2021-03-24 17:50:33 1123

原创 elasticsearch基本使用

一、docker安装elasticsearch安装elasticsearchdocker pull elasticsearch安装kibanadocker pull kibana新建目录mkdir -p /mydata/elasticsearch/configmkdir -p /mydata/elasticsearch/data添加配置文件echo "http.host: 0.0.0.0">>/mydata/elasticsearch/config/ela

2021-03-20 14:06:42 118

原创 RabbitMq

RabbitMq安装RabbitMqdocker pull rabbitmq:3.8.9-management自动配置连接配置spring.rabbitmq.host=10.138.227.212spring.rabbitmq.username=guestspring.rabbitmq.password=guestRabbitAutoConfiguration自动配置了连接工厂ConnectionFactoryRabbitProperties:封装了RabbitMQ的配

2021-03-12 08:49:38 58

原创 缓存

搭建基本环境导入数据文件。创建department和employee表创建JavaBean封装数据整合Mybatis操作数据库配置数据源信息使用注解版的Mybatis@MapperScan指定需要扫描的mapper接口所在的包开启缓存开启基于注解的缓存标注缓存注解即可@SpringBootApplication@MapperScan("com.whut.mapper")@EnableCachingpublic class SpringBootCache

2021-03-12 08:48:46 69

原创 配置嵌入式Servlet容器

SpringBoot默认使用TomCat作为嵌入式的Servlet容器如何定制和修改Servlet容器的相关配置修改和Servlet有关的配置(ServerProperties)//通用的Servlet容器设置server.xxx=//Tomcat的设置server.tomcat.xxx=编写一个WebServerFactoryCustomizer@Bean public WebServerFactoryCustomizer webServerFactoryCustomiz

2021-03-12 08:46:11 118

原创 Docker安装及基本使用

核心概念docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统上)docker客户端(Client):连接docker主机进行操作docker仓库(Registry):用来保存各种打包好的软件镜像docker镜像(Images):软件打包好的镜像,放在docker仓库中docker容器(Container):镜像启动后的实例称为一个容器,容器是独立运行的一个或一组应用使用Docker的步骤安装Docker去Docker仓库中找到这个软件对应的镜像使

2021-03-12 08:44:40 72

原创 数据访问

整合基本JDBC与数据源导入jar包坐标<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency> <groupId>mysql</groupId> &lt

2021-03-12 08:41:53 90

原创 SpringBoot启动配置原理

几个重要的事件回调机制配置在META-INF/spring.factories下ApplicationContextInitializerSpringApplicationRunListener只需要放在ioc容器中ApplicationRunnerCommandLineRunner启动流程创建SpringApplication对象public SpringApplication(ResourceLoader resourceLoader, Class<?>

2021-03-12 08:40:40 152

原创 错误处理机制

SpringBoot默认的错误处理机制原理给容器中添加了一下组件DefaultErrorAttributes:帮我们分享页面信息 @Deprecatedpublic Map<String, Object> getErrorAttributes(WebRequest webRequest, boolean includeStackTrace) { Map<String, Object> errorAttributes = new LinkedHashMap

2021-03-01 13:22:33 542

原创 SpringBoot案例

定位首页@Configurationpublic class MyConfiguration implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { //浏览器发送请求,请求来到templates下的首页 registry.addViewController("/").setViewName("inde

2021-03-01 13:21:19 92

原创 Web开发

SpringBoot对静态资源的映射规则@ConfigurationProperties( prefix = "spring.resources", ignoreUnknownFields = false)public class ResourceProperties { //可以设置和静态资源有关的参数,比如缓存时间public void addResourceHandlers(ResourceHandlerRegistry registry) { if (!th

2021-03-01 13:19:31 67

原创 日志框架

日志框架System.out.println("");将关键数据打印在控制台;去掉?写在一个文件?框架来记录系统的一些运行时的信息;日志框架;logging.jar;高大上的几个功能?异步模式?自动归档?logging-good.jar将以前的框架卸下来?换上新的框架,重新修改之前相关的API,logging-perfect.jarJDBC-数据库驱动写一个统一的接口层;日志门面(日志的一个抽象层),logging-abstract.jar给项目中导入具体的日志实现就行了

2021-03-01 13:17:51 78

原创 SpringBoot配置文件

Spring Boot使用一个全局的配置文件,配置文件名是固定的;application.propertiesapplication.yml配置文件的作用:修改Spring Boot自动配置的默认值;Spring Boot在底层都配置好了YAML(Ain’t Markup Language)标记语言:以前的配置文件;大多都是使用的是xxx.xml文件YAML:以数据为中心,比json、xml等更合适做配置文件YAML:配置例子server: port: 8081XML

2021-03-01 13:15:52 267

原创 SpringBoot快速入门

导入SpringBoot相关依赖<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.3.RELEASE</version> <relativePath/> <!-- lookup parent

2021-03-01 13:14:16 72

原创 Stream消息驱动

案例1. 服务端pom.xml<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <

2021-02-07 21:38:07 71

原创 Gateway网关

网关路由的配置在配置文件yml中配置spring: application: name: cloud-gateway cloud: gateway: routes: - id: payment_routh # 路由的ID,没有固定规则但要求唯一,建议配合服务名 uri: http://localhost:8001 # 匹配后提供服务的路由地址 predicates

2021-02-07 21:36:18 140

原创 订单/库存/账户微服务案例

1. 订单/库存/账户业务数据库准备业务说明创建三个微服务。当用户下单时,会在订单服务中创建一个订单,然后通过远程调用库存服务来扣减下单商品的库存;再通过远程调用账户服务来扣减用户账户里面的余额;最后在订单服务修改订单状态为已完成。创建业务数据库seata_order:存储订单的数据库seata_storage:存储库存的数据库seata_account:存储账户信息的数据库 CREATE DATABASE seata_order; CREATE DATABASE seat

2021-01-26 21:30:25 1347 2

原创 Sentinel:分布式系统的流量防卫兵

Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。Sentinel 具有以下特征:丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。完备的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。广泛的开源生态:Senti

2021-01-26 21:26:08 212

原创 Nacos服务注册和配置中心

Nacos服务注册和配置中心一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。1 Nacos作为配置中心——基础配置pom.xml<dependencies> <!--nacos-config--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-

2021-01-26 21:22:01 371

原创 Spring Security——基于角色或权限访问控制

基于角色或权限访问控制hasAuthority方法如果当前主体具有指定的权限,则返回true,否则返回false在配置类设置当前访问地址有哪些权限//当前登录用户,只要具有admin权限才可以访问这个路径.antMatchers("/test/index").hasAuthority("admin")在UserDetailsService,把返回User对象设置权限List<GrantedAuthority> role = AuthorityUtils.commaSep

2021-01-20 09:08:51 1005 1

原创 Spring Security——用户认证

两个重要的接口UserDetailsService接口查询数据库用户名和密码创建类继承UsernamePasswordAuthenticationFilter,重写三个方法创建类实现UserDetailsService,编写查询数据库过程,返回User对象,这个User对象是安全框架提供的对象PasswordEncode接口数据加密的接口,用于返回User对象里面的密码加密设置登录的用户名和密码通过配置文件spring.security.user.name=fyspr

2021-01-20 09:05:09 127

原创 注解开发

一对一查询(查询所有账户及其所属用户)使用注解配置在SqlMapConfig.xml配置<mappers> <package name="dao"/></mappers>编写AccountUserDao接口public interface AccountUserDao { @Select("select * from account") @Results(id = "accountUserMap", value = {

2021-01-19 18:42:19 63

原创 缓存

基本概念什么是缓存存在于内存中的临时数据为什么使用缓存减少和数据库的交互次数,提高执行效率什么样的数据能使用缓存,什么样的数据不能使用适用于缓存经常查询并且不经常改变数据的正确与否对最终结果的影响不大不适用于缓存经常改变的数据数据的正确与否对最终结果的影响很大例如:商品的库存,银行的汇率,股市的牌价Mybatis中的一级缓存和二级缓存一级缓存、它指的是Mybatis中SqlSession对象的缓存。当我们执行查询之后,查询的结果会同时存入SqlSess

2021-01-19 18:35:59 57

原创 延迟加载和立即加载

基本概念问题:在一对多中,当我们有一个用户,它有100个用户在查询用户的时候,要不要把关联的账户查出来?在查询账户的时候,要不要把关联的用户查出来什么是延迟加载在真正使用数据时才发起查询,不用的时候不查询。按需加载(懒加载)什么是立即加载不管用不用,只要一调用方法,马上发起查询对应的四种关系表中一对多,多对多:通常情况下我们都是采用延迟加载多对一,一对一:通常情况下我们都是采用立即加载一对一延迟加载在主配置文件SqlMapConfig.xml中添加设置

2021-01-19 18:34:08 226 1

原创 Linux下Nacos安装及集群搭建

1 .Nacos下载安装下载https://github.com/alibaba/nacos/releases/tag/1.1.4解压tar -zxvf nacos-server-1.1.4.tar.gz改写Linux里面的nacos脚本在nacos/config/application.properties添加spring.datasource.platform=mysqldb.num=1db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_c

2021-01-16 18:32:37 285

原创 nginx安装

安装安装编译工具及库文件yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel安装PCRE下载ftp://ftp.pcre.org/pub/pcre/解压tar -zxvf pcre-8.44.tar.gz进入安装包目录cd pcre-8.44编译安装./configuremake & make install查看pcre版本pcre-config -

2021-01-16 18:24:51 96

原创 seata安装

使用版本seata-1.0.0、mysql-8.0.22安装步骤下载https://github.com/seata/seata/releases/建立数据库seata建立表-- the table to store GlobalSession dataCREATE TABLE IF NOT EXISTS `global_table`( `xid` VARCHAR(128) NOT NULL, `transaction_id`

2021-01-16 18:23:43 549

原创 Mybatis多表查询

步骤建立两张表:用户表。账户表让用户表和账户表之间具备一对多的关系:需要使用外键在账户表中添加建立两个实体类:用户实体类和账户实体类让用户和账户的实体类能体现出一对多的关系建立两个配置文件用户配置文件账户配置文件实现配置当我们查询用户时,可以同时得到用户下所包含的账户信息当我们查询账户时,可以同时得到账户的所属用户信息。建立用户表和账户表建立用户表create table mybatisuser( id int(11) not null auto_

2021-01-16 11:39:31 1525

原创 Mybatis连接池

Mybatis连接池提供了三种方式的配置配置的位置:主配置文件SqlMapConfig.xml中的dataSources标签,type属性就是表示采用何种连接池方式type属性的取值POOLED 采用传统的javax.sql.DataSource规范中的连接池,Mybatis中有针对规范的实现UNPOOLED 采用传统的获取连接的方式,虽然也实现了javax.sql.DataSource接口,但是并没有使用池的思想JNDI 采用服务器提供的JNDI技术实现,来获取DataS.

2021-01-16 11:34:42 568 1

原创 Mybatis入门

环境搭建创建maven工程并导入坐标<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://ma

2021-01-12 21:47:11 55

原创 拦截器

拦截器概述SpringMVC框架中的拦截器用于对处理器进行预处理和后处理的技术。可以定义拦截器链,连接器链就是将拦截器按着一定的顺序结成一条链,在访问被拦截的方法时,拦截器链中的拦截器会按着定义的顺序执行。拦截器和过滤器的功能比较类似,有区别过滤器是Servlet规范的一部分,任何框架都可以使用过滤器技术。拦截器是SpringMVC框架独有的。过滤器配置了/*,可以拦截任何资源。拦截器只会对控制器中的方法进行拦截。拦截器也是AOP思想的一种实现方式想要自定义拦截器,需要实现Han

2021-01-09 17:20:17 252

原创 异常处理

自定义异常类在exception包下创建自定义异常类/** * 自定义异常类 */public class MyException extends Exception{ //存储异常信息 private String message; @Override public String getMessage() { return message; } public void setMessage(String message) {

2021-01-09 17:18:48 72

原创 文件上传

原理分析文件上传的必要前提from表单的enctype取值必须是:multipart/from-data。(默认值是:application/x-www-from-urlencoded);enctype:是表单请求正文的类型。method属性取值必须是Post提供一个文件选择域<input type=“file”/>文件上传的原理分析传统方式导入jar包<dependency> <groupId>commons-fileupload&

2021-01-09 12:15:12 99

原创 ModelAndView

返回值是String类型jsp中创建超链接<a href="response/testString">测试返回值是String类型</a>控制器类中添加测试方法@Controller@RequestMapping("/response")public class ResponseController { @RequestMapping("/testString") public String testString(Model model){

2021-01-09 12:12:54 255

基于MPC的永磁同步电机Matlab仿真

1. 包含单电流环MPC仿真(仅电流环使用MPC策略,速度环使用PI调节器)、速度环和电流环MPC仿真(速度环和电流环均使用MPC策略,非级联)。 2. 仿真为.m文件,非simulink模型,永磁同步电机使用数学模型代替。 3. 文章参考http://t.csdn.cn/CTlyu

2022-06-09

基于SVPWM的永磁同步电机Matlab双闭环仿真,包含死区补偿。

基于FOC的永磁同步电机双闭环控制系统Matlab/Simulink仿真,使用SVPWM方法进行调制。针对死区效应,进行死区补偿。

2022-05-26

基于RabbitMQ+Redis的分布式事务框架

使用RabbitMQ和Redis实现的分布式事务框架。主要涉及AOP思想、多线程,使用注解实现事务的提交和回滚。内含基于Spring Cloud的使用案例。

2022-05-10

使用RabbitMQ+延迟队列实现分布式事务的最终一致性方案

使用RabbitMQ+延迟队列实现分布式事务的最终一致性方案,demo以典型的订单+库存系统为例

2021-04-13

cookie+session实现的单点登录案例

cookie+session实现的单点登录案例,同时整合了第三方(微博)登录。适用于学习单点登录流程、接入第三方登录的流程。

2021-04-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除