linux 基础知识
linux 基础知识
legend050709ComeON
愚公移山
展开
-
linux 内存屏障
目录前言基础概念内存乱序访问定义目的过程影响编译时内存乱序访问解决方法运行时内存乱序访问有序处理器(In-order processors)乱序处理器(Out-of-order processors)单cpu乱序处理内存屏障(Memory barrier)目的分类编译器屏障 Compiler BarriorCPU屏障(CPU memory Barrior)前言大家经常说的一个词汇叫做所见即所得,有些编程工具是所见即所得的,给程序转载 2020-10-18 21:09:45 · 2102 阅读 · 0 评论 -
linux 下 查看/操作可执行文件/库的命令
readelflddfilestringsobjdumpnmstripsize转载 2020-10-09 10:38:38 · 763 阅读 · 0 评论 -
文件描述符/文件句柄/文件指针的区别与联系
文件描述符、文件句柄、文件指针这三个概念很容易混淆,网上其他博客也是众说纷纭。于是做了一点考证,专门写一篇来尽量准确地记录下。进程级别的文件描述符 & 文件描述符表文件描述符文件描述符(file descriptor, fd)是Linux系统中对已打开文件的一个抽象标记,所有I/O系统调用对已打开文件的操作都要用到它。这里的“文件”仍然是广义的,即除了普通文件和目录外,还包括管道、FIFO(命名管道)、Socket、终端、设备等。文件描述符是一个较小的非负整数,并且0、1、2三个描述转载 2020-09-25 19:14:00 · 1246 阅读 · 1 评论 -
生产者消费者之双缓冲区--legend050709
(1)背景(1.1)减少锁的冲突在生产者-消费者模式中,我们常常会使用到队列,这个队列在多个线程共享访问时存在互斥和竞争操作, 意味着每次访问都要加锁。用一个缓冲区,生产者和消费者需要先获取到缓冲区的锁才能进行put和get操作,每一次put和get都需要获取一次锁,这需要大量的同步与互斥操作,十分损耗性能。如果采用双缓冲区的话,一个缓冲区bufferA用于生产者执行put操作,一个缓...原创 2019-12-24 20:00:54 · 1516 阅读 · 1 评论 -
linux多线程协作--legend050709
(1)三个线程协作打印ABCABCABC(2)两个线程协作打印奇数偶数--------------------------------(1)三个线程协作打印ABCABCABC(1.1)思路并发编程核心是三大块:分工、互斥和同步。1)互斥这道题并不涉及共享变量,所以不需要考虑互斥,首先排除。2)同步一眼就能看出这道题考的就是同步,那怎么同步呢?很容易想到的方法,就...原创 2019-12-23 22:54:25 · 133 阅读 · 0 评论 -
hashMap & linkedHashMap & concurrentHashMap 原理----legend050709
(1)hashMap(2)linkedHashMap----------------(1)hashMap(1.1)hashHash 就是把任意长度的输入(又叫做预映射, pre-image),通过哈希算法,变换成固定长度的输出(通常是整型),该输出就是哈希值。这种转换是一种 压缩映射 ,也就是说,散列值的空间通常远小于输入的空间。不同的输入可能会散列成相同的输出,从而不可能...原创 2019-12-21 15:45:08 · 333 阅读 · 0 评论 -
链表的分类--legend050709
链表的分类如下(1) 单向链表(2)单向循环链表(3)双向链表(4)双向循环链表------(1) 单向链表(1.1)特点每个节点只包含一个指针,即后继指针。 单链表有两个特殊的节点,即首节点和尾节点。用首节点地址表示整条链表,尾节点的后继指针指向空地址null。 性能特点:插入和删除节点的时间复杂度为O(1),查找的时间复杂度为O(n)。(2)单向循环链...原创 2019-12-20 14:09:01 · 997 阅读 · 0 评论 -
缓存淘汰机制实现-LRU-LFU——legend050709
(1)缓存是什么缓存是一种提高数据读取性能的技术,在硬件设计、软件开发中都有着非广泛的应用,比如常见的CPU缓存、数据库缓存、浏览器缓存等等。(2)为什么需要缓存CPU在从内存读取数据的时候,会先把读取到的数据加载到CPU的缓存中。而CPU每次从内存读取数据并不是只读取那个特定要访问的地址,而是读取一个数据块(cacheline)并保存到CPU缓存中,然后下次访问内存数据的时候就会先从...原创 2019-12-19 18:07:01 · 328 阅读 · 0 评论 -
Linux服务器的配置与管理
Linux下服务器的配置与管理:(注:来源于《linux服务器配置与管理》)(一)Linux管理入门:(1)管理用户和组:(2)管理进程:1)启动进程:2)终止进程:3)查看进程状态:(3)管理软件包:1)使用rpm;2)从源代码安装软件:(4)配置网络:1)设置主机名:2)设置ip地址:3)通过配置文件修改ip地址以及网原创 2014-12-20 17:38:53 · 1335 阅读 · 0 评论 -
利用scp 远程上传下载文件/文件夹
利用scp 远程上传下载文件/文件夹scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:]file1 ... [[user@]host2:]file2DESCRI转载 2014-12-08 14:26:01 · 1343 阅读 · 0 评论 -
linux进程地址空间分析及其应用_legend
(1)linux进程的虚拟地址传统空间分布注:为了使内核切换到传统内存布局,执行命令#sysctl -w vm.legacy_va_layout=1(因为Linux 2.6.7及以后版本内核已经默认使用新的内存布局方式了)。(1.1)虚拟地址空间分类在32位机器上linux操作系统中的进程的地址空间大小是4G;其中0-3G(0x00000000~0xbfffffff)是用...原创 2019-07-15 11:23:51 · 813 阅读 · 0 评论 -
linux 网络编程入门转
Linux网络编程入门 (转载)(一)Linux网络编程--网络知识介绍Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端.客户端 在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序。 比如我们使用ftp程序从另外一转载 2014-04-23 10:46:29 · 654 阅读 · 0 评论