JAVA
文章平均质量分 69
加班狂魔
男的,程序员
展开
-
ffmpeg+nginx实现rtsp协议摄像头web端播放
http://nginx服务器IP:配置代理的端口(server中定义的)/location定义的代理地址/ffmpeg中自定义的流的名称.m3u8。如果你使用的是海康威视得摄像头构成一般为rtsp://摄像头用户名:密码@摄像头IP:摄像头端口/Streaming/Channels/摄像头标识。这些资源已经上传需要的可以自己下载,这个压缩包里的nginx已经安装好所需模块,解压即可使用。VLC->媒体->打开媒体串流。原创 2023-08-07 15:29:22 · 2089 阅读 · 2 评论 -
【DataX】实现数据从postgresql迁移至tdenginue
这里需要注意一点,alibaba/datax 这个仓库里面只有td2.0的writer,要写入td3.0的话需要去taosdata/datax这个仓库里拉代码再编译tdengine30writer,放入到datax plugin目录下。执行DataX需要java 1.8,以及python环境,python支持2.0和3.0,我这里使用的是python3.6。python datax.py 编写的job文件.json。编写job文件,后缀为json。原创 2023-07-20 15:04:58 · 366 阅读 · 0 评论 -
【jar包加密】基于字节码的jar包加密
使用开源的基于字节码的jar包混淆加密工具class-winter项目地址参数是否必填说明示例是指定要加密的jar/war文件注:当使用maven插件进行自动加密时,此参数非必填,不填则自动获取。注:当使用maven插件进行自动加密时,可结合maven相关占位符进行相对定位。如:${project.basedir}/../../your-project.jar是通过前缀匹配的形式定位要加密的class注:多个通过逗号分割。cca(依托于includePrefix)否。原创 2023-07-06 10:46:13 · 766 阅读 · 0 评论 -
SpringBoot上传文件异常 org.springframework.web.multipart.MultipartException
Failedtoparsemultipartservletrequest;nestedexceptionisjava.io.IOException:Thetemporaryuploadlocation[/tmp/tomcat.118932910164342315.9180/work/Tomcat/localhost/ROOT]isnotvalid原创 2023-06-16 17:00:11 · 1371 阅读 · 0 评论 -
深入了解Java中的List集合
Java中的List集合是一种常用的数据结构,它提供了一种有序、可重复的元素集合。在开发中,我们经常需要使用List来存储和操作一组数据。本文将深入介绍Java中List集合的特性、常见的操作方法以及一些使用技巧,帮助读者更好地理解和应用List集合。原创 2023-06-01 14:45:36 · 2490 阅读 · 0 评论 -
简单的一键部署SpringBootAPP
最近客户有个新需求,想要一键发布。本着简单(好糊弄)的原则,用bat给弄了一部分,中间坑挺多的,特此记录一下。首先先上源码::取得安装目录set installDir=%cd%set installDir=%installDir%\::安装JDKset JAVA_HOME=%installDir%jdkset PATH=%PATH%;%%JAVA_HOME%%\bin;%%JAVA_HOME%%\...原创 2018-05-25 13:23:55 · 1628 阅读 · 0 评论 -
相对路径遍历Relative Path Traversal
http://cwe.mitre.org/data/definitions/23.html 这个里面关于这个问题描述的很清楚。为了防止利用诸如下列网址的攻击 http://example.com.br/get-files?file=report.pdf http://example.com.br/get-files?file=../../../../etc/passwd ...原创 2018-07-24 10:25:01 · 7646 阅读 · 0 评论 -
响应式开发初探。基于ProjectReactor的响应式服务
响应式开发初探前言响应式编程与传统BIO响应式编程DEMO引入依赖响应式的Mongodb客户端响应式Web支持完整的pom文件编写entity编写controllerFluxMono编写Repository编写service运行测试后记前言响应式编程与传统BIO传统的 BIO,是线程将数据写入 Connection 之后,当前线程进入 Block 状态,直到响应返回,之后接着做响应返回后的动作。NIO 则是线程将数据写入 Connection 之后,将响应返回后需要做的事情以及参数缓存到一个地方之后,原创 2021-04-16 18:08:25 · 176 阅读 · 0 评论 -
no matching manifest for linux/arm64/v8 in the manifest list entries
no matching manifest for linux/arm64/v8 in the manifest list entriesdocker构建镜像时出现该问题的话,可能是操作系统内核版本不匹配使用上述内核版本时会报该错误。这个时候将openjdk:8跟换为arm64v8/openjdk:8就可以解决该问题了...原创 2021-03-24 14:04:00 · 8049 阅读 · 1 评论 -
【异常】expected at least 1 bean which qualifies as autowire candidate for this depende
springboot初学者经常会出现下面的问题,expected at least 1 bean which qualifies as autowire candidate for this depende2020-10-16 10:44:50.481 INFO 5404 — [ main] com.rest.app.ServletInitializer : Starting ServletInitializer v0.0.1-SNAPSHOT on DESKTO原创 2020-10-16 10:06:53 · 37818 阅读 · 2 评论 -
Struts2中出现 Dispatcher initialization failed错误
在尝试搭建Struts2框架的时候出现该以下问题Dispatcher initialization failedUnable to load configuration. - bean - jar:file:/D:/Workspaces/MyEclipse%208.6/.metadata/.me_tcat/webapps/demo/WEB-INF/lib/struts2-gxp-p原创 2015-08-24 10:38:42 · 16901 阅读 · 5 评论 -
does not match one of the registered values异常原因及对应方式
OAuth Errorerror="invalid_grant", error_description="Invalid redirect: http://localhost:8082/login does not match one of the registered values."异常处理原创 2020-05-20 10:45:21 · 11554 阅读 · 6 评论 -
单例模式看这一篇就够了
为什么要使用单例模式对于频繁使用的对象,可以省略创建对象所花费的时间,这对于那些重量级对象而言,是非常可观的一笔系统开销。由于new操作的次数减少,所以系统内存的使用评率也会降低,这将减少GC压力,缩短GC停顿时间。懒汉模式与饿汉模式饿汉模式及代码实现饿汉模式通过static修饰符修饰,以及构造函数的私有化实现单例模式public class Singleton { pri...原创 2020-01-15 23:10:35 · 284 阅读 · 0 评论 -
文件编码鉴定小工具
juniversalchardet开源于github应用的话首先添加依赖 <dependency> <groupId>com.github.albfernandez</groupId> <artifactId>juniversalchardet</artifactId&g...原创 2018-12-27 12:55:40 · 553 阅读 · 0 评论 -
本地.m3u8播放器实现
首先,本播放器是基于开源代码https://github.com/caprica/vlcj-player追加了m3u8播放功能核心播放代码: m3u8OpenAction = new StandardAction("Open m3u8") { @Override public void actionPerformed(ActionEvent e) {...原创 2019-06-04 17:32:52 · 18964 阅读 · 2 评论 -
echarts图标宽度高度自适应
echartsAPI提供的有resize()方法可以达到自适应的效果。我们只需要监听容器的resize事件并调用resize方法即可,代码如下(注意写在setOption后面)myChart.setOption(option);window.addEventListener('resize', function () {myChart.resize();});...原创 2020-06-11 11:01:01 · 1577 阅读 · 0 评论 -
sigar取得进程信息
首先先上代码 SigerVO vo = new SigerVO(); try { Sigar sigar = new Sigar(); for (Long pid : sigar.getProcList()) { try { Ps ps = new Ps(); List<String> list = ps.getInfo(sigar, pid); ...原创 2019-05-22 15:02:20 · 1951 阅读 · 4 评论 -
富文本编辑器XHEditor实现
首先下载XHEditor,并解压,将文件放入工程,记得要在同一个目录其次,引用XHEditor的JS文件在页面上构建一个文本域的DOM对象 图文详情: 在该页面的ONLOAD方法中,初始化该文本编辑器,注意ID要原创 2017-07-18 15:11:02 · 380 阅读 · 0 评论 -
window.showModalDialog不兼容解决办法
1.传值的解决办法1、直接设置父窗口的DOM对象的值。window.opener.document.getElementById(“parentWindowControlId”).value = "数据1window.opener.document.getElementById(“parentWindowControlId”).val原创 2017-08-24 15:58:34 · 12904 阅读 · 0 评论 -
Quartz向JOB传递参数
1.在定义JOB的时候设定JobDataMap对象 job.getJobDataMap().put("param1", "value1");2.在Task里面取得取得JobDataMap对象 context.getJobDetail().getJobDataMap().get("param1");原创 2017-09-06 11:35:29 · 6649 阅读 · 0 评论 -
Quartz延时任务实现
业务场景:设定好的优惠卷在开始的时候推送给合适的用户延时任务控件:Quartz框架:SpringMVC + Spring + MyBatis1.Quartz引入 所需jar包:quartz-openejb-shade-2.2.1.jar2.Task类实现package com.its.modules.task;import java.text.Pars原创 2017-09-05 16:27:18 · 5749 阅读 · 5 评论 -
URLClassLoader中出现的can not cast to异常
在使用URLClassLoader进行远程类加载的时候,有时候强转的时候发现明明使用的是同一个类,也会报强转失败,类似于com.abc.demo.ClassA can not cast to com.abc.demo.ClassA。原创 2022-10-08 16:36:40 · 624 阅读 · 0 评论 -
SPRING MVC 模式下base64编码格式实现多图片上传,删除
前提: 在H5多图上传的场合,file框的filelist属性是不可编辑的,所以,无法通过修正filelist属性来达到将上传的多图中某一张图片删除。那么就可以使用另一种方式来达到目的即:base64编码格式。背景知识: Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。Ba原创 2017-07-18 14:50:52 · 3651 阅读 · 0 评论 -
SpringBoot ajax文件下载实现
实现Ajax文件下载可以从后台直接返回一个Base64编码格式的文件,在前台用JS的atob()方法直接转为Blob格式的数据,然后创建一个A标签,来下载它。前台 JSfunction doAjaxDownload() { $.ajax({ type : "post", url : "/Sample/ajaxDownload", da...原创 2018-11-14 10:04:40 · 8638 阅读 · 6 评论 -
使用JMeter进行MQTT压力测试
准备工作MQTT插件JMeter本身没有MQTT的压力测试功能需要下载插件进行压力测试下载地址将下载好的mqtt-xmeter-2.0.2-jar-with-dependencies.jar放在\lib\ext下面重新启动就OK了编写脚本创建线程组(每一个线程组就是一个MQTT客户端)创建链接由于链接每个线程只用创建一次,所以需要添加逻辑控制器 - 仅一次控制器在仅一次控制器下方添加逻辑取样器 MQTTConnect填写链接相关属性在ClientId这里如果需要con原创 2021-03-31 14:46:35 · 8436 阅读 · 15 评论 -
JavaNio监听火狐Cookies变化
1. 火狐Cookies的位置火狐cookies默认地址为%AppData%/Roaming/Mozilla/Firefox/Profiles/随机字符串.default下面2.监听实现源码import java.io.IOException;import java.nio.file.*;/** * 监听火狐Cookies变化 * * @author: Liuhl * @date: 2020/11/16 0016 12:57 * @description: */publi原创 2020-11-20 10:33:45 · 212 阅读 · 0 评论 -
一种限流算法-令牌桶算法
业务背景一般做接口限流主要是为了应对突发流量,避免突发流量拖垮服务。如下面一些场景就有可能发生突发流量微博热搜恶意刷单恶意爬虫促销活动令牌桶算法我们用一个桶来盛放令牌,假设桶的上限为100个,令牌生成速度为10个/s。超过100个则丢弃多余的令牌。这样当接口请求突然激增时,前100个可以正常请求,后续则以每秒10个可以正常请求。实现用队列保存令牌,用ScheduledThreadPoolExecutor来定时放令牌一般使用google提供的guava工具包即可 <depend原创 2020-07-31 09:25:01 · 211 阅读 · 0 评论 -
经常使用HashMap你真的了解它么
HashMapHashMap的存储结构普通节点红黑树节点节点数组总结HashMap的存操作计算key值hash为什么要右移16位为什么要原hash与右移过的hash位异或运算判断应该存放在桶内哪个位置为什么要与运算将该键值对放在对应位置链表的末尾判断该链表长度大于等于8时,将该链表转化为红黑树判断是否需要扩容HashMap的存储结构说到这里大家都能脱口而出存储的是键值对,可是键值对是怎么存储的很多人都不太了解。我们需要对HashMap内部三种数据结构进行了解。普通节点(链表)红黑树节点节点数组原创 2020-05-14 11:33:01 · 1255 阅读 · 5 评论 -
JVM学习(二) JIT即时编译器
JIT即时编译器JVM程序执行流程执行流程图编译器和解释器的协调工作流程什么是JIT热点代码热点检测方式方法调用计数器回边计数器JIT使用解释器与编译器并存的架构编译的时间开销编译的空间开销JIT的两种实现编译过程JIT优化公共子表达式的消除方法内联逃逸分析对象的栈上内存分配总结标量替换同步锁消除JVM程序执行流程了解JIT我们首先要先知道程序执行的流程执行流程图Java编译成字节码、动态编译和解释为机器码的过程分析:编译器和解释器的协调工作流程什么是JIT在部分商用虚拟机中(如HotSp原创 2020-05-13 13:50:12 · 742 阅读 · 0 评论 -
JVM学习(一) 基本常识和JVM架构理解
为什么使用JVM上学的时候我们都知道JAVA其中一个特性就是可移植性。而JAVA之所以具有该特性就是因为JVM的存在。JAVA平时我们编译时是首先生成的字节码class文件,再通过JVM虚拟机生成CPU可直接读取的机器码。机器码是由电脑CPU直接读取的操作指令,速度快,但一般从业人员无法直接编写字节码是一种中间状态的二进制码,需要直译器进行转译后才能成为机器码而JAVA程序只要编译一次就可以在不同的操作系统上运行也是因为JVM虚拟机屏蔽了操作系统之间的差异。JDK、JRE、JVM之间的关系原创 2020-05-12 17:39:23 · 221 阅读 · 0 评论 -
了解String.substring的原理
文章目录1.首先我们要了解String对象放入常量池的时机2.substring返回时究竟发生了什么操作JDK1.6中的substringJDK1.6中的substring中产生的问题JDK1.7中的substring1.首先我们要了解String对象放入常量池的时机String只会在一种情况下放入常量池,那就是用""修饰时。例如String str1 = "abc";这个时候会把字符串"abc"放入常量池。又或者当编译器可以确定变量的值时,如下:String str1 = "abc" +原创 2020-05-11 11:09:58 · 711 阅读 · 0 评论