
java
Qgwperfect
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java枚举释意
// public enum Animal = public final class Animal extends java.lang.Enumpublic enum Animal { CAT, // CAT = public static final Animal = new Animal("CAT",1); DOG, // DOG = public static final Animal = new Animal("DOG",1);}原创 2021-07-05 19:19:12 · 226 阅读 · 0 评论 -
java中 0.6552的数据类型是什么
默认为double类型,float类型需要自己定义:0.6332fdouble是基本数据类型,Double是原始数据类型double没有方法,Double有自己的属性和方法double只创建引用,Double创建对象集合类不能存放double,只能存放Doubledouble存放在栈中,Double存放在堆中栈的存取速度要高于堆,另外栈中的数据可以共享如:doublea=0;doubleb=0;不会创建对象,只会建立两个引用,同时指向变量“0”(栈数据共享)而Doubl...转载 2020-08-19 23:09:15 · 4020 阅读 · 0 评论 -
问题
public class Example { private String str = new String("good"); private char[] ch = {'a', 'b', 'c'}; public static void main(String[] args) { Example example = new Example(); example.change(example.str, example.ch); .原创 2020-08-19 23:04:13 · 305 阅读 · 0 评论 -
java中((NULL)null).say()能运行吗?
先上代码,下面代码能运行吗?public class NULL { public static void say() { System.out.println("null say: haha"); } public static void main(String[] args) { // TODO Auto-generated method stub ((NULL)null).say(); }}作者看到这个时,没经过思考就觉得不能,而且还觉得这个问题很扯蛋!答案是:能运行转载 2020-08-19 22:34:57 · 277 阅读 · 0 评论 -
Java中的String为什么是不可变的?
什么是不可变对象?众所周知, 在Java中, String类是不可变的。那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的。不能改变状态的意思是,不能改变对象内的成员变量,包括基本数据类型的值不能改变,引用类型的变量不能指向其他的对象,引用类型指向的对象的状态也不能改变。区分对象和对象的引用对于Java初学者, 对于String是不可变对象总是存有疑惑。看下面代码: String s = "ABCabc";.转载 2020-08-12 22:29:10 · 159 阅读 · 0 评论 -
Java中的checked异常和unchecked异常
(一)Java的异常层次结构 要想明白Java中checked Exception和unchecked Exception的区别,我们首先来看一下Java的异常层次结构。这是一个简化的Java异常层次结构示意图,需要注意的是所有的类都是从Throwable继承而来,下一层则分为两个结构,Error和Exception。其中Error类层次描述了Java运行时系统的内部错误和资源耗尽错误,这种错误除了简单的报告给用户,并尽力阻止程序安全终止之外,一般也米有别的解决办法了。最常用的五种Run..转载 2020-08-10 20:56:08 · 293 阅读 · 0 评论 -
现有一个二进制数,如何快速判断某位是0还是1?
现有一个二进制数,如何快速判断某位是0还是1? 比如:2345678,我要判断从右到左第3位是0 或 1,怎么快速判断?S:待判断的二进制数W:待判断的位(右往左)结果:((S>>(W-1)) & 1原创 2020-07-25 18:50:32 · 2277 阅读 · 0 评论 -
线程安全的时间处理类-DateTimeFormatter
Java 8 提供了新的日期时间 API,其中包括用于日期时间格式化的 DateTimeFormatter,它与 SimpleDateFormat 最大的区别在于:DateTimeFormatter 是线程安全的,而 SimpleDateFormat 并不是线程安全。DateTimeFormatter 如何使用:解析日期String dateStr= "2018年06月20日";DateTimeFormatter formatter = DateTimeFormatter.ofPattern转载 2020-07-23 12:01:38 · 1779 阅读 · 1 评论 -
SLEEP,WAIT,YIELD,JOIN的区别
1.sleep()方法在指定时间内让当前正在执行的线程暂停执行,但不放锁!!!!sleep()使当前线程进入阻塞状态,在指定时间内不会执行。sleep的时间到了之后,虽然不用抢锁了,但还要和其他线程抢CPU时间片,也就是说,下面的代码,每隔一秒打印一次当前时间,两次打印的间隔有可能超过1秒,即打印的时间不连续。import java.text.SimpleDateFormat;import java.util.Date;import java.util.Scanner;//线程1:每转载 2020-07-07 19:58:50 · 342 阅读 · 0 评论 -
java内存模型
read,load,use,assign,store,write可见性当线程1将data=0修改为data=1时,会write到主内存中,主内存发生变化后,线程2的工作内存会失效,并且data值会重新从主内存中加载原子性针对共享变量的执行必须是独立的,必须是执行完成之后,别人才能进行下一次的执行有序性有时候为了提高代码的执行效率,会将指令重排序,导致代码的顺序变乱,可以...原创 2020-03-29 18:29:55 · 310 阅读 · 0 评论 -
线程池原理
Executors.newFixedThreadPool(3) --> corePoolSize等于3当线程池为空的时候,新的任务执行,当线程数不大于corePoolSize,那么会在线程池创建新的线程执行这个任务,执行完毕会去阻塞等待等待队列里的任务,接着来新的任务,线程数不大于corePoolSize,继续会在线程池中创建新的线程执行这个任务,执行完成,阻塞等待等待队列里的任务,当线...原创 2020-03-29 13:56:10 · 185 阅读 · 0 评论 -
concurrentHashMap底层原理
concurrentHashMap默认实现了线程安全性在JDK1.7及之前的版本,使用的是分段锁会将一个大数组 数组[0-7],拆分成多个小数组 数组[0-3] 数组[4-7] -->每个数组对应一个锁不同的线程请求过来,线程1要put的位置是 数组[1],线程2要put的位置是 数组[4],所以线程1和线程2分别属于不同的锁,它们之间互不影响在JDK1.8及之后,做...原创 2020-03-29 11:58:58 · 388 阅读 · 0 评论 -
synchronized关键字底层原理
synchronized底层的原理,跟jvm指令和monitor有关系如果用到了synchronized关键字,在底层编译后的jvm指令中,会有monitorenter和monitorexit两个指令monitorenter// 代码对应的指令monitorexit每个对象都会关联一个monitor,比如一个对象实例就有一个monitor,一个类的Class对象也有一个mo...原创 2020-03-29 10:05:27 · 351 阅读 · 0 评论 -
Java处理手机号中间4位替换成*
public static void main(String[] args) { String phone = "13123456789"; String phoneNumber = phone.replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2"); System.out.println("正则phone中4*:" +...转载 2019-11-08 16:11:12 · 778 阅读 · 0 评论 -
怎么使用Java 8 Stream将List(Object)转成List(Map(String, Object))
问题描述:有一个用户列表List<User>,须将每个User部分字段提取出来,重新放入一个Map中,然后将生成的Map放入List中。原来代码如下:public static List<Map<String, Object>> toListMap(List<User> userList) { List<Map<Strin...转载 2019-10-22 19:19:03 · 4593 阅读 · 1 评论 -
java简单失败重试案例
public class RetryTools { private static final byte RETRY_COUNT = 3; public static Result execute(RetryInterface retry) { Result result = null; for (int retryCount = 1; retr...原创 2019-10-16 18:07:16 · 412 阅读 · 0 评论 -
线程池踩坑 - 作为实例成员或方法局部变量的误区
转自 https://blog.youkuaiyun.com/firefile/article/details/80747569本文目录:概述验证剖析小结概述线程池可以把线程复用起来,减少线程创建销毁的时间和资源消耗,提高了程序任务执行的吞吐率。就像线程属于全局使用的资源一样,线程池一般也是全局性,对整个应用进程的线程复用做有效的管理。设计者一般都会把线程池作为类的静态成员或者单例成员,...转载 2018-09-26 10:03:04 · 2035 阅读 · 0 评论 -
jaxb通过xsd文件生成实体类
执行如下命令即可生成java类:xjc–djava类的存放路径–p类的包名xsd文件名比如:C:\Program Files\Java\jdk1.8.0_121\bin>xjc -d d:\ -p com.test.request d:\student.xsd...原创 2019-05-13 09:56:33 · 858 阅读 · 0 评论 -
查找当前类所在的ClassPath的资源位置的一种方式
public class FindClassPathDemo { public static void main(String[] args) { getClassLocation(FindClassPathDemo.class); } private static void getClassLocation(Class<?> klass) ...原创 2019-06-19 18:15:15 · 288 阅读 · 0 评论 -
自定义ClassLoader
User实体类:public class User implements Serializable{ private long id; public long getId() { return id; } public void setId(long id) { this.id = id; }}CustomC...原创 2019-06-19 18:47:14 · 161 阅读 · 0 评论 -
Random在高并发下的缺陷以及JUC对其的优化
Random可以说是每个开发都知道,而且都用的很6的类,如果你说,你没有用过Random,也不知道Random是什么鬼,那么你也不会来到这个技术类型的社区,也看不到我的博客了。但并不是每个人都知道Random的原理,知道Random在高并发下的缺陷的人应该更少。这篇博客,我就来分析下Random类在并发下的缺陷以及JUC对其的优化。Random的原理及缺陷public static vo...转载 2019-06-12 11:11:13 · 128 阅读 · 0 评论 -
JVM内存结构,Java内存模型,Java对象模型
JVM内存结构JVM内存结构和Java虚拟机的运行时区域有关 Java内存模型Java的并发编程有关JMMJava Memory Model 是一组规范,需要各个JVM的实现来遵守JMM规范,以便于开发者可以利用这些规范,更方便的开发多线程程序 如果没有这样一个JMM内存模型的规范,可能经过不同JVM的不同规则的重排序之后,导致不同的虚拟机上运行的结果不一样JMM的...原创 2019-09-09 22:08:24 · 133 阅读 · 0 评论 -
char码值对应列表大全
Char("0") 为0的字符Char("1")Char("2")Char("3")Char("4")Char("5")Char("6")Char("7") 响铃Char("8") 回格Char("9") tab(水平制表符)Char("10") 换行Char("11") tab(垂直制表符)Char("12") 换页Char("13") 回车 chr(13)...转载 2019-09-26 19:51:29 · 1504 阅读 · 0 评论 -
System.getProperties()打印系统属性
官方文档API关于系统属性截图,对应属性中文名称对应实例中:在System类中通过getPropertiest()获取当前系统属性,该方法的返回值为Properties类型,在Properties中通过getProperty(Stringkey)方法获取属性值。关于获取系统属性API实例:package com.lanhuigu.java.system; import ...转载 2019-09-30 15:00:19 · 369 阅读 · 0 评论 -
request.getRequestURL()和request.getRequestURI()的区别
request.getRequestURL() 返回全路径request.getRequestURI() 返回除去host(域名或者ip)部分的路径request.getContextPath() 返回工程名部分,如果工程映射为/,此处返回则为空request.getServletPath() 返回除去host和工程名部分的路径比如:request.getRequestURL(...转载 2019-10-09 10:37:35 · 139 阅读 · 1 评论 -
java泛型
public <T>这个T是个修饰符的功能,表示是个泛型方法,就像有static修饰的方法是个静态方法一样。<T> 不是返回值,表示传入参数有泛型public static <T>list<T> aslist(T...a) 第一个表示是泛型方法,第二个表示返回值是list类型,而这个list有泛型,只能存t类型的数据泛型方法的使用示...转载 2019-10-10 17:39:17 · 148 阅读 · 0 评论 -
Java高效读取大数据文件---较优方法
数据背景,一个文件大小>=10G,每一行都是一个json对象数据如下:{"id":"C0D962","time":"2015-09-01 23:59:54","lon":"113.534","lat":"22.214",……}高效读取的方法:readLine()占用总时间的80%,使用BufferedReader,每次读入5M数据.减少IO.如:BufferedRead...转载 2019-05-06 09:39:26 · 3206 阅读 · 0 评论 -
数组查找的时间复杂度正确表述
数组适合查找操作,但是查找的时间复杂度并不为O(1),即便是排序好的数据,你用二分查找,时间复杂度也是O(logn),所以正确的表述是,数组支持随机访问,根据下标随机访问的时间复杂度为O(1)...原创 2019-04-25 09:12:00 · 5677 阅读 · 0 评论 -
单例双重检测成员变量【instance】为何用volatile修饰
public class Singleton1 { private static volatile Singleton1 instance; private Singleton1() { } public static Singleton1 getInstance() { // 第一次检测 if (null == instance) { ...原创 2019-04-19 16:11:10 · 373 阅读 · 0 评论 -
Java 浅拷贝和深拷贝的理解和实现方式
转自 https://www.cnblogs.com/shakinghead/p/7651502.html Java中的对象拷贝(Object Copy)指的是将一个对象的所有属性(成员变量)拷贝到另一个有着相同类类型的对象中去。举例说明:比如,对象A和对象B都属于类S,具有属性a和b。那么对对象A进行拷贝操作赋值给对象B就是:B.a=A.a; B.b=A.b;在程序中拷贝对象是...转载 2018-12-18 09:26:53 · 153 阅读 · 0 评论 -
一台java服务器可以跑多少个线程?
转自 https://www.jianshu.com/p/f1930596947d 一台java服务器能跑多少个线程?这个问题来自一次线上报警如下图,超过了我们的配置阈值。 打出jstack文件,通过IBM Thread and Monitor Dump Analyzer for Java工具查看如下: 共计1661个线程,和监控数据得出的吻合。但这个数量应该是...转载 2018-12-13 11:35:46 · 1890 阅读 · 0 评论 -
spring-rabbit.1.5.4 Exchange的type属性
spring-rabbit.1.5.4.RELEASE的Exchange类的type属性还不支持表达式解析类RabbitListenerAnnotationBeanPostProcessor的如下方法原创 2018-11-16 10:18:28 · 304 阅读 · 0 评论 -
java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal res
当BigDecimal的divide方法进行除法,如果不整除,当出现无限循环小数时,就会抛异常java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result解决的办法就是给divide方法设置精确的小数点比如:XXX.divide(XXX, 5,...原创 2018-11-14 16:30:43 · 166 阅读 · 0 评论 -
java.lang.UnsupportedClassVersionError: com/google/common/util/concurrent/ThreadFactoryBuilder : Uns
报错信息java.lang.UnsupportedClassVersionError: com/google/common/util/concurrent/ThreadFactoryBuilder : Unsupported major.minor version 52.0jdk1.7 使用guava 20.0&lt;dependency&gt; &lt;groupId&gt;com...原创 2018-10-15 11:28:03 · 4557 阅读 · 0 评论 -
并发框架Disruptor场景应用
今天用一个停车场问题来加深对Disruptor的理解。一个有关汽车进入停车场的问题。当汽车进入停车场时,系统首先会记录汽车信息。同时也会发送消息到其他系统处理相关业务,最后发送短信通知车主收费开始。看了很多文章,里面的代码都是大同小异的,可能代码真的是很经典。以下代码也是来源网络,只是自己手动敲的,加了一些注释。代码包含以下内容:1) 事件对象Event2)三个消费者Handler3)一个...转载 2018-09-25 16:44:00 · 745 阅读 · 0 评论 -
并发框架Disruptor快速入门
并发框架Disruptor快速入门转自https://blog.youkuaiyun.com/qq_19558705/article/details/77116949什么是DisruptorDisruptor它是一个高性能的异步处理的开源并发框架,能够在无锁的情况下实现网络的Queue并发操作。可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式的实现,或者事件监听模式的实现。...转载 2018-09-25 15:33:34 · 277 阅读 · 0 评论 -
java Unsafe类中compareAndSwap相关介绍
转载自 https://blog.youkuaiyun.com/sherld/article/details/42492259最近在看jdk7中java.util.concurrent下面的源码中,发现许多类中使用了Unsafe类中的方法来保证并发的安全性,而java 7 api中并没有这个类的相关介绍,在网上查了许多资料,其中http://ifeve.com/sun-misc-unsafe/这个网站详细...转载 2018-08-06 13:53:32 · 163 阅读 · 0 评论 -
【java并发编程实战】—–线程基本概念
转自 http://cmsblogs.com/?p=1638学习Java并发已经有一个多月了,感觉有些东西学习一会儿了就会忘记,做了一些笔记但是不系统,对于Java并发这么大的“系统”,需要自己好好总结、整理才能征服它。希望同仁们一起来学习Java并发编程,共同进步,互相指导。在学习Java并发之前我们需要先理解一些基本的概念:共享、可变、线程安全性、线程同步、原子性、可见性、有序性。...转载 2018-07-13 11:24:21 · 152 阅读 · 0 评论 -
spring-data-redis整合jedis对应版本
本人亲测,整合成功:原创 2017-07-12 08:47:52 · 6173 阅读 · 1 评论 -
匿名内部类例子
public interface TestInterface { void childChanged();}public class TestMain { public static void main(String[] args) { TestInterface testInterface = new TestInterface() { @Override pu...原创 2019-02-27 17:57:27 · 403 阅读 · 0 评论