- 博客(36)
- 资源 (1)
- 收藏
- 关注
原创 Redis Set中 SRANDMEMBER 详解
详解Redis的Set类型中REANDMEMBER方法的使用。包括count为负数的情况;且提供实际案例参考
2022-12-18 02:58:07
980
原创 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
5793
原创 MySQL ‘IN‘ ‘IS NULL‘ ‘IS NOT NULL‘ 到底走不走索引
看了很多篇文章,关于走不走索引这个问题真是众说纷纭,不如自己实践一波来得准。先说我的mysql版本为5.7;再说结论:有时候走,有时候不走。这个基于MySQL自身的查询优化。直接上例子!准备工作:首先创建一个students表,内含自增主键id,在name和school_id两列上建立多列索引,最后还有一个普通列age;CREATE TABLE `students` ( `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, `nam
2021-08-05 18:33:46
8365
原创 兄弟间的较量 -- ArrayList与LinkedList
日常开发的过程中我们会经常使用到List结构,很多兄弟就直接开始写些这样的语句:List<Xxx> x = new ArrayList<>();。但 List 的实现方式有很多种,在不用保证线程安全的情况下还有一种通用实现方式LinkedList。我们今天通过源码从多个维度来理解它们的原理、比较它们的异同。我信奉一个观点:不拿源码说话就没有底气,如果本文与其他文章的结论相左,请以我为准。当然,我也欢迎大家提出宝贵建议和意见。本文用到的源码我会加入中文注释以便理解。ArrayLi
2020-06-15 13:23:38
231
原创 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
427
原创 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
343
原创 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
199
原创 什么是Email Bounced(被退回)
被Bounced的电子邮件是指收件人的邮件服务器拒绝并返回给原始发件人的邮件。邮件被退回表示您的邮件尚未送达,发生这种情况时,邮件应用会收到未送达的通知。退回电子邮件有两种不同类型:硬退件和软退件。软退件(Soft Bounce)电子邮件可能导致软退件的原因有很多。这些退回的电子邮件通常是由于临时传输问题引起的,例如:收件人的邮箱已满。 电子邮件太大。 您要发送到的电子邮件帐户已被...
2020-03-14 17:07:43
9071
原创 Redis各数据类型最大储存量
Strings:最大512MBLists: 2^32-1个数据 (4294967295)Sets: 2^32-1个数据 (4294967295)Hashes:2^32-1个键值对 (4294967295)Sorted sets:与Sets类型类似,没有明确说明。应该也是2^32-1个数据Reference: https://redis.io/topics/data-types...
2020-03-11 23:58:40
1485
原创 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
61226
原创 Web服务Docker化的优势
docker能够简化配置一致的示例的发布流程,很好的应对了负载波动较大的情况;同时它比虚拟机更加轻量级,成本更为低廉。诸多优势下,它终于成为了新时代的宠儿。
2020-01-04 17:57:46
60239
原创 Java基础——方法参数传值问题
这篇文章我会使用简单的类比并且辅以代码示例的方式来阐述方法参数的传值问题。你只需要知道8种基本数据类型以及引用类型在JVM中的存储结构即可。如果你忘记了,没关系,我们先复习一下:8种基本数据类型分别为byte,short,int,long,float,double,char,boolean。它们在JVM中会直接以数值的形式直接存储于栈(Stack)中,而其他类型为引用类型,类型的实体存储于堆(...
2020-01-04 17:43:59
58979
原创 Centos7安装mongoDB
1. 配置MongoDB的yum源vim /etc/yum.repos.d/mongodb-org-3.4.repo进入编辑模式后添加以下内容:[mongodb-org-3.4] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64...
2019-12-29 01:20:19
59668
原创 Springboot 2.x + JPA 配置多数据源实战
在进行web开发的时候,有时候会出现需要调用另一个数据库的需求。这篇文章将教会你如何达到此目的,并提供了一键即用的完整代码给各位尝试。
2019-12-28 16:15:34
65596
原创 maven之packaging标签
在使用Java web开发的后端工程师们大部分都会使用Maven作为项目构建以及编译的工具,微服务和大中台当道的今天,我们会更加关注maven的细节,今天我们来讲一讲`<packaging>`标签的作用。
2019-12-25 23:06:01
88443
1
原创 Spring之attribute与parameter对比
前阵子在学习拦截器的时候,有一个非常有趣的应用:计算API从调用到返回的耗时。这个时候我们通常在preHandle()方法的HttpServletRequest参数对象上调用setAttribute()方法,将其实时间存入,在afterCompletion()方法中再使用getAttribute()方法读出。这个时候我在想:attribute与parameter都能通过get方法从HttpServ...
2019-12-23 23:09:58
60048
原创 Spring拦截器(Interceptor)的运用
拦截器是一种面向切面编程的设计实现,它能够方便的在API调用前后进行记录、修改request/response等操作,大大的简化了代码,提升代码复用性的同时降低了其耦合度,这是Spring给出的一种非常棒的设计模式!
2019-12-23 00:40:51
60396
原创 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
72857
3
原创 Java浅克隆与深克隆
通常我们想复制一个对象,可以自己new出一个对象,并对相应的属性存入数据以实现克隆的目的。可是当属性较多时,这样的方式会十分麻烦。然而Java早已考虑好一切,我们知道,所有的对象都有一个共同的父类Object,而Object类中已经定义好了protected修饰的clone()方法,今天我们从这个方法开始,讲述Java的浅克隆与深克隆。浅克隆与深克隆的区别**浅克隆:**复制对象时仅仅复制对象...
2019-11-11 00:41:22
64507
原创 Java设计模式之原型模式
在有些系统中,存在大量相同或相似对象的创建的工作,如果用传统的构造函数来创建对象,会比较复杂且耗时耗资源,用原型模式生成对象就很高效。原型模式属于对象的创建模式通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。
2019-11-10 19:01:21
59682
原创 JVM内存结构
Java虚拟机运行时数据区域被分为五个区域:堆(Heap)、栈(Stack)、方法区(Method Area)、本地方法栈(Native Stack)、程序计数器(Program Count Register)。本次将根据这5个子模块详细介绍JVM的内存结构。
2019-11-09 17:24:58
59615
原创 Java设计模式之单例模式
单例模式是常用的23种设计模式中最简单也是最常用的模式。“隐藏构造方法并提供获得类的实例的方法来达到整个系统中只有此类的唯一的实现对象”是单例的核心。饿汉式一开始就创建了资源,而懒汉式虽然一开始节约了资源,但因为锁的原因导致每次访问的时候效率降低;两种方式各有利弊。
2019-11-06 22:55:03
59657
原创 Java基础之抽象类与接口
在工作中我们并不会经常用到抽象类,或者即使使用到了也只是在遵从整个项目的架构而在生成接口。例如我们经常看到许多公司的项目中大量service实际上没有多种实现,却将Service分为了service抽象类和implement实现类两个文件。这是一件需要权衡利弊的问题,而不是应该遵从大流。先一起来看一下这些抽象的方法与类的使用吧抽象类作用:如果父类的方法本身不需要实现任何功能,仅仅是为了定义方...
2019-11-04 14:11:42
64590
原创 浅谈@Bean与@Compoment的异同之处
在Spring的历史中,我们曾经使用XML文件进行各种文件的装载与注入,但是由于XML需要额外的文件去维护,导致了代码的可读性较低、程序员编写代码较慢的问题。注解的诞生解决了很多问题。@Compoment介绍此注解作用于一个类上,表明了此类将作为一个组件类,Spring需要为此类创建一个bean。目前@Controller @Service @Repository都内含@Compoment...
2019-10-30 22:20:35
68313
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
75263
1
转载 七个开源的 Spring Boot 前后端分离项目
前后端分离已经在慢慢走进各公司的技术栈,根据松哥了解到的消息,不少公司都已经切换到这个技术栈上面了。即使贵司目前没有切换到这个技术栈上面,松哥也非常建议大家学习一下前后端分离开发,以免在公司干了两三年,SSH 框架用的滚瓜烂熟,出来却发现自己依然没有任何优势!其实前后端分离本身并不难,后段提供接口,前端做数据展示,关键是这种思想。很多人做惯了前后端不分的开发,在做前后端分离的时候,很容易带进来一...
2019-10-15 18:12:01
1162
原创 Macbook版Intellij IDEA 配置 Code Style
先贴上Google的官方code style文档Google Java Style GuideGoogle 在 GitHub 上有一个专门放置编码规范的仓库,地址在:https://github.com/google/styleguide现在有了这两样东西,就可以开始配置了。在git仓库里找到 intellij-java-google-style.xml 文件,打开它,然后copy到本地。...
2019-10-15 16:28:11
65845
原创 HTTP和HTTPS协议
今天让我们一起研究一下HTTP和HTTPS这两种常用的协议。HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容...
2019-10-15 16:11:59
59805
2
转载 Please stop with "I'm too busy"
We’re all just so “busy” these days. “Slammed” in fact. “Buried.” Desperately “trying to keep our heads above water.” “Overloaded”Busy is a catch all term. When we say “busy,” we’re really trying t...
2019-10-14 18:39:14
1122
原创 ThreadLocal原理(简单易懂)
最近公司开展了一个新项目,使用token达到API的无状态,其中有一个功能,是在timeline上展示不同的action是由哪个user操作的。这个时候我们需要在service中获得token信息,但是使用参数传值会十分冗余,此时ThreadLocal就发挥了很好的作用。
2019-10-14 13:00:38
60494
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人