自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 阿里爆款Java面试速成笔记也太香了,系统梳理面试6大专题速取

临近金三银四,想必有不少老哥已经在为面试做准备了。总之就是每一次面试都是对我们能力的检验(无论是软实力还是硬实力)。借此机会,LZ为大家带来了一份近期在Github上爆火的阿里面试小册。小册分别从软实力跟硬实力两方面入手,全方位为大家解读面试题,近期LZ面试前也一直是刷的这个,感觉总结得挺全面的,本着好东西就是要拿出来分享的原则,特此在下面把小册展示出来,希望帮助大家通过面试。由于篇幅限制不能把每个技术栈的面试题截全就只截图部分了,还望谅解。为了不影响大家的阅读体验,就展示到这了,就不把篇幅拉得太长了。..

2022-07-20 13:45:58 389 1

原创 认证授权Spring Security OAuth教程(第二版)

先是给大家基本概念,然后是基于Session的认证方式,紧接着会带着大家去快速的上手SpringSecurity,然后回去给大家详解解释SpringSecurity应用、然后就是分布式系统认证方案以及OAuth2.0,最后是SpringSecurity实现分布式系统授权!下面会带着大家详细地去学习!...

2022-07-20 13:17:07 378

原创 Java多线程不会的看这里,阿里第三版核心技术手册PDF全彩版

本章的案例也充分说明,当线程与某些技术相结合时,我们要考虑的事情会更多。在学习本章的过程中,我们只需要考虑一件事情,那就是如何使单例模式与多线程结合时是安全、正确的。synchronized对象监视器为0bject时的使用方法;synchronized对象监视器为Class时的使用方法;ReentrantReadWriteLock类的使用。如何使用wait/notify机制实现线程间的通信;ReentrantLock类的使用;ThreadLocal类的使用。...

2022-07-20 13:04:06 417

原创 不会又是一个Go的BUG?

这个死锁的坑确实很容易踩,尤其是Java程序员来写Go,所以我们写Go代码时还是得写得更Go一点才行。Go的设计者比较「偏执」,认为「不好」的设计坚决不去实现,就如锁的实现不应该依赖线程、协程信息;可重入(递归)锁是一种不好的设计。所以这种看似有BUG的设计,也存在一定的道理。当然每个人都有自己的想法,你觉得Go的读写锁这样实现合理吗?httpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttps。...

2022-07-19 15:31:57 246

原创 为什么map不能遍历的同时进行增删操作?

前段时间,同事在代码中KW扫描的时候出现这样一条上面出现这样的原因是在使用foreach对HashMap进行遍历时,同时进行put赋值操作会有问题,异常ConcurrentModificationException。于是帮同简单的看了一下,印象中集合类在进行遍历时同时进行删除或者添加操作时需要谨慎,一般使用迭代器进行操作。于是告诉同事,应该使用迭代器Iterator来对集合元素进行操作。同事问我为什么?这一下子把我问蒙了?对啊,只是记得这样用不可以,但是好像自己从来没有细究过为什么?...

2022-07-19 15:22:55 1184

原创 Java中看似简单的for循环,竟有这么多坑?

实际的业务项目开发中,大家应该对这个操作不陌生吧?很多同学可以立刻想出很多种实现的方式,但你想到的这些实现方式都是人畜无害的吗?,很多新手可能稍不留神就会掉入其中。那么,到底有哪些实现方式呢?哪些实现方式可能会存在问题呢?这里我们一起探讨下。注意哦,这里讨论的可不是茴香豆的“茴”字有有种写法的问题,而是很严肃很现实也很容易被忽略的技术问题。给定一个用户列表allUsers,需要从该列表中剔除隶属部门为dev的人员,将剩余的人员信息返回。...

2022-07-19 15:16:54 133

原创 看MyBatis是如何执行一条SQL语句的

在前两天的一次面试中,面试官问了一个和标题一样的问题,由于一直认为MyBatis只是一个ORM框架,所以并没有对他有过深入的了解,于是被问到了,那么这一篇文章来从源码探究一下MyBatis是如何执行一条SQL语句的。...

2022-07-19 15:10:42 155

原创 Java多线程知识点:深入浅出阻塞队列BlockingQueue及其典型实现ArrayBlockingQueue

会抛异常的、返回特殊值的、会阻塞的和阻塞有超时的;插入型的、删除型的、读取型的。如下面的表格总结(其实也是源码的注释内容)下面我们就此表格说明下(我又多分了一个种类->读取删除型常规操作插入型booleanadd(e),向队列插入元素,成功返回true,如果队列容量不够了,则抛出IllegalStateExceptionbooleanoffer(e),向队列插入元素,成功true,失败false,队列容量不够,不会抛出异常删除型BlockingQueue扩展操作v直接上图)。。...

2022-07-19 15:06:34 781

原创 工作流引擎如何在vivo营销自动化中的应用实践

工作流(Workflow)——对工作流程及其各操作步骤之间业务规则的抽象,将流程中的工作组织逻辑和规则进行建模,交由计算机进行自动处理。工作流的本质思想通过预定义的工作流程模板,对现实活动进行实例化的过程。简单说就是通过预设的格式或者可视化配置好流程的模板(比如一种分享活动的运行流程模板),使用时通过该模板构造出一个流程实例对象,通过实例对象完成活动运行跟踪和回溯。本文分析了引入工作流引擎的背景,驱使业务逻辑从控制流中剥离出来,让产研团队更聚焦于业务,解决研发效率低的问题。httpshttps。...

2022-07-19 15:02:59 111

原创 数据结构与算法 :队列与栈的操作以及Java中的List和Queue

这样原来非空的就变成了空队列了。---每次操作无论push还是pop均有一个队列是空的。把上面我分析的思路翻译成代码就是这样的。

2022-07-19 15:00:26 613

原创 如何在Spring接口的基础上,集成Caffeine+Redis两级缓存

在使用Redis发送消息前,需要先定义一个消息对象。其中的数据包括消息要作用于的Cache@Data//标识更新或删除操作//源主机标识,用来避免重复操作}复制代码UPDATE,DELETE;}复制代码消息体中的msgSource是添加的一个消息源主机的标识,添加这个是为了避免收到当前主机发送的消息后,再进行重复操作,也就是说收到本机发出的消息直接丢掉什么都不做就可以了。"+port;}复制代码这样消息体的定义就完成了,之后只要调用的方法就可以把这个对象发布到指定的主题上了。...

2022-07-19 14:51:36 340

原创 手写LinkedList这也太简单了吧!!!链表设计与Java实现

链表是由一个一个的节点组成的,每个节点包含两个字段,其中一个字段data表示真实需要表示的数据,另外一个字段next表示指向下一个节点的指针(如果不了解指针也没有关系,就将其当做一个普通的变量既可,不影响我们的理解),data和next两者一起组成链表当中的节点(Node)。双向链表和单链表的区别就是他的指向有两个方向,而单链表只有一个方向,在双向链表的节点当中会有两个指向其他同样节点的变量,一个指向前一个节点,一个指向后一个节点,对应下图prev指向前一个节点,next指向后一个节点。...

2022-07-16 16:47:20 113

原创 【Java】计算两个日期时间的差值,竟然也有这么多门道

上半年春招的时候,作为面试官,对于面试表现的不错的同学会要求其写一小段代码看看。题目很简单给定一个日期,然后计算下距离今天相差的天数。本以为这么个问题就是用来活跃面试氛围的,但是结果却让人大跌眼镜,真正能写出来的人竟然寥寥无几,很多人写了一整张A4纸都写不下,最后还是没写完...他们在做什么?先取出今天的日期,然后分别计算得出年、月、日的值,然后将给定的字符串进行切割,得到目标的年、月、日,然后再判断是否闰年之类的逻辑,决定每月应该是加28天还是29天还是30或者31天,最后得出一个天数!...

2022-07-16 16:29:09 1891

原创 【速看】拼多多云服务平台流程信息流出

开通成功后引导商家前往拼多多面单编辑器系统https自定义区模板就是打印的面单最下面一部分可以自由编辑的区域。​一般在此位置展示的是订单号,商品编码/数量,以及其他作业相关的序列号,波次号等。新建与开通的物流服务商对应的电子面大模板,并且编辑商家自定义区。需要提供给商家自定义区的参数以及位置排版,此方式需要提前引导商家制作自定义区模板。参数格式是,可以支持中文,data.字段名,比如需要展示订单号,可以在服务端封装好["订单号"orderid],下文有详细步骤。......

2022-07-16 16:19:16 3866

原创 AQS你真的了解吗?

本文由浅入深对AQS进行了解读,其中主要包括其数据结构、等待队列和条件队列等。然而虽然AQS从原理上看是十分精细并复杂,但是作为同步/阻塞的框架使用起来所需要做的事情其实并不多,下面笔者将从使用者的角度列举出AQS的用法。...

2022-07-16 13:10:57 696

原创 kotlin与Java之间的骚操作:kotlin一键调用java

Java中,允许将一个String[]作为参数传给方法中的Object[]参数,而kotlin不行。在java中,原生类型数组,比如int[]可以降低装箱操作的性能开销。在kotlin中为了解决Java中所有引用类都是可控类型的问题,将所有来自于java平台类型称为平台类型(platformtypes)。Java中存在两种异常运行时异常和非运行时异常,但在kotlin中,只有运行时异常。数组在kotlin中是不变,即不支持协变/逆变(out/in)。...

2022-07-16 11:51:25 254

原创 复杂多表头多sheet页excel模板导出怎么做?Java EasyPoi实例来了

最近开发中遇到复杂多表头多sheet页多图片excel导出的问题。本文使用操作Excel的框架是EasyPoiEasyPoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板语言(熟悉的表达式语法),完成以前复杂的写法官方主页API文档最主要的就是各种fe的用法空格分割三目运算{{test?objobj2}}n表示这个cell是数值类型{{n}}...

2022-07-16 11:28:32 4575

原创 请假流程如何快速实现(OA )呢?:Activiti工作流

我们就这样轻松完成了一个请假流程的流程的定义、流程定义的部署、流程实例的启动、任务完成的所有操作会发现,其实Activiti的逻辑其实就是通过控制表来进行具体的任务状态操作的。每一步的操作都需要根据一定的逻辑关系,更新数张表来进行控制的而这些操作,都由Activiti框架帮助我们封装好了,提供给我们的只是一个个服务的API,从而大大简化了工作流的操作,所以还不快用起来?嗯,就这样。每天学习一点,时间会见证你的强大~...

2022-07-16 11:07:17 678

原创 看看微博、微信、购物车、抽奖小程序是如何使用Redis数据结构进行实战演练的?

redis.io简单来说Redis就是一个使用C语言开发的数据库,不过与传统数据库不同的是Redis的数据是存在内存中的,也就是它是内存数据库,所以读写速度非常快,因此Redis被广泛应用于缓存方向。另外,Redis除了做缓存之外,Redis也经常用来做分布式锁,甚至是消息队列。Redis提供了多种数据类型来支持不同的业务场景。Redis还支持事务、持久化、Lua脚本、多种集群方案。Redis应用场景缓存使用,减轻DB压力DB使用,用于临时存储数据(字典表,购买记录)...

2022-07-16 10:34:57 644

原创 Spring Security 权限控制

项目版本BootSecurity官网文档在前面的文章中,所有的接口只需要登录就能访问。并没有对每个接口进行权限限制。在正式的系统中,一个用户会拥有一个或者多个角色,而不同的角色会拥有不同的接口权限。如果要实现这些功能,需要重写中的。HttpSecurity用于构建一个安全过滤器链SecurityFilterChain,可以通过它来进行自定义安全访问策略。@Bean}@Override.and()}@Overridehttp.authorizeRequests()//开启配置。...

2022-07-16 10:13:08 8460 1

原创 Java中平铺列表(List)与树形(Tree)结构的互转

至此,递归和非递归分别实现listtotree和treetolist已完成,实现比较仓促,有很多细节处未处理好,希望看到的小伙伴及时指出,不胜感激。另外,机智的你,有其它更好的方法,实现转换吗?欢迎留言分享,码海无涯,共同进步。httpshttps。...

2022-07-16 09:25:13 3218

原创 Fastjson2你有开始使用吗?快来看看源码解析

关于fastjson2的简单测试,以及源码阅读到此就告一段落了。针对fastjson2有以下几点总结复制代码但是官方也不保证100%兼容。内存占用,通过前面的测试,发现fastjson2有明显占用更大内存的现象,甚至在相同内存条件下,fastjson1可以完美执行,而fastjson2有产生内存溢出的风险。Issues通过官方的Issues能够发现目前的bug还是比较多的,对于需要稳定性的项目还是不建议尝试。具体表现如下测试数据可以看得出来,感兴趣可以本地实测一下。...

2022-07-15 13:19:35 349

原创 指南:Java 17(升级版)

在Java领域,有广为人知的日志框架,slf4j、log4j等,这些框架提供了统一的编程接口,让用户可以通过简单的配置实现日志输出的个性化配置,比如日志tag、级别(info、debug等)、上下文(线程id、行号、时间等),在JVM内部之前一直缺乏这样的规范,于是出来了UnifiedLogging,实现了日志格式的大一统,这就是我们接下来要介绍的重点。我们接触最多的是gc的日志,在java8中,我们配置gc日志的参数是-Xloggc。java-Xlogxxx。......

2022-07-15 11:59:09 2493

原创 Java基础:八股文系列

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行。实现原理Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就可以运行java程序。字节码面向过程。...

2022-07-15 11:41:26 304

原创 为什么大公司都禁止在SpringBoot项目中使用Tomcat?

在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。同时,SpringBoot也支持Undertow容器,我们可以很方便的用Undertow替换Tomcat,而Undertow的性能和内存使用方面都优于Tomcat,那我们如何使用Undertow技术呢?本文将为大家细细讲解。SpingBoot中我们既可以使用Tomcat作为Http服务,也可以用Undertow来代替。Undertow在高并发业务场景中,性能优于Tomcat。...

2022-07-15 11:11:19 339

原创 高级JAVA的Stream流操作

关于JAVAStream的理解要点与使用技能的阐述就先到这里啦。那通过上面的介绍,各位小伙伴们是否已经跃跃欲试了呢?快去项目中使用体验下吧!

2022-07-15 10:57:26 619

原创 跳过这六个坑你就领先绝大部分Java程序员

作为Java程序员的你,不知道有没有踩过一些基础知识的坑。有时候,某个bug,你查了半天,最后发现竟然是一个非常低级的错误。有时候,某些代码,这一批数据功能正常,但换了一批数据就出现异常了。有时候,你可能会看着某行代码目瞪口呆,心里想这行代码为什么会出错?今天跟大家一起聊聊99%的Java程序员踩过,或者即将踩的6个坑。...

2022-07-15 10:50:12 1730

原创 动态菜单:用Spring Boot+Vue3教你怎么实现

在vhr中,考虑到菜单就是只有两级一级菜单和二级菜单,一级菜单是目录,二级菜单是则是具体的菜单项,没有三级菜单!所以在vhr中,查询菜单的时候我直接用了一个一对多的查询,将一级菜单做一的一方,二级菜单做多的一方,这样比较省事。这里所说的目录,相当于我们在vhr中所说的一级菜单,菜单相当于我们在vhr中所说的二级菜单。当用户从前端登录成功后,要去动态加载的菜单的时候,就查询M和C类型的数据即可,F类型的数据不是菜单项,查询的时候直接过滤掉即可,通过。整体上来说,就分为这四种情况。...

2022-07-15 10:30:20 1696 1

原创 需知的入门级Java 概念

大家考虑a=b=c=3这个表达式的计算意义,它的计算过程不是3放入c,再把c的值放入b,b的值再放入a,而应该考虑作a=(b=(c=3))),即是,b中的值是(c=3)这个子表达式的值,而不是c的值。对于基本类型的赋值,为值的复制,如a=b;把b的值复制到a,a、b中所保存的为相等值的两个不同副本,在该赋值运算之后,如果修改a的值不会影响到b,同理,修改b的值,也不会影响到a的值。...

2022-07-15 10:22:33 80

原创 三分钟教你用Java做面向对象的设计

这章就进入了对Java面向对象的学习,这章我会为大家讲述关于类的相关知识。格式如下classexendimplement几点说明(1)类定义修饰符。类定义修饰符为类声明中可选部分;如定义性质(包括abstract、final)和访问权限(如public或默认),后续我会讲解。(2)extend。extend为类声明中可选部分,用于说明类的父类;一般形式为extend。implement为类声明中可选部分,用于说明类的接口。...

2022-07-15 09:50:52 743

原创 给32位系统装8g内存条能用吗?为什么?

关于32位和64位,这个概念一直让人比较懵。在买电脑的时候,我们看到过32位和64位CPU。下软件的时候,我们也看到过32位或64位的软件。就连装虚拟机的时候,我们也看过32位和64位的系统。在写代码的时候,我们的数值,也可以定义为int32或者int64。我们当然很清楚,装软件的时候,一般64位的系统就选64位的软件,肯定不出错,但是这又是为什么呢?既然CPU,软件,操作系统,数值大小都有32位和64位,他们之间就可以随意组合成各种问题,比如32位的系统能装64位的软件吗?...

2022-07-14 13:09:07 947

原创 使用Java和Python进行数据统计和分析

Java 和 Python 是当今最流行的两种计算机语言。两者都非常成熟,并提供了工具和技术生态系统,帮助我们解决数据科学领域出现的挑战性问题。每种语言都各有优势,我们要知道什么时候应该使用哪种工具,或者什么时候它们应该协同工作相互补充。Python 是一种动态类型语言,使用起来非常简单,如果我们不想接触复杂的程序,它肯定是进行复杂计算的首选语言。Python 提供了优秀的库(Pandas、NumPy、Matplotlib、ScyPy、PyTorch、TensorFlow 等)来支持对数据结构或数组的逻辑。

2022-07-14 11:41:18 3377

原创 Java服务假死后续之内存溢出

Java服务假死的原因是使用了Guava缓存,30分钟的有效期导致Full GC无法回收内存。经过优化后,已经不再使用Guava缓存,实时查询数据。从短期效果来看,确实解决了无法回收内存的问题,但是服务运行几天后,发现内存又逐渐被占满,Full GC后只能回收一小部分。从上图可以看出,一次Full GC后,老年代基本上没有回收多少内存,占比从99.86%降到99.70%。到底是什么对象占据这么大的内存,并且无法被JVM垃圾回收呢。...

2022-07-14 11:32:12 130

原创 java SpringBoot登录验证token拦截器

用户访问接口验证,如果用户没有登录,则不让他访问除登录外的任何接口。1.前端登录,后端创建token(通过JWT这个依赖),返给前端;2.前端访问其他接口,传递token,后端判断token存在以或失效3.失效或不存在,则返回失效提示,前端根据接口返回的失效提示,让其跳转到登录界面注解的作用说明@Target代表此注解,能@到哪些代码上返回值-全局异常类定义程序员使用:方法不加注解,测试程序员使用:加上,调用通过,注解拓展:从请求中获取token定义2个注解,1个用于 任何接口都能访问 ....

2022-07-14 11:14:01 4524 1

原创 Java实现 10 万+并发去重,持续优化

对于一些用户 请求 ,在某些情况下是可能 重复 发送的,如果是查询类操作并无大碍,但其中有些是涉及写入操作的,一旦重复 了,可能会导致很严重的后果,例如交易的接口如果 重复请求可能会重复下单。重复的场景有可能是:本文讨论的是如果在服务端优雅地统一处理这种情况,如何禁止用户重复点击等客户端操作不在本文的讨论范畴。...

2022-07-14 10:58:41 402

原创 快速尝鲜:RabbitMQ 搭建完就得用起来

在项目真正开始之前我们先来简单介绍下 RabbitMQ 的工作流程:环境:SpringBoot 复制代码复制代码本项目以直连交换机为例,至于其他的交换机类型将在后文中给出详细介绍。复制代码复制代码我们先启动程序,在浏览器访问下http://127.0.0.1:9001/sendMessage报错如下:我们之前已经给该用户分配过权限了,如果之前未分配,直接在客户端中配置: 之所以访问不到,是因为我们使用...

2022-07-14 10:47:55 61

原创 好评力荐Spring生态全家桶笔记,Java程序员人手一份

本篇将会带领大家从基础一直学习到SpringBoot源码层面!其中涵盖了Spring MVC、MyBatis(Plus)、Spring Data JPA、Spring Security、Quartz等一系列主流框架,同时还整合了一线互联网大厂常用技术与中间件等等内容!...

2022-07-14 10:36:42 50

原创 RabbitMQ 补偿机制、消息幂等性解决方案

先看这么几个面试题:消息确认包括主要 生产者发送确认 和 消费者接受确认 ,因为发送消息的过程中我们是无法确认消息是否能路由等,一旦消息丢失我们就无法处理,所以需要确认消息,避免消息丢失。我们知道生产者与消费者是完全隔离的,不做任何配置的情况下,生产者是不知道消息是否真正到达 RabbitMQ,也就是说消息发布操作不返回任何消息给生产者。那么怎么保证我们消息发布的 可靠性投递 ?有以下几种常用机制。 由于之前的文章对上面都有过介绍,所以这里不一一介绍,而一般采用的方式就是 发布者确认模式(生产者确认模式)

2022-07-14 10:24:55 106

原创 聚合支付系统的设计与实现

支付中心系统对内为各个业务线提供统一的支付、退款等服务,对外对接三方支付或银行服务实现资金的流转。

2022-07-14 10:11:12 3212 1

空空如也

空空如也

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

TA关注的人

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