- 博客(13)
- 资源 (1)
- 收藏
- 关注
原创 二叉树遍历(递归和非递归)前序、中序、后序遍历
二叉树前序遍历(递归)/** * 二叉树前序遍历(递归) * @param root */ public static void recursionBefore(TreeNode root) { if (root == null) { return; } System.out.print(root.getValue() + "->"); recursionBefore(roo
2021-10-09 11:31:50 104
原创 volatile和synchronized的区别
volatilevolatile的作用保证线程可见性(堆内存中)MESI(缓存一致性协议)CPU级缓存一致性禁止指令重排(CPU)synchronized 底层实现早期synchronized是重量级锁,需要去系统申请锁,效率非常低JavaSE1.6之后引入 偏向锁–》自旋锁–》重量级锁偏向锁:只有一个线程访问的时候给object对象头上markword记录这个线程,内部实现的时候只记录的线程ID执行时间短、线程数少可以用自旋锁执行时间长、线程数多可以用重量级锁vo
2021-08-10 17:30:23 121
原创 ZooKeeper详解之二(原理篇)
ZooKeeper详解之二(原理篇)zookeeper 采用了全局递增的事务 Id 来标识,所有的 proposal(提议)都在被提出的时候加上了 zxid,zxid 实际上是一个 64 位的数字服务器角色Leader(1)事务请求的唯一调度和处理者,保证集群事务处理的顺序性(2)集群内部各服务的调度者Follower(1)处理客户端的非事务请求,转发事务请求给 Leader 服务器(2)参与事务请求 Proposal 的投票(3)参与 Leader 选举投票Observer
2021-08-08 21:21:40 228
翻译 ZooKeeper详解之一
ZooKeeper介绍ZooKeeper 是分布式应用程序的分布式开源协调服务。它公开了一组简单的原语,分布式应用程序可以基于这些原语来实现更高级别的同步、配置维护以及组和命名服务。它被设计为易于编程,并使用以熟悉的文件系统目录树结构为样式的数据模型。它在 Java 中运行,并且具有 Java 和 C 的绑定。设计目标ZooKeeper 很简单。ZooKeeper 允许分布式进程通过共享的分层命名空间相互协调,该命名空间的组织类似于标准文件系统。命名空间由数据寄存器组成——在 ZooKeeper 中称
2021-08-08 18:04:07 65
原创 Java常用线程池体系及源码解读
Java常用线程池体系结构图:接口说明Executor:线程池顶级接口;ExecutorService:线程池次级接口,对Executor做了一些扩展,增加了一些功能;ScheduledExecutorService:对ExecutorService做了一些扩展,增加一些定时任务相关的功能;AbstractExecutorService:抽象类,运用模板方法设计模式实现了一部分方法;ThreadPoolExecutor:普通线程池类,包含最基本的一些线程池操作相关的方法实现;Schedu
2021-07-06 21:12:43 121
原创 JAVA中创建线程的三种方式及区别
JAVA创建线程的三种方式及区别线程应用的几种场景:继承Thread实现Runnable实现Callable与Future优劣势1.继承Thread定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体创建Thread子类的实例,即创建了线程对象。调用线程对象的start()方法来启动该线程。0代码:package com.iread7.juc;public class ThreadDemo exten
2021-07-05 16:03:25 262
原创 设计模式之单例模式
单例模式本篇是读《设计模式之禅(第2版)》这本书的笔记,希望大家都读一下这本书,很有意思的一本书。定义:Ensure a class has only one instance, and provide a global point of access to it.(确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。)一、优缺点1.优点由于单例模式在内存中只有一个实例,减少了内存开支。减少了系统的性能开销(在Java EE中采用单例模式时需要注意JVM垃圾回收机制)避免对
2020-12-16 21:06:57 84
原创 MySQL添加、删除索引
MySQL添加、删除索引USING BTREE是采用B-tree索引可以加快数据的查询速度。1.添加索引1.主键索引ALTER TABLE `table_name` ADD PRIMARY KEY (`column`) USING BTREE2.唯一索引ALTER TABLE `table_name` ADD UNIQUE (`column`) USING BTREE3.全文索引ALTER TABLE `table_name` ADD FULLTEXT (`column`) USING
2020-12-16 13:04:01 450 1
原创 设计模式之设计原则
7大设计原则设计模式是凌驾于任何开发语言之上的给你编程思想增加一些新的招数,让你站在巨人的肩膀上充分发挥你的硬技能。。。。。。言归正传。。。。下面是我看《设计模式之禅(第2版)》记录的读书笔记,供大家参考。设计模式是什么?它是一套理论,由软件界的先辈们(The Gang of Four:包括ErichGamma、Richard Helm、Ralph Johnson、John Vlissides)总结出的一套可以反复使用的经验,它可以提高代码的可重用性,增强系统的可维护性,以及解决一系列的复杂问题。做
2020-12-05 23:35:24 78
原创 Java中的与或非、异或运算
Java中的与、或、非运算与(&)运算符两个位都为1,则为1,否则为0; public static void positiveAnd(){ //正数的原码、反码、补码都一样 //2的二进制码为: 00000000 00000000 00000000 00000010 int a = 2; //6的二进制码为: 00000000 00000000 00000000 00000110 int b = 6;
2020-12-01 14:35:47 4594
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人