
java基础
文章平均质量分 75
weixin_43751710
这个作者很懒,什么都没留下…
展开
-
布隆过滤器
这是因为布隆过滤器的设计原理决定了它是一种空间效率极高的概率型数据结构,用来测试一个元素是否“可能”存在于集合中。布隆过滤器(Bloom Filter)在设计时,其容量是固定的,因此不支持直接扩容。传统的布隆过滤器一旦创建,它的位数组大小就无法改变,这意味着如果需要处理的数据量超过了初始化时预设的容量,将导致误报率增加,且无法通过简单地增大位数组来解决这个问题。在标准的布隆过滤器(Bloom Filter)实现中,包括基于Java实现的RBloomFilter或其他变体,转载 2025-05-07 14:11:06 · 25 阅读 · 0 评论 -
JVM的安全点和安全区域
在达到安全点时,所有线程会被挂起(暂停)。安全点是JVM在执行过程中可以安全地。转载 2025-02-21 11:34:36 · 218 阅读 · 0 评论 -
内部类
为什么会需要内部类内部类提供了多重继承的可能。Java中的继承是单继承,只能继承一个直接父类,但通过内部类,我们可以实现多继承。内部类的使用场景内部类的几种形式类中的内部类局部内部类匿名内部类套嵌类...原创 2020-12-31 16:31:20 · 109 阅读 · 0 评论 -
java中各种数据类型是怎么存放在内存的?
https://www.cnblogs.com/xiohao/p/4278173.html转载 2020-04-11 18:26:18 · 342 阅读 · 0 评论 -
线程的基本操作
线程启动start线程终止join说它是终止线程可能不是很准确,join的含义是:t.join()方法只会使主线程进入等待池并等待t线程执行完毕后才会被唤醒。并不影响同一时刻处在运行状态的其他线程。线程等待唤醒wait线程唤醒notify线程睡眠sleep...原创 2020-04-11 11:45:01 · 270 阅读 · 0 评论 -
线程安全在JVM中的体现
JVM线程安全问题转载 2020-04-10 10:29:38 · 354 阅读 · 0 评论 -
AOP详解
AOP简介AOP也就是面向切面,意思是做出一些通用的功能,如打印日志等,应用于所有需要的地方。传统的面向对象,在每个对象里进行打印日志,重复且无意义。AOP实现的思路,拦截住一些需要使用打印日志功能的方法,使用动态代理,对原本的方法加入了打印日志的操作。AOP具体使用方法先定义一个切点,也就是需要拦截的地方。围绕着切点,进行日志打印,共有五种执行日志打印的时机:before(前置通知...原创 2020-03-01 13:43:38 · 195 阅读 · 0 评论 -
Java中的四种引用类型
Java中的四种引用类型强引用,GC时不回收,可能造成内存泄漏,可直接取得对象软引用,GC时可能回收(视内存情况),不会发生内存泄漏,通过 get()方法取得对象弱引用,GC时一定回收,不会发生内存泄漏,通过 get()方法取得对象虚引用,可能回收,可能造成内存泄漏,无法取得对象1. 强引用(StrongReference)如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空...转载 2020-04-08 20:07:04 · 188 阅读 · 0 评论 -
java中是值传递还是引用传递
java中都是值传递。Java的参数传递,不管是基本数据类型还是引用类型的参数,都是按值传递,没有按引用传递!如果是引用类型,传递的是引用的复制,但是也是指向同一个地址,修改也是可以生效,但也是值传递。https://www.cnblogs.com/9513-/p/8484071.html...转载 2020-04-08 19:47:53 · 137 阅读 · 0 评论 -
String的intern()方法
String中的intern方法一.intern方法的用途关于字符串String中的intern方法,是当常量池中不存在"abc"这个字符串的引用,将这个对象的引用加入常量池,返回这个对象的引用,当常量池中存在"abc"这个字符串的引用,返回这个对象的引用。java中获取String常量池中常量有两种方法:一个是通过双引号定义字符串例如:String S = “1”;一个是String的in...转载 2020-04-08 19:20:28 · 258 阅读 · 0 评论 -
泛型
常见的泛型各种容器类:List、Set、Map都是泛型类。泛型有三种使用方式,分别为:泛型类、泛型接口、泛型方法。泛型的特性Java中的泛型仅仅是一个编译时的概念,在运行时,所有的泛型信息都被消除了,这被称为泛型擦除。在Java中实现泛型机制的目标是为了可以把发现 bug 的时机提前到编程源码时,而不是运行时。如果在编译时就可以发现 bug ,就可以节省大量的调试Java程序的时间,因为...转载 2020-04-05 21:59:26 · 128 阅读 · 0 评论 -
java交换两个数的位置不用第三个变量
int x = 10;int y = 15;System.out.println("x="+x+" y="+y);x = x+y;//x= 10+15=25y = x-y;//y= 25-15=10x = x-y;//x= 25-10=15System.out.println("x="+x+" y="+y);结果:x=10 y=15x=15 y=10https://bl...转载 2020-04-05 21:27:56 · 442 阅读 · 0 评论 -
如何处理子线程的异常
如何处理子线程的异常子线程自己处理异常,通过 try catch 捕获异常打印日志。给某个thread设置一个UncaughtExceptionHandler,通过这个Handler处理异常。如果是用Callable,通过Future的get方法捕获异常(推荐)。1.子线程自己处理异常子线程出了异常的时候,主线程是不知道的,所以子线程需要自己处理自己的异常。也就是在子线程中 try ...转载 2020-03-28 10:12:37 · 992 阅读 · 0 评论 -
Lock原理
Lock原理转载 2020-03-25 08:54:53 · 440 阅读 · 0 评论 -
位操作符
按位操作符按位与 :&按位或 :|按位非 :~按位异或 :^按位与 :&两个操作数中位都为1,结果才为1,否则结果为0。如:129转换成二进制就是10000001,128转换成二进制就是10000000。根据与运算符的运算规律,只有两个位都是1,结果才是1,可以知道结果就是10000000,即128。按位或 :|两个位只要有一个为1,那么结果就是1,否则就为0...转载 2020-03-15 10:22:39 · 152 阅读 · 0 评论 -
java基本类型的占用空间
java基本类型的占用空间以及按位与等操作转载 2020-03-15 09:51:56 · 122 阅读 · 0 评论 -
死锁示例
## 死锁示例public class DeadLockTest { public static void main(String[] args) { C a = new C(); C b = new C(); A aClass = new A(a, b); B bClass = new B(a, b); ...原创 2020-03-07 12:31:34 · 120 阅读 · 0 评论 -
sleep与wait的区别
转自:https://blog.csdn.net/kangkanglou/article/details/82221301sleepsleep方法定义在java.lang.Thread中,作用于当前线程让当前线程休眠指定时间。休眠时间的准确性依赖于系统时钟和CPU调度机制。不释放已获取的锁资源,如果sleep方法在同步上下文中调用,那么其他线程是无法进入到当前同步块或者同步方法中的。...转载 2020-03-05 09:56:50 · 115 阅读 · 0 评论 -
动态代理的简单示例
场景场景是你想向女神告白,但不会告白的技巧。现在一共有三种可行方案:你自己告白找代理替你告白(简单代理)你自己学习告白技巧,升级自己(动态代理)0.告白的接口//告白的接口interface Love{ void doLove();}1.你自己告白你自己告白,只会一句“我爱你”,简单直接会失败//这是原本的告白,太简单会失败class DoLove impl...原创 2020-03-01 10:47:45 · 150 阅读 · 0 评论 -
Java的重载
重载为什么要有重载的出现呢?其中一个原因是,对于类的构造器来说,所有的构造器名称都是一样,但是需要有不同的功能,因此重载必不可少。重载看起来很简单,但在java中也有几个需要注意的地方。区别重载方法对于两个同名的方法,java如何进行区分呢?很简单,Java根据不同的参数列表区分不同的同名方法,因此,每个同名方法的参数列表必然是独一无二的。甚至是不同的参数顺序,也足以区分两个方法。...原创 2020-02-28 08:16:10 · 191 阅读 · 0 评论 -
反射用法详解(遍历对象属性,调用方法,实例化对象)
场景如下:有一个类A,它有50个属性!我需要对每个属性进行赋值操作……手动进行的话,代码是在太冗长了。反射实现:List<A> aList = new ArrayList<>();Class clazz = A.class;Field[] fields = clazz.getDeclaredFields();A a = new A();for(int col ...原创 2020-02-22 12:08:11 · 425 阅读 · 1 评论 -
类加载、初始化的过程(包括static成员对象)
类加载、初始化的过程因为之前对类加载这块不感兴趣,感觉实际应用中又用不到……但工作后发现并非如此,因此学习总结一下——类加载和初始化的过程让人很绕,有些搞不明白。首先要明白,类的加载和初始化是两个过程。(菜鸡如我一直都很糊涂)。1、类加载、初始化的时机时机就是第一次使用类时,一般包括两种情况:首次创建A对象时首次A的静态成员(如 i )首次被访问时下面列出四种可能的情况:pub...转载 2020-02-04 12:22:49 · 2622 阅读 · 0 评论 -
java获取当前时间或明天时间戳的方法
一种方式是:new Date().getTime()但是它不精准,下面是获取明天这个时候的Datenew Date(new Date().getTime() + (1000 * 60 * 60 * 24))另一种是:System.currentTimeMillis()这个更加的精准,下面是获取明天这个时候的Datenew Date(System.currentTimeMilli...原创 2020-01-30 17:19:34 · 3000 阅读 · 0 评论 -
为啥AtomicInteger底层用的volatile,但是可以进行++的操作呢
为啥AtomicInteger底层用的volatile,但是可以进行++的操作呢?众所周知,用volatile时,对volatile的操作最好不要涉及到volatile自身。但AtomicInteger它有一个方法incrementAndGet,它却可以对自己进行++。可以看到,它调用了unsafe的getAndAddInt,这个相当于乐观锁,比较内存中的内容是否一样,如果一样就改掉,这是...原创 2020-01-30 17:01:13 · 688 阅读 · 0 评论 -
fork/join在lambda语句中的应用
https://www.jianshu.com/p/ef2eb256840dhttps://www.cnblogs.com/linlinismine/p/9295701.htmlforkJoin在lambda语句中也有所应用,是在parallelStream这个里面有应用1、fork/join的设计思路 了解一个框架的第一件事,就是先了解别人的设计思路!fork/join大体的...转载 2020-01-27 14:52:13 · 454 阅读 · 0 评论 -
Example格局条件添加查询条件,类似Mybatis的if标签
BrandDataStatisticsExample.Criteria criteria = example.createCriteria();criteria.andBrandHallIdEqualTo(Long.parseLong(brandName));if(!erp.equals(ADMIN)){ criteria.andBrandHallIdIn(brandUidList);...原创 2020-01-27 10:20:48 · 1018 阅读 · 0 评论 -
double小数点后面为0的话,去掉小数点后面的,保留整数
现在一个需求,double类型的数值,如果小数点后面为0,则去掉小数点后面的数字,保留整数。String quotaStr = "0";Double quota = couponBatchVO.getQuota();Integer quotaInt = quota.intValue();if(quota - quotaInt > 0){ quotaStr = quota.to...原创 2020-01-27 10:19:29 · 6049 阅读 · 0 评论 -
Arrays.asList得到的list无法在进行add操作
List name = Arrays.asList(“xxx”,“yyy”,“zzz”);这样的话这个list的size就固定了,不能再add了,要注意。为啥呢?参考:https://www.cnblogs.com/one-lightyear/p/7513013.htmlArrays.asList生成的ArrayList是自己写的,继承了AbstractList但是没有实现add的方法……...转载 2020-01-27 10:14:19 · 496 阅读 · 0 评论 -
AOP应用到日志try...catch..的问题
可以对所有service或者是rpc结尾的类,写一个AOP在方法执行前后try catch并打印日志。但是,这个try catch不会影响到原流程,也就是说,rpc里该抛异常还是抛,不会因为aop里try catch了就不抛了。AOP是不会影响到原流程的。...原创 2020-01-27 10:11:33 · 1088 阅读 · 0 评论 -
乐观锁的应用
乐观锁的话,我们都知道是什么原理,但是它在开发中到底是如何应用的呢?其实并没有想象中那么复杂,反而使非常简单。CAS,需要比较内存位置、预期值、新值,在java的concurrent系列中有所应用。但在开发中更常用的版本号机制。乐观锁中版本号机制的应用,其实非常简单,就是在数据库的表中多加了一个字段:version(版本号)。每次修改时比较数据库的version是否修改过即可。在所有的修改操...原创 2019-12-29 09:19:34 · 646 阅读 · 0 评论 -
layer.open时看不到弹出框的关闭按钮
今天遇到两个问题。第一个,layui.open时,打开的框框没有关闭按钮!同时还有一个问题是ajax调用action的时候,出现返回码302,访问不到的情况。这两个问题看起来并没有什么联系。我们知道layui想让框框出现关闭按钮其实很简单,只要设置closeBtn: 1,就可以了。但是我的代码的确是这样:那为什么是没有关闭按钮呢?鼓捣了一上午,下午终于找到原因,原来是关闭按钮的背景...原创 2019-12-15 21:38:18 · 6508 阅读 · 0 评论 -
不能用get方法访问@RequestBody修饰的http接口
和前端联调的时候,前端总是说我的接口有问题,访问不到,我就很纳闷,我就可以访问啊……搞了半天终于发现是前端使用的Get方式访问……而我的接口是@RequestBody修饰的参数@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。...转载 2019-12-15 21:35:37 · 1804 阅读 · 0 评论 -
或与非的优先级
刚好与“或与非”倒过来,优先级最高的是非,然后是与,然后是或https://blog.csdn.net/li198847/article/details/52548811转载 2019-12-15 21:31:15 · 3063 阅读 · 0 评论 -
Double类型的数值,如果小数点后面为0,则小数点
现在一个需求,double类型的数值,如果小数点后面为0,则去掉小数点后面的。方法如下:String quotaStr = "0";Double quota = couponBatchVO.getQuota();Integer quotaInt = quota.intValue();if(quota - quotaInt > 0){ quotaStr = quota.toS...原创 2019-12-09 09:16:36 · 1354 阅读 · 0 评论 -
String 和 Integer两种引用类型在方法中可以被赋值吗?
遇到一个问题:本以为String是引用类型,当做传参在方法中被改变后,它本身也会改变(就像一般的对象一样),但事实并非如此。因为String是不可变类。不可变类如果改变了是被重新给了地址,而不是改变地址中的值。(其他的不可变类也是如此,如Integer、Double等基本类型的包装)示例:public class StringTraining { public static void ...转载 2019-12-09 09:10:04 · 461 阅读 · 1 评论 -
POI大批量读取、写入Excel
数据量变大的时候,普通的处理方法都会出现问题,POI也不例外。一次性读出或写入的数据太多的话,可能会导致内存溢出,因为POI是把数据放在内存里的。不过POI提供了相应的解决办法:写入大量数据的方法:使用SXXFWorkbook,而不是03或07版Excel对应的类,SXXFWorkbook是专门为大批量写入数据准备的。通过设置SXXFWorkbook的构造参数,可以设置每次在内存中保持...转载 2019-11-18 22:56:41 · 2616 阅读 · 0 评论 -
手动抛出异常
正常来说,如果没有对异常进行处理,程序运行时出现了异常,就会自动抛异常。处理异常的两种方式:try{……}catch{……}throws Exception但是try{……}catch{……}是会捕获异常,但不自动抛出异常,因为异常在catch里被处理了。如果需要抛出异常,就需要我们手动在catch中抛出异常:语句为:throw new RuntimeException();...转载 2019-11-18 22:39:00 · 267 阅读 · 0 评论 -
抽象类和接口
抽象类和接口有啥区别和共同的呢?这是初学时经常会遇到的一个问题https://baijiahao.baidu.com/s?id=1620965468190584914&wfr=spider&for=pchttps://blog.csdn.net/SnailMann/article/details/80231593区别:抽象类:抽象类使用abstract修饰;只能被继...转载 2019-11-16 23:32:36 · 105 阅读 · 0 评论 -
为什么不能有魔法值
因为会让其他看代码的人非常迷惑,这个常量到底是什么意思……不易于代码的维护比如一个status,如果直接写,if(status == 2){}可能你知道2是“已结束”,但是别人不知道啊……看代码的人(维护的人)会很难受...转载 2019-11-13 17:17:24 · 597 阅读 · 1 评论 -
@RequestBody的用法
@RequestBody的用法@RequestBody是后端的controller接收参数时用到的它的作用是前端的JSON数据转换为java对象的,不仅转换普通的java bean,也可以是List而且是通过post的方式接收参数,如果不加的话,就是默认通过get的方式接收参数@RequestBody和@RequestParam()的区别@RequestBody用于接收放在HTTP的请求...转载 2019-11-13 17:15:08 · 350 阅读 · 0 评论