自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Nacos 报错: spring-cloud://localhost:9090/org.apache.dubbo.registry.RegistryService?a

spring cloud alibabadubbonacos

2022-11-30 10:28:04 1037 1

原创 JDK动态代理

动态代理

2022-06-23 15:25:35 381

原创 mysql ERROR 2002

使用mysql时出现错误:mysql ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'首先,你要看看你的mysql是否启动????mac在“系统偏好设置”中查看mysql图标点击看看是否是running状态如果是running状态,再去查看其他问题,可以参考:https://blog.csdn.net/github_37216944/article/

2020-06-27 17:43:24 351

原创 Java代码反编译——下载class字节码文件及反编译.class文件

我们在学习动态代理的实现原理时往往希望能够将字节码文件反编译出来看一下代理类时如何调用handler的invoke方法来实现代理的,但是往往我们不知道如何下载字节码文件,或者下载来不知道下载路径,又或者使用javap反编译出来的结构并不是我们想要的,那么根据一下步骤可以轻松的得到字节码的反编译结果:设置System.getProperties().put("sun.misc.ProxyGene...

2019-11-27 17:45:44 819

原创 为什么需要Java反射?

目录什么是反射?反射的实现原理反射的使用为什么需要反射?(反射的作用/应用场景)反射的缺点什么是反射?JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。反射的实现原理java类加载:java类加载就是...

2019-11-26 11:00:39 4666 2

原创 IllegalArgumentException: Mapped Statements collection already contains value for ***Mapper.insert!s

目录一:异常/错误二:分析/排查三:解决方法一:异常/错误IllegalArgumentException: Mapped Statements collection already contains value for ***Mapper.insert!selectKey[artifact:mvn] 2016-05-07 11:39:21,708 [ERROR] org...

2019-11-14 12:00:14 885

转载 HTTP请求的基础知识——HTTP中GET,POST和PUT的区别

一、Http请求过程HTTP协议采用请求/响应模式,客户端向服务器发送一个请求报文,然后服务器响应请求。下面介绍一下一次HTTP请求的过程:在浏览器中输入URL,并按下回车键 浏览器向DNS服务器请求解析该URL中的域名对应的IP地址(如果是IP请求,则不需要该步骤) 解析出IP后,根据IP和端口号,和服务器建立TCP连接 浏览器向服务器发送请求,该请求报文作为TCP三次握手的第三个...

2019-11-13 11:44:47 9947 1

转载 解决 Mybatis Generator由表字段使用关键字导致的异常方案

引言前几天由于用python拉取第三方接口的数据以后,他们直接返回建表的字段和命令,也就说我们必须按照他们设定的字段名称来使用,他们的命名里面有很多的mysql的关键字,这就说我们写sql的时候,需要注意关键字,但是我们后端用的mybatis Generator,这就导致各种错误,因为之前没有遇到过这种场景,所以晚上查询了很多资料,最后在官网上找到了解决方案,其实很简单。在context...

2019-11-07 15:37:25 611

原创 storm集成Spring

我们知道storm是一个独立的实时计算框架,而Spring是一个独立的轻量级容器框架,那么如何在storm框架中集成Spring框架,以便于在storm开发中利用Spring的控制反转(IoC)和面向切面(AOP)性能来做java对象的管理呢?首先我们应该知道Spring是如何来管理java对象的,storm是怎么运行拓扑的,知道了这个、些才能明白怎么将Spring集成到storm中。我们经常...

2019-11-04 17:58:26 665

原创 tomcat的servletContext、dispatcherServlet和web应用的ApplicationContext、webApplicationContext的区别

接触Spring初期的时候,基本上是只学会怎么用Spring mvc或者Spring boot框架来搭建一个web应用,跟着写一些配置,但是没有太弄明白每个配置的意义,为什么要有这样的配置,是否必须要有,特别是神秘的ApplicationContext,似乎是抓不着,但是又处处都要使用到它,那么经常看到的servletContext、dispatcherServlet、ApplicationCon...

2019-10-31 16:28:09 2314

原创 用@Value注解直接注入properties中的值

有两种方式可以实现用@Value注解直接将properties中的值注入变量,一种是@Value("${key}"),一种是@Value("#{beanName[key]}"),他们本质上是实现了不同的类一、@Value("${key}"),实现PropertyPlaceholderConfigurer类demo:https://blog.csdn.net/lyz_112233/artic...

2019-07-25 11:22:06 6083

原创 basic paxos协议——分布式一致性协议初探

1、什么是paxos协议?定义:Paxos算法是在多个成员之间对某个值(提议)达成一致的协议。这个值可以是任何东西。比如多个成员之间进行选主,那么这个值就是主的身份。在应用到日志同步中时,这个值就是一条日志。通过多次Paxos的执行就可确定出一个日志的序列,保证在主备服务器上看到相同的日志顺序。前提:Paxos算法假设不存在拜占庭问题,也就是说消息的传递可能丢失,迟到或者重复,但是一定不会...

2019-05-06 22:30:01 475

原创 集合框架——LinkedHashMap实现原理详解

我们已经讲解了HashMap的实现原理,LinkedHashMap是HashMap的子类,在其基础上实现了元素的排序功能,接下来对LinkedHashMap的实现进行一个了解。目录底层数据结构查询操作get()插入操作put()/putAll()删除remove()方法 底层数据结构 LinkedHashMap就是实现了LRU(Least Recent Use, 最近...

2019-04-18 15:41:10 534

原创 集合框架——HashMap实现原理详解

目录一、HashMap实现原理1、底层数据结构2、put方法:3、扩容resize()方法4、删除remove()方法:二、关于HashMap的几个问题1、为什么HashMap不是线程安全的2、HashMap为什么不直接使用hashCode()处理后的哈希值直接作为table的下标?3、HashMap在JDK1.7和JDK1.8中有哪些不同?4、为什么...

2019-04-17 21:48:39 685

原创 集合框架——hashCode算法实现

目录一、hashCode算法实现二、HashMap中为什么数组的长度为2的幂次方三、HashMap 在计算bucket位置时,为什么使用 & 与运算代替模运算?四、自定义 HashMap 容量最好是多少?五、如何解决Hash冲突hashcode事一个int类型的数字,从Object的hashCode()方法的注释中可以看出hashcode主要是用于hashMap等类...

2019-04-16 17:12:02 3847 2

原创 集合框架——集合元素的排序

目录一、哪些实现类有排序功能二、list排序的实现三、set和map的排序实现1、set的排序2、map的排序、哪些实现类有排序功能集合框架的几个主要接口List、Set、Queue和Map中,只有list的实现类都有sort方法(实现了RadomAccess随机访问接口),而其他的只TreeSet(实现了SortedSet)和TreeMap(实现了SortedM...

2019-04-11 22:35:09 454

原创 Spring单元测试总结

之前自己跟着网上做项目的时候,因为是从下到上都是自己开发的,测试也是从下到上一层层的集成测试,一直没有理解单元测试的精华,实习以后接手的都是一些基于其他项目的小需求,如果会用单元测试就会轻量很多,方便很多,这里主要总结了单元测试常用的东西,以后如果用深入了或许还会添加一些。单元测试最主要的是创建mock对象,打桩,调用方法,验证交互,断言结果 Mock的使用一般来说,Mockito都和...

2018-07-31 15:13:31 413

原创 git入门操作总结

实习一个月,从git入门到使用多次后一点点理解,再总结一次发现收获良多,本文尽量从日常使用和简单的角度来描述git操作,仅作记录,也希望对大家有所帮助 git 常用add,commitstatus:查看文件状态文件的状态总的来说只有traced和untraced,一个文件被创建以后,吐过没有add,那么使用git status 显示的状态是untraced,这时的文件不能git...

2018-07-24 15:43:48 459

原创 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)错误原因分析

一般的原因 Mapper interface和xml文件的定义对应不上,需要检查包名,namespace,函数名称等能否对应上。 按以下步骤一一执行: 1、检查xml文件所在的package名称是否和interface对应的package名称一一对应 2、检查xml文件的namespace是否和xml文件的package名称一一对应 3、检查函数名称能否对应上 4、去掉xml文件中的中文注释 5、...

2018-07-12 11:37:43 2078

原创 git的ssh连接问题:[email protected]: Permission denied (publickey)

首先根据点击打开链接来获取公钥并配置连接,但是在最后一步出现了[email protected]: Permission denied (publickey)问题,查找很久,基本的解决方案在点击打开链接但是都没有解决我的问题,后来发现检查是否连接上时,不是只能用命令:ssh -T [email protected] 如果是公司的git这种不是个人从github上注册申请的账号,要使用:ssh -T git@e...

2018-06-25 19:29:53 5688

原创 springMVC中@Rquestmapping注释在类上资源路径出错的问题

做秒杀项目的时候不知道为啥注解在类上的requestmapping会加到资源路径上,就是这样:然后资源路径就变成:在jsp页面中的路径也是seckillId的值会加到资源路径前面,导致资源找不到,报404错误:解决方案:在WEB-INF前面加/...

2018-06-08 21:46:27 2298 2

原创 深入理解MySQL索引原理和实现——为什么索引可以加速查询?

说到索引,很多人都知道“索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址,在数据十分庞大的时候,索引可以大大加快查询的速度,这是因为使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据。”但是索引是怎么实现的呢?因为索引并不是关系模型的组成部分,因此不同的DBMS有不同的实现,我们针对MySQL数据库的实现进...

2018-04-12 09:48:26 154521 69

原创 Java并发——关于Java内存模型(JMM),你需要知道什么?

一、JMM采用的什么内存模型?我们这个内存模型看起来是怎么样的?并发编程中有两个主要的问题,一个是不同的线程之间怎么通信;二个是如何保证不同线程之间的同步。如果一个模型能够解决这两个问题,那么就可以用来描述并发编程模型。在命令式编程中,线程之间通信的方式有两种,一种是通过共享内存在实现通信,称为共享式的并发模型;另一种是显式的发送消息来实现通信,称为消息传递式的并发模型。在内存共享式的并发模型中,...

2018-03-22 22:50:01 501

原创 Java并发——Synchronized关键字和锁升级,详细分析偏向锁和轻量级锁的升级

目录一、Synchronized使用场景二、Synchronized实现原理三、锁的优化1、锁升级2、锁粗化3、锁消除一、Synchronized使用场景Synchronized是一个同步关键字,在某些多线程场景下,如果不进行同步会导致数据不安全,而Synchronized关键字就是用于代码同步。什么情况下会数据不安全呢,要满足两个条件:一是数据共享(临界资源),二...

2018-03-22 17:01:42 115581 64

原创 Java并发——Executor框架详解(Executor框架结构与框架成员)

一、什么是Executor框架?我们知道线程池就是线程的集合,线程池集中管理线程,以实现线程的重用,降低资源消耗,提高响应速度等。线程用于执行异步任务,单个的线程既是工作单元也是执行机制,从JDK1.5开始,为了把工作单元与执行机制分离开,Executor框架诞生了,他是一个用于统一创建与运行的接口。Executor框架实现的就是线程池的功能。二、Executor框架结构图解1、Executor框...

2018-03-20 21:58:27 78978 12

原创 Java并发——深入理解Executor框架FutureTask类

一、什么是Future和FutureTask一直以来都对FutureTask这个“Future”不理解,为什么叫做“未来的任务呢”?这个“Future”体现在哪里呢?现在终于明白,FutureTask的Future就源自于它的异步工作机制,如果我们在主线程中直接写一个函数来执行任务,这是同步的任务,也就是说必须要等这个函数返回以后我们才能继续做接下的事情,但是如果这个函数返回的结果对接下来的任务并...

2018-03-20 21:56:33 4865

原创 Java并发——Executor框架ScheduledThreadPoolExecutor详解

ScheduledThreadPoolExecutor类继承了ThreadPoolExecutor并实现了ScheduledExecutorService接口。主要用于在给定的延迟后执行任务或者定期执行任务。作用类似于java.util包下的Timer类,但是比Timer功能更强大、更灵活,因为Timer只能控制单个线程延迟或定期执行,而ScheduledThreadPoolExecutor对应的...

2018-03-20 16:22:06 3631

原创 Java并发——Executor框架ThreadPoolExecutor详解

ThreadPoolExecutor是Executor接口的一个重要的实现类,是线程池的具体实现,用来执行被提交的任务。一、ThreadPoolExecutor的创建:直接创建ThreadPoolExecutor的实例对象,这样需要自己配置ThreadPoolExecutor中的每一个参数:ThreadPoolExecutor tpe = new ThreadPoolExecutor(int co...

2018-03-20 14:25:41 9427 7

原创 Java并发——线程池工作原理及使用

一、什么是线程池?为什么要使用线程池?线程池的优点?1、什么是线程池?线程池是指在初始化一个多线程应用程序过程中创建一个线程集合,然后在需要执行新的任务时重用这些线程而不是新建一个线程。线程池中线程的数量通常完全取决于可用内存数量和应用程序的需求。然而,增加可用线程数量是可能的。线程池中的每个线程都有被分配一个任务,一旦任务已经完成了,线程回到池子中并等待下一次分配任务。2、为什么要使用线程池?因...

2018-03-18 20:44:09 2290

原创 Java并发——Java中的并发类工具

在JDK的并发包里面提供了几个非常有用的工具类:CountDwonLatch、CyclicBarrier、Semaphore、Exchanger。其中CountDwonLatch、CyclicBarrier、Semaphore工具类提供了一种并发流程控制的手段,Exchanger提供了一种在线程间交换数据的手段。一、四种并发工具类1、CountDwonLatch(闭锁)CountDwonLatch...

2018-03-18 14:32:15 4525

原创 Java并发——ReentrantLock的公平锁与非公平锁

一、锁的公平性含义所谓公平锁,就是在绝对时间上,先对锁发起获取请求的一定先被满足,那么这个锁是公平的,反之,则是非公平的。因为ReentrantLock的实现是通过自定义的静态内部类sync实现的,sync继承了AbstractQueuedSynchronizor抽象类,因此ReentrantLock也是实现了基于双向链表的同步队列,也就是说,如果每次都是选择队列头的Node关联的线程获取锁,那就...

2018-03-16 15:34:10 1125

原创 Java并发——重入锁ReentrantLock的实现原理及源码解析

1、什么是可重入锁?可重入锁就是对于已经获得锁的线程,可以重复的多次的获得该锁。而不可重入的锁在线程获得该锁后,该线程如果再次请求获得该锁,就会在调用tryAquires()的时候返回false,从而阻塞自己。2、可重入锁的实现原理?要实现可重入锁的关键有两个,一个怎么识别当前请求锁的线程是不是已经获取锁的线程,另一个因为在一个线程重复的获取了n次锁以后,必须要释放n次锁才能完全释放锁,这怎么实现...

2018-03-16 14:21:26 442

原创 Java并发——并发容器ConcurrentHashMap实现原理

一、ConcurrentHashMap的实现原理ConcurrentHashMap的“锁分段”就是把数据分段,然后每段有一个锁,这样当不同的线程访问不同段的数据时,就不会发生锁竞争了。那么“锁分段”是怎么实现的呢,那就需要看看ConcurrentHashMap的底层实现结构了。ConcurrentHashMap是由Segment数组加HashEntry数组构成的,如下图所示:其中Segment是一...

2018-03-15 20:22:35 675

原创 常见排序算法Java实现及复杂度总结

1、冒泡排序public class SortAlgorithm { //1、冒泡排序bubbleSort public static void bubbleSort(int[] num){ int len = num.length; for(int i =len-1; i>0;i--){ for(int j=0; j&...

2018-03-14 15:24:07 4100

原创 集合框架——Collection实现类的遍历方法与元素删除

目录一、Collection实现类的遍历方式1、循环加随机访问get(index)2、foreach循环3、迭代器4、LinkedList的pollFirst/pollLast和removeFirst/removeLast方法二、元素的删除一、Collection实现类的遍历方式Collection接口继承了Iterable接口,因此其子接口List、Set和Que...

2018-03-11 23:00:02 561

原创 集合框架——ArrayList与LinkedList、Vector的区别

目录一、相同之处二、不同之处1、ArrayList与LinkedList区别2、ArrayList与Vector区别三、使用场景List接口是Collection接口下的子接口List中的元素是有序的,可以重复的,List接口的主要实现类有三个:ArrayList、LinkedList和Vector。一、相同之处都是List接口的实现类,因此他们具有List列表的共...

2018-03-11 22:23:22 357

原创 集合框架——TreeSet实现原理及源码分析

TreeSet是Set接口的子接口SortedSet的唯一的实现类,TreeSet对其中的元素进行排序。public class TreeSet<E>extends AbstractSet<E>implements NavigableSet<E>, Cloneable, Serializable可以看到TreeSet继承了AbstractSet并实现了Nav...

2018-03-11 15:57:54 735

原创 集合框架——HashTable和HashMap的区别

继承类不同HashTable继承Dictionary类,HashMap继承AbstractMap类线程安全级别不同HashTable是线程安全的类,每个public方法都有Synchronized修饰,HashMap不是线程安全的是否允许null的要求不同HashTable:key不允许为null,value不允许为nullHashMap:key允许为null,value允许为n...

2018-03-10 23:07:23 3002

原创 Java集合框架及其面试重点

目录目录一、集合框架概述二、面试重点1、List接口介绍Java的List,ArrayList与LinkedList的区别Array(数组)和ArrayList有何区别?什么时候更适合用Array?List是线程安全的吗?如果要线程安全要怎么做?怎么给List排序?通过Array.asList获得的List有何特点,使用时应该注意什么?List和Array之...

2018-03-10 12:05:28 533

原创 剑指Offer——字符串空格替换

题目描述:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。public class Solution { /* 分析:首先要问字符串替换是在新的字符串上替换还是在原有的字符串上替换 如果是在原有的字符串上替换,那么关键问题如下: 这道题的关键在于替换后的字符串长...

2018-03-09 21:48:08 375

空空如也

空空如也

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

TA关注的人

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