JAVA
文章平均质量分 70
ssuqin001
特立独行
展开
-
Android AudioService安全音量设置逻辑
还原出厂设置后,第一次启动安卓系统会自动降音量设成10,导致开机时音量不一致问题。原因:安全音量逻辑将音量设置为10转载 2023-03-06 15:24:44 · 541 阅读 · 1 评论 -
java实现CRC16 MODBUS校验算法
最近进行led彩屏通讯开发,接触到CRC16算法计算校验码,先附上两篇网上可用的代码 /** * 计算CRC16校验码 * * @param bytes * @return */ public static String getCRC(byte[] bytes) { int CRC = 0x0000ffff; int POLYNOMIAL = 0x0000a001; int i, j;转载 2021-09-08 21:30:07 · 2673 阅读 · 1 评论 -
2021-07-08
SVN几个重要文件夹说明: 我们一般习惯性在创建repository仓库后,再在刚才创建的仓库里面再创建trunk、branches、tags这三个文件夹,而不是直接将项目提交到仓库的根目录下(虽然直接将项目分享到仓库的root根目录下也是可以的,但是我们一般不这么做)。主要目的是:为了给项目各个阶段,各个版本归类、分阶段存储、并行开发。trunk文件夹: 主干,我们一般把项目提交到此文件夹里面,在trunk中开发。branches文件夹:分支,我们一般把那些需要打分支,但是有可能会修...转载 2021-07-08 15:47:18 · 106 阅读 · 0 评论 -
Jackson快速入门
Java生态圈中有很多处理JSON和XML格式化的类库,Jackson是其中比较著名的一个。虽然JDK自带了XML处理类库,但是相对来说比较低级,使用本文介绍的Jackson等高级类库处理起来会方便很多。引入类库由于Jackson相关类库按照功能分为几个相对独立的,所以需要同时引入多个类库,为了方便我将版本号单独提取出来设置,相关Gradle配置如下。ext { jacksonVersion = '2.9.5'}dependencies { compile group: '...转载 2021-03-25 13:03:33 · 718 阅读 · 0 评论 -
Version 1.8.0_251 of the JVM is not suitable for this product. Version 11 or greater is required
Version 1.8.0_251 of the JVM is not suitable for this product. Version 11 or greater is required解决方法:在–launcher.appendVmargs下添加 (注意添加位置哦,严格按照下图的位置添加,保证没问题。具体原因啊,我也不是很清楚哦)-vmC:\Program Files\Java\jdk-15.0.1\bin\javaw.exe本文转载自:https://www....转载 2021-03-11 15:35:03 · 1080 阅读 · 0 评论 -
java中的.class文件的生存周期是怎样的(即类加载到类释放的过程)
1、一个类的生命周期2、主动引用和被动引用3、什么时候类(.class)被释放?1、一个类的生命周期(类加载到类释放)类从被加载到虚拟机内存开始,到卸载出内存为止,其生命周期如下:加载是“类加载”的一个阶段。虚拟机完成事件:1) 通过类的全限定名获取定义此类的二进制字节流(获取方式多样);包;网络,典型引用Applet;运行时计算生成,如动态代理;其他文件生成;数据库读取。。。2) 将该字节流代表的静态存储结构转化为方法区的运行时数据结构;3)在内存中生成一个该类的转载 2021-03-01 17:07:26 · 409 阅读 · 0 评论 -
javap 获取JNI方法签名
JNI动态注册时需要方法签名,可以自己手写,但是出错的概率比较高,也可以使用javap命令自动生成。找到要获取签名的Java class文件,比方MainActivity.class,进入包名的上一级目录。执行以下命令:javap -s com.jianshu.qianlang.jnitutorial.MainActivity输出结果如下,其中descriptor便是动态注册时需要的方法签名://... public native java.lang.String stringFromJNI()转载 2021-02-26 14:45:11 · 358 阅读 · 0 评论 -
JAVA类:我是如何被ClassLoader加载到内存的
前言之前看到阿里的一个面试题,JAVA类的双亲委派加载机制是什么?有什么好处?工作这么久,还不知道一个JAVA类如何被加载到内存并运行起来的有点羞愧。不懂但是会搜索啊,这篇文章就这样诞生了。本文主要总结了JAVA的类加载模型(classLoader),一个类的加载过程。ClassLoaderr定义我们用eclipse或idea编写一个xxx.java文件,通过编译器编译成xxx.class文件,ClassLoader就是用来加载这些class文件到内存当中的。三个默认ClassLoader转载 2021-02-24 16:36:46 · 237 阅读 · 0 评论 -
深入理解JVM之Java字节码(.class)文件详解
Understanding bytecode makes you a better programmer前言作为一个Java开发者,对技术的追求而不仅仅停留在会用API,会写基本功能上,要想在技术上有更高的造诣,就需要深入到原理层面去认识代码运行的机制。因此,本文从class字节码文件的结构入手,一步步来解剖二进制字节码的内部工作原理,这对深入理解JVM的运行机制大有裨益,同时,对于想要使用BCEL来动态改变Class字节码指令的工作也很有帮助(示例:JVM Class字节码之三-使用BCEL改变类转载 2021-02-24 16:28:02 · 1227 阅读 · 0 评论 -
开闭原则 依赖倒置原则_坚实原则:依赖倒置原则
开闭原则 依赖倒置原则到目前为止,我们只研究了单一职责,打开/关闭,liskov替换和接口隔离原则。依赖倒置是我们所要研究的最后一个原理之一。该原则指出答:高级模块不应依赖于低级模块。 两者都应依赖抽象。B.抽象不应依赖细节。 细节应取决于抽象。让我们开始一些违反该原理的代码。作为软件团队,我们需要实施一个项目。 目前,软件团队包括:后端开发人员 package com.gkatzioura.solid.di; public class BackEndDe...转载 2021-02-10 14:36:23 · 157 阅读 · 0 评论 -
我对动态代理的理解
一、动态代理的执行流程Proxy->代理类字节码->加载进内存,形成class->创建代理对象->调用代理对象接口->委托给InvocationHandler->调用InvocationHandler的invoke方法二、proxy只能代理接口,aspectj可以通过注解代理普通类三、动态代理使用场景1、有接口的情况下,使用proxy。2、没有接口的情况下,使用aspectj。四、走进Proxy源码看看(就看几点)1、代理类名进入Proxy原创 2021-02-08 15:54:32 · 407 阅读 · 1 评论 -
HashMap引发死链问题(HashMap、ConcurrentHashMap原理解析)
事故背景一个CPU使用率飙升至100%的线上故障,原因是在并发情况下使用HashMap导致死循环。当cpu使用率100%时,查看堆栈,发现程序都卡在了HashMap.get()这个方法上了,重启程序后问题消失。但是过段时间又会来。HashMap结构HashMap是我们经常会用到的集合类,JDK 1.7之前底层使用了数组加链表的组合结构,如下图所示:HashMap通常会用一个指针数组(假设为table[])来做分散所有的key,当一个key被加入时,会通过Hash算法通过key算出这个数..转载 2021-02-01 17:20:48 · 880 阅读 · 0 评论 -
java卫语句
概念卫语句就是把复杂的条件表达式拆分成多个条件表达式,比如一个很复杂的表达式,嵌套了好几层的if - then-else语句,转换为多个if语句,实现它的逻辑,这多条的if语句就是卫语句.示例public void find Boyfriend(Man man){ if(man.isUgly()) { System.out.println("本姑娘是外貌协会的资深会员"); return; } if(man.isPoor()) { System.out.println("贫贱夫妻百原创 2021-01-29 14:38:56 · 466 阅读 · 0 评论 -
ThreadLocal
在阅读Handler源码时发现了这么一个东西,本想直混在其他博客中一笔带过,但仔细想了下这个东西还是蛮重要的,于是开了这篇博客。ThreadLocalthreadlocal使用方法很简单static final ThreadLocal<T> sThreadLocal = new ThreadLocal<T>();sThreadLocal.set()sThreadLocal.get()threadlocal而是一个线程内部的存储类,可以在指定线程内存储数据,数据转载 2021-01-29 11:28:11 · 137 阅读 · 0 评论 -
Java内存的一点理解, 静态方法和实例方法的区别及使用场景
注意:变量指基本数据类型非对象,局部变量不能被静态修饰1、(静态)成员变量存放在data segment区(数据区),字符串常量也存放在该区2、非静态变量,new出来的对象存放在堆内存,所有局部变量和引用地址存放在栈内存3、方法(包括静态方法)存放在code segment(方法块),存放代码片段,且只存放一次public class Cat { //private static int sid = 0; private int sid = 0; private St转载 2021-01-23 17:59:56 · 331 阅读 · 0 评论 -
Java 四种线程池newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor
介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用。本文是基础篇,后面会分享下线程池一些高级功能。1、new Thread的弊端执行一个异步任务你还只是如下new Thread吗?new Thread(new Runnable() { @Overridepublic void run() {// TODO Auto-generated method stub}}).start();那你就out太多了,new Thread的弊端如下:a.转载 2021-01-07 14:21:54 · 251 阅读 · 0 评论 -
java中写入文件时换行符是用“/r/n“还是“/n“?
/r 叫回车 Carriage Return/n 叫新行 New Line但是都会造成换行使用 System.getProperty(“line.separator”)来获取当前OS的换行符,可以在调试的情况下看到!各系统应当是:/r Mac/n Unix/Linux/r/n Windows这种输出的主要表现在用notepad打开时的显示。使用其他编辑器则没有明显变化!!在winodws下,如果用"/n",则会显示成如下:如果使用"/r/n",则会显示出换行的效果。原转载 2020-12-31 16:49:17 · 504 阅读 · 0 评论 -
【Java】父类子类初始化问题
父类子类初始化问题例子: public class Test8 extends Base{ private String name = "dervied"; public Test8() { tellName(); printName(); } public void tellName() { System.out.println("Dervied tel转载 2020-12-30 16:50:33 · 536 阅读 · 0 评论 -
写一个网络请求架构,通用实现思路
1、用线程池管理网络请求(ThreadExcutor)2、请求结果可以借助接口等,传递到调用层。3、缓存请求下来的数据,和对应的requestId建立映射。4、缓存中有数据,或者已有相同requestId没执行完成,则用改requestId去请求数据,会被拒绝。5、用泛型去管理请求参数。...原创 2020-12-29 17:48:52 · 207 阅读 · 0 评论 -
java线程池ThreadPoolExecutor类使用详解
在《阿里巴巴java开发手册》中指出了线程资源必须通过线程池提供,不允许在应用中自行显示的创建线程,这样一方面是线程的创建更加规范,可以合理控制开辟线程的数量;另一方面线程的细节管理交给线程池处理,优化了资源的开销。而线程池不允许使用Executors去创建,而要通过ThreadPoolExecutor方式,这一方面是由于jdk中Executor框架虽然提供了如newFixedThreadPool()、newSingleThreadExecutor()、newCachedThreadPool()等创建线程池转载 2020-12-28 21:35:33 · 123 阅读 · 0 评论 -
内部类之局部内部类只能访问final的局部变量
1.首先来了解一下局部内部类是如何访问局部变量的Person类是外部类,LoInClassIntf是接口,localInClassRe是Person类的成员方法,且返回值类型为LoInClassIntf;方法内定义了一个局部内部类LoInnerClass,该内部类实现了接口LoInClassIntf;方法内还定义了一个final的局部变量a,定义了一个LoInnerClass类型的对象引用loInC;代码如下: 1 //笔记23:内部类--局部内部类--实现接口,返回内部类对象转载 2020-12-15 19:57:59 · 1735 阅读 · 0 评论 -
一个对象到底占多少内存?
内存是程序员逃不开的话题,当然Java因为有GC使得我们不用手动申请和释放内存,但是了解Java内存分配是做内存优化的基础,如果不了解Java内存分配的知识,可能会带偏我们内存优化的方向。所以这篇文章我们以“一个对象占多少内存”为引子来谈谈Java内存分配。文章基于JDK版本:1.8.0_191文章标题提出的问题是”一个对象到底占多少内存“,看似很简单,但想说清楚并不容易,希望本文的探讨能让你有收获。在开始之前我还是决定先提一个曾经阴魂不散,困扰我很久的问题,了解这个问题的答案有助于我们理解接.转载 2020-10-12 14:18:19 · 1041 阅读 · 0 评论 -
https://blog.csdn.net/az44yao/article/details/102792359
原创链接:https://blog.csdn.net/az44yao/article/details/102792359线程安全的单例模式常见写法是双重检查加锁。代码如下:class Singleton { private volatile static Singleton singleton; private Singleton(){} public static Singleton getInstance(){ if(...转载 2020-06-15 09:37:27 · 540 阅读 · 0 评论 -
android添加java-library,在控制台输出乱码
原创链接:https://blog.csdn.net/xingwei08246/article/details/78599901解决办法,在java工程目录下的build.gradle添加如下代码,然后重新运行一遍。1.新版gradletasks.withType(JavaCompile) {options.encoding = “UTF-8”}2.旧版gradleta...转载 2020-05-05 00:09:57 · 3161 阅读 · 0 评论 -
java文件有关UTF-8编码编译失败、非法字符:'\ufeff'、乱码等问题
原创链接:https://blog.csdn.net/lordofadventure/article/details/104281135目录一、命令行乱码与chcp指令二、UTF-8与BOM头三、java编码方式与活动代码页的编码冲突四、后续补充参考文献一、命令行乱码与chcp指令cmd命令行中有时会发生乱码的情况,这是由于需要显示的字符不在当前代码页的字符集中,在...转载 2020-05-05 00:01:09 · 2298 阅读 · 0 评论 -
JDK8下载及其环境配置
JDK8是编程Java的必要软件,在网上有查找很多有关的知识,但都不太好,因为我实在是太新手了,那些大佬不理解新手需要什么。这里把我坎坷后的成功经验分享出来供大家参考。JDK8的下载1.直接百度JDK8,选择第一个 oracle jdk 8 - Java SE Development Kit 8 - Downloads .或者网址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html转载 2020-05-03 22:30:19 · 4666 阅读 · 6 评论 -
既然synchronized是"万能"的,为什么还需要volatile呢?
原创链接:https://blog.csdn.net/mifffy_java/article/details/9994494601 synchronized的问题我们都知道synchronized其实是一种加锁机制,那么既然是锁,天然就具备以下几个缺点:1.1 有性能损耗虽然在JDK 1.6中对synchronized做了很多优化,如适应性自旋、锁消除、锁粗化、轻量级锁和偏向锁等,...转载 2020-04-06 22:26:51 · 610 阅读 · 0 评论 -
Java锁---偏向锁、轻量级锁、自旋锁、重量级锁
之前做过一个测试,反复执行过多次,发现结果是一样的:1. 单线程下synchronized效率最高(当时感觉它的效率应该是最差才对);2. AtomicInteger效率最不稳定,不同并发情况下表现不一样:短时间低并发下,效率比synchronized高,有时甚至比LongAdder还高出一点,但是高并发下,性能还不如synchronized,不同情况下性能表现很不稳定;3. L...转载 2020-04-06 15:57:02 · 116 阅读 · 0 评论 -
Could not load TestContextBootstrapper [null]. Specify @BootstrapWith's 'val
基于SpringBoot+maven搭建的后台项目,在打包的过程中报Could not load TestContextBootstrapper [null]. Specify @BootstrapWith's 'val的问题,通过参考相关资料,如:http://blog.csdn.net/u013939884/article/details/70214093。猜测可能是Spring的版本和S原创 2017-10-08 10:10:40 · 8123 阅读 · 2 评论 -
Java后台开发工具集
MyEclipse代码开发和调试工具Navicat连接数据差Securecrt远程连接linux操作命令Winscp上传图片原创 2017-08-30 19:59:59 · 746 阅读 · 0 评论 -
Java中的泛型方法
泛型是什么意思在这就不多说了,而Java中泛型类的定义也比较简单,例如:public class Test{}。这样就定义了一个泛型类Test,在实例化该类时,必须指明泛型T的具体类型,例如:Test t = new Test();,指明泛型T的类型为Object。 但是Java中的泛型方法就比较复杂了。 泛型类,是在实例化类的时候指明泛型的具体类型;泛型方转载 2017-03-05 12:17:47 · 353 阅读 · 0 评论