- 博客(123)
- 资源 (1)
- 收藏
- 关注
转载 多态问题:编译看左边,运行看右边 是什么意思?(转发)
多态:Percent p = new Children();对于成员方法:编译看左边,运行看右边。对于成员变量:编译运行都看左边。也就是成员变量没有多态特性。静态方法和变量:编译运行都看左边,同成员变量一样。子类的同名的 类变量、静态方法、静态变量 不会覆盖父类。 调用p的这些属性找的是父类的属性子类同名的类方法覆盖父类。 调用p的方法找的是子类的方法。调用p的属性(变量或方法)会检查父类Percent是否存在此属性,如果不存在(只有子类有)或者父类属性用private修饰则编译不通过。.
2021-08-05 09:33:09 3002
原创 一、java中关于redis的缓存穿透以及雪崩的理解
一、背景1.什么是缓存穿透:一般的缓存系统,都是按照 key 去缓存查询,如果不存在对应的 value,就应该去后端系统查找(比如 DB)。如果 key 对应的 value 是一定不存在的,并且对该 key 并发请求量很大,就会对后端系统造成很大的压力。这就叫做缓存穿透。2.什么是缓存雪崩:当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也会给后端系统(比如 DB)带来很大压力。二、解决1.如何避免缓存雪崩:1.1:对查询结果为空的情况也进行缓存,缓存时间设置短一点
2020-06-01 20:39:34 724 1
原创 一、关于java中的事务(开启事务、事务的隔离级别、事务的传播性)的总结
一、背景1.最近在研究java的事务传播性,一直有个地方不太明白的地方,直到在在项目中有看到实际中怎么用到的,才恍然大悟,于是就搜了搜关于java中的事务何时开启,以什么方式开启的,事务的隔离级别以及事务的传播性,于是写下了这个博客来记录下自己的学习成果。2.也参考了很多大佬的博客文章,最后会把参考的文献提供出来,以供大家参考和学习。如果那里做的不好,欢迎大家留言以及批评指正,废话不多说了...
2020-04-26 09:33:48 1220
原创 判断集合中多个日期是否有重合的代码(亲测)
一、背景1.因为项目中需要,需要写一个工具类来判断多个集合业务参数是否有重复的日期,经过反复的测试,觉着这个方法不错,希望能帮助大家。二.思路2.1.先对集合进行排序(因为是String类型,在这写了一个比较器,按照升序进行排序);2.2.双重for循环,判断每一个;三.代码1.CompareDemo.javapublic class CompareDemo { ...
2020-04-15 23:02:38 1094 1
原创 java之数据金额的钱数转化为大写的工具类
1.背景1.1.因为项目的需要,需要把阿拉伯金额的钱数转化为大写的工具类,下面直接上代码。2.Utilimport java.util.regex.Matcher;import java.util.regex.Pattern; public class ChineseYuanUtil { private static final Pattern AMOUNT_PAT...
2020-04-03 21:54:08 1142
原创 十四、进程线程、同步异步、阻塞非阻塞、并发并行的理解
一、背景1.在前几篇博客中我们 也讲解了很多关于多线程的知识点了,今天准备来对前几篇讲的概念来做具体的讲解,希望能帮助你们,下面我们就来具体讲解我们今天的内容。2.如果讲解的有不太明白的请留言,也可以参考我之前的博客来理解我们今天所讲解的知识点。不废话了开始今天的讲解。二、基本概念1.进程和线程1.1.进程(Process):是Windows系统中的一个基本概念,它包含着一个运...
2020-02-13 14:17:35 204
原创 java后端代码导出excel表格的代码分析
一、背景1.Undertow 是红帽公司开发的一款基于 NIO 的高性能 Web 嵌入式服务器。2.轻量级:它是一个 Web 服务器,但不像传统的 Web 服务器有容器概念,它由两个核心 Jar 包组成,加载一个 Web 应用可以小于 10MB 内存。3.在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。同时...
2020-02-13 14:16:59 741
原创 java过滤器的两种加载方式
一、第一种1.代码@WebFilter(filterName="LoginCheckFilter",urlPatterns="*")public class LoginCheckFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletExceptio...
2020-01-18 18:22:41 656
原创 二、java基础之nio编程(直接缓冲区与非直接缓冲)
一、背景1.承接上一篇博客,咱们今天继续来研究下nio编程,废话不多说,来开始今天的总结。具体可以参考下上篇文章:https://blog.csdn.net/chenmingxu438521/article/details/103967066二、直接缓冲区与非直接缓冲的区别1.非直接缓冲区:通过 allocate() 方法分配缓冲区,将缓冲区建立在 JVM 的内存中2.直接缓...
2020-01-14 13:42:44 307
原创 一、java基础之nio编程
一、什么是nio1.NIO是一个可以替代标准Java IO API的IO API(从Java 1.4开始),NIO提供了与标准IO不同的IO工作方式,NIO: Channels and Buffers(通道和缓冲区)二、nio与io的对比 IO NIO 面向流 面向缓冲区 阻塞IO ...
2020-01-14 09:50:53 278
原创 十一、java多线程基础之锁的深度化
一、重入锁1.锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized(重量级) 和 ReentrantLock(轻量级)等等 ) 。这些已经写好提供的锁为我们开发提供了便利。重入锁,也叫做递归锁,指的是同一线程 外层函数获得锁之后 ,内层递归函数仍然有获取该锁的代码,但不受影响。2.在JAVA环境下 ReentrantLock 和synchronized ...
2020-01-07 13:51:14 171
原创 十、java多线程基础之合理配置线程池
一、背景1.产生阻塞的其他原因(IO操作):频繁的请求,读取数据库,循环IO操作这些都有可能发生阻塞。例如:http的post请求就想当与是一个独立的线程。任务可以理解为run()方法中的代码逻辑。二、CPU密集CPU密集的意思是该任务需要大量的运算,而没有阻塞,CPU一直全速运行。CPU密集任务只有在真正的多核CPU上才可能得到加速(通过多线程),而在单核CPU上,无论你开几个模...
2020-01-06 15:12:20 276
原创 九、java多线程基础之线程池的总结
一、什么是线程池1.Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还...
2020-01-05 12:33:38 215
原创 八、java多线程基础之并发包知识点总结
一、背景1.前几个博客我们介绍了关于多线程的基础知识以及它们的实际例子,今天我们来说说java并发包下面的知识点,前几篇文章可以参考我之前的博客,同时如果那里有说的不对的,请欢迎留言指正。2.写这个博客的目的是为了提高下自身的知识网络,还有就是在实际项目中使用到的,同时也希望能帮助大家来更好的理解知识点,平时多积累下,潜移默化就形成了强大的知识网络了,废话不多说了,下面就让我们共同来学习下...
2020-01-04 19:04:21 537
原创 七、java多线程基础的总结
一、干货1.并发编程的三要素<1>.原子性:原子性指的是一个或者多个操作,要么全部执行并且在执行的过程中不被其他操作打断,要么就全部都不执行。<2>.可见性:可见性指多个线程操作一个共享变量时,其中一个线程对变量进行修改后,其他线程可以立即看到修改的结果。<3>.有序性:有序性,即程序的执行顺序按照代码的先后顺序来执行。2.实现可见性的方法有...
2020-01-03 09:04:30 205
原创 六、idea怎么debug多线程
一、背景1.最近在做一个多线程的需求,做完之后得需要启动debug模式来完成代码的调试工作,接下来就来说下我在实际的项目中怎么去联调多线程的。2.下面我们用一个小栗子来讲解下多线程下面的debug。二、代码1.代码(一个主线程,一个子线程)public class DaemonThread { public static void main(String[] args...
2020-01-02 13:40:55 7001 3
原创 四、java多线程基础之线程之间的通信
一、什么是多线程之间的通讯1.概念:多线程之间通讯,其实就是多个线程在操作同一个资源,但是操作的动作不同。二、多线程通讯模拟出现的问题1.需求:第一个线程写入(input)用户,另一个线程取读取(out)用户.实现读一个,写一个操作。2.代码// 共享对象class Res { // 姓名 public String name; // 性别 ...
2019-12-31 09:45:48 249 1
原创 三、java多线程基础之java内存模型(JMM)
一、多线程的三大特性1.原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。一个很经典的例子就是银行账户转账问题:比如从账户A向账户B转1000元,那么必然包括2个操作:从账户A减去1000元,往账户B加上1000元。这2个操作必须要具备原子性才能保证不出现一些意外的问题。我们操作数据也是如此,比如i = i+1;其中就包括,读取i的值,计算...
2019-12-30 13:47:13 366
原创 二、java多线程基础之多线程安全总结以及分析
一、线程安全问题为什么会存在1.当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。但是做读操作是不会发生数据冲突问题。二、代码例子1.代码public class ThreadTrain implements Runnable { private int trainCount = 100; @Override...
2019-12-30 13:14:33 177 1
原创 一、java多线程基础知识的总结
一、线程与进程的区别1.线程其实就是一条执行路径,进程是独立应用程序的一个应用程序。2.线程是一条执行路径,多条执行路径同时执行,在进程中,会有N多个线程,进程是所有线程的集合。3.使用多线程目的就是为了提高程序效率。二、创建多线程的方式(以下三种方法不一一举例)1.第一种是继承Thread类,重写run方法。2.实现Runnable接口,重写run方法。3.使用匿名内...
2019-12-30 10:51:54 297
原创 使用ip2region来完成城市定位(java)
一、背景1.因为最近有个需求需要城市定位这个功能,然后就去搜了下有关城市定位的资料,有纯真的,有阿里开源的,经过考虑还是使用了ip2region自己写了一个版本,这个大家可以放心使用,这个是开源的,下面分享给大家,以及在使用的过程中所遇到的问题。二、项目结构1.使用的springboot与ip2region整合的方式,ip2region.db文件放在resources下面的city文件...
2019-12-27 10:35:51 3175
原创 Mybatis中的动态代理之Jdk动态代理
一、背景1.在jdk1.3之后引入了一种称之为动态代理(Dynamic Proxy)的机制,使用该机制,我们可以为指定的接口在系统运行期间动态地生成代理对象,从而帮助我们走出最初使用静态代理实现AOP的窘境。二、基础讲解1.举个栗子2.分析目标类:target,就是我们需要增强的那个类。代理类:proxy,就是我们自定义的那个代理的对象。连接点:joinpoint,连接...
2019-10-18 15:10:09 972
原创 java之ClassLoader的原理以及应用
一、背景1.ClassLoader翻译过来就是类加载器,普通的java开发者其实用到的不多,但对于某些框架开发者来说却非常常见。2.理解ClassLoader的加载机制,也有利于我们编写出更高效的代码。ClassLoader的具体作用就是将class文件加载到jvm虚拟机中去,程序就可以正确运行了。3.但是,jvm启动的时候,并不会一次性加载所有的class文件,而是根据需要去动态加载...
2019-10-16 23:13:12 398
原创 java浅聊之何时类加载的情况
一、背景1.这节主要讲解什么情况下会触发类加载的进行呢,本文将结合代码demo谈谈几种情况,希望能帮助到正在努力学习的你们。二、类加载时机1.什么情况需要开始类加载过程的第一阶段:加载?Java虚拟机规范中并没有进行强制约束,这点可以交给虚拟机的具体实现来自由把握。但是对于初始化阶段,虚拟机规范则严格规定了以下几种情况必须立即对类进行初始化,如果类没有进行过初始化,则需要先触发其初始化...
2019-10-15 09:54:14 420
原创 java中的try catch finally块中return的执行顺序(基础)
一、背景1.当我们的程序出现异常的时候,我们可以选择捕获异常,我们可以选择try catch来处理我们出现异常的代码逻辑,这时候还有一个知识点就是finally何时执行,接下来我们用简单的例子来说明下吧!二、没有发生异常的时候1.代码public static void main(String[] args) { int i = method1(); ...
2019-10-13 19:09:39 512
原创 一、SpringBoot全局异常处理器(处理异常一)
一、背景1.在Spring Boot项目中,代码出现异常会跳转到/error页面进行错误展示,对用户和前端都不友好,我们希望以友好的方式来显示异常。二、异常演示1.先来演示一下默认的异常处理@RestControllerpublic class IndexController { @RequestMapping("/getResult") public int...
2019-10-11 22:25:08 923 4
原创 java中linux之解决生产问题必备命令(排查问题必备)
一、背景1.如今程序员生产的代码99%都部署在linux环境下,代码发现缺陷,程序员的第一反应是到linux下拉日志下来看。下面我来简单介绍,实战项目中最常用的命令。程序员不是运维,不需要掌握非常多复杂命令。二、状态查询1.查看内存(free 可选参数 -m -g)2.磁盘的使用情况(df 可选参数 -h)3.观察端口被那个应用占用(占用输出详细信息,没有占用则没有...
2019-10-11 09:07:53 935
原创 maven jar包冲突如何解决
一、背景1.假设我们现在有一个多模块的项目,依赖关系如图,我们在st-web模块中引入st-dal依赖时,st-common-lib这个依赖也会被我们引入,这个就是依赖传递,下表列出了scope在依赖过程中发生的变化,列标题为被依赖的模块,每行为要依赖的模块。图12.上面的就是关于依赖传递的。二、依赖仲裁1.(依赖仲裁)依赖冲突:就是我们当项目中引入的jar包,group...
2019-10-10 14:10:08 2377
原创 三、关于java中的IO的基础知识点之字符编码
一、背景1.我们常用的字符集,其实就是来选择合适的码表就能完成字符和二进制数据之间的转换,从而实现数据的传输。2.常见的字符码表有,ASCII、ISO8859-1、GB2312、GBK、GB18030、Unicode、UTF-8等。3.在java编程中,经常会出现字符转换为字节或者字节转换为字符的操作,一般来说把字符串转化为计算机识别的字节序列称为编码,而把字节序列转化为普通人能看懂的...
2019-10-09 20:28:28 244
原创 二、关于java中的IO的基础知识点之文件的拷贝
一、背景1.在应用程序中,IO流通常是成对出现的,即输入流和输出流一起使用,例如文件的拷贝就需要通过输入流来读取文件中的数据,通过输出流将数据写入文件。二、代码示例1.代码演示public static void main(String[] args) throws Exception { //创建一个字节输入流,用于读取当前目录下source文件夹中的MP3文件...
2019-10-09 15:54:23 354
原创 一、关于java中的IO的基础知识点之字节流读取文件
一、背景1.IO流有很多种,按照操作数据的不同,可以分为字节流和字符流,按照数据传输的方向不同又可以分为输入流和输出流,程序从输入流中读取数据,向输出流中写入数据,因为都是在IO包下面,所以就叫IO流。2.在IO包中,字节流的输入输出流分别用java.io.InputStream和java.io.OutputStream表示,字符流的输入输出流分别用java.io.Reader和java....
2019-10-09 14:24:25 386
原创 java中的算法的一些总结
一、背景1.最近刷了一会儿题目,感觉对自己很有帮助的,然后就记录下自己的学习,这个主要是算法的题目,感觉大佬们的思路很开阔,然后自己也跟着学习了一下。2.可以参考下之前的博客关于另外的一些算法的连接:https://blog.csdn.net/chenmingxu438521/article/details/100824947,到时候可以直接拿来用直接做util。二、题目一(整数转罗马...
2019-09-15 13:37:18 179
原创 java之生成二维码以及使用
一、背景1.今天做了一个二维码的生成以及简单的跳转应用,结下来我们来演示下吧。二、项目结构1.项目图片三、项目详解1.pom.xml<dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> ...
2019-09-14 19:11:05 420
原创 java中的算法的一些总结
一、背景1.最近刷了一会儿题目,感觉对自己很有帮助的,然后就记录下自己的学习,这个主要是算法的题目,感觉大佬们的思路很开阔,然后自己也跟着学习了一下。二、题目一(有效的括号)1.实现思路:1.1.初始化栈 S。1.2.一次处理表达式的每个括号。1.3.如果遇到开括号,我们只需将其推到栈上即可。这意味着我们将稍后处理它,让我们简单地转到前面的子表达式。1.4.如果我们遇到一个闭...
2019-09-14 13:29:17 274
原创 关于java中的AbstractStringBuilder中的其他方法分析(源码分析)
一、背景1.关于AbstractStringBuilder是一个抽象实现类,所以不能直接new对象,接下来主要分析他的子类StringBuilder,来看下它底层主要是实现了什么把数据加上。2.今天主要介绍的是StringBuilder类中的其他源码的方法分析,接下来我们来看看源码吧。3.关于AbstractStringBuilder的源码的解析,可以参照我上篇文章的分析,地址:htt...
2019-09-08 14:14:15 510
原创 关于java中的AbstractStringBuilder中的append()方法理解(源码分析)
一、背景1.关于AbstractStringBuilder是一个抽象实现类,所以不能直接new对象,接下来主要分析他的子类StringBuilder,来看下它底层主要是实现了什么把数据加上。2.今天主要介绍的是StringBuilder类中的append()方法,接下来我们来看看源码吧。二、源码解析append(int i)1.进入AbstractStringBuilder的子类S...
2019-09-07 22:03:51 1094
原创 String类中的split()等其他方法的详解(源码分析)
一、背景1.今天主要介绍的是String类中的split()方法,主要从源码的角度去分析这个方法底层到底做了些什么,下面我们就开始吧。2.其实看源码也能学到很多东西的,希望坚持下去。二、源码解析split(String regex)1.首先我们写一个str1.split(",")其中str1定义为"i,am,a,student",下面我们就开始跳进我们的源码,开始分析。1.第一...
2019-09-03 22:34:27 1968 1
原创 String类中的compareTo()方法的详解(源码分析)
一、背景1.集合的排序方法之前总结过,请参考我之前的博客:https://blog.csdn.net/chenmingxu438521/article/details/89785791。2.今天主要介绍的是String类中的compareTo()方法,主要从源码的角度去分析这个方法底层到底做了些什么,下面我们就开始吧。二、源码解析compareTo(String str)1.首先我...
2019-09-02 21:28:24 1919
原创 String类中的equals与contentEquals的区别(源码分析)
一、两者区别1.String的equals()不仅比较这个字符串的内容还检查另一个被比较的对象是否是String类型。2.String的contentEquals()只比较两者的内容是否相同,不检查被比较对象的类型。二、String的equals()方法1.定义一个String str = "student",比较"student".equals(str),接下来我们直接看源码。...
2019-09-02 08:57:12 1206
原创 一、NIO编程的理解
一、NIO与IO的区别1.NIO是在IO的基础上进行改进,NIO是一个可以替代标准IO API的API(从Java 1.4开始),NIO提供了与标准IO不同的IO工作方式。2.NIO是一个非阻塞的IO(通道+缓冲区),面向缓冲区的,而IO是阻塞的,面向流。二、代码测试1.BufferTest.java/** * 缓冲区是NIO 提高给传输文件和通道一起配合使用,存储数据.&...
2019-09-02 08:56:48 387
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人