black

利用广度优先搜索图的算法解决词梯问题

百般思念 提交于 2020-08-05 00:12:16
词梯问题 考虑这样⼀个任务:将单词FOOL转换成SAGE。在解决词梯问题时,必须每次只替换⼀个字⺟,并且每⼀步的结果都必须是⼀个单词,⽽不能是不存在的词。 eg: FOOL -> POOL -> POLL -> POLE -> PALE -> SALE -> SAGE 我们研究从起始单词转换到结束单词所需的最小步数 用图算法解决词梯问题的步骤: 用图表示单词之间的关系。 用一种名为广度优先搜索的图算法找到从起始单词到结束单词的最短路径。 构建词梯图 第⼀个问题是如何⽤图来表⽰⼤的单词集合。如果两个单词的区别仅在于有⼀个不同的字⺟,就⽤⼀条边将它们相连。如果能创建这样⼀个图,那么其中的任意⼀条连接两个单词的路径就是词梯问题的⼀个解。下图展示了一个小型图,可用于解决从FOOL到SAGE的词梯问题。注意,它是无向图,并且边没有权重。 创建这个图有多种方式。假设有一个单词列表,其中每个单词的长度都相同。 为每个单词创建顶点。 如果两个单词只相差⼀个字⺟,就可以在图中创建⼀条边,将它们连接起来。 对于只有少量单词的情况,这个算法还不错。但是,假设列表中有5110个单词,将⼀个单词与列表中的其他所有单词进⾏⽐较,时间复杂度为 。对于5110个单词来说,这意味着要进⾏2600多万次⽐较。那实在是太糟糕了。 采⽤下述⽅法,可以更⾼效地构建这个关系图。假设有数⽬巨⼤的桶,每⼀个桶上都标有⼀个

html5 canvas+js实现ps钢笔抠图(速抠图 www.sukoutu.com)

笑着哭i 提交于 2020-08-05 00:08:58
html5 canvas+js实现ps钢笔抠图( 速抠图 www.sukoutu.com ) 根据html5 canvas+js实现ps钢笔抠图的实现,aiaito 开发者开发了一套在线抠图工具, 速抠图sukoutu.com 是一款公益性质的免费在线快速抠图工具, 支持支持8倍高清钢笔抠图、矩阵抠图、图片压缩、图片尺寸调整等,该工具旨在为用户提供更快捷高效的抠图服务。 1. 项目要求需要用js实现photoshop中钢笔抠图功能,就用了近三四天的时间去解决它,最终还是基本上把他实现了。 做的过程中走了不少弯路,最终一同事找到了canvans以比较核心的属性globalCompositeOperation = "destination-out", 属性可以实现通过由多个点构成的闭合区间设置成透明色穿透画布背景色或是背景图片,这样省了许多事。 2.实现效果: 鼠标点完之后会将所有的点连成闭合区间,并可自由拖拉任一点,当形成闭合区间后,可在任意两点之间添加新点进行拖拉。 3.实现思路: 设置两层div,底层设置图片,顶层设置canvas画布(如果将图片渲染到画布上,抠图时会闪烁,所以至于底层),在画布上监视 鼠标事件反复渲染点及之间连线,形成闭合区间后将整体画布渲染小块背景图片,并将闭合区间渲染透明色。并把点的相对画布 坐标记录或更新到数组中去。截完图后,将点的坐标集合传回后台

直播中录制视频的技术解析

可紊 提交于 2020-08-04 23:22:15
直播录制视频时,是如何生产视频数据? 封装格式 的主要作用是把视频码流和音频码流按照一定的格式存储在一个文件中。 为什么要分封装格式和视频编码格式呢? 这个其实跟网络分七层模型一个原理。解耦和,降低依赖,底层给上层提供基础功能,底层和上层都都可以单独扩展,可以以多种方案组合编码与封装,比如 MP4 与 H264 、 MP4 与 MPEG 、 TS 与 H264 等等。比如这里面的这边文章的编码就只负责将最原始的音频和视频数据就行压缩,而压缩完的数据要怎么组织就拜托给上层的封装,封装接到视频音频数据负责给数据编号,指定同步协议,加入字幕等操作。经过封装后,得到的就是可以播放的上面提到的视频文件 MP4 或者 MKV 等等。把这个过程反过来就是视频播放的过程。 1 、流媒体源 PC 端的摄像头、屏幕 对于 PC 端的流媒体源,可以使用 Open Broadcaster Software 串流(支持多种直播平台)。 移动端 iOS 、 Android 的摄像头和麦克风。 iOS 、 Android 主要是系统提供的 API 实现。 webRTC ( Web Real-Time Communication ) webRTC 是一个支持网页浏览器进行实时语音对话或视频对话的技术,可以在网页浏览器中进行采集、传输、播放,缺点是只在 PC 的 Chrome 上支持较好,移动端支持不太理想。 使用

Vue SpringBoot 文件操作、上传、预览和删除

Deadly 提交于 2020-08-04 22:13:27
视频演示: https://www.bilibili.com/video/BV1VK4y1s7b1/ 需要完成以下步骤: 创建工程并引入依赖包 spring-boot-starter-web lombok 对文件进行操作,上传、预览和删除 添加跨域功能 前端使用VUE,前后端分离 看不懂代码,不建议下载 可以参考另一文章,文件上传采用Form方式(前后端不分离) #FileUploadController.java package com.example.spring.fileupload; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.Resource; import org.springframework.core.io.UrlResource; import org.springframework.http.HttpHeaders; import org.springframework.http.ResponseEntity; import org.springframework.util

为GDI函数增加透明度处理

点点圈 提交于 2020-08-04 20:05:34
用户对客户端的UI的要求越来越高,采用alpha通道对前景背景做混合是提高UI质量的重要手段。 UI开发离不开GDI,然后要用传统的GDI函数来处理alpha通道通常是一个恶梦:虽然有AlphaBlend这个API可以做alpha混合,但是前提必须是操作的DC中的位图有alpha通道的数据,问题的关键在于GDI函数在操作的地方会把原来的alpha通道清空。 使用GDI做alpha混合还要增加透明度关键要解决2个问题: 1、需要把内容画到一个临时位图上,同时保护好alpha通道。 2、在于把临时位图的数据和原位图做混合,而且不能改变镂空部分原位图的alpha通道的值。 在SOUI的render-gdi中我采用下面的类来实现GDI的半透明。 class DCBuffer { public : DCBuffer(HDC hdc,LPCRECT pRect,BYTE byAlpha,BOOL bCopyBits = TRUE) :m_hdc(hdc) ,m_byAlpha(byAlpha) ,m_pRc(pRect) ,m_bCopyBits(bCopyBits) { m_nWid = pRect->right-pRect-> left; m_nHei = pRect->bottom-pRect-> top; m_hBmp = SBitmap_GDI::CreateGDIBitmap(m

DBMS_SQL 执行查询示例

别来无恙 提交于 2020-08-04 18:55:08
通常情况下,需要动态执行查询语句尽量使用语法更简洁的 OPEN {SYS_REFCURSOR} FOR ... 或 EXECUTE IMMEDIATE ... 但 当查询语句的列或绑定变量无法确定数量或类型时,还是需要使用更加灵活的 DBMS_SQL 包 ,下面是使用 DBMS_SQL 包执行列数量可变的查询示例;一个典型的应用场景就是报表的生成,因为我们可能无法事先知道这个报表有多少列。 DECLARE -- 可变列数的报表查询编程示例 l_Cursor_Id INTEGER ; l_Col_Count INTEGER ; l_Desc_Tbl2 Dbms_Sql.Desc_Tab2 ; l_Ret INTEGER ; l_Row_Count BINARY_INTEGER := 0 ; l_Row_Index BINARY_INTEGER := 1 ; c_Bulk_Size CONSTANT BINARY_INTEGER := 2 ; -- 每次提取的记录数 -- 报表的每一列最终都是 VARCHAR2 类型 TYPE Col_Val_Tbl_Type IS TABLE OF Dbms_Sql.Varchar2_Table INDEX BY PLS_INTEGER ; l_Col_Val_Tbl Col_Val_Tbl_Type ; BEGIN -- 打开并解析查询语句 l

认识服务器热插拔技术

China☆狼群 提交于 2020-08-04 18:47:08
认识服务器热插拔技术 我们都知道 , 即使再高的服务器可用性也有可能出现故障的时候 , 只不过不知道它何时出现而已 。 然而一旦服务器出现故障 , 通常不太可能像 PC 机那样停下机来进行长时间的维修 ( 除非迫不得已 ), 而是采用在线更换故障配件来进行维护的 , 这就是本文所要介绍的 “ 热插拔 ”(Hot Plug) 技术诞生的初 热插拔技术就是指在服务器系统正常开机 、 运行的状态下 , 对故障配件进行更换 、 或者添加新的配件 , 涉及到三个方面的专业术语 , 那就是热替换 (Hot Replacement)、 热添加 (Hot Expansion) 和热升级 (Hot Upgrade)。 热插拔技术的蔓延 热插拔技术其实很早就有了 , 最早的是 SCSI 硬盘的热插拔技术 , 我们最容易想起的也是它 。 那是因为当时在整个服务器配件中 , 出现故障机率最大的就是硬盘 , 而当时的服务器硬盘接口基本上都是 SCSI 接口类型 , 所以在 SCSI 硬盘上实现热插拔就成为当时之急需了 。 随着硬盘阵列技术的日益成熟 , 热插拔 SCSI 硬盘阵列也就成了服务器热插拔硬盘的代名词 。 它可以实现在在线情况下更换故障硬盘 、 添加新的硬盘进阵列中 , 极大地方便了服务器硬盘阵列系统的维护 。 然而随着服务器应用的深入 , 服务器所承受的负荷远远走出了当时的情形 ,

左边导航 右边分屏 框架实现

心已入冬 提交于 2020-08-04 18:23:35
左边导航,点击右边 跳转对应页面 实现: CCC2.html #主框架代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>数据操作平台</title> <style> html, body { width: 100%; height: 100%; padding: 0; margin: 0; } .container { width: 100%; height: 100%; display: flex; } .left { flex: 0 0 200px; padding: 10px; margin: 0; } .left li { cursor: pointer; } .left li:hover { color: blue; } .right { flex: 1; border: 1px solid #000; } </style> </head> <body> <div class="container"> <ul class="left"> <li class="item" frameSrc="{{ url_for('FenLan') }}">B2C落地页_数据操作</li> <li class="item" frameSrc=#>第二个iframe</li> <li class=

视频直播中如何进行推流?

非 Y 不嫁゛ 提交于 2020-08-04 18:15:27
视频直播中如何进行推流?今天来跟大家分享一下直播中的推流技术。 1 、协议 国内常见公开的直播协议有几个: RTMP 、 HDL ( HTTP-FLV )、 HLS 、 RTP 。 RTMP Real Time Messaging Protocol 是 Macromedia 开发的一套视频直播协议,现在属于 Adobe 。 使用 RTMP 技术的流媒体系统有一个非常明显的特点:使用 Flash Player 作为播放器客户端,而 Flash Player 现在已经安装在了全世界将近 99% 的 PC 上,因此一般情况下收看 RTMP 流媒体系统的视音频是不需要安装插件的。用户只需要打开网页,就可以直接收看流媒体。 和 HLS 一样都可以应用于视频直播,区别是 RTMP 基于 flash 无法在 iOS 的浏览器里播放,但是实时性比 HLS 要好。所以一般使用这种协议来上传视频流,也就是视频流推送到服务器。 rtmp 现在大部分国外的 CDN 已不支持,在国内流行度很高。原因有几个方面: 开源软件和开源库的支持稳定完整。如斗鱼主播常用的 OBS 软件,开源的 librtmp 库,服务端有 nginx-rtmp 插件。 播放端安装率高。只要浏览器支持 FlashPlayer 就能播放 RTMP 的直播。相对其他协议而言, RTMP 协议初次建立连接的时候握手过程过于复杂( RTMP

5.1. PHP

只愿长相守 提交于 2020-08-04 17:37:46
内容索引: 5.1. PHP 5.1.1. 后门 5.1.1.1. php.ini构成的后门 5.1.1.2. .user.ini文件构成的PHP后门 5.1.2. 反序列化 5.1.2.1. PHP序列化实现 5.1.2.2. PHP反序列化漏洞 5.1.2.3. 相关CVE 5.1.2.3.1. CVE-2016-7124 5.1.3. Disable Functions 5.1.3.1. 机制实现 5.1.3.2. Bypass 5.1.4. Open Basedir 5.1.4.1. 机制实现 5.1.5. 安全相关配置 5.1.5.1. 函数与类限制 5.1.5.2. 目录访问限制 5.1.5.3. 远程引用限制 5.1.5.4. Session 5.1.5.4.1. Session.Save 5.1.5.4.2. Session.Upload 5.1.6. PHP流 5.1.6.1. 简介 5.1.6.2. 封装协议 5.1.6.3. PHP支持流 5.1.6.3.1. 输入输出流 5.1.6.3.2. fd 5.1.6.3.3. memory与temp 5.1.6.3.4. input 5.1.6.4. filter 5.1.6.4.1. 过滤器列表 5.1.6.4.2. 过滤器利用tricks 5.1.7. htaccess injection payload 5