Java
文章平均质量分 60
java各种乱七八糟学习
七天晒网
飛 べ
展开
-
Socket的通信流程,自连接与socket长连接
socket1socket2【TCP/IP】端口未监听,还能访问成功原创 2021-03-15 21:51:47 · 246 阅读 · 0 评论 -
红黑树和AVL树(平衡二叉树)区别
AVL树(平衡二叉树)AVL树是带有平衡条件的二叉查找树,一般是用平衡因子差值判断是否平衡并通过旋转来实现平衡,左右子树树高不超过1,和红黑树相比,AVL树是严格的平衡二叉树,平衡条件必须满足(所有节点的左右子树高度差的绝对值不超过1)。不管我们是执行插入还是删除操作,只要不满足上面的条件,就要通过旋转来保持平衡,而旋转是非常耗时的,由此我们可以知道AVL树适合用于插入与删除次数比较少,但查找多的情况由于维护这种高度平衡所付出的代价比从中获得的效率收益还大,故而实际的应用不多,更多的地方是用追求局部转载 2021-03-15 18:13:10 · 197 阅读 · 0 评论 -
并发的学习
@TOC并发是为了提高运行在单处理器上的程序的性能。上下文切换是指从当前线程切换到下一个线程时要保存当前线程的状态阻塞:程序中的某个任务因为某种条件(比如等待I/O资源)而不能继续执行当main()创建Thread对象时,并没有捕获任何对这些对象的引用,使用普通对象时,对于垃圾回收来说是公平的,但使用Thread时,每个Thread都“注册”了自己,因此确实有一个对它的引用,而且在它的任务退出其run()并死亡之前,垃圾回收器无法清除它。因此一个线程会创建一个独立的执行线程,在对其start()的调原创 2021-02-16 16:28:25 · 400 阅读 · 0 评论 -
Java NIO和BIO,AIO
参考:添加链接描述添加链接描述面向Stream和面向BufferJava NIO和IO之间最大的区别是IO是面向流(Stream)的,NIO是面向块(buffer)的,所以,这意味着什么?IO是面向流意味着从流中一次可以读取一个或多个字节,拿到读取的这些做什么你说了算,这里没有任何缓存(这里指的是使用流没有任何缓存,接收或者发送的数据是缓存到操作系统中的,流就像一根水管从操作系统的缓存中读取数据)而且只能顺序从流中读取数据,如果需要跳过一些字节或者再读取已经读过的字节,你必须将从流中读取的数据原创 2021-01-30 00:00:29 · 271 阅读 · 0 评论 -
并发之ThreadLocal的学习
ThreadLocal是为了管理线程本地存储存在的,线程本地存储是一种自动化机制,可以为使用相同变量的不同线程创建不同的存储。static final ThreadLocal<T> sThreadLocal = new ThreadLocal<T>();sThreadLocal.set()sThreadLocal.get()ThreadLocal的静态内部类ThreadLocalMap为每个Thread都维护了数组table,ThreadLocal确定了一个数组下标,这个下原创 2020-11-21 18:40:40 · 188 阅读 · 0 评论 -
字符串的学习
String对象不可变,String类每一个会修改string值的方法实际上都是创建了一个全新的string对象。每当把string对象作为方法的参数时,实际传递的是引用的一个拷贝。用于string的 ‘+’和‘+=’是java中仅有的两个重载过的操作符。string和stringBuffer,stringBuilder的区别...原创 2020-11-18 21:34:46 · 222 阅读 · 0 评论 -
集合容器的学习
https://www.cnblogs.com/zqq-blog/p/10754010.html原创 2020-11-17 23:41:45 · 283 阅读 · 0 评论 -
int[],List<Integer>和Integer[]的相互转换
List<Integer> —> Integer[]Integer[] integers = list.toArray(new Integer[0]);Integer[] —> List<Integer>/ 需要注意使用Arrays.asList转换只能获取原Integer[]的镜像,使用add会报错 List<Integer> list = Arrays.asList(integers);List<Integer> —&g原创 2020-11-07 15:17:04 · 979 阅读 · 0 评论 -
Zookeeper的学习(含Redis分布式和一致性相关)
Zookeeper入门rpc使用zk的例子1rpc使用zk的例子2原创 2020-10-24 16:06:36 · 180 阅读 · 0 评论 -
java序列化机制之protoStuff框架
添加依赖<dependency> <groupId>io.protostuff</groupId> <artifactId>protostuff-core</artifactId> <version>1.6.0</version></dependency><dependency> <groupId>io.protostuff<转载 2020-10-24 15:31:45 · 359 阅读 · 0 评论 -
Integer类的缓存机制
Integer类的缓存机制查看Integer的源码,就会发现里面有个静态内部类。该类的作用是将数值等于-128-127(默认)区间的Integer实例缓存到cache数组中。通过valueOf()方法很明显发现,当再次创建值在-128-127区间的Integer实例时,会复用缓存中的实例,也就是直接指向缓存中的Integer实例。(注意:这里的创建不包括用new创建,new创建对象不会复用缓存实例public static Integer valueOf(int i) { asser转载 2020-10-20 14:37:59 · 157 阅读 · 0 评论 -
string和stringBuffer,stringBuilder的区别
String对象不能被修改,本身不能修改,但是引用可以修改。String a = "abc" 实在内存里创建了一个String对象 a = a+'c' 实际上是在内存中"abcc" 的String对象stringBuffer和stringBuilder可变stringBuffer效率比stringBuilder低,但是线程安全,而stringBuilder线程不安全原因在于StringBuffer在append()方法上使用了synchronized,而StringBuilder没有使用。...原创 2020-10-18 23:21:08 · 195 阅读 · 0 评论 -
Java对日期操作的类(Date、SimpleDateFormat、Calendar)
基本概念Date:表示特定的瞬间,精确到毫秒构造方法:Date()、Date(Long date)常用方法:void setTime(Long time):根据毫秒数设置该日期对象,默认构造函数设置该日期对象为当前日期。Long getTime():获取日期对象毫秒数。毫秒数都是以1970年1月1日0点0分0秒开始计算。int compareTo(Date date):比较俩个日期顺序,比参数date小,返回负数,相等返回0,大则返回正数。boolean before(Date date)转载 2020-07-24 16:19:40 · 364 阅读 · 0 评论 -
Java序列化的学习
参考:添加链接描述文章目录前言实例 demo为什么一个类实现了Serializable接口,它就可以被序列化?默认序列化机制选择性的序列化使用 transient 关键字使用writeObject()方法与readObject()方法使用 Externalizable 接口序列化和反序列化需要注意的坑能序列化的前提要知道序列化的是什么样儿的对象(成员)序列化的安全性反序列化后,何时不是同一个对象前言Java允许我们在内存中创建可复用的Java对象,但一般情况下,这些对象的生命周期不会比JVM的生命周期原创 2020-07-24 15:38:32 · 176 阅读 · 0 评论 -
Java迭代器的学习
(讲道理,这玩意在我的《java编程思想》笔记好像也有,而且更深入,但是我太金鱼脑了(那本书有点难顶啊 迭代器模式:就是提供一种方法对一个容器对象中的各个元素进行访问,而又不暴露该对象容器的内部细节。概述 Java集合框架的集合类,我们有时候称之为容器。容器的种类有很多种,比如ArrayList、LinkedList、HashSet…,每种容器都有自己的特点,ArrayList底层维护的是一个数组;LinkedList是链表结构的;HashSet依赖的是哈希表,每种容器都有自己特有的数据结构。转载 2020-07-22 23:24:52 · 166 阅读 · 0 评论 -
Mysql使用Boolean类型数据
在Mysql数据库中是没有Boolean类型的,但是可以使用tinyint(1)来替代。如果是tinyint(2)转换为java的对象类型就是Byte。在mysql数据库中定义一个字段的类型为tinyint并且长度为一的话,使用mybatis自动生成实体类就会自动转换为Boolean类型的对象。...原创 2020-07-21 22:36:57 · 1668 阅读 · 0 评论 -
JAVA接口(Interface)和抽象类(Abstact)
JAVA接口(Interface)和抽象类(Abstact)我好懒w转载 2020-07-21 22:34:25 · 234 阅读 · 0 评论 -
关键字static 和 final 和 static final,finally、finalize的区别
static 是静态修饰关键字:可以修饰变量,程序块,方法,类。静态的特点:随着类的加载而加载、优先与对象而存在、被所有对象所共享、可以通过类名.静态的内容调用。弊端:1.有些数据是对象特有的数据,是不可以被静态修饰的。在定义static时,必须明确这个数据是否是被对象所共享。2.静态方法只能访问静态成员,不可以访问非静态成员。因为静态方法加载优先于对象存在,没有办法访问对象方法;3.静态方法中不能用this,super关键字. 因为this代表对象,静态方法中有可能没有对象,所以this无原创 2020-07-21 22:12:46 · 308 阅读 · 0 评论 -
SpringBoot中处理的转发与重定向
基础内容:页面跳转的两种实现方式:请求转发和重定向;请求转发:客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getRequestDispacther()方法,把请求转发给指定的student_list.jsp,整个流程都是在服务器端完成的,而且是在同一个请求里面完成的,因此servlet和jsp共享的是同一个request,在servlet里面放的所有东西,在student_list中都能取出来,因此,student_lis转载 2020-07-20 22:52:21 · 7496 阅读 · 0 评论 -
注解方式使用redis缓存
参考:Redis详解 - SpringBoot整合Redis,RedisTemplate和注解两种方式的使用springboot注解方式使用redis缓存以注解的方式使用redis缓存得用法@CachePut , @CacheEvict, @Cacheable第一步:引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starte原创 2020-07-20 16:51:38 · 928 阅读 · 0 评论 -
RedisTemplate 使用 Redis 缓存
RedisTemplate与StringRedisTemplate的区别:StringRedisTemplate继承了RedisTemplateRedisTemplate是一个泛型类,而StringRedisTemplate不是StringRedisTemplate只能对key=String,value=String的键值对进行操作,而RedisTemplate可以对任何类型进行操作它们各自序列化的方式不同,但最终都得到了一个字节数组。StringRedisTemplate实用的说StringRe原创 2020-07-19 23:05:35 · 195 阅读 · 0 评论 -
springboot和springmvc的区别
springmvc从两个方面来看一是spring,spring的核心中IOC和AOP,IOC就是控制反转(就是将原本由程序代码直接操作的对象的调用权交给容器),目的是为了减低计算机代码的耦合度,所谓的耦合度就是代码中的逻辑关系不要太紧密,避免后面改的人会因为不懂业务逻辑导致改错代码;除此之外也避免我们每次创建新的对象,减少对应的代码量。我们实际代码过程中最常见的方式是依赖注入(DI Dependency Injection),所谓依赖注入就是通过构造注入或者set进行注入。依赖查找(DL Dependen转载 2020-07-20 15:30:50 · 3495 阅读 · 0 评论 -
Java中不定项参数(可变参数)的作用和使用方式
有时候遇见一个方法有不确定参数个数的情况。一般我们会用方法重载来解决问题: //方法重载,解决参数个数不确定问题public void method();public void method(int i);public void method(int i, int j);public void method(int i, int j, int k);但是当参数多的时候就会显得很繁琐,同时每次扩展都会很麻烦。于是我们可以使用数组作为参数:int[] a={1, 2, 3, 4}; //转载 2020-07-19 21:48:34 · 551 阅读 · 0 评论 -
Jedis的基本使用
参考:JavaWeb学习笔记——RedisJedis工具类概述Jedis是Redis官方推荐的Java连接开发工具。要在Java开发中使用好Redis中间件,必须对Jedis熟悉才能写成漂亮的代码。基本使用Jedis的基本使用非常简单,只需要创建Jedis对象的时候指定host,port, password即可。当然,Jedis对象又很多构造方法,都大同小异,只是对应和Redis连接的socket的参数不一样而已。1获得单一的jedis对象操作数据库@Testpublic vo原创 2020-07-19 01:09:29 · 330 阅读 · 0 评论 -
synchronized的作用和用法
郁闷参考:@synchronized的作用和用法Java中Synchronized的使用文章目录简单介绍用法实战实例修饰代码块修饰普通方法修饰静态方法简单介绍synchronized关键字是用来控制线程同步的,就是在多线程的环境下,控制synchronized代码段不被多个线程同时执行@synchronized 的作用是创建一个互斥锁,保证此时没有其它线程对self对象进行修改,保证代码的安全性。也就是包装这段代码是原子性的,安全的。这个是objective-c的一个锁定令牌,防止self对原创 2020-07-18 16:40:26 · 3384 阅读 · 0 评论 -
Java回调机制总结
调用和回调机制在一个应用系统中, 无论使用何种语言开发, 必然存在模块之间的调用, 调用的方式分为几种:1.同步调用同步调用是最基本并且最简单的一种调用方式, 类A的方法a()调用类B的方法b(), 一直等待b()方法执行完毕, a()方法继续往下走.这种调用方式适用于方法b()执行时间不长的情况, 因为b()方法执行时间一长或者直接阻塞的话, a()方法的余下代码是无法执行下去的, 这样会造成整个流程的阻塞.2.异步调用异步调用是为了解决同步调用可能出现阻塞, 导致整个流程卡住而产生的一种转载 2020-07-15 16:05:39 · 211 阅读 · 0 评论 -
java泛型与数组
java中数组是不支持泛型的。由于泛型只是在编译的时候,起到类型检测,及类型转换字节码的生成,也就是说具有泛型的java文件,最终生成的字节码会将泛型信息抹去,具体数据的引用类型一般都用object的来替代。并在对应的位置加上了类型转换代码。 (泛型的擦除)java泛型与数组...原创 2020-07-14 11:05:02 · 203 阅读 · 0 评论 -
《Java编程思想》学记笔记【十六】数组
.Arrays.deepToString()方法,它可以将多维数组转换成为多个String原创 2020-07-14 11:05:25 · 136 阅读 · 0 评论 -
泛型
泛型PECS原则原创 2020-07-12 22:56:53 · 128 阅读 · 0 评论 -
《Java编程思想》学习笔记【十四】
运行时类型信息是的可以再程序运行时发现和使用类型信息。要理解RTT在Java中的工作原理,首先要知道类型信息在运行时如何表示的。这项工作由称为class对象的特殊对象完成,它包含了与类有关的信息。Java使用Class对象来执行RTT。类时程序的一部分,每个类都有一个Class对象。换言之,每当编写并编译了一个新类,就会产生一个Class对象。为了生成这个类的对象,运行这个程序的Java虚拟机(JVM)将使用被称为“类加载器”的子系统。...原创 2020-07-11 22:27:11 · 111 阅读 · 0 评论 -
Java动态代理
代理和动态代理Java动态代理代理模式为其他对象提供一个代理以控制对某个对象的访问。代理类主要负责为委托了(真实对象)预处理消息、过滤消息、传递消息给委托类,代理类不现实具体服务,而是利用委托类来完成服务,并将执行结果封装处理。(就像经纪人(代理类)只是接受邀约剧本,但是并不自己唱歌演戏,而是明星(委托类)自己表演)其实就是代理类为被代理类预处理消息、过滤消息并在此之后将消息转发给被代理类,之后还能进行消息的后置处理。代理类和被代理类通常会存在关联关系(即上面提到的持有的被带离对象的引用),代理原创 2020-07-11 18:19:59 · 170 阅读 · 0 评论 -
《Java编程思想》学习笔记【十一】
持有对象Java使用库提供一套容器类,其中基本类型是List,Set,Queue,Map。@SuppressWarnings注解及其参数表示只有有关“不接受检查的异常”的警告信息应该被抑制![在这里插入图片描述](https://img-blog.csdnimg.cn/20200707153350715.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9原创 2020-07-07 16:37:15 · 169 阅读 · 0 评论 -
《Java编程思想》学习笔记【八+九】
多态在面向设计的程序语言中,多态是继数据抽象和继承之后的第三种基本特征。原创 2020-07-06 23:10:05 · 190 阅读 · 0 评论 -
《Java编程思想》学习笔记【六+七】
…烦人第六章 访问权限控制当编写一个Java源代码文件时,此文件通常被称为编译文件。每个编译单元都必须要有一个后缀名.java,而在编译单元内则可以有一个public类,该类的名称必须与文件的名称相同public类,该类的名称必须与文件的名称相同。private对于多线程有用,可能想控制如何创造对象,并组织别人直接访问某个特定的构造器(或全部构造器)。接口和实现访问控制的控制常被称为是具体实现的隐藏。把数据和方法包装进类中,以及具体实现的隐藏,常共同被称为是封装。出于两个原因,访问权限控原创 2020-07-06 16:21:02 · 148 阅读 · 0 评论 -
《Java编程思想》学习笔记【四+五】
第四章的控制执行流程没啥好说的foreach语法。补一张例子~~(我的鼠标笔记过于丑陋)~~return语法原创 2020-06-16 23:22:27 · 143 阅读 · 0 评论 -
《Java编程思想》学习笔记【三】
唔,打字真麻烦,随便写一些认为需要的。基本类型存储了实际的数值,而不是指向一个对象的引用,所以赋值是直接将一个地方的内容复制到另一个地方。而对一个对象进行操作时,我们真正操作的是对象的引用。所以将一个对象赋值给另一个对象,实际上是将引用从一个地方复制到另一个地方。将t2赋给t1,接着修改了t1。由于此时赋值操作的是一个对象的引用,所以修改t1的同时也改变了t2。t1,t2指向相同的对象。对于前缀递增和前缀递减(如++a和--a),会先执行运算,再生成值。对于后缀递增和后缀递减(原创 2020-06-13 22:56:22 · 173 阅读 · 0 评论 -
《Java编程思想》学习笔记【二】
终于忙完项目了…开始暑假学习。原创 2020-06-07 17:14:41 · 232 阅读 · 0 评论 -
《Java编程思想》学习笔记【一对象导论】
重头学习Java,大一没怎么学,大二上课也没听。(流下不学无术的眼泪)编程书一本比一本厚(原创 2020-05-24 01:18:11 · 285 阅读 · 0 评论 -
SpringBoot启动类@SpringBootApplication注解及执行流程
基础知识:@interface与interface的区别以及@interface的用法先了解一下注解知识。目录 @ComponentScan 注解参数的作用@EnableAutoConfiguration 注解自动配置幕后英雄:SpringFactoriesLoader详解@SpringBootConfiguration 注解@Inherited 注解@Documented 注解@Retention() 注解@Target() 注解深入探索SpringApplication执行流程Spring B转载 2020-05-20 23:41:09 · 5690 阅读 · 1 评论 -
@interface与interface的区别以及@interface的用法
interface:声明一个Java接口接口可以理解成一种特殊的类,在这个类中只能有常量和抽象方法;接口不可以实例化,接口中的方法没有方法体,继承接口的类必须实现接口中定义的方法。@interface:一个继承了java.lang.annotation.Annotation接口的自定义注解,定义注释类型。Java从1.5开始提供annotation(注解、标注),它用来修饰应用程序的元素(类、方法、属性、参数、本地变量、包、元数据),编译器将其与元数据一同存储在class文件中,运行期间..原创 2020-05-20 21:31:45 · 8309 阅读 · 0 评论