什么是树,什么又是二叉树?我知道大家都听过,但对于具体的概念,应该还是比较模糊的吧?
猜猜运行后会输出什么?是 null 吗?不对,是 java.lang.NullPointerException
在 Java 8 里,引入了一个 Optional 类,该类是一个可以为 null 的容器对象。
已经将kafka消费的数据转换成了OggMessageBean或者CanalMessageBean对象,每条数据对应着某张表的操作记录。
不曾想,每个人都是这样经历过来的,不知你是否还记得在spring的xml配置文件里如何配置对象的场景?或许依然记忆犹新,或许早已抛开在脑后,等等吧。后面spring出现了通过注解的方式去注入一个实例,这或许解放了很多我这样的码农双手,坏笑。
虽然 Optional 类在某些情况下可能会增加一些额外的代码复杂性,但它在提高代码的可靠性和可读性方面具有重要作用,特别是在处理可能为 null 的情况时。
为了缅怀一下我逝去的童年,这两天我又翻出了《猫和老鼠》、《哆啦A梦》等童年经典。在回顾蓝胖子的过程中,大雄的零分试卷可谓是出镜率最高的东西。对于大雄的零分试卷,老师、妈妈和大雄的不同表现总能让人捧腹大笑,但同时也能勾起自己曾经考砸了的回忆。比如老师怒其不争的表情:
一个类的行为或其算法可以在运行时更改,我们把它降维到代码层面。 用人话翻译一下就是,运行时我给你这个类的方法传不同的“key”,你这个方法会执行不同的业务逻辑。 细品一下,这不就是 if else 干的事吗?
随着软件项目代码的日积月累,系统维护成本变得越来越高,是所有软件团队面临的共同问题。持续地优化代码,提高代码的质量,是提升系统生命力的有效手段之一。软件系统思维有句话“Less coding, more thinking(少编码、多思考)”,也有这么一句俚语“Think more, code less(思考越多,编码越少)”。所以,我们在编码中多思考多总结,努力提升自己的编码水平,才能编写出更优雅、更高质、更高效的代码。
public static void main(String[] args) { IDUtil idUtil = new IDUtil("yyyyMMddHHmmssSSS");//yyyy-MM-dd HH:mm:ss:SSS System.out.println(idUtil.generatedNoByFormatDateAndRandom(5,"5")); } 时间格式在创建对象时传入。在集群中使用应传入机器码或唯一标识作为唯一ID的根据。 * * * 更新 添加了多个可选的构造方
昨天在技术交流群,有位读者吐槽刚刚接手的代码(文章标题),代码全篇无格式,无注释,多个嵌套不打括号,函数命名不规范,代码实在看不下去。随着软件项目代码的日积月累,系统维护成本变得越来越高,代码质量是所有软件团队面临的共同问题。
项目中有一些工程表格需要导出,设计到行列合并,定制样式,原有工具类冗余,内聚性强。所以想写一个可以随意定制excel的工具类,工具类满足需求:
本文总结了一套与Java函数相关的编码规则,旨在给广大Java程序员一些编码建议,有助于大家编写出更优雅、更高质、更高效的代码。
本文主要研究一下rocketmq的DefaultRocketMQListenerContainer
原因已经搞清了: clazz.getMethod获取的方法没有使用public修饰符时,则会引发NoSuchMethodException异常。 解决办法: 方法1:ready方法增加public修饰符。这样clazz.getMethod就可以找到了
去年更新了一系列和SPI相关的内容,最近因为业务需要,我又基于业务场景,实现了一版。对于什么是spi,很久之前有写过一篇文章,java之spi机制简介感兴趣的朋友可以蛮看一下
需求:通过改变id,从数据库中回显不同的信息 前端: <label class="col-sm-4 control-label">单号:</label> //onchange:修改option改变触发函数 <select id="tes04Redisson 分布式锁封装项目用 Redisson 分布式锁,但是每个地方的代码除了业务代码,其他都差不多一样的,如果要修改的话,就要修改很多,不只修改一个项目,很麻烦的。01几种日常数据判断类使用方式// 几种日常数据判断类使用方式 Bob bob = new Bob(); Objects.nonNull(bob); Objects.isNull(bob); CollectionUtils.isNotEmpty(list); CollectionUtils.isEmpty(list); StringUtils.isEmpty(String.valueOf(bob.getId())); // A为空 B不为空 返回空指针异常 A不为空 B为空返回false Objects.equals(A,B);02记录跟sb同事的argue--关于spring如何解决循环依赖然后sb同事自己折腾了几天之后,拿着一段sb代码打我脸,说lazy也解决不了。我定睛一看,好家伙:02Java 代码精简之道其中:“道”指“规律、道理、理论”,“术”指“方法、技巧、技术”。意思是:“道”是“术”的灵魂,“术”是“道”的肉体;可以用“道”来统管“术”,也可以从“术”中获得“道”。01MybatisPlus Lambda表达式 聚合查询 分组查询 COUNT SUM AVG MIN MAX GroupBy众所周知,MybatisPlus在处理单表DAO操作时非常的方便。在处理多表连接连接查询也有优雅的解决方案。今天分享MybatisPlus基于Lambda表达式优雅实现聚合分组查询。01关于fastjson在Object转String时的一个坑在公司的业务中有这么一个场景:需要将某个系统的结果对象放进Hbase中,然后被后续系统读取使用,在Hbase存储的时候,需要将对象中每个属性解析成字符串存入,但一开始存入接口的设计者只考虑了普通类型(Integer、Long、String之类)的字段存储,未考虑Map或者POJO对象的存储,因此原始代码如下:04日常开发必备神器 HttpUtil 分享(超详细)最近在工作中需要在后台调用各种上传、下载、以及第三方服务接口,经过研究决定使用 HttpClient,自己封装了一个 HttpClient 工具类,简单轻松的实现get、post、put、delete 以及上传、下载请求,在此分享给大家。02OpenCV 获取 RTSP 摄像头视频流保存至本地Java OpenCV 是一个强大的开源计算机视觉库,它提供了丰富的图像处理和分析功能,越来越多的应用需要使用摄像头来获取实时视频流进行处理和分析。01Android|WebView 禁止长按,限制非白名单域名的跳转层级最近 Android APP 项目接到少量用户反馈,说在隐私协议的界面上,有两种方式可以跳到百度搜索页面:01如何将只能作用一次的注解修改为作用多次思路,原本的注解只能作用一次,我们直接新写一个注解,将旧的注解当做一个数组进行,间接达到多次注解的效果02Objects, Immutability, and Switch Expressions 40-48本文为《Java Coding Problems》40-48题,问题涉及Objects, Immutability, and Switch Expressions (共18题)。03Redis+Caffeine 太强了!二级缓存可以这样实现!在实际的项目中,我们通常会将一些热点数据存储到Redis或MemCache这类缓存中间件中,只有当缓存的访问没有命中时再查询数据库。00关联更新封装(二)前两天写了关联表更新封装 今天写个另一种类型的 public static <T, K extends Comparable<? super K> & Serializable,01微服务如何保证对外接口的安全?可以这样做!通常来说,要将暴露在外网的 API 接口视为安全接口,需要实现防篡改和防重放的功能。01springboot 国际化处理01在 ES 里我想把两个字段的值是一样的查出来。02基于若依springboot架构实现数据多维统计项目中需要一个统计功能,同时可以根据勾选不同维度的统计字段来实现列表动态增减,实现效果如图:https://pan.baidu.com/s/1D9cBOWJ2q6rqL7BpU_wcMQ?pwd=wx6q,由于语雀编辑器暂时不支持视频上传,这里是百度网盘的免提取码链接,可直接观看01巧用自定义注解,一行代码搞定审计日志,你学会了吗?任何一个软件系统,都不可避免的会碰到【信息安全】这个词,尤其是对于刚入行的新手,比如我,我刚入行的时候,领导让我做一个数据报表导出功能,我就按照他的意思去做,至于谁有权限操作导出,导出的数据包含敏感信息应该怎么处理,后端接口是不是做了权限控制防止恶意抓取,这些问题我基本上不关心,我只想一心一意尽快实现需求,然后顺利完成任务交付。03Java多文件压缩03MySQL数据库,深入了解连接查询及原理(三)mysql> select * from test1 t1,test2 t2 where t1.a = t2.b;03每天20分钟之shardingjdbc续之主从分离和强制主库之前写过一篇sharding-jdbc的文章,实际是简单介绍,配置部分就是线上项目使用,未能摘出来成文件,这次整理成代码,大家可以在工作上使用。01关联更新封装(三)目前仍然处于完善中,所以还没有集成进stream-query,临时放到另一个仓库里04Mybatis拦截器之数据加密解密Mybatis Interceptor 在 Mybatis 中被当作 Plugin(插件),不知道为什么,但确实是在 org.apache.ibatis.plugin 包下面05求求你,不要再使用!=null判空了!对于Java程序员来说,null是令人头痛的东西。时常会受到空指针异常(NPE)的骚扰。连Java的发明者都承认这是他的一项巨大失误。02java-逆波兰算法四则运算是栈的重要应用之一 中缀表达式转后缀表达式(逆波兰算法)过程 从左到右遍历中缀表达式 数字直接输出为后缀表达式一部分 如果是符号,则判断与栈顶元素的优先级 高于栈顶元素优先级直接入栈 低于或等于栈顶优先级栈顶元素出栈并输出为后缀表达式一部分(注意这里是递归比较栈顶元素的优先级并出栈),最后将当前元素入栈 直到遍历完中缀表达式,最终输出后缀表达式 下面是自己的实现源码 package com.yhq.demospringboot; import org.apache.commons.lang3.St03fastjson——使用 aop 打印入参,报错:getOutputStream() has already been called for this response我在使用 aop 做日志切面,记录 controller 的入参和返回时,将参数使用 fastjson 格式化。代码如下:03JDK中的这个类可以让我们安全地处理一些涉及null的操作Java 开发中经常要对对象进行非空判断以防止出现空指针。大部分同学都喜欢用下面这种方式来进行判断:01springboot 实现xss过滤02「技能分享」有效处理空值的10个技巧,学不会算我输当我们开始使用Java进行编程时,很多人会把null值当做敌人,并且害怕NullPointerExceptions,下面给大家分享10个有效处理空值的技巧。03
项目用 Redisson 分布式锁,但是每个地方的代码除了业务代码,其他都差不多一样的,如果要修改的话,就要修改很多,不只修改一个项目,很麻烦的。
// 几种日常数据判断类使用方式 Bob bob = new Bob(); Objects.nonNull(bob); Objects.isNull(bob); CollectionUtils.isNotEmpty(list); CollectionUtils.isEmpty(list); StringUtils.isEmpty(String.valueOf(bob.getId())); // A为空 B不为空 返回空指针异常 A不为空 B为空返回false Objects.equals(A,B);
然后sb同事自己折腾了几天之后,拿着一段sb代码打我脸,说lazy也解决不了。我定睛一看,好家伙:
其中:“道”指“规律、道理、理论”,“术”指“方法、技巧、技术”。意思是:“道”是“术”的灵魂,“术”是“道”的肉体;可以用“道”来统管“术”,也可以从“术”中获得“道”。
众所周知,MybatisPlus在处理单表DAO操作时非常的方便。在处理多表连接连接查询也有优雅的解决方案。今天分享MybatisPlus基于Lambda表达式优雅实现聚合分组查询。
在公司的业务中有这么一个场景:需要将某个系统的结果对象放进Hbase中,然后被后续系统读取使用,在Hbase存储的时候,需要将对象中每个属性解析成字符串存入,但一开始存入接口的设计者只考虑了普通类型(Integer、Long、String之类)的字段存储,未考虑Map或者POJO对象的存储,因此原始代码如下:
最近在工作中需要在后台调用各种上传、下载、以及第三方服务接口,经过研究决定使用 HttpClient,自己封装了一个 HttpClient 工具类,简单轻松的实现get、post、put、delete 以及上传、下载请求,在此分享给大家。
Java OpenCV 是一个强大的开源计算机视觉库,它提供了丰富的图像处理和分析功能,越来越多的应用需要使用摄像头来获取实时视频流进行处理和分析。
最近 Android APP 项目接到少量用户反馈,说在隐私协议的界面上,有两种方式可以跳到百度搜索页面:
思路,原本的注解只能作用一次,我们直接新写一个注解,将旧的注解当做一个数组进行,间接达到多次注解的效果
本文为《Java Coding Problems》40-48题,问题涉及Objects, Immutability, and Switch Expressions (共18题)。
在实际的项目中,我们通常会将一些热点数据存储到Redis或MemCache这类缓存中间件中,只有当缓存的访问没有命中时再查询数据库。
前两天写了关联表更新封装 今天写个另一种类型的 public static <T, K extends Comparable<? super K> & Serializable,
通常来说,要将暴露在外网的 API 接口视为安全接口,需要实现防篡改和防重放的功能。
项目中需要一个统计功能,同时可以根据勾选不同维度的统计字段来实现列表动态增减,实现效果如图:https://pan.baidu.com/s/1D9cBOWJ2q6rqL7BpU_wcMQ?pwd=wx6q,由于语雀编辑器暂时不支持视频上传,这里是百度网盘的免提取码链接,可直接观看
任何一个软件系统,都不可避免的会碰到【信息安全】这个词,尤其是对于刚入行的新手,比如我,我刚入行的时候,领导让我做一个数据报表导出功能,我就按照他的意思去做,至于谁有权限操作导出,导出的数据包含敏感信息应该怎么处理,后端接口是不是做了权限控制防止恶意抓取,这些问题我基本上不关心,我只想一心一意尽快实现需求,然后顺利完成任务交付。
mysql> select * from test1 t1,test2 t2 where t1.a = t2.b;
之前写过一篇sharding-jdbc的文章,实际是简单介绍,配置部分就是线上项目使用,未能摘出来成文件,这次整理成代码,大家可以在工作上使用。
目前仍然处于完善中,所以还没有集成进stream-query,临时放到另一个仓库里
Mybatis Interceptor 在 Mybatis 中被当作 Plugin(插件),不知道为什么,但确实是在 org.apache.ibatis.plugin 包下面
对于Java程序员来说,null是令人头痛的东西。时常会受到空指针异常(NPE)的骚扰。连Java的发明者都承认这是他的一项巨大失误。
四则运算是栈的重要应用之一 中缀表达式转后缀表达式(逆波兰算法)过程 从左到右遍历中缀表达式 数字直接输出为后缀表达式一部分 如果是符号,则判断与栈顶元素的优先级 高于栈顶元素优先级直接入栈 低于或等于栈顶优先级栈顶元素出栈并输出为后缀表达式一部分(注意这里是递归比较栈顶元素的优先级并出栈),最后将当前元素入栈 直到遍历完中缀表达式,最终输出后缀表达式 下面是自己的实现源码 package com.yhq.demospringboot; import org.apache.commons.lang3.St
我在使用 aop 做日志切面,记录 controller 的入参和返回时,将参数使用 fastjson 格式化。代码如下:
Java 开发中经常要对对象进行非空判断以防止出现空指针。大部分同学都喜欢用下面这种方式来进行判断:
当我们开始使用Java进行编程时,很多人会把null值当做敌人,并且害怕NullPointerExceptions,下面给大家分享10个有效处理空值的技巧。
领取专属 10元无门槛券
手把手带您无忧上云