神工鬼斧惟肖惟妙,M1 mac系统深度学习框架Pytorch的二次元动漫动画风格迁移滤镜AnimeGANv2+Ffmpeg(图片+视频)快速实践
前段时间,业界鼎鼎有名的动漫风格转化滤镜库AnimeGAN发布了最新的v2版本,一时间街谈巷议,风头无两。提起二次元,目前国内用户基数最大的无疑是抖音客户端,其内置的一款动画转换滤镜“变身漫画”,能够让用户在直播中,把自己的实际外貌转换为二次元“画风”。对于二次元粉丝来说,“打破次元壁,变身纸片人”这种自娱自乐方式可谓屡试不爽:但是看多了就难免有些审美疲劳,千人一面的“锥子脸”,一成不变的“卡姿兰”式大眼睛,让人多少有点味同嚼蜡的感觉,未免过犹不及,失之现实。而基于CartoonGan的AnimeGAN动漫风格滤镜则能够在保留原图特点的同时,兼具二次元的炫酷和三次元的写实,颇有些刚柔并济、举重若轻的感觉:并且AnimeGAN项目组业已在线上发布demo接口,可以直接运行模型效果:https://huggingface.co/spaces/akhaliq/AnimeGANv2 但是受限于带宽以及线上资源瓶颈,线上迁移队列经常会处于排队的状态,同时一些原图的上传也可能造成个人隐私的外泄。所以本次我们在M1芯片的Mac os Monterey基于Pytorch深度学习框架,本地搭建AnimeGANV2版本的静态图片以及动态视频的转化服务。我们知道,目前Pytorch的cpu版本在M1芯片mac上的支持版本是Python3.8,在之前的一篇文章中:金玉良缘易配而木石前盟难得|M1 Mac os(Apple Silicon)天生一对Python3开发环境搭建(集成深度学习框架Tensorflow/Pytorch),曾经使用condaforge来构建Pytorch的开发环境,这次我们使用原生的安装包进行安装,首先进入Python官网,下载 Python3.8.10 universal2 稳定版 :https://www.python.org/downloads/release/python-3810/双击安装即可,随后进入终端键入命令安装Pytorch:pip3.8 install torch torchvision torchaudio这里我们默认安装最新的稳定版1.10,随后进入Python3.8命令行,导入torch库:(base) ➜ video git:(main) ✗ python3.8
Python 3.8.10 (v3.8.10:3d8993a744, May 3 2021, 09:09:08)
[Clang 12.0.5 (clang-1205.0.22.9)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>>确定Pytorch可以使用之后,将官方项目克隆下来:git clone https://github.com/bryandlee/animegan2-pytorch.gitAnimeGAN也是基于生成对抗网络(Generative adversarial network),原理就是我们手上有一定量的原图,我们可以称之为三次元图片,真实的图片特征会存在一个分布,比如:正态分布,均匀分布,或者更为复杂的分布形式,那么GAN的目的是通过生成器来生成一批与真实分布接近的数据。这些数据可以理解为二次元的优化,但是会保留三次元的一些特征,比如说眼睛变大、脸型更接近滤镜模型的画风等等,在我们的处理中,这个生成器趋向于使用神经网络,因为它能表示更为复杂的数据分布情况。下载成功之后,可以在weights文件夹下看到四种不同的权重模型,其中celeba\_distill.pt和paprika.pt是用来转化风景图片的,而face\_paint\_512\_v1.pt和face\_paint\_512\_v2.pt则更注重于肖像的转化。首先安装图像处理库Pillow:pip3.8 install Pillow随后新建test\_img.py文件:`from PIL import Image
import torch
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
model = torch.hub.load("bryandlee/animegan2-pytorch:main", "generator", pretrained="celeba_distill")
#model = torch.hub.load("bryandlee/animegan2-pytorch:main", "generator", pretrained="face_paint_512_v1")
#model = torch.hub.load("bryandlee/animegan2-pytorch:main", "generator", pretrained="face_paint_512_v2")
#model = torch.hub.load("bryandlee/animegan2-pytorch:main", "generator", pretrained="paprika")
face2paint = torch.hub.load("bryandlee/animegan2-pytorch:main", "face2paint", size=512)
img = Image.open("Arc.jpg").convert("RGB")``out = face2paint(model, img)
out.show()`这里以凯旋门的照片为例子,分别使用celeba\_distill和paprika滤镜查看效果,注意本地请求需要关闭ssl证书检测,同时首次运行需要下载线上模型参数:这里图像尺寸参数指的是宽高通道的总数,接下来就是人物肖像动漫风格转化了,调整导入的模型生成器类型,输入图片改成人物肖像:from PIL import Image
import torch
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
import numpy as np
#model = torch.hub.load("bryandlee/animegan2-pytorch:main", "generator", pretrained="celeba_distill")
#model = torch.hub.load("bryandlee/animegan2-pytorch:main", "generator", pretrained="face_paint_512_v1")
model = torch.hub.load("bryandlee/animegan2-pytorch:main", "generator", pretrained="face_paint_512_v2")
#model = torch.hub.load("bryandlee/animegan2-pytorch:main", "generator", pretrained="paprika")
face2paint = torch.hub.load("bryandlee/animegan2-pytorch:main", "face2paint", size=512)
img = Image.open("11.png").convert("RGB")
out = face2paint(model, img)
out.show()可以看到,v1滤镜相对风格化更强烈一些,而v2在风格化的基础上相对保留了原图的特征,源于三次元又不拘泥于体验,架空却又不流于虚浮,比抖音的漫画滤镜不知道高到哪里去了。下面我们来看看动态视频的动漫滤镜转换,视频从广义上来讲,就是多张图片的连拍播放,只不过取决于视频帧的速率问题,帧速率也称为FPS(Frames PerSecond)的缩写——帧/秒,是指每秒钟刷新的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次。 越高的帧速率可以得到更流畅、更逼真的动画,每秒钟帧数(FPS)越多,所显示的动作就会越流畅。这里可以通过第三方软件将连贯的视频转换为以FPS为单位的图片,在m1 mac os系统中,推荐使用著名的视频处理软件:Ffmpeg使用arm架构的Homebrew进行安装:brew install ffmpeg安装成功后,在终端键入ffmpeg命令查看版本:(base) ➜ animegan2-pytorch git:(main) ✗ ffmpeg
ffmpeg version 4.4.1 Copyright (c) 2000-2021 the FFmpeg developers
built with Apple clang version 13.0.0 (clang-1300.0.29.3)
configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/4.4.1_3 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-avresample --enable-videotoolbox安装没有问题,随后准备一个视频文件,新建 video\_img.py:import os
# 视频转图片
os.system("ffmpeg -i ./视频.mp4 -r 15 -s 1280,720 -ss 00:00:20 -to 00:00:22 ./myvideo/%03d.png")这里我们使用Python3内置的os模块直接运行ffmpeg命令,针对当前目录的视频,以每秒15帧的速率进行转化,-s参数代表视频解析度,-ss参数可以控制视频的开始位置和结束位置,最后是导出图片的目录。运行脚本之后,进入myvideo目录:(base) ➜ animegan2-pytorch git:(main) ✗ cd myvideo
(base) ➜ myvideo git:(main) ✗ ls
001.png 004.png 007.png 010.png 013.png 016.png 019.png 022.png 025.png 028.png
002.png 005.png 008.png 011.png 014.png 017.png 020.png 023.png 026.png 029.png
003.png 006.png 009.png 012.png 015.png 018.png 021.png 024.png 027.png 030.png
(base) ➜ myvideo git:(main) ✗可以看到,图片按照帧数作为下标文件名已经转换完毕。接着需要利用AnimeGAN滤镜对图片进行批量转换:from PIL import Image
import torch
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
import numpy as np
import os
img_list = os.listdir("./myvideo/")
# model = torch.hub.load("bryandlee/animegan2-pytorch:main", "generator", pretrained="celeba_distill")
# model = torch.hub.load("bryandlee/animegan2-pytorch:main", "generator", pretrained="face_paint_512_v1")
model = torch.hub.load("bryandlee/animegan2-pytorch:main", "generator", pretrained="face_paint_512_v2")
# #model = torch.hub.load("bryandlee/animegan2-pytorch:main", "generator", pretrained="paprika")
face2paint = torch.hub.load("bryandlee/animegan2-pytorch:main", "face2paint", size=512)
for x in img_list:
if os.path.splitext(x)[-1] == ".png":
print(x)
img = Image.open("./myvideo/"+x).convert("RGB")
out = face2paint(model, img)
out.show()
out.save("./myimg/"+x)
# exit(-1)每一次转换都将原图保留并且滤镜转化后的图片存放在相对目录myimg里面,随后新建img\_video.py将其重新转换为视频:import os
# 图片转视频
os.system("ffmpeg -y -r 15 -i ./myimg/%03d.png -vcodec libx264 ./myvideo/test.mp4")依然是每秒15帧的速率,和原视频相同。如果原视频带有音轨,可以先将音轨进行分离操作:# 抽离音频
import os
os.system("ffmpeg -y -i ./lisa.mp4 -ss 00:00:20 -to 00:00:22 -vn -y -acodec copy ./myvideo/3.aac")进行动漫滤镜转换之后,将转换后的视频和原视频的音轨进行合并操作:# 合并音视频
os.system("ffmpeg -y -i ./myvideo/test.mp4 -i ./myvideo/3.aac -vcodec copy -acodec copy ./myvideo/output.mp4")原视频的测试用例:转换后效果:在m1芯片的加持下,基于cpu版本的Pytorch跑起来效率还是不错的,不过令人遗憾的是适配m1芯片的gpu版本的Pytorch我们还需要等待一段时间,在上个月,Pytorch项目组成员soumith给出过这样的回应:So, here's an update. We plan to get the M1 GPU supported. @albanD, @ezyang and a few core-devs have been looking into it. I can't confirm/deny the involvement of any other folks right now. So, what we have so far is that we had a prototype that was just about okay. We took the wrong approach (more graph-matching-ish), and the user-experience wasn't great -- some operations were really fast, some were really slow, there wasn't a smooth experience overall. One had to guess-work which of their workflows would be fast. So, we're completely re-writing it using a new approach, which I think is a lot closer to your good ole PyTorch, but it is going to take some time. I don't think we're going to hit a public alpha in the next ~4 months. We will open up development of this backend as soon as we can.可以看出来,项目组应该是彻底为m1芯片重构Pytorch底层,公开测试版也不会在近期推出,也许明年的下半年会放出来,还是非常值得期待的。结语:无论是清华大学的CartoonGAN,还是基于CartoonGAN的AnimeGANv2,毫无疑问,它们都是业界的翘楚,是顶峰中的顶峰,就算是放在世界人工智能的范围上,摆在PyTorch-GAN这样的项目旁边,也是毫不逊色的,在人工智能领域,AnimeGANv2向世界宣布,中国人只能制造药丸补剂的历史已经一去不复返了。
RocketMQ 消息收发弹性--生产集群如何解决大促场景消息收发的弹性&降本诉求|学习笔记
开发者学堂课程【消息队列 RocketMQ 5.0 云原生架构升级课程:RocketMQ 消息收发弹性--生产集群如何解决大促场景消息收发的弹性&降本诉求】学习笔记,与课程紧密联系,让用户快速学习知识。课程地址:https://developer.aliyun.com/learning/course/1234/detail/18400Rocket MQ消息收发弹性--生产集群如何解决大促场景消息收发 主要内容:一、产品介绍:什么是消息收发弹性二、产品使用及限制:消息收发弹性的使用及限制三、使用方式及演示:结合业务场景的最佳使用方式 今天分享阿里云Rocket MQ5.0场景消息收发功能,并且通过该功能生产集群是如何解决大促场景消息收发的弹性以及降本诉求。本次介绍将从产品介绍、产品使用及限制、使用方式及演示等三个方面进行介绍。在介绍Rocket MQ5.0的实例的消息收发弹性之前,先从整体上介绍一下阿里的策略。 一、产品介绍:什么是消息收发弹性 通常认为业务方往往存在预期外的突发业务热点和毛刺流量,为了应对这些突发热点常规扩容的是无法及时应对的,服务存在不确定性的风险。因此为了应对突发流量,设计了一套处理机制,首先是黄色部分,这部分相当于需要满足规格内的预期流量,这是毋庸置疑的,因为每个规格是对应的一个预期内的GPS上限。然后还要应对弹性区间内的突发流量,为了应对这个突发流量,需要做到可以随时开启的弹性能力。最后就是要对完全超过弹性上限的流量进行限流,来保证服务的稳定可靠。针对弹性区间的突发流量的集群,如果是通过常规扩容的方式,则需要更多的时间,在这段时间之内业务会受损,若仅仅是为了这部分突发流量,就把资源控容到一个比较大的规格,并不划算。若使用5.0实例的消息收发弹性能力,可以将弹性区的突发流量收到秒级响应的,并且针对大数据的预期内的短期的突发流量可以是做到按量收费,也更加实惠。因为仅仅用户真正使用到了弹性区间内的一部分流量才会进行收费。 接下来具体介绍5.0消息收发弹性能力的实例,这个能力最直观的感受其实就是在5.0实例行业有一个自适应弹性的TPS这一部分,可以看到在收发TPS弹性的旁边有额外自适应的弹性TPS,则用户可以通过对部分进行设置,就可以快速低成本的应对大促短时间内的突发流量。不直接升级规则、提高标准而使用弹性TPS来满足突发流量的场景的原因是,此处假设一个大促场景,比如说在今晚的0点有大促活动,如果使用社区收发彩信功能,那这些用户完全可以提前几天就把弹性功能打开,等到大促结束流量恢复之后再把这个功能关闭,实际上不关闭也不会有什么问题,因为如果没有使用的话就不进行收费,使用之后才会收费。但是如果通过升级规格提升标准TPS来处理突发流量,同样是提前几天就把规则给升高,那么在大促前这几天实际上是按照高规格进行收费的,但是又无法使用高规格的TPS,故此用户实际上是花了更多的钱,并且造成了资源的浪费。即使是用户为了避免自己过度浪费,在大促当天0点之前升级规则,这也会出现问题,一个是用户需要付出的额外的精力来关注Rocket MQ进行按时分配,实例的分配是一个非常消耗资源的操作,并且耗时时间会很长,没有办法做到开箱即用秒级生效。这样的话可能会对用户的业务造成一些有损的影响,使用消息弹性功能的话,可以秒级成效,开箱即用的,而且是弹性的,也是弹性收费的。但是弹性的TPS也不是一个解决问题万能的,它也是有上限的。可以看到在上图所示,它的上限其实基本上是在标准TPS的基础上有一半的弹性TPS。也就是说如果用户预估自己的业务流量,即使是标准TPS加上弹性TPS仍然无法满足的话,此时只能通过升级规则进行扩容处理,这种情况下使用消息收发弹性功能是满足不了的。消息收发发弹性还是会进行扩容弹性,仅仅因为弹性的计算节点已经没有办法满足这个需求,需要扩容存储来满足这种需求,所以需要升配规则,这部分的原理后面会有详细介绍。还有用户可能会问,日常TPS在2500左右,可不可以购买图里的实例,还是购买一个2000标准TPS的实例,但是若把弹性功能打开,弹性有1000,实际上是可以满足消息发送至3000 TPS的。在这样的场景下,其实建议直接使用标准发送消息TPS大于2500的实例,因为弹性TPS这部分的使用会有额外收费。如果一天24个小时都在大量的使用弹性TPS,基本上不能直接使用更高规格的实例,这样才会更加实惠。 接下来介绍5.0实例是如何具体实现消息收发弹性能力的,并且在扩容的场景下对比传统自建的基础上具有的优势。若左图所示,传统自建集群它是一个存储机资源部分的架构,在这种架构下捕捉是一个很重的数据,可以看到同时需要处理客户端的请求,需要负责消息的读取和写入,即需要同时负责计算和存储两方面的功能。那这样的话,就是作为的一个状态结构,那如果想要扩容的话,就需要很重的操作,时间也会比较慢,而且在很多时候,并不需要真的把握存储能力的扩容,仅仅是为了应对短时间的高TPS的请求计算能力的。那此时为了满足这种短时间的高速TPS请求,将其中一个辅助扩容,但实际上随着扩容出来的存储能力是被浪费掉的。再来看一下右图的5.0实例的结构,首先可以看到5.0实例的架构是一个存储计算分离的模式,用户的客户端仅仅计算节点,计算节点才会创作节点之间的消息的读取、写入或者存储的部分。客户端并不会直接访问存储节点,消息收发弹性功能实际上就是意味着client的弹性得益于存储计算分离的架构,可以快速低成本的扩容计算层的节点。计算层的节点作为工作的应用扩容的过程十分便捷,并且依赖于阿里云云厂商拥有大量资源池的前提下,配送到资源的材质扩容。Rocket MQ 5.0消息收发弹性能力,一方面依赖于阿里云作为云厂商的弹性能力和自身的存储分离的方案才得以实现的。也就是说在大促这种短时间大量突发流量的场景下,实际上大部分是不需要扩容存储节点,此时就可以通过开通消息收发弹性功能的能力来满足需求。 二、产品使用及限制:消息收发弹性的使用及限制 接下来讲解产品的使用及限制,消息收发弹性功能仅仅是支持专业版和铂金版,标准版实例是不支持,并且可以看到,如上图所示,专业版的单机规格也是不支持消息收发弹性功能,因为这个单机版实际上是给用户作为一个测试验证的测试实例,并不建议用户在上面生产业务,因为它是单机版的,没有办法生产业务。而且可以看到不同规格的实例的弹性TPS上限也是不同的,基本上是在标准TPS的基础上额外会有一半的弹性TPS。上面这张图展示的是标准版的弹性TPS上限,如图所示,其他规格的弹性上限小伙伴们可以自行参照官网文档,在这里面就不具体列出。收费的标准之前也介绍过,是额外计费的,而且计费是按照小时进行收费的,计费的具体方式是超过标准TPS的部分流量乘以使用时长再乘以弹性规格的使用单价计算得出。而且可以看到针对不同版本的实例,在不同地域,它的单价实际上会有一些略微的差别。 用户可能担心使用此部分弹性TPS会不会有一些稳定性的风险,因为毕竟是在基础标准的TPS之外额外提供的能力,这样给人一种感觉,就是对于实例,如果使用了消息收发弹性的功能,是不是因为这个实例已经是处在一种超出额外预算的状态,关于这个问题,实际上是不需要担心的,因为对于不同的规格都已经经过了线上的压缩验证,实际上超出了标准TPS的这个弹性TPS是享受一样的稳定性,为期三个月的保障。同时可以看到5.0实例的三个版本,标准版,专业版,铂金版,它的稳定性SIV是啊逐渐升高的,即弹性TPS的这部分是与实例整体稳定性IOS是满足实例整体性SIV的。不会因为使用了弹性GPS它的稳定性就会下降,是不会这样的。 三、使用方式及演示:结合业务场景的最佳使用方式最后进行操作消息收发弹性能力,进而验证这个功能。因为Rocket MQ 5.0的实例依然支持使用Rocket MQ 4.0实例的交叉访问,所以在这里分别提供了一个一点叉客户端和五点叉客户端的测试代码的实例。可以看到这个程序才写了两千个线程的线程池,并且通过rob limit 的根据输入参数设置了每秒最大的发送设备条数。在程序中会打印发送失败的原因,并且每秒会统计一下总共发送的消息量,根据这个功能,可以验证是不是能达到预期想要的一秒中发送的消息TPS。 此处已经购买好了一个专业版的实例,而且此实例默认是不会开启消息收发弹性能力的。如果要开启的话,需要在实例消息的页面点击开启弹性,进入到实例修改页面,再点开消息弹性的按钮。具体要注意的是在这里可以调整收发信息请求的占比,因为一条消息可能会被多个股东订阅,那这样的话发送一条消息被三个股东订阅,那它的发送消费比例就是1:3,就意味着如果有一条消息的写入会有三个消息的消费,就有三次消费,那整体的TPS就是4,也就是一条消息对应4个TPS。用户可以根据自己的业务场景以及是如何使用这个消息的,自定义设置消息收发的占比。现在先不开启弹性能力,可以看到发送TPS上限是2000,此时先尝试发送2300 GPS时会出现的问题。可以看到现在基本上每秒成功发送在2200左右,然后其实很多消费都是公司发至线路上去,可以看到报错信息里面会打印出限流阈值。示的是标准TPS标准发送TPS是2000,但是能够跑到差不多2200左右,因为不会限制的很严格,会预留一定的空间,避免边界情况,例如一个用户就偶尔超了一点点的这种情况是不希望对用户造成业务影响的,所以会预留一定的空间。 接下来设置好弹性实例,并且设计触发比改成4:5比,即发送占比改成40%。现在可以看到已经成功修改了。那现在再尝试发送2300的TPS,因为这个时候实例实际上应该是可以发送到2400的,还有1600的标准TPS发送和800信息TPS发送。现在已经成功发送300左右个TPS了,并且没有触发任何的限流场景,这已经意味着已经满足了之前的预期情况。以上是本节课的全部内容,如果小伙伴们感兴趣的话,也可以自己根据弹性实例来进行验证。
交易所开发推荐一些高级功能
安全性是至关重要的。虽然这是一个显而易见的事实,但我还是很痛苦地看到大多数普通人都缺乏安全意识。而许多专家以为每个人都对安全问题有深入的理解,然后设计或推荐一些高级功能,这些功能不仅难用,一不小心还容易搞砸了,这也让我很痛苦。安全性是一个广泛的议题,虽然在很多相关领域中我不是专家,但我目睹了许多人遇到安全问题。近期,加密货币价格上涨,市场活动越发频繁,很多新入市者又回到加密货币领域中来。在这篇文章中,我将尽我所能,使用平实易懂的语言来解释一些与持有加密货币息息相关的安全概念。它们包括:一些有关安全性的基础概念我们要/不要自行持有加密货币,应该如何持有我们要/不要在交易平台上持有加密货币,应该如何持有其它话题首先,没有任何事务是100%安全的。比方说,万一哪天真的小行星撞地球,那么无论你采用哪种储蓄方式,资金都不太可能安全吧。是的,你可以把资金存在在太空中,但这种储蓄能维持多久呢?而且如果地球都不在了,它的价值还在吗?也许到了那时候,你早已不在乎这件事了。所以,当我们说到安全性,我们其实在问这样一个问题:“这样足够安全吗?”那么我们先来定义一下“足够安全”这个概念吧。对于不同人、不同目的而言,其定义也是不同的。如果你把100美元存进消费用钱包,你可能不需要超高安全性,放进手机钱包就可以了。但是对于数百万美元,或者是关乎身家性命的钱财,你就需要采取更强大的安全保障措施了。在下文内容中,我们将探讨较大金额资金的安全保障问题。要想保障所持有的加密货币的安全,你只需要做以下3件事:防止他人窃取。防止自己丢失。找到一种资金转移方法,万一你不在了,这笔资金还可以转给你深爱的人。听起来很简单,对吧?但要真正做到这3件事是需要一定的知识、努力和智慧的,而大多数人都要么不懂,要么忽略了它们。下面我们展开来说。我们要/不要自行持有加密货币,应该如何持有“我的密钥,我的资金”。真的是这样吗?很多创世加密货币都坚持说只有自己持有加密货币才是安全的,但从未考虑这样做对普通人来说是多大的技术难题。这真的是最好的建议吗?我们现在来讨论一下这种做法。让我先问你一个问题:比特币私钥长什么样?如果你不知道,那请你继续读下去。比特币私钥长这样:KxBacM22hLi3o8W8nQFk6gpWZ6c3C2N9VAr1e3buYGpBVNZaft2p它只是一串数字和字母的组合。拥有它就能通过该地址转移比特币。还有一个概念就是“助记词”,它由12或24个英文单词按特定顺序组合而成。它们可以用来生成一系列私钥。很多钱包都使用助记词。在后续内容中,我们会使用“私钥”这一词汇,但文章提及的多数流程和相关推荐对“助记词”也同样适用。回到正题。要想保障自己持有的加密货币的安全性,你需要:防止他人获取你的私钥;防止黑客攻击,防止电脑遭受病毒和网络攻击等等。防止自己丢失私钥;对数据进行备份以防止丢失或设备损坏,并做好备份。找到一种资金转移方法,如果你不幸离世,还可以把私钥转移给你深爱的人。这一设想并不那么令人愉悦,但作为对所爱的人负责任的成年人,我们必须管理这一风险。下面让我们来仔细一一分析。防止他人获取你的私钥这是显而易见的风险。我们都听说过黑客、病毒、木马等等。我们都不想让这些东西靠近我们存放代币的地方。要充分做到这一点,我们的设备就不能连接到互联网,也不能从网上下载任何文件。这样的话,我们又能怎样以安全的方式发送和接收加密货币呢?让我们来说说可以使用的一些不同设备。计算机是其中一个选择,其通常功能也比较丰富。如果使用计算机来储存代币,那计算机就不能接入互联网,或者其它任何网络。一旦接入了网络,黑客就有可能利用操作系统或者其它应用软件的漏洞找到攻击机会。要知道,所有的软件都是有漏洞的。那么,如果计算机没有接入网络,我们又如何安装软件呢?我们可以用CD ROM或者U盘,并安装至少3种杀毒软件来确保它们是干净的。下载软件(操作系统或钱包)到U盘上,等待72小时,不断检查更新通知,确保所下载的软件或者下载软件的网站没有安全性问题。官方网站被黑、下载包被木马替换的情况非常多见。我们下载软件一定要到官方网站。另外,用开源软件也可以减少蠕虫出现几率。虽然我们自己不是程序员,但开源软件已经过其他程序员检查,蠕虫出现的概率较低。所以,操作系统我们应该使用稳定版本的Linux(而不是Windows或者Mac),并且只用开源的钱包软件。安装好所有软件和操作系统以后,我们就可以用一个干净的U盘进行交易的脱机签名。对于不同钱包而言,操作方式也不尽相同,这就不在本篇文章的探讨范围了。除了比特币,其它很多代币都没有可以进行脱机签名的钱包。同时,我们需要确保所用设备的物理安全性。因为如果有人偷了这一设备,他就可以直接进入这一设备。因此,我们要确保对硬盘进行强加密,这样即使有人拿到了硬盘,也没有办法读取它。不同操作系统有不同的加密工具。硬盘加密教程也不在本篇文章的内容范围,但在网上可以轻易找到。如果以上几件事都做好了,你可能不必再看下面的内容了。但如果你不喜欢这些,还有其它几种选项。接下来一个选项是手机。现在,因为有了沙盒设计的移动设备操作系统,非根/越狱手机要比计算机安全得多。Android系统版本太多了,没办法一一追踪, 所以我通常推荐使用iPhone 。我们应该有这样的一台手机,它仅用于钱包的安装,不用于其它任何用途。这台手机应该一直处于飞行模式,只有在进行钱包交易时才打开。我也推荐为这台手机配备单独的SIM卡,并且只用4G接入互联网。千万不要连接任何WiFi。仅在进行交易签名和软件升级时才连接到网络。如果账户里资金数额不是太大的话,这样做一般是没问题的。一些手机钱包有脱机签名功能(通过扫描二维码进行),这样从钱包App下载完成到生成私钥的过程中我们的手机完全不需要联网。这样我们就可以确保私钥从未在一台连过网的手机上存在过。这样做可以避免钱包App被蠕虫病毒入侵,或是向开发者回送数据。这些情况以前很多钱包都发生过,即便官方版本也不例外。但这样做的缺点是,我们也无法进行钱包App或者操作系统的升级。要升级软件就要在另一台手机上安装App的最新版本,将其设为飞行模式,生成一个新地址,备份(后续会讲到),然后将资金发送到新手机上。这样做很麻烦。另外,这些钱包所支持的代币/区块链数量也有限。同时,我们还需要确保手机的物理安全性。虽然最新版本的iPhone硬盘是完全加密的,但据称也有可以通过破解pin码对iPhone解锁的设备。硬件钱包我们也可以使用硬件钱包。这些设备就是为了永久保存私钥而设计的,这样就不需要进行电脑备份。交易签名也直接在硬件上进行。但不是所有东西都是100%完美的。硬件钱包也可能存在硬件、软件漏洞等。市面上有很多不同的硬件钱包。我们通常建议选择有较长历史的、品牌知名度更高的那些,因为它们经过了更多检验。两个主流的硬件钱包品牌之中,已有不同报告称其中一个一旦被黑客拿到手,就能轻易获取私钥。所以,我们一定要确保它们的物理安全性。另外,几乎所有硬件钱包都需要与计算机(或者手机)软件互动才能完成操作。所以,我们还得确保计算机是没有病毒、不受黑客攻击的。有些病毒可以在交易的最后一刻把目的地址篡改成黑客的地址。所以,我们要在设备上仔细验证交易的目的地址是否正确。即便是这样,确保计算机的安全也是必须的。有了硬件钱包,的确可以避免一些最简单的黑客窃取私钥的操作,但我还是强烈建议准备一台干净的计算机作为专用计算机,并且把防火墙功能全部打开。但总体来说,想要自行持有代币的话,硬件钱包是一个不错的选择。但它比较麻烦的是备份的保存,我们在下一节将会讲到。钱包和设备还有很多类型。我无法在此一一介绍,但以上所说都是最标准的类型了。现在我们已经探讨了如何降低(而不是消除)被他人窃取私钥的概率,那么对于如何自行持有代币这个问题,我们就已经解答1/3了。防止自己丢失密钥我们可能会遇到丢失储存代币的设备,或者设备受损的情况。因此,我们需要:备份。There are many different methods here too. Each has pros and cons.备份也有很多种方法,并且每一种都有其优缺点。但根本上来说,我们希望做到的是在不同地理位置的多重备份,并且不被他人看见(加密)。我们可以用一张纸写下来。有些使用助记词的钱包会推荐这一方式,因为写下12或24个英文单词还算比较容易。但对于私钥来说,我们很容易弄错大小写,或者字迹太潦草(比如分不清O和0),并且后续我们很难弄清楚到底是哪里出了问题。然而,用纸记还有很多更严重的问题。这些纸可能被:丢失 – 和其它纸一起弄丢了毁坏 – 被火烧了或是被洪水冲走了容易被他人读取 – 没有加密有些人把密钥纸条存进银行保险库,但因为以上原因,我通常不建议这么做。不要以为给纸条拍照(或者截图)或者把它上传到云就已经安全备份了。如果黑客攻击邮箱或者计算机,它们会轻而易举就找到你的密钥。此外,云服务商也可能对其进行多重备份,存放在不同地方,他们的员工也有可能看到这些信息。有些专门设计的金属标签可以用于助记词备份的保存。这些金属标签基本上不会被毁坏,因此大体上可以避免火烧或洪水的风险。但是,它并不能解决实体丢失或者容易被读取的问题。很多人会把金属标签存在银行保险库,并且通常和黄金和其它金属放在一块。我猜喜欢买金属产品的人很容易会这样做。如果你采用这种方法,就要了解它的局限性和风险。我推荐的做法是使用几个U盘。 但是这不需要什么技术手段(典型的“为专家而设计”谬论)。市面上有抗震/防水/防火/防磁的U盘。我们可以把加密版本的私钥备份存进几个这样的U盘,并把它们存放在不同地点(朋友家或亲戚家)。这样就解决了之前提到了所有问题了:多个地点、不容易损坏或丢失、不容易被他人读取。这样做的关键是强加密。相应的工具市面上很多,并且还会不断变得更先进。VeraCrypt就是其中一款入门级工具,加密程度还不错。它的前身TrueCrypt曾经流行过一段时间,但后来在同行评议中被发现有一些安全漏洞,因此停止开发了。所以,我们建议用户自己去了解不同产品,并为自己选出一款最好的、最新的加密工具。此外,不要给任何人你的备份,即便是加密的也不例外。另外,我们还建议每一段时间就进行一次私钥轮换(即生成新的私钥,并把资金从旧地址发送到新地址)。为深爱的人提供保障人类不能永生。因此我们需要继承/遗产计划。事实上,加密货币可以把财富传承变得更简单,并且可以减少第三方介入。同样,要做到这一点,有以下几种不同的方式:如果你使用的是低安全性的纸条或者金属标签,那么直接交给继承人就可以了。但这当然有一些潜在的缺点。他们如果太年轻或是技术水平不足,就可能会对备份保存不当。如果安全保障被他们搞砸了,黑客就可以轻而易举地通过他们窃取资金。此外,继承人还可以在任何时候带走你的资金。至于你希不希望他们这么做,就取决于你们之间的信任关系了。我强烈建议避免与他人分享私钥,无论你们之间关系多亲密。原因很简单,万一资金被取走/被盗,根本无法确定操作者是谁,或是谁保管不当,这会引起混乱。我们可以把纸条或者金属标签放进银行保险库,或者交给律师。但是,如上所说,如果哪位经手人得知了密钥,他们可以不留痕迹地取走资金。这跟律师需要到银行操作把资金转给继承人完全不同。但如果我们使用的是上面提到的U盘方法,就可以更安全地转移资金了。但这会需要更多设置步骤。有一种在线服务叫“死人键”(Deadman’s switch)。他们会定期(比如一个月)向用户发送短信/邮件,用户需要点击链接或者登陆进行回复。如果超过一定时期未回复,该账户将被视为处于“死人”状态,系统会自动按照该用户此前设定的接收人和内容一一发送邮件。我并不推荐这种服务,但大家如果感兴趣可以自行上Google了解并试用。事实上,Google自己就有这种服务。在它的众多设置中有一个选项,即用户超过3个月未登录账户的话,可以让其他人进入该账户。我个人没有试用过这一选项,所以无法评论。还请自行检验。如果你在想:“噢!太好了,我只要把密钥放进邮件里就可以传承给我的孩子了。”那请你从头再读一遍这篇文章。可能你会想,我可以把用来加密U盘的密码放进邮件里,这样我的伴侣或孩子就能进行解锁。这很接近正确做法了,但还不够。正如我们不能把密码跟互联网服务器上的备份放在一起,因为这会大大削弱备份/资金的安全性。如果你在想,那我可以打乱/加密包含了U盘密码的邮件,再另外设一个密码,告知我爱的人。这样想就对了。事实上,你不需要第二个密码。这个时候,你可以使用一种久经考验的加密工具,叫PGP (或者GPG)。PGP事实上是早期采用非对称加密(比特币也是用这一方式)的工具之一。在这里,我也不会介绍PGP使用教程,网上一搜便有。总结来说就是,让你的伴侣或孩子生成一个属于他们的PGP私钥,然后你使用他们的公钥来加密“死人”信息。这样一来,除了他们,就没有人可以读取信息内容了。这样的方式是相对安全的,但这需要他们能确保PGP私钥的安全性,并且不丢失它们。当然,他们还需要知道如何使用PGP邮件,这需要一定技术含量,而且过程还比较繁杂。如果你理解了以上建议,那么你自行持有大量加密货币的能力就已经达到基本水平(而不是高级水平)了。关于以上提及的一些问题,我们还有许多可探讨的解决方法,包括多重签名、门槛签名等等,但它们属于更高级的指南了。在下一部分,我们将探讨:使用交易平台这篇文章中的“交易平台”指的是对资金进行托管的中心化交易平台。在阅读了文章的先前部分后,你可能会说:“天呐,那真是太麻烦了。我直接把代币存到交易平台去吧。”但是,交易平台也不是没有风险的。虽然交易平台对托管资金和系统安全性负责任,但我们还是需要进行一些操作来保障我们账户的安全性。仅使用声誉好的大型交易平台交易平台存在交易对手风险。很多小型/新的交易平台刚开始可能都会制造一场退出骗局。他们会在收集用户的存款后跑路。所以,一定要远离那些“非盈利”、零交易费、高额折扣和/或返利奖励的交易平台。如果这些平台的目标不是正常获取业务收入,那么你的资金可能就是它们的唯一目标。正规的安全性保障措施需要投入大量资金,所以要求平台有可持续的商业模式。在安全性方面,不要对自己的资产敷衍了事。盈利能力强的大型交易平台不会制造退出骗局,他们没有这方面的驱动力。如果一个平台盈利能力强,商业模式可持续,拥有价值数十亿美元的业务,还有什么理由去盗窃几百万美元,然后在躲避和恐惧中生存?大型交易平台在安全性方面也经受了更多检验。是的,大型平台更加容易成为黑客的目标,这也是一种风险。但是,黑客也会以小型平台为目标,而且其中有些更容易得手。大型交易平台通常轮流和5-10个外部保安公司合作来进行渗透测试和安全性测试。保障你的账户安全在使用交易平台时,保障账户安全显然很重要。就让我们从一些基础知识说起。保障计算机的安全。通常来说, 计算机是整个安全链中最脆弱的一环。 可以的话,尽可能使用专用计算机来登陆交易账户。在计算机上安装商业杀毒软件(没错,保障安全性需要投资),并尽量减少垃圾软件的数量。把防火墙的功能全部打开。玩游戏、网上冲浪、下载等等都使用另一台计算机,并且杀毒软件、防火墙也全部打开。因为这台计算机上的病毒很有可能让黑客侵入同一网络中的其它计算机。所以,请确保这台计算机也是干净的。避免下载文件即使你并未在计算机上安装钱包,我也强烈建议不要在计算机或手机上下载任何文件。 如果有人向你发送word文件,让他们以Google doc链接的形式发送。如果发送PDF,在浏览器中用Google drive打开,而不要在计算机上打开。如果他们给你发来一个搞笑视频,让他们在视频平台上以链接形式发给你。 是的,我知道这很麻烦,但安全性保障不是免费的,资金损失也是真金白银的。在云端查看所有文件,不要下载任何东西到本地。此外,请关闭即时通讯软件的“自动保存照片和视频”功能。很多软件都有自动下载表情和视频的默认设置,这会对安全性的保障产生影响。软件要及时升级我知道,操作系统升级令人厌烦,但升级可以完善已发现的安全漏洞。黑客也会关注这些升级,并利用这些发现的漏洞来入侵那些懒于升级的用户的电脑。钱包软件或者交易平台App通常也是遵循同一模式。所以,一定要确保你所用的软件是最新版本。保障邮箱账户的安全。我推荐使用Gmail 或Protonmail账户。这两个邮件服务商总体上安全性要比其它强。 我们在其它邮件平台上看到了更多安全事故的发生。我强烈建议用户为每个交易平台创建一个专用邮件帐户,并使用一些晦涩的名字。这样一来,即使其它交易平台遭遇了安全事故,你在币安的账户也不会受到影响。这也能降低邮件钓鱼诈骗的概率。在邮件服务中开启2FA服务。我强烈建议使用Yubikey。它可以防御很多类型的黑客攻击,包括钓鱼网站等。在后面我们会讲到更多关于2FA的内容。如果你所在的国家出现过SIM卡交换诈骗,请不要绑定手机号作为邮件帐户恢复手段。我们看到很多SIM交换诈骗受害者遭受了邮件帐户密码被重置、账户被黑的后果。总体来说,我不推荐进行手机号和邮件帐户之间的绑定。请把它们分开。保障密码的安全性。给每一个平台的账户配置一个独一无二的强密码。不要害怕想不起密码。使用密码管理工具即可。对于大多数人来说,LastPass或者1Password就可以了。这两个软件都和浏览器、手机等集成得很好。两者都声称仅在本地存储密码,但在仅使用加密密码的设备之间会同步。如果想要更专业的工具,可以用KeePass,或者使用其适用于你的操作系统的版本。KeePass仅在本地存储信息。不会在设备之间进行同步,手机支持也少。它是开源的,所以不需要担心蠕虫等安全漏洞。请自行了解并选择一款适合你的工具。但不要因为“节省时间”这个理由就使用简单密码或者在所有平台都用同一个密码。一定要使用强密码,不然,你节省下来的时间可能是以大量资金损失为代价的。有了这些工具,如果你的计算机还出现病毒,那你就完蛋了。所以,请使用好的杀毒软件,并让它们保持运行。开启2FA验证。我强烈建议在创建币安账户后立即开启2FA(双因子验证)验证,如果此前没有做这件事,请现在立刻去做。因为2FA码通常存在手机中,在邮件和密码被黑时它可以提供一定程度上的保护。然而,2FA并不能提供完全的防护。例如,如果计算机病毒窃取了邮件地址和密码,通过追踪你的2FA码键盘输入,它可以继续窃取你的2FA码。再例如,如果你进入了钓鱼网站,输入了邮件地址、密码和2FA码,那么黑客就可以同时使用这些信息登陆你真正的币安账户。可能的情况有很多种,我们不能详尽列举。所以,我们还是要好好保护计算机,并且当心钓鱼网站(后续还有更多相关内容)。安装U2F。U2F是一种硬件设备,可以生成一个独一无二的基于时间、域名特定的代码。Yubikey可以说是最适合U2F的设备。(虽然很多硬件钱包也可以使用U2F,但用户体验没有那么好,需要安装App,整个操作流程也比较慢。)U2F有三大优势。第一,它基于硬件,所以存储在设备中的秘密几乎不可能被窃取。第二,它是针对特定域名的。即使你不经意进入了钓鱼网站,它也能提供保护。最后,它的使用非常简单。基于以上原因,我强烈建议大家在币安账户绑定Yubikey。针对黑客窃取资金,它能提供最好的保障措施之一。同时,也请将Yubikey与Gmail账户、LastPass和其它支持的账户进行绑定,保障这些账户的安全。停止使用短信验证。曾经有一段时间短信验证很流行。但时代已经不同了。随着SIM交换诈骗更加高发,我们建议大家不要再使用短信认证,并转换成上面提到的2FA或者U2F等验证方式。创建提现地址白名单我们强烈建议使用币安的提现白名单功能。开通后,用户可以向已认证地址快速提现,而黑客想要新增提现地址也更困难。API安全性我们很多用户使用API进行交易和提现。币安提供不同版本的API,最新版本支持非对称加密,也就是说,我们只需要知道用户的公钥。这样,用户就可以自行保留私钥,仅向我们提供公钥信息即可。我们通过公钥来确定订单所有权,并且永远不会要求获取用户私钥。请妥善保管你的私钥。如果使用交易平台,我们并不需要向自行持币那样进行API备份。如果API密钥丢失,你可以随时创建新密钥。只需确保他人并未获知你的API密钥即可。完成L2层KYC验证。保障账户安全的最佳方式之一就是完成L2层KYC验证。这样我们就能知道你的样子,并在我们的大数据风险引擎检测到账户异常时用先进的自动视频验证技术进行验证。保障手机和其它设备的实体安全一定要保障手机的安全。因为手机上可能安装了你的邮件App、Binance App、你的2FA密码等。不要进行手机越狱。那样会大大降低安全性。此外,还要保证手机不被丢失,并加上屏幕锁。其它设备也一样。确保他们不会落入他人手中。当心网络诱骗当心网络诱骗。这些行为通常发生在邮件、信息或者社交媒体上,在点击链接后会弹出一个看起来很像币安网站的页面,它会让你输入证件信息等,黑客就可以使用这些信息来进入你真正的币安账户。我们只要谨慎行事就能避免诈骗。不要点击邮件或社交媒体网页中的任何链接。在进入币安网站时手动输入网页地址,或者使用书签。不要和他人共用邮箱。不要在不同网站使用同一邮箱。如果电报群、Instagram上有陌生人(特别是叫CZ或者类似名字的人)突然联系你,一定要当心。总体来说,只要遵循了以上建议,你的币安账户就能获得相对较高的安全性。其它话题诈骗现象层出不穷。诈骗者通过创建虚假社交账号,并让它们看起来像一些明星账号,例如@cz_binance_,然后试着说服你转钱给他们。请记住这个原则:除非这是你的本意,不要给任何人发送资金。在交易时,一定要通过两个不同渠道核实对方真实身份。如果CZ突然联系你,并以一些很有说服力的理由让你转一些代币给他,请立即举报这个账户。如果朋友突然发信息给你,要你发送一些加密货币救急,一定要打电话核实,或者让他们发一个短视频核实。这个时候我们要设想,朋友的即时通讯软件是否有可能被黑,或者手机被偷了。YouTube 欺诈YouTube的诈骗者现在越来越精明了,他们甚至编辑一些CZ在做空投的假视频。看到这些,举报就是了。社会欺诈如果有奖励活动需要你先发送一些代币到某个地址,然后以更多数量返还,不要相信,你不会获得返还的。记住一个简单原则:发送加密货币时一定要谨慎。不要点击邮件中的链接不要点击邮件中的链接,然后在弹出的页面上输入用户名或密码。这一定是一个陷阱。所以,不要在社交媒体网站上点击关注链接,也不要在其弹出的页面进行登陆。要自动把它们看成钓鱼网站。不要理它们就是了。进入常用加密货币交易平台网站时,一定要手动输入网页地址。请记住Binance.com的拼写,或者使用书签。交易所源码丨交易所APP开发正式版丨交易所系统开发技术逻辑分析数字货币交易所开发详情丨数字货币交易所系统开发(详细及逻辑)丨数字货币交易所源码原生交易所开发详情丨原生交易所系统开发(成熟技术)丨原生交易所现成源码部署交易所系统丨交易所系统开发(逻辑及功能)丨交易所开发源码交付秒合约开发原理丨秒合约系统开发(详细规则)丨秒合约源码案例部署永续合约/秒合约/合约交易所开发详情,永续合约/秒合约/合约交易所系统开发技术方案深入分析代币合约流动性质押挖矿分红系统开发实现技术原理及源码部署交易所系统开发如何开发?数字货币交易所系统开发成熟技术案例去中心化交易所系统开发技术原理丨数字货币去中心化交易所系统开发(说明案例)数字货币交易所系统 数字货币交易所系统开发成品案例 数字货币交易所现成源码部署交易所系统开发案例说明丨数字货币交易所系统开发技术方案详情数字货币交易所系统开发方案详细丨数字货币交易所开发成品技术源码合约交易系统设计与开发|永续合约交易所搭建,合约平台开发|永续合约交易所开发技术|特点介绍秒合约交易所开发详细丨秒合约交易所系统开发详细及规则丨秒合约交易所系统源码部署海外版数字货币交易所系统开发(逻辑及功能)丨多语言数字货币交易所系统开发(案例及源码)交易所开发成品丨交易所系统开发(演示版)丨交易所APP源码设计区块链交易所开发详细丨区块链交易所系统开发(开发方案)丨区块链交易所源码案例部署数字货币交易所开发详情版丨数字货币交易所系统开发(web3.0技术开发)丨数字货币交易所开发源码成品交易所APP开发功能丨交易所系统开发(成熟及案例)丨交易所系统源码平台DAPP交易所系统开发(开发案例)丨DAPP交易所系统开发(源码及方案)交易所开发成品丨交易所系统开发(演示版)丨交易所APP源码设计区块链交易所开发详细丨区块链交易所系统开发(开发方案)丨区块链交易所源码案例部署Uniswap交易所开发稳定版丨Uniswap交易所系统开发(开发模板)丨Uniswap交易所系统源码案例部署数字货币交易所开发详情版丨数字货币交易所系统开发(web3.0技术开发)丨数字货币交易所开发源码成品交易所APP开发功能丨交易所系统开发(成熟及案例)丨交易所系统源码平台DAPP交易所系统开发(开发案例)丨DAPP交易所系统开发(源码及方案)DAPP数字货币交易所开发逻辑,DAPP数字货币交易所系统开发(案例及源码)
ABBYY FineReader2023最新版下载及新增功能介绍
ABBYY FineReader2023通过 OCR 实现纸质文件和扫描件数字化处理纸质文件和扫描件,便捷存储,检索快速可靠,方便在短期内反复使用和编辑文件,实现办工场所数字化。ABBYY不仅支持文字,还支持彩色文件识别、自动保留原稿插图和排版格式以及后台批处理识别功能,使用者再也不用在扫描软件、OCR、WORD、EXCEL之间换来换去了,处理文件会变得就像打开已经存档的文件一般便捷。ABBYY FineReader15是非常好的一款 OCR 识别软件(可以识别不可编辑的 PDF 和图片文件),操作非常简单。可让您转换和编辑各种纸质和电子文件。ABBYY FineReader可以精确地转换几乎任何类型的文档,包括各种办公文档,表格和电子表格,杂志文章,书籍,甚至传真和数码照片。凭借其新的ADRT,自适应文档识别技术,FineReader不仅能够识别文档图像的文本和基本布局,还能够识别多页文档的逻辑结构。将 PDF 转换为可编辑格式将不同类型的 PDF 转换成可编辑、可检索的格式,如 Microsoft Word、Excel、RTF、ODT 或其他格式,以便进一步编辑。ABBYY FineReader15是一款真正的专业OCR,它不仅支持多国文字,还支持彩色文件识别、自动保留原稿插图和排版格式以及后台批处理识别功能,使用者再也不用在扫描软件、OCR、WORD、EXCEL之间换来换去了,处理文件会变的就像打开已经存档的文件一般便捷。ABBYY快速、准确、方便的方式对文件进行扫描,将PDF格式、图像等不可编辑的文档转换成可编辑的Word、Excel、PPT、可检索的PDF、HTML、DjVu等格式,告别耗时费力的手动输入和文件编辑。软件的OCR识别准确率高达99.8%,能够即刻识别文本,可以进行复制粘贴、搜索或编辑,而不是花费无数个小时,重新输入或格式化文档。双击如图安装文件:等待自解压(可能出现文件替换选择,选择全部替换),然后出现安装界面:如图选择单机安装,按照提示选择安装路径,选择语言,在下面界面将程序更新和启动时自动运行前面的勾去掉,点击安装,如下图:安装完成后提示界面,将退出时运行选项前面的勾去掉,然后点击完成。ABBYY Finereader 15下载安装包如下:https://wm.makeding.com/iclk/?zoneid=33930ABBYY FineReader15系统要求操作系统:macOS 12 及更高版本,包括 macOS 13 Ventura硬件:配备 Intel®处理器或 Appl Silicon 芯片(使用 Rosetta 2技术)的 Mac 计算机硬盘空间:3GB安装空间4 Gb RAM键盘、鼠标或别的指针设备支持Image Capture应用程序(ICA)的相机或智能手机或扫描仪或MFPABBYY FineReader 15OCR文字识别软件拥有强大的OCR项目功能,能帮助用户检查识别区域、验证识别出的文本、预处理图像以提高 OCR精确性等等。其强大的OCR微调和转换功能,允许用户编辑识别区域,检查识别出的文本,训练 ABBYY FineReader识别非标准字符和字体。
Polarr泼辣修图2023最新版有哪些新增功能?
泼辣修图5.11.4最新版为用户带来更多新版的修改工具,进一步优化相关的设备,可以更舒畅的使用去修改图片,还有很多贴纸,文字等等小工具使用,丰富照片情景,感兴趣的可以来试试。适用于Windows的泼辣修图摄影爱好者都在用泼辣处理照片泼辣修图是一款全平台专业修图软件,只要你订阅了泼辣修图的会员服务,即可同步解锁所有平台的高级功能。适用于 maOs 的泼辣修图泼辣修图是一款强大的专业修图软件,拥有上百款调色工具,还有丰富的图层素材,更有智能的人像修饰面板。适用于Android的泼辣修图泼辣修图app是一款手机实用的修图软件,工具操作简单快捷,一键就对图片进行处理,生成最美的图。适用于iOS的泼辣修图泼辣修图app是一款手机实用的修图软件,工具操作简单快捷,一键就对图片进行处理,生成最美的图。化繁为简 轻松驾驭泼辣修图专业版是一款强大的专业修图软件,拥有上百款调色工具还有丰富的图层素材, 更有智能的人像修饰面板,具备物体识别的智能蒙板,高效的滤镜管理系统和强大的文字工具,支持批量处理。一切围绕摄影,无论是新手还是专业用户,都能得心应手。丰富调色工具高质量图层泼辣拥有上百款专业调色工具,包括HSL、曲线、色调分离、畸变校正等,帮助你雕琢图像的每一个细节高质量图层素材泼辣内置上百款高质量图层素材,搭配十几种混合模式轻松实现创意图像效果智能人像修饰泼辣可以自动识别画面中的人脸并定位其五官,轻松滑动即可实现磨皮、瘦脸等美颜效果。精细局部调整泼辣拥有包括线性、圆形、选色、明度等多种维度的局部调整工具,轻松实现图像的分区调整。高效滤镜管理泼辣可以将你的调整保存为滤镜并快速应用至其他照片,高效管理你的色彩灵感。批量图片导出泼辣可以将处理完的多张照片一次性批量导出,大幅提升你的修图效率。强大文字面板利用泼辣的文字面板,不仅可以实现文字添加与编辑,更能搭配混合模式实现创意文字效果。轻量简单易用泼辣拥有专业与简易两种操作模式,你可以基于自己的使用习惯打造专属的软件界面。泼辣免费和会员功能对比Polarr5-Mac安装包下载如下:https://wm.makeding.com/iclk/?zoneid=54528Polarr5-Win安装包下载如下:https://wm.makeding.com/iclk/?zoneid=54529泼辣修图Pro版常见问题1、开通会员一定要注册泼辣账号吗?可以用手机号注册还是邮箱注册?是的,必须先注册泼辣账号,否则无法开通会员。请注意,泼辣PC版仅支持邮箱登录,所以您的账号不可以是手机号!请重新注册邮箱账号,否则将无法使用PC版的高级功能。2、泼辣修图会员支持多少台设备同时使用?是否支持换机?会员权益与您的泼辣修图账号是绑定关系,您可以同时在Windows、macOS、iPhone、Android、iPad设备上同时登录同一个账号,享受会员专属高级功能,最多5台同时在线。换机时,请在旧的设备程序中退出账号登录,并在新设备中重新登录。3、泼辣修图会同步我的照片到各个设备吗?它支持同步哪些数据?泼辣修图不会上传您的照片到云上,所以您的图片仅保存在本机,不会存在泄露的风险。泼辣修图会同步您自己创建、收藏和购买过的各种滤镜,会员将享受不限数量的滤镜同步,免费版最多支持3个。4、泼辣修图如何获取滤镜?您可以使用泼辣修图的“获取滤镜”功能导入和安装滤镜。首先点击滤镜图标,然后点击左侧的更多,这时候会弹出一个滤镜面版,我们选择右上角的获取滤镜:一是扫描滤镜,二是从相片导入。6、泼辣修图是否支持RAW格式?目前只有Windows版的泼辣修图支持RAW格式,并且需要会员才可以使用,您可以在版本对比页面查看到会员的所有高级功能。7、软件后续如果有升级,我是否需要再交钱?泼辣修图会员根据您的订阅期提供相应的免费升级服务,如果您的会员过期,不论您使用的是什么版本软件,只要是高级功能均需要再次付费才可以继续使用。软件可以免费升级到后续的新版。8、泼辣修图Pro版会员,是分电脑版和手机版的吗?电脑手机随便切换用吗?Pro版会员是同时支持电脑上的(Win/Mac),还有手机上iOS/Android版,还有网页版的。但是您在手机版上购买的订阅会员(如Lite和Studio),仅支持解锁手机APP相关功能,并不能解锁PC版本的高级功能。
Shell 脚本的编写总结
1. 简介这篇文章主要是为了记录一下Shell脚本的使用语法,前几天写了一个shell脚本,其中,也遇到了一些语法不清楚的情况,在此记录一下已备后续使用。2. 什么是Shell脚本Shell脚本(英语:Shell script)是一种电脑程序与文本文件,内容由一连串的shell命令组成,经由Unix Shell直译其内容后运作。被当成是一种脚本语言来设计,其运作方式与直译语言相当,由Uninx shell扮演命令行解释器的角色,在读取shell script之后,依次运行其中的shell命令,之后输出结果。利用Shell script可以进行系统管理、文件操作等。2.1. 来个实例创建一个名为demo1.sh的shell脚本文件,在该shell脚本中添加如下内容:#!/bin/sh
cd ~
mkdir shell_tut
cd shell_tut
for((i=0;i<3;i++));do
touch test_$i.txt
done点击保存之后,在通过命令sh demo1.sh 来执行该脚本。即可达到我们预期的效果。实例解析:第1行:指定脚本解析器,这里是用/bin/sh 做解析器的。第2行:切换到当前用户的home目录,因为我是用root用户登录的,所以我这边的用户目录是/root第3行:创建一个目录shell_tut第4行:切换到shell_tut目录第5行:循环条件,一共循环10次第6行:创建一个test_1....2.txt文件第7行:循环体结束cd, mkdir, touch都是系统自带的程序,一般在/bin或者/usr/bin目录下。for, do, done是sh脚本语言的关键字。3. 环境shell编程跟java、php编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。当前主流的操作系统都支持shell编程,本文所述的shell编程是指Linux下的shell,讲的基本都是POSIX标准下的功能,所以,也适用于Unix及BSD(如Mac OS)。系统说明LinuxLinux默认安装就带了shell解释器。Mac OSMac OS 不仅带了sh、bash这两个最基础的解释器,还内置了ksh、csh、zsh等不常用的解释器Windowswindows出厂时没有内置shell解释器,需要自行安装,为了同时能用grep, awk, curl等工具,最好装一个cygwin或者mingw来模拟linux环境。4.脚本解释器4.1. sh即Bourne shell,POSIX(Portable Operating System Interface)标准的shell解释器,它的二进制文件路径通常是/bin/sh,由Bell Labs开发。4.2. bashBash是Bourne shell,属GNU Project,二进制文件路径通常是/bin/bash。业界通常混用bash、sh、和shell5. 第一个shell脚本5.1. 编写打开文件编辑器,新建一个文件,扩展名为sh(sh代表shell),在脚本前面一般会加上#!/bin/bash 或者#!/bin/sh 用于指定解释器。输入一些代码,第一行一般是这样的:#!/bin/sh
#!/bin/bash#!是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行。需要注意的是编码格式是需要是Unix(LF) 下的UTF-8格式。5.2. 运行运行Shell脚本有两种方法:第一种方法,sh 【shell脚本名称】sh demo1.sh第二种方法./【shell脚本名称】chmod +x demo1.sh
./demo1.sh需要注意的是,一定要写成./demo1.sh,而不是demo1.sh,运行其他二进制的程序也一样,直接写demo1.sh,Linux系统会去PATH里寻找有没有叫demo1.sh的,而只有/bin,/sbin,/usr/bin,/usr/sbin等在PATH里。你的当前目录通常不在PATH里,所以写成demo1.sh是会找不到命令的,要用./demo1.sh告诉系统说,就在当前目录找。6. shell变量6.1.定义变量定义变量时,变量名不加美元符合,如:project_path=/data/server/demo_project注意,变量名和等号之间不能有空格,变量的命令需要遵循如下原则:命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。中间不能有空格,可以使用下划线_。不能使用标点符号。不能使用bash里的关键字6.2. 使用变量使用定义的变量,只需要在变量名前面加美元符号即可,如:project_path=/data/server/demo_project
echo $project_path
echo ${project_path}变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:7. Shell 字符串字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。7.1. 单引号str='这是一个单纯的字符串'
echo $str7.2. 双引号name="码农飞哥"
echo "我的名字是${name}"双引号与单引号的区别在于,双引号里面可以有变量,而单引号里面添加变量无效,它只会原样输出单引号里的内容。7.3. 获取字符串长度string="abcd"
echo ${#string} # 输出 4提取子字符串以下实例从字符串第 2 个字符开始截取 4 个字符:7.4. 定义数组在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:数组名=(值1 值2 ... 值n)例如:array_name=(
"张三",
"李四",
"王五",
)
echo ${array_name[1]}8. 运算符8.1. 算术运算符原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk和expr,expr最常用,expr是一款表达式计算工具,使用它能完成表达式的求值操作。例如,两个树相加(注意使用的是反引号**`,而不是单引号’**)例如:#!/bin/bash
val=`expr 2 + 2`
echo "两数之和为 : $val"执行脚本,输出结果是:两数之和为 : 4PS:需要注意的是:1.表达式和运算符之间要用空格,例如2+2是不对的,必须写成 2 + 2,下表列出常用的算术运算符,假定变量a为10,变量b为10;运算符说明举例+加法val=expr $a + $b 结果为30-减法val=expr $a - $b 结果为0*乘法expr $a \* $b 结果为 100/除法expr $b / $a 结果为 1%取余expr $b % $a 结果为 0=赋值a=$b 把变量 b 的值赋给 a==相等。用于比较两个数字,相同则返回 true。[ $a == $b ] 返回 true!=不相等。用于比较两个数字,不相同则返回 true[ $a != $b ] 返回 false注意:条件表达式要放在方括号之间,并且要有空格,例如: [a = = a==a==b] 是错误的,必须写成 [ $a == $b ]。实例:#!/bin/bash
#author:码农飞哥
#url:https://feige.blog.csdn.net/
a=10
b=10
val=`expr $a + $b`
echo "a + b : $val"
val=`expr $a - $b`
echo "a - b : $val"
val=`expr $a \* $b`
echo "a * b : $val"
val=`expr $b / $a`
echo "b / a : $val"
val=`expr $b % $a`
echo "b % a : $val"
if [ $a == $b ]
then
echo "a 等于 b"
fi
if [ $a != $b ]
then
echo "a 不等于 b"
fi8.2 关系运算符关系运算符只支持数字,不支持字符串,除非字符串的值是数字,下表 列出了常用的关系运算符,假定变量a为10,变量b为10运算符说明举例-eq检测两个数是否相等,相等返回true[ $a -eq $b ] 返回 true-ne检测两个数是否不相等,不相等返回 true。$a -eq $b ] 返回 false-gt检测左边的数是否大于右边的,如果是,则返回true[ $a -gt $b ] 返回 false-lt检测左边的数是否小于右边,如果是,则返回true[ $a -gt $b ] 返回 false-ge检测左边的数是否大于等于右边的,如果是,则返回 true。[ $a -ge $b ] 返回 true-le检测左边的数是否小于等于右边的,如果是,则返回 true。[ $a -le $b ] 返回 true实例:#!/bin/bash
#author:码农飞哥
#url:https://feige.blog.csdn.net/
a=10
b=10
if [ $a -eq $b ]
then
echo "$a -eq $b":"a 等于 b"
else
echo "$a -eq $b":"a 不等于 b"
fi
if [ $a -ne $b ]
then
echo "$a -ne $b: a 不等于b"
else
echo "$a -ne $b a 等于 b"
fi
if [ $a -gt $b ]
then
echo "$a -gt $b: a 大于 b"
else
echo "$a -gt $b: a 不大于 b"
fi
if [ $a -lt $b ]
then
echo "$a -lt $b: a 小于 b"
else
echo "$a -lt $b: a 不小于 b"
fi
if [ $a -ge $b ]
then
echo "$a -ge $b: a 大于或等于 b"
else
echo "$a -ge $b: a 小于 b"
fi
if [ $a -le $b ]
then
echo "$a -le $b: a 小于或等于 b"
else
echo "$a -le $b: a 大于 b"
fi8.3 逻辑运算符假设变量a为10,变量b为15;运算符说明举例&&逻辑的AND[[ $a -lt 100 && $b -gt 100 ]] 返回 false实例:a=10
b=15
if [[ $a -lt 100 && $b -gt 100 ]]
then
echo "返回 true"
else
echo "返回 false"
fi
if [[ $a -lt 100 || $b -gt 100 ]]
then
echo "返回 true"
else
echo "返回 false"
fi8.4 字符串运算符下表列出了常用的字符串运算符,假定变量a为"abc",变量b为"efg":运算符说明举例=检测两个字符串是否相等,相等返回true[ $a = $b ] 返回 false!=检测两个字符串是否不相等,不相等返回 true[ $a != $b ] 返回 true-z检测字符串长度是否为0,为0返回 true[ -z $a ] 返回 false-n检测字符串长度是否不为 0,不为 0 返回 true。[ -n “$a” ] 返回 true。$检测字符串是否不为空,不为空返回 true。[ $a ] 返回 true。实例:实例: a="abc"
b="efg"
if [ $a = $b ]
then
echo "$a = $b : a 等于 b"
else
echo "$a = $b: a 不等于 b"
fi
if [ $a != $b ]
then
echo "$a != $b : a 不等于 b"
else
echo "$a != $b: a 等于 b"
fi
if [ -z $a ]
then
echo "-z $a : 字符串长度为 0"
else
echo "-z $a : 字符串长度不为 0"
fi
if [ -n "$a" ]
then
echo "-n $a : 字符串长度不为 0"
else
echo "-n $a : 字符串长度为 0"
fi
if [ $a ]
then
echo "$a : 字符串不为空"
else
echo "$a : 字符串为空"
fi8.5 文件测试运算符文件测试运算符用于检测 Unix 文件的各种属性。这里指定file为 /data/server/xiang/script/testscript/demo.sh操作符说明举例-d file检测文件是否是目录,如果是,则返回true[ -d $file ] 返回false-f file检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回true[ -f $file ] 返 true-r file检测文件是否可读,如果是,则返回true。[ -r $file ] 返回 true-w file检测文件是否可写,如果是,则返回 true。[ -w $file ] 返回 true。-s file检测文件是否为空(文件大小是否大于0),不为空返回 true。[ -s $file ] 返回 true-e file检测文件(包括目录)是否存在,如果是,则返回 true。[ -e $file ] 返回 true实例:#!/bin/bash
file="/data/server/xiang/script/testscript/demo.sh"
ile="/var/www/runoob/test.sh"
if [ -r $file ]
then
echo "文件可读"
else
echo "文件不可读"
fi
if [ -w $file ]
then
echo "文件可写"
else
echo "文件不可写"
fi
if [ -f $file ]
then
echo "文件为普通文件"
else
echo "文件为特殊文件"
fi
if [ -d $file ]
then
echo "文件是个目录"
else
echo "文件不是个目录"
fi
if [ -s $file ]
then
echo "文件不为空"
else
echo "文件为空"
fi
if [ -e $file ]
then
echo "文件存在"
else
echo "文件不存在"
fi9. shell echo命令9.1. 显示普通字符echo "这是一个普通字符"9.2. 显示转义字符echo "\"这是一个转义字符 \""9.3. 显示变量name="张三三"
echo "我的名字是${name}"9.4. 显示结果定向至文件echo "我是一个测试文本">myfile10. Shell流程控制10.1 if fiif 语句语法格式:if condition
then
command1
....
commandN
fi写成一行if [ $(ps -ef|grep -c "nginx") -gt 1 ];then echo "true";fi10.2 if else fiif else fi 语法格式:if condition
then
command1
command2
...
commandN
else
command
fi实例:a=10
b=10
if [ $a -eq $b ]
then
echo "$a -eq $b":"a 等于 b"
else
echo "$a -eq $b":"a 不等于 b"
fi10.3 if elif fiif elif fi的语法结构是:a=10
b=20
if [ $a -gt $b ]
then
echo "a大于b"
elif [ $a -eq $b ]
then
echo "a等于b"
elif [ $a -lt $b ]
then
echo "a小于b"
else
echo "没有符合的条件"
fi11. for 循环Shell支持for循环for循环一般格式为:for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done写成一行for var in item1 item2 ... itemN; do command1;command2...done;当变量值在列表里,for循环即执行一次所有命令,使用变量名获取列表中的当前取值。命令可为任何有效的shell命令和语句。in列表可以包含替换、字符串和文件名。in列表示可选的,如果不用它,for循环使用命令行的位置参数。for str in 我是 码农飞哥, 做一个 堂堂正正的中国人
do
echo $str
done 通过空格区分每一个item。12. while循环while循环用于不断执行一系列命令,也用于从输入文件中读取数据。其语法格式为;while condition
do
command
done如果a小于等于6,a从1开始,每次循环都对a加1,运行上述脚本,返回数字1到6,然后终止。a=1
while (( $a<=6 ))
do
echo $a
let "a++"
done这里的判断条件需要用(()),运行脚本,输出:break 命令break 命令允许跳出所有循环(终止执行后面的所有循环)。13. 获取服务器IP地址如果通过shell命令获取服务器的IP地址呢?我们都知道通过 ifconfig 来获取服务器的网络配置情况,但是当有多个网卡的情况下,如果获取某个网卡的IP地址呢?如下图所示:如何获取网卡eth0的IP地址呢?命令有点点小复杂,如下所示:current_ip=$(ifconfig eth0|grep inet|grep -v inet6|awk '{print $2}')命令解释:ifconfig eth0 用于查询eth0网卡grep inet 用于模糊查询inet开头的网络地址grep -v inet6 用于剔除掉inet6awk '{print $2}' 用于打印第二个参数。14. 交互式的命令shell同样支持交互式命令,shell脚本可以接收我们控制台输入的文本。echo -n "input {文件名} :"
read
echo "输入的文件名是:$REPLY"15. 查看文件中是否存在某内容查找文件中是否存在某内容,可以通过cat 命令进行查找,其中/dev/null 通常被用于丢弃不需要的输出流,或作为用于输入流的空文件,这些操作通常由重定向完成,任何你想丢弃的数据都可以写入其中丢弃标准输出在写shell脚本的时候,只想通过命令的结果执行后面的逻辑,而不想命令执行过程中有一大堆中间结果输出,这时候可以把命令执行过程中的输入全部写入 /dev/nullif cat name.txt|grep 李三三 >/dev/null
then
echo "文本已经存在不再添加"
else
echo "文本不存在进行添加"
sed -i '$a\李三三' name.txt
fi16. 对jar包进行解压&压缩jar包是Java中一种可以直接运行的程序包,如果我们需要修改jar包中的某个文件的话,可以执行先执行解压命令16.1 jar包解压jar -xvf [jar包名称] [需要解压的文件的在jar中的相对路径]比如需要修改app.jar包中的 application.yml 文件jar -xvf app.jar BOOT-INF/classes/application-prod.yml这里的BOOT-INF/classes/application-prod.yml 是application.yml 文件在jar包中路径,注意不要写成绝对路径16.2 将修改后的文件压缩进jar包中可以通过sed命令对application.yml 进行修改,然后通过jar命令将修改后的application.yml 文件打进压缩包中jar -ufjar包名称] [需要打进压缩包中的文件]还是以上面的app.jar包为例jar -uf app.jar BOOT-INF/classes/application-prod.yml17. 判断文件或者目录是否存在判断文件或者目录是否存在,不存在则创建,比如首先判断/data/server/train 目录是否存在,不存在则创建if [ -e /data/server/train ];then
echo '目录已经存在'
else
echo '目录不存在'
mkdir -p /data/server/train
fi18. war包的解压与压缩18.1 解压war包unzip train.war -d train将train.war的内容解压到train目录中18.2 压缩war包压缩war包需要注意的是需要进入到目标目录的里面,然后对里面的文件进行压缩,不要在目标目录压缩,不然在war中就会多一层目录。cd train
jar -cvf coep-train.war *总结本文详细介绍了Shell脚本的一些基础命令,下文将主要介绍sed命令
实测办公场景下,国产远程控制软件的表现力如何?(技术解析)
1、工作生活小助手大家好,我是码农飞哥,作为一个常年混迹职场的老码农。我在工作和生活中碰到了很多问题,也帮助别人解决了很多问题。前有帮实习生配环境,后有帮同事调BUG,中间还有教老爸如何使用手机。新冠疫情反反复复的当下,居家办公变成了打工人的新常态。大家都在自己家里办公,不能进行面对面交流,碰到了棘手的BUG时就只能自己默默的承受或者通过电话跟同事进行沟通,沟通的效率和成本还是比较高的。上次居家办公时组里新来的实习生就被一个BUG搞的焦头烂额,百度以及线上沟通了好久都没解决,最后还是我通过远程调试的方式给他解决了问题。我过年的时候给老爸买了一部全新的安卓手机,但是新手机诸多繁杂的设置经常让老爸犯难,他常常问我:儿子,怎么关掉手机的消息通知?儿子,怎么将手机的字体放大呢?诸如此类的问题,刚开始我都是通过电话或者视频的方式告诉他什么功能怎么怎么使用,但是这种方式往往事倍功半,往往说了半天老爸还是不知道怎么操作。后面我通过远程控制软件直接远程给老爸进行设置,解决问题的效率瞬间提升了N倍。这里就要隆重请出本文的主角:远程控制软件:远程控制技术顾名思义就是在网络上通过由一个终端(包括电脑,手机,平板等)去远距离控制另一个终端(包括电脑,手机,平板等)的技术。而远程控制软件就是可以实现远程控制技术的应用。我前前后后使用了好几款远控软件,有向日葵,有ToDesk,兜兜转转好久最终发现还是ToDesk更香一点。ToDesk的官网链接向日葵的官网链接2、实测反馈-ToDesk与向日葵远程控制对比2.1. 环境以及软件版本准备一台笔记本电脑(PC),一个安卓平板,一部手机(苹果或者安卓手机),分别在电脑和平板上上安装ToDesk的客户端,以及向日葵的客户端(如果平板作为主控,向日葵还需要在平板上安装一个独立的主控端),具体的软件版本如下:软件版本ToDesk Android客户端4.4.6.2ToDesk macOS客户端4.3.0.1向日葵 for Macv12.5.1.46673向日葵 for Android 控制端(主控)V12.0.0向日葵 for Android 客户端(被控)V6.3.12.2. 强大的免费版作为一款远程控制软件,远控体验的好坏直接决定了用户的留存度。而评判远控体验,行业内有五大公认的指标,分别是:分辨率、帧率、延时、抖动、丢包率。分辨率决定了图像细节的精细程度,分辨率越高则画面越清晰。帧率决定了远程时画面是否流畅。延时反映了远控中的延迟情况。网络抖动指的是延时忽大忽小,是影响实际体验的关键指标。丢包率比较高的话就会造成画面卡顿或是损坏。下面就分别测评一下ToDesk以及向日葵的以下功能:1. 平板远控PC,2. 手机远控平板(手机),3. 文件传输。2.2.1. 平板远控PC随着移动办公的兴起,越来越多的人会通过平板进行办公,会通过平板来远控公司电脑进行办公,或者如果公司电脑不在身边的话也可以通过平板远控公司电脑来解决问题。ToDesk和向日葵都支持跨平台远控,不过向日葵是将控制端和客户端严格区分开来的。当一个手机既需要充当控制端又需要充当客户端时,就需要同时安装控制端和客户端两个APP。而ToDesk则是将控制端和客户端合二为一,这样就省心多了。1.ToDesk安装好ToDesk的客户端之后,打开此客户端会显示设备代码和临时密码。分别打开平板和PC上的ToDesk,平板远控PC不需要进行登录。只需要在平板上的ToDesk上输入被控的PC的设备代码以及连接密码即可实现平板远控PC(注:但为个人安全性考虑,建议如果使用的临时密码,可在安全设置中设置为每次发起连接后更新;或者直接使用安全密码更好)。远控成功之后,就可以在平板上看到被控PC的画面。在侧边栏可以看到ToDesk 提供了键盘,快捷键,触屏模式,指针模式,鼠标设置,隐私屏等功能,其中操作模式分别是指针模式和触屏模式,默认情况下使用的是触屏模式。指针模式主要用于有鼠标的情况下可以使用。键盘则提供了输入能力可以向被控端输入文字。中间的那个鼠标是虚拟鼠标,最新的4.4.6.2版本的安卓客户端中对虚拟鼠标进行了全面升级,虚拟鼠标显示更直观、键鼠操作更加贴合用户使用习惯。可以像真实的鼠标使用滚动滑轮对页面进行上下滚动,同时可以进行左右键操作,如下图所示,进行点击右键唤起右键操作栏。下面是演示通过平板远控PC之后,拖动网页的情形,整体体验下来,操作比较流畅,画面比较清晰: 向日葵向日葵客户端在弱网的情况下经常会出现终端连接不上服务器的情况,如下图所示,虽然它支持失败重试,但是体验始终没有那么友好。这一点ToDesk做的会比较好些,在弱网的情况下同样可以快速连上服务器。与ToDesk不同的是,向日葵使用平板远控PC时,要求控制端和被控端需要用相同账号登录,登录之后在控制端选择【远控一台电脑】,输入被控端的设备代码以及连接密码即可进行远控。远控成功之后在控制端的界面如下图所示:中间的部分是向日葵的虚拟鼠标,它可实现左键,右键以及鼠标上下滚动的效果,滚动效果没那么便捷,右侧是其他的功能菜单,向日葵支持屏幕录制以及截图功能:。最终的演示效果如下图所示:对比ToDesk向日葵分辨率分辨率高分辨率高画面流畅度流畅较流畅操作简易度简单较复杂是否需要登录不需要登录需要登录延时延时低弱网延时高功能不支持屏幕录制,截图支持屏幕录制,截图小结:整体对比可参考上图,另外个人觉得ToDesk的虚拟鼠标操作要比向日葵的虚拟鼠标操作便捷一些。2.2.2. 手机远控平板(手机)体验完了平板远控PC之后,接下来我们来体验下手机远控平板(或手机)。ToDesk为了降低安全风险,需要在控制端和被控端都需要登录同一个账号。当用手机远控平板时,需要在平板上开启【允许远程本设备】选择【控制模式】,并且需要开启辅助功能权限,其他的权限可按需开启。在控制端和被控制端登录相同的账号之后,在控制端的ToDesk上输入【被控设备的编号】以及连接密码即可顺利远控平板(或手机)。目前,ToDesk 通过手机远控平板整体操作比较丝滑,它可以实现免Root远控安卓机,IOS系统的手机暂不支持。向日葵首先,在主控手机上安装控制端,在被控平板上安装客户端。并且控制端和客户端要登录相同的账号。当我兴高采烈用向日葵的控制端扫描向日葵的客户端进行登录时,结果一个弹框提示我接下来进入了付费环节。鉴于要付费,所以没能体验成功。但向日葵除了可以远控安卓系统外,还可以搭配向日葵UUPro这一硬件后,远控ios系统。2.2.3. 文件传输这里采用PC控PC的方式来测试文件传输。向日葵和ToDesk精心设计文件传输管理器,不需要下载第三方的软件传输,就像Windows文件夹一样,可以实现文件的拖拽,复制粘贴传输。ToDesk向日葵传输一个相同大小的文件,ToDesk明显要比向日葵快。这是由于ToDesk引入了SD-WAN技术优化网络的传输,同时在全国范围内部署了超过200个服务器节点,下一章节会详细介绍。2.2.4. 更多功能期待你的使用除了上面介绍的常用功能以外,ToDesk以及向日葵均支持远程打印、远程开机、隐私屏等。其中隐私屏就是让被控端进入锁屏状态,从而防止信息泄漏。两者的主要区别是ToDesk在免费版提供了隐私屏,而向日葵只在付费版才提供隐私屏。另外,关于很多小伙伴关心的远程开机问题,ToDesk和向日葵均支持远程开机,ToDesk开机方式为在同一个局域网内有任一台设备在运行ToDesk的情况即可;向日葵可以购买他们自家的硬件产品控控A2,来搭配实现远程开机。不过说实话,其实我周围小伙伴远程开机都直接用某家智能插座+电脑设置Bios来电唤醒就可以了,也不用再单独购买额外硬件或者区域内设置一台运行设备。推荐小伙伴们也使用这个方法。2.2.5 小结通过前面的测评我们可以得出如下结论:同样是个人免费版,向日葵的功能点要比ToDesk更加丰富一点,向日葵支持软件内屏幕录制以及截屏,ToDesk目前暂不支持。但是在画质和操作的流畅度上,ToDesk还是更强一点,在弱网的情况下,向日葵客户端经常会出现连不上服务器的情况,而ToDesk则可以快速连接,下面就简单对比下两者的定价以及功能介绍。ToDesk的定价明细以及支持功能:ToDesk的免费版支持安卓端免root被控,手机投屏,远程开机,跨平台连接,隐私屏等常用功能,基本上满足了日常的工作需求。向日葵的定价明细以及支持功能:向日葵的个人免费版功能相对简单,它仅支持电信网络,不支持跨运营商,只能进行简单的远程桌面以及基础的文件传输。插一句题外话,某天我在CSDN上搜索ToDesk的介绍和使用帖子的时候,竟然还搜到了ToDesk企业版在CSDN上的账号,抱着兴趣领取了企业版14天账号注册试用了一下,连接感觉确实会更快更稳,也有批量部署、录屏功能提供,而且还支持后台员工的权限管理和连接记录,也不怕员工删库跑路了(哈哈)。3、ToDesk硬核技术解析因为后面工作中一直用ToDesk作为常备远控软件了,作为偏好产品,飞哥此篇会专门来解析下ToDesk使用的技术。之所以能够在诸多竞品中脱颖而出,归根结底还是得益于ToDesk有诸多硬核技术。远程桌面,本质上就是将桌面进行连续截屏、编码压缩,经网络传输后,再解码还原成画面的过程。如下图所示:这个完整的流程中可以看出:ToDesk通过高效编解码技术提升画面的处理速度与画质;通过SD-WAN技术来保障最优网络路线;通过采用RTC技术则更多的聚焦传输协议和弱网对抗,从底层提升传输性能。下面就分别对这三种技术做一个简单的介绍。3.1. 高效编解码技术ToDesk的视频编码器采用静态场景优化策略,用智能算法合并处理整片的同色像素点,经合并之后,大幅减少需要处理的数据量,从而缩短处理时间并降低带宽占用,消除了空间冗余(静态画面中像素间的相同性造成的冗余)。ToDesk只传输有变化的区域,可以大幅减少传输数据量。我们将一系列画面分为独立帧(称作I帧)和预测帧(称作P帧)。I帧会传输所有信息,可以解码出完整画面;P帧只传输前后画面之间的差别,需要参考前一帧画面来拼出完整画面,但数据量只有I帧的几百分之一。一个I帧和多个P帧就构成了一组连续画面。就像是火车,I帧是车头,P帧都是接在车头后面的多节车厢。ToDesk通过图像算法优化,可以让一个I帧拖更多P帧,进一步降低5ms编码延时。高效的编解码技术使得编解码更快,端到端延时更低。3.2. SD-WAN技术OTT SD-WAN(Over-The-Top Software-Defined WAN),即顶层软件定义广域网,OTT SD-WAN 就是在运营商网络之上搭建一个统一平台,解决应用层的互联互通问题。ToDesk SD-WAN 目前在全国部署的机房数量已经超过200个,覆盖密度远远高于传统远控厂商。从而实现了对机房节点的有效调度。此外,ToDesk SD-WAN采用"核心-中层-边缘" 三层组网架构,信息高效共享,且骨干节点间专线直连,进一步降低传输延时。正因为有超过200个分布广泛的中转节点,使得千万终端可以通过实时探测的方式,定时向节点机房发送探测信号,并选出最快速的接入点。基于实时探测到的信息,ToDesk SD-WAN进行全局计算,选出最佳接入节点和最佳转发路线。3.3. RTC技术ToDesk通过在远程控制领域引入RTC技术大幅度提升了网络吞吐量和弱网对抗能力。从而使得ToDesk远程控制可以做到操作更丝滑、画质更高清、传输更流畅,真正做到了远程操作宛如本机。RTC(Real Time Communication)源自实时高清直播,使用高效的RTP传输协议,并利用RTT采样、Kalmen-Filter、Jitter Buffer、HARQ算法来缓解网络波动,确保数据快速、稳定、准确地传递:在整个传输过程中,使用RTP协议提升传输速度和可靠性被控端编码好的数据发出时:RTC会预测路线拥塞状况、控制发包速度,确保数据有序、顺畅地进入网络主控端接收到数据时:RTC将数据包正确排列,通过多重算法减少抖动丢包,确保数据完整无误地进入解码器4、总结远程办公已经是大势所趋,远程控制作为远程办公不可或缺的一环,必将进入发展的快车道。远控的需求已经逐渐变成了生活中的刚性需求。体验了两款常用的远控软件:ToDesk和向日葵。整个体验下来,向日葵相对而言功能更加丰富,它的屏幕录制和截屏功能还是蛮实用的。但个人觉得在个人免费版上,ToDesk的优势会更突出一些,它遍布全国的网络节点以及高效的编解码技术使得其画质更加清晰,操作更加流畅。同时它的SSL+ ChaCha20 and Poly1305 端到端加密技术也有保证了控数据的传输安全性。当然如果能像向日葵一样,再多提供一些辅助功能就更好了。希望国产品牌都能不断精进打磨自家产品,能为用户带来更好更顺畅的远控体验。5、参考ToDesk远控产品为什么做的好?优势点拆解4(RTC音视频传输技术)ToDesk远控产品为什么做的好?优势点拆解3(OTT SD-WAN)
iOS移动设备屏幕镜像电脑软件AirServer2023
几周前,面向游戏主机Xbox One的第三方投影软件AirServer迎来了一次更新:现在用户可以在不使用Chromecast设备的情况下,将Oculus Quest的显示画面投屏到Xbox One。AirServer能够以720p或1080p、每秒60帧的速度将Oculus Quest里面的音频及视频进行投屏。虽然AirServer同时具有标准的Airplay和Miracast的选项,但开发人员建议仅启用Google Cast选项。与标准的Chromecast设备一样,使用AirServer投屏到Xbox One时需要连接Wi-Fi网络。尽管AirServer是一20的软件,但是用户可以获得为期一周的免费试用期。因此,用户在正式付费之前,可以先测试该功能是否能够顺畅运行。所谓从VR头显进行投屏,就是指用户在使用VR头显时,能够让他/她的朋友通过电视看到他/她在VR头显里看到的画面(当然也包括声音)。对于那些已经拥有Xbox One并且没有Chromecast的用户而言,采用AirServer方式进行投屏就非常有意义。随着越来越多的智能电视内置了投屏功能,消费者如果想要下载AirServer,需要在此之前先确定自己的电视是否已经具备了投屏功能。AIrServer是一款ios投屏到mac的专用软件,可将iOS上的音频,视频,照片,幻灯片和镜像接收通过AIrPlay投射到Mac。AIrserver 7 mac版可以实现将手机上的媒体文件以及其他操作投射到电脑上进行操作。使用AIrServer,您现在可以从Mac,iOS,PC,AirServer是一款简单易用且功能强大的投屏软件,可将安卓、iOS移动端屏幕内容投屏到Mac、Windows设备中,轻松获得大屏的观赏体验,并可应用于会议、教育、游戏直播等领域,进行屏幕的共享,接下来就来告诉大家AirServer是做什么用的,AirServer投屏软件使用技巧。接下来,我们以iOS设备投屏到Windows设备为例,分享下AirServerWindows10DesktopEdition投屏软件的使用技巧吧。在计算机上下载AirSever下载:如下https://wm.makeding.com/iclk/?zoneid=47079一、同一网络下轻松投屏AirServerWindows10DesktopEdition简单易用,只要将需投屏的iOS移动设备与Windows设备连接到同一个网络中,即可将Windows设备添加为投屏对象。在连接同一个网络的前提下,打开iOS设备的控制中心(iOS11或更新版本,从屏幕右上角向下滑动;iOS8、iOS9或iOS10,则从屏幕底部向上滑动),打开屏幕镜像功能。接着,如图4所示,我们就能在iOS设备的屏幕镜像列表中找到连接在同一个网络中的Windows设备。点击该Windows设备,待两台设备完成连接后。即可将iOS移动设备中的界面投屏在Windows设备的AirServerWindows10DesktopEdition软件界面中,操作非常简单。二、安全投屏功能为了保障投屏操作的安全性,AirServerWindows10DesktopEdition为我们提供了三种设备连接选项,分别是允许所有连接、输入屏幕代码后连接、密码连接。在家庭网络中可选择使用“允许所有连接”,方便日常使用。如果在公共网络中,建议选择输入屏幕代码后连接或密码连接的方式,防止他人进行恶意投屏,保障屏幕安全。以输入屏幕代码为例,在投屏连接前,Windows设备中的AirServerWindows10DesktopEdition界面会出现代码,即本例中的2221。我们在iOS移动设备进行屏幕镜像连接时,会弹出如图8所示的“隔空播放”代码输入请求,将上述的代码(2221)输入到对话框中,方能成功完成连接。三、小结以上就是AirServer是做什么用的,AirServer投屏软件使用技巧的相关内容了。除了进行iOS设备的投屏外,AirServerWindows10DesktopEdition也可进行安卓设备的投屏。
CrossOver2023版苹果电脑专用虚拟机软件
CrossOver2023版是专为苹果电脑用户打造的一款实用工具,这款工具主要方便用户在mac上运行windows系列的应用程序,用户不需要安装虚拟机就可以实现各种应用程序的直接应用,并且可以实现无缝集成,实现跨平台的复制粘贴和文件互通等,新版本还带来了全新的功能,增强了兼容性,有需要的用户欢迎下载。CrossOver2023特色1、运行 Windows 应用再也不必重启像运行原生应用一样,直接从您的 Mac 或 Linux 系统上运行您的 Windows 应用。2、一键安装CrossOver 一键安装技术让 Windows 程序使用更简单。3、全速运行没有性能损耗,在您最喜欢的系统上使用您熟悉的应用。4、无缝集成与桌面环境融为一体跨平台的复制粘帖和文件互通。有很多用户可能会需要用到crossover,但是不知道怎么正确的使用这个软件来帮助自己,其实这款软件的使用方法非常简单,下面就给大家来介绍一下。1、首先下载软件,可以支持两种系统Mac OS和Linux,选择自己需要的下载。2、把下载好的文件解压,在Content文件夹中找到Mac OS然后安装,再选择“移动到应用程序文件夹中”。3、如果是新用户会有免费使用。4、然后打开CrossOver,进入主界面。5、选择“安装Windows应用程序”,进去界面后,就可以搜索win应用,可以选择安装包和容器。6、也可以根据分类来找用户所需要的应用,然后点击“继续”就可以进行安装了。7、如果还是找不到想要的程序,也可以先下载好安装包,在“未列出的应用程序”中安装。8、最后会显示安装来源和容器,选择“安装”就可以了。Crossover23是Mac 和 Windows 系统之间的兼容工具。使 Mac 操作系统的用户可以运行 Windows 系统的应用,从办公软件、实用工具、游戏到设计软件, 您都可以在 Mac 程序和 Windows 程序之间随意切换。可以使用Crossover在Mac上运行您的 Windows软件,从此摆脱双启动的繁琐和虚拟机的卡顿。让Windows办公软件、实用工具还有游戏都原生地运行在您的 Mac 和 Linux 上。因为 CrossOver mac版不像虚拟机一样需要安装一个完整的 Windows 系统,所以 Windows 程序得以高效运行、游戏得以获得更高的帧数,并且您也无需再下载Windows。只需CrossOver,便可在您的 Mac 运行 Windows 办公软件、实用程序和游戏。并且因为没有虚拟机带来的性能损耗,Windows 软件和游戏可以像它们在 Windows 系统一样快速运行。CrossOver2023Mac-安装包下载如下:https://wm.makeding.com/iclk/?zoneid=50028CrossOver2023linux-安装包下载如下:https://wm.makeding.com/iclk/?zoneid=50029系统要求使用Intel 处理器并运行 Mac OS 系统的 Mac。提示:CrossOver Mac 并不能在 iPads、iPhones、Android 设备以及 PowerPC 上运行。300MB 的可用磁盘空间以及更多用于安装Windows 软件的磁盘空间。
接口测试|HttpRunner简介及安装
HttpRunner简介及安装HttpRunner简介HttpRunner 是一款面向HTTP(S) 协议的通用测试框架,只需编写维护一份YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。HttpRunner运行环境HttpRunner 是一个基于Python 开发的测试框架,可以运行在macOS、Linux、Windows 系统平台上Python 版本:HttpRunner 支持Python 3.4 及以上的所有版本,并使用Travis-CI 进行了持续集成测试,测试覆盖的版本包括2.7/3.4/3.5/3.6/3.7。虽然HttpRunner 暂时保留了对Python 2.7 的兼容支持,但强烈建议使用Python 3.4 及以上版本操作系统:推荐使用macOS/LinuxHttpRunner设计理念充分复用优秀的开源项目,不追求重复造轮子,而是将强大的轮子组装成战车遵循 约定大于配置 的准则在框架功能中融入自动化测试最佳工程实践追求投入产出比,一份投入即可实现多种测试需求HttpRunner核心特性继承 Requests 的全部特性,轻松实现 HTTP(S) 的各种测试需求;采用 YAML/JSON 的形式描述测试场景,保障测试用例描述的统一性和可维护性借助辅助函数(debugtalk.py),在测试脚本中轻松实现复杂的动态计算逻辑支持完善的测试用例分层机制,充分实现测试用例的复用测试前后支持完善的 hook 机制响应结果支持丰富的校验机制基于HAR 实现接口录制和用例生成功能(har2case)结合 Locust 框架,无需额外的工作即可实现分布式性能测试执行方式采用 CLI 调用,可与Jenkins 等持续集成工具完美结合测试结果统计报告简洁清晰,附带详尽统计信息和日志记录极强的可扩展性,轻松实现二次开发和Web平台化在HttpRunner 自动化测试项目中,主要存在如下几类文件YAML/JSON(必须):测试用例文件,一个文件对应一条测试用例debugtalk.py(可选):脚本函数,存储项目中逻辑运算函数该文件存在时,将作为项目根目录定位标记,其所在目录即被视为项目工程的根目录(当前工作目录CWD)该文件不存在时,运行测试的路径将被视为当前工作目录CWD测试用例文件中的相对路径(例如.csv)均需基于当前工作目录CWD运行测试后,测试报告文件夹(reports)会生成在当前工作目录CWD.env(可选):存储项目环境变量.csv(可选):项目数据文件,用于进行数据驱动reports(自动生成):运行后自动生成,无需创建HttpRunner环境安装HttpRunner是开源的一个测试框架,可以按照常规的安装Python第三方库的方式进行安装。方法一:命令行直接安装HttpRunner 的稳定版本托管在PyPI 上,可以使用pip进行安装。在Termina窗口中输入:pip install httprunner==2.5.7即可进行安装方法二:Pycharm搜索安装pycharm下载步骤:File——Settings——Python Interpreter——点击加号——输入httprunner进行匹配——选择版本号2.5.7——点击Install Package,如下图HttpRunner运行步骤1、打开pycharm,新建项目,项目名自定义(注:利用pycharm编辑yml文件)2、在项目下新建testcases文件夹3、在testcases文件夹下新建并编辑好.yml后缀的测试场景文件4、在pycharm中点击下方的Terminal,输入命令httprunner yml测试脚本路径执行