一些经验总结

应用层:

 

1)  尽量减少在方法上面加上synchronized关键字,可以在方法内部加,前者是类级别的锁,后者是对象级别的,如果lock可以满足,多使用lock接口,并发情况下,lock性能会更好

 

2)  缓存也可以在线程内做,通过ThreadLocal来实现,这样我们服务端缓存就可以变成

线程级别-》JVM级别-》本地文件-》memcached等分布式缓存-》DB

 

3)  减少网络通信频率,如对缓存和DB的操作,可以批量做的尽量批量实现,例如对于一些非重要数据,可以异步更新,JVM内部起一个守护线程做轮询,根据自定义规则批量更新到缓存和DB中

 

4)  Memcached中存放集合数据,可以将每天数据单独存入到缓存中,新建一个单独的key管理这些集合的key列表,这样虽然取了两次,但是可以大大降低通信的数据量。

 

5) 日志的规范,之前的公司所做的项目是所有模块都集成在一个工程中,因此出了问题查看log的时候不太好定位,后来约定每个模块的log都加上自己的规范,写一个日志分析程序定位哪些模块出的错误数量和错误详细信息等等

 

6)异常信息的规范,每个模块需要加上自定义异常,将JVM运行时异常与自定义异常分开,自定义异常也可以细分,有些业务比如查DB不应该为空但结果也是空,我们可以划分在自定义异常内,等等。另外针对客户端程序如果也有自己的运行进程(比如AS3、C++等等)服务端可以制定一套异常码配置,客户端与服务端异常码配置保持一致,服务端出错只需要返回给客户端异常码,客户端即可找到相对于异常信息,这样可以降低通信数据大小

 

7)应用服务器可以选择NIO,tomcat默认为BIO,能够响应线程大概800,改成NIO之后可以翻倍,JETTY现在还不太清楚

 

8)代码中不可以出现主动回收内存,尽量降低通过JAVA调用shell脚本代码执行频率

 

9)开发过程中可以考虑用jvisualvm、jconsole观察程序运行状况,有的时候甚至可以调试BUG

 

10)如果是后台任务,可以通过多线程任务提供效率

 

11)如何防止、降低OOM出现的频率

  

    11.1) 避免大对象、更要避免频繁回收的大对象

    11.2) 方法不要太长

    11.3) 减少循环的嵌套

    11.4) 避免反射引起的PerGemSpace oom

    11.5) 减少使用unsafe.allocateMemory(),有可能导致堆外内存溢出(之前使用MC客户端出现过这样的BUG)

    ....

 

12)减少项目的三方依赖,降低系统的复杂度

 

13)服务器如果是多核垃圾回收最好使用并发回收、堆内存最大值和最小值设置相同

 

 

数据层:

 

   1)非重要数据需要及时响应可以考虑附加mongodb,优点是速度快,支持集群、主从等。缺点是语法不丰富,data文件大,相关更专业人员不多,统计需求很不方便

 

   2)需要及时响应,数据结构较丰富的可以考虑redis,微博一直在使用,之前部门有一个模块的排行榜功能在用redis

 

   3)mysql需要做主从,从库满足读需求

 

   4)尽量避免联表查询

 

   5)尽量避免like %% 语法

 

   6)复杂的任务可以在DB端用存储过程实现

 

   7)http://blog.nosqlfan.com/

 

 

  

 

其它:

 

   1)需求大于一切,可以帮助产品、运营捋清楚我们的需求,我们产品的定位,需求确定之后再去做,免得周而复返

  

   2)沟通很重要,能见面沟通就别打电话,能打电话就别发邮件...

 

   3)文档能够帮自己梳理设计思路,能够帮助后人便于上手

      注释同上

  

   4)......

 

WebGL & XLua 开发经验总结 关于自定义的html模板,unity文档中提供了详细的解释,深入了解可参考https://docs.unity3d.com/cn/2021.3/Manual/webgl-templates.html自定义的html模板需要存放在Assets/WebGLTemplates/文件夹下,默认Assets下并不存在该文件夹,需要手动创建。在WebGLTemplates文件夹下,手动创建一个文件夹,文件夹名为自定义模板的名字,在该文件夹下,存放自定义模板的所有资源和html代码、css代码等。 阅读详情

相关推荐

FormRender 升级到经验总结 JavaScript

通过将 FormRender 升级到经验总结 JavaScript,我们可以方便地创建和管理动态表单,并实时生成和更新用户的经验总结。以上是一个简单的示例,展示了如何将 FormRender 与 ES 集成,并自定义经验总结的展示方式。希望本文对你有所帮助!本文将介绍如何将 FormRender 升级到经验总结 JavaScript,并提供相应的源代码示例。可以在经验总结的官方网站上下载最新版本的 ES,并将其引入到项目中。现在,我们可以使用 ES 创建一个经验总结,以便在用户填写表单时动态生成。

python_bug262的博客 148

实习两个月总结

时间过得很快,从7月18日来到北京,到7月21日工作,算起来将近两个月了,简单做下阶段性的总结。 出来之前,自己给自己的这一年定位是先study好english,同时在J2EE方面继续深造,学习企业级开发的技术,了解企业开发流程,学习如何与人沟通,如何成熟的面对问题,解决问题,发现问题。 那么简单说下将近两个月来了解的一些东西。 ...

Program_newbie的博客 382

CAD开发经验总结

CAD二次开发经验总结

sunshinecandy的博客 285

Java基础(自己总结)

加粗样式 2.java概述 2.1概念 java是一门面向对象的语言,而之前学习的C语言是面向过程的语言,C++是面向对象的一门语言。 2.2为什么学习java语言 java目前是一门使用最为广泛的语言之一; java还有许多特性:简单性、分布式、可移植性、健壮性、多平台独立性、动态性等。 java拥有极高的跨平台能力;(编写桌面的应用程序、WEB应用程序、嵌入式系统应用程序、分布式系统的开发等)...

ProGram_Java521的博客 412

STM32 BootLoader 入门教程:从原理到 APP 跳转实现

在 STM32 项目开发中,BootLoader 通常用于实现固件升级、程序引导和应用程序校验。本文从最基础的 BootLoader 原理开始,讲解 STM32 内部 Flash 分区设计、APP 地址偏移、向量表重定位、BootLoader 跳转 APP 的核心代码,以及实际开发中常见的问题。本文适合刚开始接触 STM32 BootLoader、IAP 在线升级、串口升级、OTA 升级的开发者阅读。

lidecong133的博客 1668

一文读懂世界模型(World Model):AI的“数字大脑”,通往AGI的核心基石

世界模型正成为AI领域的关键技术,它让AI在虚拟环境中模拟物理世界规律并预测行动后果,从而减少现实试错成本。2018年Ha和Schmidhuber提出的VAE+RNN架构奠定基础,2022年后自监督学习推动快速发展。当前世界模型分为潜空间、生成式、强化学习和对象中心四大流派,已在机器人、自动驾驶、工业仿真等领域落地应用。尽管面临长时序预测误差等挑战,未来将向多模态建模、大模型融合等方向发展,成为实现具身智能和通用人工智能的核心基石。

m0_38116472的博客 807

19年电赛经验总结-应该如何准备电赛

19年电赛经验总结写在前面的话新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 写在前面的话 最近忙着各大厂的实习面试,回顾了一下19年电赛的比赛经历,总体来说还算说得过去 新的改变 我们对Markdown编辑器进行了一些功

XD_lab423_lws的博客 9052

【Proteus】NE555纯硬件实现LED呼吸灯效果,附源文件,效果展示

本设计通过NE555与三极管的巧妙配合,仅用基础元件实现了呼吸灯效果。核心在于利用RC积分电路将PWM信号转换为控制电压,并通过负反馈动态调节占空比。Proteus仿真验证了方案的可行性,读者可进一步优化参数或扩展功能,探索更多硬件设计可能性。

2201_75797484的博客 2981

.Net面试经验总结

金九银十即将到来,求职套路多,但是网上很多都是Web前端、Java方面的面经,很少有,Net和C#相关的面经。一方面国内从事.Net的程序员和Java相比少很多,另一方面公司的岗位不多并且薪资也比Java低。当时.Net还是有许许多多有趣的地方,C#的语法跟Java很相似,并且很多知识是多语言通用的(比如数据库、数据结构和算法、设计模式等等)。...

baidu_33146219的博客 2万+

CPU系统级验证——测试激励——imperas公司riscvOVPsimPlus文件分析

本分析重点关注该repo向量扩展部分。 1. repo简介 该repo是指令集验证的仿真环境包括,大部分是指令集的测试用例,也包含了一些模拟器,如riscvOVPsimPlus。 主要介绍的是riscvOVPsimPlus指令集模拟器,riscvOVPsimPlus(下面统称ISS)是imperas公司在riscvOVPsim基础上扩充了向量扩展的指令集模拟器,该repo于今年9月份部分开源 什么叫部分开源呢? 首先该repo必须在imperas官网注册下载,而且必须是企业用户(免费邮箱人家瞧不上.

知识,既贵,又便宜。 4459

高频面波成像实战:从频散曲线到全波形反演

面波勘探是近地表工程勘察的重要手段,其核心原理在于不同频率的面波对地下介质的敏感深度不同,由此形成的频散曲线能够反映浅层剪切波速结构。相较于传统钻探与折射波法,高频面波成像具有无损、高效、对低速夹层敏感等优势,广泛应用于路基检测、空洞探测、滑坡调查等领域。在实际工程中,从野外采集的排列设计、震源选型,到频散谱提取与频散曲线反演,每一步都直接影响成像精度。然而频散反演受限于一维层状假设,难以刻画横向剧烈变化的地质体。全波形反演通过拟合完整波形信息,能够突破频散曲线的分辨率边界,获得更精细的近地表速度模型。本文

weixin_29090917的博客 270

PMI为什么要更新PgMP申请中的经验总结问题?

项目管理协会(PMI®)宣布:即将在全球范围内对项目集管理专业人士(PgMP®)认证考试申请中小组审核阶段(Panel Review)的PgMP Experience Summary(项目集管理经验总结表)进行优化更新,确保申请人通过回答更适用的问题,更准确地描述当前角色的项目集管理经验。对中国大陆地区PgMP申请人来说,这是继去年PMI和中国国际人才交流基金会(CITEF)决定从2023年5月在中国大陆地区实现项目集管理专业人士(PgMP®)认证的中英双语考试之后,在保证申请的完整、公平和严谨基础上的又一

dlxmglxh的博客 797

帆软FineReport经验总结

帆软FineReport数据决策系统FVS大屏及普通可视化图形开发及参数使用,数据库连接,Unity大屏展示开发运用总结。

liuzhiqiang66的博客 1万+

STM32 HAL SDADC DMA

由于项目需要使用STM32F373单片机的SDADC功能对电位计进行检测,网上资料比较少,踩了很多坑,下面进行总结。

weixin_44597885的博客 1196

【WRF-Chem 工具】CAMStoWRF详解:CAMS数据下载及处理

【WRF-Chem 工具】CAMStoWRF详解:CAMS数据下载及处理

WW、forever的博客 195

软件测试完整流程以及经验总结

最近一个软件测试的朋友问了一些测试相关的问题,正好趁此研究一下 测试完整流程 1,测试的基础知识,这点是最基础的,也是最重要的,大家自行了解 2, 测试的环境搭建,当然每个公司环境搭建的都不一样,我们需要进入一家公司之后,进行了解,我们公司进行接口测试与性能测试比较多 3,测试的分类,web端测试与app端测试,大公司都会涉及,但是对于app端的测试就比较粗糙,小公司对于app端测试比较重视,会细分为ios和安卓,平板进行细化测试,对于web端,演化为维护界面使用,测试使用的比较少 4, 测试的工具

无名 1229

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

UiPath经验总结

转载:UiPath经验总结 原文链接 https://www.cnblogs.com/ybyebo/archive/2018/09/20/9680149.html https://www.cnblogs.com/ybyebo/p/10086473.html https://blog.youkuaiyun.com/weixin_39793432/article/details/86490306 日志策略:将...

Orchestrator_me的博客 4305

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

经验总结

所以最近开始喜欢在JavaEye谢谢博客,记录一些平时遇到的经验总结以及网上摘录的一些总结。 主要有三个原因: 1. 好记性不如烂笔头,我又不想总是写字。 2. 我喜欢JavaEye的电子书功能,这样我写得东西可以导出备份。 3. 把平时遇到的一些问题写出来分享给大家,希望对大家有些帮助,这是一个特别有意义的事情,会让满足我的一点成就感。          ...

comeontony的博客 147

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Javaweb经验总结

Javaweb经验总结 全面细致,非常好的一个系列 https://www.cnblogs.com/xdp-gacl/p/3798347.html

weixin_42313829的博客 246

高级硬件工程师经验总结:助你快速成长的技术宝典

高级硬件工程师经验总结:助你快速成长的技术宝典 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在硬件开发领域,经验的积累往往比理论知识更为重要。为了帮助广大硬件工程师快速提升技术水平,我们推出了“高级硬件工程师经验总结”这一开源项目。该项目汇集了众多资深硬件工程师的智慧结晶,涵盖了从电路设计到调试优化等多个关键环节的实用经验,旨在帮助工程师们在开发过程中少走弯路,快速...

gitblog_06660的博客 735

程序设计经验总结

程序设计经验总结         在这个行业里做了快4年了,多少总结了一些东西,成功也许很难复制,但是失败却时常被人们重复,我不敢说我做的很好,但是我希望总结出以前失败的一些教训,时不时看看,提醒自己以后再也不要犯类似的错误.这篇文章会不定期的更新,可能就是简短的几句话,但是,也是我实践和思考的结果.        1)程序不会出错,出错的肯定是人;如果程序出错了,那也一定是人的错误.

铭毅天下Elasticsearch 2265

Delphi 开发 WebService 经验总结

Delphi 开发 WebService 经验总结 去发现同类优质开源项目:https://gitcode.com/ 本资源文件是一份关于Delphi开发WebService的宝贵经验总结,详细记录了在开发过程中遇到的问题、解决方案以及心得体会。通过阅读此文档,您可以快速掌握Delphi开发WebService的相关技巧,提高开发效率。 此文档涵盖以下内容: WebService 概述 Delp...

gitblog_06708的博客 372

java工作经验总结

java工作经验总结 不知不觉算上实习,工作也快一年了,沉下心来想想就会发现很多东西需要总结一下,毕竟作为职场菜鸟新手,总是需要反复思考以便进步的,看到相关博客有感而发,贴几个要点督促督促自己: 1.学习需要多思考,想想知识点的应用场景及原理,下一次遇到类似的项目往往举一反三。 2.多动手去写,尽量别copy别人代码急于求成,除非很赶时间,平时尽量自己手写,便于掌握。 3.需求需要明确,项

二营长 2623

Latex 与markdown经验总结

Latex 与markdown经验总结 第一部分 markdown背景知识 这是我的自学笔记,希望在遗忘之后能够保留下来当时的思考。 ​简明的讲,markdown是一种文本格式,我个人认为是一种脚本,它的出现是为了解决word日益复杂不能顺应小巧方便的时代需求,实际上几乎所有的文本都可以用word处理,但是例如在代码,数学公式,流程图等扩展功能office的学习曲线比较高,需要重新学习一个软件,对...

wenpuhua2的博客 9645

2020前端面试经验总结

看过很多篇面试经验的分享,大多都是关于面试考察问题的总结。比起问题总结,我更想结合自己的面试经验谈谈我对面试的理解。 总共面了大大小小20家公司,总结下从面试的准备阶段到面试结束中遇到的问题,希望能帮到正在或准备找工作的同学。 用一句话概括找工作的感受:重在基础(技术知识及原理),丰富项目(项目经验及细节),理解全面(技术及产品),积累是前提(工作中积累和总结),会说很重要(表达到位)。 面经可...

dzw1991的博客 1074
上一篇: 【转】Linux下面安装lighttpd 1.5.0
下一篇: IMG
Program_newbie
博客等级 码龄18年 0粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值