自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 Web业务系统常见性能优化手段

一般来说,代码的指令执行很快,业务系统一般都要操作数据库,因此性能的瓶颈点,取决于使用的数据库,如果随机读写多可以使用mysql,复杂的数据分析(很多join)可以使用postgresql。很多时候,性能的根源也可能是业务涉及的不合理,把很多功能柔在一起,如果你能想到更好的解决方案,可以给产品提,解决性能的最终办法,就是解决来源。写在最后:业务代码主要保证逻辑清晰,功能正确,不要为了性能,而写出晦涩难懂的代码,当然也得避开嵌套的for循环。在性能要求很高,但是又频繁读取数据库的时候,可以考虑使用缓存。

2023-09-27 18:10:57 141

原创 业务架构、数据架构、应用架构、技术架构对比

业务架构,阐述的是你的业务是如何开展的,可以从外部视角和内部视角来看业务架构外部视角:产业链,上下游上游:各种供应商,原材料、代加工、物流下游:各个渠道的消费者内部视角:组织架构、经营任务、业务流程数据架构数据架构,从数据视角,阐述数据从产生,到消费的全过程,一般包括:数据源、数据采集、数据存储、数据处理、数据加工、数据分析、数据应用应用架构。

2023-05-08 10:21:13 572

原创 Java8 @FunctionalInterface

math_calculate函数的第三个参数,传递的是一个函数名,那么在进行func(a,b)的时候,实际上就是执行传递的函数逻辑。注意,此时MathCalculate2,加了@FunctionalInterface,表明是一个函数式接口,不再希望像通常使用接口的方式来使用,而是要传入一个lamda表达式(也就是函数的真正实现)。假定我们有这样一个场景:给定两个数,在不同的处理流程中,有时候计算和,有时候又需要计算差,我们希望在计算的时候,要做好参数校验。其实我们只要对象中的函数,不希望有对象!

2023-05-05 12:18:34 494

原创 Elasticsearch与Python

特别是DELETE语句,有的时候,我们可能想立刻删除掉线上的某条数据(在页面没有删除按钮),如果漏了后面的id,将会删除整个index,最好先在测试环境,找到对应的index去操作一遍,最后再select count(*) from index 下,看看是否真的只删掉了这一条。b,在生产环境,执行任何命令前,都应该在测试环境先执行一遍,检查该,命令是否满足了语义。c,在内部定义一个Index类,name指明对应es的index。a,命令执行前,再次检查链接的环境。不要觉得麻烦,一定要严格遵守。

2023-04-25 12:01:36 533

原创 Python个人常见语法问题

比如像下面,第一个sum的计算是在bool_a 为Ture的时候,才会进行的,否则sum最终的值为0。比如像下面default_param_func()定义了一个默认参数,这允许我们在调用的时候,最后一个参数不用传递,比如test1()和test2()我们在使用test1()的时候,是希望is_user = True,但是事与愿违,而且编译器和运行时都不会报错。因此在python中定义方法的时候,尽量不要使用默认参数,一定要显示的传递参数。7,注意python对象的字典的区别:特别是在访问其中内容的时候。

2023-04-24 17:01:00 370

原创 如何做好上下游对接

自己的模块,常常要对接上下游,如何在上下游对接的过程中,保证正确性呢?一般和上下游对接的有两种方式:一:接口对接在接口对接中,需要注意下面的点。1,和上下游约定接口的功能是什么,要准确描述该接口要做哪些事情,什么情况下返回成功,什 么情况下返回失败。 在接口暴露的地方做好这些注释,2,定义好接口中的参数的数据结构,确定参数中哪些是必传的,哪些是不必传的,他们的传值范围是什么?在接口impl层面的第一件事情,先打印请求参数日志(可以写个aop按照类名+方法名打印日志)紧...

2021-09-27 18:26:59 3392

原创 在生产使用elasticsearch作为唯一存储源

对系统进行架构设计后,需要把es当做唯一存储源,记录下其中踩到的坑:1,首先es不支持事务,所以在架构设计的时候一定要考虑这一点。 特别的,es在生产环境一般不允许使用脚本,更新操作都是在业务Java系统内存中去更新,然后再刷新到es数据库,所以当多个线程并发修改时,只会有最后一条更新成功(其实其他的线程也更新成功了,只是被最后一个线程覆盖了),解决办法是上接口的调用者加分布式锁,或者把请求放到保证串行的消息队列(比如kafka的同一个分区)2,es不支持动态修改mapping,在做具...

2021-09-14 15:33:40 830

原创 如何编写高质量的代码

1,首先对原有系统要有充分的认识 根据自己负责的内容,了解它们的业务场景,客户要这些功能的原因。 从页面上一个一个的点,看看大概是怎么玩的,每个业务,都有一定的关系,流程。需要画个大概的图。 了解好业务功能后,要了解系统的整体业务架构和技术架构。 根据原有系统的设计逻辑,梳理各个表的结构,字段的含义,相关表的关系,表写入数据的时机,更新的时机和对应的规则。 一边在了解这些的时候,要画出对应的图。 把其中不明白的做好笔记。 然后看系统对这些业务...

2021-04-02 11:35:58 170

原创 Intellij IDEA快捷键整理

【查找类】Ctrl+E,最近操作的文件Ctrl+Shift+E,最近更改的文件Ctrl+[ ],可以跑到大括号的开头与结尾 [ 表示开始 ]表示结束Alt+Q,可以看到当前方法的声明Ctrl+H,显示类结构图(类的继承层次)Ctrl+F12,可以显示当前文件的结构(其中m表示方法,f表示属性)Ctrl+F7,可以查询当前元素在当前文件中的引用,然后按 F3 可以选择Ctrl+N,快速查找类,文件,方法Ctrl+R,在当前文件中替换文本Ctrl+F,当前文件查找Ctrl+Shift+F,

2020-05-27 15:00:26 400

原创 数学的思维方式

什么是数学的思维方式呢?1,观察:观察客观现象,一般而言,客观现象是纷繁复杂的。2,分析:根据这些现象提出要研究的问题,抓住主要特征。3,抽象:根据主要特征抽象建立概念 或者建立数学模型。4,探索:运用直觉,解剖麻雀,类比,归纳,联想,推理等。5,猜测:猜测出可能有的规律。6,论证:只能用公理,定义和已经证明了的定理,进行逻辑推理和计算。7,结论:揭示出客...

2019-08-08 10:19:45 328

原创 spring 整合spring data mongodb

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。为什么需要MongoDBMongoDB与MySQL的区别关于MongoDB与MySQL的区别可以参考网上关于NoSQL与MySQL的区别,以下是找...

2019-06-13 11:40:20 5764 1

原创 rabbitMq问题排查经验总结

最近某些依赖rabbitMq做业务分解,功能没有实现,对本次排查问题做一个简单的总结:1,首先,理清思路,利用rabbitmq做业务分解的大体思路是(我理解是这样的):核心业务处理完毕——>生产者生产消息——>然投递到消息队列——>消息队列有消息——>消费者将接收消息——>做相关业务处理。2,理清思路后,接下来要做的是确认环境一致,这其中包括redis(用的...

2019-05-21 17:56:21 2492

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除