![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JAVA基础
文章平均质量分 57
JAVA
如我般骄傲
学习
展开
-
位运算学习
一、位运算基础一.原码原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:[+1] = 0000 0001[-1] = 1000 0001如果改成十六位二进制:[+1] =0000 0000 0000 0001[-1] =1000 0000 0000 0001第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:[1111 1111 , 0111 1111]即[-127 , 127]二.反码对于正数而言,反码原创 2022-03-21 15:15:27 · 330 阅读 · 0 评论 -
设计模式之美-01|设计模式学习导读
目录一、设计模式之美-01|设计模式学习导读一、设计模式之美-01|设计模式学习导读一.为什么说每个程序员都要尽早地学习并掌握设计模式相关知识?比较空泛的讲,设计模式有以下几个好处:设计模式能让程序员编写出可读性高,易维护,易拓展的代码,避免烂代码。利用好设计模式能让复杂功能的设计的代码可复用性,可拓展性,可维护性,可读性更高。达到高内聚、低耦合的目的。设计模式能提高程序员的自我修养总结下来一句话就是:设计模式主要解决的是扩展和耦合问题。在学习的过程中思考,并深入理解。二. 从哪些维原创 2022-01-13 18:15:26 · 320 阅读 · 0 评论 -
Java基础学习-包装类与装箱拆箱
一、装箱拆箱的例子 Integer a=123;//==Interger a=new Interger(123);装箱 int b=a;//==Integer.valueOf(a)拆箱装箱就是自动将基本数据类型转换为包装器类型;拆箱就是 自动将包装器类型转换为基本数据类型。二、基本类型与包装类型三、为什么需要包装类型一.定义成类,方便调用各种类型间转化,通过各种方法的调用二.对于入参为泛型的,无法使用基本类型。HashSet<ListNode>原创 2021-11-30 16:49:17 · 3911 阅读 · 0 评论 -
Java基础学习==与equals的区别
首先进行比较的时候是区分类型的基本类型:Java语言提供了八种基本类型。六种数字类型(四个整数型byte,int,short,long,两个浮点型double双,float单),一种字符类型char,还有一种布尔型Boolean。引用类型:除了基本类型,其他都是对于==操作,如果是基本类型,则比较的是值,如果是引用类型,则比较的是内存地址。对于equals操作,本质上是和双等号是完全相同的,但是equals比较灵活,我们可以自行定义,比如Strinng的equals,如果地址不同,还会去比较值。原创 2021-11-30 16:12:57 · 231 阅读 · 0 评论 -
Java基础学习-常用注解
一、Spring常用注解一.@Component(@Service/@Repository/@Controller)这四个注解是等价的,主要用于将标记的类注册到Spring容器中@Component:通用注解,不知道写什么就写这个@Controller:Controller层注解@Service:Service层注解,添加在实现类上。@Repository应用中持久层Mapper上的二.@Configuration和@Bean三.@Value和@ConfigurationProperti原创 2021-11-23 10:50:03 · 450 阅读 · 0 评论 -
Java基础-多态、重载和重写的区别及用法
一、重写(方法的入参和返回不变,但是修改了流程)重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!二、重载(定义不同参数的同名方法)java允许一个程序中定义多个名称相同的方法,但是参数类型或个数必须不同方法的重载和返回值类型无关,他只需要满足两个条件:1)方法名相同2)参数个数或参数类型不同三、多态()1、意义理解2、常用案例3、实现条件...原创 2021-11-22 14:03:12 · 1216 阅读 · 0 评论 -
Java基础-抽象类与接口
抽象类与接口概念上的区别从概念上,抽象类描述的是这个类是什么,而接口指的是可以做什么。抽象类中可以定义普通方法和抽象方法,被子类继承之后,抽象方法必须被实现,而普通方法可以选择或者不选择重写。抽象类public abstract class Employee { private String name; private String address; private int number; public Employee(String name, String ad原创 2021-11-19 11:31:38 · 367 阅读 · 0 评论 -
Java基础-Java中的集合框架
一、Java集合框架基础接口一.CollectionCollection使集合框架的基础接口之一,一个集合代表一组对象,这些对象即为集合的元素。Java平台不提供这个接口的任何直接实现。二.Set一个不包含重复元素的集合三.List一个可以包含重复元组的集合四.MapMap是一个将key映射到value的对象,一个Map不能包含重复的Key,每个Key只能映射一个Value五.Queue队列结构的实现六.Iterable基础接口,可以通过for-each语法进行遍历。二、List的原创 2021-11-18 23:50:20 · 4079 阅读 · 0 评论 -
JVM性能调优-03|如何优化垃圾回收机制?
三、如何优化垃圾回收机制?一.垃圾回收机制在 Java 开发中,开发人员是无需过度关注对象的回收与释放的,JVM 的垃圾回收机制可以减轻不少工作量。但完全交由 JVM 回收对象,也会增加回收性能的不确定性。在一些特殊的业务场景下,不合适的垃圾回收算法以及策略,都有可能导致系统性能下降。面对不同的业务场景,垃圾回收的调优策略也不一样。例如,在对内存要求苛刻的情况下,需要提高对象的回收效率;在 CPU 使用率高的情况下,需要降低高并发时垃圾回收的频率。1、回收发生在哪里?2、对象在什么时候可以被回收?原创 2021-11-09 18:35:01 · 782 阅读 · 0 评论 -
深入拆解Java虚拟机-01 |Java虚拟机基本原理 (上)
一、Java代码是怎么运行的?一.Java 和 C++ 在运行方式上的区别C++会直接被编译为机器码,可以被CPU所理解。Java 代码有很多种不同的运行方式,比如说可以在开发工具中运行,可以双击执行 jar 文件运行,也可以在命令行中运行,甚至可以在网页中运行。当然,这些执行方式都离不开 JRE,也就是 Java 运行时环境。JRE 仅包含运行 Java 程序的必需组件,包括 Java 虚拟机以及 Java 核心类库等。我们 Java 程序员经常接触到的 JDK(Java 开发工具包)同样包含了原创 2021-10-26 16:06:00 · 145 阅读 · 0 评论 -
Java编程性能调优-01|字符串性能优化不容小觑,百M内存轻松存储几十G数据
一、字符串性能优化不容小觑,百M内存轻松存储几十G数据一.String 对象是如何实现的?String str1= "abc";String str2= new String("abc");String str3= str2.intern();assertSame(str1==str2);assertSame(str2==str3);assertSame(str1==str3)1、String str1 = "abc";通过字面量的方式创建,abc存储于字符串常量池中;2、String原创 2021-11-02 10:07:07 · 371 阅读 · 0 评论 -
Java性能调优学习
一、编程性能调优一.字符串性能优化不容小觑,百M内存轻松存储几十G数据二.慎重使用正则表达式三.ArrayList还是LinkedList?使用不当性能差千倍四.Stream如何提高遍历集合效率?五.深入浅出HashMap的设计与优化六.网络通信优化之I/O模型:如何解决高并发下I/O瓶颈?七.网络通信优化之序列化:避免使用Java序列化八.网络通信优化之通信协议:如何优化RPC网络通信?九.深入了解NIO的优化实现原理二、多线程性能调优一.二.三.四.五.三、JVM性能调优原创 2021-11-01 16:13:48 · 259 阅读 · 0 评论 -
SpringCloudAlibaba-分布式事务基础
一、事务相关概念一.为什么要分布式事务在单体应用中通常情况下只有一个数据库(单数据源),集成事务是一个非常容易的工作。Spring对事务做了很好的管理,我们只需要通过简单的注解@Transactional就可以完成本地事务管理。但是在微服务项目中事务的管理变得困难,因为微服务项目往往有很多的数据库组成,如果在一个业务中涉及到了对多个微服务以及多个数据库的写操作(跨多个数据源),那么要如何才能保证多个数据库组件的读写一致呢?数据库A写操作成功过,数据库B写操作失败要怎么样让数据库A的写操作回滚?很显然用原创 2021-10-10 23:15:43 · 265 阅读 · 0 评论 -
大顶堆和小顶堆
PriorityQueue(优先队列)是一个基于优先级堆的无界优先级队列,底层实现是一棵完全二叉树不允许使用 null 元素不允许插入不可比较的对象,会导致 ClassCastException。优先级队列是无界的,但是有一个内部容量,默认容量为11,控制着用于存储队列元素的数组大小。它通常至少等于队列的大小。随着不断向优先级队列添加元素,其容量会自动增加PriorityQueue 线程不安全,想线程安全用 PriorityBlockingQueue 类实现小顶堆PriorityQueue原创 2021-09-15 15:27:49 · 204 阅读 · 0 评论 -
Docker安装JDK
一、下载docker pull kdvolder/jdk8二、运行容器docker run -di --name=jdk8 kdvolder/jdk8三、进入容器# 方法1 退出后docker ps 进程还在docker exec -it jdk8 /bin/bash# 方法2 退出后 进程也会自动退出docker attach jdk8...原创 2021-08-18 17:07:17 · 1480 阅读 · 0 评论 -
AES的256位密钥加解密报 java.security.InvalidKeyException: Illegal key size or default parameters 异常的处理
最近在搞一个协议的解密算法,网站上可以通过加密数据和密钥进行解密,我自己弄的demo一直报错,一直以为是哪个位置的数据没弄对,最后发现是JAVA环境不匹配。JAVA原生支持128位密钥进行解密,如果密钥长度是256位,就会报错。因此需要替换这个原生的JAR包,下面的参考文章写的很清楚可以参照着解决。参考链接文章传送门...原创 2021-06-25 17:32:32 · 445 阅读 · 0 评论 -
JAVA基础-四种引用类型|强软弱虚
一、 强引用(StrongReference)强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。 Object strongReference = new Object();只有把它设置为NULL的时候,垃圾回收机制才会进行回收。二、 软引用(SoftReference)如果一个对象具有软引用,如果内存充足,软引用对象不会被回收。那么当内存不足的时候,就会回收软引用对象。如果软引用回收了之后,仍然没有足够的内存空间,那么就抛出异常。设置堆最大为20Mpack原创 2021-06-07 20:44:31 · 141 阅读 · 2 评论 -
Atomic类和CAS机制
一、CAS(Compare and swap)无锁主要依赖 CAS(Compare And Swap) ,即比较并交换,CAS 是一条 CPU 指令,其本身是能够保证原子性的。CAS 中有三个参数:共享变量的内存地址 A用于比较的值 B共享变量的新值 CCAS操作:比较当前工作内存中的值和主内存中的值,如果这个值是期望的,那么就执行下一步操作,否则就一直循环进行判断。缺点:循环会消耗时间一次性只能保证一个共享变量的原子性存在ABA问题1、ABA问题线程1去查看一个数据,这个数据原创 2021-05-26 09:35:08 · 362 阅读 · 0 评论 -
Java“锁”事
前言Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8和Netty 3.10.6)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。下面给出本文内容的总体分类目录:原创 2021-05-26 09:12:39 · 49 阅读 · 0 评论 -
Java多线程基础学习
如果队列是满的,需要等有空位才能进。如果队列是空的,需要等有数据才能取。方式包含异常返回值阻塞等待超时等待添加putoffer删除poll(null)takepoll判断队列首尾peek// test1();test4();//add有异常 //remove有异常 // System.out.println(blockingQueue.add("a"));//查看阻塞队列队首 } public static void test2() {原创 2021-05-13 00:25:46 · 304 阅读 · 3 评论 -
linux下如何部署本jar包并且在后台运行
1、执行jar包的命令和在windows操作系统上是一样: java -jar penn-0.0.1-SNAPSHOT.jar; 注: 关闭服务器连接时会关闭此程序进程,(推荐测试可用)2、将jar程序设置成后台运行,并且将标准输出的日志重定向至文件msg.log; nohup java -jar penn-0.0.1-SNAPSHOT.jar >msg.log 2>&1 &; 注: noh原创 2021-04-28 10:37:51 · 1498 阅读 · 0 评论 -
Java数据类型
一、基本数据类型Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。数据类型描述举例byte数据类型是8位、有符号的,以二进制补码表示的整数byte a = 100,byte b = -50。shortshort 数据类型是 16 位、有符号的以二进制补码表示的整数short s = 1000,short r = -20000。intint 数据类型是32位、有符号的以二进制补码表示的整数int a = 10原创 2021-02-07 10:12:59 · 79 阅读 · 0 评论 -
Java集合类不安全问题-LIST不安全
参考文章:LIST不安全:1、https://blog.csdn.net/xiaobudian0381/article/details/920194322、http://www.hollischuang.com/archives/4983、https://blog.csdn.net/lkxsnow/article/details/104130143,这个写的好LIST不安全:1、List<String> list1=new vector();2、List<.原创 2021-01-08 09:46:12 · 390 阅读 · 2 评论 -
小知识--Random的用法
int randomIndex=new Random().nextInt(100);这行代码将生成范围 0~100 之间的随机数,取值范围是[0,100),可能包含0,不会包含100。如果想要获取[0,100]的范围,这行代码是不行的,需要修改为int randomIndex=new Random().nextInt(100)+1;公式为int randomIndex=new Random().nextInt(MAX-MIN+1)-MIN;...原创 2021-02-19 12:24:20 · 349 阅读 · 0 评论