alongso blog

热爱你的热爱


  • Home

  • Workpage

  • Tags

  • Categories

  • Archives

  • Search

CAS实现与原子类actomic

Posted on 2020-03-03 | In concurrent

悲观锁与乐观锁

悲观锁

定义:对于同一数据的并发操作,悲观锁认为当我在使用数据的时候一定有其他线程也会来访问和修改数据,因此在获取数据的时候会加锁,确保数据不会被别的线程修改。

应用:Java中,synchronized关键字和Lock的实现类都是悲观锁。

乐观锁

定义:乐观锁认为在对访问数据进行时,没有别的线程来修改数据,所以不需要加锁。但是为了确保只有自己在对数据进行了操作,自己在更新数据的时候会去判断以前有没有别的线程对数据进行了修改。如果数据没有更新,当前线程会将自己修改的数据成功写入;如果数据被更新了,则根据不同的实现方式执行不同的操作(例如报错和循环重试)

应用:java的原子类的自增操作就是通过CAS自旋算法实现的。

Read more »

synchronized底层实现原理

Posted on 2020-02-28 | In concurrent

synchronized

定义

  • Multi-threaded programs may often come to a situation where multiple threads try to access the same resources and finally produce erroneous and unforeseen results.So it needs to be made sure by some synchronization method that only one thread can access the resource at a given point of time.

应用方式

  • 对于普通同步方法,锁是当前实例对象
  • 对于静态同步方法,锁是当前类的class对象
  • 对于同步方法块,锁是synchronized括号里配置的对象
Read more »

volatile底层实现原理

Posted on 2020-02-27 | In concurrent

volatile

定义

  • Java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致地更新,线程应该确保通过排它锁单独获取这个变量。
Read more »

并发编程的挑战

Posted on 2020-02-26 | In concurrent

上下文切换

减少上下文切换的方法

  • 无锁并发编程
  • CAS算法
  • 使用最少线程
  • 协程(在一个线程中实现多任务调度)
Read more »

线程基本概念

Posted on 2020-02-25 | In concurrent

进程与线程

  • 进程
    • 一个程序就是一个进程,经典定义是:一个执行中程序的实例。
  • 线程
    • 线程是进程执行的最小执行单元,一个进程可以包含多个线程。
Read more »

深入理解计算机:并发编程

Posted on 2020-01-06 | In csapp

并发编程

简介
  • 并发

    • 如果逻辑控制流,在时间上重叠,那么它们就是并发的
  • 应用级并发的作用

    • 访问慢速I/O设备
    • 与人交互
    • 通过推迟工作以降低延迟
    • 服务多个网络服务
    • 在多核机器上进行并行计算
Read more »

深入理解计算机:Web服务器

Posted on 2019-12-08 | In csapp
Web服务器

Web基础
  • HTTP协议——超文本传输协议(Hypertext Transfer Protocol)

    • 定义
      • Web客户端和服务器之间的交互用的一个基于文本的应用级协议。
      • 一个客户端打开一个到服务器的因特网连接,并且请求某些内容。服务器响应所请求的内容,然后关闭连接。浏览器读取这些内容,并把它显示在屏幕上。
  • HTML语言——超文本标记语言(Hypertext Markuo Language)

    • 定义
      • 区别于常规的文件检索服务,一个HTML程序包含指令,它们告诉浏览器如何显示这页中的各种文本和图形对象。
Read more »

深入理解计算机:网络编程(一)

Posted on 2019-12-01 | In csapp
客户端——服务端编程模型

简介
  • 定义

    • 一个网络应用是由一个服务器进程和一个或者多个客户端进程组成,服务端管理某种资源,并且通过操作这种资源来为它的客户端提供某种服务。
  • 举例

    • a Web server manages a set of disk files that it retrieves and executes on behalf of clients.
    • An FTP server manages a set of disk files that it stores and retrieves for clients.
    • An email server manages a spool file that it reads and updates for clients.
  • 基本操作

    • 客户端——服务器模型中基本操作是事务。
Read more »

深入理解计算机:地址翻译

Posted on 2019-11-25 | In csapp
简介

  • 定义:

    address translation is a mapping between the elements of an N- element virtual address space (VAS) and an M-element physical address space (PAS)

    MAP: VAS → PAS ∪ ∅

    MAP(A) =A’ (if data at virtual addr. A are present at physical addr. A_ in PAS)
    MAP(A) = ∅ (if data at virtual addr. A are not present in physical memory)

    Read more »

深入理解计算机:系统级I/O

Posted on 2019-11-25 | In csapp
简介

I/O(输入与输出)

  • 定义:是在主存和外部设备(如磁盘驱动器、终端和网络)之间拷贝数据的过程。

学习Unix I/O的好处

  • 了解Unix I/O将帮助你理解其他的系统概念。
  • 有时你除了使用Unix I/O以外,你别无选择。
Read more »
1234
alongso

alongso

stay hungry,stay foolish

38 posts
13 categories
18 tags
Work Page GitHub E-Mail CSDN
友情连接
  • MEITUAN
  • CROSSOVERJIE
  • COOLSHELL
  • LEETCODE
  • EMACCHINA
  • The Pleasure Of Craftsmanship
  • ZHOUFENG
© 2023 alongso
Powered by Hexo
|
Theme — NexT.Gemini v5.1.4
总访问量 | 总访问人次