很多人有很多的理由把工作和生活混在一起。其实大学的时候,这二者就是相互影响的,比如说今天累了,就少看点书,明天可以再多看点。
但是组织的形态决定了这是个一起玩的游戏。要一起玩,就一定要有规则。这个规则肯定没法照顾所有人,只能照顾大多数人。就好比淘宝有个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 为例,和你探讨如何在分布式数据库中实现分片。
数据分片概论
分片是将大数据表分解为较小的表(称为分片)的过程,这些分片分布在多个数据库集群节点上。分片本质上可以被看作传统数据库中的分区表,是一种水平扩展手段。每个分片上包含原有总数据集的一个子集,从而可以将总负载分散在各个分区之上。
数据分片的方式一般有两种。
水平分片:在不同的数据库节点中存储同一表的不同行。
垂直分片:在不同的数据库节点中存储表不同的表列。
如下图所示,水平和垂直这两个概念来自原关系型数据库表模式的可视化直观视图。
分片理念其实来源于经济学的边际收益理论:如果投资持续增加,但收益的增幅开始下降时,被称为边际 ...
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。
最直观的区别就是GET把参数包含在URL中,POST通过request
body传递参数。
你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。
当你在面试中被问到这个问题,你的内心充满了自信和喜悦。
你可能会给出以下“标准答案”
GET在浏览器回退时是无害的,而POST会再次提交请求。
GET产生的URL地址可以被Bookmark,而POST不可以。
GET请求会被浏览器主动cache,而POST不会,除非手动设置。
GET请求只能进行url编码,而POST支持多种编码方式。
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
GET请求在URL中传送的参数是有长度限制的,而POST么有。
对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
GET参数通过URL传递,POST放在Request bo ...
TCP 和 UDP
是今天应用最广泛的传输层协议,拥有最核心的垄断地位。今天互联网的整个传输层,几乎都是基于这两个协议打造的。无论是应用开发、框架设计选型、做底层和优化,还是定位线上问题,只要碰到网络,就逃不开
TCP 协议相关的知识。在面试中 TCP 一直是一个高频考察内容,外加 TCP
关联的知识比较多,因此面试题五花八门。
TCP 协议
TCP(Transport Control Protocol)是一个传输层协议,提供 Host-To-Host
数据的可靠传输,支持全双工,是一个连接导向的协议。
这里面牵涉很多概念,比如主机到主机、连接、会话、双工/单工及可靠性等,接下来我会为你逐一解释。
主机到主机(Host-To-Host)
TCP 提供的是 Host-To-Host 传输,一台主机通过 TCP
发送数据给另一台主机。这里的主机(Host)是一个抽象的概念,可以是手机、平板、手表等。收发数据的设备都是主机,所以双方是平等的。
TCP
协议往上是应用到应用(Application-To-Application)的协议。什么是应用到应用的协议呢?比如你用微信发信息给张三,你的 ...
从 DataReportal 2021 年 1 月的统计数据来看,全球 78 亿人口中,有 52
亿手机用户,46 亿互联网用户。
能够接入网络的设备越来越多,体量越来越大,不知道你有没有好奇过,这样一个庞大的世界是如何被构造出来的?思科(Cisco,世界
500 强通信设备提供商)在一篇报告中曾指出,2016 年年底全球 IP 流量超过 1
个 Zettabyte,也就是 1021 个字节,相当于一万亿
GB。那么如此庞大的流量体系,又需要何种结构去承接?
接下来我们会学习网络协议,比如 TCP/IP 协议、HTTP
协议,还会学习算法,比如时间窗口算法、校验和算法。这些协议和算法,只是整个互联网的一角,而整个互联网的全貌,我将借这次机会带你做一次漫游。
网络的组成
我们习惯称今天的时代为云时代,整个世界可以看作一张巨大的、立体的网。在这个时代里产生的各种服务,就好像水和电一样,打开即用。透过这张巨大的网去观察,里面还会有一个个小型的网络。你可以想象,用无数个节点构成一个个小型网络,再用小型网络组成中型网络,再组成大型网络,以此类推,最后组成完整的一个如星河般的世界。
公司内网
如果 ...
在讲解之前,我简短地与身边同僚、朋友交流了内容的大纲。当时,大家都表示出了浓厚的兴趣,并且不约而同地问了我这样一个问题:啥是分布式数据库?更有“爱好学习”的朋友希望借此展现出“勤学好问”的品德,进而补充道:“这是哪个大厂出的产品?”
好吧,我的朋友,你们真的戳中了我的笑点。但笑一笑后,我不禁陷入了思考:为什么分布式数据库在大众,甚至专业领域内认知如此之低呢?
原因我大概可以总结为两点:数据库产品特点与商业氛围。
首先,数据库产品的特点是抽象度高。用户一般仅仅从使用层面接触数据库,知道数据库能实现哪些功能,而不关心或者很难关心其内部原理。而一些类型的分布式数据库的卖点正是这种抽象能力,从而使用户觉得应用这种分布式化的数据库与传统单机数据库没有明显的差别,甚至更加简单。
其次,数据库的商业氛围一直很浓厚。数据库产品高度抽象且位置关键,这就天然成为资本追逐的领地。而商业化产品和服务的卖点就是其包含支撑服务,而且许多商业数据库最赚钱的部分就是提供该服务。因此这些产品有意无意地对终端用户掩盖了数据库的技术细节,而用户有了这层商业保障,也很难有动力去主动了解内部原理。
这就造成即使你工作中接触了分 ...
