MIUI 的手机目前有啥推荐的吗? k30s 至尊纪念版、k40、还是即将要发布的 k40s?

看大家在用的有 k40 和 mi10s,我再看看
k40 k40s k30s MIUI129 条回复 • 2021-10-12 13:01:38 +08:00
1 2
2
❮ ❯
ioschina1 101
ioschina1 19 小时 22 分钟前
@archiyuan 应用双开不叫系统分身。
系统分身的功能可以参考 8848 的广告语:
一部手机,两个密码,两个空间,分别存储,互不干扰,8848 钛金手机。
生活才能会工作,8848 钛金手机,双密码,双空间,工作生活分别存储,互不干扰。

比如你如果拿个 8848,周围的人都会怀疑你手机里有很多小秘密,但是 MIUI 有 8848 宣传的卖点功能,你的小秘密只有你自己知道
jntitor 102
jntitor 19 小时 12 分钟前
看起来 civi 不错 其他的都太重了
lscexpress 103
lscexpress 19 小时 6 分钟前
选 k40,我手持小米 8 下部就换 k40,因为 888 处理器太拉胯了所以选择次旗舰。
daviddeng 104
daviddeng 19 小时 3 分钟前
@jdhao 个人感觉可以观望一下反馈,等 MIUI 反馈好点再买
user1121114685 105
user1121114685 18 小时 57 分钟前 via Android
只有我建议用 k40 游戏增强版吗? 1 可刷印度固件,2 电池大,3 充电快,4 信号好。5nfc 红外都有。而且天机 1200 性能也够用。简直日用强的一逼呀!
user1121114685 106
user1121114685 18 小时 55 分钟前 via Android
还有一点,解锁不用等 168 个小时。哈哈哈
Torpedo 107
Torpedo 18 小时 51 分钟前
10s,除了重,其他还好
Huelse 108
Huelse 18 小时 41 分钟前
k30s 至尊纪念版在用,一代神 u865+5000 毫安的电池,真的一充一天,有时候能用 2 天,不完游戏不看视频。好像只有线下还有货
archiyuan 109
archiyuan 18 小时 10 分钟前
@ioschina1 我什么时候说应用分身=系统分身了?
archiyuan 110
archiyuan 18 小时 9 分钟前
@user1121114685 刷印度固件有哪些优点啊?
yaojin 111
yaojin 18 小时 6 分钟前
为啥这么多人黑小米, 我觉得挺好用的啊, 经济实惠, 用的 k30pro, 满足日常使用, 现在二手也就 1000 多一点, 不像以前用 iphone 小心翼翼的使用, 现在手机摔了也不心疼, 哈哈, 喜欢 miui 的系统, 真的非常符合国人的使用, iphone 的系统的确好, 但是很多功能的设计都是考虑国外的用户习惯的, 不过 miui 的确有时候有点 bug, 但是不至于没法使用, 而且出现 bug 的几率很低, 不知道为啥这么多人黑, 特别是 B 站, 不知道是不是请的水军
FawkesV 112
FawkesV 18 小时 4 分钟前
@Huelse 就是太重了 我用的也是这个 其他的感觉啥都好 就是重
yeqizhang 113
yeqizhang 17 小时 35 分钟前 via Android
手持 k40 半年,感觉还行吧,12gb 用起来很爽。希望还能继续强势用上三年。
Linon 114
Linon 17 小时 1 分钟前 via Android
k30s
Awes0me 115
Awes0me 16 小时 58 分钟前
@user1121114685

为啥不用等 168 ?
Aaron01 116
Aaron01 16 小时 50 分钟前 via Android
k20pro 用了 2 年多了,没发现什么 bug
az22c 117
az22c 16 小时 45 分钟前
@Huelse 平时中午吃个饭 提个手机太重了
wenjiu 118
wenjiu 16 小时 22 分钟前
供参考:手上有台红米 10x 5g,miui12.5 将近半年多没推送新系统了,目前*新版本 wifi 断流严重(很多人有此 bug 而且都被反应烂了没人处理),官方论坛还有很多人反应别的各种小毛病,得不到处理。
目前百度上搜红米 10x 5g 依然只能搜到各种推荐,性价比之王,怀疑删评论严重。

不知道是因为不是旗舰机没人权还是因为各个机器体质不一样。
amirobotics 119
amirobotics 14 小时 52 分钟前 ❤️ 1
我曾经看到其他人投诉 MIUI bug,都认为是黑粉。

直到我遇到这些 miui bug 后才深刻体会。

比如 notification,

1. 老板通过 WhatsApp 催工作进度。
2. 老母亲通过短信慰问。
3. 各位大佬在 telegram 发讯息。

*后会看到一个通知是:“老板 whatsapp 的头像”+“老母亲的电话号码”+“telegram 的讯息”。

没错,whatsapp,telegram,message 的通知全都搞砸了,都混在一起,差不多 2 个月多的时间才要修复。真的非常影响体验,基本生活都搞砸了,分不清谁是谁。

此外,还有 notification bubble 的 bug,launcher 在 6 inch 的屏幕里,只能有 3 inch 的操作界面。

MIUI 广告那些的都是小问题,我能手动解决。但是那些 bug 的修复速度让我觉得,下一台电话不会是小米了。

*后想说,MIUI 有 bug,顶多影响体验。但雷军造车,刹车如果失灵,后果可是人命。MIUI 都做不好,还想造车?倒不如直接造宇宙飞船。
zpxshl 120
zpxshl 14 小时 33 分钟前 via Android ❤️ 1
@yaojin 为什么这么不喜欢小米呢。119 楼就是一个例子。你没遇到的问题不代表别人没遇到,正常反馈问题总被怀疑是水军或者黑粉。
就这质量还怀疑被水军黑,真是相当自信。 就 miui 这质量,几年前就 bug 满天飞了,反馈渠道还失灵。
tanranran 121
tanranran 14 小时 23 分钟前
有一说一,多年 MIUI 的粉,手持小米 10 pro 512G 版本,发热真的是越来越严重,服了
mengqingshuise 122
mengqingshuise 14 小时 16 分钟前
@AKAMichael 我说怎么我的谷歌账号登不上,原来是升级系统的事。
Huelse 123
Huelse 13 小时 26 分钟前
@FawkesV #112
@az22c #117
的确重,毕竟 216g,个人觉得不用手机壳会舒服点

现在看 13pro 也有 203g,就还好
bigwhite 124
bigwhite 13 小时 22 分钟前 ❤️ 1
bilibili 有一个吐槽小米 11 的视频火爆了,我以为不会有人推荐小米 11 呢。。
superBearL 125
superBearL 1 小时 51 分钟前
为什么想不开呢,建议看看 B 站《小米圣经》
rexmann 126
rexmann 1 小时 45 分钟前
k30s 在手,除了重一点没太多问题,也没遇到多少 bug,但是*近有点发热,不知道是因为动态桌面还是 5G 的原因
zkhhkz123 127
zkhhkz123 1 小时 36 分钟前
@sxox P50 标准版是直屏的 其他配置也有大杯水准 可惜是 4G
user1121114685 128
user1121114685 2 分钟前 via Android
@archiyuan 无广告,全套谷歌框架,稳定些,安装软件什么的骚扰也少
user1121114685 129
user1121114685 1 分钟前 via Android
@Awes0me 因为 mtk 的 cpu 可以强解 bl 。

如何在Bash中运行并行作业/进程/程序

We generally run jobs in bash in serial order. Serial order means one command runs and after completion other command starts. There is another way to run jobs which are named parallel. Running parallel means multiple jobs run at the same time side by side.

我们通常以连续顺序在bash中运行作业。 串行命令表示一个命令运行,完成后另一个命令启动。 还有另一种运行并行作业的方法。 并行运行意味着多个作业同时并发运行。

将工作发送到后台 (Send Job To The Background)

We will start with a simple example where two ping commands will be run in the background at the same time. We will add & to the end of each command. We will ping two domain names google.com and poftut.com.

我们将从一个简单的示例开始,其中两个ping命令将在后台同时运行。 我们将在每个命令的末尾添加& 。 我们将ping两个域名google.compoftut.com 。

$ ping google.com & ping poftut.com & 
Send Job To The Background 
Send Job To The Background
将工作发送到后台

We can see from the output that after the command is issued we have two lines which show the commands processes and their related PID and there is also information about the background jobs in square brackets job id. Both commands will start in the background and will resume up to kill operation or exit.

从输出中我们可以看到,发出命令后,我们有两行显示了命令进程及其相关的PID,并且在方括号job id中还包含有关后台作业的信息。 这两个命令都将在后台启动,并将继续执行以终止操作或退出。

等待运行新作业 (Wait Before Running New Job)

In some cases, we may need to wait before running multiple parallel jobs. We can use the bash wait function to wait for finish previously started jobs. In this example, we will run jobs j1 and j2 before running j3 . But we will wait to complete jobs j1 and j2 before running j3job in the background.

在某些情况下,我们可能需要等待才能运行多个并行作业。 我们可以使用bash wait功能来等待先前启动的作业完成。 在此示例中,我们将在运行j3之前运行作业j1j2 。 但是我们将等待在后台运行j3作业之前完成作业j1j2 。

  1. j1 &
  2. j2 &
  3. wait
  4. j3 &

GNU并行 (GNU Parallel)

GNU Parallel is a very useful tool that can start multiple jobs in a parallel way. We will use the command parallel and specify the jobs we want to run after ::: . In this example, we will run ping poftut.com and ping google.com commands in parallel which will output the same time.

GNU Parallel是一个非常有用的工具,可以以并行方式启动多个作业。 我们将使用parallel命令,并在:::之后指定要运行的作业。 在此示例中,我们将并行运行ping poftut.comping google.com命令,它们将输出相同的时间。

$ parallel ::: "ping poftut.com" "ping google.com"

如何在Bash Infographic中运行并行作业/流程/程序 (How To Run Parallel Jobs/Process/Programs in Bash Infographic)

How To Run Parallel Jobs/Process/Programs in Bash Infographic
How To Run Parallel Jobs/Process/Programs in Bash Infographic

大厂的对象存储都是基于什么实现的呢?

腾讯云 COS,阿里云 OSS,HW OBS 这些对象存储服务是独立自主实现的,还是基于什么开源项目(比如 :MinIO )实现的呢?
OSS minio 存储 对象25 条回复 • 2021-09-02 16:06:46 +08:00
Ianchen 1
Ianchen 1 天前
盲猜一个 Ceph
acbot 2
acbot 1 天前
@Ianchen *早我感觉也是 Ceph 但是后来我发现 MinIO 更像 特别是 Rest Api 和 微服务结合方面
ccde8259 3
ccde8259 22 小时 39 分钟前 via iPhone
Ceph……
自研一套 API 不用几个钱
dynastysea 4
dynastysea 22 小时 25 分钟前 ❤️ 1
明确的告诉你,这三家都是自研的,ceph 这东西当当玩具可以,真正大规模的实践坑很多。存储是云计算的根基,在这块上各家都是重金投入,而且不存在兼容性的问题,自研好处多多。
moult 5
moult 21 小时 45 分钟前 via iPhone
腾讯和阿里有历史技术沉淀在,肯定自研的。像 HW,七牛这类厂商就不好说了。。。不过,感觉 ceph 和 minio 自用还可以,拿来卖服务还差口气儿。
tongz 6
tongz 21 小时 17 分钟前
各位大佬, OSS 的话, 海量小文件存储靠谱吗, 单个文件平均在 1KB-10KB 之间, 每天产生 1 千万个左右, 还在持续增长, 写多读少
locoz 7
locoz 21 小时 15 分钟前 via Android
底层可能部分用了 ceph,但是主体肯定是自己搞的,大厂又不差那点钱。
plko345 8
plko345 20 小时 42 分钟前 via Android
@acbot 对象存储好像都是有标准的,api 和协议方面都差不太多,aws s3 也是,底层不一样,但提供给用户的接口一样,所以会有这种错觉
gstqc 9
gstqc 19 小时 55 分钟前 via Android
主要是 s3 协议已经是事实上的业界标准了,不兼容就没人用
ospider 10
ospider 19 小时 21 分钟前
ceph 确实支撑不了多大的场景,但是也不至于到玩具的地步。头条 2017 年才从 ceph 切换到自研的。
boyhailong 11
boyhailong 19 小时 6 分钟前
了解的成都好几个做云存储的都是 ceph 。。。。 而且也都商用了
dongqihong 12
dongqihong 18 小时 47 分钟前
大体都分三层,接入层( API 、各种业务逻辑),索引层(基于 LSM ),持久化存储层(分部署存储,类似 HDFS )
阿里腾讯华为都大致如此,S3 早期也一样
WebKit 13
WebKit 18 小时 44 分钟前 via Android
@moult 七牛也是 go 开发,自研的
gstqc 14
gstqc 18 小时 35 分钟前
AWS S3 这种,一个 bucket 放百亿量的文件,如何做检索的
opengps 15
opengps 18 小时 5 分钟前
参考 aws 的对象存储
crowdwei 16
crowdwei 16 小时 4 分钟前
Azure Storage:

SOSP Paper – Windows Azure Storage: A Highly Available Cloud Storage Service with Strong Consistency


henvm 17
henvm 15 小时 43 分钟前 via Android
对象存储不是基于对象的吗?
imbushuo 18
imbushuo 9 小时 19 分钟前
https://dl.acm.org/doi/10.1145/2043556.2043571

scalable table as index + scalable persistent layer (stamp),跟 SSD 的内部存储组织类似但是 scale 被放大了
acbot 19
acbot 8 小时 44 分钟前
@boyhailong 曾经我看一个 私有云的商用产品存储方案也是用的 ceph
acbot 20
acbot 8 小时 43 分钟前
@moult 也就是 一个中型公司自己服务用的话 ceph 和 minio 都没有问题是不?
acbot 21
acbot 8 小时 42 分钟前
@ospider 是什么原因造成 ceph 不能支撑大的场景呢?如果自用只是存储量比较大的情况 ceph 能胜任不呢?
swulling 22
swulling 7 小时 18 分钟前 via iPhone
说底层用 ceph 的可能对数据量缺乏想象力
dynastysea 23
dynastysea 6 小时 45 分钟前
@moult 如果你是个存储行业的,你就知道 HW 的存储实力有多强了(软硬层面全栈都有自研,腾讯现在还停留在软件层面,阿里也在涉及存储硬件开发),互联网公司在华为面前就是跟玩似的,特别是腾讯,虽然是自研但基本也是跟着开源的节奏来(华为在国外都有专门的研究所,比如俄罗斯有专门的存储算法研究团队,存储部门内的博士更是一大堆,阿里也有美国研发团队,博士也不少。腾讯投入小很多,基本都是国内招本科生、研究生,存储行业好的博士基本不会选择腾讯,多数都是选择华为、阿里,很多在华为的挖都挖不动,对于那些深研技术的,目前国内差不多只有华为、阿里有更高的平台可以让他们接触到*前沿的存储技术)。华为存储做的很早,腾讯、阿里存储组里面很多华为跳槽过来的。
zmxnv123 24
zmxnv123 4 小时 56 分钟前 via iPhone
hdfs+hbase 目前对象数大概几十万亿。
armyHcz 25
armyHcz 1 小时 8 分钟前
@moult 七牛用的是阿里云包了一层

每公里配速9分18秒,双足机器人完成5公里慢跑

近日,来自美国俄勒冈州立大学的知名机器人研究团队 Agility Robotics 打造的双足机器人 Cassie ,耗时 53 分钟完成了一段 5 公里慢跑,引发了大家的关注。

配速接近人类,5公里不用充电

研究团队 Agility Robotics 发布了一段视频,视频记录了这段五公里跑的过程和花絮。

%title插图%num

慢跑全程在无视觉输入的情况下,由机器人自主完成

视频里的 Cassie 形似鸵鸟,有着灵巧的关节运动和稳健的步伐。

Agility robotics 的创始人,同时也是俄勒冈州立大学的教授 Jonathan Hurst 表示:Cassie 在完成这五公里的慢跑中没有充电,只有两次停机调整,一次是因为过热,还有一次因为弯道过速,这两次调整花了 6 分半钟的时间。

也就是说,除去 6 分半钟的停机调整, Cassie 花了大约 46:30 的时间完成了五公里慢跑,每公里配速达到了 9m18s/km。

%title插图%num

团队跟随 Cassie 记录跑步过程

据团队介绍,Cassie 是*个“在户外场地使用机器学习控制跑步步态”的双足机器人。

基于*近的研究,团队完成了《Blind Bipedal Stair Traversal via Sim-to-Real Reinforcement Learning》(无视觉双足机器人通过模拟到现实的强化学习,完成楼梯爬行)论文,还入选了今年的 Robotics: Science and Systems(RSS)大会。

%title插图%num

%title插图%num

论文地址:https://arxiv.org/pdf/2105.08328.pdf

通过强化学习,训练双足机器人模拟及适应不同高度的地面变化,而且只需要稍加改变现有的平地强化学习框架,就可以在楼梯、不平的地面等场景中稳健地行走。

值得一提的是,无论是慢跑还是楼梯场景, Cassie 都是在无视觉输入的情境下,完全靠下肢的动能传导进行运动计算。

双足机器人,更像人

大家熟悉的四足机器人网红波士顿动力机器狗,在过去的几年中,已经用跑跳、上下楼梯甚至跳绳和跳舞的表现,成功找到了使用场景。

但相比于常被设计成动物形象的四足机器人,双足机器人在外型上则更像人,功能上也更接近于人。

%title插图%num

双足机器人在受到撞击时,

比四足机器人更难保持平衡和稳定

人类的行走是通过大脑发出指令,驱动各个关节完成动作。而双足机器人,需要模拟人类的胯部和脚掌,从而来支持机器人的行走与稳定。只有充分理解机器人动力学特性,才能驱动机器人完成高效复杂的运动。

Cassie 系列机器人在动力学部分参考了鸟类步态,尤其是鸵鸟。Cassie 的髋部设计了多个自由角度,但膝盖只能单向弯曲,脚踝被设计得柔韧有力,整体非常轻盈,能以比较自然的方式去减缓震动,类似人类走路。

俄勒冈大学的 The Dynamic Robotics Laboratory(动态机器人实验室)的 Agility Robotics 团队在机器人界久负盛名。他们从 2017 年开始研发 Cassie 系列双足机器人,历经多个版本,到目前已经有了不少成果,在近期还收到了 DARPA 的 100 万美金的研究资金。

团队表示,这次五公里无充电慢跑的成功给了他们很大的信心,未来将继续对 Cassie 的技术改造和加强,以进入到物流配送等应用场景中。

快手因果推断与实验设计

[ 导读 ]理解和识别用户行为指标的相互关系是实验分析的目标。在社区氛围下,影响用户行为的因素更为复杂,关系识别更为困难,如何使用各种学科的方法,对社区进行宏观或微观的建模分析,系统性的评估各种策略的长期生态影响,是所要解决的重要问题。

本文金雅然博士将以快手直播的现实任务为例进行展开,介绍快手因果推断与实验设计的相关工作,主要内容包括:① 快手直播场景中遇到的因果推断问题及技术框架;② 基于观测数据或实验数据的因果推断技术案例;③ 涉及到网络效应的复杂实验设计。

01 快手直播场景中遇到的因果推断问题及技术框架

在快手我们主要会遇到这四类问题:用户激励设计、推荐策略评估、产品功能迭代以及预估产品和方向的长期价值。

%title插图%num

遇到这些问题我们通常有几种方式来解决:

  • 基于观测数据的因果推断,即从已有实验和非实验数据中提炼因果关系;
  • 在产品设计上构建正确的AB实验,合理计算指标,度量产品功能和迭代的影响;
  • 通过经济模型、机器学习算法和数据、实验的结合构造反事实推理来回答长期效应问题。

解决这些问题的核心是使用因果推断方法。

%title插图%num

因果推断的核心是在数据中存在关联关系的前提下,考虑数据之间的因果关系。任务是在给定的假设中,选择模型框架,将因果关系从关联中分割,对因果分析的大小作出正确的估计,并且通过统计推断的方法,验证推断的正确度,并回答推断结果存在多大波动。

在因果推断中,我们通常应用以下两种框架:

%title插图%num

Rubin虚拟事实模型(Potential Outcome)的核心是寻找合适的对照组。通常情况下,我们想要度量用户是否被实验影响到的两者差异是多少,而对于同一个用户,我们只能观测到被影响/不被影响一个状态,因此需要寻找合适的对照组,估计无法被观测到的影响。我们通常会构造一些识别实验,比如,经济学上通过RCT实验,互联网常使用AB实验,或者根据观测数据使用恰当的方法来寻找对照组。

%title插图%num

Pearl因果图模型(Causal Graph Model)使用有向图描述变量之间的因果关系。通过计算因果图中的条件分布,获得变量之间的因果关系。有向图指导我们使用这些条件分布来消除估计偏差,其核心也是估计检验分布、消除其他变量带来的偏差。

Pearl框架和Rubin框架有一些关联,简单图中,Potential Outcome模型中通过工具变量和匹配法消除估计偏差和Pearl的框架思想是一致的。

但是Pearl的框架可以处理多个变量之间相互作用的复杂关系。

%title插图%num

总结来说,Potential Outcome和Causal Graph是两种互补的推测虚拟事实的方法,目的都是为了计算存在混淆变量时,干预变量时对结果的影响,都需要对因果关系作假设,以及控制带来偏差的变量;不同点在于Rubin框架估计的因果效应主要是干预前后的期望差值,而Pearl框架下,我们估计的是干预前后的分布差异,Rubin框架解决的问题是因果效应的估计和统计推断,Pearl框架更偏向于因果关系的识别。

%title插图%num

从这两种框架延伸,在不同情景下,快手会使用不同工具解决实际问题,AB实验帮助我们观测策略或产品变动影响,在一些不能做实验或者多个实验相结合的场景下,会有一些其他的方法,下面会对具体方法展开介绍。

02 基于观测数据或实验数据的因果推断技术案例

1. 产品功能的评估:DID及其拓展案例

%title插图%num

双重差分适用于存在不可观测的个体固定效应场景,通过差分消除固定效应,其关键假设是,政策干扰前存在平行趋势,且实验干扰效应不随时间变化。双重差分可以用来消除那些对后期可能存在干扰因素,得到实验效果估计。

%title插图%num

%title插图%num

双重差分假设用户开始受影响的时间是一样的,实验处理效应对用户的影响是一样的,而这些假设难以满足。比如穿云箭红包,当实验效果上线后,用户的行为会发生变化,且不同用户的行为是不一致的,当不同表现用户都在实验组,传统的DID模型估计实验效应会产生偏差。因此我们在DID方法上进行修正,按照用户的状态是否更改分为不同类型,对不同类型用户分别做DID估计,再进行加权平均,得到修正后DID实验效果值。

%title插图%num

当treatment施加到一个群体或者地区上时,很难找到单一的对照组,这种时候采用合成控制方法构造虚拟对照组进行比较,原理是构造一个虚拟的对照组,通过treatment前的数据上学习的权重,拟合实验组在实验开始前的数据,模拟实验组用户在没有接受实验情况下的结果,构造合成控制组,实验开始后,评估实验组和合成控制组之间的差异。

2. 推荐策略的评估:因果推断与机器学习

%title插图%num

因果分析与机器学习存在一些差异点。因果分析的语言,核心在于因果关系的识别,即合理的估计处理前和处理后现有条件期望的差异,也可以是一种处理缺失数据的问题,在因果推断上我们非常关心的是如何准确的估计结果以及结果的方差。而在机器学习中,我们使用准确度来衡量机器学习模型的好坏,其目标是在训练集上估计一个条件期望,使得测试集上MSE*小。机器学习可以通过cross-validation(模型参数)的方法去数据驱动的选择一个*佳模型形式,与传统计量经济学方法相比不需要复杂的假设,例如function form的假设,从这种意义上机器学习能够更准确的预测。

%title插图%num

但是在因果推断问题上,机器学习的局限性在于,无论用什么机器学习方法,因果识别的条件都不能被放松;同时在机器学习模型通常使用的正则化和过拟合处理,会带来有偏估计,因此我们需要消除这种估计的偏差;在统计推断上,机器学习的局限性在于,有些模型不能直接计算方差,并且有时即使可以计算,方差的收敛速度也未必能够达到预期,所以针对这些问题,下面介绍了几种方法。

  • ① 双重机器学习模型

%title插图%num

很多时候因果推断会遇到混淆变量的问题,比如想要去分析直播推荐多样性对用户活跃度的影响,但是这些都和用户历史相关。传统计量经济学方法可以解决这个问题,但是依赖很多强假设,强假设下,得到的估计不一定合理,双重机器学习为这个问题提供了解决的思路。

双重机器学习假设所有混淆变量都可以被观测,其正则化过程能够达到高维变量选择的目的,与Frisch-Waugh-Lovell定理相似,模型通过正交化解决正则化带来的偏差。

除了上面所描述的,还有一些问题待解决,比如在ML模型下存在偏差和估计有效性的问题,这个时候可以通过Sample Splitting 和 Cross Fitting的方式来解决,具体做法是我们把数据分成一个训练集和估计集,在训练集上我们分别使用机器学习来拟合影响,在估计集上我们根据拟合得到的函数来做残差的估计,通过这种方法,可以对偏差进行修正。在偏差修正的基础上,我们可以对整个估计方法去构造一个moment condition,得到置信区间的推断,从而得到一个有良好统计的估计。

  • ② 因果随机森林模型

%title插图%num

我们通常探究策略对于不同用户异质性的影响,即哪些用户更容易被影响以及影响有多大,传统做法是多维分析,但是效率低,容易犯错。这时可以结合机器学习的方法,这里选择了决策树方法,因为决策树的分桶特性能够帮助解决异质性问题,相对于传统方法因果树做了两点改动:

  • 把数据分成训练集和估计集,一部分训练集去构造树,另一部分估计集去估计因果效应和方差;
  • 在树的分区方式上,使用各个节点的方差对目标函数加以修正。

通常情况下,我们结合实验来做分析。比如在实验中,通过因果树得到因果效应的分布,然后挑选出来那些实验效果显著的用户,去分析他们的特征,以及找到敏感用户,帮助我们了解策略的影响,作出下一步迭代。

  • ③ Meta-Learner for Uplift Modeling

%title插图%num

Uplift-modeling是另一种定位敏感人群的方法,和因果树的步骤有差别。核心是利用实验数据对实验结果变量建模,利用得到的模型估计条件平均处理效果。Uplift-modeling具有不同的学习方式,主要有S-Learner 、T-Learner和X-learner。和因果树相比,Meta-Learner是一种间接建模方式,实现快但一些场景下误差较大。

3. 用户行为链路的研究:因果图

%title插图%num

我们通常通过因果图来进行用户行为链路的研究。Rubin流派常用来估计变量之间的一度关系,但当我们面对一些未知问题时,我们想了解的是有哪些变量真正影响我们关心的结果变量,以及变量之间的相互影响和用户行为链路是什么,有效过程指标是什么,这些时候我们用到因果图的方法。

在生成因果图中,常遇到的限制是算法层面的,比如我们在优化目标函数的时候,需要遍历所有的因果图,是一个NP-hard问题,我们需要有效的算法得到想要的估计,市面上的算法大概分为两类:

  • Constraint-based Algorithms
  • Score-based Algorithms

03 复杂实验设计

%title插图%num

在实验设计上我们通常遇到的难点是网络效应的检测和应对,在直播下,网络效应有好多种表现方式,在这种网络效应存在的情况下尝试了一些方式,比如说:双边实验、时间片轮转实验、合成控制方法。

1. 双边实验设计

%title插图%num

在双边实验中,同时进行了主播侧和观众侧的分流,主播侧一部分是上了挂件,观众侧一部分能看到一部分看不到,双边实验的优点是可以同时检测两端的效果,同时可以帮助检测到组间的转移和溢出。在了解到组间溢出和干扰下,通过双边实验我们可以更加准确的测算处理效应,在挂件场景下,我们认为N3是代表完全没有处理过的效果,Y代表处理后的结果,N3和Y进行差分,计算产品功能推全后的影响,而且,双边实验能够更好的帮助我们归因。

%title插图%num

然而双边实验只能描述简单的组间溢出,在个体和个体之间存在干扰的复杂情况下,双边实验是无法帮助我们判断实验效果,例如直播PK暴击时刻这种情况下,我们通过时间片轮转实验解决,即在一定实验对象上进行实验组策略和对照组策略的反复切换。

2. 时间片轮转实验

%title插图%num

时间片轮转的核心在于:

  • 时间片的选择
  • 实验总周期选择
  • 随机切换时间点是什么样子的

当时间粒度约粗糙,时间上的干扰造成的偏差会越小,但是方差会越大,影响实验的检验效果,针对这个问题,采取的方案是*优设计。

%title插图%num

*优设计的核心假设是:

  • Outcome有一个*对上界
  • 用户无法知晓下一个时间是否是实验组
  • 如果时间片之间存在干扰,干扰的影响是固定且有限的

如何终止一个正在进行的协程?

利用 context.WithCancel()来终止协程,但存在一个问题:cancel()执行后,必须等 for 循环执行完毕 goroutine 才退出。

for {
select {
case <-Ctx.Done():
return
default:
for i := 0; i < 100; i++ {
// 业务逻辑
}
}
}
需求为:cancel()后协程立马退出不再执行后面的循环。
目前我的解决方法:单独起一个协程用来监听退出信号,然后通过全局变量通知业务逻辑循环退出。

flag := false
go func() {
for {
select {
case <-Ctx.Done():
flag = true
return
}
}()

for i:=0; i < 100; i++ {
if flag {
return
}
// 业务逻辑
}
请问*佳实践应该是如何退出?

第 1 条附言 · 1 小时 23 分钟前
是这样一个场景:用户创建任务,起一个 goroutine 去执行,执行过程中,用户想要取消这个任务。
第 2 条附言 · 1 小时 16 分钟前
for i := 0; i < 100; i++ {
select {
case <-Ctx.Done():
return
default:
// 业务逻辑
}
}
感谢大家的回答,每次循环都检测一次退出信号就好了。
延伸出另一个问题:用户取消任务,如何让default里的业务逻辑立马终止?

第 3 条附言 · 56 分钟前
看了一下os.exec.cmd.Start()的源码

if c.ctx != nil {
c.waitDone = make(chan struct{})
go func() {
select {
case <-c.ctx.Done():
c.Process.Kill()
case <-c.waitDone:
}
}()
}
另起一个goroutine监听cancel(),然后kill掉执行的process。
类比本问题,一个协程执行任务,一个协程监听任务的cancel(),任务取消直接kill掉执行任务的协程且监听协程也退出。

协程 return flag for10 条回复 • 2021-08-30 17:11:31 +08:00
dream10201 1
dream10201 1 小时 53 分钟前
瞎想的,你把 select case 放到 for 循环里面不行?
dream10201 2
dream10201 1 小时 52 分钟前
for {
for i := 0; i < 100; i++ {
select {
case <-Ctx.Done():
return
default:
// 业务逻辑
}
}
}
rimutuyuan 3
rimutuyuan 1 小时 50 分钟前
“`
for {
for i := 0; i < 100; i++ {
select {
case <-Ctx.Done():
return
default:
// 业务逻辑
}
}
}“`
BBCCBB 4
BBCCBB 1 小时 50 分钟前
这种可以在 for 里每次检测 ctx.Done()… 不过不是*佳实践.
和你图中这个方法差不多,, 不过不知道你图中这个方法有没有变量可见性的问题? 导致 flag=true 后在当前协程并不可见?
777777 5
777777 1 小时 27 分钟前
@BBCCBB 是可见的
777777 6
777777 1 小时 24 分钟前
@dream10201 这样有问题吧,如果不调用 cancel(),*外面 for 循环不会退出。
sadfQED2 7
sadfQED2 1 小时 10 分钟前 via Android
这个问题我在 java 里面也研究过,*后结果就是无解,只能业务代码里面每次循环都判断
xx6412223 8
xx6412223 1 小时 4 分钟前
直接退出就不是合理的设计。
caryqy 9
caryqy 52 分钟前
执行前检查 Done,

执行后提交前再次检查 Done,根据结果来收尾。

考虑的粒度即使再细都会碰到 执行中取消 这个问题,所以到某个程度之后就 禁止用户取消
haochen2 10
haochen2 6 分钟前
如果业务逻辑超时运行或着阻塞,根本走不到 ctx.Done 那个 case 的地方

波及1.95亿辆车,黑莓承认系统存在漏洞,大众、宝马纷纷“躺枪”

黑莓手机作为将全键盘设计做得*成功的手机,曾是无数手机用户的首选。近年来随着安卓和iOS的快速崛起,黑莓早已放弃硬件业务,向移动安全和通信软件服务商转型,因此它现在成为医疗设备、汽车系统等领域工业设备软件的主要供应商。

%title插图%num

来源于网络

近日,黑莓公司设计的一款实时操作系统被爆存在重大的网络安全漏洞问题,可能会导致使用该软件的汽车和医疗设备面临风险,让高度机密的系统暴露在黑客面前。但是黑莓公司却隐瞒这一消息长达数月之久。据资料显示,全球范围内共有1.95亿辆汽车使用了该系统,包括大众、宝马和福特等汽车制造商,因此这次安全漏洞的曝光,将会对很多车主造成影响。

本周二,黑莓公开承认QNX 系统包含 BadAlloc 漏洞,该漏洞可以让黑客瘫痪相关设备。而同样受到 BadAlloc 漏洞影响的公司在几个月前就向用户发布了公告,比如,微软安全研究人员在 4 月份宣布,他们在多家公司的操作系统和软件中发现了该漏洞

%title插图%num

而在今年 5 月,根据 CISA(美国网络安全与基础设施安全局)公开披露的漏洞修补名单上其中没有黑莓公司的身影。

%title插图%num

%title插图%num

黑莓为何隐瞒漏洞信息?

据媒体报道,黑莓公司曾制作的一份PPT暴露了真实原因,黑莓着重强调用户不知道这种危险的存在,而将真正危险用户排除在外,除非联邦政府或设备制造商告诉他们。而迫使黑莓公司发布有关 BadAlloc 漏洞报告的直接原因是CISA及国防部的参与,CISA 还敦促客户将其设备升级到*新的 QNX 版本,并发布相关公告。

据知情人士透露,今年早些时候,黑莓公司私下告诉 CISA,他们不相信 BadAlloc 漏洞影响了他们的产品,在过去的几个月里,CISA 敦促黑莓接受这个坏消息,*终让黑莓公司承认操作系统存在安全漏洞。黑莓*初拒*承认这个被称作 BadAlloc 漏洞对其产品造成了影响,后来又拒*发表公开声明。

“他们*初的想法是私下通知客户,因为这样做不会让黑客知道漏洞正在修复中,也可以减少经济损失与公司负面影响。””一名 CISA 员工说。然而,随着时间的推移,黑莓“意识到公开消息有更多的好处”。

黑莓公司还告知 CISA,由于无法识别使用其软件的客户个人信息,因此没办法向客户发出警告。这是由于黑莓将 QNX 授权给“原始设备制造商”,后者使用QNX系统为客户定制相关产品设备,就像微软将其 Windows 操作系统出售给惠普、戴尔和其他计算机制造商一样。

CISA 网络部门负责人埃里克·戈德斯坦(Eric Goldstein)对此拒*回应黑莓公司,但表示CISA 网络安全部门会“定期与黑莓公司安全研究人员合作,及时地披露漏洞修复情况,以便用户可以采取措施保护他们的系统。”

埃里克·戈德斯坦 (Eric Goldstein)补充道 :“QNX 被广泛用于各种产品,这些系统漏洞可能会被黑客利用。虽然我们不知道有哪些漏洞被利用,但我们鼓励 QNX 用户查看黑莓近日发布的公告,尽快修补系统。”

%title插图%num

如何应对安全漏洞

黑莓并不是*家被披露发生系统安全漏洞的公司,网络安全专家表示,再高度复杂的系统中偶尔也会出现此类漏洞,但解决 QNX 问题将是黑莓和政府的一项重大任务。而且黑莓等公司向设备制造商出售他们的软件时,他们很少提供软件代码的详细记录,这让硬件制造商、政府部门对网络安全风险一无所知。

与此同时,NTIA (美国商务部国家电信和信息管理局)于7月份发布了关于 SBOM(软件物料清单)的列表指南。有了 SBOM,得知 QNX 发生漏洞的汽车制造商或医疗设备制造商,可以快速检查哪些产品受到影响。SBOM 虽然不会阻止黑客发现和利用漏洞,也无法告诉公司某个缺陷是否对其系统构成了风险,但是可以加快修补系统漏洞的速度。

黑莓公司这次隐瞒系统安全漏洞,也让普通民众议论纷纷。

“软件供应链安全是美国*大的漏洞之一,”前众议院情报委员会高级职员安迪·凯泽 (Andy Keiser) 说。“作为地球上联系*紧密的社会之一,我们仍然是*脆弱的社会之一。”

“黑莓不可能完全清楚系统漏洞的运行状况,”乔治梅森大学计算机科学教授兼 Linux 基金会开源供应链安全主管大卫惠勒说,“我们需要帮助人们了解他们系统中的各种组件,并帮助他们及时地更新系统。”

编译完的内核如何快速删除没有编译的.c 文件

编译完的内核如何快速删除没有编译的.c 文件?目的是我只需要关注被编译的 code 就可以。这样不会受多余的代码干扰。放到代码阅读软件中比如 source insight 也简洁很多。当然如果能删除一些.h 文件,就更好了。但我感觉不一定可以。
编译 删除 内核 文件5 条回复 • 2021-08-19 12:24:11 +08:00
yanqiyu 1
yanqiyu 1 天前 via Android
虽然我猜肯定有专门的工具干这事情,但是编译一轮之后单纯靠 atime 应该就可以排除没被使用的文件。

不过 Linux 内核的目录结构都很清晰,看代码也不太容易被干扰啊。
abutter 2
abutter 1 天前
一种办法是是使用 objdump 生成带文件路径信息反汇编代码,然后从里面提取文件路径,去掉行号,去重。
huangya 3
huangya 1 天前
@yanqiyu
>不过 Linux 内核的目录结构都很清晰,看代码也不太容易被干扰啊。
对新手或者不了解的人还是很有好处的。另外同一个目录下,也有一些 C 文件可能不会编译
bfdh 4
bfdh 23 小时 57 分钟前
#!/bin/bash
set -e
#set -x

#脚本说明
#该脚本用于在编译后的 Linux Kernel 目录中找出实际编译的全部.c 文件及其依赖的.h 文件,
#并将结果保存在 files.list 中,可直接导入到 sourceinsight 。
#执行方法:将脚本放到 Linux Kernel 编译目录直接执行即可。

TMPDIR=`mktemp -d`
MASTERDIR=”$PWD”
OCMDFILE=$TMPDIR/file.ocmd
TFILE=$TMPDIR/file.t
AFILE=$TMPDIR/file.a
BFILE=$TMPDIR/file.b
CFILE=$TMPDIR/file.c
DFILE=$TMPDIR/file.d
HFILE=$TMPDIR/file.h

function get_header_file_from_ocmd()
{
local prefix=$(echo $MASTERDIR/ | sed ‘s/\//\\\//g’)
oc=$1 #name of input file,input file is mixed content of all .o.cmd file
out=$2 #name of output file

echo “handle ocmd file $oc for header file”

grep -E “\.h)?$” $oc > $out
sed -i -e ‘s/\.h)$/.h/g’ -e “s/^\([^\/]\)/${prefix}\1/g” $out

echo “handle ocmd file $oc for header file done”
}

function merge_result()
{
cat $@ > files.list

echo All .c and .h files are listed in files.list, now you can import them to sourceinsight project.
}

function get_defination_from_ocmd()
{

oc=$1 #name of input file,input file is mixed content of all .o.cmd file
out=$2 #name of output file

echo “handle ocmd file $oc for defination”
rm -fv $out

sort -u $oc > $out
cp -v $out $oc

grep “\-\bD” $oc |awk -F’ ‘ ‘{for(i=1;i < NF;i++)printf(“%s\n”, $i);}’ |grep “\-\bD”|sed -e “s/\-D/\#define\ /g” -e “s/=/\ /g” -e ‘/KBUILD_/’d | sort -u > $out

echo “handle ocmd file $oc for defination done”
}

find -name “*.o.cmd” | sed -e ‘/\.mod\./’d -e ‘/\.built-in\./d’ > $OCMDFILE #no “.*.modmake -j24.cmd” and “.built-in.o.cmd”
cat $OCMDFILE | awk -F ‘.’ ‘{printf(“%s%s%s.c\n”, “‘$MASTERDIR'”, $2, $3)}’ > $TFILE #add $MASTERDIR to the start of line
sort -u $TFILE > $CFILE
echo “System:List of C file is in $CFILE”

echo “Mix content of all .o.cmd file”
while read line; do
cat $line
done < $OCMDFILE >> $AFILE
echo “Mix content of all .o.cmd file,done,$counts files has been handled”

echo “Genrate defination file”
cp -v $AFILE $BFILE

get_defination_from_ocmd $BFILE $DFILE
echo “Genrate defination file,done”
echo “System:List of D file is in $DFILE”

echo “Put all unit of information to single line mode”
sed ‘s/\ /\n/g’ $AFILE > $TFILE
echo “Put all unit of information to single line mode,done”

echo “Sort and Uniq all unit of information”
sort -u $TFILE > $AFILE
echo “Sort and Uniq all unit of information,done”

echo “Get all name of header file”
get_header_file_from_ocmd $AFILE $TFILE
echo “Get all name of header file,done”

echo “Sort and Uniq all name of header file”
sort -u $TFILE > $AFILE
echo “Sort and Uniq all name of header file,done”

echo “Delete the name of header file of host”
sed ‘/^\/usr/d’ $AFILE > $HFILE #delete line which start with “/usr”,it’s host’s header file
echo “Delete the name of header file of host,done”

echo “System:List of H file is in $HFILE”

merge_result $CFILE $HFILE

rm -fr $TMPDIR

补充:如果不删 TMPDIR,还可以在 file.d 文件中查看通过命令行 /Makefile 传递进去的宏定义。
nsynet57 5
nsynet57 22 小时 12 分钟前
其实必要性不大,,,

写给小白的云计算入门科普

云计算介绍

%title插图%num

2006年8月9日,当时的谷歌首席执行官埃里克·施密特(Eric Schmidt)在搜索引擎大会(SES San Jose 2006)上,首次提出了“云计算”(Cloud Computing)的概念。

%title插图%num

而就在大会的5个月之前,2006年3月,电商起家的美国亚马逊公司正式推出了自家的弹性计算云(Elastic Compute Cloud,EC2)服务。

%title插图%num

这两个标志性事件的发生,正式宣告了云计算时代的到来,也意味着互联网的发展进入了一个新的阶段。

时至今日,十五年过去了,云计算经历了质疑,也经历了狂热,逐渐被人们所接受,进入了稳步发展的阶段。

%title插图%num
然而,作为一个高大上的名词,众人皆知的概念,至今为止,我们仍然难以对云计算给出一个准确的、通俗易懂的定义。

专业机构给出的定义,永远让人云里雾里——

一种计算方式,能够通过Internet技术将可扩展的和弹性的IT能力作为服务交付给外部用户。(Gartner公司)
一种标准化的IT性能(服务,软件或者基础设施),以按使用付费和自助服务方式,通过Internet技术进行交付。(ForresterResearch公司)
云计算是一种模型,可以随时随地,便捷地,按需地从可配置计算资源共享池中获取所需的资源,资源可以快速供给和释放,使管理的工作量和服务提供者的介入降低至*少。(美国国家标准和技术研究院)

究其原因,我觉得有两个方面。
*,是不同的人,看待云计算有完全不同的角度。
“一千个人心中有一千个哈姆雷特”。不同的人对云计算有不同的定义,不同的想法。例如:

技术工程师认为:云计算是一种技术,一项专业。
商人认为:云计算是一种商业模式,一门赚钱的生意。
普通用户认为:云计算是自己经常会用到的一种服务。
财务总监和老板认为:云计算是资金投入,是成本。
第二个原因,我觉得是因为云计算过于庞大,以至于“盲人摸象”。甲认为A是云计算,乙认为B是云计算,丙认为C是云计算。大家各说各话,无法给出一个统一的定义。
其实,我觉得,云计算就是“云”+“计算”。“计算”是一种行为。而“云”,是一种模式、方法,或者说理念。

我们对计算非常熟悉。人脑思考,就是一种计算方式。计算,就是对信息、数据进行处理和运算。这是一个很宽泛的概念。
我们玩游戏,里面的人物建模、移动控制,属于计算。我们看视频,里面的图像编码解码,属于计算。我们网上购物,计价付费,也属于计算。

%title插图%num在信息时代,计算无处不在。

然而,就像人思考需要大脑、干活需要工具一样,计算也离不开资源。

信息时代的计算资源,既包括CPU、内存、硬盘、显卡这样的硬件资源,也包括操作系统、数据库、运行库、中间件、应用程序这样的软件资源。
而“云”,就是获取这些资源的一种新型方式。

%title插图%num
与云计算相对应的,是传统计算。

*早的大型机,中型机,再到80年代的PC机,90年代的小机房,都属于传统计算。

传统计算的一大特点,就是资源固化。也就是说,这些计算机所能够使用的软硬件计算资源,是固定的。
CPU、内存、硬盘,装了多少,就只能用多少。资源少了(性能不足),需要再花钱买。资源多了(性能过剩),也不给退。

正因为传统计算在资源分配上缺乏足够的灵活度,所以才有了“云计算”概念的提出。
简单来说,相比传统计算,云计算的资源获取方式,从“买”变成了“租”。

%title插图%num

所有我们前面提到的软硬件计算资源,全部都能租。提供资源租用服务的,就是云服务提供商。

%title插图%num

%title插图%num

云计算的基本特点

云计算的这种“租”,和我们平常租房租车又有很大不同。它具有三个显著特点:

(1)资源池化

%title插图%num

云计算的计算资源,大部分不是单体物理资源。也就是说,不会租一台孤零零的物理服务器给你。(裸金属服务器除外)

大部分云计算资源,都是池化了的资源。什么叫池化?池化就是物理资源的基础上,通过软件平台,封装成虚拟的计算资源,也就是我们常说的虚拟化。

%title插图%num

虚拟化

虚拟化的好处,就是让计算资源变得更加容易选择,调用更加灵活。

(2)弹性伸缩

%title插图%num

云计算的计算资源,可以按需付费。你想要用多少,就租多少,配置是支持自定义的。

这就有点像吃麻辣烫,丰俭由人,想吃什么就拿什么,想吃多少就拿多少。*后按量付费。

%title插图%num
麻辣烫

如果你后期因为业务增长,需要更好的配置,可以加钱,买更多资源。

增加资源的过程,基本上是平滑升级。尽可能减小对业务的影响,也不需要进行业务迁移。就像你现在用的电脑,硬盘从1TB升级到2TB,下个订单就完成了,不需要换机,甚至不需要重启。(升级CPU或内存还是需要停一下机的。)

如果某项业务的负荷下降,你也可以选择弹性收缩,降低配置,节约资金。

(3)弹安全可靠

%title插图%num

专业的人做专业的事。传统计算,需要自购硬件,自建机房,自行维护。这是很大的资金和人力投入。

而云计算,从物理角度来说,所有的计算资源都汇集在大型互联网数据中心(IDC),那里有严格的安保、抗震的建筑、安全的供电,有非常全面的容灾设计和应急方案,能够更好地保护计算资源,不会轻易地中断服务。

%title插图%numIDC数据中心

从软件上来说,云计算服务提供商有更专业的技术团队,更成熟的技术储备,能够更好地保护计算资源不被入侵或破坏。

大部分云计算服务采用的分布式架构,使得计算资源可以承受远超单点架构的负荷压力。多节点的服务方式,也便于服务不同区域的用户。

%title插图%num

云计算到底包括哪些服务

前面我们说了,云计算提供资源服务,主要包括硬件资源和软件资源。

你知道具体有多少种资源吗?

小枣君以目前国内某云计算服务商所提供的服务为例,整理了一个产品表格,如下:

%title插图%num%title插图%num%title插图%num
简单统计了一下,一共7个大类,149个项目,充分说明了现在云计算业务的多样性,但凡是你能想到的,都被做成了云服务,用来“出租”。

我们来简单看看这些大类分别是干什么的。

(1)弹性计算

%title插图%num

这是*主要的一类云计算服务,实际上就可以理解为租一台配置灵活的服务器。支持异构运算,既可以租用CPU算力,也可以租用GPU、FPGA算力。算力从入门级到高性能,全部配齐。

实现弹性计算的虚拟化和容器技术,也被单独拆分出来,进行“出租”。

(2)数据库

%title插图%num

这个就不用说了,从结构化数据库到非结构化数据库,从开源数据库到私有技术数据库,全部都有。

(3)存储

%title插图%num

块存储、文件存储、对象存储,全部配齐。

(4)网络

%title插图%num

包括带宽、公网IP、VPC专有网络、*,能想到的都有。SLB负载均衡服务,CDN内容分发网络服务,也有。

(5)安全服务

%title插图%num

从DDoS到漏洞扫描、安全测试,全部配齐。

(6)物联网和云通信

%title插图%num

相信很多通信人会感到有点惊讶。是的,对于云服务提供商来说,这些都属于云服务。既然移动通信网络没牌照不能碰,LoRa、终端、物联网平台这些能碰的技术,还是不会放过的。

(7)人工智能和大数据

%title插图%num

这两块是*值得关注的。大数据我之前专门介绍过,它本质上就是属于云计算的。人工智能也没有被云服务提供商放过,从接口到平台,都有所涉及。包括语音识别、图像识别,都成了云服务的一种。有的云服务商,还提供人脸识别和人体分析服务。

以上各类云计算业务,基本涵盖了所有的计算领域和需求,也适合各个行业各个层次的用户。

所以说,很多人把云计算比作是和水、电一样的基础设施,确实如此,以后没有人能离得开云计算。

%title插图%num

IaaS、Paas、SaaS

刚才我们是对计算资源进行了横向分类。其实,我们也可以对它们进行纵向分类。

戴尔公司曾经给云计算梳理过一个12层模型:

%title插图%num

上面这个模型非常专业,我画一个大家更能看得懂的简单模型:

%title插图%num

云计算既然是一种资源提供方式,那么,就可以根据模型的层级,提供不同等级的资源。

我们姑且分为三层:*层次,是*底层的硬件资源,主要包括CPU(计算资源),硬盘(存储资源),还有网卡(网络资源)等。第二层次,要高级一些,我不打算直接使用CPU、硬盘、网卡,我希望你把操作系统(例如Windows、Linux)装好,把数据库软件装好,我再来使用。第三层次,更高级一些,你不但要装好操作系统这些基本的,还要把具体的应用软件装好,例如FTP服务端软件、在线视频服务端软件等,我可以直接使用服务。这三种层次,就是大家经常听到的IaaS、Paas、SaaS。IaaS: Infrastructure-as-a-Service(基础设施即服务)PaaS: Platform-as-a-Service(平台即服务)SaaS: Software-as-a-Service(软件即服务)

%title插图%num事实上,这三种服务模型并不代表云计算的全部。如果你愿意,完全可以自己定义一个模型,例如存储即服务、网络即服务、编排即服务,甚至出行即服务、定位即服务。

这充分体现了云计算服务的灵活性。

%title插图%num

公有云、私有云和混合云

*后,我们再来看看公有云、私有云和混合云。

这个是站在部署方式的角度来进行分类的结果。

公有云:这是云计算部署*常见的一种方式。计算资源由第三方云服务提供商拥有和运营。来自不同组织的企业或个人,共享资源池中的资源。

私有云:计算资源由第三方或组织自己拥有和运营。所有的计算资源,只面向一个组织开放。这种方式资源独占,安全性更高。

混合云:公有云+私有云。例如,平时业务不多时,使用私有云资源,当业务高峰期时,临时租用公有云资源。这是一种成本和安全的折中方案。

好啦,相信看到这里,大家都搞明白云计算到底是什么了。

我还是要补充说一句,云计算其实并不是万能良药。这种资源集中的方式,对于很多场景需求来说,并不一定适合。

以前我们搞云计算,主要的动力来自资源不足。现在,随着终端算力的不断增加,分布节点的计算资源也能够满足很多场景需求。于是,区块链等去中心化的技术,开始崛起,边缘计算这样的新型计算方式,也在崛起。这些,都会对云计算造成一定的竞争压力。

至于未来的计算模式会不会发生新的变革,还需要时间来告诉我们答案。

求助方案:项目的运行软件的配置文件如何科学管理?

之前的方法是 mv nginx.conf nginx.conf.bak20210803 但是这样的话不易于追溯、回滚,也容易丢失。 现在的想法是,每个 ip 创建一个文件夹,文件夹下的路径跟服务器的路径一致,然后统一收集放到 git 下。 如 gitfolder/10.10.10.100/etc/nginx/nginx.conf gitfolder/10.10.10.100/etc/xxx.conf gitfolder/10.10.10.101/etc/nginx/nginx.conf gitfolder/10.10.10.101/etc/xxx.conf … 更新再通过脚本更新。

你们的服务器是怎么管理的,有没有更好的方案?比如利用某软件现有功能管理( ansible ?)?

gitfolder 文件夹 路径 git9 条回复 • 2021-08-05 16:24:16 +08:00
IgniteWhite 1
IgniteWhite 7 天前
在用一个简单却强大的工具 dotbot https://github.com/anishathalye/dotbot

能使用各种按条件的 hook,实现不同机子的 dotfile 管理。dotbot 作为 submodule,整个 dotfiles 用 git 维护。点进我 github 的 dotfiles 是个例子,虽然是个人配置文件但是也针对不同机子和服务器的。
huangzxx 2
huangzxx 7 天前
我们用 ansible-playbook
asdasdqqq 3
asdasdqqq 7 天前 via iPhone
@IgniteWhite get 新名词 dotfiles?
asdasdqqq 4
asdasdqqq 7 天前 via iPhone
@huangzxx 恩 参考经验 谢谢
sadfQED2 5
sadfQED2 7 天前 via Android
我们是把配置文件以及 dockerfile 都直接放到项目路径下面
huangmingyou 6
huangmingyou 7 天前
ansible playbook , 并且通过 git 进行版本管理。
libook 7
libook 7 天前
可以考虑用“配置中心”,有一些专门的软件和方案可以做这个。

如果跑在 VPS 里,并经常弹性增加和释放服务器的话,很多云厂商都有 VPC 的镜像功能,改配置可以打新镜像,然后用新镜像增加新的服务器,并释放旧的服务器,就完成了配置的更新,当然这个要求配置的修改可以无缝迁移。

如果你用 k8s 的话,可以用 k8s 的 secrets 方案 https://kubernetes.io/docs/concepts/configuration/secret/
asdasdqqq 8
asdasdqqq 6 天前
@huangzxx
@huangmingyou
两位大佬可否发 yml 文件出来学习下
huangmingyou 9
huangmingyou 5 天前

– name: backup config
shell: tar czpf /etc/nginx$(date +%Y%m%d%H%M).tgz /etc/nginx
– name: sync nginx config
synchronize:
src: “./roles/nginx-orig-gallery/files/{{ ansible_ssh_host }}/”
dest: /etc/nginx/
archive: yes
delete: false
recursive: yes
owner: no
group: no

就是简单的做一个目录 rsync 拷贝。目录按 ip 地址或者域名作为目录名,放到 files 目录下。