随笔分类 - Java后端开发
分享Java后端开发所需的基础知识、进阶知识,以及一些工作必备技能、第三方组件等,与大家一起学习成长。
知识改变世界,热爱源于追求!
摘要:
笔者在最近的项目开发中,频繁地遇到了 Java 类型与 JDBC 类型之间的转换问题:
1、数据库的 varchar 类型字段,需要存储 Java 实体中的 JSON 字符串;
2、数据库的 int 类型字段,需要存储 Java 实体中的 Enum 枚举。
阅读全文

摘要:
笔者今天要分享的是一个项目重构过程中如何将数据库选型由原来的 MongoDB 改为 MySQL 的思考,涉及到业务当前的痛点、选型分析、解决的核心思路,最后会给出简单的 demo。
阅读全文

摘要:
最近笔者在实际项目开发中会频繁涉及到服务之间的远程调用、域名的配置和请求的转发等与计算机网络相关的知识。
这些其实在读本科和考研的时候都有学习过理论,但为了更透彻地掌握便于在工作中使用,我还是决定写一篇文章来分享实际开发中是怎么应用的。
阅读全文

摘要:
笔者在最近的项目开发中,遇到了两个父子关系紧密相关的场景:评论树结构、部门树结构。具体的需求如:找出并删除某条评论下的所有子评论id集合,找出并删除某个部门下所有的子部门id集合。
阅读全文

摘要:
Stream API 是 Java 8 中最为重要的更新之一,是处理集合的关键抽象概念,也是每个 Java 后端开发人员都必须无条件掌握的内容。
在之前的开发中,遇到了这样的需求:记录某个更新操作之前的数据作为日志内容,之后可以供管理员在页面上查看该日志。
阅读全文

摘要:
这一篇文章拖了有点久,虽然在项目中使用分布式锁的频率比较高,但整理成文章发布出来还是花了一点时间。在一些移动端、用户量大的互联网项目中,经常会使用到 Redis 分布式锁作为控制访问高并发的工具。
阅读全文

摘要:
笔者目前从事一线 Java 开发今年是第 3 个年头了,从 0-1 的 SaaS、PaaS 的项目做过,基于多租户的标准化开发项目也做过,项目的 PM 也做过...
在实际的开发中积累了一些技巧和经验,包括线上 bug 处理、日常业务开发、团队开发规范等等。现在在这里分享出来,作为成长的记录和知识的更新,希望与大家共勉。
阅读全文

摘要:
多租户的概念是我在毕业后不久进第一家公司接触到的,当时所在部门的业务是计划建设一套基于自研的、基于开放 API 的、基于 PaaS 的、面向企业(ToB)的多租户架构平台,将我们的服务可以成规模地、稳定高效地交付给客户使用。
阅读全文

摘要:
不知道大家在 Java 日常开发中是否会经常遇到关于 JSON 的各种转换的场景,我把自己日常工作中遇到的 JSON转换场景做了一个总结,希望可以对大家有帮助。
注:本文都是基于阿里的 fastjson 来讲解操作的。
阅读全文

摘要:
笔者在本科的时候上过软件工程的专业课,虽然也完成过类似的课堂作业,但是工作以后一直没怎么用上。碰巧前段时间有碰到一个复杂系统的部分功能设计,作为设计文档的一部分,时序图也被我拿起来派上用场了。
阅读全文

摘要:
OOM 几乎是笔者工作中遇到的线上 bug 中最常见的,一旦平时正常的页面在线上出现页面崩溃或者服务无法调用,查看服务器日志后你很可能会看到“Caused by: java.lang.OutOfMlemoryError: Java heap space” 这样的提示,那么毫无疑问表示的是 Java 堆内存溢出了。
阅读全文

摘要:
笔者目前从事一线 Java 开发今年是第 3 个年头了,从 0-1 的 SaaS、PaaS 的项目做过,多租户下定制化开发项目也做过,项目的 PM 也做过...
在实际的开发中积累了一些技巧和经验,包括线上 bug 处理、日常业务开发、团队开发规范等等。现在在这里分享出来,作为成长的记录和知识的更新,希望与大家共勉。
阅读全文

摘要:
笔者目前有两段工作经历,都是在一线当开发大头兵,职级倒是随着跳槽而有所上升。做过从0-1的SaaS、PaaS的自研项目,也做过基于多租户的标准化项目,还有过半年的 PM 的经历...这些都让我有了一些关于工作上的感悟。现在简单总结一下,拿出来和大家做分享交流。
阅读全文

摘要:
看到标题大家可能会有点疑惑吧:OpenFeign 不是挺好用的吗?尤其是微服务之间的远程调用,平时用的也挺习惯的,为啥要替换呢?
阅读全文

摘要:
在最近的开发中,遇到了两个类似的需求:都是基于 Stream 的父子树形结构操作,返回 List 集合对象给前端。于是在经过需求分析和探索实践后有了新的认识,现在拿出来和大家作分享交流。
阅读全文

摘要:
在日常项目开发中,可能会遇到使用 ES 做关键词搜索的场景,但是一般来说业务数据是不会直接通过 CRUD 写进 ES 的。
因为这可能违背了 ES 是用来查询的初衷,数据持久化的事情可以交给数据库来做。那么,这里就有一个显而易见的问题:ES 里的数据从哪里来?
本文介绍的就是如何将 MySQL 的表数据迁移到 ES 的全过程。
阅读全文

摘要:
Redis 是目前互联网后端的热门中间件之一,在许多方面都有深度的应用,作为后端开发熟练掌握该技术是十分有必要的。
Redis 的五种数据类型是:1、String(字符串);2、Hash(哈希);3、List(列表);4、Set(集合);5、Sort Set (有序集合)。其余的用的比较少,本文暂不涉及。其中,String(字符串)是 Redis 中最基本的数据类型,一个 Key 对应一个 Value。
阅读全文

摘要:在最近的互联网项目开发中,需要获取用户的访问ip信息,并进行后续统计分析。
这些ip信息是在第三方的服务中分组存放的,且每个分组都都是分页(1页10条)存放的,如果一次性访问大量的数据,API很有可能会报错。
怎样通过HTTP的方式去获取到信息,并且模拟浏览器每页每页获取10条的信息,且持久到数据库中,就成了当下亟需解决的问题。
阅读全文
摘要:
在做SpringBoot项目的过程中,有时客户会提出按照指定时间执行一次业务的需求。
在单一使用ScheduledTaskRegistrar类解决定时任务问题的时候,可能会达不到预期的动态调整定时任务的效果。
阅读全文

摘要:
在Java Spring 项目中,数据与远程数据库的频繁交互对服务器的内存消耗比较大,而Redis的特性可以有效解决这样的问题。
Redis的几个特性:
1. Redis 以内存作为数据存储介质,读写数据的效率极高;
2. Redis 支持 key-value 等多种数据结构,提供字符串,哈希,列表,队列,集合结构直接存取于内存,可持久化(RDB 和 AOF);
3. 支持主从模式,可以配置集群。
阅读全文
