自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(122)
  • 收藏
  • 关注

转载 【概念】MOM和FOF基金

MOM基金和FOF基金

2022-07-12 13:54:08 622

原创 Reactor事件驱动模型的学习

参考:添加链接描述添加链接描述前置:Java NIO和BIO,AIO的主要区别reactor模型相比传统 one-pre-one-thread模型来看,把请求粒度缩小到事件维度。比如:一个读请求,包含了连接事件,读就绪事件,写就绪事件,还有编码事件,解码事件等等。这样的话,多个读请求,不太可能会同时就绪。因为人操作总有先后,那么线程就能为先就绪的读事件处理。如果是传统IO模型,读未就绪的请求会一直占用一个线程,浪费cpu。reactor是事件驱动模型,不是请求驱动,也不是其他驱动。事件是比线

2021-03-28 23:57:29 574

原创 一致性hash的简单学习

。添加链接描述

2021-03-17 15:37:18 429

原创 TIME_WAIT的原因和过多的危害以及解决TIME_AWAIT过多方案

参考:添加链接描述添加链接描述原因1:保证最后一次ack一定到达,为实现TCP全双工连接的可靠释放。如果主动关闭一方不维护这样一个TIME_WAIT状态,那么当被动关闭一方重发的FIN到达时,主动关闭一方的TCP传输层会用RST包响应对方,这会被对方认为是有错误发生,然而这事实上只是正常的关闭连接过程,并非异常。原因2::此时的TCP连接进入TIME_WAIT状态,处于该状态下的TCP连接不能立即以同样的四元组建立新连接,即发起active close的那方占用的local port在TIME_WAI

2021-03-15 22:35:38 2089

原创 Socket的通信流程,自连接与socket长连接

socket1socket2【TCP/IP】端口未监听,还能访问成功

2021-03-15 21:51:47 193

转载 红黑树和AVL树(平衡二叉树)区别

AVL树(平衡二叉树)AVL树是带有平衡条件的二叉查找树,一般是用平衡因子差值判断是否平衡并通过旋转来实现平衡,左右子树树高不超过1,和红黑树相比,AVL树是严格的平衡二叉树,平衡条件必须满足(所有节点的左右子树高度差的绝对值不超过1)。不管我们是执行插入还是删除操作,只要不满足上面的条件,就要通过旋转来保持平衡,而旋转是非常耗时的,由此我们可以知道AVL树适合用于插入与删除次数比较少,但查找多的情况由于维护这种高度平衡所付出的代价比从中获得的效率收益还大,故而实际的应用不多,更多的地方是用追求局部

2021-03-15 18:13:10 160

原创 数据库索引采用B树和B+树的原因

参考:深入理解数据库索引采用B树和B+树的原因数据库文件存储以磁盘文件存储在系统中(持久化存储的原因)

2021-03-15 16:37:21 203

原创 TCP粘包拆包以及解决方案与TCP报文相关

只有TCP有粘包现象,UDP永远不会粘包。发送端可以是一K一K地发送数据,而接收端的应用程序可以两K两K地提走数据,当然也有可能一次提走3K或6K数据,或者一次只提走几个字节的数据,也就是说,应用程序所看到的数据是一个整体,或说是一个流(stream),一条消息有多少字节对应用程序是不可见的,因此TCP协议是面向流的协议,这也是容易出现粘包问题的原因。而UDP是面向消息的协议,每个UDP段都是一条消息,应用程序必须以消息为单位提取数据,不能一次提取任意字节的数据,这一点和TCP是很不同的。关于TCP

2021-03-15 16:17:32 218

原创 自增id做主键的好处

如果表使用自增主键,那么每次插入新的记录,记录就会顺序添加到当前索引节点的后续位置,当一页写满,就会自动开辟一个新的页。 总的来说就是可以提高查询和插入的性能。1: 主键索引既存储索引值,又在叶子节点中存储行的数据,也就是说数据文件本身就是按照b+树方式存放数据的。2: 如果没有定义主键,则会使用非空的UNIQUE键做主键 ; 如果没有非空的UNIQUE键,则系统生成一个6字节的rowid做主键;聚簇索引中,N行形成一个页(一页通常大小为16K)。如果碰到不规则数据插入时,为了保持B+树的平衡,会造成

2021-03-15 00:36:23 1595

转载 为什么mysql默认隔离级别设置为可重复读?

一般的DBMS系统,默认都会使用读提交(Read-Comitted,RC)作为默认隔离级别,如Oracle、SQLServer等,而MySQL却使用可重复读(Read-Repeatable,RR)。要知道,越高的隔离级别,能解决的数据一致性问题越多,理论上性能损耗更大,可并发性越低。隔离级别依次为>:串行化 > RR > RC >读未提交...

2021-03-15 00:11:21 233

原创 并发的学习

@TOC并发是为了提高运行在单处理器上的程序的性能。上下文切换是指从当前线程切换到下一个线程时要保存当前线程的状态阻塞:程序中的某个任务因为某种条件(比如等待I/O资源)而不能继续执行当main()创建Thread对象时,并没有捕获任何对这些对象的引用,使用普通对象时,对于垃圾回收来说是公平的,但使用Thread时,每个Thread都“注册”了自己,因此确实有一个对它的引用,而且在它的任务退出其run()并死亡之前,垃圾回收器无法清除它。因此一个线程会创建一个独立的执行线程,在对其start()的调

2021-02-16 16:28:25 355

原创 Java NIO和BIO,AIO

参考:添加链接描述添加链接描述面向Stream和面向BufferJava NIO和IO之间最大的区别是IO是面向流(Stream)的,NIO是面向块(buffer)的,所以,这意味着什么?IO是面向流意味着从流中一次可以读取一个或多个字节,拿到读取的这些做什么你说了算,这里没有任何缓存(这里指的是使用流没有任何缓存,接收或者发送的数据是缓存到操作系统中的,流就像一根水管从操作系统的缓存中读取数据)而且只能顺序从流中读取数据,如果需要跳过一些字节或者再读取已经读过的字节,你必须将从流中读取的数据

2021-01-30 00:00:29 240

原创 类文件结构&虚拟机类加载机制·虚拟机学习笔记【三】

目录class类文件结构魔数与class文件的版本(魔数:确定这个文件是否为一个能被虚拟机接受的class文件)常量池:class文件之中的资源仓库访问标志:识别一些类或者接口层次的访问信息类索引,父类索引与接口索引集合:确定这个类的继承关系字段表集合:用于描述接口或者类中声明的变量方法表集合属性表集合class类文件结构任何一个Class文件都对应着唯一一个类或接口的定义信息,反过来说,类或者说接口并不一定都得定义在文件里。(比如类和接口也可以通过类加载器直接生成)魔数与class文件的版本(魔

2021-01-11 12:30:01 118

原创 垃圾收集器与内存分配策略·虚拟机学习笔记【二】

目录垃圾收集器与内存分配策略对象是否死亡引用计数算法垃圾收集器与内存分配策略当需要排查各种内存溢出,内存泄漏问题时,当垃圾收集器成为系统达到更高并发量的瓶颈时,就需要对“内存的动态分配和内存回收”的实施有所监控和调节。因为程序计数器(当前线程执行的字节码的行号指示器,通过改变计数器的值来选取下一题要执行的指令 ),虚拟机栈(方法/栈帧/),本地方法栈(虚拟机使用到的 Native 方法服务的内存区域)都是随着线程而生,随线程而灭,在方法结束或者线程结束时,内存自然跟随着回收,内存分配和回收都具有确定性

2020-12-05 22:20:38 134

原创 Java内存区域与内存溢出异常·虚拟机学习笔记【一】

读书学习参考:《深入理解Java虚拟机》个人发言:按学长吩咐初步学习,第一次读这玩意,实不相瞒,一脸懵逼。(2019.11.3)

2020-12-04 10:53:03 110

原创 数据库面试学习

文章目录数据库基础为什么要使用数据库?什么是SQL?什么是MySQL?三大范式是什么什么是依赖传递?mysql有关权限的表有几张,分别是什么?什么是主从复制?它的工作原理?主从复制的优点?什么是binlog?binlog有几种录入模式?分别有什么区别?数据类型的使用策略引擎数据库基础为什么要使用数据库?如果将数据保存在内存中,虽然存取速度快,但是不能永久保存。如果将数据保存在文件中,虽然能永久保存,但是频繁的I/O读取效率很低下而使用数据库不仅可以永久保存,还可以利用SQL语句快速查询什么是SQ

2020-12-01 21:34:48 243

原创 并发之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 153

转载 排序算法的学习

快速排序,归并排序,堆排序,冒泡排序属于比较排序。在排序的最终结果里,元素之间的次序依赖于他们之间的比较,每个数都必须和其他数进行比较才能确定自己的位置。比较排序的优势是,适用于各种规模的数据,也不在乎数据的分布,都能进行排序。计数排序、基数排序、桶排序则属于非比较排序。**非比较排序是通过确定每个元素之前,应该有多少个元素来排序。**针对数组arr,计算arr[i]之前有多少个元素,则唯一确定了arr[i]在排序后数组中的位置。非比较排序只要确定每个元素之前的已有的元素个数即可,所有一次遍历即可解.

2020-11-20 11:54:10 141

原创 字符串的学习

String对象不可变,String类每一个会修改string值的方法实际上都是创建了一个全新的string对象。每当把string对象作为方法的参数时,实际传递的是引用的一个拷贝。用于string的 ‘+’和‘+=’是java中仅有的两个重载过的操作符。string和stringBuffer,stringBuilder的区别...

2020-11-18 21:34:46 185

原创 集合容器的学习

https://www.cnblogs.com/zqq-blog/p/10754010.html

2020-11-17 23:41:45 252

原创 刷题记录之剑指offer

(还差几题,感觉没太大意义就不写了(文章目录2020.10.16剑指 Offer 68 - I. 二叉搜索树的最近公共祖先2020.10.17剑指 Offer 68 - II. 二叉树的最近公共祖先剑指 Offer 27. 二叉树的镜像剑指 Offer 28. 对称的二叉树剑指 Offer 29. 顺时针打印矩阵剑指 Offer 30. 包含min函数的栈剑指 Offer 32 - II. 从上到下打印二叉树 II剑指 Offer 39. 数组中出现次数超过一半的数字剑指 Offer 40. 最小的k个数

2020-11-16 10:47:38 144

原创 快速乘与快速幂

快速幂运算:long long ksm(long long a, long long b) { long long ans = 1, base = a; while(b != 0) { if(b & 1 != 0) { ans *= base; } base *= base; b >>= 1; } return ans;}其中“b & 1”指取b的二进制数的最末位,如11的二进制数为1011,第一次循环,取的是最右边的“1

2020-11-14 16:19:41 109

原创 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 924

原创 Zookeeper的学习(含Redis分布式和一致性相关)

Zookeeper入门rpc使用zk的例子1rpc使用zk的例子2

2020-10-24 16:06:36 155

转载 java序列化机制之protoStuff框架

添加依赖<dependency> <groupId>io.protostuff</groupId> <artifactId>protostuff-core</artifactId> <version>1.6.0</version></dependency><dependency> <groupId>io.protostuff&lt

2020-10-24 15:31:45 305

转载 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 123

原创 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 164

原创 《Redis设计与实现》阅读笔记之数据结构与对象

文章目录简单动态字符串简单动态字符串Redis构建了一种名为简单动态字符串(SDS)的抽象类型,并将SDS用作Redis的默认字符串。除了用来保存数据库中的字符串之外,SDS还被用在缓冲区。SDS遵循C字符串以空字符结尾的惯例,保存空字符的1字节空间不计算在SDS的len属性里面,并为空字符分配额外1字节空间,以及添加空字符到字符串末尾等操作,都由SDS函数自动完成的。设置和更新SDS长度的工作都是由SDS的API在执行时自动完成,使用SDS无须进行任何修改长度的工作。C字符串不记录自身长

2020-09-19 23:05:59 88

转载 Spring Boot日志配置

预警系统判断疑似bug大部分源于日志。比如某个微服务接口由于各种原因导致频繁调用出错,此时调用端会捕获这样的异常并打印ERROR级别的日志,当该错误日志达到一定次数出现的时候,就会触发报警。try { 调用某服务} catch(Exception e) { LOG.error("错误信息", e);}所以日志至关重要,这篇就来介绍下在Spring Boot如何配置日志。Spring Boot默认日志系统Spring Boot默认使用LogBack日志系统,如果不需要更

2020-07-26 22:50:38 234

转载 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 331

原创 Java序列化的学习

参考:添加链接描述文章目录前言实例 demo为什么一个类实现了Serializable接口,它就可以被序列化?默认序列化机制选择性的序列化使用 transient 关键字使用writeObject()方法与readObject()方法使用 Externalizable 接口序列化和反序列化需要注意的坑能序列化的前提要知道序列化的是什么样儿的对象(成员)序列化的安全性反序列化后,何时不是同一个对象前言Java允许我们在内存中创建可复用的Java对象,但一般情况下,这些对象的生命周期不会比JVM的生命周期

2020-07-24 15:38:32 147

转载 Java迭代器的学习

(讲道理,这玩意在我的《java编程思想》笔记好像也有,而且更深入,但是我太金鱼脑了(那本书有点难顶啊 迭代器模式:就是提供一种方法对一个容器对象中的各个元素进行访问,而又不暴露该对象容器的内部细节。概述  Java集合框架的集合类,我们有时候称之为容器。容器的种类有很多种,比如ArrayList、LinkedList、HashSet…,每种容器都有自己的特点,ArrayList底层维护的是一个数组;LinkedList是链表结构的;HashSet依赖的是哈希表,每种容器都有自己特有的数据结构。

2020-07-22 23:24:52 136

转载 springboot与web页面交互的相关代码,前后端数据交互、json数据交互、Controller接收参数

后台接收URL拼接参数@GetMapping("/item/{code}") //对应的链接为:/item/10001//@GetMapping 组合注解,是 @RequestMapping(method = RequestMethod.GET) 的缩写public List<Description> getProduct(@PathVariable("code") String productCode) { //your code }后台接收查询参数@GetMa

2020-07-22 21:22:45 806

原创 MyBatis中有关int和Integer的使用

int 类型,在默认情况下不赋值为0,执行到mybatis的更新语句时,被当做数字0,而非nullInteger的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,总结:在实体类中尽量使用Integer修饰,Integer可以区分出未赋值和值为0的区别,我们大部分做判断都是以“”null“”去判断的。 /** * 主键字段 */ @TableId(type = IdType.AUTO) //根据数据库类型设置自增

2020-07-22 16:02:47 4550

原创 Mysql使用Boolean类型数据

在Mysql数据库中是没有Boolean类型的,但是可以使用tinyint(1)来替代。如果是tinyint(2)转换为java的对象类型就是Byte。在mysql数据库中定义一个字段的类型为tinyint并且长度为一的话,使用mybatis自动生成实体类就会自动转换为Boolean类型的对象。...

2020-07-21 22:36:57 1596

转载 JAVA接口(Interface)和抽象类(Abstact)

JAVA接口(Interface)和抽象类(Abstact)我好懒w

2020-07-21 22:34:25 207

原创 关键字static 和 final 和 static final,finally、finalize的区别

static 是静态修饰关键字:可以修饰变量,程序块,方法,类。静态的特点:随着类的加载而加载、优先与对象而存在、被所有对象所共享、可以通过类名.静态的内容调用。弊端:1.有些数据是对象特有的数据,是不可以被静态修饰的。在定义static时,必须明确这个数据是否是被对象所共享。2.静态方法只能访问静态成员,不可以访问非静态成员。因为静态方法加载优先于对象存在,没有办法访问对象方法;3.静态方法中不能用this,super关键字. 因为this代表对象,静态方法中有可能没有对象,所以this无

2020-07-21 22:12:46 273

转载 SpringBoot中处理的转发与重定向

基础内容:页面跳转的两种实现方式:请求转发和重定向;请求转发:客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getRequestDispacther()方法,把请求转发给指定的student_list.jsp,整个流程都是在服务器端完成的,而且是在同一个请求里面完成的,因此servlet和jsp共享的是同一个request,在servlet里面放的所有东西,在student_list中都能取出来,因此,student_lis

2020-07-20 22:52:21 7291

原创 注解方式使用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 866

转载 springboot和springmvc的区别

springmvc从两个方面来看一是spring,spring的核心中IOC和AOP,IOC就是控制反转(就是将原本由程序代码直接操作的对象的调用权交给容器),目的是为了减低计算机代码的耦合度,所谓的耦合度就是代码中的逻辑关系不要太紧密,避免后面改的人会因为不懂业务逻辑导致改错代码;除此之外也避免我们每次创建新的对象,减少对应的代码量。我们实际代码过程中最常见的方式是依赖注入(DI Dependency Injection),所谓依赖注入就是通过构造注入或者set进行注入。依赖查找(DL Dependen

2020-07-20 15:30:50 3443

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除