自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Go语言基础学习

最近Go很火,尤其是协程,好像很厉害,特地来学一下。为啥很火呢?天生支持高并发强大的标准库标准库gcruntime简单易学基础语法之前学习过java,所以和java对比着来变量局部变量var a int //默认值是0var b int = 10 //声明一个值,并初始化var c = 100 //类型自动推断 d := 1000 //最常用 省去 var,并且类型自动匹配全局变量第四种不支持全局变量多变量单行写法var xx,yy

2021-06-02 15:58:28 102

原创 从 paxos 到 zookeeper

分布式架构ACID原子性一致性隔离性持久性CAPBASE一致性协议为了解决一致性协议2pc目前,绝大部分的关系型数据库都是采用二阶段提交协议来完成分布式数据库的一致性。3pcpaxoszookeeper 和 ZAB广播 和 崩溃恢复leader 选举过程...

2020-10-17 10:52:57 153

原创 springboot分析

入口@springbootapplication@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan( excludeFilters = {@Filter( type = FilterType.CUSTOM, classes = {T

2020-10-05 10:19:15 156

原创 CompletableFuture

CompletableFutureCallable,有结果的同步行为,比如做蛋糕,产生蛋糕Runnable,无结果的同步行为,比如喝牛奶,仅仅就是喝Future,异步封装Callable/Runnable,比如委托给师傅(其他线程)去做糕点CompletableFuture,封装Future,使其拥有回调功能,比如让师傅主动告诉我蛋糕做好了原理介绍CompletionStage确保了CompletableFuture能够进行链式调用。public static <U> Co

2020-09-28 22:14:08 64

原创 ThreadLocal

ThreadLocal作用用于存储线程本地的副本变量,说白了就是为了做到线程隔离。用于确保线程安全。做个不恰当的比喻,从表面上看ThreadLocal相当于维护了一个map,key就是当前的线程,value就是需要存储的对象。这里的这个比喻是不恰当的,实际上是ThreadLocal的静态内部类ThreadLocalMap为每个Thread都维护了一个数组table,ThreadLocal确定了一个数组下标,而这个下标就是value存储的对应位置问题ThreadLocal是怎么保证了线程隔

2020-09-28 17:38:12 73

原创 dubbo 源码

推荐使用xml ,api当在和别的框架集合时使用还有注解方式(建议由服务提供方设置超时,因为一个方法需要执行多长时间,服务提供方更清楚,如果一个消费方同时引用多个服务,就不需要关心每个服务的超时设置)。引用缺省是延迟初始化的,只有引用被注入到其它 Bean,或被 getBean() 获取,才会初始化。如果需要饥饿加载,即没有人引用也立即生成动态代理,可以配置:<dubbo:reference … init=“true” />注解@Configuration@EnableDubbo(

2020-09-28 11:04:19 357

原创 zookeeper 的相关api使用

创建节点 create持久节点临时节点 -e有序节点 -s无序节点持久有序: 分布式id临时有序: 分布式锁set /aa “aaa” -v 3 (要和版本号一致)delete /aa -v 2 (也是考虑版本号)deleteall 删除这个路径下的所有的节点get 查看节点返回数据+属性查看状态stat 只返回属性读取子节点列表lsls2 另加当前节点节点属性监听器应用 之一:zookeeper做配置中心,一旦有修改,通知应用程序去读取最新的信息。zoo

2020-09-13 22:49:19 61

原创 Java 8的日期api

原来常用 simpleDateFormat 线程不安全的 可以用 threadlocal解决java.util.Date 和 SimpleDateFormatter 都不是线程安全的,而 LocalDate 和 LocalTime 和最基本的 String 一样,是不变类型,不但线程安全,而且不能修改。java8 新加time包 DateTimeFormatterlocaldate localtime localdatetimeinstant 时间戳...

2020-09-13 17:11:18 48

原创 lambda 和 stream

lambda ->左边 参数列表 对应接口中方法的参数列表右边 功能实现 对应方法的实现来代替匿名内部类需要函数式接口的支持,若接口中只有一个抽象方法的接口。称为函数式接口右边使用同级别变量时,有final 修饰 ,跟匿名内部类(默认加上final)一样,其实就是语法糖 1.7之前不默认加 ,需要自己显式加上格式1:无参数,无返回值runnable接口()->sout(“hello”)格式2:有 参数,无返回值 只有一个参数的话 小括号可以省略Consumer

2020-09-12 22:59:42 162

原创 netty

netty异步的,基于事件驱动的网络通信框架,本质是一个NIO框架,简化了NIO的使用。nettyNIOJDK原生tcp/ipjavaIO 模型bio 连接数较少且比较固定nio 连接数多,且时间短 聊天服务器aio 连接数多 且时间长。...

2020-08-23 22:24:44 158

原创 java 自定义注解

首先要知道元注解:@Target说明Annotation所修饰的对象范围,用于描述注解的使用范围@Retention定义了该Annotation被保留时间的长短,用于描述注解的生命周期有 source ,class,和Runtime@Documented用以描述其他类型的annotation应该被作为被标注的程序成员的公共API,是一个标记注解@Inherited也是一个标记注解,阐述了某个被标记的类型是被继承的。元注解就是负责注释其他注解自定义注解要使用 @interface

2020-08-11 16:14:12 62

原创 Synchronized与锁

几种锁无锁状态偏向锁状态轻量级锁状态重量级锁状态

2020-05-04 11:07:23 63

原创 cas的问题

CAS实现原子操作的三大问题:ABA问题所谓ABA问题,就是一个值原来是A,变成了B,又变回了A。这个时候使用CAS是检查不出变化的,但实际上却被更新了两次。ABA问题的解决思路是在变量前面追加上版本号或者时间戳。从JDK 1.5开始,JDK的atomic包里提供了一个类AtomicStampedReference类来解决ABA问题。循环时间长开销大CAS多与自旋结合。如果自旋CAS长时间...

2020-05-04 10:45:10 141

原创 通信工具类

JDK中提供了一些工具类以供开发者使用。这样的话我们在遇到一些常见的应用场景时就可以使用这些工具类,而不用自己再重复造轮子了。它们都在java.util.concurrent包下。先总体概括一下都有哪些工具类,它们有什么作用,然后再分别介绍它们的主要使用方法和原理。...

2020-05-04 10:42:46 162

原创

synchronized的不足之处我们先来看看synchronized有什么不足之处。如果临界区是只读操作,其实可以多线程一起执行,但使用synchronized的话,同一时间只能有一个线程执行。synchronized无法知道线程有没有成功获取到锁。使用synchronized,如果临界区因为IO或者sleep方法等原因阻塞了,而当前线程又没有释放锁,就会导致所有线程等待。而这些都是lo...

2020-05-04 10:31:48 98

原创 线程池

总览

2020-05-04 10:05:35 78

原创 juc并发集合类

集合总览Queue 接口ConcurrentLinkedQueue 实现类BlockingQueue 接口ArrayBlockingQueue实现类DelayQueue 实现类PriorityBlockingQueue 实现类SynchronousQueue实现类Deque接口ArrayDueue实现类LinkedList实现类 BlockingDeque 接口Linke...

2020-05-03 17:31:18 255

原创 hashmap 源码分析

// 默认构造函数。 public HashMap() { this.loadFactor = DEFAULT_LOAD_FACTOR; // all other fields defaulted } // 包含另一个“Map”的构造函数 public HashMap(Map<? extends K, ? extend...

2020-05-03 15:30:44 74

原创 LinkedList

LinkedList是一个实现了List接口和Deque接口的双端链表。 LinkedList底层的链表结构使它支持高效的插入和删除操作,另外它实现了Deque接口,使得LinkedList类也具有队列的特性; LinkedList不是线程安全的,如果想使LinkedList变成线程安全的,可以调用静态类Collections类中的synchronizedList方法:List list=Col...

2020-05-02 20:18:57 87

原创 vector源码分析

Vector和ArrayList操作基本相同,只不过对方法加了synchronized做同步处理,以add方法为例//扩容重点步骤:确定扩容的大小 private int newCapacity(int minCapacity) { // overflow-conscious code int oldCapacity = elementD...

2020-05-02 18:25:14 77

原创 ArrayList源码分析

package java.util;import java.util.function.Consumer;import java.util.function.Predicate;import java.util.function.UnaryOperator;public class ArrayList<E> extends AbstractList<E> ...

2020-05-02 17:45:09 69

原创 java集合

Collection接口List 接口LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不安全ArrayList接口实现类, 数组, 随机访问, 没有同步, 线程不安全Vector 接口实现类 数组, 同步, 线程安全Stack 是Vector类的实现类Set接口HashSet 使用hash表(数组)存储元素LinkedHashSet 链表维护元素的插入...

2020-05-02 13:48:45 102

原创 Java 反射

public class Book{ private final static String TAG = "BookTag"; private String name; private String author; @Override public String toString() { return "Book{" + ...

2020-05-02 11:51:13 52

原创 Java序列化

JDK版本序列化 SerializableObjectOutputStream()ObjectInputStream()writeObject()readObject()public static void main(String[] args) throws Exception { //序列化 OutputStream os = new...

2020-05-02 11:16:56 61

原创 Java异常体系

Thorwable类(表示可抛出)是所有异常和错误的超类,两个直接子类为Error和Exception,分别表示错误和异常。其中异常类Exception又分为运行时异常(RuntimeException)和非运行时异常, 这两种异常有很大的区别,也称之为不检查异常(Unchecked Exception)和检查异常(Checked Exception)。下面将详细讲述这些异常之间的区别与联系:...

2020-05-02 10:56:33 99

原创 object类

private static native void registerNatives();static { registerNatives();}public final native Class<?> getClass();public native int hashCode();//equals方法用于判定两个对象是否相等。Object中的equals方法其实默认...

2020-05-02 10:04:55 77

原创 算法

双向BFSleetcode 单词接龙桶排序leetcode 164 最大间距

2020-05-01 19:53:48 208

原创 剑指offer(三)

在排序数组中查找数字(排序数组首先想二分法的各种用法)class Solution { public int search(int[] nums, int target) { if(nums.length==0){ return 0; } int i=0,j = nums.length-1; whi...

2020-04-26 16:13:19 89

原创 剑指offer(二)

序列二叉树

2020-04-23 15:45:21 73

原创 剑指offer(一)

数组中的重复数字方法一利用set集合 或者 hashmap 内存占用大class Solution { public int findRepeatNumber(int[] nums) { Set<Integer> set = new HashSet<Integer>(); for(int i =0;i<num...

2020-04-19 22:35:36 74

原创 spring相关知识

IOCspring读取配置或注解的过程1:先通过扫描指定包路径下的spring注解,比如@Component、@Service、@Lazy @Sope等spring识别的注解或者是xml配置的属性(通过读取流,解析成Document,Document)然后spring会解析这些属性,将这些属性封装到BeanDefintaion这个接口的实现类中.在springboot中,我们也可以采用注解配...

2020-04-10 19:01:21 207

原创 设计模式相关知识

UML继承实现矩形表示法空心三角+虚线棒棒糖表示法依赖关联聚合(has a)弱关系,有不同的生命周期组合(contains a ) 强关系 ,同一生命周期策略模式设计原则:把变化的封装起来,不变的不受影响组合比封装好策略这个词应该怎么理解,打个比方说,我们出门的时候会选择不同的出行方式,比如骑自行车、坐公交、坐火车、坐飞机、坐火箭等等,这些出行方式,每一种都是...

2020-04-08 14:12:20 425

原创 http相关面试题

浏览器输入一个地址。到页面展示中间经历了哪些东西?1、游览器输入url。先解析url地址是否合法  2、游览器检查是否有缓存(游览器缓存-系统缓存-路由器缓存)。如果有,直接显示。如果没有,跳到第三步。  3、在发送http请求前,需要域名解析(DNS解析),解析获取对应过的ip地址。  4、游览器向服务器发起tcp链接,与游览器简历tcp三次握手  5、握手成功后,游览器向服务器发送h...

2020-04-01 22:16:10 174

原创 计算机网络知识

计算机网络体系结构概论五层协议应用层 :为特定应用程序提供数据传输服务,例如 HTTP、DNS 等协议。数据单位为报文。传输层 :为进程提供通用数据传输服务。由于应用层协议很多,定义通用的传输层协议就可以支持不断增多的应用层协议。运输层包括两种协议:传输控制协议 TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段;用户数据报协议 UDP,提供无连接、尽最大努力的数据传输服务...

2020-04-01 22:08:49 435

原创 《高性能MySql》笔记

一、MySQL架构与历史A.并发控制1.共享锁(shared lock,读锁):共享的,相互不阻塞的2.排他锁(exclusive lock,写锁):排他的,一个写锁会阻塞其他的写锁和读锁3.InnoDB采用两阶段锁定协议。.InnoDB会根据隔离级别在需要时自动加锁。B.事务1.事务ACID原子性(atomicity)一个事务必须被视为一个不可分割的最小工作单元,整个事务中所有操...

2020-03-31 10:44:10 115

原创 《java并发编程的艺术》笔记

第一章 并发编程的挑战并发编程的目的是为了让程序运行得更快,但是不是更多的线程就能让程序最大限度的并发执行。1.上下文切换,2.死锁的问题,3.受限于软件和硬件的资源限制问题。软件资源限制:有数据库的链接数和socket连接数等硬件的资源限制有带宽的上传、下载速度、硬盘读写速度和CPU处理速度。减少上下文切换的方法:无锁并发编程CAS算法使用最少线程使用协程避免死锁的方法:...

2020-03-31 10:43:47 90

空空如也

空空如也

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

TA关注的人

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