一个程序要能够在计算机系统中运行,除了程序本身必须是机器可执行的目标代码之外,还要有相应的数据。程序和数据还要提前被存储在存储器中,即需要把一定的存储空间分配给这个程序和数据。另外,在执行该程序前,处理器中的指令计数器必须指向存储器中被执行程序的首地址。如果在程序执行过程中还需要其他的资源,比如需要从磁盘的一个文件中接收一批数据,那么在申请使用磁盘时,还要知道磁盘的设备编号、文件的名称以及文件在磁盘中的物理位置、文件长度等资源信息,所有这些信息均需要有存储空间对它们加以保存,以便在运行时使用。显然,如果有多个程序要同时进人内存并运行,那么每个要运行的程序也需要准备程序代码、数据、资源信息以及保存这些代码、数据、资源信息的存储空间。
为了能够从技术上较为准确地描述正在运行、将要运行或者刚刚退出运行的各个程序的执行代码、数据以及所需的资源信息等,人们引进了进程(Process)这个概念。
多道程序设计多道程序设计
采用多道程序设计可以提高处理器的利用率。多道程序设计技术充分发挥了处理器与外围设备以及外围设备之间的并行工作能力,从而提高处理器和其他各种资源的利用率。下面从程序的顺序执行、程 ...
什么是 nrm ?
nrm 是一个 npm 源管理器,允许你快速地在
npm源间切换。
什么意思呢,npm默认情况下是使用npm官方源(使用npm config ls命令可以查看),在国内用这个源肯定是不靠谱的,一般我们都会用淘宝npm源:[https://registry.npm.taobao.org/](https://registry.npm.taobao.org/),修改源的方式也很简单,在终端输入:
1npm set registry https://registry.npm.taobao.org/
再npm config ls查看,已经切换成功。
那么,问题来了,如果哪天你又跑去国外了,淘宝源肯定是用不了的,又要切换回官网源,或者哪天你们公司有自己的私有npm源了,又需要切换成公司的源,这样岂不很麻烦?于是有了nrm。
nrm安装
1npm install -g nrm
nrm使用
查看可选源(带*号即为当前使用源)
12345nrm ls```这个方法简便,看你的穿着,我大概知道你是什么样的人。虽然不完全准确,但是概率比一个个蒙要高。
(2)这个方法迎合了人需要预测和了解陌生人的需求。比如说,我去大学做讲座时穿牛仔裤,大家就容易猜测,这哥们儿是个平易近人的大朋友。
(3)你的着装礼仪决定了你对自己的评估,能看出你的自我概念。比如一个女生如果很舍得买衣服,我能知道她应该觉得自己是很美丽的。
正因为这个方法好用、有效,所以,我们宁愿承担“狗眼看人低,只认衣冠不认人”的罪名继续用它。你期待对方怎么看你,就用一种他能够识别的方式装扮自己吧。
两 ...
TIPS
未读很多时候,比如开会和与人对话的时候,有些人会心不在焉,两眼发呆。你以为他太累了,仔细聊下来,却发现答案也许是他家的猫昨天死了······或者他现在很烦,因为一个客户······或者他就是喜欢这样,“你别看我乱晃,其实我在听”。如果你想多说,“直白”还会想“我自己的情绪,你别管就好了”。
这其实是扯淡,工作是一种社交关系,人作为一种社交动物,我们没法不关注对方的情绪。不信让你女友一边和你亲热,一边看《糗事百科》,20秒笑一下,然后温柔地告诉你:“没事,你慢慢做,这是我的情绪,你别管好啦。”
情绪不仅仅属于你,也是一个组织的“潜规则”-你的情绪一旦在公众场合出现,就具有影响对面、周围人的能力,而对方需要花费更多的心力和自我调适才能够与你合作。
加州大学曾做过一个实验。他们在一间办公室里安装了300多个摄像头,探索参与工作的人的情绪与办公效率的关系。他们让一个老板走人办公室,向某一个秘书咆哮。你猜结果怎么样?秘书当然被虐,此处不表,办公室里其他40个人在接下来的两个小时里,行动比以前快了20%,但是整体效率却下降了40%。
你遇到过类似的情况吧?
负面情绪不仅能够打败你自己,也会引发连锁反应 ...
很多人有很多的理由把工作和生活混在一起。其实大学的时候,这二者就是相互影响的,比如说今天累了,就少看点书,明天可以再多看点。
但是组织的形态决定了这是个一起玩的游戏。要一起玩,就一定要有规则。这个规则肯定没法照顾所有人,只能照顾大多数人。就好比淘宝有个12点抢红包的活动,我正好上厕所去了,回来过了12点,谁也抱怨不了-淘宝不和我玩了,它不会因为我需要上厕所,就给我一个抢到红包的机会。
工作也是个大游戏。所以,你要明白,一旦你开始因为生活而影响工作,就等于绑架整个团队为你个人的生活埋单。
时间一长,就会出现两个结果:
(1)大家特别理解你、特别喜欢你,但是不爱和你有工作关系,因为和你玩还需要额外为你的私生活付费;
(2)大家设计各种规则针对你,到最后,大家都懒得“鸟”你了。
所以,所有的“直白”们,记住别让别人为你的生活、心情、健康、心理、过去的阴影、前女友、贱男人等埋单,别成为一个“能当好朋友却很难共事”的人。
两种人最可悲:第一种是没有才情性格的人;第二种则是性情大于才情的人。
一旦你成为后者,哪怕在才情上加了50点的攻击力,但是你的性情却需要使用100点的能量值,大家就不爱用你了。 ...
为了“勾引”大家看这些文章,我决定“标题党”一下。其实,我自己从职场小白到管理者,也有过下面所有的心路,所以写给大家,也是希望可以为大家省点时间。
首先我想说,这个东西是写给职场小白的-我这么叫他们,不是因为年龄,而是因为心智。有的人可能年纪很大,但却还是职场小白。就叫他们“直白”(职场小白)好了-这群人其实很可爱,很真诚又自我,很直白。
直白也不完全是他们的问题,尤其像我们这一代人,他们的年纪很轻,而且很多都是独生子女,不能在大院里和一群孩子玩。他们没有学习到关于组织的所有概念,就被一脚踢进职场了。所以,他们处理同辈的问题就有点困难。
还有一些人,可能原来就是家庭的核心-父母、哥姐的宝贝,一旦到了组织,他们就不太懂得如何和上级打交道。
不过不要紧,我来说说组织里面最重要的一些“潜规则”。
这些规则对于职场老人来说,不是不愿意说,而是认为“这不是废话嘛”。但是因为很多人不知道,所以我就“废话”一下吧。
基于时间的一次性密码算法(TOTP)是一种根据预共享的密钥与当前时间计算一次性密码的算法。它已被互联网工程任务组接纳为RFC
6238标准,成为主动开放认证(OATH)的基石,并被用于众多多重要素验证系统当中。
TOTP是散列消息认证码(HMAC)当中的一个例子。它结合一个私钥与当前时间戳,使用一个密码散列函数来生成一次性密码。由于网络延迟与时钟不同步可能导致密码接收者不得不尝试多次遇到正确的时间来进行身份验证,时间戳通常以30秒为间隔,从而避免反复尝试。
在特定的多重因素验证应用中,用户验证步骤如下:一位用户在网站或其他服务器上输入用户名和密码,使用运行在本地的智能手机或其他设备中的TOTP生成一个一次性密码提交给服务器,并同时向服务器输入该一次性密码。服务器随即运行TOTP并验证输入的一次性密码。为此,用户设备与服务器中的时钟必须大致同步(服务器一般会接受客户端时间-1区间(也就是延迟了30秒)的时间戳生成的一次性密码)。在此之前,服务器与用户的设备必须通过一个安全的信道共享一个密钥,用于此后所有的身份验证会话。如需要执行更多步骤,用户也可以用TOTP验证服务器。
TOTP基于H ...
2FA,2 Factor
Authentication,双因子验证,是一种安全密码验证方式。区别于传统的密码验证,由于传统的密码验证是由一组静态信息组成,如:字符、图像、手势等,很容易被获取,相对不安全。2FA是基于时间、历史长度、实物(信用卡、SMS手机、令牌、指纹)等自然变量结合一定的加密算法组合出一组动态密码,一般每60秒刷新一次。不容易被获取和破解,相对安全。
所谓认证(authentication)就是确认用户的身份,是网站登录必不可少的步骤。
密码是最常见的认证方法,但是不安全,容易泄露和冒充。
越来越多的地方,要求启用双因素认证(Two-factor authentication,简称
2FA)。本文介绍它的概念和实现方法。
双因素认证的概念
一般来说,三种不同类型的证据,可以证明一个人的身份。
秘密信息:只有该用户知道、其他人不知道的某种信息,比如密码。
个人物品:该用户的私人物品,比如身份证、钥匙。
生理特征:该用户的遗传特征,比如指纹、相貌、虹膜等等。
这些证据就称为三种“因素“(factor)。因素越多,证明力就越强,身份就越可靠。
双因素认证就是指,通过认 ...
我们接下来主要讨论一下我们经常会用到的一些对象:VO、DTO、DO 和
PO。
由于不同的项目和开发人员有不同的命名习惯,这里我首先对上述的概念进行一个简单描述,名字只是个标识,我们重点关注其概念:
VO(View Object):
视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。
DTO(Data Transfer Object): 数据传输对象,这个概念来源于 J2EE
的设计模式,原来的目的是为了 EJB
的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。
DO(Domain Object):
领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。
PO(Persistent Object):
持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或若干个)就对应
PO 的一个(或若干个)属性。
模型
下面以一个时序图建立简单模型来描述上述对象在三层架构应用中的位置
...
随着互联网时代,特别是移动互联网的到来,形形色色的企业都在将自己的系统平台快速升级迭代,以此作为向互联网转型的一部分。
在此背景下,这类应用平台所依赖的数据库系统就需要支持突然增加的巨量交易数据,但是在这种情况下单体的数据库往往会很快过载,而用于扩展数据库最常见的技术手段就是“数据分片”。
因此这一讲,我将为你介绍什么是分片,以及如何将其用于扩展数据库。同时,我还会回顾常见分片架构的优缺点,以使用
TiDB 为例,和你探讨如何在分布式数据库中实现分片。
数据分片概论
分片是将大数据表分解为较小的表(称为分片)的过程,这些分片分布在多个数据库集群节点上。分片本质上可以被看作传统数据库中的分区表,是一种水平扩展手段。每个分片上包含原有总数据集的一个子集,从而可以将总负载分散在各个分区之上。
数据分片的方式一般有两种。
水平分片:在不同的数据库节点中存储同一表的不同行。
垂直分片:在不同的数据库节点中存储表不同的表列。
如下图所示,水平和垂直这两个概念来自原关系型数据库表模式的可视化直观视图。
分片理念其实来源于经济学的边际收益理论:如果投资持续增加,但收益的增幅开始下降时,被称为边际 ...