- 博客(145)
- 资源 (13)
- 收藏
- 关注
原创 H264文件转mp4,cpu占用太大,采用nvidia gpu来做,减少cpu占用;服务器没有显卡,就用Cpu转
命令行代码ffmpeg -y -vsync 0 -i 1.h264 -c:a copy -c:v h264_nvenc -b:v 5M 1.mp4
2021-10-07 12:00:17
854
原创 (NIO编程)Netty框架学习
BIO(传统的阻塞型):每次连接都会开一个线程,但是这个连接不做任何事情的话会造成不必要的线程开销。jdk1.4之前唯一的选择。加入线程池机制改善(多个客户端连接服务器)。NIO(同步非阻塞):一个线程处理多个请求,轮询到连接有IO请求上去处理,节省线程开销。适用于连接数目多且连接比较短。jdk1.4开始支持。AIO(异步非阻塞)。连接数目多且连接比较长。...
2021-09-30 08:58:00
151
原创 服务器(公网推rtmp流),网页本地(qq浏览器)播放rtmp流,且可切换rtmp流播放。使用了video.js、videojs-flash.js、jquery-3.4.1.js和我自己写的一个js
问题: 最开始我想在下拉列表的值发生变化时将video标签包含的source标签里面的src中的rtmp流直接替换掉,达到切换rtmp源播放的目的,但是一直无法生效,最后我想每个源直接做一个html页面,发现如果有几百个源就需要做很多,因此直接采用servlet画html,每次请求servlet时拼接好rtmp流,然后再生成页面,就能达到切换rtmp源播放的效果;谷歌浏览器和火狐不支持flash,播放不了rtmp流。最后选择我常用的QQ浏览器成功了根据拥有的可查看的rtmp流,设计一个下拉列表供选择哪一
2021-09-27 14:01:50
704
2
原创 jsp在tomcat下引入css和js静态问题
css文件和所想引入的jsp文件在同一目录下。例如index.jsp就直接table/css/dashboard.css引入。
2021-09-26 22:03:11
450
原创 java后端传字符串链表List<String>前端接收问题
后端需将字符串链表转成json形式再返还给前端。前端接收时其实就是链表的形式例如:前端接收到的数据为resp,resp[0]就为第一个,然后使用$(resp).each(function(index){ alert(resp[index]);// })就能将所有的数据得到。...
2021-09-26 16:24:04
1372
原创 服务器推流rtmp(公网),客户端拉流(局域网)遇到的问题解决
今天在服务器启动nginx时报错,无法正常启动(0xc000007b)的问题,网上找了许多都没看到解答,我猜想缺失了一些c环境,补上后即可正常启动了。
2021-09-23 19:31:23
1019
原创 json字符串转换为自定义java类
选择工具包1、jackson(所需依赖少,速度快)2、Gjson(功能最全面,但速度有差距)3、FastJson(速度最快,但安全有些问题)最后选择的jackson用来做json转java对象。json字符串转换为java自定义对象(我选择的是ArrayList,因为可能我转出来的java类有几个)/** 调用ObjectMapper 对象的readValue即可,传入的两个参数:* 第一个为json字符串,第二个为你所需的java对象的类**/ObjectMapper strToJ.
2021-09-13 15:13:35
957
原创 java线程池调用与学习原理(可提升Tcp服务器并发性)
1、实现Runable方法,至始至终只有一个主线程。2、继承Thread,有主线程和分支线程。3、线程复用newCachedThreadPool,如果线程在做完事情之后,有新的任务来就可以复用。cpu可能100%4、newFixedThreadPool,全是核心线程,没有非核心。内存可能溢出。5、newSingleThreadPool,只有一个核心线程,没有非核心。内存可能溢出。6、以上的三种线程池都可能出现问题,因此采用自定义线程池。提交优先级和执行优先级。执行优先级并不会按照提交优先级去执行,
2021-09-12 19:08:32
180
原创 git常用指令
新建分支 git branch -a 分支名删除分支 git branch -d 分支名切换分支 git checkout 分支名本地分支推到远端 git push origin 分支名拉远程代码 git pull origin 远程分支名
2021-09-07 18:37:13
95
原创 计算机网络学习笔记(一)应用层、传输层和网络层数据平面
计算机网络的主机节点(方的,数据的源或目标)和数据交换节点(圆的,按工作层次的不同可分为:中继器、交换机、路由器等)和方的有关就叫接入点,两个圆的就是骨干节点。
2021-08-17 17:47:22
482
原创 spring-boot触发器使用
在spring-boot启动类上添加@EnableScheduling注解,代表开启定时器,图1。单纯只做一个任务且项目启动时就开始或者延时一段时间开始,在需要做任务的类上添加@Component注解,让spring-boot扫码组件,在方法上注解@Scheduled(initialDelay = 1000,fixedDelay = 2000)第一个参数是延迟多久开始,第二个参数是间隔多久执行一次,图2。如果有多个任务执行,可能需要开线程执行任务,这时只需在任务类上多加一个@EnableAsync注解.
2021-08-10 18:04:46
2852
原创 java爬虫爬取动态页面记录
最开始采用的HttpClient获取页面+Jsoup分析页面,但是获取不到想要的页面内容,发现自己想要的数据是js生成的,HttpClient加了头和Cookie还是获取不到,最后采用的htmlunit获取页面就可以了。 WebClient webClient=new WebClient(); WebClientOptions options = webClient.getOptions(); options.setJavaScriptEnabled(true
2021-08-07 10:58:31
1345
原创 使用资源绑定器时出现的错误以及switch,case不能使用资源绑定器中的值
1、资源绑定器:使用时不能加后缀properties,否则会报找不到的错误。例如:ResourceBundle bundle=ResourceBundle.getBundle("static/fixedresources/nodeIp"); return bundle.getString(key);2、java的case中必须是常量,不能将配置文件中的值获取之后放在case里,否则一样会报错。...
2021-07-01 10:26:33
149
原创 Tensorflow学习记录
激活函数1、relu函数:小于0时都为0,大于0是是多少就多少输出。2、sigmoid函数:它的值在-1到1之间,靠近0时变化剧烈,远离时变化缓慢。3、tanh函数:它的值在-1到1之间,根据值映射到他们之间。4、Leak relu函数:正值原样输出,负值压缩输出。...
2021-06-24 14:59:06
102
原创 spring-boot 不能直接对静态变量进行自动注入
因为注入时相当于调用的是get和set方法,静态变量没有这个所以不行,如果非要给静态变量注入的话,可以先构造一个静态变量,然后使用非静态类帮他注入。但是接口的话好像不行(我没有成功)...
2021-06-18 09:56:45
422
原创 while死循环时,变量中的值不更新问题
1、可以通过在变量名定义时加上volatile关键字。例如:private volatile BufferedReader br;2、在循环中使用一下这个变量。例如打印一下;
2021-06-17 19:00:18
1394
原创 java 调用cmd执行时用Process的WaitFor方法阻塞问题解决
需要把缓冲区的流读完一个是InputStream还有一个是ErrorStreamprocess = runtime.exec(cmd); is1= process.getInputStream(); is2= process.getErrorStream(); new Thread(){ @Override public void
2021-06-09 15:50:35
480
原创 使用ffmpeg合并.h264文件
1、先将要合并的文件名写入一个.txt文件中,例如名字叫1.txt。2、然后通过cmd运行如下命令,即可合并文件。ffmpeg -f concat -i 1.txt -c copy output.h264
2021-06-09 14:09:03
1735
5
原创 Udp长连接时问题解决
1、利用套接字接收字节数组时,如果下一次的数据比这一次短,可能这次的数据接收完后,上一次的数据会填充到末尾,因此,需要重新new数组 并绑定数组再接收,这样就不会出现末尾填充现象。2、接收数据的数组赋值时会变成绑定的接收数组的大小,用接收包的getLength方法得出来的才是此次真实数据的长度。...
2021-06-04 14:39:34
1381
原创 java的rtsp通信、rtp接收数据、本地实现连续播放视频片段(源源不断)(基本实现)
---------------------------------------------2021/5/30----------------------------------------------进行客户端和服务器端的rtsp协议通信,客户端使用java代码编写,服务器端使用vlc代替(已成功)。其中要注意的是客户端发送SETUP请求是需要把trackID号带上。---------------------------------------------2021/6/1----------------
2021-06-01 13:25:47
2265
1
原创 在本机上使用VLC搭建RTSP服务端时ip选择问题以及SETUP请求时,服务端返回HTML页面
VLC作为服务端,SETUP请求返回的是html网页解决1、使用127.0.0.1作为rtsp中url的IP部分,而不是使用自己的电脑配置的ip。我在测试时如果不这样设置,VLC返回给我客户端返回的数据就是一个html页面的内容。在偶然尝试中发现的这个问题解决方法,记录。例如:url=rtsp://127.0.0.1:8554/my/trackID=1...
2021-05-28 21:00:56
424
原创 Java与设备TCP长连接中发生的设备断开连接解决方法。
问题描述:1、当与硬件设备通信正常时,硬件设备发送一次数据,java这里就能就收到,处理完成后阻塞在read处。2、在我的测试中,当硬件设备的TCP连接断开时java的程序并没有抛出异常,而是表现出来不在read处阻塞了,一直在我的while循环里周而复始的运行程序。如果读进byte的话就是表现出来一直等于-1,readLine就是等于null。解决方法:从上面2中得出,当判断出等于-1或者null时,表示已经断开连接,否则会一直阻塞在read处,因此当等于那两个值时,break出while大循环,
2021-05-26 18:47:01
1839
原创 java中Socket使用io流的一些问题验证
1、发送端发送过来的数据,我就算当前只读了一部分,但是只要还是在循环体while(true)内循环读,就能继续把剩下的部分读出来。2、和发送端的通道建立后,在发送端不发送数据时,接收端会阻塞在read处,当有数据进来就会继续往下执行。3、通信时不能在while里面写几个read,因为read会阻塞,所以如果想要几个read(既想做接收端也想做发送端),就需开线程处理。...
2021-05-26 11:44:31
245
原创 (初学)springboot中Thymeleaf报错解决思路
1、检查html页面是否加入了引用。2、检查html页面中对th:xx标签的引用是否错误,比如引用实体类中的属性,但是属性名打错会抛异常。3、检查代码中的网页拼写是否正确。4、片段抽取更换着试,th:include、th:insert、th:replace; 还有id形式和fragment形式。...
2021-05-25 16:05:33
650
原创 springboot thymeleaf.exceptions.TemplateInputException: An error happened during template parsing
这个错误有可能是html页面写的有错误导致。
2021-05-24 14:45:42
194
原创 使用thymeleaf重定向(之前学习遗留问题)
之前我把重定向理解错了,导致今天做页面跳转一直不成功。后面了解到, redirect:/manage.htmi, 这条语句不是指向这个页面跳转而是发出manage.html这个请求,再写个处理这个请求并跳转页面的就行了。之前学习没认真呀。 @PostMapping("/login")public String manage(User user, HttpSession session){//user为前端传过来的登录信息,用户名和密码 if (user!=null) { se
2021-05-21 22:12:41
2670
原创 赫夫曼压缩以及解压(最后一位不补码导致的问题修补)
package syf.huffmantree;import java.util.*;public class ReviewHuffman { static Map<Byte,String> map=new HashMap<>(); public static void main(String[] args) { String s="i like like like java do you like a java"; byte[
2021-05-19 19:22:36
432
原创 检查某一端口是否被占用
通过传入host(ip)和port(端口号),然后利用他们创建对象,如果可以创建,则没有占用,否则被占用了。当没有这个端口号时会报错,于是我把catch中的打印堆栈信息删了。 public static boolean isPortUsing(String host,int port) throws UnknownHostException { boolean flag = false; InetAddress Address = InetAddress.getByNam
2021-05-12 15:14:17
366
原创 前端网页带图片路径跳转到另一页面并显示(隐藏参数,显示参数两种方式)
从ajax中年获取到的key为path的参数,当他不为空就跳转到另一页面(带参数请求的形式),想隐藏的话要用表单提交的方式。 if (data.path!=null) window.location.href = "index.jsp?path="+data.path;另一个网页的js,使用正则获取到url该参数的值,拼接成html展示。<script type="text/javascript"> $(function(){ let str
2021-05-11 19:57:03
1324
原创 tomcat启动后,访问项目中的图片无效解决方案(不用修改配置文件)
由于Tomcat启动后,通过相对路径的方式无法加载项目中的图片并显示,原因是启动后,url会改变。比如:将图片放置在如下路径,这样直接是访问不到resources里面的图片span><img src="image/image0001.png"></span> 需要将图片放在如上图更改后span><img src="image/image0001.png"></span> 能直接访问到图片了,再去通过ajax获取本地图片所在的路径
2021-05-10 17:16:33
3686
1
原创 Git(学习)
集中式版本控制SVN,版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后工作,完成工作后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,对网络带宽要求较高。分布式版本控制Git,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了,因为版本都在自己电脑上。协同的方法是这样的:比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改
2021-05-10 09:14:19
132
原创 秒杀案例(无并发秒杀、模拟并发秒杀)
前端传一个产品id过来,并且与servlet做ajax交互,前端得到产品库存数量servletString userid = new Random().nextInt(50000) +"" ; String prodid =request.getParameter("prodid"); boolean isSuccess=SecKill_redis.doSecKill(userid,prodid); response.getWriter().print(isSuccess);redis、
2021-05-08 15:07:16
451
原创 Redis模拟2分钟有效验证码
import redis.clients.jedis.Jedis;import java.util.Random;import java.util.Scanner;/** * 手机验证码功能 * 要求: * 1、输入手机号,点击发送后随机生成6位数字码,2分钟有效 * 2、输入验证码,点击验证,返回成功或者失败 * 3、每个手机号每天只能输入三次 */public class PhoneVerification { private static final Jedis jed.
2021-05-07 17:30:38
358
原创 Redis(Idea学习)
测试是否连接成功 public static void main(String[] args) { //1、创建Jedis对象 Jedis jedis=new Jedis("192.168.111.130",6379);//前面个是连接的主机ip,后面个是redis的端口号 //2、测试 String ping=jedis.ping(); //成功返回PONG System.out.println(pin
2021-05-07 15:57:12
186
原创 ffmpeg图片转视频以及报Could find no file with path ‘F:\test/%05d.png‘ and index in the range 0-4这样的错误解决方法
F:\test\为图片所在文件夹image%04d.png为图片的命名格式例如:image0000、image0001有四位就写04,之前就是这个地方一直转换不了,导致了标题的报错。-s 1080*960为设置分辨率,这个设置不对会出现转换后的视频显示该项目的编码格式不支持。按照图片分辨率设置,不对就多试-r 25设置帧率25帧/秒-b 指定200k码率ffmpeg -f image2 -r 25 -i F:\test\image%04d.png -b 200k -s 1080*960 -vc.
2021-05-07 11:03:16
6800
原创 Redis6(学习)
安装在windows上下载redis,使用软件放在opt目录下,在linux上安装c语言编译环境,先检查有没有gcc 用gcc –version 如果没有用命令yum install gcc -y安装完成后,先解压,tar -zxvf redis-6.2.3.tar.gz -C /opt/javasoftware/进入到解压后的文件夹中,用make命令编译,然后用make in stall前台启动redis-server后台启动:先将redis.conf移动到etc目录下,然后将daemoniz
2021-05-06 21:14:26
510
1
原创 Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedded datasource could
spring-boot报以下错误,可能是target里面的写url这些信息的配置文件没有生成,需要将这些文件也打包进去。因为有可能配置在.yaml.yml.properties这三个文件中,就把这三个写上,我报错是因为最开始只写了yaml,但是resources里面没写这个,只有yml,加上后正常。Description:Failed to configure a DataSource: 'url' attribute is not specified and no embedded datas.
2021-05-06 16:06:26
137
原创 JPA(学习)
ORM思想操作实体类就相当于操作数据库表。就要建立两个映射关系:建立实体类和表的关系。建立实体类中属性和表中字段的关系。不再关注重点:SQl语句实现了ORM思想的框架:Mybatis、Hibernate。配置两个映射关系:@ToString@Data//get和set方法/** * 注意!!!:导包都是javax.persistence的包 * 1、完成实体类和表的映射关系 * @Entity 声明实体类 * @Table 配置实体类和表的映射关系 * name
2021-04-30 11:07:41
195
1
TCP传输多张图片,客户端和服务端都有
2021-04-29
Servlet的四种信息交互.zip
2020-12-06
servlet增删改查
2020-12-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅