Java
文章平均质量分 74
Java
梦里藍天
不积跬步,无以至千里;不积小流,无以成江海
展开
-
MySQL大量数据偏移查询优化:从LIMIT偏移到基于ID的数据读取
在开发过程中,我们经常需要从数据库中查询大量数据,并进行分页展示或数据写入文件导出。传统的分页查询方法通常使用LIMIT语句结合偏移量(offset)来实现。然而,当数据量非常大时,这种方法会导致查询性能急剧下降,因为数据库需要扫描从起始行到偏移行之间的所有行才能找到需要的数据。本文将探讨如何从使用基于最后访问ID的分页方法,并提供Java代码案例。原创 2024-08-29 22:00:00 · 661 阅读 · 0 评论 -
java输出单片机ARGB8565格式的图片文件
ARGB8565 是一种颜色编码格式,它结合了 alpha(透明度)通道和 RGB(红绿蓝)颜色通道。在这种格式中,每个像素由 32 位表示,其中 alpha 通道占用 8 位,红色、绿色和蓝色通道分别占用 5 位、6 位和 5 位。这样的分配意味着你可以有 256 个不同的透明度级别(从完全透明到完全不透明),以及相对较少的 RGB 颜色级别。具体来说,ARGB8565 的位布局可能如下:Alpha 通道(透明度): 8 位,范围从 0(完全透明)到 255(完全不透明)。原创 2024-03-04 17:39:44 · 1104 阅读 · 2 评论 -
Can not create registry service-discovery-registry://*.*.*.*:2181/org.apache.dubbo.registry.Registry
dubbo-admin-0.6.0启动的时候报错:Can not create registry service-discovery-registry://*.*.*.*:2181/org.apache.dubbo.registry.RegistryService?……原创 2023-12-30 08:49:40 · 901 阅读 · 0 评论 -
java中右移>>和无符号右移>>>的区别
为什么右移与想要的结果不同,可以先看下《》,在Java,byte的表示的值为-2^7到 2^7-1,所以超过127整数是其本身减与其相差最小的256的倍数,在这里 251-256 = -5,右移动指定的位数后,左边空出的位用原来的符号位填充,所有第二个输出是错误的。为什么第三个输出的结果也是不正确的?首先我们看下改文件编译后的字节码文件:通过LineNumberTable对照可以看出,字节码文件的44-59之间是源文件19行的内容。原创 2023-08-14 18:40:11 · 361 阅读 · 0 评论 -
Could not load definitions from resource com/sun/javafx/tools/ant/antlib.xml. It could not be found
检查构建工具配置:如果您使用的是构建工具(如Maven或Gradle),请确保您的项目的构建文件中包含了正确的JavaFX依赖项。检查JavaFX模块路径:如果您使用的是Java 9或更高版本,并且您的项目使用了JavaFX,请确保您已经正确配置了JavaFX的模块路径。检查JavaFX路径配置:如果您使用的是旧版本的JavaFX(如JavaFX 8),请确保您已经正确配置了JavaFX的路径。您可以检查您的操作系统的环境变量设置,确保JavaFX的路径被正确添加。原创 2023-06-26 09:03:27 · 305 阅读 · 0 评论 -
springboot bean的生命周期
在Spring Boot中,Bean是一个由Spring IoC容器管理的对象。Bean可以是任何Java对象,包括数据访问对象,服务对象,控制器等。Spring Boot IoC容器负责创建,配置和管理这些Bean。当我们需要一个Bean时,我们可以在Spring Boot应用程序中注入它。Spring Boot Bean的生命周期是一个非常重要的概念,它可以帮助开发人员最大化利用Spring Boot框架的功能。原创 2023-06-07 18:13:41 · 991 阅读 · 0 评论 -
java线程屏障CyclicBarrier
CyclicBarrier允许一组线程在达到一个公共的屏障点时相互等待。它在涉及固定大小的线程组、并且这些线程必须相互等待的程序中非常有用,CyclicBarrier可以在等待的线程被释放后被重用。原创 2023-04-14 22:30:00 · 423 阅读 · 1 评论 -
java读写锁ReentrantReadWriteLock
在多线程的应用场景中,解决线程安全问题使用ReentrantLock就可以(),但是ReentrantLock是独占锁,同时只有一个线程可以获取该锁,而在写少读多的场景,显然ReentrantLock满足不了这个需求,所以ReentrantReadWriteLock应运而生。ReentrantReadWriteLock采用读写分离的策略,允许多个线程可以同时获取读锁。原创 2023-04-07 22:45:00 · 346 阅读 · 0 评论 -
java可重入锁ReentrantLock
ReentrantLock是一个可重入的独占锁,同一线程可重复获取锁的状态,该锁一次只能被一个线程所持有。原创 2023-04-07 19:30:00 · 360 阅读 · 0 评论 -
KindEditor 4.x 文件上传与文件空间 java语言演示程序
官方没有给Java的Demo,这次用到看这文档与PHP的Demo改了下,记录以备后面使用,没有文件排序的功能,在图片空间选择的地址不是完整的URL,可在KindEditor的js文件中把url = url.substr(host.length);原创 2023-02-15 16:30:45 · 237 阅读 · 0 评论 -
Could not initialize class org.apache.maven.plugins.war.util.WebappStructureSerializer
pom.xml第一行报错误:Could not initialize class org.apache.maven.plugins.war.util.WebappStructureSerializer,虽然不影响项目正常编译运行,但是这个红叉保存总归有点反感,这个错误的原因是Eclipse 和 Maven 插件(maven-war-plugin)的版本的兼容问题, eclipse从2021-03版本更新为2021-06版本后,如果Maven的版本还是在2.x 版本的话就会出现这个错误。原创 2023-01-12 14:23:13 · 1290 阅读 · 0 评论 -
Spring Cloud Alibaba 容器化部署最佳实践 | 本地部署版本详解
Seata 的 db 模式需要额外配置数据库信息以及修改 Seata 服务端的配置文件,且在新版本中配置文件相较于旧版本进行了合并,因此这里为了便于演示方便,采用 Seata 单机的。地址可以是下面配置的任意一个。在运行本地示例之前,需要保证本机具备以下的基础环境,如果您的本地没有当前的环境,下面会一步步进行搭建,演示搭建过程。至此,数据库的服务配置完毕,下面需要配置 Nacos 的配置中心有关所有的微服务配置文件。为了保证代码可以正常启动,请先配置好本机的 host 映射,在配置文件中新增如下的映射。原创 2022-11-28 19:31:03 · 1293 阅读 · 0 评论 -
Spring Cloud Alibaba 容器化部署最佳实践 | 本地部署版本 | Rocketmq组件安装
Apache RocketMQ 自诞生以来,因其架构简单、业务功能丰富、具备极强可扩展性等特点被众多企业开发者以及云厂商广泛采用。历经十余年的大规模场景打磨,RocketMQ 已经成为业内共识的金融级可靠业务消息首选方案,被广泛应用于互联网、大数据、移动互联网、物联网等领域的业务场景。原创 2022-11-28 19:17:27 · 752 阅读 · 0 评论 -
Spring Cloud Alibaba 容器化部署最佳实践 | 本地部署版本 | Seata服务端组件安装
Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。原创 2022-11-28 19:00:33 · 589 阅读 · 0 评论 -
Spring Cloud Alibaba 容器化部署最佳实践 | 本地部署版本 | Nacos组件安装
Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。原创 2022-11-28 18:03:24 · 270 阅读 · 0 评论 -
23种软件设计模式
设计模式:每一个设计模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动。设计模式的核心在于提供了相关问题的解决方案,使得人们可以更加简单方便的复用成功的的设计和体系结构记住四个基本要素:模式名称、问题(应该在何时使用模式)、解决方案(设计的内容)、效果(模式应用的效果)...原创 2022-07-07 21:32:36 · 2290 阅读 · 0 评论 -
RXTX如何使用并行端口进行通信,gnu.io.RXTXPort cannot be cast to gnu.io.ParallelPort解决方法
官方文档有错误,运行报错:gnu.io.RXTXPort cannot be cast to gnu.io.ParallelPort修改后的运行原创 2022-07-05 09:34:38 · 640 阅读 · 0 评论 -
JavaFX 应用启动时初始化更新UI
在JAVAFX启动时,有时想把应用开始的配置加载完毕,成功或者失败进行意识,一般写在start()方法中,由于Fxml模板绑定的是另一个controller,在Main的start方法在重新new或者静态方法等都无法获得UI线程,可以使用下面的方法:先看一下效果:启动类中的start方法@Override public void start(Stage primaryStage) throws Exception { FXMLLoader fxmlLoader = new FXMLLoader原创 2022-03-31 13:11:31 · 1239 阅读 · 0 评论 -
Java中的数据结构:数组与链表的区别
数组的定义数组(Array)是有序的元素序列。 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。 这些有序排列的同类数据元素的集合称为数组。数组是用于储存多个相同类型数据的集合。数组的特性数组分配在内存上要求必须是连续的数组在在创建时要申请创建的内存大小,如果使用量很小,就会造成内原创 2022-03-24 20:30:45 · 2328 阅读 · 0 评论 -
Java、elasticsearch、kibana、logstash、filebeat搭建数据分析平台
使用的版本JDK1.8elasticsearch-7.6.2filebeat-7.17.1kibana-7.6.2logstash-7.17.1不同版本对JDK有不同的要求,据我实验,ES7.6.2是JDK8支持的最高版本,其他几个没有测试是不是这个情况,下载程序百度一下即可,基本就是解压,然后配置,本文主要介绍下如何进行配置。关于每个软件是做什么用的可以自行百度。配置elasticsearch修改config/elasticsearch.yml文件cluster.name: ****原创 2022-03-11 18:21:13 · 2497 阅读 · 0 评论 -
kafka3.1.0 java 测试demo
前置条件首先已经安装的Java环境,并且安装了zookeeper服务注册中心。下载https://kafka.apache.org//当前最新版本3.1.0安装在windows解压后主要关注的是config文件下的server.properties文件,修改:broker.id=0 //只有一个kafka就不用改log.dirs = "" //自己要存的目录zookeeper.connect=localhost:2181//zookeeper没有改动的化默认就行启动bin/windo原创 2022-03-03 17:50:41 · 2625 阅读 · 0 评论 -
使用Redisson实现分布式锁
引入jar包 <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.11.1</version> </dependency>实现普通锁import org.redisson.Redisson;import org.redisson.api.RLock;i原创 2022-02-17 17:21:20 · 461 阅读 · 0 评论 -
升级Dubbo Spring Boot Starter » 2.7.15报错
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.dubbo.spring.boot.autoconfigure.DubboAutoConfiguration': Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: com/alibaba/sprin原创 2022-01-20 16:49:18 · 1473 阅读 · 0 评论 -
Netty Handler无法依赖注入 注入service对象失败
@Component //第一步 加入spring容器public class FpgaScoketServerHandler extends SimpleChannelInboundHandler<String>{ public static ChannelGroup channelGroup = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE); @Autowired //第二步 把dao加载进来原创 2022-01-15 10:18:43 · 1006 阅读 · 0 评论 -
elasticsearch-7.6.2 apache-skywalking-es7安装闭坑指南
elasticsearch-7.6.2 apache-skywalking-es7 这2个版本应该是目前支持JDK1.8的最高版本了,如果在选择比这版本高的版本应该需要更高的JDK。安装ESES安装非常简单,从官网下载下来解压,然后修改配置文件,主要是修改配置文件这需要搞明白哪些配置需要放开,哪些需要修改:config/elasticsearch.ymlcluster.name: XinXingES //需要和SkyWalking中的对应node.name: master //需要和cluster原创 2022-01-14 11:54:51 · 1621 阅读 · 0 评论 -
springboot 注解@Before和@After的用法
首先,新建一个需要切面拦截的方法,再这个方法执行前以及执行后我们需要无耦合的添加一些提前后滞后的处理。package com.fpga.java.api.impl;@Component@Service(timeout = 5000)public class FPGAComputeServiceImpl implements FPGAComputeService{ @Override public Map<String, String> send(int uid, String ch原创 2022-01-12 13:58:12 · 8284 阅读 · 0 评论 -
JavaCV精简配置,通过URL获取远程视频封面图片
<dependencies> <!-- https://mvnrepository.com/artifact/org.bytedeco/javacv --> <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv</artifactId> <version>1.5.6</versi..原创 2021-09-22 18:12:16 · 518 阅读 · 0 评论 -
Java进行音视频转码
FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方案。ffmpeg能解析的格式:asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等,而对于ffmpeg无法解析的文件格式wmv9,rm,rmvb等,我们在下面采用了mencoder工具,先将视频转换成AVI格式再用ffmpeg进行转码;转码工具下载地址:https://download.csdn.net/download/ren原创 2021-09-03 11:17:15 · 3365 阅读 · 0 评论 -
通过字节码来分析Java位移操作
字节位移字节位移是在一个字节二进制(只能是0和1)的基础上进行位的移动操作,一个字节有8位组成,理论上位移后空出的位由0不足。比如11111111,往左移1位(<<1)就应该是11111110,往右移一位(>>1)为011111111.实践都是在以下字节的前提下进行操作byte[] b = new byte[2];b[0] = (byte) 0xff;//255System.out.println(Integer.parseInt(Integer.toBinaryStri原创 2021-04-26 22:20:39 · 465 阅读 · 1 评论 -
通过字节码查看int/Integer是如何比较的,为什么nteger(127)==Integer(127)
先看下面三组比较public static void main(String[] args) { Integer i1 = 100; Integer i2 = 100; System.out.println(i1 == i2); Integer i3 = 200; Integer i4 = 200; System.out.println(i3 == i4); Integer i5 = 200; int i6 = 200; System.out.printl原创 2021-04-17 19:08:12 · 244 阅读 · 0 评论 -
一个无聊的面试题:throw与throws有什么区别
throw与throws有什么区别?就像雷锋与雷峰塔,Java与JavaScript的区别!!!throw:则是用来抛出一个具体的异常类型。throws 用来声明一个方法可能产生的所有异常,不做任何处理而是将异常往上传,谁调用我我就抛给谁代码:public class Demo { public static void main(String[] args) { new Demo().test(); } public void test() throws Exception{ th原创 2021-03-18 22:01:32 · 169 阅读 · 0 评论 -
Java clone浅克隆、clone深克隆、序列化深克隆
克隆(复制)在Java中是一种常见的操作,目的是快速获取一个对象副本。克隆分为深克隆和浅克隆。浅克隆:创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍指向原有属性所指向的对象的内存地址。深克隆:创建一个新对象,属性中引用的其他对象也会被克隆,不再指向原有对象地址。浅拷贝案例public class Cat implements Cloneable{ private String name; private Skill skill; /** * @retur原创 2021-02-24 21:42:46 · 195 阅读 · 0 评论 -
字符串intern方法与大厂面试题解
intern方法intern方法的作用就是尝试将一个字符串放入StringTable中,如果不存在就放入StringTable并返回StringTable中的地址(如果这个字符串是通过new String()方式创建的,则StringTable内放置的就是new String生成的对象的地址,而不是实实在在的字符串值),如果存在的话就直接返回StringTable中的地址。这是jdk1.7、1.8版本中intern方法的作用,jdk1.6版本中有些不同,1.6中intern尝试将字符串对象放入String原创 2021-02-23 23:13:03 · 220 阅读 · 3 评论 -
字符串拼接操作在底层是如何操作的?
首先看下在日常开发中我们操作字符串拼接的集中方式: public static void main(String[] args) { String s1 = "a"+"b"+"c"; String s2 = "abc"; String s3 = s2+""; final String s4 = "abc"; String s5 = s4+""; System.out.println("s1==s2:" + (s1 == s2)); //true System.原创 2021-02-22 21:45:13 · 372 阅读 · 0 评论 -
JVM虚拟机运行时数据区のStringTable 字符串常量池
什么是StringTableStringTable 字符串常量池,是专门用来保存字符串的一块内存,它的底层数据结构是HashTable,每个元素都是key-value结构,采用了数组+单向链表的实现方式。再jdk1.6以前默认大小是1009,jdk1.7以后默认大小是60013,1.8以后允许设置的最小大小为1009。过小的字符串常量池对性能有很大的影响。所有的字符串都保存到StringTable中吗?答案是否定的,并不是所有字符串都是保存到字符串常量池中,我们知道,再创建字符串是我们一般使用2中方法原创 2021-02-21 20:53:04 · 246 阅读 · 0 评论 -
JVM错误日志hs_err_pid****.log分析
<!-- 日志头文件开始 --><!-- 告诉你在Java运行环境检测到一个致命的错误 --># A fatal error has been detected by the Java Runtime Environment: -> <!-- EXCEPTION_ACCESS_VIOLATION (0xc0000005) 异常访问或非法访问,pc=0x000000006ef835ea 程序计数器的值,pid=2936 进程号,tid=0x0000000000000原创 2021-01-21 11:23:50 · 3748 阅读 · 0 评论 -
服务提供者注册zookeeper提示 NoAuth for /dubbo/****
解决方法:关闭ZooKeeper,将zoo.cfg里的自己设定的dataDir和dataLogDir路径下的version-2文件夹删除,然后重启即可。原创 2020-12-28 11:14:28 · 4770 阅读 · 3 评论 -
Eclipse中使用javap反编译字节码
javap是jdk自带的一个工具,可以反编译,也可以查看java编译器生成的字节码,是分析代码的一个好工具。主要用来查看编译器生成的字节码。这样能让我们更好的知道编译器对我们的代码做了什么。eclipse下配置eclipse中点击工具栏: Run > External Tools > External Tools Configuration双击 Program添加配置Name: javaplocation: D:\java\bin\javap.exe(自己的javap.exe路径原创 2020-12-24 17:49:03 · 446 阅读 · 0 评论 -
如何把2个参数不同逻辑相同的方法改造成1个方法
问题来源:https://www.oschina.net/question/3744526_2318802?utm_source=new_idxpackage com.proxy;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map; public class Test { public static void main(String[]原创 2020-09-11 17:04:05 · 2659 阅读 · 0 评论 -
Java中List接口、各子类之间的介绍及区别
List接口介绍List是一种有序的列表(也称为序列 ),用户可以精确控制列表中每个元素的插入位置。 用户可以通过整数索引(列表中的位置)访问列表中的元素,并搜索列表中的元素。与集合不同,列表允许重复的元素,并且通常允许多个空元素。该List接口放置额外的约定,超过在Collection指定接口上的iterator,add,remove,equals和hashCode方法合同。 其他继承方法的声明也包括在这里以方便。常见的List接口实现类1. ArrayList可调整大小的List接口的实现原创 2020-09-10 17:49:28 · 767 阅读 · 0 评论