
Java
软件工程小施同学
区块链、DevOps、小程序、软件工程
展开
-
Java String和十六进制字符串互相转换 示例
参考:【Java】string和十六进制字符串互相转换_K1nney的博客-优快云博客_string转16进制字符串原创 2022-06-28 16:18:22 · 3852 阅读 · 0 评论 -
java double精度丢失 0.1+0.2不等于0.3
java里,不能直接使用double进行运算否则如下0.1+0.2不等于0.3//'main' method must be in a class 'Rextester'.//Compiler version 1.8.0_111import java.util.*;import java.lang.*;import java.math.*;class Rextester{ public static void main(String args[]) {原创 2022-05-07 14:22:51 · 970 阅读 · 0 评论 -
Java ArrayList正确的赋值方式
直接赋值B=A,这是赋值了引用 ,如下面的例子//'main' method must be in a class 'Rextester'.//Compiler version 1.8.0_111import java.util.*;import java.lang.*;import java.util.ArrayList;import java.util.Arrays;class Rextester{ public static void main(String arg原创 2022-05-04 17:48:52 · 3880 阅读 · 0 评论 -
java 字符串string、int和arraylist互转
string 转ArrayList先将字符串按照某个字符切割,转为string数组然后用Arrays的asList方法,将数组转为Listpublic class test1 { public static void main(String[] args) { //string 转 ArrayList String str1 = "a,b,c"; ArrayList<String> list = new Ar.转载 2022-04-21 22:20:41 · 855 阅读 · 0 评论 -
java 按行读取txt文件并存入数组
BufferedReader br = null; try { br = new BufferedReader(new FileReader(new File("xxx.txt"))); String line = null; // 得到每一行 while ((line = br.readLine()) != null) { line = li...原创 2022-04-21 21:50:37 · 3538 阅读 · 0 评论 -
java 写文件txt BufferedWriter
import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;public class HelloWorld { public static void main(String []args) { try { File testFile = new File("test.txt"); if .原创 2022-04-21 21:12:13 · 852 阅读 · 0 评论 -
java数组 如何动态增加、查询、删除元素
一般数组是不能添加元素的,因为数组在初始化时就已定好长度了,不能改变长度。怎么动态则增加数组元素呢?使用ArrayList<类型> list = new ArrayList<>();一、定义但是其中的类型不能为基本类型,如下面会报错ArrayList<int> list = new ArrayList<>();得为下面ArrayList<Integer> list = new ArrayList<>原创 2022-04-21 14:54:32 · 8155 阅读 · 2 评论 -
Java 对象数组的定义与用法详解
先声明数组,然后对数组中的每一个对象必须分别进行实例化操作。public class Test { public static void main(String[] args) { Person[] ps = new Person[3]; // 声明一个对象数组,里面有三个对象 System.out.println("---------------数组声明后-------------------"); for (int x = 0; x < ps.length; x+转载 2022-04-21 09:16:45 · 2052 阅读 · 0 评论 -
java IDEA 手动替换更新jar包
1. 打开项目2. 点击首页左上方的【File】3. 选择点击下拉栏的【Project Structure】,中文叫:项目结构选择点击【Project Structure】弹窗里左侧的【Modules】选择点击正中央上方的【Dependencies】选择要删除的jar包选择右侧的 “ + ”符号,找到jar包的路径,添加进去添加成功后将会在【Export】区域找到添加的jar包IntelliJ IDEA如何导入jar包_cheer_up王阳明1的技术博客.原创 2022-04-20 16:52:26 · 6732 阅读 · 0 评论 -
java IDEA设置程序启动命令
原创 2022-04-20 16:48:08 · 1475 阅读 · 0 评论 -
IDEA java 显示build目录
文件->项目结构->模块查看是否排除了build目录点击+号手动将build添加进来原创 2022-03-03 16:28:24 · 2987 阅读 · 0 评论 -
java IDEA 修改jar包中某个文件 并生成新jar包
假设已经有jar包的源代码使用IDEA打开这个源码,修改源码之后,选择该文件,编译在build文件夹找到新生成class文件在原项目中,找到要替换的jar包双击进入解压界面,但是不要解压出来先删除原来的class文件,再把新的class文件增加进来,然后关闭就可以了......原创 2022-03-02 23:14:26 · 4230 阅读 · 0 评论 -
java .class文件和.class文件区别是什么?
.java文件是一个文本文件,就是我们用java语言写成代码。 .class文件是一种二进制文件,由.java文件通过javac这个命令(jdk本身提供的工具)编译生成的一个文件,可以由jvm(java虚拟机)装载(类装载),然后对java解释执行,就是运行时的程序。.class与.java_java中.java与.class区别是什么?_住范儿的博客-优快云博客...原创 2022-03-02 17:21:35 · 1560 阅读 · 0 评论 -
java MAVEN下载的代码仓库位置 mac
原创 2022-03-02 11:16:49 · 410 阅读 · 0 评论 -
java bigInteger +1 加常数
// 用户总数BigInteger bint_1 = new BigInteger("1");BigInteger userCount = userEnd.subtract(userStart).add(bint_1);原创 2021-12-31 16:01:25 · 861 阅读 · 0 评论 -
java debug try catch 打印发生错误的代码的详细信息 代码行数
使用e.printStackTrace();原创 2021-12-31 09:39:00 · 2318 阅读 · 0 评论 -
java Math.ceil int向上取整 不对 正确用法
import java.io.*;class test { public static void main (String[] args) throws java.lang.Exception { System.out.println("hi"); int a = (int) Math.ceil(100/40); System.out.println(a); double b = Math.ceil(100/40); System.out.println(b); .原创 2021-12-29 15:46:02 · 1178 阅读 · 0 评论 -
IDEA java 运行程序 指定运行参数
原创 2021-11-29 21:41:14 · 675 阅读 · 0 评论 -
Java 多维数组 三维数组 初始化 赋值 打印
import java.util.Arrays;public class Test{ public static void main(String[] args) { int[][][] arr = new int[2][][]; arr[0] = new int[3][3]; arr[1] = new int[][]{new int[]{1, 2}, new int[]{3, 4}, new in...原创 2021-10-13 16:21:47 · 2492 阅读 · 0 评论 -
Error: A JNI error has occurred, please check your installation and try again
是因为编译用的javac版本,和运行用的java版本不一致,产生的报错。IDEA编译时,默认使用的jdk是自带的,CMD中的jdk是按照path中配置的,两个版本不同。需要修改idea中编译套件。"ctrl+shift+alt+s" ,打开project settings,修改project使用的JDK和SDK修改之后重新编译jar,可正常运行https://bigfu.cn/?p=54...原创 2021-07-26 19:21:14 · 451 阅读 · 0 评论 -
java Operator ‘/‘ cannot be applied to ‘java.math.BigInteger‘, ‘int‘
Operator '/' cannot be applied to 'java.math.BigInteger', 'int'这是因为BigInteger不能直接做数学运算,需要先转为intBigInter a = 1;int b = a.intValue();原创 2021-07-13 11:02:09 · 3198 阅读 · 1 评论 -
java 命令行运行 打包 IDEA
打包命令行运行原创 2021-07-10 21:39:20 · 360 阅读 · 0 评论 -
java 多线程 异步调用
在Java平台,实现异步调用的角色有如下三个角色:调用者、 提货单 、真实数据,一个调用者在调用耗时操作,不能立即返回数据时,先返回一个提货单.然后在过一断时间后凭提货单来获取真正的数据.去蛋糕店买蛋糕,不需要等蛋糕做出来(假设现做要很长时间),只需要领个提货单就可以了(去干别的事情),等到蛋糕做好了,再拿提货单取蛋糕就可以了。package com.somnus.async; /** * * @Description: 顾客 * @author Somnus ..原创 2021-07-01 13:24:42 · 562 阅读 · 1 评论 -
当前读和快照读是什么 区别
当前读像select lock in share mode( 共享锁),select for update ; update, insert ,delete( 排他锁) 这些操作都是⼀种当前读,为什么叫当前读? 就是它读取的是 记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进⾏加锁。快照读像不加锁的select 操作就是快照读,即不加锁的⾮阻塞读; 快照读的前提是隔离级别不是未提交读和串⾏化级别,因为未提交读总是读取最新的数据 ⾏,⽽不是符合当前事务版本的数据⾏。⽽串原创 2021-06-15 20:58:36 · 1878 阅读 · 0 评论 -
java 多线程 System.exit(0); 是退出当前线程,还是结束整个虚拟机
System.exit(0); 会结束整个虚拟机,也就是所有线程原创 2021-05-26 09:54:40 · 1567 阅读 · 0 评论 -
❤️java多线程并发编程入门 教程合集❤️
1.java并发编程(1)--线程 可见性 volatile怎么用原创 2021-05-10 20:13:32 · 787 阅读 · 1 评论 -
java -cp 什么意思 怎么用
java -cp:在Linux下运行main函数,以调试一些功能。cp是classpath的意思。假设当前目录结构如下:├─ lib│├─ a.jar│├─ b.jar│└─ c.jar├─ conf│├─ d.jar│├─ e.jar│└─ f.jar├─ com│└─ xxx│└─ yyy│└─ MainClass...原创 2021-04-26 15:19:19 · 1784 阅读 · 0 评论 -
ubuntu 卸载openjdk 安装java8 安装之后提示Command ‘java‘ not found
1. 卸载openJDKsudoapt-getremoveopenjdk*2.在oracle官网上下载目标JDK文件链接: https://pan.baidu.com/s/1BPfWSdwC1YSj5tVBgJbl1Q 提取码: ybc8 复制这段内容后打开百度网盘手机App,操作更方便哦3. 将下载的tar.gz文件移动到想存放的目录下(我放在/home/shijianfeng/java目录下),输入下面命令即可tar -xzvfjdk-8u141-linux-x6...原创 2021-04-26 13:50:26 · 1069 阅读 · 0 评论 -
gradle错误 dependency.systemPath‘ for com.alibaba:jconsole:jar must specify an absolute path
gradle错误问题> Task :compileJava UP-TO-DATEErrors occurred while build effective model from /home/shijianfeng/.gradle/caches/modules-2/files-2.1/com.alibaba/druid/1.0.29/58f862c09528a1181939e695c4a3f161630faa10/druid-1.0.29.pom: 'dependencies.depe..原创 2021-04-25 19:10:04 · 4599 阅读 · 1 评论 -
使用悲观锁还是乐观锁
一、悲观锁和乐观锁读取频繁使用乐观锁,写入频繁使用悲观锁。乐观锁想成一种检测冲突的手段,而悲观锁是一种避免冲突的手段。悲观锁实际生产环境里边,如果并发量不大,完全可以使用悲观锁定的方法,这种方法使用起来非常方便和简单。但是如果系统的并发非常大的话,悲观锁定会带来非常大的性能问题,所以就要选择乐观锁定的方法。悲观锁假定其他用户企图访问或者改变你正在访问、更改的对象的概率是很高的,因此在悲观锁的环境中,在你开始改变此对象之前就将该对象锁住,并且直到你提交了所作的更改之后才释放锁。悲观的.原创 2021-03-31 14:51:32 · 581 阅读 · 0 评论 -
并发(concurrent)、并行(parallel)、顺序(sequential)、串行(serial)是什么 区别
一、顺序和并发是指多个任务能否同时开始1. 顺序(sequential)顺序:上一个开始执行的任务完成后,当前任务才能开始执行。2. 并发(concurrent)并发:无论上一个开始执行的任务是否完成,当前任务都可以开始执行A B 顺序执行的话,A 一定会比 B 先完成,而并发执行则不一定。二、串行和并行是指任务多个任务能否同时执行1. 串行(serial)串行:有一个任务执行单元,从物理上就只能一个任务、一个任务地执行2. 并行(pa...原创 2021-03-01 12:33:54 · 8819 阅读 · 0 评论 -
lock free(无锁并发)是什么
一、非阻塞同步(Non-blocking Synchronization)1. 无锁编程 / lock-free / 非阻塞同步无锁编程,即不使用锁的情况下实现多线程之间的变量同步,也就是在没有线程被阻塞的情况下实现变量的同步,所以也叫非阻塞同步(Non-blocking Synchronization)。实现非阻塞同步的方案称为“无锁编程算法”(Non-blocking algorithm)。lock-free是目前最常见的无锁编程的实现级别(一共三种级别):wait-free l.原创 2021-02-18 22:18:06 · 1556 阅读 · 0 评论 -
线程和进程的区别
1. 进程进程是一组离散的(执行)程序任务集合;2. 线程线程是进程上下文中执行的代码序列;3. 两者之间具体关系:线程是进程的可执行单元,是计算机分配CPU机时的基本单元。一个进程可以包含一个或多个线程,进程是通过线程去执行代码的。同一个进程的多个线程共享该进程的资源和操作系统分配给该进程的内存空间。每个进程必须有一个主线程,主线程退出之后该进程也就退出了。一个进程的主线程是由系统创建的。在单CPU中,表面上看好像是多个进程中的多个线程共同执行,实...原创 2021-02-18 17:07:28 · 408 阅读 · 1 评论 -
STM(Software Transactional Memory Systems)是什么 怎么用
Transaction – a sequence of instructions that atomically access/modify concurrent objects事务–以原子方式访问/修改并发对象的一系列指令STM - A “universal” nonblocking synchronization constructSTM-一种通用的非阻塞同步结构Automatic conversion of sequential (or lock-based) code to n.原创 2021-02-17 22:53:50 · 11990 阅读 · 0 评论 -
Java 线程 fork join 是什么 怎么用
一、fork/joinJava 7开始引入了一种新的Fork/Join线程池,它可以执行一种特殊的任务:把一个大任务拆成多个小任务并行执行。我们举个例子:如果要计算一个超大数组的和,最简单的做法是用一个循环在一个线程内完成:┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘还有一种方法,可以把数组拆成两部分,分别计算,最后加起来就是最终结果,原创 2021-02-17 19:29:40 · 515 阅读 · 2 评论 -
并发性(concurrency)和并行性(parallel)区别
一、并发性(concurrency)和并行性(parallel)是两个概念,1. 并行并行是指在同一时刻,有多条指令在多个处理器上同时执行;2. 并发并发指在同一时刻,只能有一条指令执行,但多个进程指令被快速轮换执行,使得宏观上具有多个进程同时执行的效果。二、多线程编程优点:进程之间不能共享内存,但线程之间共享内存非常容易。 系统创建线程所分配的资源相对创建进程而言,代价非常小。四、Java中实现线程的方式目前有三种:一:继承Thread类创建线程类二...原创 2021-02-17 19:18:23 · 4969 阅读 · 0 评论 -
Java 反射机制 是什么
(1)Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取对象的各种信息。(2)Java属于先编译再运行的语言,程序中对象的类型在编译期就确定下来了。而当程序在运行时可能需要动态加载某些类,这些类因为之前用不到,所以没有被加载到JVM。通过反射,可以在运行时动态地创建对象并调用其属性,不需要提前在编译期知道运行的对象是谁。https://blog.csdn...原创 2021-02-13 22:34:42 · 356 阅读 · 1 评论 -
Race Condition是什么
一、Race Condition(竞争条件、竞态条件、资源竞争 )1. 竞争(Race)计算机运行过程中,并发、 无序、 大量的进程在使用有限、 独占、 不可抢占的资源,由于进程无限,资源有限,产生矛盾,这种矛盾称为竞争(Race)。2. 竞争条件(Race Condition)由于两个或者多个进程竞争使用不能被同时访问的资源,计算的正确性取决于多个线程的交替执行时序时,就会发生竞争条件(Race Condition)。3. 竞争条件分为两类:-Mu..原创 2021-02-11 18:44:50 · 2365 阅读 · 0 评论 -
java并发编程(13)-- 线程 死锁和定位
原创 2021-02-08 13:47:48 · 300 阅读 · 1 评论 -
java并发编程(12)-- 线程池 实际⽣产使⽤哪⼀个线程池 怎么设置
一、ThreadPoolExecutor⽤ LinkedBlockingQueue 实现的,这个队列最⼤⻓度为 Integer.MAX_VALUE ,显然会导致OOM。所 以实际⽣产⼀般⾃⼰通过 ThreadPoolExecutor 的7个参数,⾃定义线程池。 ExecutorService threadPool = new ThreadPoolExecutor( 2, 80*2, 1L, T原创 2021-02-08 13:29:01 · 381 阅读 · 1 评论