自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (4)
  • 问答 (2)
  • 收藏
  • 关注

原创 使用java+ffmpeg+nginx-http-flv将海康rtsp视频流转http-flv,使Web可以无插件播放

最近公司项目需要将海康的预览和回放流在web上播放,由于rtmp年底flash不支持播放了,rtsp在Web不能直接播放,所以现在的思路是通过ffmpeg将rtsp流转为http-flv流,以推流的形式推给前端,前端采用flv.js播放。首先安装ffmpeg,安装教程百度,谷歌一大堆。配置好ffmpeg的环境变量。安装已经编译好的nginx+nginx-http-flv服务器。博主有已经搭建好的nginx需要的自行下载。下载解压nginx后,启动nginx。ffmpeg命令:转码命令

2020-07-02 10:21:27 5857 9

原创 MySQL给表增加字段的时候出现Table is full的报错处理

MySQL给表增加字段的时候出现Table is full的报错处理文章目录MySQL给表增加字段的时候出现Table is full的报错处理一、问题描述二、错误原因溯源复现错误分析错误修复总结一、问题描述今日在发布服务时,在服务Init阶段出现的报错,错误信息如下:org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL via JDBC Statement at org.hibernate.to

2021-12-24 10:57:30 1387

原创 springboot通过已有的server.key,crt,ca证书生成jks文件并开启HTTPS 并启动双向认证+动态加载信任库

这里写目录标题一级目录二级目录三级目录一级目录二级目录三级目录

2021-11-17 15:50:38 1939 1

原创 springboot+geoIp2,获得接口调用者的IP,并得到该IP的详细地址,洲,国家。

背景:获得接口访问者的IP,并解析该IP所在的大洲和国家。需要下载geoIp的库,在官网注册下载或者CSDN也有资源。直接上代码:pom:下面是geoip2的pom。 <dependency> <groupId>com.maxmind.geoip2</groupId> <artifactId>geoip2</artifactId> <versio

2021-10-27 15:27:44 844

原创 基于springboot+sharding jdbc +spring data jpa进行分表(多表分表)

基于springboot+sharding jdbc +spring data jpa进行分表背景博主负责的IOT PC 租赁项目由于在设计阶段,因产品说不需要支持多租户的模式,所以在代码设计中,没有考虑这方面,突然前段时间,gou产品说需要做此模式。于是又要进行预研工作。设计思路本来想法,是通过数据表字段的方式作为数据伪隔离(所有操作,都增加字段条件),这样的话,可以减少代码修改,但是又考虑到该项目架构较为简单,数据存储方面只用到了mysql和redis, 没有用时序数据库,或mongodb用来存

2021-09-30 10:44:51 1259

原创 java aqs总结

文章目录前言一、什么是AQS二、AQS的基本结构1.内部子类node1.1 节点状态的值1.2 父类的主要属性1.3 小结三、从ReentrantLock学习AQS1. ReentrantLock中的内部类含义2. ReentrantLock非公平锁的加锁流程3. ReentrantLock公平锁加锁流程4. ReentrantLock解锁流程5. 获取锁失败,是如何加入等待队列的呢?6. 小节四、总结前言这篇文章描述的是关于java Aqs框架的整体个人总结,从数据结构,lock接口的角度出发一、什

2021-08-24 11:43:10 151

原创 使用openfeign调用外部接口,设置token不生效的问题

背景:来了一个需求,需要从其他平台拉取最新数据,而拉取数据的方式 是通过feign调用的方式,最后将拉取来的数据入库到自己平台的数据库,页面通过restful接口查询数据。整体逻辑大致这样,需求简单吧?的确简单!于是我在原产品代码上进行开发了,到了自测阶段,自以为很快就能测试通过。。。但是,我没想到啊,踩到坑了。事情起因是这样的,页面在访问自己平台的时候会有一个token,而我在调用其他平台的api的时候,也有一个token,而且token名称都叫token(应该懂这句话的意思吧?),这个时候,前端的

2021-08-09 16:46:37 1589

原创 关于spring事务失效的场景。

首先 参考 这个知乎文章:https://zhuanlan.zhihu.com/p/101396825这篇文章涵盖了所有事务失效的几个原因,但是其中的第四点,这篇博文说错了,接下来,以一段测试代码证明:如图所示的代码中,断点走到test7中的第一个save,数据库中并执行插入test6中的save方法(即数据库没产生新的记录),当断点走完test7方法,数据库才插入一条新记录,这就说明,该博文的第四点的第二种情况说明错误,此时 ,事务是生效的。接下来,将test7的事务注解中的propagat

2021-08-04 10:39:20 218 1

原创 阿里云、华为云、亚马逊IOT平台的SDK功能差异比较(Java)

aliyun SDK:1.功能支持协议:mqtt 认证: 支持设备证书方式对设备进行身份认证。 支持使用ProductKey、DeviceName、DeviceSecret来认证设备。 日志: 支持控制SDK内部日志输出。 基础能力: 发布、订阅、取消订阅、RRPC、订阅下行。 物模型: 实现属性上报(如上报设备状态)、事件上报(上报设备异常或错误)和服务调用(通过云端调用设备提供的服务)。 通过物模型过滤属性(事件,服务),进行上报(调用)。 配置

2021-08-02 16:05:30 1319

原创 spring获取bean的方式

一、通过@Autowired和@Resource的方式获取bean。例如:@Resourceprivate ApplicationContext applicationContext;

2021-06-21 12:19:51 2400

原创 使用java aop实现自定义注解

直接干代码:注解类:@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface SystemLog {}quem

2021-06-07 11:47:08 420

原创 知识点小记

1.spring中@Configuration和@Component的区别共同点:都可以用于标记某个类是一个配置类。不同点:Configuration是通过CGL动态代理来代理注解的类,生成当前对象的子类Class,并对类中的方法进行拦截,第二次调用时,直接从BeanFactory中直接获取,所以得到的都是同一个配置类。而Component标注的类不会被CGL代理,而是每次在使用的时候,重新创建一个对象。可以理解为:单例和多例。2.如何在spring容器加载完成后启动某个方法或者代码块 .

2021-05-14 14:58:31 99 1

原创 JAVA jdk SPI调用其他jar包的方法

首先什么是spi?参考:https://houbb.github.io/2018/08/02/spi-03-java-source-code网上对于spi的实际案例都是在同工程下进行调用,根本没啥实际意义,最近在学习spi,想到了如何调用其它jar包的接口实现方法呢?1.首先在甲jar包中,定义一个接口:接口代码如下:2.在乙jar包中也要创建同样的接口,注意,要接口名和包名一致:然后写个类实现接口方法:3.在src\main\resources\META-INF\s

2021-05-11 11:42:32 1462 4

原创 jetlinks中MQTT协议从认证到调用自定义协议包中的编解码器的逻辑分析

jetlinks中MQTT协议从认证到调用自定义协议包中的编解码器的逻辑分析认证逻辑使用MQTTX工具连接的时候,会先进入如下图所示的方法中:这一块的代码逻辑比较简单,就是从之前发布的协议包中通过authenticate方法进行认证,最后认证结果进行下一步处理:调用自定义协议包中的编解码器在客户端发送数据到平台的时候,首先会进入如下代码:走完这块代码后,会进入如图所示方法:然而这两个图片中的方法并没有显示调用,它是怎么一个调用链呢?这根Reactor响应式编程(发布/订阅)有关,如下

2021-04-21 12:24:48 1873

原创 jetLinks协议发布流程(源码)解读

这里写自定义目录标题jetLinks协议发布流程(源码)解读协议开发流程协议生效流程协议发布自动发布已上传的协议主动或重新发布已上传的协议jetLinks协议发布流程(源码)解读jetlinks是免费的开源物联网框架,这里不做过多介绍,源码地址:https://github.com/jetlinks协议开发流程协议开发流程有官方说明和实例,后端同学下下来就能看懂,地址:http://doc.jetlinks.cn/协议生效流程首先需将自定义协议包发布到jetlinks中,具体发布流程,在上述地址

2021-04-20 17:43:29 6800 7

原创 Maven错误org.springframework.boot:spring-boot-maven-plugin:<unknown>

错误如图:这种错误一般是idea的maven配置路径有关,需要在file->settings->Maven中配置好相关maven路径,即可解决。如下图:

2021-04-07 14:51:58 3022

原创 jvm垃圾收集

jvm垃圾收集今天在想一个问题,如果某个人问我介绍一下JVM垃圾收集机制,我该如何介绍?大致思路结合JVM垃圾收集的大致方向,我想会以这么个顺序进行介绍:JVM的默认垃圾收集器,G1收集器,G1的特点。判断对象是否进行垃圾回收的方法垃圾收集的算法以及垃圾收集器使用的算法。JVM的默认垃圾收集器,G1收集器,G1的特点JVM默认的垃圾收集器为Serial Old 与 Parallel Scavenge 配合使用。使用java -XX:+PrintCommandLineFlags -vers

2021-03-06 14:00:13 138

原创 分布式事务的解决方案

这里写自定义目录标题解决方案的种类强一致性事务2PC提交3PC提交补偿性事务TCC最终一致性本地消息事务消息最大努力通知解决方案的种类分布式解决方案,从大的角度来说分为强一致性事务,补偿性事务,最终一致性事务。强一致性事务强一致性事务分为2PC,和3PC提交,这两种方案都实现与数据库层面,属于强一致性事务。2PC提交此方案引入协调者来协调管理各参与者的提交和回滚,共分为两个阶段,准备(投票)阶段和提交阶段。准备阶段协调者会给各参与者发送准备命令,你可以把准备命令理解成除了提交事务之外啥事都做完

2021-03-04 21:50:21 129 1

原创 Zookeeper,Eureka,Consul,Nacos的区别比较

CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)分区容忍性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意..

2021-03-04 10:36:54 2816 1

转载 Mysql索引失效

1、or的使用(并不是所有的or条件都是失效的)account_name 我创建了索引,查询也的确走了索引,那么来试试or查询一让走了索引,(所以不能轻易的说使用or索引就失效了)当我将or两边的查询条件换了,account_id并没有创建索引,此时查询没有走索引,走的全表扫描。总结:or条件2边都创建索引,他还是走索引的,就如我第二张图所示,只有2边有一个没有创建索引,才会全表扫描。2、多列索引如图:创建了多列索引, (注意:第一列是account_id)..

2021-02-22 17:03:53 925

原创 记一次OOM的排查解决步骤。

在很久之前的项目上线出现了一次OOM,当时凭着jmap和VisualVM。定位了问题并解决问题。但是因为时间久远,怕以后忘记定位这种堆内存溢出的定位步骤,所以今天自己造了一个OOM,来复习并记录定位步骤。首先制造OOM的代码如下:@Testpublic void test() { List<DvcDevice> dvcDevices = new ArrayList<>(); while (true) { dvcDevices.add(new

2021-02-04 10:38:00 737

原创 SpringBoot中Rest接口全局异常处理

@Slf4j@RestControllerAdvicepublic class RestExceptionAdvice { @ExceptionHandler(HttpRequestMethodNotSupportedException.class) public Result httpRequestMethodNotSuppertedException(HttpRequestMethodNotSupportedException ex, HttpServletResponse r..

2021-01-26 11:32:20 894

原创 数据结构:链表的熟悉,复制复杂链表

给定一个链表,链表里的每个节点都存在next指针外,还存在一个随机指向其他节点的指针,如何复制一个这样的链表,我觉得这是自己理解最透彻的一个算法,句句代码都有注释,欢迎大家评论不对的地方/** * 复制复杂链表,传入的Node为链表的头结点 * @param head * @return */public Node copyRandomList (Node head) { Node cur = head; // 复制各节点,并将各节点拼接 while (cur !=

2021-01-21 22:24:12 121

原创 java反射异常

今天再用mybatis的时候遇到一个报错,报错日志如下:Caused by: org.apache.ibatis.reflection.ReflectionException: Could not set property 'id' of 'class cn.********.entity.StrategyLog' with value '1347375749591900162' Cause: java.lang.IllegalArgumentException: argument type misma

2021-01-08 10:56:45 613

原创 Command line is too long. Shorten command line for ApiApplication or also for Spring Boot default co

该问题网上有很多解决方法,在自己博客记录下。修改项目下 .idea\workspace.xml,找到标签<component name="PropertiesComponent">, 在标签里加一行<property name="dynamic.classpath" value="true" />

2020-12-31 09:11:38 1618

原创 springboot添加各个环境的yml文件,启动无反应。

如下图所示:增加一套配置文件用以区分不同配置的项目的不同配置。启动主函数后发现控制台打印如下图所示:无其他任何打印结果,我当时以为是线程卡死了,导致没起起来。但是Debug源码 也没发现异常。后来又以为是文件没加载进来导致,导致卡死,预想了各种原因,想了各种方法,最后发现项目其实启动起来了,只是没有打印日志,让我误以为没有启动,所以在logback-spring.xml中添加以下代码即可:最后日志如愿打印:于是乎,我又花了大量时间 踩了一个坑。。。。。。。...

2020-12-10 11:51:42 861

原创 JVM学习(三):虚拟机类加载

类从被加载到虚拟机内存中开始,到卸载出内存未知,它的整个生命周期包括:加载,验证,准备,解析,初始化,使用,卸载7个阶段。 那么什么时候开始类加载呢?类初始化:1.遇到new,getstatic,putstatic或invokestatic这4条字节码指令时,如果类没有进行初始化,就要先初始。2.使用reflect包的方法对类进行反射调用的时候。如果类没有进行初始化,就要先初始化。3.当初始化一个类的时候,发现其父类没有初始化,就要先初始化它的父类。4.当虚拟机启动...

2020-05-28 22:31:10 138

原创 JVM学习 (二):内存分配与回收策略

JVM判断对象已死的方法有:引用计数法:给对象添加一个引用计数器,每当一个对象被应用时就加1,当引用失效时就减一。可达性分析算法:当一个对象到GC Roots没有任何引用链相连时,则证明对象是不可用的。垃圾收集算法:标记-清除算法,标记-整理算法,分代收集算法。System.gc();只是程序员告诉虚拟机我想在此处做垃圾回收,并不一定就会执行垃圾回收。内存分配与回收策略:自动内存管理主要是自动化的解决两个问题:给对象分配内存以及回收分配给对象的内存。1.对象优先在Eden分配

2020-05-27 23:04:16 168

转载 如何保证MQ的高可用性?

1、面试题如何保证消息队列的高可用啊?2、面试官心理分析如果有人问到你MQ的知识,高可用是必问的,因为MQ的缺点,我刚才已经说过了,有好多,导致系统可用性降低,等等。所以只要你用了MQ,接下来问的一些要点肯定就是围绕着MQ的那些缺点怎么来解决了。要是你傻乎乎的就干用了一个MQ,各种问题从来没考虑过,那你就杯具了,面试官对你的印象就是,只会简单实用一些技术,没任何思考,马上对你的印象就不太好了。这样的同学招进来要是做个20k薪资以内的普通小弟还凑合。如果招进来做薪资20多k的高工,那就惨了,.

2020-05-27 22:19:29 1028

原创 JVM学习(一)虚拟机运行时的数据区域和会发生内存溢出异常的区域

运行时数据区域有:程序计数器:它可以看作是当前线程所执行的字节码的行号指示器,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。此内存区域是唯一一个在Java虚拟机规范中没有规定任何有内存溢出异常的区域。Java虚拟机栈:与程序计数器一样,它是线程私有的,它描述的是Java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每个方法从调用到执行完,就对应一个栈帧在虚拟机栈中入栈到出栈的过程。当Java虚拟机栈在扩

2020-05-20 21:26:53 238

原创 约瑟夫环进阶问题

约瑟夫环进阶:2020个数 围成一个圈,从第一个开始,每过三个,删除三个,例:从1开始,删除2,3,4。求出最后剩下的数是多少?代码如下: public static void main(String[] args) { boolean[] arr= showJoseph(2020,4); for(int i=0;i<arr.length;i+...

2020-05-08 16:47:55 220 1

原创 redis里的value值会多空格的原因

今天在工作中遇到一个坑,在代码对redis进行set操作的时候,用desktopManager看时发现set进去的value会多空格,找了好久没找到原因,错误如下图:最后发现是一个很吐血的操作导致的:如上图所示,将显示格式换成Text就可以了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。很吐血。。。。...

2020-04-30 17:17:49 1249 2

原创 Maven多模块聚合不能new package的解决办法。

今天在使用Maven多聚合的时候遇到一个问题,就是右击java目录不能new package操作:后发现是因为没有进行如下操作:需要将java文件夹设置为Sources Root....

2020-03-02 15:18:24 467

原创 Java中常用的几个操作redies的方法。

最近项目中使用了Redis,记录一下这次项目所用的Redis方法,因为该项目使用的redis是一个单独的Jar包,没有使用其他框架,所以就用了Jedis工具包。首先添加Maven依赖。<dependency> <groupId>redis.clients</groupId> <artifactId>jedis<...

2020-02-24 11:14:46 403

原创 springboot+Mybatis定时任务 如何调用Mapper层。

今天在工作中遇到一个问题,在项目中的定时任务调用Mapper层的代码,出现空指针异常。最后在百度和请教前辈的基础上,解决了该问题,接下来做个总结:首页要添加一个Spring的工具类代码如下:public class SpringContextHolder implements ApplicationContextAware { private static Application...

2019-03-06 14:28:54 3171 3

原创 关于BigDecimal数据在录入问题

之前在工作中遇到一个问题,我在入库前的字段是0.345这样的数据字段属性为BigDecimal,入库之后就是0.300这样的数据,自动把数据四舍五入了。该字段的数据类型为numeric(18,6),入库后如下图:由于数据来源于客户数据库,不能对其进行改动,后来经过多种尝试,在代码中将实体类的对应字段改为String,由于该项目我用的是Springboot+Mybatis,又在Mapper....

2019-03-05 14:59:36 1215

原创 关于将Mysql数据库datatime数据传入前台变成时间戳的问题。

今天在工作中发现了一个问题,Mysql数据库datatime数据传入前台会变成时间戳。最后 觉得在前台转型比较好。代码如下:function add0(m){return m&lt;10?'0'+m:m }function format(times){ var time = new Date(times); var y = time.getFullYear(); ...

2019-03-05 14:51:30 2206

netty分享包括PPT和demo

netty分享,包括ppt,demo

2021-04-17

rabbitMq+erlang+延时队列插件完整安装包.7z

rabbitMq+erlang+延时队列插件完整安装包(正确的版本对应)

2021-04-07

NGINX集成nginx-http-flv

nginx+nginx-http-flv,已经编译完成的,配置也已经配置好了,需要的可以下载

2020-07-02

CAD导入epanet工具

用于将cad中的管径导入进epanet中,自动形成管道长度及相应编号。用于将cad中的管径导入进epanet中,自动形成管道长度及相应编号用于将cad中的管径导入进epanet中,自动形成管道长度及相应编号

2019-03-09

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

TA关注的人

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