软件性能是软件产品的一个非功能特性,是软件产品考量的一个重要指标,软件性能指标关注的不是是否能够完成平台特定的功能,而是完成同样的功能时对用户而言显示数据、页面、功能操作的及时性。影响软件性能的核心要素分为几个层面,当前软件所部署的硬件环境、网络、CPU系统的吞吐量,而在性能调优的本质上是对于IO数量,数据库连接数、JVM性能、系统参数等几个层面的调整、优化、适配。

无论是软件性能调整或是了解、学习、掌握新知识的过程中都不要浮于表面,需要从原理、底层方面掌握、运用,同时在工作过程中面对问题需要及时反馈做到“凡事有交代、件件有着落、事事有回应”。

性能优化

软件平台除本身在代码逻辑处理上的优化外,如:缓存机制、减少数据库访问交互次数、逻辑公有化处理等。也可以通过支撑运行的Server端进行参数调整增加平台运行的性能比重。典型性能优化的几种方式:

调整JVM/IO:通常在对应Server中的启动文件中添加JVM参数,设置对应参数,如:

-server:一定要作为第一个参数,在多个CPU时性能佳

-Xms:初始大小,使用的最小内存,CPU性能高时此值应设的大一些

-Xmx:最大值,使用的最大内存

-XX:PermSize:设定内存的永久保存区域

-XX:MaxPermSize:设定最大内存的永久保存区域

调整数据库连接:通过设置数据库连接最大个数来匹配性能上的优化,如:

maxIdle:最大等待连接中的数量,设置为0没有限制

maxWait:最大建立连接等待时间,单位为 ms。如果超过此时间将接到异常。设为-1表示无限制。

maxActive:最大连接数据库连接数,设 0 为没有限制

maximumConnectionCount:最大连接数

minimumConnectionCount:最小连接数

扩大系统参数:增加所部署环境硬件服务器的性能参数,保证平台部署环境性能的稳定性。

集群模式扩展:通过平台内置或结合第三方的方式解决因单台服务器性能不能满足或因故障造成服务器停机情况所影响客户业务正常使用带来的不必要影响。

解决与推进

各行各业的工作过程中不可避免会涉及到超出当前工作能力范畴的工作事宜,在处理这类问题的过程中不能盲目开展,需要有条理、有思路、有计划稳步推进。同时在解决问题的过程中尝试从原理出发,不要“死记硬背、浮于表面”,解决一个问题的同时多想想、多问问扩散思维、打开格局从多方面、多维度、多层次上积累自身的知识收获,提升个人的技能。

1 原理掌握

无论是在学习、工作、解决问题的过程中,均需要从问题的本质出发,掌握问题的本质原理,解决问题的方式、方法,而不是仅仅了解问题是否解决。如:在性能优化的过程中需要掌握可以调整的性能优化的方式(JVM、数据库连接、系统参数等)而不是去死记硬背XX目录的XX文件添加XX配置信息。

通过问题解决的原理性掌握实现在类似问题解决过程中的延展性,实现举一反三,解决问题的过程中原理互通,在底层原理的基础上不断衍变出表象问题的解决方案,从而做到稳扎稳打,深入浅出,解决问题得心应手。

2 扩散思维

扩散思维与原理掌握是相辅相成的过程,在解决问题的过程中不能故步自封、自我封闭,这样很容易将问题局限化。工作中不能做“人活着、脑已死”、“不能用身体的忙碌去掩盖思想的懒惰”。更多时候能够把问题描述清楚,那么问题就已经解决一半,遇见问题不要停留在问题表面上,扩散思维从不同的角度思考问题,摆脱僵化的思维框架,将思维变通借助横向类比、跨域转化、触类旁通,沿着不同的方向扩散。

比如:调整未知产品性能优化的过程中不要等着其他人告诉自己一步就解决一步,想着按部就班的完成这个事情,而是要思考如何去解决、如何去完成,具体解决问题的思路和原理是什么,在以前类似性能优化的过程中可以通过哪些方式、方法,什么样的方式最有效、最高效,从而更好、更全面的找到解决问题的最优方案。

3 知识积累

发现问题、制定方案、解决问题整体过程中,能够了解、吸收、掌握、积累更多的知识点,由点至线,由线连接成面,不积跬步无以至千里,不积小流无以成江海,只有量的积累才能达成质的飞跃。通过解决问题进行积累知识是知识获取的一种驱动因素,在工作过程中自己专攻的领域主动获取相关的知识积累,常见获取知识的方法如下:

快速看相关查:结合所面临的问题快速查询、检索相关知识点,迅速了解解决问题过程中可能涉及的解决方式,同时不断深入延展,有一个知识点延展至一个知识面,形成自身的知识积累;

谋定后动计划先行:不要盲目的开始,工作开始之前要有计划有依据,需要协调资源的要提前申请/告知被协调人,切记为开始而开始,盲目开展反复修改,这样反而更浪费时间,消耗工作的热情;

PDCA原则:Plan(计划)Do(做)Check(检查)Action(调整),工作过程中有计划,遵循计划,检查工作,结合实际情况调整工作模式不断完善至解决问题,过程中总结知识积累形成自身的知识链。

4 技能提升

每个人在不同阶段接触超出能力范围内的事情或多或少都会有些无所适从,不了解如何着手解决。工作中遇到挫折的同时也是自身能力提升的机会,这时一定要放平心态,自身不要慌乱,努力去做寻找解决问题的方法,付出一定会有收获,同时可以请教他人,协调资源,学习他们的工作方式、解决问题的方法,对自身的能力提升会有很大的帮助,比如:

学习能力提升:工作过程中不断学习、理解、总结新的知识,开阔思维提升能力,如果一个人停滞不前终究会被社会所淘汰,学习、记录、积累、提升,积少成多、积水成河,每天进步一点日积月累便会成绩斐然。

知识技能提升:在学习知识的同时需要扩充自身的知识面,形成知识体系,理性了解自身的真实能力,了解自身的优缺点不断的改变、提升丰富自身的能力模型。

沟通能力提升:解决问题的过程中不断与同事、领导、伙伴进行沟通、确认,掌握面向不同角色人员所沟通需要的注意事项。

工作效率提升:对工作能够主动积极应对而不是被动接受,对于工作积极思考,明确解决方式、方法,提高自身的工作效率,从而形成良性循环。

汇报与反馈

工作过程中需要明确汇报本身就是工作的一部分,是信息共享的主要途径,面对可汇报可不汇报的工作一定要汇报,不能够仅仅闷头做事造成信息闭塞。当面对问题时不能因为担忧领导的批评而逃避汇报,积极的汇报能够保证工作不偏离方向,更多情况领导不会因为反馈问题而指责汇报人能力不行,而是会结合自身的经验更好、更快、更有效的协助解决问题。

1 直面问题

遇见问题,直面问题勇于担当,不要推诿,面对当前工作任务不逃避、不绕开,面对问题与问题“打交道”,剥离事物的表面现象通过本质解决问题,比如:与客户沟通的过程中,客户反馈平台使用繁琐,可能本质上是因为培训没有详细、到位,客户不理解平台内部操作逻辑;项目调研过程中客户关心整合落地,实际是想要了解结合企业目前的现状能做哪些事情,是否能够做到,其他类似企业是如何构建的。

工作过程中所遇到的问题(无论是业务范畴或是技术难点)不要选择逃避,逃避不能解决问题,需要直面问题,提升自身的信心,明确问题的关键点,抓住问题、剖析问题、解决问题、累积经验、丰富阅历、提升自我。

2 暴露问题

暴露问题是为了更好的解决问题,更多时候能够清晰明确的表达出问题,问题已经解决一半,在项目实施过程中无论是遇见技术坎坷或是暴露出的自身能力问题都不能选择“视而不见、回避问题”,把问题明确出来是为了采取更有效的应对措施。自己不能解决的问题,可以协调资源,不能让问题发酵,造成不必要的影响。

人性本身往往趋利避害,问题不暴露、不解决,问题本身不会消失,不要因为害怕批评而不暴露问题、掩盖问题。工作中所遇见的问题对于自身而言本质上是一次能力提升的机会,我们应该遇见问题、解决问题、领导认可、能力提升逐步走向正循环,而不是逃避、推诿、掩盖、忽视问题,这样无论是对个人还是企业得到的均是负面影响。

暴露问题、罗列问题、分析问题、解决问题,在遇见问题时首先正视问题,列出问题,分析产生问题的原因,解决问题的方式方法,跟进问题解决的进度,如:

工作计划没有按时完成,什么原因造成的没有按时完成?

系统协调时间过长;自身能力不足影响工作进度;工作计划划分不合理造成拖期。

面对问题如何解决,保证工作进度的推进?

寻找甲方工作人员共同推动,明确问题拖期的原因;协调其他资源,“笨鸟先飞”努力提升自身能力模型;合理划分工作计划,保证进度的推进。

提出解决方案后,持续跟进问题解决的效果。

持续跟进系统对接的情况;累积、总结、学习提升能力模型,保证问题最终被解决,获得认可。

3 积极汇报

领导每天的工作非常繁杂,作为员工应做到“凡事有交代件件有着落、事事有回应”尤其当前问题领导已经知晓且过问,积极汇报能够让领导实时掌握工作的进展,把握汇报的时机,注意汇报的方式,突出重点,表达观点,紧扣要点。

把握汇报时机:正确的时间做正确的事情,工作开展前优先与领导汇报沟通当前时间开展是否合适,预计投入的成本(时间、人力);工作过程中与领导汇报工作进展情况,是否有跑偏的情况;工作中出现问题需要及时暴露、反馈,制定问题的解决方案;需要做出决策时工作完成后及时汇报,保证领导对工作的实时掌握。

突出汇报重点:在与领导进行工作汇报时需要言简意赅、条理清晰、直奔主题,重点汇报结果,领导关心的事情结果,减少过程的汇报。汇报过程中以1、2、3的模式进行汇报避免表达无序,语言组织混乱的情况影响汇报效果。

汇报态度端正:汇报的本质是信息对称解决问题,汇报过程中要客观表达需要汇报的内容,不要添加个人的感情色彩,明确需要汇报的内容,以解决问题的姿态去汇报,而不是相互推诿、互相诋毁。

反思与思考

工作过程中遇见问题对于个人而言本身是一次能力提升的机会,解决问题的过程中不要仅仅停留在问题的表面,需要进行深入思考,了解问题的本质,过程中记录总结、分析,便于后续工作人员借鉴参考,解决问题后需要对问题解决方式进行总结,总结自身的不足及过程中学习、掌握的能力,后续不断巩固,固化为自身的能力模型。

1 浮于表面

工作过程中不是装模作样、弄虚作假而是需要真实落地,注重落实,不要“浮”于表面。在一盘散沙上注定不能建设高楼大厦,根基不稳建筑越高越危险,装饰的再华丽也是“空中楼阁”。

有目标有计划:清晰的目标和可行的计划是提升工作效率、落实完成工作的重要保障。跟进工作过程中制定明确目标,落实工作计划,保证目标达成。

有方法固根本:做工作要讲求方式方法,而不是用“身体的忙碌换取头脑的懒惰”,采取有效的工作方式,合理的工作方法稳扎稳打,夯实自身的基本功,充实能力模型,可以达到事半功倍的效果。

2 深度思考

机械重复是无意义的忙碌,勤奋指的是头脑的努力而不是身体的疲劳,单纯依赖身体的忙碌最终成为的是“人手”而不是企业所需要的“人才”。只有通过深度思考,学会刨根问底才能够找到最恰当的办法解决问题。问题之所以产生就一定有产生的原因,很多问题都是隐藏在表面现象之下,在工作过程中想要解决问题必须要深度思考,透过现象直击本质,在解决问题过程中深思考、多摸索、勤总结、时归纳,掌握问题的本质、保证后续即使表现不同的问题也能透过表现在本质上解决问题。

解决问题的过程中采用5W2H的方法对自己多发文,问题的本质是什么,问题产生的原因是什么,问题会带来什么影响,问题的解决方案是什么。客观分析问题,注重问题的逻辑及条理,结合身边的资源快速应对解决问题,积累自身,掌握解决问题的方式与方法,养成深度思考的习惯。

3 总结回顾

“博学之,审问之,慎思之,明辨之,笃行之”意思要是广博的学习,要对问题详细的询问,要慎重的思考,要明白的辨别,要切实的力行。总结问题的过程中多为自己提问题,深度挖掘问题的本质,记录问题的解决方案后定期回顾。定期回顾是能力提升的重中之重,即使有积极的心态、清晰的思路、良好的沟通、快速学习的能力,但问题解决后不总结、不回顾会将前面付出的努力付之一炬。多总结,勤回顾,先固化,再优化,将问题变为知识点,由掌握知识点累积为知识面、知识链,由掌握知识到运用知识,把运用知识变成下意识。

一次性能优化引发的思考相关推荐

  1. 蓝桥杯 出栈顺序问题引发的思考以及递归的优化(缓存池)

    蓝桥杯 出栈顺序问题引发的思考以及递归的优化(缓存池) 关于递归的优化和思考 在我们IT圈内有句话,普通程序员用迭代,天才程序员用递归.诚然,递归确实能够将许多复杂的问题简化,但是问题来了,由于递归采 ...

  2. 记一次性能优化,单台 4 核 8G 机器支撑 5 万 QPS

    点击关注公众号,Java干货及时送达 来源 | https://segmentfault.com/a/1190000018075241 前言 这篇文章的主题是记录一次性能优化,在优化的过程中遇到的问题 ...

  3. C语言中递归什么时候能够省略return引发的思考:通过内联汇编解读C语言函数return的本质...

    C语言中递归什么时候能够省略return引发的思考:通过内联汇编解读C语言函数return的本质 事情的经过是这种,博主在用C写一个简单的业务时使用递归,因为粗心而忘了写return.结果发现返回的结 ...

  4. mysql gtid 还是pxc_记一次 PXC 集群拆分引发的思考

    原标题:记一次 PXC 集群拆分引发的思考 作者简介 冷正磊 2018年2月加入去哪儿网 DBA 团队,主要负责机票业务的 MySQL 和 Redis 数据库的运维管理工作,以及数据库自动化运维平台部 ...

  5. MySQL:由USE DB堵塞故障引发的思考

    遇到故障,我们往往想的是如何解决这个故障,而不是从故障的根本去思考出现这个故障的原因?这样的结果,只能使我们得到了鱼,失去了渔.今天,我们就来分享一个由USE DB堵塞故障引发的思考案例. 故障描述 ...

  6. 一个分组查询引发的思考

    一个分组查询引发的思考 我们在看项目代码或者SQL语句时, 往往会看到很多非常复杂的业务或者SQL 那么问题来了. 复杂SQL是如何写成的? 下面通过一个数据展示的需求来体会到复杂的SQL是如何书写的 ...

  7. JAVA-OPTS引发的思考

    JAVA-OPTS引发的思考 我们在性能测试过程中,经常要修改应用的JAVA-OPTS参数.修改这些参数,不单单是修改这些数字,本着知其所以然的态度,我们要知道这些参数背后的意义. 常见的JAVA-O ...

  8. 一个小程序引发的思考

    既然是一个小程序引发的思考,那么我们就先看看这个小程序,看看他有何神奇之处: namespace ConsoleApplication1 {class Program{static void Main ...

  9. 由“递归遍历二叉树”引发的思考

    由"递归遍历二叉树"引发的思考 递归的用法我感觉自己已经掌握了,可是今天在递归遍历二叉树时,它又迷一样令我费解.我本人在算法这一块很薄弱,所以想把这个问题发出来,希望有大神能够为我 ...

最新文章

  1. 参考答案:03 向量空间
  2. ystep jQuery流程、步骤插件
  3. 计算机控制直流电机闭环调速实验,最小拍控制系统及直流电机闭环调速控制系统设计和实现实验报告...
  4. node n 切换node版本失败_node版本如何升级
  5. Linux 下gedit编辑器的使用
  6. 硅谷企業面臨新的反壟斷枷鎖
  7. c语言error和,C语言ERROR精选.doc
  8. 这个应用魔方厉害了,让软件开发者效率提升10倍
  9. openstack常用运维命令_OpenStack运维指南pdf
  10. 自动基线校正 python_核磁共振谱自动基线校正新方法
  11. 第一次作业 四班15
  12. 一个简单的Java Web项目
  13. 为企业发展赋能,让零散数据资源变为企业数据资产
  14. python怎么创建文本文件
  15. python爬图mzitu_小白学 Python 爬虫(16):urllib 实战之爬取妹子图
  16. 刷网课被告非法控制计算机信息系统罪,您好,请问一下网上代刷网课叫非法控制计算...
  17. java 图片画框并读取成base64数据
  18. css2D、3D详解
  19. c语言中判断c是否为小写字母,C语言判断英文字符大小写的方法
  20. ORA-25156: 旧样式的外部联接 (+) 不能与 ANSI 联接一起使用

热门文章

  1. APP+后台+vue前端全套打包送,电商解决方案CRMEB开源啦
  2. .jnlp 文件打开方式
  3. 自己拥有一台服务器可以做哪些很酷的事情?
  4. 绘图神器draw.io(写文必备)
  5. React报错 React Hook useEffect has a missing dependency: ‘obj‘
  6. fatal error C1001: INTERNAL COMPILER ERROR(compiler file 'msc1.cpp', line 1786)解决方法
  7. 登录mysql报错Failed to connect to backoff 或 Failed to get D-Bus connection: Operation not permitted解决方法
  8. URP SMAA 细品
  9. smaa github iryoku
  10. 玻色量子与华夏、人行、龙盈智达联合发表量子金融研究成果