华为发布面向2025十大趋势
转载 华为今日(2019-08-08)发布全球产业展望GIV@2025,提出智能世界正在加速而来,触手可及,并预测:到2025年,智能技术将渗透到每个人、每个家庭、每个组织,全球58%的人口将能享有5G网络,14%的家庭拥有“机器人管家”,97%的大企业采用AI。
戳视频,了解2025十大趋势
全球产业展望报告于2018年首次推出,初衷是打开智能世界的产业版图,为各行各业创新增长提供路径参考。
2019年,华为基于对交通、零售、金融、制造、航空等17个重点行业的案例研究,并结合定量数据预测,进一步提出了面向2025的十大趋势,它们分别是:
趋势一:是机器,更是家人随着材料科学、感知人工智能以及5G、云等网络技术的不断进步,将出现护理机器人、仿生机器人、社交机器人、管家机器人等形态丰富的机器人,涌现在家政、教育、健康服务业,带给人类新的生活方式。
GIV预测:2025年,全球14%的家庭将拥有自己的机器人管家。
趋势二:超级视野以5G、AR/VR、机器学习等新技术使能的超级视野,将帮助我们突破空间、表象、时间的局限,见所未见,赋予人类新的能力。
GIV预测:2025年,采用 ...
如何判断自己有没有管理的潜力?
原文地址:如何判断自己有没有管理的潜力? 转载
多数人都面临过做管理还是做业务的选择。很多人都想在管理上有所尝试,有的人进入了管理通道,但发展并不顺利。企业为了扩张发展而绞尽脑汁、不惜代价地培养管理者,可他们面临的最大困惑是,芸芸众生谁更有管理的潜力呢?
本人从事人才评价工作三十年,可以说阅人无数,其中不乏优秀杰出的管理者,也有表现一般的管理者,还有一些不合格的管理者。我一直在观察和总结,如何判断一个人是否具有管理的潜力?
一、如何判断一个人具有管理的潜力?1、看一个人是否具有抓住工作重点的能力,是否有明确的工作思路抓重点是指能快速地将纷繁复杂的各种表面现象归纳总结为结构清晰的事物特征,抓住事物的根本、问题的关键,并确定工作重心的能力。管理工作涉及到的环境和对象很复杂,范围越广规模越大,复杂度就成几何级数上升。
所以“抓重点”是管理者必须具有的第一项能力。
1)“抓重点”为什么重要?抓重点能力弱的管理人员,在工作上表现上往往是没有主见和工作思路,左右摇摆,拿不定主意,力气使不到点上,他可能很努力、很辛苦,团队成员跟着他不停地东奔西跑,但基本上是瞎忙活,因为没有结果和成绩。
古人说 ...
我的京东管理生涯随想
原文地址:我的京东管理生涯随想 转载
一、写在前面在京东的任职生涯马上就要结束了,回想起来,从16年校招加入京东,到今年年初离职,在这三年左右的时间里,京东在飞速的发展和变化,我也从一个刚入职场的初级后台开发成长为现在带着十来个人团队的小组长。这几年遇到了很多事,认识了很多人,也学会了很多道理,无论是技术水平还是管理能力都得到了很大的锻炼和提升。
近来无事,正好总结一下这几年工作,特别是团队管理方面的几点感悟和体会,一来方便日后翻阅,二来要是能够给大家带来一些有意义的参考和借鉴,那也是极好的。
二、回顾这几年在京东飞速发展和变化的大环境下,总是充满了机遇和挑战。一个想法从提出到落地,再到发展为一个重点项目,整个过程都是极快的。当然了,前提一定是这个想法要有价值并得到领导的认可和支持。
16年校招加入京东时,我有幸加入了一个业务覆盖范围迅速扩大、领导高度重视、组员都非常nice的高速成长、极具潜力的项目组。更加幸运的是,我加入时整个项目在经历了几次电商大促的考验后已经日渐趋于稳定,正处于业务覆盖范围迅速扩大、系统承载流量高速增长的关键阶段。在这关键阶段,最为重要的事情除了保证业务需 ...
无我编程的10条诫律
原文地址:无我编程的10条诫律 转载
无我编程的10条诫律最早出现在 1971 年 Gerald Weinberg 出版的《程序开发心理学》中。后由Stack Overflow网站的联合创始人 Jeff Atwood 在其2006年5月9日的博文《无我编程的10条诫律》中再次列出。
The Ten Commandments of Egoless Programming
https://blog.codinghorror.com/the-ten-commandments-of-egoless-programming/
Jeff Atwood 在其2006年5月12日的博文《无我编程:你的工作不代表你》中,引用 Johanna Rothman的描述,解释了无我编程的由来。
Egoless Programming: You Are Not Your Job
https://blog.codinghorror.com/egoless-programming-you-are-not-your-job/
无我编程发生在开发阶段,表现为技术团队经常通过同级评审的方式来发现软件中的缺陷 ...
电子邮件,应该是这样写滴(n个好习惯让我们避免互相伤害)
原文地址:电子邮件,应该是这样写滴(n个好习惯让我们避免互相伤害) 转载
在当年入职百度的时候,被俞军培训过电子邮件文化,其中所谈的理念和习惯一直沿用至今。有几次看到别人电子邮件中存在令人抓狂的细节和可以做的更好的部分,都会给些建议甚至还做过专门的小交流。为了避免重复再重复的说同样的话,干脆把一些重点写下来分享下吧。
1、要发给相关的人,不要发给不相关的人这句看上去就是废话,对吗?但是很多邮件却都做不好这点,而这也许是电子邮件文化中最重要的一条。
要发给相关的人,首先是发对人,以及是让与此有关的人尽量知悉,就像建议让小白兔吃胡萝卜的事应该发给小白兔,抄送兔子妈妈,前者是直接人物,后者是相关人物。一般我们较少会发错直接人物,但经常会忘记也发给相关人物,这样容易造成信息传递的缺失,要知道兔子妈妈肯定会关心这件事,而且可能需要她来帮忙做胡萝卜刺身,所以她应该知晓或被通知到。
不要发给不相关的人,目的是避免其他人收到不必要的干扰。很多人都会抱怨电子邮件太多,而其中肯定有一部分是不需要收的。你们家小白兔要不要吃胡萝卜,你顶多也发给吃胡萝卜的小山羊,干嘛告诉小老虎呢?除了有一些流程要求的,或 ...
编程一生《三言》
摘抄自微信公众号 编程一生 转载
问别人之前最好先自己百度,google一下,以免问出太低级的问题。
要有多自律,就有多自由,保持严谨,不失弹性。
高效率,慢生活。
格局决定结局,态度决定高度。
别说你爬过的山,只有早高峰。
只有重塑自己的习惯,才能过上自己想要的人生。
考虑可维护性比考虑性能更重要。
请勿久坐,多喝水,尤其是遇到很久都解决不了的问题的时候,多走动走动。
普通程序员+google=超级程序员。实在不行,百度也可以,学会利用搜索引擎来辅助自己解决问题。
一个好的程序员是那种过单行线马路都要往两边看的人。
编程时要保持这种心态:就好像将来要维护你这些代码的人是一位残暴的精神病患者,而且他知道你住在哪。
任何你写的代码,超过6个月不去看它,当你再看时,都像是别人写的。 –Eagleson’s law
从小事做起,然后再扩展。
熬夜低效率写代码,不如好好睡觉。
让自己变得更好,是解决一切问题的关键。
发版后出了问题第一时间回滚,千万不要想不可能是自己造成的。
每周五抽出时间问一下上下游业务方,目前有什么问题吗?
上线前问自己:你有多大把握不出问题?
所有事情所 ...
谈谈“五级工程师和职业发展”的思考
原文地址:谈谈“五级工程师和职业发展”的思考 转载
再过几个小时,春节长假就结束了。我想,不管过去的一年过的怎样,大部分工程师们对开年的的工作和生活都应该是有所憧憬和计划的,我也不例外。只不过我选择了把前年在吴军老师《硅谷来信》上看到的《五级工程师和职业发展》重温了一下(版权原因,我这里无法提供原文的链接,但这一定阻挡不了聪明、求知若渴的你)。如果你看过原文,我依然觉得你不妨看看这里的思考,因为我所思考的可能更贴近实际的你。
什么是“五级工程师”?著名前苏联物理学家朗道曾经给出过一个五级物理学家的划分,吴军老师在此基础上,给出了“五级工程师”的划分:
第五级:能独立解决问题,完成工程工作;
第四级:能指导和带领其他人一同完成更有影响力的工作;
第三级:能独立设计和实现产品,并且在市场上获得成功;
第二级:能设计和实现别人不能做出的产品,也就是说他的作用很难取代;
第一级:开创一个产业。
你处在哪一级?五级工程师的划分非常简洁,但是却有点抽象。我举几个大家熟悉的人物,方便大家进行定位:
云风, 第三级;
阮一峰,第三级;
范凯,第四级;
王垠,第五级;
池建强,在用友度过了第 ...
那些程序员小白还没掌握的30件事
原文地址:那些程序员小白还没掌握的30件事 转载
从事编程并不容易。每年有许多人从各国的顶级计算机科学专业毕业,这是所有人都向往的最具竞争力的职业之一。与此同时,编程也振奋人心。随着技术的进步,每天都有新的创新。对于喜欢编程,并立志从事编程的人而言,编程是其热爱且为之奋斗的事业。
本文的这个列表可以帮助新手答疑解惑,节省精力。即使目前某些内容可能暂时不需要,但是总有一天它会派上用场。
1. 从事编程无需学位,但需要有所了解。编程是少数几个不取决于学位的职业之一。但是编程是一项知识密集型职业。如果你要从事编程行业,阅读一些基本的涵盖计算机科学的基本概念等书籍是必要的。除了编写功能代码之外,为你的技术打下坚实基础,对基本概念有一个深刻理解,这使得你能够赢得技术面试有助于与同事交流。
2. 在问题解决技能上,编程十分具有创造力。大多数人都有这样一种先入为主的观念,即编程就是分析和解决问题的能力。这只说对了一部分。编程还涉及许多创造性。通常,可以使用多种方式编写给定的代码。当你设计出最简单有效的编码方式时,创造性就产生了。
3. 掌握所有编程语言是不可能的,诀窍是将一门语言学到极致。世界 ...
Spring知识点
Spring知识点Spring概述什么是Spring?Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。
使用Spring框架的好处是什么?
轻量: Spring 是轻量的,基本的版本大约2MB。
控制反转: Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。
面向切面的编程(AOP): Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。
容器: Spring 包含并管理应用中对象的生命周期和配置。
MVC框架: Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。
事务管理: Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。
异常处理: Spring 提供方便的API把具体技术相关的异常(比如由JDBC,Hibernate or JDO抛出的)转化为一致的unchecked 异 ...
深入理解Spring事务原理
深入理解Spring事务原理
引用自深入理解Spring事务原理
事务的基本原理Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行:
获取连接 Connection con = DriverManager.getConnection()
开启事务con.setAutoCommit(true/false);
执行CRUD
提交事务/回滚事务 con.commit() / con.rollback();
关闭连接 conn.close();
使用Spring的事务管理功能后,我们可以不再写步骤 2 和 4 的代码,而是由Spirng 自动完成。那么Spring是如何在我们书写的 CRUD 之前和之后开启事务和关闭事务的呢?解决这个问题,也就可以从整体上理解Spring的事务管理实现原理了。下面简单地介绍下,注解方式为例子
配置文件开启注解驱动,在相关的类和方法上通过注解@Transactional标识。
spring 在启动的时 ...
快速搭建微服务-API网关
快速搭建微服务-API网关API网关是整个后端微服务体系的门户,外部应用通过网关对后台数据进行相关操作,网关中包含了定义后台服务路由规则、服务限流、设置跨域、开启饥饿加载模式等内容。本文对这些内容一一进行说明。
路由规则定义请求前缀和后台服务的service-id即可。
1234567891011121314zuul: routes: auth: path: /auth/** service-id: auth-server api-order: path: /api-order/** service-id: service-order api-goods: path: /api-goods/** service-id: service-goods api-wechat-admin: path: /api-wechat-admin/** service-id: service-wechat-admin
服务限流通过编写自定义的限流Filter实现服务限流。
RateLimit ...
快速搭建微服务-服务安全
快速搭建微服务-服务安全微服务架构下的服务安全是构建微服务系统的一个重要环节。做好服务鉴权是保障数据不泄漏、不被非法操作的关键。
Spring Cloud架构支持OAuth2 + Spring Security的方式进行服务鉴权,只需简单配置即可。同时我们也可以在网关服务里加入自定义的鉴权Filter实现服务鉴权。
采用OAuth2 + Spring Security的方式进行服务鉴权时,如果同时使用了Hystrix断路器,就会出现后台服务之间进行调用时access_token无法在服务间传递的问题,其根本原因是Hystix的默认隔离策略是Thread(即线程隔离),这样就会导致服务间调用时没有将access_token进行传递,导致鉴权失败。此问题的具体解决办法可以在 实用技巧:Hystrix传播ThreadLocal对象(两种方案) 中找到。
本文对OAuth2 + Spring Security和自定义鉴权Filter都进行说明。
OAuth2 + Spring Security方式采用OAuth2 + Spring Security方式需要区分鉴权服务和资源服务。
api- ...
快速搭建微服务-服务容器
快速搭建微服务-服务容器本文介绍的服务容器有别于常说的Docker,而是指单个微服务运行依赖的Web服务器容器。Spring Boot支持的Web服务器有 Tomcat、Jetty、Undertow。综合比较之后选择Undertow作为微服务的服务容器。
Undertow配置Maven依赖这里是多个微服务依赖于同一个parent的maven配置,可以直接在parent的pom.xml中加入以下依赖:
1234<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-undertow</artifactId></dependency>
如果是单个微服务独立配置maven依赖的话,则需要在pom.xml中配置如下依赖:
1234567891011121314<dependency> <groupId>org.springframework.boot< ...
快速搭建微服务-服务监控
快速搭建微服务-服务监控Spring Boot Admin为基于Spring Boot的基础数据安全端口提供了基础的可视化监控功能。还可以通过Spring Boot Admin的服务端程序对Spring Boot程序提供简单的实时管理(例如修改日志输出级别)。
Spring Cloud集成Spring Boot AdminSpring Boot Admin服务端Spring Cloud中集成Spring Boot Admin比较简单,只需要将服务端程序注册到注册中心即可。
服务端Maven依赖
1234567891011121314151617181920212223242526272829303132333435363738394041424344<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId></depend ...
快速搭建微服务-服务调用
快速搭建微服务-服务调用Spring Cloud体系中服务间的调用常见的有Feign和Ribbon两种方式,其中Feign默认集成了Ribbon。Ribbon采用注入RestTemplate实例,通过全局的RestTemplate调用其它可以被发现的服务,而Feign则使用类似于Controller的代码风格配合@FeignClient注解实现服务间接口的调用。由于注入RestTemplate的方式更符合Spring的编程风格,这里仅介绍基于Ribbon方式的服务调用。
Ribbon配置向Spring容器中注入RestTemplate实例12345@Bean@LoadBalancedpublic RestTemplate restTemplate() { return new RestTemplate();}
负载均衡策略@LoadBalanced注解用于开启客户端负载均衡,Ribbon默认的负载均衡策略是轮询选择。Ribbon提供了如下的负载均衡策略:
AvailabilityFilteringRule:过滤掉那些一直连接失败的被标记为circuit ...
快速搭建微服务-服务链路追踪
快速搭建微服务-服务链路追踪
部分内容引用自: 利用Zipkin对Spring Cloud应用进行服务追踪分析
针对服务化应用全链路追踪的问题,Google发表了Dapper论文,介绍了他们如何进行服务追踪分析。其基本思路是在服务调用的请求和相应中加入ID,标明上下游请求的关系。
对用Dapper的开源实现是Zipkin,支持多种语言包括JavaScript,Python,Java, Scala, Ruby, C#, Go等。其中Java由多种不同的库来支持。
Spring Cloud Sleuth是对Zipkin的一个封装,对于Span、Trace等信息的生成、接入HTTP Request,以及向Zipkin Server发送采集信息等全部自动完成。本文介绍如何在Spring Cloud中集成Spring Cloud Sleuth实现服务链路追踪。
Spring Cloud Sleuth的概念图如下:
服务端配置启动类加上 @EnableZipkinStreamServer 注解声明当前应用为Sleuth服务端。
使用MySQL存储链路追踪信息的配置
Maven 依赖
12 ...
快速搭建微服务-注册中心、服务发现
快速搭建微服务-注册中心、服务发现注册中心是微服务的核心组件,SpringCloud比较常见的注册中心有eureka和consul,这里简单说明下这两种注册中心服务如何实现。这里的例子是基于SpringCloud Edgeware版本。
Spring Cloud Eureka注册中心Server端
maven
1234<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>
application.yml
123456789101112131415server: port: 9101eureka: instance: hostname: localhost client: register-with-eureka: false fetch-regis ...
快速搭建微服务-消息总线
快速搭建微服务-消息总线利用Spring Cloud Bus提供的批量刷新配置的机制,可以实现在配置中心的配置信息发生变化后自动更新相关服务的配置的功能。Spring Cloud Bus消息总线通过使用轻量级的消息代理中间件(例如RabbitMQ、Kafka等)连接分布式系统的节点,这样就可以通过Spring Cloud Bus广播配置信息的变化。
这里使用RabbitMQ作为消息中间件向Spring Cloud微服务架构中加入消息总线,并实现配置自动刷新配置信息的功能。
配置中心服务端
添加Maven依赖
1234<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId></dependency>
配置信息
12345678910spring: cloud: bus: trace: enable ...
快速搭建微服务-熔断器
快速搭建微服务-熔断器熔断器的主要功能是在进行服务间调用时提供一种容错保护,当服务提供方因网络或自身原因出现调用故障或延迟时,会导致服务调用方对外服务也出现延迟,如果此时服务调用方的请求不断增加,则会出现调用方的自身服务的故障甚至蔓延导致整个系统的瘫痪。
服务调用方配置熔断
Maven依赖
1234<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId></dependency>
开启熔断器
在启动类上加入@EnableCircuitBreaker注解开启熔断器。
服务降级
通过 @HystrixCommand 注解实现服务降级。
123456789@GetMapping("")@HystrixCommand(fallbackMethod = "listWxMpAccountFa ...
快速搭建微服务-配置中心
快速搭建微服务-配置中心配置中心是用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,分为服务端和客户端两个部分。配置中心的服务端是一个独立的微服务应用,用来连接配置仓库并为客户端提供获取配置信息的接口。配置中心的客户端可以是微服务架构中的各个微服务应用或基础服务,客户端在启动的时候调用服务端接口获取并加载配置信息。Spring Cloud Config实现的配置中心默认采用Git仓库来存储配置信息。本文简单介绍如何在微服务架构中使用Spring Cloud Config作为配置中心。
配置仓库在Git代码托管平台上创建一个新的仓库/项目,并将配置文件上传至Git仓库的根目录下。
配置文件的命名格式为:[serviceId]-[profile].yml
当profile为 “default” 默认配置时,可以忽略。
配置文件的格式可以是yml,也可以是properties,推荐可读性更好的yml格式。配置文件的内容填写相应的微服务的外部配置信息,例如 api-gateway 网关服务的配置文件 api-gateway.yml 中配置了jwt的相关参数和不同客 ...