buguge_个人页

个人头像照片 buguge
个人头像照片 个人头像照片
23
0
0

个人介绍

☀ 随写、跑步,一静一动,保持近10年的两个习惯在坚持。已分不清习惯于自律还是自律成习惯。 ☸ 研发一线TL,注重成本和绩效。大龄码匠,不停奔跑,才能留在原地。 ☂ 知识就是力量,但更重要的是运用知识的能力。会 is one thing,会用 is another。

擅长的技术

  • 数据库
  • 程序设计
  • Java
  • 企业应用业务场景实现
  • 开发者
获得更多能力
通用技术能力:

暂时未有相关通用技术能力~

云产品技术能力:

暂时未有相关云产品技术能力~

阿里云技能认证

详细说明
暂无更多信息

2024年12月

  • 12.02 22:49:36
    发表了文章 2024-12-02 22:49:36

    发现一肉鸡接口,快来围攻啦~

    本文开篇以系统登录页面的安全加固实践说起,详细分析了服务端提供的`loginEncryptKey` API 代码存在的问题,如接口对任意用户名返回密钥导致的安全风险,以及在高并发场景下可能引起的Redis缓存穿透问题。针对这些问题,提出了改进措施:首先对接口请求参数进行严格校验,确保用户名合法且存在于系统中;其次,优化加密密钥的生成与获取逻辑,采用预生成密钥池结合自定义哈希算法的方式,减少重复生成密钥的资源消耗。此外,为了适应集群环境,提出了利用Redis哈希表存储密钥和结合本地缓存的解决方案。最后,文章建议将密钥预置于应用配置文件中,简化了集群环境下的数据同步需求。

2024年11月

  • 11.18 21:08:14
    发表了文章 2024-11-18 21:08:14

    开发一份API接口,需要注意这些,看你做到了几项

    本文介绍了设计API接口时需注意的关键点,包括数字签名、敏感数据加密与脱敏、限流、参数校验、统一返回与异常处理、请求日志记录、幂等设计、数据量限制、异步处理、参数定义、完整文档及开发者对接SDK等内容,旨在帮助开发者设计出安全、稳定、易维护的API接口。

2024年10月

  • 10.21 19:57:47
    发表了文章 2024-10-21 19:57:47

    发现问题就解决,往往是低效的方式。关于对象参数的赋值取值问题

    在审查中台task服务代码时,发现TaskVO对象的industryTypeName字段在某些方法调用中未进行空值检查,导致潜在bug。提出两种解决方案:一是在方法③中增加对industryTypeName的空值判断;二是改变方法③的参数类型,避免外部调用方直接设置industryTypeName,从而减少错误发生的可能性。

2024年09月

2024年08月

  • 08.29 20:10:50
    发表了文章 2024-08-29 20:10:50

    【优秀程序设计】【good-practice】聚合系统如何实现通道侧回调的业务结果通知?

    【8月更文挑战第3天】本文介绍了公司短信平台聚合系统中,短信通道回调的业务处理方法。文章详细描述了如何通过统一回调接口与合理分层设计优化代码结构,避免烟囱式代码堆砌,提高扩展性和维护性。
  • 08.20 20:09:39
    发表了文章 2024-08-20 20:09:39

    方法的职责

    【8月更文挑战第2天】这段代码示例展示了在一个Web控制器类中的方法处理短信上行通知的过程,注意到for循环中的`oneRecord`变量。通过重构,将`oneRecord`的定义和赋值逻辑后置,实现更清晰的代码结构和更明确的职责划分。
  • 08.05 19:59:58
    发表了文章 2024-08-05 19:59:58
  • 08.04 17:45:44
    发表了文章 2024-08-04 17:45:44

    有关于异常捕获点滴,plus我也揭揭apache-common ExceptionUtils的短

    本文通过示例展示了Java编程中异常处理的几种不当做法,包括无意义地捕获并重新抛出异常、改变异常堆栈信息以及私自“吞噬”异常等,并指出了这些做法可能带来的问题,如增加排障难度等。同时,文章推荐了在捕获异常后打印错误日志的良好习惯,并介绍了如何使用`try...finally`结构进行资源管理和程序状态记录。此外,还特别提到了Apache Commons Lang库中的`ExceptionUtils`工具类在记录异常堆栈信息方面的应用价值,但也对其某些行为提出了疑问,鼓励读者深入探究。

2024年07月

  • 07.30 20:47:59
    发表了文章 2024-07-30 20:47:59

    解决非Spring Bean访问Spring Bean的问题:实用指南

    在非SpringBean类中直接获取SpringBean可能会引发问题,例如上面案例里提到的空指针和自动装配失败。为避免这些问题,建议将需要访问Spring Bean的类也注册为Spring Bean,以确保依赖关系得到正确管理。
  • 07.29 10:04:27
    发表了文章 2024-07-29 10:04:27

    局部变量,在使用时再定义

    关于局部变量,适时定义可以提高代码可读性并规避不必要的bug。示例代码中,为了避免误解`checkTaskApplyDTO`仅设置了`userId`,在`existAppliedTask`方法内部,可以通过将`checkTaskApplyDTO`的定义与设置属性的操作靠近,以明确其所有属性值的来源。 另外,本文还展示了一个因提前定义变量`ret`而导致的bug实例。如果将此变量的定义延迟至其实际使用前,则可以避免此类问题。适时定义变量有助于减少混淆,提高代码质量。

2024年06月

  • 06.18 20:32:24
    发表了文章 2024-06-18 20:32:24

    【程序设计】做一个发送系统邮件的功能,如何设计数据表? 转至元数据结尾

    重构系统邮件发送旨在实现统一的邮件发送功能,通过公共API提供服务。设计包括两个核心数据表:`mail` 表用于存储邮件基本信息,如邮件ID、业务类型、发送者、标题、内容、附件信息、发送状态和时间戳;`mail_receiver` 表记录邮件接收者信息,包括邮件ID、接收者邮箱、接收者类型、发送状态和重试次数。为了优化查询性能,建议创建`Email_Content`表,将`content`和`attach_file`从`Email`表中分离,以减少主表大小。这有助于提高主表的查询速度,并通过定期的数据结转策略,确保热表只存储最近的数据。
  • 06.06 21:56:47
    发表了文章 2024-06-06 21:56:47

    不扒瞎,这个程序让我从150s优化到了5s

    在优化一个业务开发组的生产问题时,发现销售管理系统查询数据延迟高达2-3分钟。问题根源在于,程序在for循环中频繁读取Redis大KEY数据,导致性能下降。解决方案是采用本地缓存HutoolCache,将耗时降至毫秒级别。此外,还对RedisTemplate配置进行了研究,Jackson2JsonRedisSerializer在序列化时包括了所有字段,即使字段值为null,增加了数据体积。通过对ObjectMapper的调整,仅序列化非空字段,可以显著提升redis读取性能。本文同时还提醒我们在使用Redis时要注意大对象缓存,强调了正确使用和配置缓存以及避免大对象存储的重要性。
  • 06.04 10:12:19
    发表了文章 2024-06-04 10:12:19

    设计文档中的流程图,靠得住吗?

    本文讨论了软件开发设计文档中图形化设计图的重要性,如流程图、思维导图等,它们有助于清晰传达设计意图和提高沟通效率。然而,当面临迭代更新、人员变动时,基于截图的图形设计图可能会带来协作难题。作者提倡使用简单文字格式搭配标签和符号作为替代方案,分享了团队内部实践,通过表格来实现类似思维导图和流程图的功能,以增强文档的可维护性和协作性。同时,作者强调这不是反对使用设计图,而是提出在某些场景下的一种有效补充方法。
  • 06.03 19:41:26
    发表了文章 2024-06-03 19:41:26

    通过一次性能优化,再次记牢了mybatisplus的QueryWrapper、LambdaQueryWrapper、AbstractWrapper这三者之间的关系...

    本文描述了一次针对SpringBoot应用中MyBatisPlus分页查询的性能优化过程。在优化时,作者重写了BaseMapper的`selectPage`方法,通过`Wrapper`的`between`操作添加了ID区间限制以提升SQL执行效率。然而,由于在业务服务类中循环调用分页查询时未每次都创建新的`Wrapper`对象,导致`id BETWEEN ? AND ?`条件重复出现在SQL中。那么,如何解决这个问题呢?

2024年05月

  • 05.30 23:17:14
    发表了文章 2024-05-30 23:17:14

    HTTP的系统登录页面,如何避免明文传输用户密码?

    该文讨论了登录页面中密码安全传输的问题。当使用HTTP时,密码以明文形式传输,存在风险。在示例中,前端使用JavaScript的CryptoJS库和当前时间戳作为动态加密key对密码进行DES加密。后端接收到密文后,利用相同的时间戳解密。为了增强安全性,文章还建议使用RSA等非对称加密算法。
  • 05.30 22:45:27
    发表了文章 2024-05-30 22:45:27

    短信验证码登录接口,如何防止恶意攻击

    该文讨论了移动应用中常见的手机短信验证码登录(短验登录)的安全设计。后端通常需要提供获取短信验证码和手机短验登录两个API。为了增强机短验登录API的安全性,提出了几种无需依赖Redis等存储介质的方案:1)使用数字签名确保请求合法性;2)基于时间戳的验证,允许在一定时间范围内有效;3)应用TOTP算法生成动态码进行验证;4)利用JWTToken进行身份验证并设置有效期。文章强调了创新思考在解决安全问题中的重要性,并鼓励读者分享更多方案。
  • 05.30 22:38:38
    发表了文章 2024-05-30 22:38:38

    短信验证码登录接口,如何防止恶意攻击

    该文讨论了移动应用中常见的手机短信验证码登录方式,后端实现通常涉及两个API:获取短信验证码和短信验证码登录。在设计时,为增强短信验证码接口的安全性,提出了几种无需使用Redis等存储介质的方案:1) 使用数字签名,基于时间戳或随机数生成唯一签名进行验证;2) 基于时间的有效期验证,通过加密或修改时间戳形式确保安全性;3) 应用TOTP算法,按时间生成动态码进行比对;4) 利用JWTToken生成带有限期的签名进行验证。这些方法旨在防止恶意攻击并优化登录接口性能。

2023年09月

2023年08月

  • 发表了文章 2024-12-02

    发现一肉鸡接口,快来围攻啦~

  • 发表了文章 2024-11-18

    开发一份API接口,需要注意这些,看你做到了几项

  • 发表了文章 2024-10-21

    发现问题就解决,往往是低效的方式。关于对象参数的赋值取值问题

  • 发表了文章 2024-09-26

    系统里这个同时查冷热表的sql,动动手指,从8s降到3s

  • 发表了文章 2024-09-24

    redis序列化数据时,如何包含clsss类型信息?

  • 发表了文章 2024-09-21

    niubility!即使JavaBean没有默认无参构造器,fastjson也可以反序列化。- - - - 阿里Fastjson反序列化源码分析

  • 发表了文章 2024-08-29

    【优秀程序设计】【good-practice】聚合系统如何实现通道侧回调的业务结果通知?

  • 发表了文章 2024-08-20

    方法的职责

  • 发表了文章 2024-08-05

    通过一个简单的应用案例来说说迪米特法则

  • 发表了文章 2024-08-04

    有关于异常捕获点滴,plus我也揭揭apache-common ExceptionUtils的短

  • 发表了文章 2024-07-30

    解决非Spring Bean访问Spring Bean的问题:实用指南

  • 发表了文章 2024-07-29

    局部变量,在使用时再定义

  • 发表了文章 2024-06-18

    【程序设计】做一个发送系统邮件的功能,如何设计数据表? 转至元数据结尾

  • 发表了文章 2024-06-06

    不扒瞎,这个程序让我从150s优化到了5s

  • 发表了文章 2024-06-04

    设计文档中的流程图,靠得住吗?

  • 发表了文章 2024-06-03

    通过一次性能优化,再次记牢了mybatisplus的QueryWrapper、LambdaQueryWrapper、AbstractWrapper这三者之间的关系...

  • 发表了文章 2024-05-30

    HTTP的系统登录页面,如何避免明文传输用户密码?

  • 发表了文章 2024-05-30

    短信验证码登录接口,如何防止恶意攻击

  • 发表了文章 2024-05-30

    短信验证码登录接口,如何防止恶意攻击

  • 发表了文章 2023-09-06

    业务中台如何实现业务结果的回调通知

正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息
正在加载, 请稍后...
暂无更多信息