DCC

彻底搞懂 Redis 事务

∥☆過路亽.° 提交于 2020-04-23 18:33:19
提到redis的事务,相信很多初学的朋友会对它的理解和使用有些模糊不清,料想它和我们常见的关系型数据库(mysql 、mssql等)中的事务相同,也支持回滚,但这样理解就进入了一个误区,首先:关系型数据中的事务都是原子性的,而redis 的事务是非原子性的。再多说一句,什么是程序原子性?简单的理解就是:整个程序中的所有操作,要么全部完成,要不全部不完成,不会停留在中间某个环节。那么非原子性就是不满足原子性的条件就是非原子性了。我们用例子来解释一下: 原子性 :数据库中的某个事务A中要更新t1表、t2表的某条记录,当事务提交,t1、t2两个表都被更新,若其中一个表操作失败,事务将回滚。 非原子性 :数据库中的某个事务A中要更新t1表、t2表的某条记录,当事务提交,t1、t2两个表都被更新,若其中一个表操作失败,另一个表操作继续,事务不会回滚。(当然对于关系型数据库不会出现非原子性) Redis事务相关命令: MULTI : 开启事务,redis会将后续的命令逐个放入队列中,然后使用 EXEC命令来原子化 执行这个命令系列。 EXEC: 执行事务中的所有操作命令。 DISCARD: 取消事务,放弃执行事务块中的所有命令。 WATCH: 监视一个或多个key,如果事务在执行前,这个key(或多个key)被其他命令修改,则事务被中断,不会执行事务中的任何命令。 UNWATCH:

联发科处理器被抓跑分“作弊”:P95性能比天玑1000L还高?

两盒软妹~` 提交于 2020-04-23 16:11:16
手机性能基准测试作弊已有很长的历史,可追溯到整个行业(至少在智能手机行业时代如此),并且多年来一直是备受争议的报道话题。 几年前,一度被认为靠谱的基准测试软件,突然爆发了一场信任危机。原因是某些智能手机制造商在检测到跑分工具时有作弊的行为,导致实际体验未能达成消费者的预期。比如三星、华为等手机都被爆出过疑似跑分作弊的行为。 以三星为例,2014 年,测试人员发现三星通过添加源代码在基准测试中作弊,该代码能够检测基准测试应用程序是否在手机上运行,一旦发现,则以更快的速度(532MHz,正常情况下为 480MHz)运行手机。由此,三星遭到了集体诉讼,且该诉讼长达 4 年。2019 年 9 月 30 日,三星败诉,承认在基准测试中作弊,同意向 Galaxy S4 的购买者支付 10 美元赔偿,总金额高达1340万美元。 如今类似的事情还在上演,近期在联发科芯片上也被发现了疑似跑分“作弊”的行为。 联发科Helio P95胜过天玑1000L ? 事情的开始,要从 OPPO Reno3 说起。 外媒 Anandtech 发现,搭载 P95CPU 的欧洲版 OPPO Reno3 Pro 的跑分数值比搭载性能更强大的最新 Dimensity 1000L CPU 的国行版 Reno3 的高,这引起了 Anandtech 的质疑。 由此,Anandtech 分别使用匿名版(可帮助分值作弊)和常规版的

unity 制作简单帽子接球游戏

不问归期 提交于 2020-04-21 04:25:40
一、创建背景 创建新场景,建好基本文件夹,调整camera确保是正交投影模式,size调到10,导入相关素材。 在Sorting Layers中加两个工作层Background和Foreground(SortingLayer层级越靠前优先级越高,OrderLayer数字越大优先级越高)。 创建BG的sprite,将素材里面的天空背景放进sprite,Sorting Layer设置为Background。 将素材中的草地拖入场景,Sorting Layer设置为Background,OrderLayer设置为1,让它在天空背景的前面。 调整位置与天空BG和草地拖入一个命名为Background的Empty项目中一起管理,Empty位置为(0,0,0)。 创建天鹅飞过动画 找到素材里天鹅飞过的动画将SpriteMode属性设置为Multiultiple,打开Sprite Editor点击Slice菜单中的Slice按钮,就将这个动画的每一帧切割出来了。 创建天鹅飞过的动画的sprite,调整位置到(0,0,0),命名Swan,将素材swan_Sheet_0放进sprite,Sorting Layer设置为Background,OrderLayer设置为1。 点击window菜单Animation,打开对话框,创建一个Swan的动画,设置sample为10,点击Add Property—

CMake编译OpenCV4.0时opencv_ffmpeg.dll等下载失败的解决思路总结

走远了吗. 提交于 2020-04-21 03:39:50
一、Configure会报一些红色的警告信息,比如: 1 CMake Warning at cmake/OpenCVDownload.cmake:193 (message): 2 FFMPEG: Download failed: 7;"Couldn't connect to server" 3 4 For details please refer to the download log file: 5 6 D:/study/opencv_with_contrib_test_sln/CMakeDownloadLog.txt 7 8 Call Stack (most recent call first): 9 3rdparty/ffmpeg/ffmpeg.cmake:20 (ocv_download) 10 cmake/OpenCVFindLibsVideo.cmake:200 (download_win_ffmpeg) 11 CMakeLists.txt:636 (include) 提示FFMPEG下载失败,因为无法连接到服务器,打开 CMakeDownloadLog.txt 查看详细信息。 二、打开CMakeDownloadLog.txt #use_cache " D:/study/opencv-4.0.0/.cache " #do_copy " opencv_ffmpeg.dll

Mysql高手系列

只谈情不闲聊 提交于 2020-04-18 07:38:04
Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能。 这是Mysql系列第21篇。 本文开始连续3篇详解mysql索引: 第1篇来说说什么是索引? 第2篇详解Mysql中索引的原理 第3篇结合索引详解关键字explain 本文为索引第一篇:我们来了解一下什么是索引? 路人在搞计算机之前,是负责小区建设规划的,上级领导安排路人负责一个万人小区建设规划,并提了一个要求:可以快速通过户主姓名找到户主的房子;让路人出个好的解决方案。 方案1 刚开始路人没什么经验,实在想不到什么好办法。 路人告诉领导:你可以去敲每户的门,然后开门之后再去询问房主姓名,是否和需要找的人姓名一致。 领导一听郁闷了:我敲你的头,1万户,我一个个找,找到什么时候了?你明天不用来上班了。 这里面涉及到的时间有:走到每户的门口耗时、敲门等待开门耗时、询问户主获取户主姓名耗时、将户主姓名和需要查找的姓名对比是否一致耗时。 加入要找的人刚好在最后一户,领导岂不是要疯掉了,需要重复1万次上面的操作。 上面是最原始,最耗时的做法,可能要找的人根本不在这个小区,白费力的找了1万次,岂不是要疯掉。 方案2 路人灵机一动,想到了一个方案: 给所有的户主制定一个编号,从1-10000,户主将户号贴在自家的门口 路人自己制作了一个户主和户号对应的表格,我们叫做: 户主目录表 ,共1万条记录,如下: 户主姓名

Mysql高手系列

邮差的信 提交于 2020-04-18 07:37:28
Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能。 这是Mysql系列第20篇。 环境:mysql5.7.25,cmd命令中进行演示。 代码中被[]包含的表示可选,|符号分开的表示可选其一。 需求背景 我们在写存储过程的时候,可能会出现下列一些情况: 插入的数据违反唯一约束,导致插入失败 插入或者更新数据超过字段最大长度,导致操作失败 update影响行数和期望结果不一致 遇到上面各种异常情况的时,可能需要我们能够捕获,然后可能需要回滚当前事务。 本文主要围绕异常处理这块做详细的介绍。 此时我们需要使用游标,通过游标的方式来遍历select查询的结果集,然后对每行数据进行处理。 本篇内容 异常分类详解 内部异常详解 外部异常详解 掌握乐观锁解决并发修改数据出错的问题 update影响行数和期望结果不一致时的处理 准备数据 创建库: javacode2018 创建表:test1,test1表中的a字段为主键。 /*建库javacode2018*/ drop database if exists javacode2018; create database javacode2018; /*切换到javacode2018库*/ use javacode2018; DROP TABLE IF EXISTS test1; CREATE TABLE test1(a

JS base64 加密和 后台 base64解密(防止中文乱码)

被刻印的时光 ゝ 提交于 2020-04-17 09:34:14
【推荐阅读】微服务还能火多久?>>> 直接上代码 1,js(2个文件,网上找的) 不要觉的长,直接复制下来就OK // UnicodeAnsi.js文件 // 把Unicode转成Ansi和把Ansi转换成Unicode function UnicodeChr() { return ' 00A4,00A7,00A8,00B0,00B1,00B7,00D7,00E0,00E1,00E8,00E9,00EA,00EC,00ED,00F2,00F3,00F7,00F9,00FA,00FC,0101,0113,011B,012B,014D,016B,01CE,01D0,01D2,01D4,01D6,01D8,01DA,01DC,02C7,02C9,0391,0392,0393,0394,0395,0396,0397,0398,0399,039A,039B,039C,039D,039E,039F,03A0,03A1,03A3,03A4,03A5,03A6,03A7,03A8,03A9,03B1,03B2,03B3,03B4,03B5,03B6,03B7,03B8,03B9,03BA,03BB,03BC,03BD,03BE,03BF,03C0,03C1,03C3,03C4,03C5,03C6,03C7,03C8,03C9,0401,0410,0411,0412,0413,0414,0415

eval5: TypeScript编写的JavaScript解释器

耗尽温柔 提交于 2020-04-06 19:26:42
eval5是基于TypeScript编写的JavaScript解释器,100%支持ES5语法。 项目地址: https://github.com/bplok20010/eval5 使用场景 浏览器环境中需要使用沙盒环境执行JavaScript脚本 控制代码执行时长 不支持 eval Function 的JavaScript运行环境:如 微信小程序 研究/学习用 安装 npm install --save eval5 使用 import { Interpreter } from 'eval5'; const ctx = { console, hello(){ console.log('hello eval5') } } var interpreter = new Interpreter(ctx, { timeout: 1000 }); var result = interpreter.evaluate(` hello(); function sum(a, b) { return a + b; } sum(100,2 00); `) console.log(result); // 300 eval5不支持es6语法,可以先将es6或typescript转成es5 原理 eval5先将源码编译得到树状结构的抽象语法树(AST)。 抽象语法树由不同的节点组成

一篇文章教会你使用Python定时抓取微博评论

最后都变了- 提交于 2020-04-05 23:03:03
【Part1——理论篇】 试想一个问题,如果我们要抓取某个微博大V微博的评论数据,应该怎么实现呢?最简单的做法就是找到微博评论数据接口,然后通过改变参数来获取最新数据并保存。首先从微博api寻找抓取评论的接口,如下图所示。 但是很不幸,该接口频率受限,抓不了几次就被禁了,还没有开始起飞,就凉凉了。 接下来小编又选择微博的移动端网站,先登录,然后找到我们想要抓取评论的微博,打开浏览器自带流量分析工具,一直下拉评论,找到评论数据接口,如下图所示。 之后点击“参数”选项卡,可以看到参数为下图所示的内容: 可以看到总共有4个参数,其中第1、2个参数为该条微博的id,就像人的身份证号一样,这个相当于该条微博的“身份证号”,max_id是变换页码的参数,每次都要变化,下次的max_id参数值在本次请求的返回数据中。 【Part2——实战篇】 有了上文的基础之后,下面我们开始撸代码,使用Python进行实现。 1、首先区分url,第一次不需要max_id,第二次需要用第一次返回的max_id。 2、请求的时候需要带上cookie数据,微博cookie的有效期比较长,足够抓一条微博的评论数据了,cookie数据可以从浏览器分析工具中找到。 3、然后将返回数据转换成json格式,取出评论内容、评论者昵称和评论时间等数据,输出结果如下图所示。 4、为了保存评论内容,我们要将评论中的表情去掉

吐血干货,直播首屏耗时400ms以下的优化实践

帅比萌擦擦* 提交于 2020-03-17 23:09:10
某厂面试归来,发现自己落伍了!>>> 导读: 直播行业的竞争越来越激烈,进过18年这波洗牌后,已经度过了蛮荒暴力期,剩下的都是在不断追求体验。最近在帮做直播优化首开,通过多种方案并行,把首开降到500ms以下,希望能对大家有借鉴。 背景: 基于FFmpeg的ijkplayer,最新版本0.88版本。 拉流协议基于http-flv,http-flv更稳定些,国内大部分直播公司基本都是使用http-flv了,从我们实际数据来看,http-flv确实稍微更快些。但是考虑到会有rtmp源,这块也加了些优化。 IP直通车 简单理解就是,把域名替换成IP。比如 https://www.baidu.com/,你可以直接换成14.215.177.39,这样做的目的是,省去了DNS解析的耗时,尤其在网络不好时,访问域名,域名要去解析,再给你返回。不仅仅有时间解析过长的问题,还有小运营商DNS劫持的问题。一般就是在启动应用时,就开始对拉流的域名进行预解析好,存到本地,然后在真正拉流时,直接用就行。典型的案列,就是很多人使用HTTPDNS,这个github上也有开源,可以自行去研究下。 需要注意的是,这种方案在使用 HTTPS 时,是会失败的。因为 HTTPS 在证书验证的过程,会出现 domain 不匹配导致 SSL/TLS 握手不成功。 服务端 GOP 缓存 除了客户端业务侧的优化外