
JVM语言
文章平均质量分 55
Java
abcnull
INTP男,好结交志趣相投的朋友,微信:a463279708,希望能共同努力进步!你们的支持将是我写下去的不竭动力......
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java中concurrent包常用的集合类操作
常规的集合类,比如 ArrayList,HashMap 当作为多线程下共享的变量时候,操作它们时会涉及线程安全的问题。典型应用:存储热点数据,避免重复计算;适合:读多写少的场景(因为写操作时复制底层数组,读操作无需加锁)适合:需要频繁读写的线程安全的场景。原创 2025-06-01 18:55:25 · 224 阅读 · 0 评论 -
java synchronized关键字用法
它为了解决多线程环境下资源的竞争问题。通过互斥锁机制,确保同一时间只有一个线程可以执行同步的代码。线程对共享变量的修改会立即刷新到主内存中,其他线程可以立即看到最新的值。锁对象:当前类的 Class 对象(如 MyClass.class)锁对象:可以灵活指定(如 this、Class 对象或自定义对象)锁对象:当前实例对象(this)原创 2025-06-01 18:36:18 · 300 阅读 · 0 评论 -
java 多线程中的volatile关键字作用
jvm 规定,每个线程有自己的工作内存(本地缓存),对变量的读写一般在自己的工作内存(本地缓存)中进行,如果一个线程修改了共享变量的值,其他线程可能无法立即看到最新的值,因为工作内存(本地缓存)还未被更新的原因。假设 A,B 线程同时执行,假设按照操作1 - 2 - 3 - 4 这样的操作顺序执行下来,线程B看到 flag == true 时,a 应该已经被赋值为 1,所以 b 的值是 1,输出 1。volatile 声明的变量,写操作时强制将变量的修改立即刷新到主内存;原创 2025-06-01 17:58:32 · 237 阅读 · 0 评论 -
java ExecutorService线程池使用(ExecutorService/Completable异步+ExecutorService线程池)
使用自定义配置的线程池,// 核心线程数// 最大线程数// 非核心线程空闲存活时间// 有界队列// 拒绝策略,默认就是拒绝策略// 创建自定义线程池unit,workQueue,handler// 创建自定义线程池(周期性执行)unit,workQueue,handlerCPU 密集型:CPU 核心数 + 1(减少上下文切换)IO 密集型:2 * CPU 核心数(线程常阻塞,需更多线程)根据系统资源设置,避免资源耗尽(如 corePoolSize * 1.5)原创 2025-06-01 16:45:21 · 875 阅读 · 0 评论 -
java CompletableFuture创建异步任务(Completable异步+ExecutorService线程池)
推荐根据业务需求配置10, // 核心线程数20, // 最大线程数60L, TimeUnit.SECONDS, // 空闲线程存活时间new LinkedBlockingQueue<>(100), // 任务队列new ThreadPoolExecutor.CallerRunsPolicy() // 拒绝策略如果使用自定义线程池,确保在任务完成后关闭线程池(executorService.shutdown())原创 2025-06-01 12:46:10 · 216 阅读 · 0 评论 -
java中自定义注解
/ 元注解:定义注解的行为@Retention(RetentionPolicy.RUNTIME) // 注解在运行时保留,可通过反射读取@Target(ElementType.METHOD) // 注解只能用于方法上// 成员变量(带默认值)@Service@LogExecution("创建用户")原创 2025-05-28 16:24:35 · 231 阅读 · 0 评论 -
java8函数式接口(函数式接口的匿名实现类作为某些方法的入参)
是 Java 8 引入的核心概念之一,指的是 仅包含一个抽象方法的接口。它可以被 @FunctionalInterface 注解标记(可选),但即使不标记,只要满足“只有一个抽象方法”的条件,编译器也会将其视为函数式接口函数式接口可以作为 Lambda 表达式的目标类型往往通过 lambda 表达式的写法,使用一个匿名类,来实现一个函数接口。原创 2025-05-26 21:58:25 · 308 阅读 · 0 评论 -
idea本地debug断点小技巧
idea本地debug断点小技巧。原创 2025-05-20 20:02:46 · 561 阅读 · 0 评论 -
tomcat 目录结构组成
现在非常多的 java web 服务部署在 linux 服务器中,我们服务器中的 tomcat 会有各种文件路径,看下它有哪些文件。原创 2025-04-02 16:52:33 · 456 阅读 · 0 评论 -
java服务生产环境内存陡增排查
你的线上服务某时候开始内存陡增,这个时候你很着急,该怎么办?原创 2024-05-18 13:02:40 · 1326 阅读 · 1 评论 -
maven settings.xml文件(包含了配置阿里云镜像)
注意你要是编辑这块位置需要给 iterm2 或者终端开放磁盘完全访问权限,否则创建文件会失败。如果是编辑 settings.xml 文件,那么需要 chmod 一下。「安全性设置」-「完全磁盘访问权限」原创 2023-09-25 18:54:48 · 1178 阅读 · 0 评论 -
appium自动化中常用的adb命令
文章目录查看连接的设备adb devices抓取包名和 Activityadb logcat | grep -i 'display'安装 appadb install apk路径卸载 appadb uninstall 包名杀掉 adb 进程adb kill-server重启 adb 服务adb start-server电脑发送到手机adb push 电脑路径 手机路径手机发送到电脑adb pull 手机路径 电脑路径手机重启adb reboot...原创 2020-09-09 10:17:02 · 83 阅读 · 0 评论 -
Mac M1安装android sdk
我在网上找了一圈,没有找到合适的 sdk,要么是版本太老,要么是其他原因,后来我直接通过我的 idea 中进行下载,idea 中搜索 android sdk 即可下载。edit 进行安装,之后等待,好了之后进入此路径中,发现 adb --version 正常了。主题你如果在网上下载一些老版本的 sdk,会发现 adb 执行不了,因为不支持 m1 的原因。我这边是 MacBook pro M1芯片的电脑,需要安装android sdk。原创 2023-04-02 16:52:35 · 861 阅读 · 0 评论 -
Mac安装java并配置环境变量
Mac安装java并配置环境变量原创 2023-01-11 15:36:41 · 891 阅读 · 0 评论 -
HttpClient + TestNg 单接口测试框搭建尝试和 GitHub 源码分享
文章目录GitHub 源码框架结构大致思想使用注意重点内容项目缺陷GitHub 源码源码地址:api-auto-test如有意见或建议可以私聊~框架结构api-auto-test - src - main - java - com.abcnull.apiautotest - beans【配置文件或表格的 bean】 - PropertiesBea...原创 2019-12-26 20:40:54 · 703 阅读 · 0 评论 -
HttpClient的简单样例展示
文章目录写在前面实现 GET 请求实现 POST 请求写在前面其实本身 jdk 自带的 net 库是可以实现 http 接口请求的,但是实现起来过于繁琐,httpclient 依赖很好的解决了这个问题,它本身是 Apache Jakarta Common 下的子项目。配合 httpclient 使用的还有 gson 和 fastjson,二者都是可以做对象转 json 和 json 转对象的工作,gson 是谷歌研发的依赖,性能虽然比不过 fastjson 但是效果上是绝对没有问题的,fastjson原创 2020-07-26 19:02:58 · 387 阅读 · 0 评论 -
正则中的捕获组和非捕获组
捕获组和非捕获组文章目录捕获组非捕获组捕获组简单理解正则中()中即为一个捕获组String text = "<textarea rows=\"20\" cols=\"70\">nexus maven repository index properties updating index central</textarea>";String reg = "<textarea.*?>.*?</textarea>";Pattern p = Pattern.原创 2021-05-14 11:48:29 · 677 阅读 · 0 评论 -
mac电脑安装安卓调试桥adb
文章目录第一步:先安装 homebrew 软件包管理工具第二步:安装 adb 工具第三步:验证是否成功第一步:先安装 homebrew 软件包管理工具ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"第二步:安装 adb 工具brew cask install android-platform-tools第三步:验证是否成功adb devices...原创 2020-11-16 20:54:31 · 540 阅读 · 0 评论 -
Failure [INSTALL_FAILED_USER_RESTRICTED: Install canceled by user]‘; Code: ‘1‘错误解决
文章目录本人在使用 appium 测试真机时候报出的错误信息Failure [INSTALL_FAILED_USER_RESTRICTED: Install canceled by user]’; Code: ‘1’大致原因是我是小米系统,需要自己打开开发者选项中的 USB 安装否则在使用 appium 的时候会出现上述报错信息,开启后就正常了,因为开启后实际手机上也需要受程序控制安装 appium 的...原创 2020-08-05 10:17:18 · 686 阅读 · 0 评论 -
手机真机开启开发者模式并开启usb调试
文章目录这里以小米 8 为例子,系统 android 9,MIUI 11设置->我的设备->全部参数->快速连按 MIUI 版本就会显示已经打开了开发者模式设置->搜索开发者选项->我们开启开发者选项和开启 USB 调试即可(还有 USB 调试(安全设置)可以打开)...原创 2020-08-05 09:24:15 · 3058 阅读 · 0 评论 -
解决emulator\qemu\windows-x86_64\qemu-system-x86_64.exe: icmpv6 ICMP6_ECHO_REQUEST fail
文章目录背景介绍解决措施背景介绍本人设置了环境变量 ANDROID_SDK_HOME 并且把新文件夹的路径配好了,它用于做 avd 设备的存储路径,我将其放在 d 盘,之后我再 ide 中启动模拟器,下载 apk 的时候报错emulator\qemu\windows-x86_64\qemu-system-x86_64.exe: icmpv6 ICMP6_ECHO_REQUEST fail解决措施由于我的 avd 设备在ANDROID_SDK_HOME/.android/avd中,其中还有个 ini原创 2020-07-05 00:31:42 · 2751 阅读 · 0 评论 -
解决Failed to open .ini file C:\Users\xxx\.android\emu-update-last-check.ini for writing.
文章目录问题背景解决措施原因思考问题背景本人使用的是比较新的版本的 sdk,集成在 idea 中运行,本人的环境变量是通过配置 ANDROID_AVD_HOME 把 avd 设备专门放到一个地方,但是我发现每次 idea 启动模拟器报出警告Emulator: emulator: WARNING: IniFile.cpp:235: Failed to open .ini file C:\Users\xxx\.android\emu-update-last-check.ini for writing.解原创 2020-07-04 14:58:35 · 3362 阅读 · 0 评论 -
解决报错PANIC: Missing emulator engine program for ‘x86‘ CPU.
文章目录背景介绍解决办法背景介绍本人使用比较新的 android sdk,安装在了 d 盘,然后我自己通过设置环境变量使得 avd 设备存放于 d 盘,本人在 ide 中启动模拟器是没有问题的,模拟器使用的是 x86 架构,但是当我通过 cmd 的 emulator 命令启动设备时候就会报出错误PANIC: Missing emulator engine program for 'x86' CPU.解决办法...原创 2020-07-04 12:43:40 · 3625 阅读 · 1 评论 -
windows下安装配置android sdk
文章目录前言下载 android sdk配置环境变量其他前言目前移动端市场几乎被 android 和 IOS 两大主流阵营所占据,这里我主要做 android sdk 环境的配置安装讲解下载 android sdk我这里提供 sdk 两个下载的地方softonic 下载 sdk腾讯开放平台下载 sdk配置环境变量第一步我们先设置一个环境变量名字ANDROID_HOME,然后我们变量值写D:\JavaTools\androidSDK,当然这是我自己的 sdk 安装的文件夹。然后我们再在PA原创 2020-07-01 16:15:25 · 607 阅读 · 0 评论 -
adb.exe is obsolete and has seriousperformance problems with the android emulator. please update to
文章目录前言显示的错误原因解释解决方式前言我在几年前下载过 sdk,之后有好一段时间没有使用,然后最近使用时候,我先是将模拟器和 idea 配置好,当我打开模拟器时,出现警告类型的弹框,我怀疑是 sdk 版本太低了显示的错误错误的文本如下:adb.exe is obsolete and has seriousperformance problems with the android emulator. please update to a newer version to get signifi原创 2020-07-01 00:23:04 · 2353 阅读 · 0 评论 -
Cannot find AVD system path. Please define ANDROID_SDK_ROOT错误的解决
文章目录前言先说出现这种错误的原因再说解决最后我们谈一下为什么大家都会遇到这种错误前言我在网上看到各种这种错误的报错以及解决方案,搜了几百条没有一条说道正点上去,我也是服气,由于我也遇到了这个错误,所以我打算从原因到解决思路好好的总结一下先说出现这种错误的原因因为模拟器开始启动的时候会在某个特定目录下去寻找你创建的 avd 设备,试想一下要是这几个特定的路径你没有配置进环境变量不就会出现这种错误了!正是这个原因,神坑模拟器启动时候会按照如下顺序查找模拟器设备的路径$ANDROID_AVD_H原创 2020-06-14 14:02:30 · 4183 阅读 · 3 评论 -
飞机大战安卓游戏简介以及 GitHub 源码分享
文章目录IndependentPlaneGameGitHub 地址:[IndependentPlaneGame](https://github.com/abcnull/IndependentPlaneGame)介绍关键代码特色待优化界面IndependentPlaneGameGitHub 地址:IndependentPlaneGame介绍此项目完成比较久远,当初使用 Android Stu...原创 2019-12-09 10:34:06 · 2169 阅读 · 0 评论 -
View实现单击双击和触屏移动
View实现单双击和触屏移动 我们知道常见的有View、SurfaceView、GLSurfaceView游戏开发框架,View可以做一些简单的游戏,SurfaceView做一些稍微复杂一点存在多种线程实现的游戏,GLSurfaceView制作一些3D的游戏。我们做一些简单的小游戏用View就足够了,但是我们会发现View触屏可以监听按下、弹起和触摸事件,双击事件什么的似乎没有直接提供,...原创 2018-05-25 22:49:37 · 1112 阅读 · 0 评论 -
Android游戏中最简单的碰撞检测
Android游戏中最简单的碰撞检测 由于本人在本科毕业时候做的毕设是一个小游戏,其中就有碰撞检测的实现,如下代码,先自己写一个可以得到碰撞点的方法getCollidePoint(Sprite s)返回的是Point类,之后只要这个碰撞点是存在的,则表示两个游戏的精灵发生了碰撞。逻辑比较简单,用得到了sdk的graphics包下的setIntersect()方法看是否相交。//得...原创 2018-05-23 23:39:57 · 1885 阅读 · 0 评论 -
Android游戏添加音乐
Android游戏添加音乐 安卓游戏添加背景音乐并且不断循环播放://播放音乐 private void playMusic(){ MediaPlayer mediaPlayer; try{ //创建音乐媒体对象 mediaPlayer = MediaPlayer.creat...原创 2018-05-22 19:29:50 · 1321 阅读 · 4 评论 -
求游戏界面的FPS帧率
求游戏界面的FPS帧率 下面代码是我在做本科毕业设计时候写的计算FPS帧率的方法,代码比较好理解,在整个项目里头注意有许多的属性。 在整个项目里头还有lastTime属性,保存有最近的上一次计算帧率的时刻,有lastFrame为最近的上一次计算帧率时的帧数,有frame表示游戏绘制到第几帧了。//得到FPSpublic int getFPS(){ //得到当前时刻 ...原创 2018-05-22 19:02:05 · 981 阅读 · 0 评论 -
Android两张图片渐变实现
Android两张图片渐变实现 下面代码实现从bg1.png到bg2.png经过4000ms的转变。主要用到了android.graphics.drawable.TransitionDrawable.TransitionDrawable类//得到此View下的资源Resource res = getResource();//图片渐变对象TransitionDrawable i...原创 2018-05-22 18:48:49 · 3148 阅读 · 0 评论 -
游戏中精灵随机产生常用的方法
游戏中精灵随机产生常用的方法下面代码是我在做毕业设计时候的代码,用java写的,选取关键部分,用到了Math.random()。int[] nums = {0,1,2,3};/*Math.random()取0-1浮点数,**floor是向下取整,**index是数组下表,**type是数组中的元素*/int index = (int)Math.floor(nums.l...原创 2018-05-22 18:24:42 · 969 阅读 · 0 评论 -
android编程添加点击事件的4种方法
android程序中View的点击事件共有四种,除了在布局文件中为按钮设置属性外还有另外3种都用到了OnClickListener接口,只不过形式不同而已。1.在布局文件中为按钮设置点击事件在绑定的布局xml中有相应<Button />中添加android:onClick="click"之后在与xml布局绑定的Activity中添加方法public void click(View v...原创 2018-02-15 14:19:52 · 8560 阅读 · 0 评论 -
jsonpath的简单使用
文章目录简介操作符/函数/运算法操作符函数过滤器运算符示例简介Jsonpath 提取解析 Json 的神器引入依赖:<dependency> <groupId>com.jayway.jsonpath</groupId> <artifactId>json-path</artifactId> <version>RELEASE</version></dependency>操作符/函原创 2020-12-13 00:05:50 · 457 阅读 · 0 评论 -
fastjson的基本使用
文章目录简介常用 APIBean<=>String 举例Bean 转 Json 格式的 StringJson 格式的 String 转 BeanJSONObject简介fastjson 是阿里巴巴开源的一款工具,前后端在进行数据传输交互的时候,常常会遇到 String 和 Json 格式的相互转化依赖引入:<dependency> <groupId>com.alibaba</groupId> <artifactId>fast原创 2020-12-12 23:13:00 · 441 阅读 · 0 评论 -
java泛型简述
文章目录概述泛型类 class Demo泛型接口 interface Demo泛型方法 其他泛型通配符 <?>泛型类中的泛型方法概述泛型是 java 中非常重要的概念,在面向对象编程和设计模式中有非常广泛的运用泛型即参数化类型,操作的数据被指定为一个参数,可以用在类,接口和方法中,分别称为类泛型,接口泛型,方法泛型泛型只在 java 编译阶段起作用,编译之后程序去泛型化,泛型不会进入到程序的运行阶段T 可以随便写为任意标识,常见的如 T、E、K、V 等形式的参数常用于表示泛型,但是传入原创 2020-12-08 17:47:46 · 376 阅读 · 1 评论 -
java的gc垃圾回收机制
文章目录前言java 内存概况完整 gc 回收的过程其他前言java 和 cpp 有个很大的不同就是 java 程序在运行时候不需要程序员编写代码来处理内存的回收释放,java 在 jvm 的基础上增加了垃圾回收 gc 机制,会在合适的时间段触发垃回收器,这提高了代码的安全性,也使得 java 编程更容易了java 内存概况栈内存(线程私有)栈内存数据共享,但线程中是私有的。代码运行时候,每调用一个方法都会在栈内存创建一个栈内存块(栈帧),栈帧由局部变量,操作数,帧数据构成。栈内存满足 FI原创 2020-10-08 23:15:55 · 415 阅读 · 0 评论 -
java中String到底存放在栈中还是堆中?
文章目录第一种第二种== 以及 equals第一种String str = new String("helloworld");new 的这种写法会在堆中创建对象,然后栈中保存堆中的地址第二种String str = "helloworld";这种写法,会现在栈中创建一个引用变量 str,然后查找栈中有没有 “helloworld” 这个字符串,如果有,str 指向它,如果没有就会将 “helloworld” 存进栈,str 再指向它== 以及 equals所以我们在使用==时候比较的实际原创 2020-09-11 17:28:47 · 571 阅读 · 0 评论 -
java面向对象四大特性
文章目录前言封装继承多态抽象前言java 是一个可跨平台(基于 JVM)的应用广泛的(尤其是 web 服务端开发)面向对象的静态语言java 一个非常重要的特点就是面向对象,java 面向对象有四大特性:封装,继承,多态,抽象封装就是对一个事务共有的特性进行了封装,封装有 field 和 function封装可以保证其安全性继承子类向父类继承可以提高代码的重用性,子类对父类的继承,相当于对父类属性的扩展java 中不支持多重继承多态一种事务在多种情况下的不同表现形式比如说多个类对原创 2020-09-11 16:55:34 · 115 阅读 · 0 评论