Fork me on GitHub
To the moon

A Coder,a Programmer,a Developer


  • Home

  • Tags

  • Categories

  • Archives

  • Search

分布式系统之time clock ordering

Posted on 2018-12-31 | Edited on 2023-05-09 | In notes

参考阅读:
分布式系统理论基础 - 时间、时钟和事件顺序
分布式系统的时间
分布式系统一致性的发展历史
分布式系统一致性的发展历史(一)

时间、时钟和事件顺序

  • 分布式系统使用逻辑时钟记录事件顺序关系。
    • 采用物理时钟,在分布式系统中仍然会有毫秒级别的偏差。

Lamport timestamps

每个事件对应一个Lamport时间戳,初始值为0
如果事件在节点内发生,时间戳加1
如果事件属于发送事件,时间戳加1并在消息中带上该时间戳
如果事件属于接收事件,时间戳 = Max(本地时间戳,消息中的时间戳) + 1

偏序关系 partial order,如下图方框内的编号:

Read more »

类加载机制笔记

Posted on 2018-12-22 | Edited on 2023-05-09 | In notes

1. 六种主动使用类的场景

按照 JVM 规范,每个类或者接口被 Java 程序首次主动使用时,才会对其进行初始化。

以下六种操作会导致类的初始化,除了这六种,其他情况都属于被动使用,不会导致类的加载和初始化。

  1. 通过 new 关键词。
  2. 访问类的静态变量(但 final 修饰的静态变量实质上是静态常量,不属于此范畴,不会初始化类)。
  3. 访问类的静态方法。
  4. 对类进行反射操作。
  5. 初始化子类会导致父类的初始化。
  6. 启动类。也就是 main 函数所在的类会被初始化。
Read more »

HTTP-1-1

Posted on 2018-12-19 | Edited on 2023-05-09 | In java

推荐阅读:HTTP1.0 HTTP1.1 HTTP2.0 主要特性对比

比较 HTTP1.0 、HTTP1.1、 HTTP2.0

共同点:

  1. 都是应用层协议,基于 TCP/IP 协议。
  2. 无状态
HTTP1.0 HTTP1.1 HTTP2.0
特点 无连接、队头阻塞 长连接、管道化、缓存处理 二进制分帧、多路复用、头部压缩、服务器推送
Read more »

vue 入门一

Posted on 2018-12-17 | Edited on 2023-05-09 | In java

vue 最简用法: <!-- jsp文件 --><div id="app"> <h2>{{product}} is in stock</h2></div><script sr ...

Read more »

SocketDemo学习笔记

Posted on 2018-12-16 | Edited on 2023-05-09 | In java

一个简易的实现全双工通信的 Socket Demo 程序。

推荐阅读:
ServerSocket connection
Java 网络编程精解之 ServerSocket 用法详解一

Read more »

面经整理(好友投稿)

Posted on 2018-12-14 | Edited on 2023-05-09 | In interview

天猫Java一面

1. 常见集合类的区别和适用场景

List集合

ArrayList:

  • 基于数组来实现集合的功能,内部维护了一个可变长的对象数组,集合扩容时会创建更大的数组空间,把原有数据复制到新的数组中。随机访问快,插入和删除的效率低。

LinkedList:

  • 基于链表实现,数据的删除和插入快,随机访问的速度很慢。

####Map集合

HashMap:

  • 线程不安全,存储键值对,允许 key 和 value 为 null

ConcurrentHashMap:

  • 线程安全,不允许 key 和 value 为 null,使用的锁机制实现线程安全

TreeMap:

  • 线程不安全,依靠comparator或comparable实现key的去重,TreaMap是有序的
Read more »

面经整理3

Posted on 2018-12-14 | Edited on 2023-05-09 | In interview

部分题目来源:美团 java 后台 哈尔滨现场面试面经

1. 数据库主从同步、读写分离

主要用来提升数据库的并发负载能力。

  • 数据的热备;
  • 架构的扩展;
  • 支持更大的并发;

主从复制的步骤:

  1. 从库生成两个线程,一个 IO 线程,一个 SQL 线程;
  2. IO 线程去请求主库的 binlog,并将得到的 binlog 日志写入 relay log 文件中。主库会生成一个 binlog dump 线程,用来给从库的 IO 线程传 binlog;
    • binlog是一个二进制格式的文件,用于记录用户对数据库更新的SQL语句信息(查询不会有记录,只记录增删改)。在 my.cnf 中增加log_bin参数即可开启。
  3. SQL 线程,会读取 relay log 文件中的日志(从 Exec_Master_Log_Pos 位置开始执行),并解析成具体操作,来实现主从的操作一致,而最终数据一致。

缺点:

  1. 数据的实时性较差;
  2. 数据量大时,同步效率差;
  3. 同时连接多个数据库,容易引起混乱;
  4. 读具有高性能高可靠性和可伸缩。只读服务器因为没有写操作,大大减轻磁盘 IO 等性能问题;多个只读服务器可以采用负载均衡的方式实现可伸缩性。
  5. 写数据的分配一般采用哈希映射。
Read more »

面经整理2

Posted on 2018-12-13 | Edited on 2023-05-09 | In interview

美团一面

1. 判断回文

  1. 字符串转置,然后逐位比较;
  2. 字符串转置,直接 equals 比较;
  3. for 循环 length/2 次,首位和末尾逐次比较;

2. jvm,讲讲gc

jvm 将内存划分为:方法区、堆区、虚拟机栈、本地方法栈、程序计数器。

Read more »

高并发笔记(1)

Posted on 2018-12-10 | Edited on 2023-05-09 | In notes

多线程还是多看多理解,就不做笔记了吧,以下是重点的截图。

Read more »

interview(1)

Posted on 2018-12-07 | Edited on 2023-05-09 | In interview

网易考拉 java 凉面面经

1. 同步 异步 非阻塞 阻塞 bio nio aio

这题问的是网络 IO 模型。

以 IO 的读数据(read)举例,会经历两个阶段:
1)等待数据准备。
2)将数据从内核拷贝到进程中。

IO 模型主要分为五种:

Read more »
1…8910…16

Harrison Lee / Email (harrisonli60@163.com)

It is never too late to learn a new skill, even a challenging one.

153 posts
24 categories
33 tags
© 2025 Harrison Lee / Email (harrisonli60@163.com)
Powered by Hexo v6.3.0
|
Theme – NexT.Mist v7.0.0
|