自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

点点滴滴

    ——学习工作中要善于总结

  • 博客(154)
  • 资源 (1)
  • 收藏
  • 关注

原创 【原创】Flyway 8.2.1及以后版本不再支持MySQL?!

Flyway 8.2.1及以后版本不再支持MySQL?!如何解决?

2022-10-20 18:08:26 4998 2

原创 Chrome调试工具webrtc-internals

文章目录1、打开调试工具2、导出调试信息3、切换获取统计信息的方式4、相关统计信息4.1 获取用户媒体设备请求(`GetUserMedia Request`)4.2 通道(`RTCPeerConnection`)列表4.3 查看每个通道(`RTCPeerConnection`)的信息4.3.1 查看事件信息4.3.2 查看统计信息4.3.3 统计数据说明`RTCPeerConnection (peer-connection)``RTCTransport_0_1 (transport)``RTCCertifi

2020-11-30 10:40:13 8826 8

原创 Emscripten简介及初体验

文章目录1. Emscripten简介1.1 诞生背景1.2 什么是Emscripten2. 安装Emscripten2.1 前置条件2.2 下载安装过程3. 示例4. 参考资料1. Emscripten简介1.1 诞生背景Web 技术突飞猛进,但是有一个领域一直无法突破 ---- 游戏。游戏的性能要求非常高,一些大型游戏连 PC 跑起来都很吃力,更不要提在浏览器的沙盒模型里跑了!但是,尽管很困难,许多开发者始终没放弃,希望让浏览器运行 3D 游戏。2012年,Mozilla 的工程师 Alon

2020-10-12 17:25:54 15553 8

原创 WebAssembly原理及入门

文章目录1. WebAssembly是什么2. 为什么需要 WebAssembly3. WebAssembly 原理4. 编写 WebAssembly4.1 AssemblyScript 初体验4.2 为什么选 AssemblyScript 作为 WebAssembly 开发语言4.3 接入 Webpack 构建4.4 WebAssembly 相关文件格式5. WebAssembly 相关工具5.1 WebAssembly JS API5.2 WebAssembly 调 JS6. 不止于浏览器6.1 直接执

2020-10-12 17:19:54 2731 1

原创 浏览器支持H.265解码总结

文章目录1. 引言2. 问题3. 解决方案3.1 方案1:开发自己的浏览器~~3.2 方案2:前端JS解码+canvas显示~~~~3.3 方案3:前端WebAssembly转码+video显示~~3.4 方案4:前端WebAssembly解码+canvas显示3.5 总结4. 相关资料5. 参考资料1. 引言项目要求在浏览器上支持H265视频,但即使当前最新的Chrome 85.0.4183.121版本也还不支持H265的解码。那么,在浏览器上能不能解决H265的解码及显示呢?答案是肯定的。2.

2020-09-28 14:08:39 19226 30

转载 【转】SFU级联解决方案——Licode

文章目录1. 引言2. SFU2.1 SFU简介2.2 单SFU问题2.2.1 人数限制2.2.2 地理分布,就近接入2.3 解决方案:级联SFU2.3.1 解决人数限制2.3.2 解决地理分布与就近接入问题3. Licode4. 基于Licode级联实现4.1 单节点Docker化4.2 级联间去加密4.3 其他级联优化4.4 全球化5. 参考资料1. 引言随着在线教育行业的兴起, 许多人把目光投向了国外市场,而如何搭建全球化的音视频网络就成为了其中的关键问题。百家云研发工程师陈聪详细介绍了如何利用L

2020-09-27 11:14:15 2295

转载 【转】SFU级联解决方案——Jitsi

1. 引言部署WebRTC的媒体服务器有两个主要挑战,从一台服务器开始扩展,并且优化参加会议的用户的媒体延迟。尽管简单的碎片化方法像‘将X会议中的所有用户发送到服务器Y’容易实现水平扩展,在用户体验中,媒体延迟是一个关键因素,在这方面,此方法还远远不能达到最优效果。将视频会议分布在距离用户很近的许多服务器上并且保持相互连接,同时解决了两个问题。本文深度描述了级联SFU存在的问题并且展示了解决方法和遇到的其它问题。实时交流的App非常依赖网络环境,例如吞吐量,延迟,丢失。低比特率导致低视频质量,导致了

2020-09-27 10:55:48 2558 1

转载 【转】WebRTC多人音视频解决方案

文章目录1. 引言2. 解决方案2.1 Mesh解决方案2.2 Mixer解决方案2.3 Router解决方案2.4 三个解决方案的流量对比3. 应该使用哪种架构?4. 参考资料1. 引言众所周知,WebRTC非常适合点对点(即一对一)的音视频会话。然而,当我们的客户要求超越一对一,即一对多、多对一设置多对多的解决方案或者服务,那么问题就来了:“我们应该采用什么样的架构?” 。简单的呢有人会考虑copy多个p2p就完成了多人之间的会话,可并没有考虑到到来的问题:cpu、内存、尤其是流量问题;传统的解决方

2020-09-27 10:37:34 1143

原创 VMware中设置CentOS静态IP并可上网

1、引言在VMware种搭建了CentOS的虚拟机,想在局域网内共享该虚拟机,使得局域网内的机器能够访问到该虚拟机,另外,希望该虚拟机也能够访问外网,那么该如何设置呢?2、设置静态IP地址2.1 设置VMware打开VMware,在VMWare的虚拟机管理界面,选择编辑虚拟机设置,打开虚拟机的设置界面。选择网络适配器,然后在网络连接选中桥接模式,并勾选复制物理网络连接状态,如下图所示:...

2020-04-14 09:24:22 377

原创 动态修改Log4J和Logback的日志级别

Java项目开发调试或维护过程中,为方便问题快速定位,很多时候都会在代码中增加相关日志,但为了减少日志输出量,在生产环境通常都提高了日志的级别,导致生产环境出现问题时调试信息没有打印出来,排查定位问题比较困难。那么,能否动态修改日志的级别?答案是肯定的。当出现问题时,动态降低日志级别,输出相关的调试信息;问题解决后,动态提高日志级别,屏蔽相关的调试信息。...

2020-04-09 18:09:29 3063

原创 TCP连接CLOSE_WAIT和TIME_WAIT状态学习总结

0、引言生产环境中,运行一段时间后,发现经常出现残留着大量的TCP链接,如下图所示,这些残留的TCP链接占用着系统的资源,一旦数量过大的话,会导致系统资源耗尽,甚至崩溃,急需排查解决。2、TCP/IP的连接和断开过程2.1 三次握手建立连接第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。第二次握手:服务器B收到S...

2020-04-08 16:45:47 3646 2

原创 NAT与NAT穿越学习总结

迁移自【ITEYE】 https://www.iteye.com/blog/cgs1999-19940721、引言网络地址转换(Network Address Translation,简称NAT)是一种在IP分组通过路由器或防火墙时重写源IP地址或/和目的IP地址的技术。这种技术被普遍使用在有多台主机但只通过一个公有IP地址访问因特网的私有网络中。20世纪90年代中期,NAT是作为一种解决IP...

2020-04-05 22:49:07 671

原创 Mediasoup源码分析(1)——架构分析

1. 设计架构图Worker一个Worker代表着一个运行在单核CPU上并处理Router实例的mediasoup C++子进程;RouterRouter用于注入、选择和转发通过Transport实例创建的媒体流;TransportTransport将终端与MediaSoup Router连接起来,并通过在其上创建的Producer和Consumer实例实现双向媒体传输,...

2019-08-29 11:09:48 7615

原创 Janus源码分析(7)——videoroom分析

1. 运行效果https://janus.conf.meetecho.com/videoroomtest.html?simulcast=true包含:Simulcast功能视频高等质量(分辨率:1280*720,带宽1.5M+)视频中等质量(分辨率:640*360,带宽500K左右)视频低等质量(分辨率:320*180,带宽150K左右)2. VideoRoom插...

2019-08-29 11:00:36 4071 5

原创 Janus源码分析(6)——Streaming分析

1. 运行效果图Streaming演示的是播放视频或音频流,可用于网络直播或转播,效果如下图所示:2. Streaming插件API分析2.1 会议配置信息及API分类1、插件配置文件位置 conf/janus.plugin.streaming.jcfg,流配置格式如下:stream-name: { type = rtp|live|ondemand|rtsp rtp = s...

2019-07-08 18:53:55 3732

原创 Janus源码分析(5)——echotest分析

1、运行效果图Echo测试演示的是发送给服务器网关的音频和视频,服务器会回传给你,效果如下图所示:2、代码分析2.1 代码结构2.2 源码分析2.2.1 创建线程在janus = new Janus()时,调用Janus(gatewayCallbacks)在其中有函数createSession,并且传入下面的回调函数:createSession创建请求,成功建立一次httpAP...

2019-07-03 16:29:01 2370 7

原创 Janus源码分析(4)——信令交互过程

1. Janus插件交互流程Janus中所有插件都遵循以下基本数据流程:客户端发送create创建一个Janus会话;Janus回复success返回Janus会话句柄;客户端发送attach命令在Janus会话上attach指定插件;Janus回复success返回插件的句柄;客户端给指定的插件发送message进行信令控制;Janus上的插件发送event通知事件给客户端;客...

2019-07-02 11:31:52 6759 14

原创 Janus源码分析(3)——请求处理过程

从源码,分析Janus内部代码一个请求从接收到处理的完整过程及对应代码。

2019-07-02 11:21:58 5819 1

原创 Janus源码分析(2)——主入口main

1. 主入口main位置主入口main函数位于 janus.c 文件中特别说明:通过 Makefile.am 创建依赖文件:cmdline.h、cmdline.c、version.c版本号、编译时间及Git源码版本:janus_version、janus_version_string、janus_build_git_time、janus_build_git_sha等相关信息是在编译时...

2019-07-01 15:16:16 3278

原创 Janus源码分析(1)——源码结构

1. 模块结构分5个模块:核心 Core插件 Plugins传输 Transports事件处理 Event Handlers实用工具 Tools and utilities2. 源码分析2.1 核心模块(Core)包含:协议DTLSICERTCPRTPSCTPSDP其它请求认证、配置文件解析、日志、事件处理通知、录音录像、抓包…等2.2...

2019-06-24 17:50:04 5739 4

原创 VMware中设置Ubuntu静态IP并可上网

1、引言在VMware使用虚拟机过程中遇到的三个问题:如何修改虚拟机为静态IP并且生效;设置完静态IP后,无法上网;设置完静态IP且能上网后,宿主机无法ping通虚拟机;那么,能够实现虚拟机使用静态IP,且虚拟机能够上网以及和宿主机通讯吗?答案是肯定的,下面是相关的解决过程。2、设置静态IP地址VMware在默认安装完成之后,会创建三个虚拟的网络环境:VMnet0 :桥接网...

2019-06-11 10:57:56 5776 5

原创 Ubuntu中使用vi编辑时方向键乱码或退格键不能使用解决方法

1、引言Ubuntu中使用vi编辑文本文件时,会出现按上下左右方向键时,出现ABCD等字符,而且退格键也不起作用,如何解决这个问题?2、解决方法2.1 原因由于Ubuntu 预安装的是vim tiny版本,所以会导致我们在使用时候产生上述不便。2.2 推荐解决方法百度一下,发现有多种解决方法,个人推荐安装vim full版本,相关命令如下:卸载tiny 版本sudo apt-get...

2019-06-11 10:51:00 1642

原创 更换Ubuntu默认源为国内源

安装Ubuntu后,使用国外源太慢了,修改为国内源会快很多。1、修改过程1.1 备份备份/etc/apt/sources.list,命令如下:sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak1.2 修改Ubuntu的源列表修改 /etc/apt/sources.list 文件下的列表,特别需要说明的是这些列表和当前的Ubu...

2019-06-11 10:43:00 15874 5

原创 Ubuntu中安装部署Intel CS WebRTC

0、引言研究Intel CS WebRTC时,需要搭建环境,按官网或网上找到的文档进行搭建都发现有各种问题,由于相关资料比较少,不好进行排查解决。本文将最终部署成功的部署进行说明,希望对后来者能有所帮助,少踩些坑。1、环境要求组件版本要求OSCentOS* 7.4, Ubuntu 14.04/16.04 LTSNode8.11.* (推荐8.11.1)M...

2019-06-03 14:58:55 1713 4

原创 禁用浏览器同源策略的方法

1、引言前端和后台联调的时候总会涉及到跨域,平时我们跨域主要的方法是通过CORS进行跨域,但是通过CORS进行跨域有的时候会涉及到数据安全的问题,这时候我们可以通过禁用本地浏览器的同源策略来进行跨域的联调。2、禁用方法2.1 IE浏览器IE的禁用同源策略设置,进入IE的Internet选项设置,然后选择安全性,再选择自定义等级,然后下拉,找到「存取跨网络的资料来源」,选择启用即可。2....

2019-06-03 14:34:53 7772 1

原创 开启 Chrome 的Simulcast功能

1. 最新版本已默认支持Chrome 73.0.3664.3及以后的版本已支持VP8、VP9及H264的Simulcast编码2. 老版本的开启方法老版本指的是Chrome 73.0.3664.3以下版本,可以通过添加Chrome启动参数来开启Simulcast功能,参数如下所示--force-fieldtrials=WebRTC-H264Simulcast/Enabled/两种方式...

2019-05-07 09:47:18 1429

原创 浏览器HTTPS访问问题

1、问题描述搭建了HTTPS服务环境 https://172.16.0.17 ,用浏览器访问时,出现提示信息:“您的连接不是私密连接”(Chrome),如下图所示“您的链接并不安全”(Firefox),如下图所示2、解决方法2.1 Chrome浏览器的解决方法点击【高级】按钮后,可以看到问题的详细信息,如下图所示在chrome的地址栏里输入 chrome://net...

2019-05-06 14:53:04 13060

原创 Ubuntu中搭建ICE服务器(Coturn)

1. WebRTC的P2P穿透WebRTC的P2P穿透部分是由libjingle实现的.步骤顺序大概是这样的:尝试直连.通过STUN服务器进行穿透无法穿透则通过TURN服务器中转STUN服务器比较简单. 网上也有很多公开的STUN服务器可以用于测试,例如: stun.ideasip.com在WebRTC的P2P应用中,使用公开的STUN服务器时,有时响应比较慢,这就需要自己搭一个...

2019-05-06 14:37:08 8719 20

原创 搭建Janus的HTTPS环境

1、前言基于安全隐私问题,现在Webkit内核的浏览器共享视频、语音、经纬度坐标等必须通过HTTPS形式访问!Chrome浏览器使用的是Webkit内核,所以很不幸,如果你要在最新的Chrome浏览器上通过HTTP形式分享本地的视频、语音,就会出现如《Chrome浏览器调用摄像头失败》 中所述的问题。那么,如何解决呢?答案很简单,就是将应用的HTTP服务方式改造成HTTPS方式,本文将就...

2019-05-06 14:20:17 9111 18

原创 Ubuntu中安装部署Janus

1. 环境在 Ubuntu 16.4.5 TLS 版本中编译和测试通过。(CentOS下的部署可以参考《Janus部署总结》一文)下载最新的源代码需要git,若没有安装git可以使用下面命令进行安装:sudo apt-get install git -y使用下面命令进行安装lua库:sudo apt-get install liblua5.3-dev编译运行 Janus Serv...

2019-05-06 14:06:20 7855 12

原创 最新libwebsockets库的编译与测试方法

1. 环境在 Ubuntu 16.4.5 TLS 版本中编译和测试通过。下载最新的源代码需要git,若没有安装git可以使用下面命令进行安装:sudo apt-get install git -y另外,还有一些编译的依赖库,相关安装命令如下:sudo apt-get install cmake -ysudo apt-get install openssl -ysudo apt-ge...

2019-04-30 10:26:02 8229

原创 最新libsrtp库的编译与测试方法

1. 环境在 Ubuntu 16.4.5 TLS 版本中编译和测试通过。下载最新的源代码需要git,若没有安装git可以使用下面命令进行安装:sudo apt-get install git -y2. 编译及安装2.1 下载源码git clone https://github.com/cisco/libsrtp.git2.2 进入源码目录cd libsrtp2.3 配置配...

2019-04-30 10:21:22 7870

原创 Ubuntu中安装部署Mediasoup

1. 准备首先,找一台linux服务器,推荐用Ubuntu,安装最新版本的NodeJS和NPM,安装方法可参考 《安装最新版NodeJS和NPM》 一文。安装部署过程需要下载GitHub上的源码,故需要先安装好git,使用下面命令安装gitsudo apt-get install git -y2. 安装Mediasoup使用下面命令安装mediasoupsudo npm instal...

2019-04-30 10:05:28 7240 21

原创 Ubuntu中安装最新NodeJS和NPM

1. 更新ubuntu软件源Ubuntu 16.04 TLS,执行以下命令:sudo apt-get updatesudo apt-get install -y python-software-properties software-properties-commonsudo add-apt-repository ppa:chris-lea/node.jssudo apt-get upd...

2019-04-30 09:51:36 23917 8

原创 搭建好Flutter环境,打apk包时一直报400错误的解决方法

搭建好Flutter环境,打apk包时一直报400错误:Could not GET xxx, Received status code 400 from server: Bad Request网上搜索了好些解决方案,最后看了这篇文章解决了,这里记录一下https://blog.csdn.net/lqx_sunhan/article/details/82633275 估计是在安...

2018-11-29 15:30:06 1026

原创 简单的列表转树处理算法Java实现

一、引言公司新入职员工对列表转树的方法不了解,和他沟通了算法还是不明白的样子,网上找了几个类似的例子都不是很满意,只好自己动手写了一个,有需要的童鞋自取。 二、解决思路主要的算法:1、找出所有的根节点;(没有上级节点或列表中找不到父节点的节点都作为根基点处理)2、找出每个根节点下的各级子节点;3、打印输出最后的树形结构; 三、源代码package com....

2018-11-19 09:54:50 798

原创 单个JSP页面中实现查询和删除数据实例

为解决网友的问题而写的实例,相关地址 http://bbs.csdn.net/topics/390383104?page=1#post-393839610在同一个JSP页面处理删除操作,主要是将要删除的记录id作为当前jsp页面的参数传入,若参数不为空则获取deleteIds参数信息执行删除操作index.jsp文件内容:<%//驱动类名String class

2013-03-06 15:58:46 15763 3

原创 Spring框架结合Quartz实现任务调度实例

1、编写调用类QuartzJob.javapackage com.kedacom.quartz;public class QuartzJob{ public void run() { System.out.println("Quartz 的任务调度!!! "); }} 2、设置 Spring 的配置文件application

2009-03-17 10:22:00 6584 1

原创 [分享]VML实现的饼图

以前收集的VML实现的饼图vml_pie.html,感谢提供该代码的前辈,现将代码分享,代码如下:  "urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">     "GENERATOR" content="Microsoft Visual Studio .

2008-08-08 00:00:00 807

原创 [分享]选项卡组件代码

这是以前编写后整理出来的一个选项卡组件代码,个人使用感觉还是不错的,挺好用的,现分享一下! 选项卡组件createTab.js代码如下: /** *传入参数说明: *1、传入参数数量不限,但要符合3*n+1(n>0)的规则 *2、第一个参数为进入后默认显示的选项卡索引,索引值从0开始 *3、后续参数每3个为一组,分别为: *  A、选项卡名称 *  

2008-08-07 23:47:00 1435

使用百度API实现身份证识别示例(Java)

使用百度开放平台的身份证识别API实现身份证正面、反面信息的识别,包含信息及位置等,代码使用Java实现,JUnit测试代码。

2019-06-02

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

TA关注的人

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