JDK 三月 20, 2021

JAVA 16新特性

文章字数 3.4k 阅读约需 3 mins.

当我们还深陷 Java 8 版本之际,这边最新版本 Java 16 已经于3.16正式发布。与 Java 15 一样,作为短期版本,Oracle 仅提供 6 个月的支持。下面让我们来看看JDK16主要新特性吧。

Vector API(孵化)

提升了Java在CPU向量计算的性能,这是对大规模的张量计算的支持,提升了Java在AI领域的能力。

启用了新的C++特性

允许在JDK中C++源代码中使用 C ++ 14的新特性。

从 Mercurial 迁移到 Git

Git目前已经成为代码版本管理领域的绝对统治者,现在Java顺应潮流也使用Git进行源代码管理。

迁移到GitHub

OpenJDK的代码现在...

查看全文

初见 三月 19, 2021

Hello hexo

文章字数 2.3k 阅读约需 2 mins.

在老早以前,自己就有搭建一个博客的想法,中途也尝试自己动手操作过,但是好几次都半途而废了。在自己的想法中,一个博客需要一套管理系统,自己没那么多时间。最近在晚上搜寻的时候,发现了一个惊为天人的博客,其UI甚合我意,于是一番操作下发现了这个Hexo,以及那个深得我心的主题-obsidian

Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。
用人话来讲就是,你只管写自己的markdown,那些高大上的...

查看全文

分布式 一月 20, 2021

PAXOS的一些理解

文章字数 4.5k 阅读约需 4 mins.

Google Chubby的作者Mike Burrows说过这个世界上只有一种一致性算法,那就是Paxos,其它的算法都是残次品。
Paxos:多数派决议(最终解决一致性问题)

Paxos算法有三种角色:Proposer,Acceptor,Learner

Proposer:提交者(议案提交者)

提交议案(判断是否过半),提交批准议案(判断是否过半)

Acceptor:接收者(议案接收者)

接受议案或者驳回议案,给proposer回应(promise)

Learner:学习者(打酱油的)

如...
查看全文

DOCKER 十二月 20, 2020

docker安装

文章字数 1.7k 阅读约需 2 mins.

1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,通过 uname -r 命令查看你当前的内核版本。

$ uname -r

2、使用 root 权限登录 Centos。确保 yum 包更新到最新。

$ sudo yum update

3、卸载旧版本(如果安装过旧版本的话)

$ sudo yum remove docker  docker-common docker-selinux docker-engine

4、安装需要的软件包, yum-util 提供yum-config...

查看全文

NIO 十二月 05, 2020

DirectByteBuffer原理探究

文章字数 1.4k 阅读约需 1 mins.

DirectByteBuffer是Java用于实现堆外内存的一个重要类,通常用在通信过程中做缓冲池,如在Netty、MINA等NIO框架中应用广泛。DirectByteBuffer对于堆外内存的创建、使用、销毁等逻辑均由Unsafe提供的堆外内存API来实现。

下图为DirectByteBuffer构造函数,创建DirectByteBuffer的时候,通过Unsafe.allocateMemory分配内存、Unsafe.setMemory进行内存初始化,而后构建Cleaner对象用于跟踪DirectByteBuff...

查看全文

UNSAFE 十一月 10, 2020

魔法类Unfase

文章字数 7.2k 阅读约需 7 mins.

如下Unsafe源码所示,Unsafe类为一单例实现,提供静态方法getUnsafe获取Unsafe实例,当且仅当调用getUnsafe方法的类为引导类加载器所加载时才合法,否则抛出SecurityException异常。

public final class Unsafe {
  // 单例对象
  private static final Unsafe theUnsafe;

  private Unsafe() {
  }
  @CallerSensitive
  public static...
查看全文

并发 十月 21, 2020

并发编程之伪共享

文章字数 1.7k 阅读约需 2 mins.

为了解决计算机系统中主内存与CPU之间运行速度差问题,会在CPU与主内存之间添加一级或者多级高速缓冲存储器(Cache)。在Cache内部是按行存储的,其中每一行称为一个Cache行。Cache行是Cache与主内存进行数据交换的单位,Cache行的大小一般为2的幂次数字节。

当CPU访问某个变量时,首先会去看CPU Cache内是否有该变量,如果有则直接从中获取,否则就去主内存里面获取该变量,然后把该变量所在内存区域的一个Cache行大小的内存复制到Cache中。同一时间只能有一个线程操作缓存...

查看全文

系统设计 十月 07, 2020

前后端分离 , 如何保证接口安全性 ?

文章字数 1.4k 阅读约需 1 mins.

  1. HTTP 请求中的来源识别

  2. 数据加密

    采用https协议,保障数据传输过程中的安全

  3. 数据签名

    将要提交的数据,通过某种方式组合成一个字符串,然后通过 MD5 算法生成一个签名。如果觉得单纯的 MD5 不够安全的话,还可以在 MD5 的时候加盐和加 hash 。

  4. 时间戳

    在参数中加上当前请求的时间戳,服务端拿到这个请求后会拿当前的时间和请求中的时间做比较,比如在 5 分钟之内的才会流转到后面的业务处理,在 5 分钟以外的直接返回错误码。时间戳机制主要用来应对攻击者直接拿包进行非法的 ...

查看全文

分布式 九月 21, 2020

分布式事务相关

文章字数 4.5k 阅读约需 4 mins.

CAP 定理指出对于一个分布式系统来说,不可能同时满足以下三点:

  • 一致性 (Consistence): 等同于所有节点访问同一份最新的数据副本 (强一致性)
  • 可用性 (Availability): 每次请求都能获取到非错的响应,但是不保证获取的数据为最新数据
  • 分区容错性 (Partition tolerance): 系统中任意信息的丢失或失败不会影响系统的继续运作。

由 CAP 定理可知数据库的设计需要权衡取舍,所以可以把系统大致分为三类:

  • CA: 单点集群,满足一致性,可用性的系统,通常...
查看全文

ROCKETMQ 九月 08, 2020

RocketMQ事务消息

文章字数 5k 阅读约需 5 mins.

2PC

2PC 把事务的执行分为两个阶段,第一个阶段即 prepare 阶段,这个阶段实际上就是投票阶段,协调者向参与者确认是否可以共同提交,再得到全部参与者的所有回答后,协调者向所有的参与者发布共同提交或者共同回滚的指令,用以保证事务达到一致性。

2PC 是几乎所有分布式事务算法的基础,后续的分布式事务算法几乎都由此改进而来,其优缺点非常明显:

  • 优点:在于已经有较为成熟的实现方案,比如 XA。
  • 缺点:XA 是一个阻塞协议。服务在投票后需要等待协调器的决定,此时服务会阻塞并锁定资源。由于其阻...
查看全文
加载更多
0%