自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Tomcat部署项目的三种方式

2020-01-12 01:12:07

阅读数 35

评论数 0

转载 BIO、NIO、AIO

一、BIO、NIO、AIO的区别 BIO 就是传统的java.io包,它是基于流模型实现的,交互的方式是同步、阻塞方式,也就是说在读入输入流或者输出流时,在读写动作完成之前,线程会一直阻塞在那里,它们之间的调用时可靠的线性顺序。它的有点就是代码比较简单、直观;缺点就是 IO 的效率和扩展性很低,...

2020-01-05 22:33:12

阅读数 16

评论数 0

原创 Tomcat架构图

这里是Tomcat的基本架构图~~

2020-01-02 22:47:05

阅读数 25

评论数 0

转载 Spring WebApplicationInitializer SPI

现在JavaConfig配置方式在逐步取代xml配置方式。而WebApplicationInitializer可以看做是Web.xml的替代,它是一个接口。通过实现WebApplicationInitializer,在其中可以添加servlet,listener等,在加载Web项目的时候会加载这个...

2019-12-29 18:17:07

阅读数 15

评论数 0

原创 8种日志级别

优先级从高到低依次为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL。 ALL最低等级的,用于打开所有日志记录。 TRACE很低的日志级别,一般不会使用。 DEBUG指出细粒度信息事件对调试应用程序是非常有帮助的,主要用于开发过程中打印一些运行信息。 ...

2019-11-26 22:26:20

阅读数 27

评论数 0

原创 brew 安装MongoDB

问题: 用 brew 来安装 mongodb 报错brew install mongodb 提示 Error: No available formula with the name “mongodb” 具体是这样: 看了一下原因应该是在 homebrew 里找不到 mongodb 这个名字...

2019-11-24 10:12:38

阅读数 42

评论数 0

原创 MacOS 微信截图 无法正常使用

1、打开系统偏好设置,找到安全与隐私 2、点击隐私,找到屏幕录制,将截图软件添加进去即可

2019-11-16 21:48:30

阅读数 1305

评论数 1

原创 Mac 清除dns缓存

sudo dscacheutil -flushcache

2019-11-07 21:56:31

阅读数 99

评论数 0

原创 idea去掉thymeleaf 模板变量取值时显示的红色波浪线

idea去掉thymeleaf 模板变量取值时显示的红色波浪线: 把这个检查去掉就行了。

2019-10-28 22:58:02

阅读数 111

评论数 0

原创 Provisional headers are shown

provisional headers are shown出现的情况有这么几种: 跨域,请求被浏览器拦截 请求被浏览器插件拦截 服务器出错或者超时,没有真正的返回 强缓存from disk cache或者from memory cache,此时也不会显示 ...

2019-10-28 22:32:12

阅读数 8

评论数 0

原创 IDEA 2019 修改中文字体

设置有两种方式: 1、在Editor>font 里面设置默认字体 2、在Editor>ColorSchemeFont里面设置自己的字体 修改后就更加的好看了

2019-10-24 11:36:40

阅读数 1342

评论数 0

原创 @RequestParam name和value属性的区别

RequestParam内部有4个参数: 1、String name; 2、String value; 3、boolean required; 4、String defaultValue; 源码中name的别名是value,value的别名是name, 所以说name和value两个属性基...

2019-10-12 12:31:19

阅读数 131

评论数 0

转载 String.format()的用法

问题 在开发的时候一段字符串的中间某一部分是需要可变的 比如一个Textview需要显示”XXX用户来自 上海 年龄 21 性别 男” 其中的 XXX 是用户名 每个用户也是不一样的 地区 上海 为可变的string数据 年龄 21 为可变的int数据 性别 男 为可变的string数据 遇到这...

2019-09-28 17:42:48

阅读数 12

评论数 0

转载 技术开发人员的技术思维

应当如何面对线上的异常/故障? 什么是真正的技术能力? 不要造轮子 去提升看问题的高度 学会总结 思考的是自己过去的种种不足、思考的是一些现在看来之前错误的想法、思考的是如何成为一个更好的技术人,将这一些思考分享给看到这些文字的每个人,共勉。 应当如何...

2019-09-24 22:52:58

阅读数 14

评论数 0

转载 Dubbo SPI

spi 是啥? spi,简单来说,就是service provider interface,说白了是什么意思呢,比如你有个接口,现在这个接口有 3 个实现类,那么在系统运行的时候对这个接口到底选择哪个实现类呢?这就需要 spi 了,需要根据指定的配置或者是默认的配置,去找到对应的实现类加载进来,...

2019-09-23 11:11:49

阅读数 5

评论数 0

转载 Mybatis源码使用的9种设计模式

虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开发中很少遇到,Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式。 Mybatis至少遇到了以下的设计模式的使用: 1、Builder模式,例如SqlSessionFactoryB...

2019-09-23 00:41:25

阅读数 11

评论数 0

转载 Oauth2 向客户端授权的四种模式

客户端必须得到用户的授权(authorization grant),才能获得令牌(access token)。OAuth 2.0定义了四种授权方式。 授权码模式(authorization code) 简化模式(implicit) 密码模式(resource owner password c...

2019-09-21 14:40:46

阅读数 234

评论数 0

转载 OAuth2 认证流程详解

很多网站、APP 弱化甚至没有搭建自己的账号体系,而是直接使用社会化登录的方式,这样不仅免去了用户注册账号的麻烦、还可以获取用户的好友关系来增强自身的社交功能。 比如我们可以使用微博登录简书,简书会自动将你的微博头像设置为你的简书头像,将你的微博昵称设置为你的简书昵称,甚至还可以获取你微博中的好...

2019-09-21 12:54:03

阅读数 701

评论数 0

转载 分布式系统解决接口幂等性

1. 接口调用存在的问题 现如今我们的系统大多拆分为分布式SOA,或者微服务,一套系统中包含了多个子系统服务,而一个子系统服务往往会去调用另一个服务,而服务调用服务无非就是使用RPC通信或者restful,既然是通信,那么就有可能在服务器处理完毕后返回结果的时候挂掉,这个时候用户端发现很久没有...

2019-09-19 23:07:13

阅读数 63

评论数 0

原创 Java并发各种WorkQueue

JDK提供的阻塞队列:     ArrayBlockingQueue:一个由数组结构组成的有界阻塞队列,遵循FIFO原则。     PriorityBlockingQueue:一个支持优先级排序的无界阻塞队列。     DelayQueue:一个使用优先级队列实现的无界阻塞队列。     ...

2019-09-17 15:43:36

阅读数 49

评论数 0

转载 JDK线程池:Delayed、ScheduledFuture、RunnableScheduledFuture

Delayed public interface Delayed extends Comparable 一种混合风格的接口,用来标记那些应该在给定延迟时间之后执行的对象。 此接口的实现必须定义一个 compareTo 方法,该方法提供与此接口的 getDelay 方法一致的排序。 通俗...

2019-09-17 00:29:31

阅读数 7

评论数 0

转载 JDK四种线程池

当我们使用 线程池的时候,可以使用 newCachedThreadPool()或者 newFixedThreadPool(int)等方法,其实我们深入到这些方法里面,就可以看到它们的是实现方式是这样的。 public static ExecutorService newCachedThread...

2019-09-16 23:53:56

阅读数 12

评论数 0

转载 Java并发Semaphore工作原理

Semaphore是一种在多线程环境下使用的设施,该设施负责协调各个线程,以保证它们能够正确、合理的使用公共资源的设施,也是操作系统中用于控制进程同步互斥的量。Semaphore是一种计数信号量,用于管理一组资源,内部是基于AQS的共享模式。它相当于给线程规定一个量从而控制允许活动的线程数。 1...

2019-09-16 18:27:15

阅读数 17

评论数 0

转载 Java并发Condition详解

在使用Lock之前,我们使用的最多的同步方式应该是synchronized关键字来实现同步方式了。配合Object的wait()、notify()系列方法可以实现等待/通知模式。Condition接口也提供了类似Object的监视器方法,与Lock配合可以实现等待/通知模式,但是这两者在使用方式以...

2019-09-16 16:52:33

阅读数 19

评论数 0

原创 《Java并发编程的艺术PDF》下载

链接:https://pan.baidu.com/s/1QGG6UqZXICcXXkZKQcgZyw 提取码:mth4

2019-09-16 14:48:30

阅读数 415

评论数 0

转载 Java并发AQS详解

一、概述   谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!   类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的Reen...

2019-09-15 18:07:50

阅读数 16

评论数 0

转载 Synchronized优化(偏向锁、轻量级锁)

一、重量级锁   上篇文章中向大家介绍了Synchronized的用法及其实现的原理。现在我们应该知道,Synchronized是通过对象内部的一个叫做监视器锁(monitor)来实现的。但是监视器锁本质又是依赖于底层的操作系统的Mutex Lock来实现的。而操作系统实现线程之间的切换这就需要...

2019-09-15 00:41:35

阅读数 24

评论数 0

转载 Synchronized实现原理

一、Synchronized的基本使用   Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。 Synchronized的作用主要有三个: 确保线程互斥的访问同步代码 保证共享变量的修改能够及时可见 有效解决重排序问题。 从语法上讲,Sync...

2019-09-14 14:20:44

阅读数 11

评论数 0

转载 HTTPS协议实现原理

前言: 上一篇文章说到HTTP的缺点,并引入了HTTPS,这篇文章来看看HTTPS通信的原理是怎样的。(其实抛去HTTP协议,HTTPS就剩下一个Secure安全协议,可以是SSL或是TLS,我们主要探讨的是这种安全机制是怎么实现的) 因为HTTP有以下三个缺点:无加密,无身份认证,无完整性保...

2019-09-08 02:15:39

阅读数 26

评论数 0

转载 HTTP协议与HTTPS协议

之前做了一个网站的项目,之前的网站用的都是HTTP协议的,这是一个超文本传输协议,这篇文章不说HTTP协议内部是怎么实现的,我只在我之前的基础上,说一些HTTP的缺点以便引进HTTPS协议(超文本传输安全协议),简单理解,它就是安全的HTTP协议。 HTTP是很轻巧方便的协议。但与此同时,HTT...

2019-09-08 01:18:30

阅读数 37

评论数 0

转载 世界上,无论做什么,怕就怕“认真”二字

我特别喜欢跟互联网行业、文娱内容行业的小伙伴吃饭。其中,最喜欢的还是游戏行业的小伙伴,因为他们既属于互联网,又属于内容端。昨天我就有幸跟一位游戏行业的资深策划吃火锅,学到了很多东西。 应这位小伙伴的要求,我无法透露他说的大部分内容,尤其是真实的公司名、人名、产品名。但是,他无意中提到的一个细节,...

2019-08-29 23:18:53

阅读数 37

评论数 0

转载 Java 泛型中的通配符 T,E,K,V,?

1. 先解释下泛型概念 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。Java语言引入泛型的好处是安全简单。 在Java SE 1.5之前,没有泛型的情况...

2019-08-19 22:26:27

阅读数 17

评论数 0

转载 Netty 之 初识netty

一、为什么选择Netty 上一篇文章我们已经了解了Socket通信(IO/NIO/AIO)编程,对于通信模型已经有了一个基本的认识。其实上一篇文章中,我们学习的仅仅是一个模型,如果想把这些真正的用于实际工作中,那么还需要不断的完善、扩展和优化。比如经典的TCP读包写包问题,或者是数据接收的大小,...

2019-08-19 22:11:30

阅读数 22

评论数 0

转载 Netty 之 网络编程基础

一、阻塞IO—Socket Socket又称“套接字”,应用程序通常通过“套接字”向网络发出请求或应答网络请求。 Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个...

2019-08-19 21:45:31

阅读数 16

评论数 0

原创 SpringMVC完整执行流程

2019-08-16 10:35:35

阅读数 17

评论数 0

转载 程序退出码 exit code 分析

当进程因收到信号被终止执行退出后,父进程可以通过调用wait或waitpid得到它的exit code。 我们经常会见到类似如下程序退出信息,但是一直却不知道他们各自代表什么含义。 程序退出示例 程序进程被各信号终止的退出状态码代表含义总结如下: 进一步总结如下: ...

2019-08-11 13:31:36

阅读数 265

评论数 0

原创 深入理解JVM之 09——JVM 指令详解

引言: java虚拟机(java运行时的环境),通过JDK中的编译程序(javac)将java文件编译成.class字节码文件,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。 JVM指令由一个字节长度的,代表着某种特定操作含义的数字(操作码)以及跟...

2019-08-10 21:28:37

阅读数 50

评论数 0

原创 idea 返回上次光标所在位置

IDEA 快速返回上次查看代码的位置 在IDEA中可以使用快捷键返回,默认是ctrl+alt+方向键(Windows系统) 在IDEA中查看当前设置的快捷键 (Back和Forward) (Mac系统) 注意:如果快捷键不生效,很有可能是和其他软件快捷键冲突,解决冲突即可。 ...

2019-08-08 23:47:34

阅读数 1290

评论数 0

转载 Zookeeper 登录安全验证

前言 由于之前的服务都是在内网,Zookeeper集群配置都是走的内网IP,外网不开放相关端口。最近由于业务升级,购置了阿里云的服务,需要对外开放Zookeeper服务。 问题 Zookeeper+dubbo,如何设置安全认证?不想让其他服务连接Zookeeper,因为这个Zookeeper...

2019-08-08 21:42:11

阅读数 1013

评论数 0

转载 深入理解JVM之 10——深入理解G1垃圾收集器

引言 G1(Garbage First)垃圾收集器是当今垃圾回收技术最前沿的成果之一。早在JDK7就已加入JVM的收集器大家庭中,成为HotSpot重点发展的垃圾回收技术,JDK9 默认就是使用的G1垃圾收集器。 不同于其他的分代回收算法、G1最大的特点是引入分区的思路,弱化了分代的概念,合理...

2019-08-04 19:15:21

阅读数 38

评论数 0

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