java技术圈 为您找到相关结果 12

golang的slice详解

切片的长度和容量不同,长度表示左指针至右指针之间的距离,容量表示左指针至底层数组末尾的距离。 切片的扩容机制,append的时候,如果长度增加后超过容量,则将容量增加2倍,同时变换了底层数组。 切片append机制,是把slice后边数据逐个覆盖写入。 切片copy机制,按其中较小的那个数组切片的元素个数进行复制。 --------------------- 作者:Shower稻草人 来源:CSDN 原文:https://blog.csdn.net/u013474436/article/details/88770501 版权声明:本文为博主原创文章,转载请附上博文链接! ...阅读全文

go-generics/README.md at master · llgoer/go

Permalink Dismiss Join GitHub today GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together. Sign up Branch: master Find file Copy path go-generics/README.md Find file Copy path t2krew 翻译改进 8496cd0 Aug 5, 2019 2 contributors Users who have contributed to this file 459 lines...阅读全文

博文 2019-08-17 01:48:28 generics · GitHub

【Go】深入剖析slice和array

array 和 slice 看似相似,却有着极大的不同,但他们之间还有着千次万缕的联系 slice 是引用类型、是 array 的引用,相当于动态数组,这些都是 slice 的特性,但是 slice 底层如何表现,内存中是如何分配的,特别是在程序中大量使用 slice 的情况下,怎样可以高效使用 slice?今天借助 Go 的 unsafe 包来探索 array 和 slice 的各种奥妙。 数组slice 是在 array 的基础上实现的,需要先详细了解一下数组。 ** 维基上如此介绍数组:** 在计算机科学中,数组数据结构(英语:array data structure),简称数组(英语:Array),是由相同类型的元素(element)的集合所组成的数据结构,分配一块连续的内存来存储,...阅读全文

博文 2020-03-11 02:52:57 thinkeridea博客

DASH 协议调研总结

本文是花椒前端团队总结文章,其中有一些图片是网上找的,如侵,请告知,马上处理什么是流媒体流媒体(streaming media)是指采用流式传输技术在网络上连续实时播放的媒体格式,如音频、视频或多媒体文件,采用流媒体技术使得数据包得以像流水一样发送, 如果没有流媒体技术, 那么我们就要像以前用迅雷下电影一样, 下载整个影片才能观看, 讲DASH之前先简单介绍一下常用的直播协议: HLS, RTMP, HDS协议. 因为DASH协议其实就是组合了以前的一些技术而发展出来的.1. RTMPRTMP(Real Time Messaging Protocol)实时消息传送协议是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输 开发的开放协议。是我们市面上绝大多数部分P...阅读全文

博文 2020-11-22 14:23:54 知乎

OLAP中roll-up和drill-down和slicing?

拿沃尔玛来说,现在要进行OLAP分析,针对三个维分别是时间维,商品维和地点维,这三个维度抽象成图像就是一个立方体,也就是Data Cube,在时间维上是四个季度,在地点维上,是北京、洛杉矶、伦敦、东京、柏林等等,在商品维上是电子类、食品类、生活用品类,Data Cube中的每一个小立方体表示某个地点(比如北京),在某个时间(比如第一季度)在某类商品上(比如电子类)的销售额。 现在开始Rool-Up,就是将细度减少,比如你将地点扩大为北美洲、亚洲、欧洲(这是根据你原有的地点对应有哪些大洲来扩大的),现在每一个小立方体的含义就变成在某个大洲(比如亚洲)、某个时间(第一季度)、某类商品(电子类商品)的销售额。简单来说,Rool-UP类似对维度的汇总。 而Drill-Down就是将细度增加,比如我们...阅读全文

博文 2020-08-09 11:50:15 知乎

Golang 并发赋值的安全性探讨 - 云+社区

我们知道 Golang 中变量的赋值不是并发安全的,实际情况果真如此吗? 1.什么是并发安全并发安全就是程序在并发情况下执行的结果是正确的。比如对一个变量简单的自增操作count++,在非并发下很好理解,而在并发情况下却容易出现预期之外的结果,这样的代码就是非并发安全的。因为count++其实是分成两步执行的,当分成了两步执行,那么其他协程就可以趁着这个时间间隙作怪。如一下 a b 两个协程同时 count++:count:= 1 a > 读取count : 1 b > 读取count : 1 a > 计算count+1 : 2 b > 计算count+1 : 2 a > 赋值count : 2 b > 赋值count : 2这就会发生明明 a b 协程计算了两次,可结果还是 2。2.str...阅读全文

博文 2021-09-13 07:06:54 腾讯云

硬核图解|tcp为何会粘包?背后的缘由让人暖心

事情从一个健身教练提及吧。程序员 李东,自称亚健康终结者,尝试使用互联网+的模式拓展本身的业务。在某款新开发的聊天软件琛琛上发布广告。golang 键盘说来就来。疯狂发送"李东",回车发送!,"亚健康终结者",再回车发送!面试 还记得四层网络协议长什么样子吗?算法 四层网络模型每层各司其职,消息在进入每一层时都会多加一个报头,每多一个报头能够理解为数据报多戴一顶帽子。这个报头上面记录着消息从哪来,到哪去,以及消息多长等信息。好比,mac头部记录的是硬件的惟一地址,IP头记录的是从哪来和到哪去,传输层头记录到是到达目的主机后具体去哪一个进程。网络 在从消息发到网络的时候给消息带上报头,消息和纷繁复杂的网络中经过这些信息在路由器间流转,最后到达目的机器上,接受者再经过这些报头,一步一步还原出发送...阅读全文

博文 2021-08-27 09:28:59 尚码园

Go语言实战笔记(五)| Go 切片

《Go语言实战》读书笔记,未完待续,欢迎扫码关注公众号flysnow_org,第一时间看后续笔记。 切片也是一种数据结构,它和数组非常相似,因为他是围绕动态数组的概念设计的,可以按需自动改变大小,使用这种结构,可以更方便的管理和使用数据集合。 内部实现 切片是基于数组实现的,它的底层是数组,它自己本身非常小,可以理解为对底层数组的抽象。因为机遇数组实现,所以它的底层的内存是连续非配的,效率非常高,还可以通过索引获得数据,可以迭代以及垃圾回收优化的好处。 切片对象非常小,是因为它是只有3个字段的数据结构:一个是指向底层数组的指针,一个是切片的长度,一个是切片的容量。这3个字段,就是Go语言操作底层数组的元数据,有了它们,我们就可以任意的操作切片了。 声明和初始化 切片创建的方式有好几种,我们先...阅读全文

博文 2020-03-11 02:53:47 飞雪无情的博客

前端大文件上传方法(深度好文)

首先祝大家端午节快乐!事业 家庭 更上一层楼。!最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现。在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表格数据、上传影音文件等。如果文件体积比较大,或者网络条件不好时,上传的时间会比较长(要传输更多的报文,丢包重传的概率也更大),用户不能刷新页面,只能耐心等待请求完成。下面从文件上传方式入手,整理大文件上传的思路,并给出了相关实例代码,由于PHP内置了比较方便的文件拆分和拼接方法,因此服务端代码使用PHP进行示例编写。文件上传的几种方式首先我们来看看文件上传的几种方式。普通表单上传使用PHP来展示常规的表单上传是一个不错的选择。首先构建文件上传的表单,...阅读全文

博文 2020-06-12 09:08:50 知乎

使用 FFmpeg 生成 ts 切片并使用 AES-128 加密

前言 最近有个需求,需要将服务器视频资源进行加密提供给客户端播放,防止用户盗用视频。 常用的加密方式 m3u8切片加密(本文使用) 各种在线播放视频的网站广泛使用的技术,切片同样是使用AES加密算法。 优点:各种浏览器,手机,小程序都能兼容,通用性很好。 缺点:由于是公开的算法,还原也十分简单,有很多影音嗅探工具能直接下载还原,加密效果很弱,防小白可以,聊胜于无。 防翻录:无 文件流加密 采用异或或者AES等文件流加密方式,对文件数据进行处理。播放时动态解密相应的数据到内存再播放。 优点:加密和解密速度都很快。 缺点:必须使用专用的播放器才能解密,加密强度较弱,专业破解人员可写工具瞬间提取。 防翻录:通过播放器,APP实现 视频逐帧转码加密 加密强度最高但同时也是技术实现最麻烦的一种。软件需...阅读全文

博文 2023-12-04 10:48:37 掘金

Golang bytes缓冲区使用介绍_golang bytebuffer_小镇程序员的博客

缓冲区原理简介: go字节缓冲区底层以字节切片做存储,切片存在长度len与容量cap, 缓冲区写从长度len的位置开始写,当len>cap时,会自动扩容。缓冲区读会从内置标记off位置开始读(off始终记录读的起始位置),当off==len时,表明缓冲区已全部读完 并重置缓冲区(len=off=0),此外当将要内容长度+已写的长度(即len) <= cap/2时,缓冲区前移覆盖掉已读的内容(off=0,len-=off),从避免缓冲区不断扩容。 package main import ( "bytes" "fmt" ) func main() { byteSlice := make([]byte, 20) byteSlice[0] = 1 // 将缓冲区第一个字节置1 byteBuffer ...阅读全文

博文 2023-09-13 14:31:20 CSDN博客

网络视频的防盗与破解

网络视频(Web 视频)是指利用 HTML5 技术在浏览器中播放的视频,这类视频资源通常可以被随意下载,某些行业(比如教培行业)如果希望保护自己的视频资源不被下载,就需要对视频做防盗链处理。 防盗链需要着重加强两个方面的安全性:网络传输和客户端。 网络传输安全网络传输层面能做的不多,HTTPS是必要的,除此之外的防护措施效果也有限。 验证 Referer防盗链最常规的手段是验证Referer,而伪造Referer几乎零成本,所以它只防君子不防小人,没用。 请求防重放盗链可以理解成一种对静态资源的“重放攻击”,所以可以用应对重放攻击的思路来改造静态资源请求,通过一个动态接口返回静态资源,并且加入变量让动态请求短时间内失效,比如随机数、时间戳、流水号等等。 这种方式可以做到让链接地址没有复用价值...阅读全文

博文 2024-03-29 16:54:25 前端路上