1、硬件 早期的intel处理器,如i386,486,586,奔腾系列的CPU架构,都是32位的(32位的寄存器,32位的虚拟地址空间),统称为x86架构。...而在linux中则称为x86_64,即x86架构的64位扩展。 有关x86_64的详细描述可翻阅《深入理解计算机系统》一书。...2、系统 系统同样可分为32位与64位。在x86_64架构的CPU出现之前,PC的操作系统都是用32位,例如windows 2000,xp,当时的unix,linux等。...查看linux系统是32位还是64位的方法:执行shell命令“arch”,显示为x86_64表示当前系统为64位,显示为i386,i486等表示系统是32位的。...实际远不止这些,编绎器在将64位C程序翻译成汇编语言或者机器语言时,会尽量使用64位处理器的寄存器,尽量避免访问内存,例如把函数的参数,及局部变量优先放在寄存器,而不是在用户栈中。
位运算处理进制转换问题 一般初学者学习一门语言,一般都有那么经典的几个题,比如判断水仙花,进制转换,计算1加到100的和,输出多少以内的素数或是判断一个数是否是素数等等。...仔细分析a[i]=(n>>i)&1这个表达式:在计算机里,n已经是一个二进制数了,我们的目的只是把它一位一位分开来。...所以n>>i,将n的二进制数向右移i位,相当于第(i+1)位(从右往左数)以右的数据都没了。现在的第1位是移动以前的(i+1)位。...再将移动以后的数据和1按位与,因为&的时候1左边自动补0,所以得到的数就是现在的第一位。...举个例子,比如206的二进制数011001110,我想获得它的第4位,也就是1,此时i=3,n>>i 得到000011001,再和1即000000001按位与,得到000000001,也就是1,赋值给a
背景 net旧项目使用32位生成的HashCode,存储到数据库中。迁移到64位上,就需要对HashCode做兼容处理。 解决方案 1:进程池配置支持32位程序。...2:对Hashcode做兼容处理,【推荐】。...void Main(string[] args) { string test = "hello"; //-327419862 64位下...//-695839 32位下 int bit = test.GetHashCode(); int hashCode = CompatibleHash...("hello"); } /// /// 64位环境下,生成兼容32位的hashCode。
一般涉及到标记位相关的操作,我们都会使用位运算,无论你是从Java转到Kotlin,还是全新使用Kotlin,进行位运算处理Flag都会感到疑问,该怎么处理呢。
1 概述 Linux下的程序大多充当服务器的角色,在这种情况下,随着负载量和功能的增加,服务器所使用内存必然也随之增加,然而32位系统固有的4GB虚拟地址空间限制,在如今已是非常突出的问题了;另一个需要改进的地方是日期...,在Linux中,日期是使用32位整数来表示的,该值所表示的是从1970年1月1日至今所经过的秒数,这在2038年就会失效,但是在64位系统中,日期是使用64位整数表示的,基本上不用担心其会失效。...而Linux 64位系统采用LP64数据模型,因此在long和pointer上,都有着和32位系统不同的长度。...字节 结构大小为32字节 表2.2 注意,在我自己所测试的32位系统上,编译器并没有对double型数据进行对齐,尽管它是一个64位的对象,这是因为硬件会将其当成两个32位的对象进行处理。...#endif 脚本中: if [ `getconf LONG_BIT` -eq 64 ];then 64位处理逻辑 else 32位处理逻辑 fi 3.2.3 数据定义 修改所有long定义的变量为int
目前 Linux 支持64种信号。信号分为非实时信号(不可靠信号)和实时信号(可靠信号)两种类型,对应于 Linux 的信号值为 1-31 和 34-64。...信号实现原理 接下来我们分析一下Linux对信号处理机制的实现原理。...为了尽快让信号得到处理,Linux把信号处理过程放置在进程从内核态返回到用户态前,也就是在 ret_from_sys_call 处: // arch/i386/kernel/entry.S ENTRY...我们知道,从内核态返回到用户态时,CPU要从内核栈中找到返回到用户态的地址(就是调用系统调用的下一条代码指令地址),Linux为了先让信号处理程序执行,所以就需要把这个返回地址修改为信号处理程序的入口,...Linux的做法就是在用户态栈空间构建一个 Frame(帧)(我也不知道为什么要这样叫),构建这个帧的目的就是为了执行完信号处理程序后返回到内核态,并恢复原来内核栈的内容。
中断处理 - 上半部(硬中断) 由于 APIC中断控制器 有点小复杂,所以本文主要通过 8259A中断控制器 来介绍Linux对中断的处理过程。...flags: 标志位,用于表示 irqaction 的一些行为,例如是否能够与其他硬件共享IRQ线。 name: 用于保存中断处理的名字。 dev_id: 设备ID。...鉴于这个原因,Linux把中断处理分为两个部分,上半部 和 下半部,上半部 在前面已经介绍过,接下来就介绍一下 下半部 的执行。...Linux通过 __softirq_active 这个字段得知哪种softirq需要执行(只需要把对应位设置为1)。...对于 tasklet_hi_schedule() 函数就是把 HI_SOFTIRQ 位(0位)设置为1。
d -b s -a nothing -b nothing ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 当出现双波折线-- shell就会停止处理选项
从系统查看 1.1 uname -a 命令 [root@qs-dmm-rh2 ~]# uname -a Linux qs-dmm-rh2 2.6.18-194.el5 #1 SMP Tue Mar 16...21:52:43 EDT 2010 i686 i686 i386 GNU/Linux [root@qs-xezf-db2 ~]# uname -a Linux qs-xezf-db2 2.6.18-194...~]# file /bin/ls /bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9..., dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped [root@qs-xezf-db2 ~]# file /bin...linked (uses shared libs), for GNU/Linux 2.6.9, stripped 1.3 getconf LONG_BIT 命令 [root@qs-dmm-rh2 ~]
1.Linux权限的概念 权限的概念: 什么是权限?...就是通过一定的条件,拦住一部分人,给另一部分人权利,来访问某种资源 Linux下有两种用户:超级用户(root)、普通用户 超级用户:可以再linux系统下做任何事情,不受限制 普通用户:在linux下做有限的事情...,通过第一个属性列来区分 Linux不区分文件类型,但是Linux上的工具可能区分!!!...y [litao@localhost ~]$ exit logout 为了解决这个不科学的问题, Linux引入了粘滞位的概念 5.2 粘滞位 [root@localhost ~]# chmod +...y rm: 无法删除"/home/abc.c": 不允许的操作 当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由 超级管理员删除 该目录的所有者删除 该文件的所有者删除
上一篇文章我们学习了Linux权限相关的内容,这篇文章,我们再来学习一个知识点——粘滞位。 1....背景 那为了让大家更容易理解粘滞位的概念,首先我们要来了解一点背景知识: 就是我们在使用Linux的时候呢,有时候就可能需要一些共享目录,即被所有普通用户共享,用来保存普通用户产生的临时数据。...那在Linux中,这个共享目录一般是由root提供的,只要root把权限放开,那其他普通用户就可以以other的身份去访问这个目录了。 2....显然是不合理的,那为了解决这个不科学的问题,Linux就引入了粘滞位的概念。(因此我们也应该知道,粘滞位只能给目录添加) 3....因此呢,Linux就引入了粘滞位权限去解决这个问题。 谁可以删除 那我们设置了粘滞位之后呢,就可以阻止在共享目录中的一些普通用户去删除其它用户的文件。那这样普通用户删不了,谁可以删呢?
Linux基于位运算的权限控制 Linux权限控制是基于位运算实现的。...在Linux权限系统中,读、写、执行权限分别对应三个状态位: 读 写 执行 ==> 二进制 ==> 十进制 0 0 1 ==> 001 ==> 1 0 1 0 ==> 010 ==> 2 1 0 0 =...2 待增加的权限,写 用户现有的权限码为0,为其增加“读取”、“写入”两种权限,即4,2 使用或运算结果如下 0|4=4 //增加读取权限 4|2=6 //增加写入权限 实现权限的减少(非运算) 位运算同样可以实现用户权限的减少...优点和缺陷 位运算的运算对象是二进制的位,速度快,效率高,而且节省存储空间,位运算做权限控制又相当地灵活。...但是,位运算也有很大的局限,因为在32位计算机上,位移不能超过32次,这就要求权限数量不超过32种。
在Linux世界中,clone()系统调用通过复制调用进程创建一个新进程。新进程称为子进程,原始进程称为父进程。clone()系统调用有几个选项,允许我们控制父进程和子进程之间资源的共享。...Cloneflags是一个用于指定创建 Linux 命名空间的标志位, 是 Linux 内核中用于进程创建的参数之一,它用于控制新进程如何与父进程共享资源。...这些标志可以用于控制新进程的命名空间、信号处理、文件描述符和虚拟内存等方面。Cloneflags可以控制新进程是否共享内存、文件描述符、信号处理、CPU时间限制、内存映射等行为。...sharedVariable=%d\n", syscall.Getpid(), sharedVariable) // 子进程退出 return 0 } func main() { // 增加逻辑处理器的数量和每个处理器的堆栈空间大小...docker的实现原理中,一些基础的功能也是用这些标志位来实现,下面是一些用 Go 语言实现 Cloneflags 标志位的示例代码: package main import ( "fmt"
信号的处理 1 信号的处理 2 内核态 VS 用户态 3 键盘输入数据的过程 4 如何理解OS如何正常的运行 5 如何进行信号捕捉 信号处理的总结 6 可重入函数 volatile关键字 Thanks♪...下一篇文章见 1 信号的处理 处理信号本质就是递达这个信号!...我们说过:信号可能不会被立即处理,而是在合适的时候进行处理。那么这个合适的时候到底是什么时候?! 进程从内核态(处于操作系统的状态)返回到用户态(处在用户状态)的时候进行处理!...来看Linux内核: 在操作系统的主函数中,首先是进行一些初始化(包括系统调用方法),然后就进入到了死循环!...CS寄存器中单独设置出两个比特位来记录是OS还是用户,这样就要区分了内核态和用户态。运行代码时就会检测当前权限与代码权限是否匹配,进而做到阻止用户直接访问。
无论kill -9还是直接把系统中nanoWatch所对应的进程文件删除,一样会定时重启。
最近在研究异步消息处理, 突然想起linux内核的中断处理, 里面由始至终都贯穿着”重要的事马上做, 不重要的事推后做”的异步处理思想....在软中断机制中, 为每个CPU维护了一个若干位的掩码集, 每位掩码代表一个中断号....中断处理的这几个阶段中不能调用可能导致睡眠的函数(包括分配内存); 对于第一个问题, 较新的linux内核增加了ksoftirqd内核线程, 如果持续处理的softirq超过一定数量, 则结束中断处理过程...据说在montavista(一种嵌入式实时linux)中, 将内核的中断机制做了修改. (某些中断的)中断处理过程被赋予了task结构, 能够被内核调度. 解决了上述两个问题....工作队列 linux基线版本的内核在解决上述问题上, 提供了workqueue机制.
linux之字符处理 管道 linux中存在着管道,它是一个固定大小的缓冲区,缓冲区大小通常为1页,也就是4K字节。...6872 8月 9 2021 udev -rwxr-xr-x 1 root root 2757 11月 23 2016 x11-common --More-- 使用grep搜索文本 grep是linux...age is 24. my name is swz,i come from china. no,let's come here. ok,i'm swz. swz 使用cut截取文本 cut截取文本,处理的是一行文本
查看linux机器是32位还是64位的方法: 方法一: file /sbin/init 或者 file /bin/ls 显示结果:如果显示 64-bit 则为64位;如果显示 32-bit 则为32位;...64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux...2.6.18, stripped 方法二: uname -a 显示结果:x86_64表示64位机器,i686表示32位机器 Linux joshua317 2.6.32-431.29.2.el6.x86..._64 #1 SMP Tue Sep 9 21:36:05 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux 方法三:也是看linux是32位还是64位最简单的方法: getconf...LONG_BIT 显示结果:64表示64位机器,32表示32位机器 [root@joshua317 etc]# getconf LONG_BIT 64
前言:最近在做财务系统的开发功能,要求在导出的word文档里面的数字,要以千分位的格式处理显示,于是写了一下下面的方法,希望可以帮助到需要的小伙伴/*** 格式化数字为千分位显示;* @param* @...Exception e) { number = 0.0; } return df.format(number);}上面的代码主要进行判断小数点的位置,以及小数点前的位置进行格式化的处理...DecimalFormatSymbols.getInstance(Locale.getDefault(Locale.Category.FORMAT)); applyPattern(pattern, false);}占位符的处理
几经周转,发现AAA用户创建文件位置的上层目录的权限是drwxrwxrwt,做开发这么多年了,还没见过所谓"t"的权限,于是找了一位公司的linux大师帮忙,大师噼里啪啦的做了一堆试验后,然后在google...上搜索"rwt linux",终于发现了问题,发现这种用法的名字是“文件的粘滞位(sticky)位“。...它的作用是:普通文件的sticky位会被linux内核忽略,但 目录的sticky位表示这个目录里的文件只能被owner和root删除,没错这就是问题本质,也和我的现象相吻合。...普通文件的sticky位会被linux内核忽略, 目录的sticky位表示这个目录里的文件只能被owner和root删除 粘着位(Sticky bit) 如果用户对目录有写权限,则可以删除其中的文件和子目录...# chmod 1770 xxx 举一个linux下的常见目录来做例子,也就是 /tmp 目录来说一下粘连位的作用。
领取专属 10元无门槛券
手把手带您无忧上云