自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 Postman实现批量发送json请求

最近有一个场景,需要本地批量调用某个接口,从文件中读取每次请求的请求体,实现方法记录一下。

2024-05-28 17:44:16 1433

原创 java.sql.SQLException: Connection has already been closed

问题的原因可能就是出现在这里了,这里会循环遍历连接池中的连接,如果存活,就判断是否超过了配置的removeAbandonedTimeout,如果超过了时间,这个连接就要被干掉。因为spring中配置事务时配置的service开启一个事务,在service中拿到连接开启一个事务,而遍历中一直使用注入的dao去调用方法,其本质就是一直使用一个连接,不会遍历一次执行完重新获取连接,导致该连接超时被tomcat关闭回收。1.removeAbandoned是true,代表的意思是,关闭连接时长大于一定时长的连接。

2023-11-23 11:07:37 1260

原创 redission分布式锁避坑指南

如果再有线程三进来,发现锁已经被释放了,但是线程一还在执行,就会导致并发问题,所以正确的用法是应该判断当前线程是不是锁的持有者,再释放。,也就是说,在A抢到锁之后,即便A的业务出现了堵塞,但是只要没发生一些异常情况,这里的超时施放时间是不起作用的,因为只要不发生异常,内部就会有一个。就会刷新一次锁的过期时间(是一个定时任务),确保A能够执行完成业务,当然,A执行完业务后,会删除刷新有效期的定时任务。// 3. 尝试加锁,最多等待3秒,上锁以后10秒自动解锁。// 1. 最常见的使用方法。

2023-11-03 09:09:05 282

原创 MySQL的Join

Mysql Join操作使用、原理和优化

2022-10-20 14:43:24 20289 2

原创 使用nacos实现简单的动态化线程池

简单实现一个可以调整核心线程数和最大线程数的动态线程池

2022-08-26 14:41:59 1040

原创 初识compileflow工作流

在平时的开发中,我们会经常用到if...else...来做逻辑判断。但是当需要判断的条件太多时,代码中的if...else语句就会相当泛滥,不仅可读性差,而且会把整体逻辑搞得很混乱。这时,工作流引擎技术出现了,可以通过可视化拖拽的方式来绘制流程图、并自动生成业务流程代码,而不用自己写 if else,大幅降低开发成本、非程序员也能用。

2022-08-22 18:10:16 2286

原创 ffmpeg命令分类

1.基本信息查询命令2.录制命令1.ffmpeg录屏命令ffmpeg -f avfoundation -i 1 -r 30 out.yuv-f:指定使用avfoundation采集数据(mac下)-i:指定从哪采集数据,它是一个文件索引号,1是指电脑屏幕-r:指定帧率ctrl+c录制完成,使用ffplay命令播放ffplay -s 2560×1600 -pix_fmt uyvy422 out.yuv-s:指定分辨率-pix_fmt:指定录制时使用的像素..

2020-12-28 11:56:10 1256

原创 ffmpeg用法

1.ffmpeg处理音视频流程2.容器、编码格式和编码器2.1 容器视频文件本身其实是一个容器(container),里面包括了视频和音频,也可能有字幕等其他内容。常见的容器格式有以下几种。一般来说,视频文件的后缀名反映了它的容器格式。MP4 MKV WebM AVI下面的命令查看 FFmpeg 支持的容器。$ ffmpeg -formats2.2 编码格式视频和音频都需要经过编码,才能保存成文件。不同的编码格式(CODEC),有不同的压缩率,会...

2020-12-28 11:53:38 295

原创 视频编解码器是如何工作的

1.是什么?就是用于压缩或解压数字视频的软件或硬件。为什么? 人们需要在有限带宽或存储空间下提高视频的质量。还记得当我们计算每秒 30 帧,每像素 24 bit,分辨率是 480x240 的视频需要多少带宽吗?没有压缩时是 82.944 Mbps。电视或互联网提供 HD/FullHD/4K 只能靠视频编解码器。怎么做? 我们将简单介绍一下主要的技术。2.通用编解码器1.图片分区第一步是将帧分成几个分区,子分区甚至更多。但是为什么呢?**有许多原因,比如,当我们分割图片时,我们可以..

2020-12-28 11:48:54 376

原创 视频编码过程中用到的一些概念

1.视频根据人眼视觉暂留原理,每秒超过 24 帧的图像变化看上去是平滑连续的,这样的连续画面叫视频。2.分辨率分辨率是以横向和纵向的像素数量来衡量的,表示平面图像的精细程度。视频精细程度并不只取决于视频分辨率,还取决于屏幕分辨率。1080P 的 P 指 Progressive scan(逐行扫描),即垂直方向像素点,也就是 "高",所以 1920X1080 叫 1080P, 不叫 1920P。当 720P 的视频在 1080P 屏幕上播放时,需要将图像放大,放大操作也叫上采样。.

2020-12-28 11:39:34 793

原创 FFMPEG开发环境搭建

1.下载FFMPEG库和源码http://www.ffmpeg.org/对Static、Shared、Dev几个目录作下说明:1. Static:此目录里面主要是几个不依赖其他dll的可执行文件ffmpeg.exe、ffplay.exe、ffprobe.exeffmpeg.exe —— 用于转码的应用程序ffplay.exe —— 用于播放的应用程序ffprobe.exe —— 用于查看文件格式的应用程序2. Shared:动态库dll,以及依赖dll的可执行文件3. .

2020-08-05 11:06:43 429

原创 ffmpeg命令分类

1.视频转码入门知识可以参考雷霄骅博士的入门系列教程:https://blog.csdn.net/leixiaohua1020/article/details/188937692.ffmpeg处理音视频流程3.ffmpeg常用命令分类1.基本信息查询命令2.录制命令1.ffmpeg录屏命令ffmpeg -f avfoundation -i 1 -r 30 out.yuv-f:指定使用avfoundation采集数据(mac下)-i:指定从哪采集数据,它是一个.

2020-08-04 21:22:24 585

原创 分割字符串同时去除所有空白字符

假设获取到的id列表是以英文逗号分割的,获取id列表需要去除其中包含的空白字符,可以用下面的语句String[] channelIds = request.getChannelIds().replaceAll("\\s*", "").split(",");

2020-05-29 18:14:26 1198

原创 jackson-databind升级2.7版本到2.10.0

1.直接修改jackson-databind的版本号为2.10.0启动报错,找不到类。2.升级版本号同时加上jackson-core依赖<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.10.0</version>&lt

2020-05-20 16:29:01 12029 4

原创 位图应用,原理和性能分析

1.应用在平时的开发过程中,会有一些bool型数据需要存取,比如用户一年的签到记录,签了是1,没签是0,要记录365天。如果使用普通的key/value,每个用户要记录365个,当用户数上亿时,需要相当大的存储空间。Redis提供了位图数据结构,每天的签到记录只占据一个位,365天就是365个位,46个字节(一个稍长的字符串)就可以完全容纳下,大大节约了存储空间。位图的最小单位是bit...

2020-04-13 15:20:02 508

原创 布隆过滤器应用,原理和性能分析

1.应用布隆过滤器用于判断某一个值是不是已经存在。比如我们在使用新闻客户端看新闻时,它会给我们不停地推荐新的内容,而它每次推荐时都要去重,以去掉那些我们已经看过的内容。布隆过滤器是专门用来解决这种去重问题的,它在起到去重作用的同时,在空间上还能节省90%以上,但是会有一定的误判概率。当布隆过滤器说某个值存在时,这个值可能不存在;当它说某个值不存在时,那就肯定不存在。用在推送去重的场景中...

2020-04-10 20:58:47 791

原创 Hyperloglog应用、原理和性能分析

1.应用Hyperloglog提供不精确的去重计数方案,如统计一个网站的UV(独立访客数),同一个用户一天之内的多次请求只能计数一次,如果使用set集合来统计的话,会非常浪费存储空间。虽然不精确但是也不是非常不精确,标准误差是0.81%。2.原理1.抛硬币问题设想一个抛硬币的问题,假如你抛了很多次硬币,最多出现了两次连续的反面,我敢打赌你抛硬币的总次数不会太多,相反,如果你和我...

2020-04-10 16:32:32 3804 2

原创 位图,Hyperloglog和布隆过滤器对比

项目 场景 实现原理 缺陷 误差分析 内存分析 实践应用 位图 有一些bool型数据需要存取,比如用户一年的签到记录,签了是1,没签是0,要记录365天。如果使用普通的key/value,每个用户要记录365个,当用户...

2020-04-10 16:23:23 1353 1

原创 高效数组复制方法arrayCopy()

JDK中提供了一个高效的API来实现数组复制。public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int le...

2020-01-15 20:14:43 536

原创 java中的日期操作

1.获取当前时间Calendar cal = Calendar.getInstance();int year = cal.get(Calendar.YEAR);//年int month = cal.get(Calendar.MONTH) + 1; // 0代表1月,11代表12月int day = cal.get(Calendar.DAY_OF_MONTH);//日int hour ...

2019-12-16 15:08:14 140

原创 java.util.List的subList方法

List<E> subList(int fromIndex, int toIndex);返回数组中下标范围为[fromIndex, toIndex)的列表。当fromIndex==toIndex==数组长度时,返回空列表。 当index>数组长度时,抛出IndexOutOfBoundsException。使用此方法要注意的是,对原来的list和返回的list做修改,...

2019-12-16 14:28:11 285

原创 遍历列表的三种方法

JDK1.5之后,遍历列表操作至少有三种方法:ForEach操作,迭代器和for循环。使用方法如下:String[] strs = new String[]{"1", "2", "3"};List<String> list = Arrays.asList(strs);for (String s: list) {//ForEach操作 System.out.prin...

2019-11-11 20:55:57 4757 1

原创 StringBuffer和String常量累加效率比较

1.对于常量字符串的累加,由于Java在编译时就可以确定字符串的取值,在编译时就进行了计算,合成了一个单独的长字符串,运行时的执行效率要高于StringBuilder。2.对于编译时无法确定取值的字符串,Java使用StringBuilder对象来实现字符串的累加,运行效率和StringBuilder一样。建议在代码实现中,显式地使用StringBuilder或者StringBuffer对...

2019-11-11 20:36:17 270

原创 效率更高的字符串分隔方法

StringTokenizer类是JDK中提供的专门用来处理字符串分隔子串的工具类,处理效率高于split。典型的构造方法:其中str是要分割处理的字符串,delim是分割符号。可以使用nextToken()或者nextElement()方法得到下一个分割的字符串,使用hasMoreTokens()或者hasMoreElements()方法判断是否有更多的子字符串需要处理。使用方法...

2019-11-11 20:24:47 527

原创 No compiler is provided in this environment.

错误信息:No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?解决方法:Eclipse:Windows——&gt;Preferences——&gt;Java——&gt;Installed JREs——&gt;Add——Standard VM——&g...

2018-08-16 10:09:55 212

转载 修改jupyter notebook打开的浏览器

Windows 下jupyter notebook 修改打开的浏览器:1.2. 打开C:\Users\Administrator\.jupyter\jupyter_notebook_config.py添加import webbrowserwebbrowser.register('chrome', None, webbrowser.GenericBrowser(u'浏览器路径'))c.Noteboo...

2018-06-20 18:03:16 1213

转载 PHP的fopen无法打开url

要使用fopen、getimagesize或include等函数打开一个url,需要对php.ini进行设置,通常设置allow_url_fopen为on允许fopen url,设置allow_url_include为on则允许include/require url.allow_url_fopen = onWhether to allow the treatment of URLs (like h...

2018-06-08 15:10:34 1547

原创 项目遇到的问题

1.前端html页面转成jsp页面之后的编码问题、资源路径问题。servlet重定向到jsp后,css样式和图片都没了,原因是在servlet中转发时css和图片的路径变成相对于这个servlet的相对路径而非相对于web项目的路径了。解决办法:导入css样式和图片时把css写成动态绝对路径,&lt;link rel="stylesheet" href="${pageContext.request...

2018-03-18 00:22:19 172

原创 Servlet实现一个网站计数器

1.预备知识一---ServletContext对象WEB容器在启动时,会为每一个WEB应用程序都创建一个对应的ServletContext对象,代表当前web应用。ServletContext对象可以通过ServletConfig.getServletContext方法获得对象的引用,或者通过this.getServletContext()来获得。一个WEB应用中的所有Servlet共享同一个S...

2018-03-16 14:13:51 2224

转载 servlet初始化时无法获取ServletContext对象

今天遇到了一个在servlet的service方法中获取ServletContext对象出现java.lang.NullPointerException(空指针)异常,代码如下:1 //获取ServletContext对象2 ServletContext servletContext = this.getServletContext();  这个问题很奇怪,也是第一次遇到,因为以前在servle...

2018-03-16 11:17:24 1379 2

原创 maven打包scala无法编译产生class文件的问题

在pom.xml里面的build中源文件的目录设置的问题,&lt;!-- 源文件目录 --&gt;&lt;sourceDirectory&gt;src.main.scala&lt;/sourceDirectory&gt;&lt;testSourceDirectory&gt;src.test.scala&lt;/testSourceDirectory&gt;之前写的目录都是src/main/sc...

2018-03-16 11:12:27 3770 2

转载 maven编译scala的pom.xml源码

&lt;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://maven.apache.org/maven-v4_0_0....

2018-03-16 11:12:03 845

原创 scala+maven生成spark项目步骤

1.新建maven project如果没有scala选项,之前的文章有教怎么创建,链接http://blog.csdn.net/hylexus/article/details/52602774至此,maven项目构建完成。2.整合scala,在项目上点击右键,configure-add scala nature修改pom.xml中的依赖文件,就可以开始写scala了。&lt;dependencie...

2018-03-16 11:11:40 4055

原创 两个字符串之间的最短编辑距离

1.算法原理编辑距离(Edit Distance)是指两个字符串之间,由一个转成另一个所需的最少编辑操作次数,编辑操作包括增、删、改操作。例如将kitten一字转成sitting:sitten (k→s)sittin (e→i)sitting (→g),最短编辑距离为3.跟“最长公共子序列”一样,我们采用一个二维数组来保存字符串X和Y当前的位置的最小编辑距离。现有两个序列X={x1,x2,x3,....

2018-03-14 09:53:18 1407

原创 求两个字符串的最长公共子序列(DP实现)

算法原理用二维数组c[i][j]记录串x1x2⋯xi与y1y2⋯yj的LCS长度,则可得到状态转移方程如果某一个字符串长度为0,则公共子序列长度为0;如果字符串长度都不为0,如果xi=yj,那么公共子序列长度为两个字符比较之前的公共子序列的长度+1;如果xi≠yj,那么LCS的长度为前面字符比较得到的LCS的较大值。如下面的求abca和acba的最长公共子序列得到的数组:...

2018-03-13 16:50:11 1649 4

转载 一个链表中包含环,请找出该链表的环的入口结点

问题:一个链表中包含环,请找出该链表的环的入口结点?从两个大的角度思考这个问题1.记录遇到的每一个链表元素在一次遍历过程中的,使用一种数据结构(数组、Hash表、基数树)记录遇到的每一个链表元素并判断是否已经遇到过,其中使用基数树可以获得O(n)O(n)的时间复杂度,但是可会有比较高的空间复杂度。2.利用链表的性质想法一:时间复杂度为O(n),两个指针,一个在前面,另一个紧邻着这个指针,在后面。两...

2018-03-13 14:14:52 280

原创 普通Java项目转为maven项目

在项目上点击右键-preference-convert to maven project如果之间已经配置过路径,build时可能会出错,原因是jar包冲突。只需要把以前配置的路径移除即可。

2018-03-13 10:42:25 645

转载 java中class.forName和classLoader区别

        java中class.forName和classLoader都可用来对类进行加载。前者除了将类的.class文件加载到jvm中之外,还会对类进行解释,执行类中的static块。而classLoader只干一件事情,就是将.class文件加载到jvm中,不会执行static中的内容,只有在newInstance才会去执行static块。Class.forName(name, init...

2018-03-12 22:57:22 140

转载 为什么String类是不可变的

String是所有语言中最常用的一个类。我们知道在Java中,String是不可变的、final的。Java在运行时也保存了一个字符串池(String pool),这使得String成为了一个特别的类。String类不可变性的好处只有当字符串是不可变的,字符串池才有可能实现。字符串池的实现可以在运行时节约很多heap空间,因为不同的字符串变量都指向池中的同一个字符串。但如果字符串是可变的,那么St...

2018-03-12 22:47:35 105

转载 图的深度优先和广度优先遍历及其Java实现

遍历图的遍历,所谓遍历,即是对结点的访问。一个图有那么多个结点,如何遍历这些结点,需要特定策略,一般有两种访问策略:深度优先遍历广度优先遍历深度优先深度优先遍历,从初始访问结点出发,我们知道初始访问结点可能有多个邻接结点,深度优先遍历的策略就是首先访问第一个邻接结点,然后再以这个被访问的邻接结点作为初始结点,访问它的第一个邻接结点。总结起来可以这样说:每次都在访问完当前结点后首先访问当前结点的第一...

2018-03-12 16:31:34 482

空空如也

空空如也

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

TA关注的人

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