技术文章

计划任务Crontab

馋奶兔 提交于 2021-02-20 16:10:13
一、安装crontab yum -y install crontabs #安装 chkconfig crond on #设为开机启动,先要安装chkconfig(yum install -y chkconfig) systemctl start crond #启动 systemctl stop crond #停止 systemctl status crond #查看服务状态 二、设置任务计划 crontab -e crontab文件的格式: minute hour day month weekday username command /bin/bash /root/dellog.sh(脚本路径) 附:crontab规则详细实例 1.每天6点执行 0 6 * /bin/bash /root/dellog.sh 2.每天6:30执行 30 6 * /bin/bash /root/dellog.sh 3.每周二的6:00执行 (0-6是周日到周六) 0 6 2 /bin/bash /root/dellog.sh 4.每月2号的6:00执行 0 6 2 /bin/bash /root/dellog.sh 5.每天2-6点执行 0 2-6 * /bin/bash /root/dellog.sh 6.每天的0-6点每隔2小时执行 0 2/0-6 * /bin/bash /root/dellog

Vim的简单使用

时间秒杀一切 提交于 2021-02-20 16:09:34
一、Vim 的简单实用 记录 vim 的一些简单用法。 二、normal模式下的操作 1、快速回到上次编辑的地方 按键盘的 gi 2、在文本间上下左右移动 h :左移 j :下移 k :上移 l :右移 3、快速移动到下一个单词 w/W :快速移动到下一个单词开头。 e/E :快速移动到下一给单词结尾。 b/B :回到上一个单词开头。 > 上方小写字母和大写字符的区别,大写的表示以空白字符进行分割,小写表示以非空白字符进行分割。 > > eg: aa "bb" cc,用小 w 会跳转到 双引号,在到b,在到c;用大 W 直接到双引号,然后到c。 4、行间的搜索 命令 解释 需求 示例语句 命令 结果 f{char} 移动到 {char} 这个字符上 查询第一个 a (光标在此)bb cc aa dd aa fa 定位到 c后面的 a 上 t{char} 移动到{char}这个字符的前一个字符上 定位到a后面的空格 bb cc aa(光标在此) dd aa ta 定位到 d 后面的空格上 F{char} 反过来搜索,移动到这个字符{char}上。 定位到d后面的a上 bb cc aa dd(光标在此) aa Fa 定位到d后面的a上 就像上面的 a 可能出现多次,如果第一次没有搜索到,可以使用 ; 搜索该行的下一个,使用 , 搜索该行的上一个。 5、行首行尾的移动 命令 解释

基于 Serverless 技术的视频截帧架构实战

∥☆過路亽.° 提交于 2021-02-20 16:03:30
前言 视频直播是一种创新的在线娱乐形式,具有多人实时交互特性,在电商、游戏、在线教育、娱乐等多个行业都有着非常广泛的应用。随着网络基础设施的不断改善以及社交娱乐需求的不断增长,视频直播在持续渗透进大家的日常生活,并占据用户的零碎休闲时间。视频直播的技术支撑能力也在不断提高,从而促进视频直播市场规模从2014的212.5亿元增长到2020年的548.5亿元,并将在未来五年继续以12.8%左右的增长率快速发展。 视频截帧需求概述 直播行业受到越来越多的法律、法规和政策的规限,在行业一般标准和运营规程的约束下,每一个直播平台都有义务对非法的直播内容,以及主播与观众之间的不当互动采取措施,为直播行业更为规范的发展做出贡献。如何第一时间监控到直播流中的非法内容,是直播平台需要面对的共同挑战,视频截帧就是满足内容审核需求的常规操作。视频截帧可以根据视频直播的不同风险等级,选择不同的频率对直播流进行截帧处理,保存后的图片可以统一上传到自建或第三方内容审核平台,用于涉黄、涉政、广告等场景的识别。除此之外,某些特定的业务需求也需要通过视频截帧来实现,比如在线课堂类应用对学生的听课状态进行智能分析等。 视频截帧技术架构分析 对于视频流的截帧操作,可以通过FFmpeg命令实现。FFmpeg的截帧命令使用非常简单,每次截取一张图片后,可以将图片上传到对象存储OSS

Kafka如果丢了消息,怎么处理的?

倖福魔咒の 提交于 2021-02-20 16:02:27
Kafka存在丢消息的问题,消息丢失会发生在Broker,Producer和Consumer三种。 Broker Broker丢失消息是由于Kafka本身的原因造成的,kafka为了得到更高的性能和吞吐量,将数据异步批量的存储在磁盘中。消息的刷盘过程,为了提高性能,减少刷盘次数,kafka采用了批量刷盘的做法。即,按照一定的消息量,和时间间隔进行刷盘。这种机制也是由于linux操作系统决定的。将数据存储到linux操作系统种,会先存储到页缓存(Page cache)中,按照时间或者其他条件进行刷盘(从page cache到file),或者通过fsync命令强制刷盘。数据在page cache中时,如果系统挂掉,数据会丢失。 服务器上高速读写以及同步到Replica 上图简述了broker写数据以及同步的一个过程。broker写数据只写到PageCache中,而pageCache位于内存。这部分数据在断电后是会丢失的。pageCache的数据通过linux的flusher程序进行刷盘。刷盘触发条件有三: 主动调用sync或fsync函数 可用内存低于阀值 dirty data时间达到阀值。dirty是pagecache的一个标识位,当有数据写入到pageCache时,pagecache被标注为dirty,数据刷盘以后,dirty标志清除。 Broker配置刷盘机制

数据库设计 Step by Step 专题(2)——数据库生命周期

陌路散爱 提交于 2021-02-20 15:17:52
点击上方 SQL数据库开发 ,关注获取 SQL视频教程 SQL专栏 SQL基础知识汇总 SQL高级知识汇总 作者:知行思新 来源:http://www.cnblogs.com/DBFocus/archive/2011/04/09/2010904.html 引言: 数据库设计 Step by Step (1) 得到这么多朋友的关注着实出乎了我的意外。这也坚定了我把这一系列的博文写好的决心。近来工作上的事务比较繁重,加之我期望这个系列的文章能尽可能的系统、完整,需要花很多时间整理、思考数据库设计的各种资料,所以文章的更新速度可能会慢一些,也希望大家能够谅解。 系列的第二讲我们将站在高处俯瞰一下数据库的生命周期,了解数据库设计的整体流程 数据库生命周期 大家对软件生命周期较为熟悉,数据库也有其生命周期,如下图所示。 图(1)数据库生命周期 数据库的生命周期主要分为四个阶段:需求分析、逻辑设计、物理设计、实现维护。 这个系列的博文将主要关注数据库生命周期中的前两个阶段(需求分析、逻辑设计)。如图中红色框出的部分。 数据库的物理设计,包括索引的选择与优化、数据分区等内容。这些内容也非常丰富,而且可以自成体系,园子里也有很多好文章,故在本系列中不作主要关注。本文最后将给出一些链接供大家参考。 数据库生命周期的四个阶段又能细分为多个小步骤,我们配合图(1)来看看每一小步包含的内容。 阶段1

Portainer实战

假装没事ソ 提交于 2021-02-20 15:17:14
Portainer是一个轻量级的Docker环境管理UI,可以管理docker host和docker swarm(我主要看中了能管理swarm这个,毕竟市面上能管理swarm的平台不多)。之所以说是轻量级的,是因为部署只有一个container,也可以使用二进制程序直接部署,不像rancher的部署,部署了一大堆container,而且portainer是跨平台的,windows和linux都可以部署,废话不多说,直接开干.... 环境 ubuntu16.04-1 swarm manager portainer ubuntu16.04-2 swarm works portainer agent ubuntu16.04-3 swarm works portainer agent ps:环境还是之前文章的swarm集群环境 部署 独立容器启动 docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /path/on/host/data:/data portainer/portainer ps:portainer的数据存储在容器内部的/data目录,这样容器重启的时候数据会丢失,所以要确保数据持久化 docker run -d

Eureka 集群高可用配置.

烂漫一生 提交于 2021-02-20 15:16:09
SERVER:1 server: port: 1111 eureka: instance: hostname: ${spring.cloud.client.ip - address} instance - id: ${eureka.instance.hostname}:${server.port} preferIpAddress: true #指定通过IP注册,一般服务集群时配置,需要ip-address参数一起设置(保证hostName和ip-address一样),以免eureka管理页面出现不可用分片提示信息(unavailable- replicas),服务的注册默认是通过hostName注册的,当判断注册的hostName和服务 ip - address: ${EUREKA_IP:${eureka.instance.hostname}} #强制指定eureka的ip地址 client: service - url: defaultZone: http: // ${eureka.instance.hostname}:1112/eureka/ fetch-registry: true #集群时需要强制手动指定,fetch-registry、register-with- eureka都需要设置为true register -with-eureka: true

聊聊身边的嵌入式,价格不菲的运动手表

妖精的绣舞 提交于 2021-02-20 15:15:44
当跑步爱好者遇上运动手表 不知从什么时候开始,跑步变得流行起来,我也是跑步大军中的一员,并且跑完后还会在朋友圈晒个图。这是我第一次跑5KM的记录, 中途因为体力不支数次想要放弃,硬是被一个小伙伴鼓励着、连拉带走跑完全程的。 当体验了跑步的乐趣之后,后面就一发不可收拾了,下面是我最远的一次跑步记录, 下面是最快的一次5KM跑,不过记录还停留在2年前,至今未被自己打破,😓 之前我一直用手机APP记录跑步,用过的APP有咕咚、悦跑圈和Keep,用多了以后因为各种原因都不是很满意。 并且单从UI方面,我觉得都不如下面这个朋友发的好看, 后来得知他用的是佳明运动手表跑的,配上手机端的APP使用的。不过在了解其价格需要数千元之后,我就没再关注了,那时心里想为了一个跑步让我花这么多钱,我才不干呢。 直到前不久一个朋友送了我一块他戴过的运动手表(颂拓的Spartan Sport Wrist HR,他自己换成了佳明fēnix 6X Battery Life),我就彻底改为戴运动手表跑步了。 体验了几次之后,觉得运动手表确实很香。相比我之前用手机记录运动,有以下几点好处: 1)用起来更方便,只要戴在手腕上即可,解放了双手,外出跑步时甚至不用带手机出门了。跑完后的数据会记录在手表里,也可以轻松的通过蓝牙同步到手机APP中。 2)可以记录心率值,不过手表自带的心率检测不是很准,它用的是光电检测原理

OpenCV图像处理形态学操作腐蚀Erode与膨胀Dilate

时间秒杀一切 提交于 2021-02-20 15:14:48
算法: 从图像处理角度看,二值图像的腐蚀和膨胀就是将一个小型二值图(结构元素,一般为3*3大小)在一个大的二值图上逐点移动并进行比较,根据比较的结果作出相应处理而已。 膨胀算法:用3X3的结构元素,扫描 二值图像 的每一个像素,用结构元素与其覆盖的二值图像做“与”运算,如果都为0,结构图像的该像素为0,否则为1.结果:使二值图像扩大一圈。 腐蚀算法:用3X3的结构元素,扫描 二值图像 的每一个像素,用结构元素与其覆盖的二值图像做“与”运算,如果都为1,结构图像的该像素为1,否则为0.结果:使二值图像减小一圈。 注意: OpenCV里面的腐蚀膨胀都是针对 白色 目标区域的。 说,膨胀使图像 变大一圈, 那是指 图像中的 白色目标区域 扩大了一圈~~~ ~~~腐蚀,亦然。 ==================================== 代码: #include <stdio.h> #include <cv.h> #include <highgui.h> #include <cvaux.h> //必须引此头文件 <p> </p><p>#pragma comment(lib, "cv.lib") #pragma comment(lib, "cxcore.lib") #pragma comment(lib, "highgui.lib") </p>int main( int argc

形态学-腐蚀、膨胀、开操作、闭操作

五迷三道 提交于 2021-02-20 15:14:10
形态学-腐蚀、膨胀、开操作、闭操作 接下来介绍图像 形态学 中的几个基本操作:腐蚀、膨胀、开操作、闭操作。 1.腐蚀 结构A被结构B腐蚀的定义为, A ⨀ B = { z | ( B ) z ⊆ A } A⨀B={z|(B)z⊆A} 可以理解为,移动结构B,如果结构B与结构A的交集完全属于结构A的区域内,则保存该位置点,所有满足条件的点构成结构A被结构B腐蚀的结果。 2.膨胀 结构A被结构B膨胀的定义为, A ⨁ B = { z | ( B ^ ) z ⋂ A ≠ ∅ } A⨁B={z|(B^)z⋂A≠∅} 可以理解为,将结构B在结构A上进行卷积操作,如果移动结构B的过程中,与结构A存在重叠区域,则记录该位置,所有移动结构B与结构A存在交集的位置的集合为结构A在结构B作用下的膨胀结果。 图示中红色框内的区域表示结构A在结构B的作用下膨胀的结果。 这里有另外一个例子。 3.开操作 先腐蚀后膨胀的操作称之为开操作。它具有消除细小物体,在纤细处分离物体和平滑较大物体边界的作用。 采用上图的结构B对原件进行开操作, 4.闭操作 先膨胀后腐蚀的操作称之为闭操作。它具有填充物体内细小空洞,连接邻近物体和平滑边界的作用。 采用上图的结构对原件进行闭操作, 来源: oschina 链接: https://my.oschina.net/u/4386639/blog/3623773