Browsed by
标签: SDN

技术总监7年经验——论程序员的职业发展路线

技术总监7年经验——论程序员的职业发展路线

閱讀本文約花費: 10 (分鐘)作为程序员,在开发岗位上做了几年,特别是到了30岁,这个而立之年,我们会来到一个重要的人生岔路口。就是管理和技术两个选择,一边专业路线,一边是管理路线。 在互联网的头部企业,对管理和技术是平等对待的,所以晋升会存在管理和技两个通道的 既然有了选择,就会有人纠结,不知道是选择专业路线,还是选择技术团队的管理路线。 这个选择是程序员人生中第一个大的选择,也是第一个障碍,倒不是说这个障碍是到底要不要选择管理,而更多的是对做管理的迟疑,怀疑到底能不能做好管理,做了管理之后,技术是不是就荒废了。 这种状态犹豫不决、摇摆不定的状态保持时间长了,最终会导致技术和管理都没做好,这是得不偿失的。 为了解决这个问题,有必要分析程序员职业发展的路线到底有几条,分别需要具备怎样的能力,从而做到”手中有粮,心中不慌“ 01技术 技术类上,是有两个方向:架构师和技术专家 架构师他的侧重点是在“广”上,他主要负责技术的整体和架构,在业务上,需要有很深的理解,有丰富的经验,甚至能做到“走的桥比你吃的盐还多”。在技术上,能够广泛涉略,掌握的技术知识越多,内力就越加深厚。 我觉得架构师还需要三点必备能力,其一需要有极强的执行力,能够快速的给出合理的方案,推动技术落地。其二需要有极强的判断力,能够准确的找到复杂系统的疑难问题所在,就像武林高手,一眼就看出对方的破绽。最后还需要有极强的创新…

Read More Read More

物联开发相关名词解释

物联开发相关名词解释

閱讀本文約花費: 5 (分鐘)物联网 物联网是新一代信息技术的重要组成部分,IT行业又叫:泛互联,意指物物相连,万物万联。其英文名称是“The Internet of things”。由此,“物联网就是物物相连的互联网”。这有两层意思:第一,物联网的核心和基础仍然是互联网,是在互联网基础上的延伸和扩展的网络;第二,其用户端延伸和扩展到了任何物品与物品之间,进行信息交换和通信。因此,物联网的定义是通过射频识别(RFID)、红外感应器、全球定位系统、激光扫描器等信息传感设备,按约定的协议,把任何物品与互联网相连接,进行信息交换和通信,以实现对物品的智能化识别、定位、跟踪、监控和管理的一种网络。 物联卡 物联卡,又叫物联网卡,物联网卡是由移动、电信、联通运营商提供的2/3/4G卡,外观与普通SIM卡基本一样,采用专用号段,满足智能硬件和物联网行业对设备联网的需求。 物联卡功能主要有:1、基础通信能力:GPRS通信能力和短信通信能力,短信可提供不同优先级服务(重发频次、储存时间),充分满足不同集团客户需求。2、终端状态查询:向客户提供开关机信息、终端位置信息、终端GPRS上线、离线、IP、APN等信息查询。3、账务信息查询:向客户提供账户信息查询,提供账户欠费、流量超标等事件的提醒功能。4、业务统计分析:向用户提供多维度的业务报表统计及分析等。5、灵活计费功能:根据客户需求提供流量池、生命…

Read More Read More

通俗易懂的解释 SDN/NFV

通俗易懂的解释 SDN/NFV

閱讀本文約花費: 9 (分鐘) 5G时代到来,让基于软件定义网络(SDN)和网络功能虚拟化(NFV)的新型网络架构在通讯领域的发展得到了广泛的共识。 为啥都在提NFV? NFV is an initiative to transfer the “Network Services” sector through virtualizing the network services by replacing the dedicated hardware with Virtual Machines. NFV ( Network Function Virtualization,也即网络虚拟化)的概念是随着云计算和SDN(Software Defined Network)的出现而提出的。核心思想是将网络硬件设备通过虚拟化技术,集成到通用的x86架构的服务器或者其他硬件平台上。然后再通用标准的硬件平台上,执行路由器、交换机、负载均衡、防火墙、入侵防御等功能。 简单来说,就是将分散的网络硬件产品集成到一个大盒子里面。然后每种产品相当于一个插件来使用。这样,对于服务提供商来说,只需要对设备进行一次性的投入,再通过软件赋予每一部分硬件单独的网元的功能,就可以快速的实现整个网络的搭建。 重要的是,可以省去硬件的升级扩容所带来的巨大的时间的浪费和利润的占用。 技术的发展演进不可能是一蹴而就,却可能伴随着无…

Read More Read More

如何在Kubernetes中管理有状态应用

如何在Kubernetes中管理有状态应用

閱讀本文約花費: 7 (分鐘)在Kubernetes中,StatefulSet被用来管理有状态应用的API对象。StatefulSets在Kubernetes 1.9版本才稳定。StatefulSet管理Pod部署和扩容,并为这些Pod提供顺序和唯一性的保证。与Deployment相似的地方是,StatefulSet基于spec规格管理Pod;与Deployment不同的地方是,StatefulSet需要维护每一个Pod的唯一身份标识。这些Pod基于同样的spec创建,但互相之间不能替换,每一个Pod都保留自己的持久化标识。 ———- 1、使用StatefulSet的场景 对于下面的应用场景,StatefulSets是有价值的: 稳定、唯一的网络标识 稳定、持久的存储 按照顺序、优雅的部署和扩容 按照顺序、优雅的删除和终止 按照顺序、自动滚动更新 上述的稳定是持久的同义词,如果应用不需要稳定的标识或者顺序的部署、删除、扩容,则应该使用无状态的副本集。Deployment或者ReplicaSet的控制器更加适合无状态业务场景。 2、StatefulSet的限制 在Kubernetes 1.9版本之前是beta版本,在Kubernetes 1.5版本之前是不提供的。 Pod存储由PersistentVolume(storage类或者管理员预先创建)提…

Read More Read More

使用Istio治理微服务入门

使用Istio治理微服务入门

閱讀本文約花費: 20 (分鐘)近两年微服务架构流行,主流互联网厂商内部都已经微服务化,初创企业虽然技术积淀不行,但也通过各种开源工具拥抱微服务。再加上容器技术赋能,Kubernetes又添了一把火,微服务架构已然成为当前软件架构设计的首选。 但微服务化易弄,服务治理难搞! 一、微服务的“痛点” 微服务化没有统一标准,多数是进行业务领域垂直切分,业务按一定的粒度划分职责,并形成清晰、职责单一的服务接口,这样每一块规划为一个微服务。微服务之间的通信方案相对成熟,开源领域选择较多的有RPC或RESTful API方案,比如:gRPC、Apache Thrift等。这些方案多偏重于数据如何打包、传输与解包,对服务治理的内容涉及甚少。 微服务治理是头疼的事,也是微服务架构中的痛点。治理这个词有多元含义,很难下达一个精确定义,这里可以像小学二年级学生那样列出治理的诸多近义词:管理、控制、规则、掌控、监督、支配、规定、统治等。对于微服务而言,治理体现在以下诸多方面: 服务注册与发现 身份验证与授权 服务的伸缩控制 反向代理与负载均衡 路由控制 流量切换 日志管理 性能度量、监控与调优 分布式跟踪 过载保护 服务降级 服务部署与版本升级策略支持 错误处理 …… 从微服务治理角度来说,微服务其实是一个“大系统”,要想将这个大系统全部落地,绝非易事,尤其是之前尚没有一种特别优雅的技术方案。多数方案(…

Read More Read More

深入解读Service Mesh背后的技术细节

深入解读Service Mesh背后的技术细节

閱讀本文約花費: 14 (分鐘)一、Service Mesh是Kubernetes支撑微服务能力拼图的最后一块 在上一篇文章为什么 kubernetes 天然适合微服务中我们提到,Kubernetes是一个奇葩所在,他的组件复杂,概念复杂,在没有实施微服务之前,你可能会觉得为什么Kubernetes要设计的这么复杂,但是一旦你要实施微服务,你会发现Kubernetes中的所有概念,都是有用的。 在我们微服务设计的是个要点中,我们会发现Kubernetes都能够有相应的组件和概念,提供相应的支持。 其中最后的一块拼图就是服务发现,与熔断限流降级。 众所周知,Kubernetes的服务发现是通过Service来实现的,服务之间的转发是通过kube-proxy下发iptables规则来实现的,这个只能实现最基本的服务发现和转发能力,不能满足高并发应用下的高级的服务特性,比较SpringCloud和Dubbo有一定的差距,于是Service Mesh诞生了,他期望讲熔断,限流,降级等特性,从应用层,下沉到基础设施层去实现,从而使得Kubernetes和容器全面接管微服务。 二、以Istio为例讲述Service Mesh中的技术关键点 就如SDN一样,Service Mesh将服务请求的转发分为控制面和数据面,因而分析他,也是从数据面先分析转发的能力,然后再分析控制面如何下发命令。今天这篇…

Read More Read More

Cgroup和Namespace在测试中的使用(下)

Cgroup和Namespace在测试中的使用(下)

閱讀本文約花費: 7 (分鐘)Namespace介绍 使用Namespace又叫做命名空间,可以让每个进程组具有独立的PID、IPC和网络空间等,也就是说这些系统资源不再是全局性的,而是属于特定的Namespace,每个Namespace里面的资源对其他Namespace都是透明的,从而达到资源的隔离效果。 目前namespace的种类如下分类 系统调用参数Mount namespaces CLONE_NEWNSUTS namespaces CLONE_NEWUTSIPC namespaces CLONE_NEWIPCPID namespaces CLONE_NEWPIDNetwork namespaces CLONE_NEWNETUser namespaces CLONE_NEWUSER 可以查看自己的系统支持哪些namespace# ls -lai /proc/1/nstotal 0418834 dr-x–x–x 2 root root 0 Jul 30 22:58 .1301 dr-xr-xr-x 9 root root 0 Jul 25 22:46 ..41885…

Read More Read More

左耳朵耗子:程序员如何用技术变现?

左耳朵耗子:程序员如何用技术变现?

閱讀本文約花費: 20 (分鐘)作者|陈皓 编辑|小智 从事编程这个事可以做到,完全靠自己的手艺、不依赖任何人或公司去生活的。但道理我都懂,怎么做才是关键。本文摘自陈皓(左耳朵耗子)在极客时间 App 开设的付费专栏“左耳听风”。 本音频时长 1′52′′,14′完整音频请下载【极客时间】App 收听。 写在前面 程序员用自己的技术变现,其实是一件天经地义的事儿。写程序是一门“手艺活儿”,那么作为手艺人,程序员当然可以做到靠自己的手艺和技能养活自己。 然而,现在很多手艺人程序员却说自己是“码农”,编码的农民工,在工作上被各种使唤,各种加班,累得像个牲口。在职业发展上各种迷茫和彷徨,完全看不到未来的希望,更别说可以成为一个手艺人用自己的技能变现了。 从大学时代帮人打字挣点零花钱,到逐渐通过自己的技能帮助别人,由此获得相对丰厚的收入,我在很早就意识到,从事编程这个事可以做到,完全靠自己的手艺、不依赖任何人或公司去生活的。 这对于程序员来说,本就应该是件天经地义的事,只是好像并不是所有的程序员都能意识到自己的价值。这里,我想结合我的一些经历来跟你聊聊。当然,我的经历有限,也不一定全对,只希望能给你一个参考。 学生时代 我是 1994 年上的大学,计算机科学软件专业。在 1996 年上大二的时候,因为五笔学得好打字很快,我应征到教务处帮忙,把一些文档录入到电脑里。打了三个月的字,学校按照每…

Read More Read More

浏览器UserAgent的趣味史

浏览器UserAgent的趣味史

閱讀本文約花費: 14 (分鐘)最近在看《给产品经理讲技术》,其中有一段简要的提到了浏览器UserAgent的含义和作用。在最后作者暗示UserAgent的变迁是一段充满趣味性的历史,为了满足我的好(吃)奇(瓜)心理,我去深扒了一下。 结果不扒不知道,一扒吓一跳。今天就给大家分享一下这个陈年老瓜。 首先,我们先简要了解一下各大浏览器的出生日期: 大家先对这些浏览器的出生时间有一个概念,然后大家把板凳和西瓜拿好,让我们开始吧~ 一、第一个浏览器:Nexus 1989年,超级大神伯纳斯·李教授发明了万维网(World Wide Web,简称3W),然而大神并不满足于此,为了大家能更方便地访问万维网,大神大手一挥,推出了世界上第一款浏览器。 李大神寻思给它起个什么名字呢? 此时,李大神可能是懒虫上身,想也不想,要不就叫World Wide Web,跟大儿子(万维网)一个名字吧! 后来大神感觉交流起来不是很方便,经常不知道World Wide Web指的是谁,而且这么偷懒的行为有点对不起小儿子,于是把小儿子的名字改成了Nexus。 由于是浏览器的祖师爷,没有竞争对手,Nexus马上就流行了起来。 由于是最早的浏览器,Nexus只支持文字展示,还不支持图片展示,而这恰好给了竞争对手可乘之机,同时也是UserAgent的由来。 二、第一个带图的浏览器:Mosaic 1993年,伊利诺伊的NCS…

Read More Read More

我在南大的七年

我在南大的七年

閱讀本文約花費: 25 (分鐘)—— 跨进南大校门的第一天,我知道,我自由了。 父亲是个对新事物有强烈兴趣的人,村里第一台电视机是他自己组装的,当时全村人都跑过去看,电视机只能收到一个台,CCTV。座机电话是第一个装的。大哥大刚出现的时候,他也是第一个买来用的,那个时候的移动电话真是贵得离谱。 父亲告诉我的第二件最重要的事情是:遇到任何问题,找书去就行。他在自己的专业中完全是自学的。在不属于自己的专业中(后来买了电脑之后需要学习如何架设公司网站,如何网上营销,如何进行电子财务管理,如何使用各种作图软件制图等等)也全都是靠买书自学。 为什么说到这两件事情,因为这是对我一生影响最重大的两个习惯。第一个习惯给了我学习新东西的强烈动机,有了热忱和兴趣,做事情就不觉得累,就自得其乐。第二个习惯则给了我学习任何新东西的方法——不会么?查书去。(当然,学习一门专业并不完全通过看书就行,但这毫无疑问是至关重要的一个途径。) 高三的时候,父亲买了电脑,我立时对这个神奇的事物产生了强烈的兴趣,每期的《电脑爱好者》和《电脑报》都会买来细细看,有时看到各种小工具、技巧还会摘抄下来,回去在自己家里的机器上捣鼓。那个时候我并不知道这样单纯的兴趣会把我引向一条专业的程序员道路。 高三时间变得越来越紧,分配给兴趣的时间越来越少,但兴趣的火花一直都没有熄灭。 跨进南大校门的第一天,我知道,我自由了。 这个自由并不是…

Read More Read More

架构设计-谈谈架构

架构设计-谈谈架构

閱讀本文約花費: 32 (分鐘) 本文首先介绍了架构的概念定义,并介绍如何针对当前需求,选择合适的应用架构,希望对您的学习有所帮助。 1、什么是架构和架构本质 在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。 此君说的架构和彼君理解的架构未必是一回事。因此我们在讨论架构之前,我们先讨论架构的概念定义,概念是人认识这个世界的基础,并用来沟通的手段,如果对架构概念理解不一样,那沟通起来自然不顺畅。 Linux有架构,MySQL有架构,JVM也有架构,使用Java开发、MySQL存储、跑在Linux上的业务系统也有架构,应该关注哪一个?想要清楚以上问题需要梳理几个有关系又相似的概念:系统与子系统、模块与组建、框架与架构: 一、系统与子系统 系统:泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能独立完成的工作能力的群体。 子系统:也是由一群关联的个体组成的系统,多半是在更大的系统中的一部分。 二、模块与组件 都是系统的组成部分,从不同角度拆分系统而已。模块是逻辑单元,组件是物理单元。 模块就是从逻辑上将系统分解, 即分而治之, 将复杂问题简单化。模块的粒度可大可小, 可以是系统,几个子系统、某个服务,函数, 类,方法、 功能块等等。 组件可以包括应用服务、数据库、网络、物理机、还可以包括MQ、容器、Nginx等技术组件。 三、框架与架构 框架是组件实现的规…

Read More Read More

[BetterExplained]为什么你应该(从现在开始就)写博客

[BetterExplained]为什么你应该(从现在开始就)写博客

閱讀本文約花費: 29 (分鐘)(一)为什么你应该(从现在开始就)写博客 用一句话来说就是,写一个博客有很多好处,却没有任何明显的坏处。(阿灵顿的情况属于例外,而非常态,就像不能拿抽烟活到一百岁的英国老太太的个例来反驳抽烟对健康的极大损伤一样) 让我说得更明确一点:用博客的形式来记录下你有价值的思考,会带来很多好处,却没有任何明显的坏处。Note:碎碎念不算思考、心情琐记不算思考、唠唠叨叨也不算思考、没话找话也不算思考,请以此类推。 下面是我个人认为写一个长期的价值博客的最大的几点好处: 1) 能够交到很多志同道合的朋友。我自己既写博客,也读别人的博客,在这个时代,对于生活中的绝大多数人来说,拓宽朋友圈子的途径几乎只有一个,通过网络,而如何在网络中寻找到气味相投的朋友,如何判断别人和自己是否有共同语言?显然,通过天天在SNS上碎碎念的那些日记是难以做到的。我佩服的一些朋友几乎全都是长期用博客记录想法的人,因此,和他们即便不打照面,也是心照不宣。即便素未谋面也能坐下来就聊得热火朝天。 为什么博客在结交志同道合的朋友方面的潜力要远胜于原始的交谈方式?很简单,第一,博客无地域限制,整个互联网上从A到B只有一个点击的距离,而传统的建立朋友圈子的方法则受到地域限制。第二,也是更重要的一点,即如果按照以前结交朋友的方式,需要互相聊天,交流观点,然后才逐渐熟悉起来,这需要一个较长的过程…

Read More Read More

程序员必读书单 1.0

程序员必读书单 1.0

閱讀本文約花費: 80 (分鐘)本文把程序员所需掌握的关键知识总结为三大类19个关键概念,然后给出了掌握每个关键概念所需的入门书籍,必读书籍,以及延伸阅读。旨在成为最好最全面的程序员必读书单。 前言 Reading makes a full man; conference a ready man; and writing an exact man. Francis Bacon 优秀的程序员应该具备两方面能力: 良好的 程序设计 能力: 掌握常用的数据结构和算法(例如链表,栈,堆,队列,排序和散列); 理解计算机科学的核心概念(例如计算机系统结构、操作系统、编译原理和计算机网络); 熟悉至少两门以上编程语言(例如 C++,Java,C#,和 Python); 专业的 软件开发 素养: 具备良好的编程实践,能够编写可测试(Testable),可扩展(Extensible),可维护(Maintainable)的代码; 把握客户需求,按时交付客户所需要的软件产品; 理解现代软件开发过程中的核心概念(例如面向对象程序设计,测试驱动开发,持续集成,和持续交付等等)。 和其它能力一样, 程序设计 能力和 软件开发 素养源自项目经验和书本知识。项目经验因人而异(来自不同领域的程序员,项目差异会很大);但书本知识是相通的…

Read More Read More

数学之美番外篇:平凡而又神奇的贝叶斯方法

数学之美番外篇:平凡而又神奇的贝叶斯方法

閱讀本文約花費: 63 (分鐘) 概率论只不过是把常识用数学公式表达了出来。 ——拉普拉斯 目录 0. 前言1. 历史    1.1 一个例子:自然语言的二义性    1.2 贝叶斯公式2. 拼写纠正3. 模型比较与贝叶斯奥卡姆剃刀    3.1 再访拼写纠正    3.2 模型比较理论(Model Comparasion)与贝叶斯奥卡姆剃刀(Bayesian Occam’s Razor)    3.3 最小描述长度原则    3.4 最优贝叶斯推理4. 无处不在的贝叶斯    4.1 中文分词    4.2 统计机器翻译    4.3 贝叶斯图像识别,Analysis by Synthesis       4.4 EM 算法与基于模型的聚类    4.5 最大似然与最小二乘5. 朴素贝叶斯方法(又名“愚蠢者的贝叶斯(idiot’s bayes)”)    5.1 垃圾邮件过滤器 &nbs…

Read More Read More

怎样花两年时间去面试一个人

怎样花两年时间去面试一个人

閱讀本文約花費: 41 (分鐘)Joel Spolsky曾经感叹:招聘难,难于上青天(此处笔者稍加演绎:))。他有两个辛辣但不乏洞察力的断言:真正的牛人也许一辈子就投大概4次简历,这些家伙一毕业就被好公司抢走了,并且他们的雇主会给他们不赖的待遇,所以他们也不想挪窝。(刚刚去世的Dennis Ritchie就是这样一个人)而“人才”市场上能找到的大多都不是什么人才。招到这帮人轻则费钱重则把你公司搞挂。 (当我把这篇文章给邹欣老师review的时候,他说了另外两点:1. 最好的人也许不投简历,就决定去哪里了。所以要在他们做决定前找到他们。2. 比较差的会投很多次简历,找不到工作的时间越多,投的简历越多,给整个pool 带来很多噪音,top10%的简历也许根本不算全部人的top10%。) 诚然,也许没有哪个行业像IT行业这样,无形资产占据公司的绝大多数资产。拒坊间传言比尔·盖茨就曾经说过类似这样的话:只要允许我带走100个人我可以再造一个微软。这话没搜到原版出处,但是从一个侧面反映了IT公司当中智力资产所占的比例之重。 所以一个自然的推论就是,招聘也许是一个公司决策当中最最重要的一个环节。Joel Spolsky把他在这方面的观察,体会和洞见集结成了一本小册子《Smart and Gets Things Done》,开篇就挑战“产品是公司成败的关键”这个传统观念,他认为创造最适合工程师生…

Read More Read More

炸裂!40+ 图万字长文拿下 HTTP

炸裂!40+ 图万字长文拿下 HTTP

閱讀本文約花費: 38 (分鐘)>本文将从以下几个方面进行分享。其中包括HTTP发展史,HTTP缓存代理机制,常用的web攻击,HTTP和HTTPS的流量识别,网络协议学习的工具推荐以及高频HTTP与HTTPS的高频面试题题解等,开工。 @ 1989年,蒂姆·伯纳斯 – 李(Tim Berners-Lee)在论文中提出可以在互联网上构建超链接文档,并提出了三点. URI:统一资源标识符。互联网的唯一ID HTML:超文本文档 HTTP:传输超文本的文本传输协议 1 HTTP应用在哪儿 学习一门知识,采用五分钟时间看看这个知识是干啥的可能会更加有目的性。HTTP可谓无处不在,这里例举出几个。 2 HTTP是什么 HTTP(hypertext transport protocol)翻译过来为”超文本传输协议”,文本可以理解为简单的字符文字组合,也可以理解为更为复杂的音频或者图像等。那么将这个词语拆分为三个部分。 “超文本”和”文本”相比多了一个字”超”,这样看来比文本丰富,因为它可以将多种文本/图像等进行混合,更重要的是可以从一个文本跳转到另一个文本(文本连接)。 “传输”,传输的过程中需要沟通,沟通即可能一对一沟通也可能一对多沟通(进行内容协商),…

Read More Read More

Scroll Up