自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

阿瞒的博客

一个找到自己的小人物

  • 博客(84)
  • 收藏
  • 关注

原创 博客转移了,请移步

最近拾起了以前的github page搭建的个人博客,如果继续关注我的博客,请移步:我的博客

2019-09-09 09:09:01 251

原创 Java动态代理---只代理指定方法

Java动态代理具体的方法就不说了,网上不知道有多少,我就不献丑了起因在Spring中,我们使用注解的方法实现事务时,事务时可以使用在指定的方法上,很显然,事务的实现是通过代理的方式,在Spring中AOP主要是由Java动态代理和cglib实现,区别在于被代理的类是否实现接口,那么,具体是怎么指定方法实现代理的.我还没有看这方面的源码,所以暂时就自己想到的方法写一写,等看了源码后再写一版...

2019-08-19 19:23:34 2010 1

原创 记一次Leetcode解题--最长斐波那契子序列的长度--dp

题目https://leetcode-cn.com/problems/length-of-longest-fibonacci-subsequence/解题两种办法:暴力破解, 这个没什么好说的,记得优化二分查找的范围动态规划, dp有几种写法,先看代码:class Solution { public static int lenLongestFibSubseq(int[]...

2019-07-16 17:37:37 203

原创 git clone速度慢解决

从多个博客中总结来的效果先说一下效果20k左右 -> 200k左右虽然200也不快,但有总比没有好办法网上很多办法,先说一下知乎看到的除了间接提速的办法在git clone url后加上--depth=1,原因是,git clone默认会下载该项目所有版本,加上这个命令后只下载最新版本直接提速其实就是大多数博客中的,但有些有用,有些没有,先说一下我的电脑,Archlin...

2019-04-26 21:08:40 413

原创 深究synchronized

前情如何使用这个关键字和类锁对象锁什么的,老生常谈了,就不在这里说了,先声明,这篇博客的内容只能算是我从很多博客中总结出的自己的观点,无法保证全部是自己的话,也无法保证绝对正确性,望以谨慎正文存在synchronized在一个程序中以字节码中的指令的形式存在,使用javap工具可以看到synchronized关键字在字节码文件中的存在形式,如果是同步代码块,是monitorenter和m...

2019-04-07 20:05:29 121

原创 Linux网络IO模型和多路复用技术

本文内容有借鉴《Netty权威指南》的部分内容Linux网络IO模型首先说一下一个文件描述符(file descriptor)fd的概念,在Linux中,一切都可以视作文件,对一个文件的读写操作就会调用内核提供的系统命令,返回一个fd,使用socket也会有fd,描述符就是一个数字,指向核内的一个结构体(文件路径,数据区等一些属性)阻塞IO模型最常用的IO模型,也是默认情况下的,详细说...

2019-03-27 09:58:09 197

原创 Java堆外内存

前最近才接触到堆外内存的概念,为什么要使用堆外内存,最大的原因应该就是少一次内存拷贝,因为如果想在内核空间进行数据处理,就必须将数据从Java堆中拷贝到内核控件中,但是Java提供了一种更加直接的方法,就是直接在堆外(内核)申请内存,存储数据,减少数据拷贝,这也就是所谓的零拷贝(zero-copy)APINIO包下的ByteBuffer下的allocateDirect是帮助我们申请直接内存的...

2019-03-14 17:29:17 338

原创 Java -- protected关键字

疑惑准备面试时,突然想到这个关键字,对于我来说,这个修饰符是最少用的,剩下三个也算是经常用了,但对于protected是真的不熟悉,今天看了详解,还是很懵,多看了几遍,解惑先看一般的介绍被 protected 修饰的成员对于本包和其子类可见,其实要分多种情况先我觉得需要解释一下什么叫可见,并没有严格的定义,但是从我对一些示例的总结,可以看出点端倪,在我的理解中,可见是指调用处,什么意思呢...

2019-03-09 20:36:50 838

原创 ThreadPoolExecutor线程池如何实现计时回收空闲线程

疑惑说到线程池,其实已经看过很多遍源码,不过大多是复用和阻塞队列获取时的部分,今天突然想到,线程池有个最大空闲时间,即空闲线程最大存活时间,我想知道怎么实现计时的,难道是每一个worker类中一个计时器吗?解惑找了很多博客,都没有找到,只能自己在源码里找了,意外地好找,因为用到keepAliveTime这个变量,整个ThreadPoolExecutor.java中只有一个方法,只看这个方法就...

2019-03-05 16:10:51 8064

原创 HTTPS理解

仅一家之言声明网上关于HTTPS的讲解相当多,有些图文并茂,我也是同样学习的,这里只是记录一下自己的理解,避免以后忘记,想要学习HTTPS的还是别看了正文直接进入正题众所周知,HTTP是明文传输,一般的抓包都是随便抓,为了保证传输信息的安全性,我们需要对传输信息进行加密,所谓加密,一定是需要加密算法和解密算法对称加密,最简单的加密,也是最容易想到的,就是一般的数据变换,按理...

2019-03-03 11:00:09 258

原创 Netty ChannelPipeline执行过程理解

仅为一家之言,慎理解今天将以前写的程序重新拿出来看了一下,发现对于netty有了新的疑惑,编解码器的执行到底是怎么样的,byteToMessage和MessageToByte的过程到底是怎么样的其实先不想Netty,我们从正常的Java网络传输开始,我们想将对象在网络中传输,肯定不能使用对象本身,需要序列化,Java本身的序列化技术可以用,但是问题太多,一是效率低,码率大,二是不能跨语...

2019-03-02 14:52:51 623

原创 使用HttpClient连接池出现---java.lang.IllegalStateException: Connection pool shut down

问题我之所以遇到了这个问题,是因为修改了第三方包代码,新增了连接池,但是没有注意到其内部对连接的关闭;这个问题很简单,顾名思义,就是连接关闭引起的问题,为什么连接关闭会引起问题呢,我们选择使用连接池,就是将连接全部交由连接池管理,而我们在程序中使用了httpClient.close();就破坏了这以规则,解决很简单,删除关闭连接的代码...

2019-02-26 21:16:56 16568

原创 红黑树 笔记

红黑树是一个二叉树,树根为黑,外部节点为黑,其余节点,若为红,其孩子只能为黑从外部节点到根,途中黑节点的数目相等(除外部节点)红黑树是一个4阶B树,也就是(2,4)树,将所有黑色节点的红孩子提升到与其同高,那就形成了一个含1/2/3个节点的超级节点,也就是说(2,4)树的样子接口定义: 查找,插入,搜索,双黑修正,双红修正,更新节点高度(黑高度)插入:...

2019-02-25 21:27:47 109

原创 设计模式一

这里只是简单记录我学习过程中的对各种设计模式的理解,没有具体实现代码前情学习设计模式,我觉得最重要的不止是如何使用,还有为什么使用,甚至后者比之前者有过之而无不及.有一本书《大话设计模式》很受欢迎,我觉得原因其是将各种设计模式的使用环境设计成一个个场景,用对话的形式来表示;所以我会从为什么使用/使用场景和如何使用两个方面来叙述;正文单例模式使用原因 : 在我们的系统中,有一些对象我...

2019-02-16 18:50:53 157

原创 数据库索引

前情可以说是完全为了面试了,我还没有工作,自己做的项目也还没有用过索引,如何添加索引,可以在菜鸟教程自己看,这里说一下使用的意义和底层的数据结构正文为什么使用索引如果在概念上说索引,就不能只局限于数据库,这个概念在很多方面都有涉及,我印象很深的就是操作系统中的文件系统还有内存管理中的页表的设计,我觉得在概念上都类似数据库索引;数据库为什么要使用索引,其实很简单,就是你读书为什么要看目录...

2019-02-08 11:54:22 153

原创 数据库事务

面试准备,仅为一家之言,无法保证理解正确性,慎,欢迎纠正数据库事务ACIDA : Atomic:原子性:指数据库事务要么完成,要么不做.是一个不可分割的原子操作;C:consistency: 一致性:指事务完成要保证业务逻辑数据一致;即业务是A账户向B账户转账,无论怎么转,事务完成后必须保证A账户和B账户的总额不变;I:Isolation: 隔离性: 指不同事务有自己的执行空间,各...

2019-02-03 14:06:03 9703 3

原创 Spring IOC底层分析

仅为面试准备,无法保证理解正确性,慎,欢迎纠正前言关于IOC底层的东西,我这里只是说一下大致的流程,不涉及具体的代码(能力有限).正文IOC初始化IOC容器的初始化分为三个过程以及我们在使用spring时的代码对应(不是完全一一对应,这是顶层的方法,内部有较多的细节):Resource定位:ClassPathReource resource = new ClassPathRe...

2019-02-01 16:08:14 390

原创 Java并发队列原理

面试准备,无法保证理解正确性,慎,欢迎纠正前言并发队列与普通队列的区别的确就在于并发二字,而并发的的基础就是线程安全,如何实现线程安全是我们最重要的需要理解的部分.线程安全的保证无非就是可见性和原子性(有序性一般不说).接下来的各种队列主要就这两点的实现来说.非阻塞队列非阻塞队列即不使用锁的队列,主要使用CAS操作保证原子性ConcurrentLinkedQueueConcurre...

2019-01-30 14:03:34 173

原创 ReentrantLock等锁原理

面试准备,无法保证理解的正确性,慎,欢迎纠正注意这些锁是并发包下的锁,实现原理全是基于AQS,还使用了CAS操作,先了解一下AQS和CASReentrantLock可重入锁,是一种独占锁,即同时只有一个线程可以获取锁,其他尝试获取锁的线程会被放在锁的AQS阻塞队列中,重入的意思是指同一个线程可以多次获取锁.公平锁和非公平锁. ReentrantLock内部有两个内部类Nonfair...

2019-01-29 18:42:30 327

原创 ThreadLocal

面试准备,无法保证理解正确性,慎,欢迎纠正ThreadLocal为什么需要threadlocal在多线程程序中,线程安全是最重要的一点,其实也就是保证共享变量被合理的共享或保证非共享变量不被共享,threadlocal是解决后者的.最常用的是web服务器中,当多个用户并发访问,某个用户信息肯定不能被其他用户线程获取,这就需要使用threadlocal保存每个用户线程的信息,互不干扰...

2019-01-29 16:00:34 154

原创 CAS 和 AQS

这是面试准备过程的学习笔记,不能保证理解的正确性,慎,欢迎纠正CAS和AQS其实并不是一类,只是这两个可能从名字容易搞混,所以放在一起说一下CAS要说Java中的CAS,还是要先说一下自旋锁,有人认为二者是同一样东西,但我认为CAS操作是实现自旋锁的一部分.在锁的基础上,未进入临界区的线程应该处于一种怎样的状态,有两种情况,一是阻塞自身线程,等待释放锁,这明显就是互斥锁,第二种是...

2019-01-29 12:49:57 5284

原创 volatile和JMM

面试准备,同样是学习的过程,无法保证正确,慎,欢迎纠正正文JMM原子性原子性指一个操作是不可被中断的.jvm定义了8中原子操作:lock:将主内存中的变量锁定,为一个线程所独占unclock:将lock加的锁定解除,此时其它的线程可以有机会访问此变量read:将主内存中的变量值读到工作内存当中load:将read读取的值保存到工作内存中的变量副本中。...

2019-01-28 12:35:24 350

原创 线程生命周期

面试准备,因为是学习过程中的笔记,所以无法保证所有理解都是正确的,慎,欢迎纠正正文线程说到线程,自然要说进程,具体的我不想说多,一般都学过操作系统,定义理论什么的考试都考过了,说一下书上看到的最好的关于线程进程的理解.简单来说,进程像是一个容器,比如一个房子,房子里面有卧室,厨房,书房,洗手间等,当然,还有一家三口,当妈妈带女儿外出时,爸爸一个人在家,这时爸爸就像一个线程,想干什么干什...

2019-01-28 11:37:09 123

原创 垃圾收集机制

慎看,一些是自己的理解,不能保证正确性,完全是自己学习路上的一个记录注意点判断对象已死判断对象已死一定和引用相关,这里介绍一下引用和其分类.一般的理解是:引用代表另一块内存的起始地址,这种定义无法描述一些特殊的情况,所以将引用分为四中类型,引用强度逐渐减弱:强引用:强引用就是一般认为的引用,类似Object o = new Object();.只要强引用还在,GC就不会回收对象...

2019-01-27 13:36:46 191

原创 JVM类加载机制

为了春招,系统地复习一下Java相关的知识,应该不会写源码解析,完全是给自己看的,如果足够幸运,有幸进入大厂,重新写下给别人看的注意点类从被加载到被卸载的生命周期如下: 加载 -> (验证 -> 准备 -> 解析)(连接) -> 初始化 -> 使用 -> 卸载 ; 虽然写下来是这样的的顺序,但是不同阶段间可能交叉进行

2019-01-26 21:26:41 198

原创 Java内存模型(板块划分)

为了春招,系统地复习一下Java相关的知识,应该不会写源码解析,完全是给自己看的,如果足够幸运,有幸进入大厂,重新写下给别人看的注意点JVM的版本很多,细节多有不同,这里说的是Hotspot VM.最主要的就是Heap,也就是堆.堆是线程共享的堆主要分为年轻代(Young)和老年代(Old),常规的默认值是,年轻代:老年代 = 1/4~1/3 ;写下主要是为了防止被问到,其实...

2019-01-26 13:14:11 203

原创 ConcurrentHashMap

这里需要说明一下,本人才疏学浅,写下这些东西,完全是暂时记下自己的一些理解,无法保证理解的正确性,想要学习ConcurrentHashMap的还是不要看.慎注意点为什么使用ConcurrentHashMap,是因为需要在一个线程安全的映射集合类,那为什么不使用HashTable呢?其实就是我在HashTable的博客中说到的,HashTable的锁粒度实在太大,虽然保证了线程安全,但...

2019-01-25 17:35:52 476

原创 Vector

为了春招,系统地复习一下Java相关的知识,应该不会写源码解析,完全是给自己看的,如果足够幸运,有幸进入大厂,重新写下给别人看的注意点Vector其实就是线程安全的变长数组,底层和ArrayList也较为类似,就是扩容时复制数组扩容Vector的扩容和ArrayList有一些不一样,是通过capacityIncrement这个值来进行扩容,如果这个值<=0,则默认扩容至原来的两倍...

2019-01-25 11:40:22 130

原创 HashTable

为了春招,系统地复习一下Java相关的知识,应该不会写源码解析,完全是给自己看的,如果足够幸运,有幸进入大厂,重新写下给别人看的注意点HashTable和HashMap都实现了Map接口,所以需要对比着说HashTable也是使用拉链法,即底层使用数组和链表实现哈希表.默认值可能有些不同HashTable的底层数组的初始长度为11负载因子一样,都是0.75扩容大小是...

2019-01-25 11:24:38 956

原创 HashMap

为了春招,系统地复习一下Java相关的知识,应该不会写源码解析,完全是给自己看的,如果足够幸运,有幸进入大厂,重新写下给别人看的注意点HashMap底层是数组和链表的结构,也就是数组中的元素是链表,在同一个链表中的值,都是键通过hash后相同的键值对.下面说的对键求hash值都是值对键的hashcode值进行运算.先说一下一些默认值:默认初始容量是16,也就是说底层数组的长度负...

2019-01-24 23:02:19 135

原创 LinkedList

为了春招,系统地复习一下Java相关的知识,应该不会写源码解析,完全是给自己看的,如果足够幸运,有幸进入大厂,重新写下给别人看的注意点说个题外话,我仔细回想了一下,发现我没有在项目中使用过这个集合类,在算法题中也很少用到,所以应该没多少可以说的LinkedList底层是通过链表实现的,是一个双向链表底层的双向链表是通过一个内部类实现的.private static class E...

2019-01-24 18:54:09 142

原创 ArrayList

为了春招,系统地复习一下Java相关的知识,应该不会写源码解析,完全是给自己看的,如果足够幸运,有幸进入大厂,重新写下给别人看的注意点ArrayList不是线程安全的,如果要在多线程情况下使用,使用List list = Collections.synchronizedList(new ArrayList(...));ArrayList底层是通过数组实现的,这里有一个注意点,这个底层数...

2019-01-24 18:29:21 459

原创 Archlinux 使用 Redis

Tips这篇完全是我给自己的一个备忘录性质的博客,完全是为了很久不用redis记下一些基础的使用,不建议看下去启动在redis/src/ 目录下,使用./redis-server ../redis.conf,然后会在6379端口打开命令行如果不使用图形化客户端,那就使用命令行吧.命令是redis-cli -h 127.0.0.1 -p 6379 -a 123这个命令还适用于远程接入,...

2019-01-17 16:44:51 1518

原创 Spring单例和多例

疑惑这是面试中老生常谈的问题,具体的话,类似- spring中默认是单例还是多例?- 什么时候使用单例?什么时候使用多例?- springMVC的的controller是单例还是多例?(为什么是单例?)- …spring默认当然是单例,我想说的是第二条,什么时候使用单例?什么时候使用多例?解惑既然默认是单例,那就先说什么时候使用单例?其实可以就第三个问题作为例子说?为什么Spri...

2019-01-15 15:24:54 3891 2

原创 Java线程池的复用理解

前情今天是我第三次看线程池的源码,才敢写下这一点点理解,虽然我的博客一般都是自己学习的笔记和心得,但是毕竟是在互联网上,有需求的同行看到了,还是不能害人.虽说是第三次看,但是对其中一些很细节的条件分支还不是很理解,只是从宏观上稍微理解了作者的一些思路.下面说一下:池化核心在我的理解中,池化技术,无论是连接池还是线程池,核心就是复用二字.池化技术往简单了说,就是重复利用一些比较"昂贵"的资源....

2019-01-01 19:05:00 1697 1

原创 使用Spring-RestTemplate时出现RestClientException的解决办法

错误解释出现这个错误有两个不同的原因:你所访问的API的服务器的响应类型是text/html,而restTemplate不能将这种类型转换成你要求的类的结构如果响应类型就是application/json,那么就是缺少一个jackson的依赖解决第一种原因的解决办法是为RestTemplate实例添加自定义消息转换器,接收所有响应类型.下面是代码.List<HttpMes...

2018-12-27 17:28:47 23060 1

原创 Java 关于类加载的一些想法

声明本人是个菜鸟,不会写整个加载机制的介绍,其实大部分相关的中文博客都是互相转载,我这里只是说一下自己的学习过程中的疑惑,和如何解决的方法,是为了有相同疑惑的人可以少走点路.疑惑从类加载器开始说起,双亲委派机制大家都知道,但我一般很想知道为什么,为什么使用这个机制,各种博客大同小异,都是说为了避免重复加载,很多说到这里就没了,这完全是误人子弟,怎么避免重复加载了,这明显就像小学生写作文,光...

2018-12-24 20:49:15 171

原创 推荐系统-协同过滤和关联规则的不同适用

说起来很丢人,以前只是用过关联规则的算,而没听过关联规则,最近才看到一些有关的内容,但同时也很疑惑二者的区别其实我现在还是没有理解协同过滤具体的算法步骤,只是从各种资料中看到它的适用,自己又总结了一下.解惑(暂时)关联规则我很熟悉,先说这个,关联规则最主要的就是频繁项的挖掘,然后从频繁集中生成关联规则,最后匹配待推荐项.如果拿电商来举例,在我看来,使用关联规则的数据集的特征就是购物车的消...

2018-12-17 19:55:44 997

原创 Spring-Boot Restful API 笔记

RestControllerGet使用@RestController标注在一个控制器类上,再使用@RequestMapping(path)指定映射地址,这个控制器类下的所有方法映射到这个地址下在具体方法上标注@GetMapping表明这是一个Get请求api,这个注解的参数可以填地址,一般是指定条件,如按id查询,参数就是/{id},然后在方法的参数前标注@PathVariable,使路径...

2018-12-12 23:26:05 159

原创 零星笔记

spring -boot 启动执行建表sql 在配置文件下的spring->datasource->schema->指定建表sql文件位置spring-boot使用mybatis时,如果JavaBean中使用驼峰命名,而表结构使用下划线命名规则,可是创建一个配置类,配置类中创建一个返回ConfigurationCustomizer类的方法(标注@Bean),方法内部返回一个C...

2018-12-11 22:59:36 430

空空如也

空空如也

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

TA关注的人

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