Java
文章平均质量分 66
半城风花半城雨
Build code, build dream
展开
-
Java基础关键知识点总结
面试时需掌握的重要Java基础知识点原创 2023-01-23 21:54:37 · 750 阅读 · 1 评论 -
Springboot JPA update语句的返回值
如何获取jpa update语句中更新记录的真实数量原创 2022-01-05 16:30:32 · 5555 阅读 · 0 评论 -
Java的Fork-Join框架
最近在看Java stream中的parallel()方法,此方法能够将一个串行的任务流转化为并行处理以加快其处理效率。这一点非常有趣,在看过源码后发现是其使用了Java 1.7提供的Fork-Join框架在发挥作用。今天我们来说明一下Fork-Join框架的作用。Fork-Join是干啥的众所周知,有一组任务需要处理,如果没有明确的顺序先后的要求,并行处理会比串行处理快很多,更好的利用了CPU的性能。而Java中的Fork-Join框架类似于大数据处理方案中的map-reduce的分治思想:它原创 2021-11-10 23:54:59 · 5754 阅读 · 0 评论 -
兄弟间的较量 -- ArrayList与LinkedList
日常开发的过程中我们会经常使用到List结构,很多兄弟就直接开始写些这样的语句:List<Xxx> x = new ArrayList<>();。但 List 的实现方式有很多种,在不用保证线程安全的情况下还有一种通用实现方式LinkedList。我们今天通过源码从多个维度来理解它们的原理、比较它们的异同。我信奉一个观点:不拿源码说话就没有底气,如果本文与其他文章的结论相左,请以我为准。当然,我也欢迎大家提出宝贵建议和意见。本文用到的源码我会加入中文注释以便理解。ArrayLi原创 2020-06-15 13:23:38 · 206 阅读 · 0 评论 -
Java 8 新日期时间 API ( 下 ) - 格式化
Java 8 对曾经的格式化方案 java.text.SimpleDateFormat 也不太满意,重新创建了一个 java.time.format 包,该包下包含了几个类和枚举用于格式化日期时间。java.time.format 包java.time.format 包提供了以下几个类用于格式化日期时间类说明DateTimeFormatter用于打印和解析日期时间对象的格式化程序DateTimeFormatterBuilder创建日期时间格式化样式的构建器Decim原创 2020-05-12 23:08:06 · 391 阅读 · 0 评论 -
Java 8 新日期时间 API ( 中 ) - 时区日期时间
上一章节 Java 8 新日期时间 API ( 上 ) - 本地日期时间 我们对 Java 8 重新设计的日期时间 API 做了一些基础的介绍,同时详细介绍了和本地时间有关的几个类 LocalDateTime 、LocalDate 和 LocalTime 。这三个类有选择的隐藏了时区的处理。它们内部会使用操作系统当前的时区。因此在我们使用中会将其当作不包含时区处理。与此同时,Java 在 java.time 包中也提供了几个类用于处理需要关注时区的日期时间 API: java.time.ZonedDat原创 2020-05-10 23:23:06 · 319 阅读 · 0 评论 -
Java 8 新日期时间 API ( 上 ) - 本地日期时间
作为开发者,经常需要处理日期时间。如果你跟随者 Java 5 一路走来,那么一定会对 java.util.Date 、java.util.Calendar 、java.util.GregoiranCalendar 和 java.text.SimpleDateFormat 四大类非常熟悉,它们分别用于处理日期、日历、日历表示、日期时间格式化。这四个类,对于编程老人来讲,应该是习惯了,但对于编程新人来讲,就有好多疑问,有好多陷阱和坑等着它们跳,比如非线程安全:java.util.Date 并不是线程安全的原创 2020-05-10 19:03:07 · 182 阅读 · 0 评论 -
Java密码验证之passay库
写这篇文章主要基于2点:我在百度上没有搜索到关于passay库的文章,因此我希望能通过此文章来弥补这一块的空缺。“不要重复造轮子”是十分重要的。现在开始领略passay的魅力吧!在passay对应的maven仓库中,一句话形容了passay的作用:Library for checking that a password complies with a custom set of rul...原创 2020-01-29 22:07:56 · 61147 阅读 · 0 评论 -
Web服务Docker化的优势
docker能够简化配置一致的示例的发布流程,很好的应对了负载波动较大的情况;同时它比虚拟机更加轻量级,成本更为低廉。诸多优势下,它终于成为了新时代的宠儿。原创 2020-01-04 17:57:46 · 60183 阅读 · 0 评论 -
Java基础——方法参数传值问题
这篇文章我会使用简单的类比并且辅以代码示例的方式来阐述方法参数的传值问题。你只需要知道8种基本数据类型以及引用类型在JVM中的存储结构即可。如果你忘记了,没关系,我们先复习一下:8种基本数据类型分别为byte,short,int,long,float,double,char,boolean。它们在JVM中会直接以数值的形式直接存储于栈(Stack)中,而其他类型为引用类型,类型的实体存储于堆(...原创 2020-01-04 17:43:59 · 58937 阅读 · 0 评论 -
Springboot 2.x + JPA 配置多数据源实战
在进行web开发的时候,有时候会出现需要调用另一个数据库的需求。这篇文章将教会你如何达到此目的,并提供了一键即用的完整代码给各位尝试。原创 2019-12-28 16:15:34 · 65572 阅读 · 0 评论 -
maven之packaging标签
在使用Java web开发的后端工程师们大部分都会使用Maven作为项目构建以及编译的工具,微服务和大中台当道的今天,我们会更加关注maven的细节,今天我们来讲一讲`<packaging>`标签的作用。原创 2019-12-25 23:06:01 · 87533 阅读 · 1 评论 -
Spring之attribute与parameter对比
前阵子在学习拦截器的时候,有一个非常有趣的应用:计算API从调用到返回的耗时。这个时候我们通常在preHandle()方法的HttpServletRequest参数对象上调用setAttribute()方法,将其实时间存入,在afterCompletion()方法中再使用getAttribute()方法读出。这个时候我在想:attribute与parameter都能通过get方法从HttpServ...原创 2019-12-23 23:09:58 · 60012 阅读 · 0 评论 -
Spring拦截器(Interceptor)的运用
拦截器是一种面向切面编程的设计实现,它能够方便的在API调用前后进行记录、修改request/response等操作,大大的简化了代码,提升代码复用性的同时降低了其耦合度,这是Spring给出的一种非常棒的设计模式!原创 2019-12-23 00:40:51 · 60355 阅读 · 0 评论 -
Springboot 2.x中server.servlet.context-path的运用
今天在开发项目的时候遇到了请求不通API的问题,最开始以为是server.servlet.context-path配置导致的问题,最终发现是由于AWS端口未开放/监听导致的connection refuse。虽然如此,仍然想记录一下server.servlet.context-path的作用。功能这个配置能够设置项目中的所有API的上下文路径(URL的一部分),与@RequestMapping...原创 2019-12-16 17:53:17 · 72564 阅读 · 3 评论 -
Java浅克隆与深克隆
通常我们想复制一个对象,可以自己new出一个对象,并对相应的属性存入数据以实现克隆的目的。可是当属性较多时,这样的方式会十分麻烦。然而Java早已考虑好一切,我们知道,所有的对象都有一个共同的父类Object,而Object类中已经定义好了protected修饰的clone()方法,今天我们从这个方法开始,讲述Java的浅克隆与深克隆。浅克隆与深克隆的区别**浅克隆:**复制对象时仅仅复制对象...原创 2019-11-11 00:41:22 · 64493 阅读 · 0 评论 -
Java设计模式之原型模式
在有些系统中,存在大量相同或相似对象的创建的工作,如果用传统的构造函数来创建对象,会比较复杂且耗时耗资源,用原型模式生成对象就很高效。原型模式属于对象的创建模式通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。原创 2019-11-10 19:01:21 · 59659 阅读 · 0 评论 -
JVM内存结构
Java虚拟机运行时数据区域被分为五个区域:堆(Heap)、栈(Stack)、方法区(Method Area)、本地方法栈(Native Stack)、程序计数器(Program Count Register)。本次将根据这5个子模块详细介绍JVM的内存结构。原创 2019-11-09 17:24:58 · 59593 阅读 · 0 评论 -
Java设计模式之单例模式
单例模式是常用的23种设计模式中最简单也是最常用的模式。“隐藏构造方法并提供获得类的实例的方法来达到整个系统中只有此类的唯一的实现对象”是单例的核心。饿汉式一开始就创建了资源,而懒汉式虽然一开始节约了资源,但因为锁的原因导致每次访问的时候效率降低;两种方式各有利弊。原创 2019-11-06 22:55:03 · 59638 阅读 · 0 评论 -
Java基础之抽象类与接口
在工作中我们并不会经常用到抽象类,或者即使使用到了也只是在遵从整个项目的架构而在生成接口。例如我们经常看到许多公司的项目中大量service实际上没有多种实现,却将Service分为了service抽象类和implement实现类两个文件。这是一件需要权衡利弊的问题,而不是应该遵从大流。先一起来看一下这些抽象的方法与类的使用吧抽象类作用:如果父类的方法本身不需要实现任何功能,仅仅是为了定义方...原创 2019-11-04 14:11:42 · 64546 阅读 · 0 评论 -
浅谈@Bean与@Compoment的异同之处
在Spring的历史中,我们曾经使用XML文件进行各种文件的装载与注入,但是由于XML需要额外的文件去维护,导致了代码的可读性较低、程序员编写代码较慢的问题。注解的诞生解决了很多问题。@Compoment介绍此注解作用于一个类上,表明了此类将作为一个组件类,Spring需要为此类创建一个bean。目前@Controller @Service @Repository都内含@Compoment...原创 2019-10-30 22:20:35 · 68141 阅读 · 2 评论 -
使用ResponseEntity处理API返回
最近在做Google AMP mail的时候遇到了一个问题,在调用/unsub(退订)接口的时候需要向google client返回特定的ResponseHeader。但是项目使用的是Springboot 2.x,通常使用@RestController修饰API层,无法做到动态的返回特殊的Header。那么如何对一些特殊的API做一些特别的返回值封装呢?Spring framework中的Resp...原创 2019-10-30 00:34:29 · 74980 阅读 · 1 评论 -
七个开源的 Spring Boot 前后端分离项目
前后端分离已经在慢慢走进各公司的技术栈,根据松哥了解到的消息,不少公司都已经切换到这个技术栈上面了。即使贵司目前没有切换到这个技术栈上面,松哥也非常建议大家学习一下前后端分离开发,以免在公司干了两三年,SSH 框架用的滚瓜烂熟,出来却发现自己依然没有任何优势!其实前后端分离本身并不难,后段提供接口,前端做数据展示,关键是这种思想。很多人做惯了前后端不分的开发,在做前后端分离的时候,很容易带进来一...转载 2019-10-15 18:12:01 · 1138 阅读 · 0 评论 -
ThreadLocal原理(简单易懂)
最近公司开展了一个新项目,使用token达到API的无状态,其中有一个功能,是在timeline上展示不同的action是由哪个user操作的。这个时候我们需要在service中获得token信息,但是使用参数传值会十分冗余,此时ThreadLocal就发挥了很好的作用。原创 2019-10-14 13:00:38 · 60458 阅读 · 0 评论