如何完成新手项目经理的角色转换呢?成为项目经理前,我做了四五年的“码农”。我一直觉得程序员很有乐趣,回想大学时候一个人敲代码时光依然觉得历历在目。大学时我就喜欢用代码尝试各种效果,折腾java生态各种技术和语言,每次从图书馆背回来借的厚厚的编程书籍,一边学一边做项目来验证。那时的我,不怎么需要跟人交流,每天对着屏幕,只要能和代码在一起,就觉得自己手握了世界,超有自信的。虽然当大牛程序员,事实上的确
图像或视频,我们能感知到色彩差异、清晰度、明暗对比等,这些画面是怎么形成并展示出来的?内部的机制与原理又是怎样的?从视频/图像的原始数据格式、视频逐行/隔行扫描、帧率、图像分辨率、色域等几方面入手,对视频基础知识做一个整体了解。1 视频、图像像素点数据格式看视频时会看到很多图像,这些图像的展现形式由一个个像素点组成的线,又由一条条线组成面,这个面铺在屏幕上展现出来的就是我们看到的图像。这些图像有黑
1 概述ChannelHandlerContext 代表 ChannelHandler 和 ChannelPipeline 之间的关联,每当有 ChannelHandler 添加到 ChannelPipeline,都会创建 ChannelHandlerContext。1.1 主要功能管理它所关联的 ChannelHandler 和在同一个 ChannelPipeline 中的其他 ChannelH
1 概述把ChannelPipeline看成拦截流经Channel的入、出站事件的ChannelHandler 的实例链,就易看出这些 ChannelHandler 之间的交互如何组成一个应用程序数据和事件处理逻辑的核心。每个新建的 Channel 都会被分配一个新的 ChannelPipeline。这项关联是永久性的;Channel 既不能附加另外一个 ChannelPipeline,也不能分离
1 Channel 接口的生命周期Channel 定义了一组和 ChannelInboundHandler API 密切相关的简单但功能强大的状态模型1.1 Channel 的状态状 态描 述ChannelUnregisteredChannel 已经被创建,但还未注册到 EventLoopChannelRegisteredChannel 已经被注册到了 EventLoopChannelActive
Kubernetes,希腊语,意舵手。有时简写为“K8s”,其中“8”代表“K”和“s”之间的 8 个字母,是一个开源系统,支持在任何地方部署、扩缩和管理容器化应用。1 Kubernetes架构1.1 k8s架构Kubernetes的这种架构为服务发现提供了一种灵活的,低耦合的机制。与大多数分布式计算平台架构一样,Kubernetes集群至少包含一个主节点和多个计算节点。主服务器负责公开应用程序接
0 多容器的APP太恶心要从Dockerfile build image或Dockerhub拉取image要创建多个container要管理这些container(启动停止删除)Docker Compose 批处理1 前言1.1 概述Compose 是一个用于定义和运行多容器 Docker 应用程序的工具可使用 YAML 配置应用程序的服务使用一个命令,可从配置中创建并启动所有服务Compose
1 启动承接上文最后的 python 服务配置。[root@icv-monitor-platform-dev flask-redis]# docker-compose up -d Creating network "flaskredis_default" with the default driver Creating flaskredis_redis_1 ... done Creating
针对打开首页接口的性能问题,前文中确定是Gateway在消耗响应时间,达到了近100毫秒。于是,我们开始定位Gateway上的响应时间消耗。第一阶段,关注应用所在的主机,了解到宿主机有四台第二阶段,查看物理机的CPU模式。尝试通过修改CPU运行模式来优化性能。可仍没解决,TPS没见提升,响应时间依旧很长进入第三阶段,继续分析其他瓶颈点,如wa cpu、资源均衡使用、网络带宽等问题。性能的分析逻辑里
1 下载下载 6.2.7 版本:[root@service-monitoring ~]# docker pull redis:6.2.7 6.2.7: Pulling from library/redis 025c56f98b67: Pull complete 060e65aed679: Pull complete b95291e865b7: Pull complete e3023c0b11
1 下载 MySQL我们就可以到 docker hub 来看:点击后的页面:直接执行docker pull mysql,会下载最新版本的 MySQL。点击 tags,找到并下载经典的 MySQL5.7:[root@service-monitoring ~]# docker pull mysql:5.7.42-oracle 5.7.42-oracle: Pulling from library
性能测试行业发展到现在,很多人还在讲性能测试理论和思维,性能测试工具的使用和实现。虽也有性能监控部分的数据说明,但大部分只是停留在数据罗列,描述下CPU 90%、内存不足、IO 100M之类现象。为何是CPU 90%?如何定位具体原因?解决方案是啥?大部分性能工程师都不知道,甚至没思路。面试被问“生产数据库CPU突然飙升,如何定位问题原因”。群里议论纷纷,因为固定的批量执行计划;要看监控数据,看慢
监控系统由哪些模块组成,各个模块是如何相互协同的。业界监控系统数量较多,如果我们一上来就陷入某个具体的系统中,容易一叶障目,不见泰山。这里我把众多监控系统的架构做了一个统一的抽象和概括,后面你再看到任何一个监控系统,都能快速理解了。1 典型架构采集器负责采集监控数据,采集到数据后传输给服务端,一般直接写入时序库。然后对时序库的数据进行分析和可视化,分析部分最典型的就是告警规则判断(复杂一些的会引入
授权服务的核心:颁发访问令牌,而OAuth 2.0规范没有约束访问令牌内容的生成规则,只要符合:唯一性不连续性不可猜性可灵活选择令牌形式:既可是没有内部结构 && 不包含任何信息含义的随机字符串也可是具有内部结构 && 包含有信息含义的字符串以前生成令牌的方式都是默认一个随机字符串。而结构化令牌,目前用得最多的就是JWT令牌。1 简介JSON Web Token(J
HBase是一种基于Hadoop的分布式列存储数据库,它支持大规模结构化数据的存储和随机访问。在HBase中,扫描(Scan)是一种读取表中数据的方式,它可以返回表中满足条件的一部分或全部数据。本文将介绍HBase中扫描的概念、使用方法和性能优化。1 扫描的概念扫描是一种读取表中数据的方式,它可以按照一定的条件过滤出表中符合条件的一部分或全部数据,并返回给用户。HBase中的扫描是基于rowkey
1 架构演进的定义1.1 定义通过设计新的系统架构(4R),来应对业务和技术的发展变化。1.2 关键点新架构新的复杂度1.3 目的应对业务和技术的发展变化后带来新的复杂度。案例淘宝去IOE,是因为业务发展大了后,IOE的成本和可控性难以满足,而非性能。架构重构 vs 架构演进技术手段不是区分架构重构和架构演进的方法,复杂度是否变化才是判断关键。2 架构演进的原则、驱动力、模式1个原则架构演进是为了
性能方案在性能项目中是重要文档之一,它指导整个项目的执行过程,也约束项目边界,定义相关人员职能。但如今变得“微不足道”。很多常见的性能项目中,性能方案就是个文档,且是个静态文档。里面写的东西是啥,项目后续会不会按这内容做,没人关心。它就成了形式,只有评审方案时才拿出看看。甚至一些第三方测试项目中,有些甲方连方案内容都不看,直接问有没有?有,就过去了。一个必需的交付物无人关心。性能方案是个重量级文档
现象同样TPS低、响应时间长,但这个接口走的路径不一样,你将看到在资源真不足时,只有增加相应节点的资源才能提升性能。不要轻易给出资源不足的结论。因为但凡有优化空间,都要尝试优化,而不是直接告诉领导加资源。给“增加资源”结论,须建立在有足够证据基础上1 压力场景数据对查询商品接口,第一次试执行性能场景的结果:TPS只有250左右,且响应时间也明显随压力增加而增加,看起来瓶颈已出现?下一步看架构图。2
RESAR性能工程中,场景分为基准、容量、稳定性、异常。每类场景对应不同目标。基准场景是为找到系统中明显配置及软件Bug,也为容量场景提供可对比的基准数据。基准场景要有确定结论。线程数应该如何确定,压力线程的连续递增的重要性,以及如何将之前所讲的分析思路应用在具体的分析案例中。1 性能场景分类通常拿到的需求:评估系统能支持的最大容量。为知道当前的系统容量,目标很明确测试并优化系统以支持线上业务。有
程序设计语言指导怎样把设计更好地落地各种编程范式指导可以用什么样的元素去做设计设计原则与模式指导如何组合分解出来的各个元素分解组合的东西是从哪来?需要你对设计方法有一个基本的认知,要理解真实世界中,解决具体问题的过程。来谈谈设计方法,了解一下设计的基本过程。1 哪些设计方法有些人一上来会先设计DB,因为它们觉得,程序=数据+函数:数据呢,就要存到数据库里剩下的就是根据需要对数据库表进行增删改查这实
一些性能分析方法论,如SEI负载测试计划过程、RBI方法论、性能下降曲线分析法等,只是停留在概念和方法论,并无落地细节,它们完全没有必要存在。在任何一个搜索工具搜“性能测试方法论”关键字,基本上都可以看到很多复制来复制去的内容,基本都在描述一个测试的实施过程,并且这些实施过程也都基本停留在测试阶段。如下面几段关于“SEI负载测试计划过程”的描述:SEI load Testing Planning
1 痛点2 方案选型2.1 轮询拉取每个客户端定时轮询服务端,请求好友列表。缺点对移动端耗电、耗流量对服务端也是较大的资源浪费因为好友数据其实是不会频繁变化的,导致每次拉去的数据可能都是一样的。2.2 业务回调业务服务可以知道谁加了谁的,即可调用 IM 服务通知客户端拉取。缺点业务服务端和 IM 服务端需新增交互逻辑。数据同步强依赖于业务服务端,若回调过程任一节点失败,依旧无法同步通讯录。而且客户
1 Dubbo 整体架构设计dubbo-remoting 模块提供多种客户端和服务端通信功能。最底层部分即为 Remoting 层:包括 Exchange、Transport和Serialize 三层。本文主要描述 Exchange 和 Transport 两层。Dubbo直接集成已有的第三方网络库,如Netty、Mina、Grizzly 等 NIO 框架:dubbo-remoting-zooke
1 传统socket网络编程1.1 实战服务端:ServerBootpackage com.javaedge.netty.ch2;/** * @author JavaEdge */public class ServerBoot { private static final int PORT = 8000; public static void main(String[] args) {
“这人做事靠谱”、“这人做事很厉害”。都是同一部门的,级别一样,岗位职责一样,都在一个项目,为何某些人做事就比大部分更靠谱、更厉害?因为他们态度更积极,更会表现?带过团队就知道,做事的态度和做事的能力不等价。尤其是在部门绩效拉通和晋升预审时,若你向其他部门负责人介绍时,说自己团队的某成员“做事积极主动,很认真,很拼”,多半会被“怼”。有人可能说:“晚上9点下班就算拼?我们团队的xxx做项目的时候都
分布式环境下,RPC框架自身以及服务提供方的业务逻辑实现,都应该对异常进行合理地封装,让使用方可以根据异常快速地定位问题;而在依赖关系复杂且涉及多个部门合作的分布式系统中,我们也可以借助分布式链路跟踪系统,快速定位问题。1 Future超时处理案例以调用端请求超时处理为例,RPC框架如何处理超时请求。无论同步、异步调用,调用端内部都是异步,调用端在向服务端发消息前会创建一个Future,存储消息标
深入RPC,更好使用RPC,须从RPC框架整体性能考虑问题。得知道如何提升RPC框架的性能、稳定性、安全性、吞吐量及如何在分布式下快速定位问题。RPC框架如何压榨单机吞吐量?1 前言TPS一直上不去,压测时CPU压到40%~50%就再也压不上去,TPS也不提高,咋办?看业务逻辑,在执行较为耗时的业务逻辑基础上,又同步调用了好几个其它服务。由于这几个服务的耗时较长,导致服务业务逻辑耗时也长,CPU大
应对突发流量,限流是好手段,但还有其它手段,可最大限度保障业务无损。1 为何分组若在接口上再加一个分组维度去管理,不就让接口复杂了?实则不然,比如无汽车年代,道路很简单,就一条,行人、洋车都在上边走。那随着汽车普及,道路越来越宽,有高速、辅路、人行道。交通网的建设与完善不仅提高出行效率,还更好保障行人安全。RPC治理也一样。假设你是一个服务提供方应用的负责人,早期业务量不大,应用之间的调用关系简单
RPC面临高并发场景,提供服务的每个节点就都可能由于访问量过大而异常,如业务处理耗时过长、CPU飘高、频繁Full GC以及服务进程直接宕机。要保证服务稳定性和高可用性,就要业务自我保护。使用RPC时,业务如何自我保护?最常见的限流。RPC调用包括服务端和调用端,调用端向服务端发起调用。服务端与调用端分别是如何进行自我保护的。1 服务端自保要发布一个RPC服务,作为服务端接收调用端发过来的请求,这
0 前言应用启动居然也这么“讲究”?好比我们日常生活中的热车,行驶之前让发动机空跑一会,可以让汽车的各个部件都“热”起来,减小磨损。运行了一段时间后的应用,执行速度会比刚启动的应用更快。因为Java里,运行过程中,JVM把高频代码编译成机器码,被加载过的类会被缓存到JVM缓存,再使用时不会触发临时加载,使“热点”代码执行不用每次都通过解释,提升了执行速度。但这些“临时数据”都在重启后消失了。重启后
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号