知识积累

虚拟摄像头

虚拟摄像头(9158)(Softcam) 是一个名副其实的软件摄像机,它能模拟成为“真实的”摄像机,成功地骗过 大部分的视频聊天软件,比如MicrosoftNetmeeting、CU-Seeme等等。如此一来,就算计算机上没有摄像 设置,但照样能使用这些软件来虚拟视频。

如果你没有摄像头,在MSN这些即时通讯软件中想邀请别人进行视频聊天是不允许的,而Softcam虚拟摄像头 却打破了这块坚冰。除了能让你视频聊天,它能够在你的视频窗口中播放图片、动画、音乐,还能抓取图像、 录制为视频等等,比真正的摄像头还要强大。

虚拟摄像头有一点误区:不可能代替摄像头的线 它的作用应该是: 比如你用QQ跟人视频,你的电脑本身没 摄像头或者不想让别人看到你真实的一面,你就可以用虚拟摄像头软件把你提前准备好的录象加载进去部分网 站聊天室要求用户装有摄像头,但如果用户不想装,但又希望进入该网站,或聊天室,可以在电脑中安装虚拟 摄像头。

注解

视频聊天时,使用假视频。

前端

layui

https://www.layui.com/

需要授权的前端框架

uni-app

uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、 Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。

注解

功能比 react 还强大,不知道靠不靠谱。

openfire

是免费的、开源的、基于可拓展通讯和表示协议(XMPP)、采用Java编程语言开发的实时协作服务器。 Openfire安装和使用都非常简单,并利用Web进行管理。单台服务器甚至可支持上万并发用户。

注解

没用过。不知道是干什么的。IM会用到吗?

WinDbg

Windbg是在windows平台下,强大的用户态和内核态调试工具。相比较于Visual Studio,它是一个轻量级的调试工具,所谓轻量级指的是它的安装文件大小较小,但是其调试功能,却比VS更为强大。它的另外一个用途是可以用来分析dump数据。

官网

http://www.windbg.org/

IDA Pro

交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA Pro,或简称为IDA。是目前最棒的一个静态反编译软件,为众多0day世界的成员和ShellCode安全分析人士不可缺少的利器!IDA Pro是一款交互式的,可编程的,可扩展的,多处理器的,交叉Windows或Linux WinCE MacOS平台主机来分析程序, 被公认为最好的花钱可以买到的逆向工程利器。IDA Pro已经成为事实上的分析敌意代码的标准并让其自身迅速成为攻击研究领域的重要工具。它支持数十种CPU指令集其中包括Intel x86,x64,MIPS,PowerPC,ARM,Z80,68000,c8051等等。

xperf

Xperf是一款系统级工具,是产品套件Windows性能工具包(Windows Performance Toolkit,WPT)的一部分,而WPT则属于微软软件开发包(Microsoft Software Development Kit,SDK)。Xperf是Windows事件跟踪系统(Event Tracing for Windows,ETW)的补充。ETW则是服务器操作系统的一个内置组件,提供详细的系统性能和系统数据。

GPUImage

GPUImage是一个基于OpenGL ES 2.0的开源的图像处理库,作者是Brad Larson。GPUImage将OpenGL ES封装为简洁的Objective-C或Swift接口,可以用来给图像、实时相机视频、电影等添加滤镜。

AVFoundation

AVFoundation是基于CoreAudio、CoreVideo、CoreMedia、CoreAnimation之上处理基于时间的媒体数据的高层框架,在AVFoundation框架之上苹果还提供给咱们更高层一些处理媒体数据的框架,如AVKit、iOS的UIKit、OS的AppKit。AVFoundation提供了大量强大的工具集,可通过这个框架处理音视频编程。

2.可以实现的功能

1)音频的录制、播放

2)视频的播放

3)媒体文件检查

4)媒体捕捉

5)媒体编辑

6)媒体处理

7)媒体采样

8)媒体压缩

9)音频编解码

10)视频编解码

11)音频的音效处理

OpenGL

OpenGL常用于CAD、虚拟现实、科学可视化程序和电子游戏开发。

OpenGL(英语:Open Graphics Library,译名:开放图形库或者“开放式图形库”)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。

这个接口由近350个不同的函数调用组成,用来绘制从简单的图形比特到复杂的三维景象。而另一种程序接口系统是仅用于Microsoft Windows上的Direct3D。

OpenGL的高效实现(利用了图形加速硬件)存在于Windows,部分UNIX平台和Mac OS。这些实现一般由显示设备厂商提供,而且非常依赖于该厂商提供的硬件。开放源代码库Mesa是一个纯基于软件的图形API,它的代码兼容于OpenGL。但是,由于许可证的原因,它只声称是一个“非常相似”的API。

ARKit

ARKit是苹果在2017年WWDC推出的AR开发平台。开发人员可以使用这套工具iPhone和iPad创建增强现实应用程序。

AR的功能还可以应用在很多场景之中,比如新闻应用,可以在网页中实现图片的AR显示。

官网

https://developer.apple.com/cn/augmented-reality/arkit/

MFC (微软基础类库)

微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。

实时长语音转写

大会演讲投屏、实时直播字幕

对连续的音频流进行实时识别转写,配有内置的智能断句,达到“边说边出文字”

的效果,可用于大会演讲投屏、实时直播字幕、实时法庭庭审记录等场景。

官网

https://www.duiopen.com/openSource/technology/phonetic

QML

QML是Qt推出的Qt Quick技术的一部分,是一种新增的简便易学的语言。QML是一种陈述性语言,用来描述一个程序的用户界面:无论是什么样子,以及它如何表现。在QML,一个用户界面被指定为具有属性的对象树。 这使得Qt更加便于很少或没有编程经验的人使用。

QML实际上是Qt Quick (Qt4.7.0中的新特性)核心组件之一:Qt Quick是一组旨在帮助开发者创建在移动电话,媒体播放器,机顶盒和其他便携设备上使用越来越多的直观、现代、流畅UI的工具集合。

注解

还是不知道它什么东西。

ijkplayer

jkplayer是一个基于FFmpeg的轻量级Android/iOS视频播放器。FFmpeg的是全球领先的多媒体框架,能够解码,编码, 转码,复用,解复用,流,过滤器和播放大部分的视频格式。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

ExoPlayer

ExoPlayer是构建在Android低水平媒体API之上的一个应用层媒体播放器。和Android内置的媒体播放器相比,ExoPlayer有许多优点。ExoPlayer支持内置的媒体播放器支持的所有格式外加自适应格式DASH和SmoothStreaming。ExoPlayer可以被高度定制和扩展以适应不同的使用场景。

faiss

Faiss是Facebook AI团队开源的针对聚类和相似性搜索库,为稠密向量提供高效相似度搜索和聚类,支持十亿级别向量的搜索,是目前最为成熟的近似近邻搜索库。它包含多种搜索任意大小向量集(备注:向量集大小由RAM内存决定)的算法,以及用于算法评估和参数调整的支持代码。Faiss用C++编写,并提供与Numpy完美衔接的Python接口。除此以外,对一些核心算法提供了GPU实现。

https://www.cnblogs.com/yhzhou/p/10568728.html

视频会议系统

Ekiga 视频会议系统

https://ekiga.im/

OpenMeetings

https://openmeetings.apache.org/

VMukti

https://about.chatroulette.com/

让陌生人随机匹配在线视频聊天的系统

https://demo.bigbluebutton.org/gl/chu-iya-aqz-dgv

不错的在线会议系统,模仿对象,开源项目

前端工具

在线傻瓜设计工具

https://www.gaoding.com/

PDF.js

PDFJS是在线预览PDF的一款神器。

https://github.com/gangganghong/pdf.js

demo

https://mozilla.github.io/pdf.js/web/viewer.html

与浏览器查看PDF的优点:能看书签,能记书签,能改变单页查看还是双页查看

PDF在线转换工具

http://pdfdo.com/

共享白板

https://miro.com/login/

需要登录才能拥有共享白板的更多权限,非登录用户只有浏览权限。

内容太复杂,功能太多,有聊天,视频聊天、各种画笔等工具。

https://witeboard.com/c95f8b80-1bb6-11e8-9999-45f8982293a8

简单,只有文字、线条灯简单工具。参与者不需要登录。可作为仿写对象。

在线前端工具

https://codepen.io/mudontire/pen/Kjmzzp

https://koa.bootcss.com/

Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。

base64在线图片转换工具

http://tool.chinaz.com/tools/imgtobase/

利用 PDF.js 构建 PDF 的网页端渲染

https://xiaoruiw.com/blog/pdfjs-tutorial.html

不知道有什么用。构建的PDF,不能用canvas的getImageData和putImageData复制。

好博客

bugstack虫洞栈

https://bugstack.cn/

作者写了很多诸如IM这类作品,从行文看,是个很开朗幽默的人

技术名称

Could Native

Service Mesh

C++11

Serverless

Electron

数据库Oracle、DB2、PostgreSQL、MySQL、SQL Server、CockroachDB、Greeplum等的存储引擎系统架构、数据组织方式、存储格式、 编码方式、数据压缩等技术细节

Lazada电商搜索推荐工程团队:推荐系统、大流量在线服务、AI算法在线服务、召回/排序/策略/大数据/个性化;搜索流程、索引存储、计算优化、模型预测、特征打分、AB实验、定向、tensorflow。

U3D、Layabox-3D开发引擎、TypeScript

开源音视频框架和开源库,如:ffmpeg、VLC、mplayer

熟悉C/C++,有SIMD及GPU优化经验

熟悉STL,Boost

WebCRT

WebRTC samples

非常好的例子

https://webrtc.github.io/samples/

Getting Started with WebRTC

非常好的文档

https://www.html5rocks.com/en/tutorials/webrtc/basics/#toc-rtcdatachannel

与视频会议系统很相似的例子

https://www.bookstack.cn/read/webrtc-book-cn/spilt.9.05_putting_it_all_together.md

webrtc调试工具

快速浏览 Chrome WebRTC 内部工具

当您使用支持 WebRTC 的网络应用程序时,可以通过打开一个新标签页并在该标签页的位置栏中输入 chrome://webrtc-internals/ 来监视其状态

webRTC

WebRTC主要由3个部分组成:

getUserMedia:获取设备上可用媒体权限(视频、音频),需要用户授权。

RTCPeerConnection:建立通讯通道用于传输视频、音频。

RTCDataChannel:建立通讯的两端,通过RTCDataChannel对象进行数据交换。

操作系统实验资料

https://www.bookstack.cn/read/simple_os_book/zh-chapter-1-bootloader_up_os.md

不知道这个资料好不好,但这是我第一次看到的系统的关于操作系统的中文书

socket.io

socket.io 提供了默认事件(如:connect, message, disconnect)。另外,socket.io允许发送并接收自定义事件。

自定义事件:

1 socket.on(‘send message’, function(data) { 2 console.log(‘send message:::::::::’, data); 3 }); 事件的定义基本不变。所有的事件基本都是这个格式。

执行事件:

socket.emit(“send message”, {msg: ‘test send messsage’}); 这是个最基本的事件执行代码。其作用是返回一段提示信息给自己。其他人无法接收到。如果我们要给别人发送消息怎么办呢??

io.sockets.connected[socket.id].emit(‘send message’, {msg: ‘test specific message’}); 此行代码的作用就是给特定socket发送消息。只需要知道目标的socketId即可。因此,服务端最好要实现处理用户和socke关系的业务。

socket.broadcast.to(socket.id).emit(‘send message’, {msg: ‘test specific message by room’}); 这行代码的效果和上面一样是一样的。用户在建立socket链接后,默认都会加入一个room,该room的ID就是socket的ID。相当于一个特定的房间内只有一个用户。我们想该房间通知消息,该用户就可以接收到。不同的是上面的代码可以给自己发送消息,而本行代码不行,只能给别人发送消息。

广播消息:

复制代码 1 //全局广播消息(不包含自己) 2 socket.broadcast.emit(‘broadcast message’, {msg: ‘test broadcast message’}); 3 //房间内广播消息(不包括自己) 4 socket.broadcast.to(‘cg room’).emit(‘broadcast message to room’, {msg: ‘test broadcast message to room’}); 5 //全局广播消息(包括自己) 6 io.sockets.emit(‘broadcast message all’, {msg: ‘test broadcast message to all’}); 7 //房间内广播消息(包括自己) 8 io.sockets.to(‘cg room’).emit(‘broadcast message all in room’, {msg: ‘test broadcast message to all in room’}); 复制代码 这几行代码的作用是向某一范围内,所有已链接的socket发送消息。网上看到想房间内发送消息的时候,有的用in,有的用to,区别是in自己可以接收到,to自己接收不到。但我测试的结果是这俩其实是一样的。想房间内通知消息,是否需要屏蔽自己,也不是通过in和to来区分的。这可能是老版本和新版本的区别吧。

  推送,其实就是客户端A向服务器主动发送一条消息,服务器收到并根据要求进行转发,此时B客户端作为接收方,被动的接收服务器转发过来的数据。当然,中间涉及到用户状态的变更和维护。这里不做描述。而某些情况下,我们需要知道服务器或者客户端是否收到了发送过去的数据,我们可以发送带有确认机制的消息:

//Sending and getting data (acknowledgements) socket.emit(‘ack message’, {msg: ‘test ack message’}, function (data){

//回掉返回的确认消息,可以为任意JS支持的类型 console.log(data);

}); 其对应的事件定义方式需要改动一下:

socket.on(‘ack message’, function(data, fn) {

console.log(‘ack message:::::::::’, data); fn(true);

}); 此外,socket.io还提供一种消息发送机制volatile messages。意思大概是说,当服务器发送数据时,客户端因为各种原因不能正常接收,比如网络问题、或者正处于长连接的建立连接阶段。此时会让我们的应用变得 suffer(意会一下),那就需要考虑发送 volatile 数据。即使客户端没连线,一样可以这样发送,服务器会自动丢弃发送失败的数据。这里提供一个官方demo:

复制代码

1 var io = require(‘socket.io’)(80); 2 3 io.on(‘connection’, function (socket) { 4 var tweets = setInterval(function () { 5 getBieberTweet(function (tweet) { 6 socket.volatile.emit(‘bieber tweet’, tweet); 7 }); 8 }, 100); 9

10 socket.on(‘disconnect’, function () { 11 clearInterval(tweets); 12 }); 13 }); 复制代码

https://www.cnblogs.com/ggsfb/p/socketio.html

chrome://webrtc-internals/

WebAssembly

常用来和JS比较,是一种能运行于浏览器但并不是用JS写的语言,比JS快。

对浏览器语言的运行速度,要求以已经这么高了吗?什么场景有这种要求?

WebAssembly是一种汇编语言,但它的目标机器是“概念机器”。它被下发到浏览器后执行。

用C++写,然后转成WebAssembly。

这是我看下面的文章后凭记忆写的,中英文文章在下面:

An Abridged Cartoon Introduction To WebAssembly

https://www.smashingmagazine.com/2017/05/abridged-cartoon-introduction-webassembly/

图说 WebAssembly

https://www.zcfy.cc/article/an-abridged-cartoon-introduction-to-webassembly-ndash-smashing-magazine

编译原理

Stanford : Compilers 斯坦福大学:编译原理 视频教程,无中英文字幕

https://www.bilibili.com/video/av27845355/?p=5

国外精选视频课】CS-143 斯坦福编译原理(中文翻译) 合集 更新中 用中文字幕,不完整

https://www.bilibili.com/video/av70600292/

前端技术名称

对前端有一定的兴趣,尤其是 js 方面,了解使用过 js 和 css 的一些工具,比如 angular, reactjs,backbone,underscore,less,sass 等。了解 node 的使用。

有意思的博客

http://fakefish.github.io/

相比之下,我的博客很无趣。

Webpack

Webpack 非常容易操作,它是一个模块合并的工具,本质就是一个能够把各种组件(HTML,CSS,JS)构建成项目。最方便的是你只需要初始化配置一次,Webpack 会替你做那些繁琐的事情,同时也保证了让你可以在项目中混合使用各种技术而不头疼。

前端书,关于Webpack等

http://fakefish.github.io/react-webpack-cookbook/index.html

计算机网络

现在主要做编程。当年学习网络主要看《TCP/IP详解:卷一》,还有cisco一系列的书。

软件除了抓包软件,还要选一个配置终端比如secureCRT,安装系统的虚拟机比如VMware,接下来当然要推荐各种模拟环境。

小巧如Cisco Packet Tracer,虽然只是个模拟器,但是可以配置各种协议,发包还有动画,可以点击看每一步在做什么。另外还可以搜集各种题目(pka)进行配置。(ccna级别的实验都可以做)

gns3是陪伴我最久,在路由的模拟上比Cisco Packet Tracer要逼真,因为加载的cisco的路由器镜像(为此当年下30G左右的cisco镜像,然后常用的就2个),结合qemu以及虚拟机基本上常见网络环境都罩得住。(ccnp基本的实验都可以做)大杀器WEB-IOU,有了图形配置界面,模拟路由交换实验都不是事。(据说ccie的实验也可以做)

ensp,集各家之长,华为良心出品,中文手册很棒。不知道某个协议是什么,怎么配,都可以看手册解决。自从用上了这些模拟器,做一些实验都懒得跑实验室玩路由交换了,相比于插网线搬机器,还是在软件上拖拖拽拽方便。 当然以上模拟器对二层交换机的模拟支持的不是很完全,有条件的话可以在真机上配置。

鸿鹄论坛,还有yeslab现任明教教主讲的tcp/ip

如何自学并且系统学习计算机网络

推荐Stanford课程cs144,配合《计算机网络:自顶向下方法》(Computer Networking: A Top-Down Approach)。具体来说就是跟着cs144的课程安排走一遍,完成课程的lab啦。其实觉得cs144的公开视频讲得挺一般的,但是cs144新的lab真的很棒。lab的很大一部分是让你自己从零开始去写一个真实能用的tcp。写一遍之后,对tcp工作的原理以及设计思想就会有深得多的理解。我以前对tcp等网络原理的认识也是一团浆糊,但自从自己写了一遍之后,腰也不酸了,腿也不疼了,搬砖也更有力气了。毕竟研究表明,能自己实现一个tcp的人,很少有理解不了tcp原理的。

作者:胡津铭 链接:https://www.zhihu.com/question/22354846/answer/1435278469 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

CS144: 什么,你学不会TCP?那就来自己写一个吧!

https://zhuanlan.zhihu.com/p/175998415

在线前端工具

在线根据模板制作贺卡、海报等的工具

http://www.picxiaobai.com/editor.html?template_id=44742&status=2

https://818ps.com/search/0-0-0-0-0-null-760_0_0_0-0-0-0.html?user_source=r644816&sdclkid=ALeN152s152_brDDxg&bd_vid=8051609722768620250

这是怎么实现的?

Vue Json Design

基于 vjform 的 Vue 界面可视化设计器,拖控件制作有JS效果的HTML页面,我的感受是:惊叹。我完全不知道它是怎么实现的。

https://gitee.com/fyl080801_admin/vjdesign

基于JSON Schema的前端可视化活动编辑器

拖动控件,生成京东上常见的那种电商页面,也超出了我的理解能力,一定要看看代码,搞清楚它是怎么实现的

https://zhuanlan.zhihu.com/p/179005445

Vue可视化编辑之 - 店铺装修

https://zhuanlan.zhihu.com/p/260526408

前端流程图工具

https://app.diagrams.net/#Hgangganghong%2F8cc%2Fmaster%2Ftest%2FUntitled%20Diagram.drawio

http://topology.le5le.com/workspace

【前端vue进阶实战】:从零打造一个流程图、拓扑图项目【Nuxt.js + Element + Vuex】

https://juejin.im/post/6844904002392424456

在线Latex

https://www.overleaf.com/project/5f98b5151064790001b494a2