自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 求解:一个thrift文件中,参数引用另一个thrift的struct,竟然maven编译报错

求解:一个thrift文件中,参数引用另一个thrift的struct,竟然maven编译报错[ERROR] thrift failed error: [ERROR:d:/workspaceplanet/vip-***-common/***-service/src/main/thrift/myservice.thrift:8] (last token was ‘RequestModel.Request’)Type “RequestModel.Request” has not been defined.

2021-02-23 16:58:31 477

原创 求解 这道题

2020-11-05 09:53:37 101

原创 InnoDB存储引擎底层B+树

B+树定义B+树是为磁盘或其他存取辅助设备设计的一种平衡查找树。在B+树中,所有记录节点都是按照键值的大小顺序存放在同一层的叶子节点上,由各叶子节点指针进行连接。B+树特性:高度、页page、扇出fan out。举例:上图B+树中,所有记录节点都在叶子节点上,并且是顺序存放的,如果用户从左边的叶子节点开始顺序遍历,可以得到所有键值的顺序排序:5、10、15、20、25、30、50、55、60、65、75、80、85。B+树的插入操作B+树的插入操作,必须保证插入后叶子节点中的记录依然排序。为了保持

2020-06-18 12:25:16 449

原创 maven 处理jar包冲突

1、基本说明groupId:maven项目隶属的实际项目;artifactId:定义当前项目中的一个maven项目(模块),使用实际项目名称;2、maven的依赖原则(1)依赖路径最短优先 一个项目demo依赖了2个Jar包,其中A-B-C-X(1.0),A-D-X(2.0)。由于X(2.0)路径最短,所以项目使用X(2.0)。(2)相同路径长度,pom文件中声明顺序优先如果A-B-X(1.0),A-C-X(2.0)这样相同路径长度,Maven会根据pom文件声明的顺序,加载。如果先声

2020-06-17 19:25:03 124

原创 Spring中BeanFactory与ApplicationContext的区别

BeanFactory和ApplicationContext,都是接口。ApplicationContext是BeanFactory的子接口。BeanFactory是Spring中最底层的接口,提供了最简单的容器功能,只提供了实例化对象和获取对象的功能;而ApplicationContext是Spring的一个更高级的容器,提供了更多有用的功能,如消息发送、响应机制、统一加载资源、强大的事件机制3.BeanFactory采用延迟加载方式注入Bean,ApplicationContext是在IOC容器启.

2020-06-17 18:59:37 658 1

原创 innodb存储引擎中的redo log和undo log

redo log重做日志,用来保证事务的原子性和持久性。undo log,用来保证事务的一致性,帮助事务的回滚和MVCC的功能。区别与联系:redo恢复提交事务修改的页操作,而undo回滚行记录到某个特定版本。二者记录的内容不同,redo通常是物理日志,记录的是页的物理修改操作。undo是逻辑日志,根据每行记录进行记录。redo log基本上是顺序写的,在数据库运行时,不需要对redo log的文件进行读取操作,而undo log是需要进行随机读写的。具体介绍:1)redo log重做日志由

2020-06-17 18:50:02 504

转载 怎样将一个Long类型的数据转换成字节数组

//先写进去long n = 1000000L;ByteArrayOutputStream baos = new ByteArrayOutputStream();DataOutputStream dos = new DataOutputStream(baos);dos.write(n);//再读出来byte[] buf = baos.toByteArray();

2020-06-17 18:15:46 680

原创 快速排序算法

原理:选择一个关键值作为基准值(一般选择第1个元素为基准元素),将比基准值大的都放在右边的序列中,将比基准值小的都放在左边的序列化中。(小—>大)具体循环过程如下:(1)从后往前比较,用基准值和最后一个值进行比较。如果比基准值小,则交换位置,如果比基准值大,则继续比较下一个值,直到找到第一个比基准值小的值,才交换位置。(2)从前向后比较,如果有比基准值大的,则进行交换,如果比基准值小,则继续比较下一个值,直到找到第一个比基准值大的,则交换位置。(3)重复上述步骤,直到从前向后比较的索引大于等于

2020-06-17 18:05:17 169

原创 Netty的零拷贝实现

第1种“零拷贝”——DIRECT BUFFERSNetty的接收和发送ByteBuffer,采用DIRECT BUFFERS,使用堆外直接内存进行Socket读写,不需要进行字节缓冲去的二次拷贝。如果使用传统的堆内存(HEAP BUFFERS)进行Socket读写,JVM会将堆内存的Buffer拷贝一份到直接内存中,然后,才写入Socket中,相比多了一次缓冲区的内存拷贝。使用native函数库直接分配堆外内存,然后通过一个存储在java堆中的DirectByteBuffer对象引用这个堆外内存,..

2020-06-17 17:45:37 377

原创 主要的序列化协议及应用场景

序列化对象writeObject(object->二进制)反序列化readObject(二进制->object)序列化作用:数据持久化;网络传输。如高并发下Session对象可持久化,需要时再还原到内存。注意:序列化出的二进制要尽可能地小。序列化协议:java原生序列化协议、Hession序列化、Google的ProtoBuffer、Facebook的Thrift、MessgePack。1.Java原生序列化主要由ObjectInputStream 和ObjectOutputSream

2020-06-17 17:16:19 573

原创 CountDownLatch的原理

CountDownLatch的原理java.lang.Concurrent包下的可阻塞类CountDownLatch(倒数计数器),基于基类AQS(AbstractQueuedSynchronizer)标准队列同步器类。在同步状态state中保存的是当前的计数值。countDown()调用release,从而导致计数器值递减,并且计数器值为零时,解除所有等待线程的阻塞。await()调用accquie,当计数器值为零时,acquire将立即返回,否则将阻塞。await():阻塞当前线程,将当前线程加入A

2020-06-10 12:48:43 152

空空如也

空空如也

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

TA关注的人

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