![](https://img-blog.csdnimg.cn/20200627102051447.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java编程
文章平均质量分 73
常规Java编程设计到的方方面面
[靖哥哥]
持续优化~
展开
-
jxl(2.6.10)导出Excel触发fullgc
jxl(2.6.10)导出Excel触发fullgc原创 2023-02-09 11:47:33 · 344 阅读 · 0 评论 -
JPA query between的多种方式(mongodb为例)
背景JPA+MongoDB查询,给定一段时间范围查询分页结果,要求时间范围包含。Page<Log> findByCtimeBetweenOrderByCtime( LocalDateTime startTime, LocalDateTime endTime, Pageable pageable);这时候打印的日志为:find using query: { "ctime" : { "$gt" : { "$date" : 1605682694000 }, "$lt"原创 2020-11-25 18:21:14 · 2226 阅读 · 0 评论 -
Java中的Unsafe类
文章目录概览方法分类初始化操作属性方法操作数组内存管理线程挂起和恢复内存屏障CAS机制使用利用反射修改启动参数概览Unsafe类使Java拥有了像C语言的指针一样操作内存空间的能力,一旦能够直接操作内存,这也就意味着:不受jvm管理,也就意味着无法被GC,需要我们手动GC,稍有不慎就会出现内存泄漏。Unsafe的不少方法中必须提供原始地址(内存地址)和被替换对象的地址,偏移量要自己计算,一旦出现问题就是JVM崩溃级别的异常,会导致整个JVM实例崩溃,表现为应用程序直接crash掉。直接操作内存,原创 2020-07-06 12:56:37 · 561 阅读 · 0 评论 -
Java常用的二进制位操作(左移、右移、无符号右移、加法、减法)
符号位最高位的bit代表符号位,0为正数、1为负,剩余的31bits则代表数字部分负数的表述对于负数而言(绝对值取反码再加一,此即为补码),是以补码的形式存储在内存中的。以-7(int)为例将-7的绝对值转化为二进制:0000 0000 0000 0000 0000 0000 0000 0111将上面的二进制以反码表示:1111 1111 1111 1111 1111 1111 1111 1000转化为补码:1111 1111 1111 1111 1111 1111 1111 1001原创 2020-07-05 15:17:38 · 1498 阅读 · 0 评论 -
Java中的位掩码BitMask
文章目录JDK源码的使用日常工作中的使用JDK源码的使用最近在JDK源码中闲逛,无意中看到了java.lang.reflect.Modifier这个类,这个类很简单,都是些常量定义和判断方法,于是扒了扒代码实现的含义,我们就看个isPublic方法吧:/** * Return {@code true} if the integer argument includes the * {@code public} modifier, {@code false} otherwise. * * @par原创 2020-07-03 23:06:02 · 1010 阅读 · 0 评论 -
理解与使用Treiber Stack
文章目录背景名称由来CompletableFuture源码实现FutureTask实现Treiber Stack抽象实现入栈出栈示例参考背景最近在很多JDK源码中都看到了Treiber stack这个单词。比如CompletableFuture中的:volatile Completion stack; // Top of Treiber stack of dependent actions比如FutureTask中的:/** Treiber stack of waiting th原创 2020-07-02 23:38:28 · 1041 阅读 · 0 评论 -
Sonar检测Math.abs(new Random().nextInt()) “Use the original value instead”
今天早上旁边同事喊我看一个Sonar检测出的问题:当时看了好几眼没觉得这个有太大问题,于是又看了下Sonar建议:这是说Math.abs()方法使用在数字上面可能返回最小值,觉得这个挺有意思的,于是Google一下:在Oracle docs: Unary Minus Operator -中有这么一段话:The integer operators do not indicate overflow or underflow in any way.整数的操作不会告诉我们向上溢出还是向下溢出。所以原创 2020-06-30 13:43:12 · 1691 阅读 · 2 评论 -
JPA使用之@Query的常用写法
文章目录常规修改使用冒号常规修改使用问号查询返回指定列第1种写法查询返回指定列第2种写法参考常规修改使用冒号@Modifying@Query("update StatisticsApply set status = :status where id = :applyId")void updateStatusByApplyId(@Param("applyId") Long applyId, @Param("status") Integer status);常规修改使用问号@Modifying@原创 2020-06-29 09:26:29 · 3997 阅读 · 0 评论 -
Java中的主线程
文章目录概览主线程怎么来控制主线程主线程和main()函数的关系主线程中的死锁(单个线程)概览前段时间有同事提到了主线程这个名词,但当时我们说的主线程是指Java Web程序中每一个请求进来时处理逻辑的线程。当时感觉这个描述很奇怪,所以就来研究下这个主线程的确切语义。Java提供了内置的多线程编程支持,多线程包括两个或多个可并发执行的部分,每一部分叫做线程,每个线程定义了单独的执行部分。主线程当一个Java程序启动的时候,会有一个线程立即开始运行,这个线程通常被我们叫做程序中的主线程,因为它是在我原创 2020-06-24 23:15:25 · 1092 阅读 · 0 评论 -
为什么Java不允许创建范型数组
文章目录问题示例变型(variant)数组中的变型范型中的变型结论问题示例List<Integer>[] intListArr = new ArrayList<Integer>[8]; // 编译时报错能看到这么看似没啥问题的一个简单语句甚至连编译都不会通过,为了能理解这里面的缘由,我们先得了解变型(Variant)的概念变型(variant)协变(covariant)允许在子类出现的地方用超类替换(A feature which allows to substitu原创 2020-06-14 16:22:13 · 732 阅读 · 1 评论