源自于一道面试题,面试官问我是否了解高性能UDP

基本概念

QUIC是Quick UDP Internet Connection的简称,是Google制定的一种基于UDP的低时延的互联网传输层协议。TCP/IP协议族是互联网的基础。其中传输层协议包括TCP和UDP协议。与TCP协议相比,UDP更为轻量,但是错误校验也要少得多。这意味着UDP往往效率更高(不经常跟服务器端通信查看数据包是否送达或者按序),但是可靠性比不上TCP。通常游戏、流媒体以及VoIP等应用均采用UDP,而网页、邮件、远程登录等大部分的应用均采用TCP。

网络分层

Read More

Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来。

Java虚拟机在执行Java程序的过程中会把它管理的内存划分为若干个不同的数据区域。

JVM内存结构

Read More

ConcurrentHashMap类图

在并发中使用ConcurrentHashMap的原因

  1. HashMap线程不安全,在并发执行put操作时会引起死循环,因为多线程会导致HashMap的Entry链表形成环形数据结构
  2. HashTable效率低下,使用synchronized保证线程安全,在线程竞争激烈的情况下效率非常低下
  3. ConcurrentHashMap的锁分段技术可有效提升并发访问率,将数据分成一段一段地存储,然后给每一段数据一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其它线程访问

    Read More

快速排序的基本实现

快速排序算法是一种基于交换的高效的排序算法,它采用了分治法的思想:

  1. 从数列中取出一个数作为基准数(枢轴,pivot)。
  2. 将数组进行划分(partition),将比基准数大的元素都移至枢轴右边,将小于等于基准数的元素都移至枢轴左边。
  3. 再对左右的子区间重复第二步的划分操作,直至每个子区间只有一个元素。

Read More

本文转自blog

在并发访问下,数据库可能会出现脏读、不可重复读和幻读等读现象,主流数据库为了应对这些问题,引入了事务隔离级别的概念。

并发控制

在计算科学,特别是程序设计、操作系统、多处理机和数据库等领域,并发控制(Concurrency control)是确保及时纠正并由并发操作导致的错误的一种机制。

数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时,不破坏事务的隔离性、统一性以及数据库的统一性。

封锁、时间戳、乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。

Read More

什么是线程安全

正确性

当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。

同步

在线程安全类中封装了必要的同步机制,因此客户端无须进一步采用同步措施。

Read More

前言

上节主要介绍了线程的生命周期和一些基本操作,这节主要描述一些多线程常用的API。

一些重要的API

wait和notify

下图演示了notify()和wait()是如何工作的:

notify()和wait()

Read More

线程的生命周期

在介绍线程前,有必要先介绍一下进程(Process),进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是程序的基本执行实体,可认为是线程的容器。

线程状态图

Read More