java onerror
java onerror http://hllvm.group.iteye.com/group/topic/40211 -XX:OnError=“jstack -F %p >/opt/com/test/threaddump.log”
java onerror http://hllvm.group.iteye.com/group/topic/40211 -XX:OnError=“jstack -F %p >/opt/com/test/threaddump.log”
Java Flight Recorder, jfr jcmd 40019 VM.check_commercial_features jcmd 40019 VM.unlock_commercial_features jcmd 40019 JFR.check jcmd 40019 JFR.start name=jfr0 delay=10s duration=10s filename=jfr0.jfr
mbr, gpt http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_039_fdisk_gdisk_parted.html 两种分区结构简介 MBR分区 硬盘主引导记录MBR由4个部分组成 主引导程序 (偏移地址0000H-0088H) ,它负责从活动分区中装载,并运行系统引导程序。 出错信息数据区,偏移地址0089H-00E1H为出错信息,00E2H-01BDH全为0字节。 分区表 (DPT,Disk Partition Table) 含4个分区项,偏移地 址01BEH-01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4 结束标志字,偏移地址01FE-01FF的2个字节值为结束标志55AA GPT分区 GPT:GUID (Globals Unique Identifiers) partitiontable 支持128个分区,使用64位,支持8Z (512Byte/block ) 64Z ( 4096Byte/block) 使用128位UUID(Universally Unique Identifier) 表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位 UEFI (统一扩展固件接口)硬件支持GPT,使操作系统启动
内网 dns dig 能解析出ip, ping 返回 Name or service not known https://blog.csdn.net/jinyuxiaoqiang/article/details/78611430 https://blog.csdn.net/water_cow/article/details/7190880 vim /etc/nsswitch.conf hosts: files mymachines myhostname resolve [!UNAVAIL=return] dns hosts: files dns myhostname
pet https://mp.weixin.qq.com/s/pccId4L674Y61Re7SZiLKg yay -S pet-bin #创建一个新的片段 pet new pet list pet sync
MX ANYWHERE 2 鼠标与蓝牙设备连接 http://support.logitech.com.cn/zh_cn/article/Connect-the-MX-Anywhere-2-mouse-to-a-Bluetooth-device?product=a0qi0000008tB99AAE 1 — 电源开关 2 — 连接按钮 3 — 设备选择按钮 要将鼠标连接至运行 Windows 8 的计算机: 将鼠标底部的电源开关滑到顶端,开启鼠标。 通过设备选择按钮,选择 1、2 或 3。最多可以将三个设备保存到鼠标的内存中。 注意: 首次选择某个数字时,该指示灯开始快速闪烁,即表示进入准备就绪状态。在这种情况下,请执行第 4 步。否则,继续第 3 步。 按住鼠标上的连接按钮,直至选定数字开始快速闪烁。 将鼠标添加至计算机: 右键单击"开始"屏幕的空白处,然后选择所有程序 > 控制面板 > 设备和打印机 注意: 如果无法找到"设备和打印机",可将"控制面板"设置为"查看方式: 小图标。然后应该能够看到所有"控制面板"选项。 在"设备和打印机"窗口中,单击添加设备。 Windows 添加设备 从设备列表中选择 MX Anywhere 2,然后单击下一步。 配置连接时,将出现一个新的设备配置窗口。 安装 MX Anywhere 2 配对完成后,新的设备配置窗口将自动关闭。MX Anywhere 2 将显示在设备和打印机窗口的设备列表中。 设备和打印机 注意: 如果 MX Anywhere 2 已经配对但存在连接问题,可将其从设备列表中删除,然后按照上述说明重新进行连接。 连接至 Mac OS X 10.10 或更高版本 鼠标底部按钮 1 — 电源开关 ...
blender https://www.bilibili.com/video/av7257605/?p=1 https://docs.blender.org/manual/zh-hans/dev/editors/index.html https://jingyan.baidu.com/article/0eb457e5c5d69603f1a90593.html https://jingyan.baidu.com/article/335530daeb702419cb41c3ef.html
磁盘分区对齐 https://linux.cn/article-3167-1.html
磁盘 IO 寻址–毫秒ms级别的。 对于磁盘来说一个完整的IO操作是这样进行的:当控制器对磁盘发出一个IO操作命令的时候,磁盘的驱动臂(Actuator Arm)带读写磁头(Head)离开着陆区(Landing Zone,位于内圈没有数据的区域),移动到要操作的初始数据块所在的磁道(Track)的正上方,这个过程被称为寻址(Seeking),对应消耗的时间被称为寻址时间(Seek Time);但是找到对应磁道还不能马上读取数据,这时候磁头要等到磁盘盘片(Platter)旋转到初始数据块所在的扇区(Sector)落在读写磁头正上方的之后才能开始读取数据,在这个等待盘片旋转到可操作扇区的过程中消耗的时间称为旋转延时(Rotational Delay);接下来就随着盘片的旋转,磁头不断的读/写相应的数据块,直到完成这次IO所需要操作的全部数据,这个过程称为数据传送(Data Transfer),对应的时间称为传送时间(Transfer Time)。完成这三个步骤之后一次IO操作也就完成了。 ———————————————— 版权声明:本文为CSDN博主「人工智」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_35789269/article/details/117536357 HDD机械磁盘的性能标准 最大IOPS的理论计算方法 IOPS = 1000 ms/ (寻道时间 + 旋转延迟)。可以忽略数据传输时间。 7200 rpm的磁盘 IOPS = 1000 / (9 + 4.17) = 76 IOPS 13ms 10000 rpm的磁盘IOPS = 1000 / (6+ 3) = 111 IOPS 9ms 15000 rpm的磁盘IOPS = 1000 / (4 + 2) = 166 IOPS 6ms 常见磁盘平均物理寻道时间为: 7200转/分的STAT硬盘平均物理寻道时间是9ms 10000转/分的STAT硬盘平均物理寻道时间是6ms 15000转/分的SAS硬盘平均物理寻道时间是4ms 常见硬盘的旋转延迟时间为: 7200 rpm的磁盘平均旋转延迟大约为601000/7200/2 = 4.17ms 10000 rpm的磁盘平均旋转延迟大约为601000/10000/2 = 3ms, 15000 rpm的磁盘其平均旋转延迟约为60*1000/15000/2 = 2ms。 ©著作权归作者所有:来自51CTO博客作者Darren_Wen的原创作品,请联系作者获取转载授权,否则将追究法律责任 HDD机械磁盘的性能标准 https://blog.51cto.com/wendashuai/2852767 ...
有氧运动, Aerobic exercise 时长 周 150 分钟 == 2.5 小时 中等强度的有氧运动 或 75 分钟高强度有氧活动 也可以将中等强度和高强度活动搭配进行 争取把运动量分散在一周几天甚至更长时间完成。 每天 30 分钟的适度身体活动。 运动方式 中强度 快走 骑自行车 游泳 高强度 跑步 游泳 跳绳 要获得更有利于健康的效果,指南建议每周进行 300 分钟或更长时间的中等强度有氧运动。这个运动量可能有助于减重或保持减重效果。不过,即使是少量的身体活动也可能有所助益。一天内多次短时间活动,可以积少成多,有益健康 减少久坐时间也很重要。每天坐的时间越久,出现代谢问题的风险就越高。如果坐得太久,即使每天的运动量达到了建议的最低限度,也会对您的健康和寿命产生不利影响。 《美国心脏病学会杂志》曾经公布了一项研究数据,此项研究纳入了14.9万人近10年随访,结论就是:每天坐≥8小时的人,相对于坐<4小时的人而言,死亡的风险上升了52%左右,久坐不动的人要比运动的人死亡的风险增加了80%左右!久坐的人比运动的人心血管疾病死亡的风险增加了107%左右! 有氧运动(Aerobic exercise),是一种以提高人体耐力质素,增强心肺功能为目的的体育运动. 人体运动需要ATP来提供能量,ATP可以由身体进行有氧代谢和无氧代谢合成。无氧代谢能够短时间内在不需要氧气的状态合成ATP,但是维持时间不长;而有氧代谢需要氧气参与合成ATP,但是能够长时间进行。一般认为,运动中消耗的ATP以有氧代谢产生为主的就是有氧运动。 进行体育运动时,当心率达到最大心率的50%-90%,就可认定是在进行有氧训练,或者可以用自我感觉对自己运动时的状态测定,在自我感觉“很轻松”、“比较轻松”、“有点累”、“比较累”、“很累”五个等级中,如果认为是“有点累”,到“比较累”之间,也可认定是有氧运动。要达到增强耐力的锻炼效果,有氧训练的最低要求是,每天累计锻炼时间30分钟,每周运动三次。 比较科学的定义,有氧运动是指长时间(15分钟以上)、有节奏、会令心率上升的大肌肉运动。 运动333 每周运动3次,每次超过30分钟,心跳每分钟130下。 运动357 运动每次应达30分钟,每周5次,运动时每分钟心跳数应达最大心跳数的7成。 预估最大心跳数的公式为220减去自己的年龄。例如一位42岁健康人预估最大心跳数为:220-42=178 (心跳/每分钟), 178 * 0.7 = 124.6 测定之替代方案 评估运动时喘的程度,应达到感觉有点喘,但还可以讲话,便是适当的运动强度,但若喘到没办法讲话,代表超出心脏可负荷范围。 运动不分季节,但要量力而为。 中老年人要达到333原则有点吃力,建议以运动完会喘,但仍可说话为原则,避免运动到上气不接下气。 年轻人则应以运动333原则为低标,选择跑步、骑单车或游泳等有氧运动,每周3次运动各至少30分钟,促进新陈代谢,可改善身体机能。 无氧运动(英语:Anaerobic exercise)是强度足够引起乳酸形成的体能锻炼。非耐力运动的运动员使用无氧运动增强力量、速度和能力,健美运动员则用该类运动打造肌肉量。利用无氧运动发展的那套肌肉能量系统与有氧运动发展出来的系统是不一样的,良好的无氧供能系统使得人在短时间、高强度活动中具备更好的表现力,持续时间仅几秒钟到两分钟[1]。任何长于两分钟的活动都涉及到较大比例的有氧代谢 过最大心率的90%时仍会变成无氧运动。尽管目前仍有许多看似合理的方法可以用于测定运动中无氧代谢的比例,但无氧能量消费很难去准确量化[1][3][4]。 大多数运动是无氧系统和有氧系统并存的。 无氧能量系统的两种形式是: 高能磷酸,三磷酸腺苷和磷酸肌酸; 无氧糖酵解。 前者被称为无乳酸无氧而后者被称为乳酸无氧系统[5]。高能磷酸在肌肉细胞中以很少的量被储存起来。无氧糖酵解在缺乏氧气的情况下仅使用葡萄糖(和糖原)作为燃料,更确切地说:当有氧代谢所提供的ATP产生速率不够ATP的需求量时,无氧糖酵解就会产生ATP。葡萄糖的迅速分解所产生的结果是形成乳酸(或更确切地说是乳酸在生理pH水平下的共轭碱乳酸盐)。多至30秒的体能锻炼主要依赖于前者即ATP-CP磷酸原系统。30秒后基于有氧和无氧糖酵解的代谢系统占据主导地位。 三磷酸腺苷(英语:adenosine triphosphate、縮寫:ATP ATP可通过多种细胞途径产生。最典型的如在线粒体中通过氧化磷酸化由三磷酸腺苷合酶合成,或者在植物的叶绿体中通过光合作用合成。ATP合成的主要能源为葡萄糖和脂肪酸。每分子葡萄糖先在细胞质基质中产生2分子丙酮酸同时产生2分子ATP,最终在线粒体中通过三羧酸循环(或称柠檬酸循环)产生最多32分子ATP。脂肪酸氧化分解进入柠檬酸循环,长链脱除也可以用于氧化磷酸化分解产生ATP,一般为108个ATP(软脂酸)。 ATP循环 人体每天的能量需要水解100-150摩尔的ATP,即相当于50至75千克这么多。这意味着人一天将要分解掉相当于他体重的ATP。但人体中ATP的总量只有大约0.1摩尔(51克左右),所以每个ATP分子每天要被重复利用1000-1500次。ATP不能被储存,因为ATP在合成后必须于短时间内被消耗。[5] 不管是健步走还是慢跑都能使老年人 心肌纤维变粗。心肌壁变厚,心输出量增加,安静时心率 降低,心脏休息时间延长。心肌耗氧量降低。慢跑和健步 走时,可以使得胆固醇不容易沉积在血管壁上,再加上肌 肉的收缩对血管的挤压,能有效防止动脉硬化,改善血管 壁弹性。使得毛细血管大量开放,能提高血管的顺应性, 有效的预防和治疗心血管疾病,慢跑和健步走也可使得脑 血管扩张,增加颅血流量,改善脑循环,防止和减缓脑卒 中的发生。 ...
JFFS JFFS 是一个特别针对闪存的文件系统 JFFS v1 最初是由瑞典的 Axis Communications AB 公司开发的,使用在他们的嵌入式设备中,并且在 1999 年末基于 GNU GPL 发布出来。最初的发布版本基于 Linux 内核 2.0,后来 RedHat 将它移植到 Linux 内核 2.2,做了大量的测试和 bug fix 的工作使它稳定下来,并且对签约客户提供商业支持。但是在使用的过程中,JFFS v1 设计中的局限被不断的暴露出来。于是在 2001 年初的时候,RedHat 决定实现一个新的闪存文件系统,这就是现在的 JFFS2。下面将详细介绍 JFFS2 设计中主要的思想,关键的数据结构和垃圾收集机制。这将为我们实现一个闪存上的文件系统提供很好的启示。 首先,JFFS2 是一个日志结构(log-structured)的文件系统,包含数据和原数据(meta-data)的节点在闪存上顺序的存储。JFFS2 之所以选择日志结构的存储方式,是因为对闪存的更新应该是 out-of-place 的更新方式,而不是对磁盘的 in-place 的更新方式。 JFFS3 简介 虽然不断有新的补丁程序来提高 JFFS2 的性能,但是不可扩展性是它最大的问题,但是这是它自身设计的先天缺陷,是没有办法靠后天来弥补的。因此我们需要一个全新的文件系统,而 JFFS3 就是这样的一个文件系统,JFFS3 的设计目标是支持大容量闪存(>1TB)的文件系统。JFFS3 与 JFFS2 在设计上根本的区别在于,JFFS3 将索引信息存放在闪存上,而 JFFS2将索引信息保存在内存中。比如说,由给定的文件内的偏移定位到存储介质上的物理偏移地址所需的信息,查找某个目录下所有的目录项所需的信息都是索引信息的一种。 JFFS3 现在还处于设计阶段,文件系统的基本结构借鉴了 Reiser4 的设计思想,整个文件系统就是一个 B+ 树。JFFS3 的发起者正工作于垃圾回收机制的设计,这是 JFFS3 中最复杂,也是最富有挑战性的部分。JFFS3 的设计文档可以在http://www.linux-mtd.infradead.org/doc/jffs3.html 得到 https://www.ibm.com/developerworks/cn/linux/l-jffs2/
R7800, Build custom Netgear R7800 firmware for a larger flash size/root space sudo apt-get install subversion g++ zlib1g-dev build-essential git python rsync man-db sudo apt-get install libncurses5-dev gawk gettext unzip file libssl-dev wget git clone https://github.com/openwrt/openwrt.git openwrt cd openwrt git fetch -all -tags -prune git checkout tags/v17.01.2 ./scripts/feeds update -a wget https://downloads.lede-project.org/releases/17.01.4/targets/ipq806x/generic/config.seed -O config.seed rm -rf .config* mv config.seed .config #Edit the following file with your favorite editor: target/linux/ipq806x/files/arch/arm/boot/dts/qcom-ipq8065-r7800.dts #for R7800: #1. DON'T TOUCH kernel and ubi. and I won't touch reserve neither. #2. Remove netgear section. it contains, actually, nothing useful, if you want to use lede. #3. extend ubi partition to the end of original netgear partition. # luci support ./scripts/feeds update packages luci ./scripts/feeds install -a -p luci # make menuconfig 不要用root账号 make menuconfig #set "Target System", "Subtarget", "Target Profile"; make defconfig #恢复默认配置 # 选了dnsmasq-full就不要选dnsmasq了, 编译的时候会冲突 Base system> dnsmasq-full>Build with IPset support. #调试用的, 选用。 kernel modules>Netfilter Extensions>kmod-ipt-debug Administration>syslog-ng # make -j8 V=s不要用root账号 make -j8 V=s #(build OpenWRT with console logging, you can see where build failed.). 编译出来的img到这找: bin/targets/ipq806x/generic/lede-17.01.4-ipq806x-R7800-squashfs-factory.img sudo ip link set enp0s31f6 up sudo ip addr add 192.168.1.11/24 broadcast 192.168.1.255 dev enp0s31f6 tftp -v -m binary 192.168.1.1 -c put lede-17.01.4-ipq806x-R7800-squashfs-factory.img https://forum.lede-project.org/t/netgear-r7800-only-19mb-flash-available/1115 ...
OverlayFS https://blog.csdn.net/styshoo/article/details/60715942 Docker存储驱动之OverlayFS简介 简介 OverlayFS是一种和AUFS很类似的文件系统,与AUFS相比,OverlayFS有以下特性: 更简单地设计; 从3.18开始,就进入了Linux内核主线; 可能更快一些。 因此,OverlayFS在Docker社区关注度提高很快,被很多人认为是AUFS的继承者。就像宣称的一样,OverlayFS还很年轻。所以,在生成环境使用它时,还是需要更加当心。 Docker的overlay存储驱动利用了很多OverlayFS特性来构建和管理镜像与容器的磁盘结构。 自从Docker1.12起,Docker也支持overlay2存储驱动,相比于overlay来说,overlay2在inode优化上更加高效。但overlay2驱动只兼容Linux kernel4.0以上的版本。 注意: 自从OverlayFS加入kernel主线后,它在kernel模块中的名称就被从overlayfs改为overlay了。但是为了在本文中区别,我们使用OverlayFS代表整个文件系统,而overlay/overlay2表示Docker的存储驱动 overlay和overlay2 OverlayFS (overlay) 的镜像分层与共享 OverlayFS使用两个目录,把一个目录置放于另一个之上,并且对外提供单个统一的视角。这两个目录通常被称作层,这个分层的技术被称作union mount。术语上,下层的目录叫做lowerdir,上层的叫做upperdir。对外展示的统一视图称作merged。 下图展示了Docker镜像和Docker容器是如何分层的。镜像层就是lowerdir,容器层是upperdir。暴露在外的统一视图就是所谓的merged。 OverlayFS 是类似 AUFS 的现代联合文件系统 (union filesystem) ,但是速度更快,实现更简单。针对 OverlayFS 提供了两个存储驱动: 最初的 overlay,以及更新更稳定的 overlay2。 Note: 如果你使用 OverlayFS,使用 overlay2 而不是 overlay 驱动,因为 overlay2 在 inode 利用率上更高效。要使用新的驱动,你需要系统内核版本 4.0 或者更高版本,除非你是使用 RHEL 或者 CentOS 用户,此时需要内核版本在 3.10.0-514 或更高版本。 先决条件 除了上述的系统内核版本,使用 OverlayFS 还需要以下条件: 因为 inode 以及后续的 Docker 版本兼容问题,不推荐使用 overlay,满足条件下优先使用 overlay2 以下文件系统支持: ext4 (只支持 RHEL 7.1) xfs (RHEL 7.2 或更高版本) ,d_type=true 必须开启。使用 xfs_info 验证 ftype 选项是否为 1。 修改 Docker 存储驱动会使已存在的容器和镜像不可访问,可以提前使用 docker save 保存镜像或推送到 Docker Hub (也可以是内部私有镜像仓库) ,防止镜像丢失 mkfs -t xfs -n ftype=1 /PATH/TO/DEVICE # 开启 d_type 选项 xfs_info /PATH/TO/DEVICE | grep ftype # 验证是否已支持 配置 overlay 或 overlay2 驱动 满足使用 OverlayFS 的条件后,通过 /etc/docker/daemon.json 加入 overlay2 存储配置项, 重启 docker daemon 即可生效。 { “storage-driver”: “overlay2” } overlay2 驱动是如何工作的 OverlayFS 层 (layers) 在单个 Linux 主机上分为两个目录,并且将它们呈现为单个目录。这些目录统称为层 (layers) ,统一过程称为联合挂载 (union mount) 。OverlayFS 把下层目录称为 lowerdir,上层目录称为 upperdir,统一视图通过称为 merged 自身目录暴露。 overlay 驱动仅适用单个 lower OverlayFS 层,因此需要通过硬链接来实现多层镜像,overlay2 驱动原生支持 128 个 lower OverlayFS 层。这个功能为与层相关的命令如 docker build 和 docker commit 提供了更好的性能,并且在后备文件系统上消耗更少的 inode。 ...
assembly, 汇编 汇编 hello world 汇编语法遵循 AT&T,汇编器是 GNU as。 .section .rodata msg: .ascii "Hello, world\n" .text .global _start _start: mov $1, %rax mov $1, %rdx mov $msg, %rsi mov $13, %rdx syscall mov $60, %rax mov $0, %rdx syscall 在 _start: 标签下,发起 write 系统调用: 寄存器 rax 存放系统调用号, 参数通过六个寄存器 rdi、rsi、rdx、r10、r8 和 r9 进行传递: 第一个参数在 rdi 中, 第二个参数在 rsi 中, 以此类推。所以,在 rax 中存放 write 的系统调用号 1; 在 rdi 中存放 1,即标准输出的文件描述符;在 rsi 中存放要输出数据的首地址; 在 rdx 中存放要输出数据的长度。 as hello.s -o hello.o ld -o hello hello.o ./hello https://shuai.guru/2023-01-31-x86-64-hello-world/ 栈 栈是一种具有特殊的访问方式的存储空间,他的特殊性就在于 最后一个进入这个空间的数据,是最先出去的 栈有两种基本的操作:入栈和出栈 ...
openstack https://www.cnblogs.com/wangle1001986/p/5320752.html https://www.zhihu.com/question/54447067 openstack是云管理平台,其本身并不提供虚拟化功能,真正的虚拟化能力是由底层的hypervisor (如KVM、Qemu、Xen等) 提供。所谓管理平台,就是为了方便使用而已。打一个不恰当的比方,订单管理平台之类的产品,其实就是整合了一系列的sql调用而已。类似的,如果没有openstack,一样可以通过virsh、virt-manager来实现创建虚拟机的操作,只不过敲命令行的方式需要一定的学习成本,对于普通用户不是很友好。 作者: Zongrong Zheng 链接: https://www.zhihu.com/question/54447067/answer/292892408 来源: 知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 OpenStack与KVM的区别与联系 转: https://www.aliyun.com/zixun/content/2_6_280418.html OpenStack与KVM都是目前IT界比较热门的两个词汇。它们都是开源的,都与Linux有着千丝万缕的关系。但这两者还是有很大的差别呢。 OpenStack: 开源管理项目 OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。它不是一个软件,而是由几个主要的组件组合起来完成一些具体的工作。OpenStack由以下五个相对独立的组件构成: lOpenStack Compute(Nova)是一套控制器,用于虚拟机计算或使用群组启动虚拟机实例; lOpenStack镜像服务(Glance)是一套虚拟机镜像查找及检索系统,实现虚拟机镜像管理; lOpenStack对象存储(Swift)是一套用于在大规模可扩展系统中通过内置冗余及容错机制,以对象为单位的存储系统,类似于Amazon S3; lOpenStack Keystone,用于用户身份服务与资源管理以及 lOpenStack Horizon,基于Django的仪表板接口,是个图形化管理前端。 这个起初由美国国家航空航天局和Rackspace在2010年末合作研发的开源项目,旨在打造易于部署、功能丰富且易于扩展的云计算平台。OpenStack项目的首要任务是简化云的部署过程并为其带来良好的可扩展性,企图成为数据中心的操作系统,即云操作系统。 KVM: 开放虚拟化技术 KVM (Kernel-based Virtual Machine) 是一个开源的系统虚拟化模块,它需要硬件支持,如Intel VT技术或者AMD V技术,是基于硬件的完全虚拟化,完全内置于Linux。 2008年,红帽收购Qumranet获得了KVM技术,并将其作为虚拟化战略的一部分大力推广,在2011年发布RHEL6时支持KVM作为唯一的hypervisor。KVM主打的就是高性能、扩展性、高安全,以及低成本。 与Linux的缘分 一个被某些热心支持者成为云时代的Linux,是公有云与私有云的开源操作系统。一个则是Linux内核的一部分,将Linux转换成一个Type-1 hypervisor,无需任何变更就能享受现有的Linux内核调度、内存管理和设备支持。 OpenStack炙手可热,它如同Linux一样,旨在构建一个内核,所有的软件厂商都围绕着它进行工作。OpenStack的许多子项目,对云计算平台中的各种资源 (如计算能力、存储、网络) 提供敏捷管理。此外,OpenStack也提供对虚拟化技术的支持。 KVM集成在Linux的各个主要发行版本中,使用Linux自身的调度器进行管理。KVM专注于成为最好的虚拟机监控器,是使用Linux企业的不二选择,加上它还支持Windows平台,所以也是异构环境的最佳选择。 OpenStack与KVM都发展迅猛 OpenStack 是一个拥有众多支持者的大项目。时至今日,已经有超过180家企业和400多位开发人员对这一项目积极地做着贡献,而其生态系统甚至更为庞大,已经超过了5600人和850家机构。在今年9月,OpenStack基会正式成立。白金会员有红帽、IBM与惠普等,黄金会员包括戴尔与英特尔等。 OpenStack基本上是一个软件项目,有近55万行代码。分解成核心项目、孵化项目,以及支持项目和相关项目。除了以上提及的五大组成,与虚拟网络有关的Quantum首次被列为核心项目。 KVM是一个脱颖而出的开放虚拟化技术。它是由一个大型的、活跃的开放社区共同开发的,红帽、IBM、SUSE等都是其成员。2011年,IBM、红帽、英特尔与惠普等建立开放虚拟化联盟 (OVA) ,帮助构建KVM生态系统,提升KVM采用率。如今,OVA已经拥有超过250名成员公司,其中,IBM有60多位程序员专门工作于KVM开源社区。 OpenStack与KVM的解决方案 在去年9月22日发布Diablo之后,OpenStack社区随即开始着手新版本的设计和开发,新版本开发代号为Essex。此前发布有四个版本: Austin、Bexar、Cactus与Diablo。新版本发布包含云计算控制中心Nova、镜像服务Glance、认证服务Keystone和Dashboard项目Horizon,也包括对象存储项目Swift。 由此可以看出,OpenStack是一个框架,一个可以建立公有云和私有云的基础架构。它并不是一个现成的产品,要想开展基础架构方面的工作,企业需要顾问和开发人员。很多时候还需要第三方的集成工具。 KVM可通过购买Linux版本获得,或作为独立hypervisor单独购买。最近,IBM KVM (北京) 卓越中心落户北京,展示IBM及合作伙伴基于KVM的产品,包括IBM SmartCloud Entry、IBM System Director VMControl、Red Hat Enterprise Virtualization及SUSE云。 OpenStack与KVM相互辉映 ...
用户,角色经,权限控制 ,权限模型, RBAC权限管理 权限模型。一般情况下会有5张表,分别是: 用户表,角色表,权限表,用户角色关系表,角色权限对应表。 RBAC (Role-Based Access Control,基于角色的访问控制) ,就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成"用户-角色-权限"的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般是多对多的关系。 角色是什么?可以理解为一定数量的权限的集合,权限的载体。例如: 一个论坛系统,“超级管理员”、“版主"都是角色。版主可管理版内的帖子、可管理版内的用户等,这些是权限。要给某个用户授予这些权限,不需要直接将权限授予用户,可将"版主"这个角色赋予该用户。 当用户的数量非常大时,要给系统每个用户逐一授权 (授角色) ,是件非常烦琐的事情。这时,就需要给用户分组,每个用户组内有多个用户。除了可给用户授权外,还可以给用户组授权。这样一来,用户拥有的所有权限,就是用户个人拥有的权限与该用户所在用户组拥有的权限之和。 (下图为用户组、用户与角色三者的关联关系) 在应用系统中,权限表现成什么?对功能模块的操作,对上传文件的删改,菜单的访问,甚至页面上某个按钮、某个图片的可见性控制,都可属于权限的范畴。有些权限设计,会把功能操作作为一类,而把文件、菜单、页面元素等作为另一类,这样构成"用户-角色-权限-资源"的授权模型。而在做数据表建模时,可把功能操作和资源统一管理,也就是都直接与权限表进行关联,这样可能更具便捷性和易扩展性。 (见下图) 请留意权限表中有一列"权限类型”,我们根据它的取值来区分是哪一类权限,如"MENU"表示菜单的访问权限、“OPERATION"表示功能模块的操作权限、“FILE"表示文件的修改权限、“ELEMENT"表示页面元素的可见性控制等。 这样设计的好处有二。其一,不需要区分哪些是权限操作,哪些是资源, (实际上,有时候也不好区分,如菜单,把它理解为资源呢还是功能模块权限呢?) 。其二,方便扩展,当系统要对新的东西进行权限控制时,我只需要建立一个新的关联表"权限XX关联表”,并确定这类权限的权限类型字符串。 这里要注意的是,权限表与权限菜单关联表、权限菜单关联表与菜单表都是一对一的关系。 (文件、页面权限点、功能操作等同理) 。也就是每添加一个菜单,就得同时往这三个表中各插入一条记录。这样,可以不需要权限菜单关联表,让权限表与菜单表直接关联,此时,须在权限表中新增一列用来保存菜单的ID,权限表通过"权限类型"和这个ID来区分是种类型下的哪条记录。 到这里,RBAC权限模型的扩展模型的完整设计图如下: 随着系统的日益庞大,为了方便管理,可引入角色组对角色进行分类管理,跟用户组不同,角色组不参与授权。例如: 某电网系统的权限管理模块中,角色就是挂在区局下,而区局在这里可当作角色组,它不参于权限分配。另外,为方便上面各主表自身的管理与查找,可采用树型结构,如菜单树、功能树等,当然这些可不需要参于权限分配。 RBAC模型的分类 RBAC模型可以分为: RBAC0、RBAC1、RBAC2、RBAC3 四种。其中RBAC0是基础,也是最简单的,相当于底层逻辑,RBAC1、RBAC2、RBAC3都是以RBAC0为基础的升级。 RBAC0模型 最简单的用户、角色、权限模型。这里面又包含了2种: 用户和角色是多对一关系,即: 一个用户只充当一种角色,一种角色可以有多个用户担当。 用户和角色是多对多关系,即: 一个用户可同时充当多种角色,一种角色可以有多个用户担当。 那么,什么时候该使用多对一的权限体系,什么时候又该使用多对多的权限体系呢? 如果系统功能比较单一,使用人员较少,岗位权限相对清晰且确保不会出现兼岗的情况,此时可以考虑用多对一的权限体系。其余情况尽量使用多对多的权限体系,保证系统的可扩展性。如: 张三既是行政,也负责财务工作,那张三就同时拥有行政和财务两个角色的权限。 RBAC1模型 相对于RBAC0模型,增加了子角色,引入了继承概念,即子角色可以继承父角色的所有权限。 RBAC2模型 基于RBAC0模型,增加了对角色的一些限制: 角色互斥、基数约束、先决条件角色等。 角色互斥: 同一用户不能分配到一组互斥角色集合中的多个角色,互斥角色是指权限互相制约的两个角色。案例: 财务系统中一个用户不能同时被指派给会计角色和审计员角色。 基数约束: 一个角色被分配的用户数量受限,它指的是有多少用户能拥有这个角色。例如: 一个角色专门为公司CEO创建的,那这个角色的数量是有限的。 先决条件角色: 指要想获得较高的权限,要首先拥有低一级的权限。例如: 先有副总经理权限,才能有总经理权限。 运行时互斥: 例如,允许一个用户具有两个角色的成员资格,但在运行中不可同时激活这两个角色。 RBAC3模型 称为统一模型,它包含了RBAC1和RBAC2,利用传递性,也把RBAC0包括在内,综合了RBAC0、RBAC1和RBAC2的所有特点,这里就不在多描述了。 什么是权限 说了这么久用户-角色-权限,可能小伙伴们都了解了什么是用户、什么是角色。但是有的小伙伴会好奇,那权限又是个什么玩意呢? 权限是资源的集合,这里的资源指的是软件中所有的内容,包括模块、菜单、页面、字段、操作功能 (增删改查) 等等。具体的权限配置上,目前形式多种多样,按照我个人的理解,可以将权限分为: 页面权限、操作权限和数据权限 用户组的使用 当平台用户基数增大,角色类型增多时,如果直接给用户配角色,管理员的工作量就会很大。这时候我们可以引入一个概念"用户组”,就是将相同属性的用户归类到一起。 https://www.cnblogs.com/cjsblog/p/9152455.html https://blog.csdn.net/painsonline/article/details/7183613 http://www.woshipm.com/pd/1150093.html
win 10 kms https://hqidi.com/36.html
‘NAT 外网访问虚拟机’ https://blog.csdn.net/zhangli_perdue/article/details/50455298
column command ip route list |column -t -c 字符数 指定显示的列宽 -s 分隔符 使用 -t 选项时, 指定分隔符 (允许指定多个分隔符) -t 判断输入行的列数来创建一个表。分隔符是使用在 -s 中指定的字符。如果没有指定分隔符, 默认是空格 -x 更改排列顺序 (左→右) 。默认的顺序为 (上→下) df -h |column -t Filesystem Size Used Avail Use% Mounted on /dev/vda1 7.9G 3.3G 4.3G 44% / /dev/vdb1 50G 1.9G 45G 4% /data https://blog.csdn.net/bbs11111111/article/details/5975188 http://ask.apelearn.com/question/9933 http://blog.csdn.net/robertsong2004/article/details/38796985
netty 内存 https://www.jianshu.com/p/ce7c6f5cb5f6 https://www.jianshu.com/p/ed43572052ae