Java
文章平均质量分 84
zhangjianming2018
这个作者很懒,什么都没留下…
展开
-
Android Studio 项目引入ProtoBuf(附序列化与反序列化)
打开CMD 进入 protobuf-3.21.5\java 目录下, 输入命令: mvn package 也可以直接进入此文件夹中按住shift+鼠标右键选择在此处打开命令窗口再输入命令,然后要等待一会,最终出现了成功的窗口 如图。一直听说protobuf的优点 体积小 速度快 是这个的几十倍 那个的上百倍,一直以来的项目场景也很少遇到需要如此高性能的通信,但是也需要研究一下,万一哪天要写个 IM 呢,神器 就是神器。然后把这个文件放入工程里吧,要跟上面proto里包的目录一致!原创 2022-09-12 02:11:56 · 1156 阅读 · 1 评论 -
Java基础篇——Java运算符
当int 类型的数据进行左移的时候,当左移的位数大于等于32位的时候,位数会先求余数,然后再进行左移,也就是说,如果真的左移32位 12345原创 2022-08-29 23:32:12 · 490 阅读 · 0 评论 -
多线程之callable详解
肯定不行,后端可以把3个块的信息,包装成一个接口,全部返回,那么问题来了,后端调用3个接口,比如第一个接口需要1秒,第二个需要2秒,第三个需要3秒,那么包装的这个接口响应时间最少6秒,怎么解决这个问题呢,可以用多线程来帮我们解决。启动3个线程,每个线程去调用一个接口,那么3个线程一共执行完的时间就是最慢的那个线程的执行时间,这样接口的响应时间就变成了3秒,一下节省了一半的时间。线程没有执行完,也就是没有到达COMPLETING的状态,会执行LockSupport.park,让线程等待,那什么时候去唤醒呢?原创 2022-08-19 13:48:30 · 598 阅读 · 0 评论 -
ExecutorService详解
在我们的日常开发中,难免会使用到线程,部分还会用到多线程并发问题。我们知道,线程的创建和释放,需要占用不小的内存和资源。如果每次需要使用线程时,都new 一个Thread的话,难免会造成资源的浪费,而且可以无限制创建,之间相互竞争,会导致过多占用系统资源导致系统瘫痪。不利于扩展,比如如定时执行、定期执行、线程中断,所以很有必要了解下ExecutorService的使用。原创 2022-08-19 13:41:57 · 620 阅读 · 0 评论 -
FutureTask详解
如果任务还没有启动就调用了cancel(true),任务将永远不会被执行。3、已完成:FutureTask正常执行结束,或者FutureTask执行被取消(FutureTask对象cancel方法),或者FutureTask对象run方法执行抛出异常而导致中断而结束,FutureTask都处于已完成状态。state:表示当前任务的运行状态,FutureTask的所有方法都是围绕state开展的,state声明为volatile,保证了state的可见性,当对state进行修改时所有的线程都会看到。转载 2022-08-19 13:31:31 · 637 阅读 · 0 评论 -
Unsafe的一些使用技巧
先大概介绍这三个 Unsafe 用法吧,已经是我个人认为比较常用的几个 Unsafe 案例了。Unsafe 这个东西,会用的人基本都知道不能瞎用;不会用的话,看个热闹,知道 Java 有这个机制总比不知道强对吧。当然,本文也介绍了一些实际场景可能必须得用 Unsafe,但更多还是出现在各个底层源码之中。...转载 2022-08-05 15:19:38 · 975 阅读 · 0 评论 -
Double.doubleToLongBits()方法使用
该方法可以将double类型数据转换成long类型数据,从而可以使double类型数据按照long的方法判断大小(, ==)。原创 2022-08-05 11:44:43 · 960 阅读 · 0 评论 -
Caused by: org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input l
Caused by: org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1 at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:218) at org.yaml....原创 2020-04-05 23:13:36 · 3911 阅读 · 0 评论 -
JUnit单元测试实现多线程
在JUnit的@Test方法中启用多线程,新启动的线程会随着@Test主线程的死亡而死亡!导致没有任何输出解决方法1. 在@Test方法中每创建一个线程,就join一下,这样我们新建的线程不死亡,Test主线程也不会死亡。2. 让主线程睡眠一会,等待其它线程结束后本线程在结束3. 使用CountLatch等同步器同步一下,让主线程等其它线程结束后在结束其它方法,总之就是让@Test的线程...原创 2020-03-09 01:25:36 · 625 阅读 · 0 评论 -
java poi cell.getCellTypeEnum() 日期处理的问题
一般情况我们在获取单元格值的时候 会通过 cell.getCellTypeEnum() 提前判定一下单元格的类型 ,从而决定应该如何取值。但当把单元格类型自定义的时候,出现了日期解析不出来的问题。如出生日期这一列,我自定义格式为 yyyy-mm-dd。 但解析出来是double类型,取值为数字。那么当程序校验日期的时候 就出现错误。因此不得不得再次处理一次cell....原创 2019-08-05 15:54:52 · 10993 阅读 · 0 评论 -
java.lang.IllegalArgumentException: ServletContext must not be null
系统刚刚整合了redis,实现集群下 session共享, 今天突然发现上传模块出现 无法获取servletcontext的问题,错误如下07-Jan-2019 15:55:06.106 SEVERE [http-nio-7777-exec-9] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() f...原创 2019-01-07 16:19:57 · 5070 阅读 · 0 评论 -
Arrays.asList contains() 泛型 基本型问题
来源:https://www.cnblogs.com/young-z/p/8465198.html最近在网上看到一个问题,情况类似如下(记为问题1):public class Demo { public static void main(String[] args) { System.out.println(testInteger(1)); ...转载 2018-08-02 14:51:25 · 1515 阅读 · 0 评论 -
DES对称加密 并发引起的 java.lang.IllegalStateException: Cipher not initialized 异常
项目在做高并发测试的时候,出现了异常如下,由于加密解密频繁 javax.crypto.Cipher 每次都要实例化,大量的实例化导致 Cipher 实例化失败。解决办法:将已经实例化的Cipher对象,放在hashmap中,每次实例化的时候从MAP 获取,不存在的时候再进行实例化,问题解决。2018-07-07 10:45:39.543 DEBUG org.mybatis.spring.SqlS...原创 2018-07-07 11:10:58 · 5844 阅读 · 0 评论