自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一个普通的Java开发的换工作之旅

基本背景:1)二本院校2)计算机相关专业3)南宁,中小企业,工作三年多面试结果:入职深圳-阿里巴巴-小p6面试过程:前前后后面试20多家,收到不到10家的offer,面试整体情况一般般面试建议:1、一定要在非意向工作地投递简历,看看自己的简历是否受欢迎。举例:我一开始打算在广州找工作,一开始只有大厂(BIGO、欢聚时代)给机会,面试机会不多,面试机会基本可能的问题就出在简历上,所以简历需要反复修改,直到简历合格。2、一定要在非意向工作地/非意向公司寻找面试经验,巩固自己的面试经验。举

2020-12-21 09:58:50 365

原创 分布式协议与算法(二)Raft 算法

什么是 Raft 算法?Raft 算法属于 Multi-Paxos 算法,它是在兰伯特 Multi-Paxos 思想的基础上,做了一些简化和限制,比如增加了日志必须是连续的,只支持领导者、跟随者和候选人三种状态。Raft 算法是现在分布式系统开发首选的共识算法。绝大多数选用 Paxos 算法的系统(比如 Cubby、Spanner)都是在 Raft 算法发布前开发的,当时没得选;而全新的系统大多选择了 Raft 算法(比如 Etcd、Consul)。如果要用一句话概括 Raft 算法,我觉得是这样的:

2020-10-13 10:33:57 569

原创 分布式协议与算法(一)Paxos 算法

什么是 Paxos 算法?Paxos 算法是莱斯利·兰伯特于 1990 年提出的一种基于消息传递且具有高度容错特性的共识(consensus)算法。兰伯特提出的 Paxos 算法包含 2 个部分:一个是 Basic Paxos 算法,描述的是多节点之间如何就某个值(提案 Value)达成共识;另一个是 Multi-Paxos 思想,描述的是执行多个 Basic Paxos 实例,就一系列值达成共识。Paxos 算法在分布式领域具有非常重要的地位,开源分布式锁组件 Google Chubby 的

2020-10-13 10:31:25 793

原创 JDK 源码剖析(二)共享锁

前置知识 —— AQSAQS 的全称是 AbstractQueuedSynchronizer(抽象队列同步器),是基于 FIFO 队列实现的,并且内部维护了一个状态变量 state,通过原子更新这个状态变量 state 即可以实现加锁解锁操作。简单点来说就是加锁失败就会进入一个先进先出的队列中阻塞等待,如果锁被释放会唤醒队列中等待的线程去重新执行加锁逻辑。内部类与属性内部类 Node:static final class Node { // 标识节点是共享模式下的节点 static

2020-10-13 10:28:14 118

原创 JDK 源码剖析(一)独占锁

前置知识 —— AQSAQS 的全称是 AbstractQueuedSynchronizer(抽象队列同步器),是基于 FIFO 队列实现的,并且内部维护了一个状态变量 state,通过原子更新这个状态变量 state 即可以实现加锁解锁操作。简单点来说就是加锁失败就会进入一个先进先出的队列中阻塞等待,如果锁被释放会唤醒队列中等待的线程去重新执行加锁逻辑。内部类与属性内部类 Node:static final class Node { // 标识节点是共享模式下的节点 static

2020-10-09 15:12:23 123

原创 设计模式(3)行为型模式

行为型模式行为模式负责对象间的高效沟通和职责委派。行为型模式:策略模式:将一组算法封装成一系列对象。通过传递这些对象可以灵活的改变程序的功能。比如说:java.util.Comparator#compare()模板方法模式:让子类可以重写方法的一部分,而不是整个重写,你可以控制子类需要重写那些操作。比如说:java.util.Collections#sort()观察者模式:它使得一个对象可以灵活的将消息发送给感兴趣的对象。比如说 java.util.EventListener迭代器模式:提供

2020-10-09 11:38:26 2107

原创 设计模式(2)结构型模式

结构型模式结构型模式介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。结构型模式:适配器模式:用来把一个接口转化成另一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。比如说:java.util.Arrays#asList();装饰器模式:动态的给一个对象附加额外的功能,这也是子类的一种替代方式。可以看到,在创建一个类型的时候,同时也传入同一类型的对象。比如说:java.io.BufferedInputStream(InputStream);代理模式:代理模式

2020-10-09 11:37:21 964

原创 设计模式(1)创建型模式

创建型模式创建型模式:这类模式提供创建对象的机制, 能够提升已有代码的灵活性和可复用性。参考链接:https://refactoringguru.cn/design-patterns/creational-patterns创建型模式:工厂模式 :返回具体对象的方法。比如说:java.lang.Proxy#newProxyInstance();抽象工厂模式:抽象工厂模式提供了一个协议来生成一系列的相关或者独立的对象,而不用指定具体对象的类型。简单地说,一个创建新对象的方法,返回的却是接口或者抽象

2020-10-07 23:13:19 487

原创 并发编程(1)并发编程基础

并发性和多线程并发性在过去单 CPU 时代,单任务在一个时间点只能执行单一程序。之后发展到多任务阶段,计算机能在同一时间点并行执行多任务或多进程。虽然并不是真正意义上的“同一时间点”,而是多个任务或进程共享一个 CPU,并交由操作系统来完成多任务间对 CPU 的运行切换,以使得每个任务都有机会获得一定的时间片运行。随着多任务对软件开发者带来的新挑战,程序不在能假设独占所有的 CPU 时间、所有的内存和其他计算机资源。一个好的程序榜样是在其不再使用这些资源时对其进行释放,以使得其他程序能有机会使用这些资

2020-09-27 11:10:22 152

原创 一文搞懂 String str =new String(“abc“) 到底创建多少个对象?

String 基本概念基本用法1)通过常量定义String str= "abc";2)通过 new 创建String str= new String("abc");3)使用 + 运算符String s1= "a";String s2= "bc";String str= s1 + s2;如下的 s1 + s2 的执行细节:1、StringBuilder str= new StringBuilder();2、str.append(“a”)3、strappend(“bc”)4、s

2020-07-24 23:13:15 1453

原创 设计模式(0)面向对象设计原则

单一职责原则单一职责原则(Single Responsibility Principle, SRP):对类来说的,即一个类应该只负责一项职责。或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。如类 A 负责两个不同职责:职责 1,职责 2。当职责 1 需求变更而改变 A 时,可能造成职责 2 执行错误,所以需要将类 A 的粒度分解为 A1,A2。不符合原则的代码示例:public...

2020-05-30 10:48:41 346

原创 服务注册与发现 — 选择 CP 还是 AP?

概述为什么要使用服务发现假设您正在编写一些代码,这些代码将调用具有 REST API 的服务。为了发出请求,您的代码需要知道服务实例的网络位置(IP 地址和端口)。在物理硬件上运行的传统应用程序中,服务实例的网络位置是相对静态的。例如,您的代码可以从偶尔更新的配置文件中读取网络位置。但是,在现代的基于云的微服务应用程序中,这是一个要解决的难题,如下图所示。服务实例具有动态分配的网络位置。...

2020-05-07 16:02:16 6843 3

空空如也

空空如也

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

TA关注的人

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