用户,角色经,权限控制 ,权限模型, RBAC权限管理

用户,角色经,权限控制 ,权限模型, 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

2018-03-27 · 1 min · 70 words · -

win 10 kms

win 10 kms https://hqidi.com/36.html

2018-03-26 · 1 min · 4 words · -

NAT 外网访问虚拟机

‘NAT 外网访问虚拟机’ https://blog.csdn.net/zhangli_perdue/article/details/50455298

2018-03-26 · 1 min · 3 words · -

column command

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

2018-03-25 · 1 min · 53 words · -

iproute2 basic

iproute2 basic commands # 查看 iproute 是否安装, 查看版本 ip -V ip link show type bridge install # ubuntu apt install iproute2 查看 IP 地址 # 显示所有网络地址 ip address show # 简写 ip addr # 再简写 ip a 设置网络接口的 IP 地址 # 为网络接口分配 IPv4 地址 # 使用这些命令配置网络接口的 IPv4 地址。 sudo ip addr add 10.0.0.1/24 dev eth1 ip addr add 192.168.53.0/24 dev wg0 删除网络接口的 IP 地址 ip addr del 192.168.53.0/24 dev wg0 # Delete all IPv4 addresses on interface wlp3s0 sudo ip -f inet addr del dev wlp3s0 # 查端口 ss, netstat ss -ntlp | grep ",1234," sudo ip link set down eth1 sudo ip link set up eth1 #查所有网卡的ip ip addr show #查看所有网卡 ip link show #查看某一个网卡的 ip ip addr show dev eth1 set link up or down # Bring a link up or down ip link set dev ${interface name} up ip link set eth0 up 设置网卡为混杂模式 ip link set enp1s0 promisc on ...

2018-03-25 · 3 min · 549 words · -

netty 内存

netty 内存 https://www.jianshu.com/p/ce7c6f5cb5f6 https://www.jianshu.com/p/ed43572052ae

2018-03-23 · 1 min · 4 words · -

failed to allocate direct memory

failed to allocate direct memory failed to allocate 1024 byte(s) of direct memory (used: xxx, max: xxx) https://netty.io/news/2016/06/07/4-0-37-Final.html https://github.com/netty/netty/pull/5314 System.setProperty(“io.netty.maxDirectMemory”, “0”); // Here is how the system property is used: // // * < 0 - Don’t use cleaner, and inherit max direct memory from java. In this case the // “practical max direct memory” would be 2 * max memory as defined by the JDK. // * == 0 - Use cleaner, Netty will not enforce max memory, and instead will defer to JDK. ...

2018-03-23 · 1 min · 116 words · -

R7800 openwrt

R7800 openwrt 在ubuntu上安装如下软件包: gcc, g++, binutils, bzip2, flex, python, perl, make,find, grep, diff, unzip, gawk, getopt, subversion, libz-dev and libc 头文件 sudo apt-get updatesudo apt-get install gcc g++ build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip 选择编译目标 make menuconfig Target System (Qualcomm Atheros IPQ806X) -> Target Profile (Netgear Nighthawk X4S R7800) -> 退出保存 编译固件 make V=s -j4 编译完成后 ubuntu:~/kunteng-lede$ ls bin/targets/ipq806x/generic/config.seed lede-ipq806x-R7800-squashfs-sysupgrade.tar lede-ipq806x-vmlinux.elflede-ipq806x-device-r7800.manifest ...

2018-03-22 · 1 min · 100 words · -

pidstat

pidstat pidstat是sysstat中的工具,如需使用pidstat,要先安装sysstat,在这里就不说明了。 us过高 当us值过高时,表示运行的应用消耗了大部分的cpu。在这种情况下,对于java应用而言,最重要的是找到具体消耗cpu的线程所执行的代码,可以采用如下方法。 首先通过linux命令top命令查看us过高的pid值 通过top -Hp pid查看该pid进程下的线程的cpu消耗状况,得到具体pid值 将pid值转化为16进制,这个转化后的值对应nid值的线程 通过jstack pid grep -C 20 “16进制的值” 命令查看运行程序的线程信息 该线程就是消耗cpu的线程,在采样时须多执行几次上述的过程,以确保找到真实的消耗cpu的线程。 java应用造成us过高的原因主要是线程一直处于可运行的状态Runnable,通常是这些线程在执行无阻塞、循环、正则或纯粹的计算等动作造成。 另外一个可能会造成us过高的原因是频繁的gc。如每次请求都需要分配较多内存,当访问量高时就导致不断的进行gc,系统响应速度下降, 进而造成堆积的请求更多,消耗的内存严重不足,最严重的时候会导致系统不断进行FullGC,对于频繁的gc需要通过分析jvm内存的消耗来查找原因。 pidstat 1 pidstat PID -r 3 minflt/s 每秒次缺页错误次数(minor page faults),次缺页错误次数意即虚拟内存地址映射成物理内存地址产生的page fault次数 majflt/s 每秒主缺页错误次数(major page faults),当虚拟内存地址映射成物理内存地址时,相应的page在swap中,这样的page fault为major page fault,一般在内存使用紧张时产生 VSZ Virtual Size: The virtual memory usage of entire task in kilobytes. RSS Resident Set Size: The non-swapped physical memory used by the task in kilobytes. pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。 执行pidstat,将输出系统启动后所有活动进程的cpu统计信息: 复制代码 linux:~ # pidstat Linux 2.6.32.12-0.7-default (linux) 06/18/12 x86_64 ...

2018-03-22 · 2 min · 282 words · -

netty ByteBuf

netty ByteBuf Netty ByteBuf 优势 Netty 提供了ByteBuf,来替代Java NIO的 ByteBuffer,操作内存缓冲区。 与Java NIO的 ByteBuffer 相比,ByteBuf的优势如下: Pooling (池化,这点减少了内存复制和GC,提升效率) 可以自定义缓冲类型 通过一个内置的复合缓冲类型实现零拷贝 扩展性好,比如 StringBuffer 不需要调用 flip()来切换读/写模式 读取和写入索引分开 方法链 引用计数 ———————————————— 版权声明:本文为CSDN博主「架构师-尼恩」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/crazymakercircle/article/details/84198042 https://caorong.github.io/2017/01/16/head-first-netty-3/ https://segmentfault.com/a/1190000007560884 根据 Wiki 对 Zero-copy 的定义: “Zero-copy” describes computer operations in which the CPU does not perform the task of copying data from one memory area to another. This is frequently used to save CPU cycles and memory bandwidth when transmitting a file over a network. ...

2018-03-21 · 5 min · 855 words · -

Termux

Termux https://www.jianshu.com/p/5c8678cef499 神器Termux的使用日常 写在前面: 现代桌面操作系统都自带终端程序,其强大的功能性和图形化的易用性相辅相成,使得系统操作更加高效。特别是Linux系列衍生系统的终端,得益于系统自带的丰富的功能指令,熟悉之后更是如鱼得水。随着手持智能设备的普及和性能的不断提升,如今的手持终端,如手机、平板等的硬件标准已达到了初级桌面计算机的硬件标准,甚至有过之而无不及,如果能在这些设备上使用Linux下类似的终端程序无疑是对运维作业的一大补充。 Android作为现代智能设备操作系统,在市场占有率上有压倒性的优势,况其与Linux系统有着不言自明的亲缘关系,在Android上使用终端也算是返璞归真了。另外,低门槛、低成本、受众广的实践特性也是本文选择Android的主要原因。 Termux 终端 Android是一个单用户图形化系统,功能主要以应用的形式呈现给用户,因此在系统上我们无法直接获取终端,更是无法直接调用系统自带的丰富指令。使用ADB是一个曲线救国的方法,打开USB调试后开发者可以在桌面系统的终端中触发Android系统自带指令,使用方法大概如下: adb shell env # 查看Android的环境变量 这种方法需要一台电脑的配合,为了实现全天候、无差别的终端体验,你首先需要一个终端模拟器来保证随时随地地使用终端。Android平台我们推荐Termux终端模拟器。 Termux is an Android terminal emulator and Linux environment app that works directly with no rooting or setup required. A minimal base system is installed automatically - additional packages are available using the APT package manager. Homepage Termux on Google Play Termux Termux终端有很多优秀的特性,这里要说两点: Termux有针对手机输入优化的键盘显示,长按KEYBOARD选项可打开该功能 Termux维护着适合Android的库,并自带包管理器apt 因此,在Android上使用Termux终端和在Linux上使用终端一样方便。 安装完Termux后你有以下几个步骤需要完成: 到手机设置中开启 Termux 的存储权限,否则在Termux终端无法访问内部存储 修改Termux的源地址 (特别是国内用户) 和Linux类似,Termux有自己的软件源,安装Termux后默认的软件源是Termux官网,即 http://termux.net,可打开源列表查看。 如何查看 export EDITOR=vi ...

2018-03-18 · 2 min · 279 words · -

PXE

PXE http://blog.csdn.net/nirendao/article/details/76012939 PXE启动原理以及与普通Linux启动的对比 原创 2017年07月24日 11:28:36 标签: PXE /boot /Linux 1011 关于PXE部署的详细配置的文章已经有不少了,这篇文章主要讲一下PXE启动的原理以及PXE启动和普通Linux启动的对比。 一、PXE启动原理: 原理图如下: DHCP的用途是: 提供client network参数和TFTP服务器的地址,最初的bootstrap程序 (即DHCP或BootP等) 和所需的程序。 首先,PXE client端 (BIOS里面的PXE固件) 广播一个DHCPDISCOVER的包,它询问所需的网络配置以及网络启动的参数。标准DHCP服务器 (非PXE enabled) 将回复一个普通的DHCPOFFER包,其中包含网络信息 (如IP地址) ,但并不能提供PXE相关参数,因此PXE Client并不能启动。而PXE enabled的DHCP服务器所回复的DHCPOFFER包里则包含PXE相关信息。 在解析一个PXE enabled的DHCP服务器返回的DHCPOFFER包后,PXE client就能够设置自己的IP地址、IP Mask等等,并且指向网络上的启动资源,比如TFTP服务器上的vmlinuz文件和initrd文件。 然后PXE client就通过TFTP下载这些启动资源到自己的内存中;如果是UEFI Secure Boot (而不是Legacy的BIOS) 则还会检验一下这些启动资源。下载完成后就会用这些资源来启动了。 这些启动资源其实就是最小的操作系统 (比如WindowsPE,又比如一个basic Linux kernel+initrd) 。这个最小操作系统在装载了网络驱动和TCP/IP协议栈之后,就会开始boot或者install完整的操作系统了。而这个boot或install的过程,就不再通过TFTP来做,而是通过更加健壮的网络传输协议 (如HTTP、CIFS、iSCSI或NFS) 来做。而boot或者install所用到的实体,比如磁盘或者CD-ROM,是位于远端的,因此需要通过网络传输协议来做。 二、PXE启动过程和普通的Linux系统启动过程的对比: 内核引导之前的不同: 普通的从硬盘启动Linux系统最初是BIOS将MBR加载入内存,然后将控制权交给MBR中的bootloader程序 (如GRUB) ,bootloader程序经过几个stage的加载后,最后将vmlinuz加载入内存,开始内核引导; 而PXE的启动过程在内核引导之前,是由BIOS中的PXE固件开启NBP程序 (比如DHCP的网络通信) ,然后下载vmlinuz和initrd,之后再进入内核启动过程。 内核引导之后的不同: vmlinuz和initrd运行得差不多了之后,普通的硬盘Linux启动就从本地硬盘加载/sbin/init并运行为1号进程,以及启动系统服务等等,而PXE的启动在内核引导完成之后,仍然会通过网络的方式 (但不是TFTP协议,而是其他更加健壮的协议如NFS、iSCSI等) ,加载真正的完整操作系统,如/sbin/init应该就是位于网络远端的硬盘上。 以iSCSI为例,网络远端的硬盘以iSCSI协议挂载到了当前机器,就好像是本地磁盘一样。这就是PXE+iSCSI的启动方式了。 参考文献: https://en.wikipedia.org/wiki/Preboot_Execution_Environment http://blog.csdn.net/nirendao/article/details/75949536 Diskless iSCSI boot with PXE HOWTO

2018-03-18 · 1 min · 69 words · -

golang cron

golang cron https://www.jianshu.com/p/626acb9549b1 cron 表达式的基本格式 用过 linux 的应该对 cron 有所了解。linux 中可以通过 crontab -e 来配置定时任务。不过,linux 中的 cron 只能精确到分钟。而我们这里要讨论的 Go 实现的 cron 可以精确到秒,除了这点比较大的区别外,cron 表达式的基本语法是类似的。 (如果使用过 Java 中的 Quartz,对 cron 表达式应该比较了解,而且它和这里我们将要讨论的 Go 版 cron 很像,也都精确到秒) cron(计划任务),顾名思义,按照约定的时间,定时的执行特定的任务 (job) 。cron 表达式 表达了这种约定。 cron 表达式代表了一个时间集合,使用 6 个空格分隔的字段表示。 字段名 是否必须 允许的值 允许的特定字符 秒(Seconds) 是 0-59 * / , - 分(Minutes) 是 0-59 * / , - 时(Hours) 是 0-23 * / , - 日(Day of month) 是 1-31 * / , – ? ...

2018-03-16 · 2 min · 334 words · -

archlinux 内网域名 ping结果和dig结果不一致

archlinux 内网域名 ping 结果和 dig 结果不一致 检查 /etc/resolv.conf 配置 确认/etc/hosts中是否添加了额外域名: 没问题; 确认域名服务器中正确的内网域名对应的IP,并和同事确认发现内网域名更新过,ping的结果指向了旧的IP,nslookup的解析结果正确; linux服务器本地会有域名缓存以加快域名解析,centos下用的是nscd ping一般会直接使用缓存的域名,nslookup会直接到域名服务器查询 systemctl restart systemd-resolved

2018-03-08 · 1 min · 17 words · -

zmodem, rz, sz

zmodem, rz, sz install pacman -S lrzsz yum install lrzsz konsole Edit>Zmodem upload ( ctrl + alt + U ) http://www.cnblogs.com/strikebone/p/3454679.html zssh 的全名叫 ZMODEM SSH. 看名字就知道, 使用的 zmodem zmodem 协议方便主要表示在以下点 其一,不需要输入很长的命令和密码,直接使用rz,sz加文件名,就能实现文件的收发。速度还很快。 其二,在中转了一台主机时,要在目标主机和本地主机之类,要传送文件,scp相当的麻烦,需要输入多次命令用户密码.但sz直接可以穿透。 好了,讲使用,如下,和使用ssh完全一样,只是打命令时,变成了zssh #zssh root@192.168.1.1 好了,在进入后,你需要上传文件的话。先 #ctrl+@ zssh >//这里切换到了本地机器 zssh>pwd //看一下本地机器的目录在那 zssh>ls //看一下有那些文件 zssh>sz 123.txt //上传本地机器的当前目录的123.txt到远程机器的当前目录 下载文件的话 #sz filename //在远程机器上,启动sz, 准备发送文件 看到一堆乱码 然后在 #ctrl+@ zssh > pwd //看看在那个目录,cd 切换到合适的目录 zssh > rz //接住对应的文件 我靠, 这个rz , sz的命令太难理解了. 还好有高手指点. 文件传输协议: ...

2018-03-08 · 5 min · 1017 words · -

jetty-maven-plugin, jetty maven plugin

jetty-maven-plugin, jetty maven plugin maven plugin <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.4.33.v20201020</version> <configuration> <stopKey>stop</stopKey> <stopPort>5599</stopPort> <webApp> <!-- <contextPath>/app0</contextPath> --> <contextPath>/</contextPath> <defaultsDescriptor>src/main/resources/webdefault.xml</defaultsDescriptor> </webApp> <scanIntervalSeconds>2</scanIntervalSeconds> [httpConnector](httpConnector) <port>8080</port> </httpConnector> </configuration> </plugin> webdefault.xml 可以去maven的本地仓库找到 .m2\repository\org\eclipse\jetty\jetty-webapp\9.4.20.v20190813 解压后在这里可以找到webdefault.xml jetty-webapp-9.4.20.v20190813\org\eclipse\jetty\webapp run mvn jetty:run mvnDebug jetty:run # 默认调试端口8000 debug - mvnDebug https://blog.wiloon.com/?p=15212 mvnDebug -suspend默认为n, https://www.eclipse.org/jetty/documentation/jetty-11/programming-guide/index.html#jetty-maven-plugin http://www.blogjava.net/fancydeepin/archive/2015/06/23/maven-jetty-plugin.html https://my.oschina.net/jackieyeah/blog/524556 https://stackoverflow.com/questions/7875002/setting-debug-configuration-for-mavenjettyeclipse

2018-03-06 · 1 min · 48 words · -

maven plugins, pluginManagement

maven plugins, pluginManagement https://www.jianshu.com/p/49acf1246eff 1.plugins和pluginManagement的区别概述 plugins 和 pluginManagement 的区别,和我们前面研究过的 dependencies 和 dependencyManagement 的区别是非常类似的。plugins 下的 plugin 是真实使用的,而 pluginManagement 下的 plugins 下的 plugin 则仅仅是一种声明,子项目中可以对 pluginManagement 下的 plugin 进行信息的选择、继承、覆盖等。 2.pluginManagement使用实战 假如存在两个项目,项目A为项目B的父项目,其关系通过pom文件的关系确定。项目A的父pom文件片段如下: org.apache.maven.plugins maven-source-plugin 2.1 true ...

2018-03-06 · 1 min · 59 words · -

ARM, X86/Atom, MIPS, PowerPC

ARM, X86/Atom, MIPS, PowerPC http://blog.csdn.net/wangjianno2/article/details/52140936 四大CPU体系结构ARM、X86/Atom、MIPS、PowerPC 转载 2016年08月07日 02:54:10 6375 RISC (reduced instruction set computer,精简指令集计算机) 是一种执行较少类型计算机指令的微处理器,起源于80年代的MIPS主机 (即RISC机) ,RISC机中采用的微处理器统称RISC处理器。这样一来,它能够以更快的速度执行操作 (每秒执行更多百万条指令,即MIPS) 。因为计算机执行每个指令类型都需要额外的晶体管和电路元件,计算机指令集越大就会使微处理器更复杂,执行操作也会更慢。 性能特点一: 由于指令集简化后,流水线以及常用指令均可用硬件执行; 性能特点二: 采用大量的寄存器,使大部分指令操作都在寄存器之间进行,提高了处理速度; 性能特点三: 采用缓存—主机—外存三级存储结构,使取数与存数指令分开执行,使处理器可以完成尽可能多的工作,且不因从存储器存取信息而放慢处理速度。 其中ARM/MIPS/PowerPC均是基于精简指令集机器处理器的架构;X86则是基于复杂指令集的架构,Atom是x86或者是x86指令集的精简版。 根据各种新闻,Android在支持各种处理器的现状: ARM+Android最早发展、完善的支持,主要在手机市场、上网本、智能等市场; X86+Android 有比较完善的发展。有atom+Android的上网本,且支持Atom+Android 和 Atom+Window7双系统; MIPS+Android目前在移植、完善过程中; Powpc+Android目前在移植、完善过程中。 1.ARM ARM架构,过去称作进阶精简指令集机器 (Advanced RISC Machine,更早称作: Acorn RISC Machine) ,是一个32位精简指令集 (RISC) 处理器架构,其广泛地使用在许多嵌入式系统设计。由于节能的特点,ARM处理器非常适用于行动通讯领域,符合其主要设计目标为低耗电的特性。 在今日,ARM家族占了所有32位嵌入式处理器75%的比例,使它成为占全世界最多数的32位架构之一。ARM处理器可以在很多消费性电子产品上看到,从可携式装置 (PDA、移动电话、多媒体播放器、掌上型电子游戏,和计算机) 到电脑外设 (硬盘、桌上型路由器) 甚至在导弹的弹载计算机等军用设施中都有他的存在。在此还有一些基于ARM设计的派生产品,重要产品还包括Marvell的XScale架构和德州仪器的OMAP系列。 优势: 价格低;能耗低; ARM 授权方式: ARM 公司本身并不靠自有的设计来制造或出售 CPU ,而是将处理器架构授权给有兴趣的厂家。ARM 提供了多样的授权条款,包括售价与散播性等项目。对于授权方来说,ARM 提供了 ARM 内核的整合硬件叙述,包含完整的软件开发工具 (编译器、debugger、SDK) ,以及针对内含 ARM CPU 硅芯片的销售权。对于无晶圆厂的授权方来说,其希望能将 ARM 内核整合到他们自行研发的芯片设计中,通常就仅针对取得一份生产就绪的智财核心技术 (IP Core) 认证。对这些客户来说,ARM 会释出所选的 ARM 核心的闸极电路图,连同抽象模拟模型和测试程式,以协助设计整合和验证。需求更多的客户,包括整合元件制造商 (IDM) 和晶圆厂家,就选择可合成的RTL (暂存器转移层级,如 Verilog) 形式来取得处理器的智财权 (IP) 。借着可整合的 RTL,客户就有能力能进行架构上的最佳化与加强。这个方式能让设计者完成额外的设计目标 (如高震荡频率、低能量耗损、指令集延伸等) 而不会受限于无法更动的电路图。虽然 ARM 并不授予授权方再次出售 ARM 架构本身,但授权方可以任意地出售制品 (如芯片元件、评估板、完整系统等) 。商用晶圆厂是特殊例子,因为他们不仅授予能出售包含 ARM 内核的硅晶成品,对其它客户来讲,他们通常也保留重制 ARM 内核的权利。 生产厂商: TI (德州仪器) /Samsung (三星) /Freescale (飞思卡尔) /Marvell (马维尔) /Nvidia (英伟达) ...

2018-03-03 · 3 min · 587 words · -

Import the Certificate as a Trusted Certificate

Import the Certificate as a Trusted Certificate keytool -import -alias stan -file StanSmith.cer -keystore exampleruthstore https://docs.oracle.com/javase/tutorial/security/toolfilex/rstep1.html

2018-02-28 · 1 min · 16 words · -

CIDR, IP 后面斜杠加数字

CIDR IP 后面斜杠加子网掩码 无类别域间路由(Classless Inter-Domain Routing、CIDR) 定义网段的几种方式 192.168.1.1/24 192.168.1.0/24 192.168.1.0/255.255.255.0 CIDR prefix CIDR prefix 是子网掩码(subnet mask)中 bit 是 1 的个数 例如: 255.255.255.0 的CIDR prefix是/24 255.255.255.0 => 11111111.11111111.11111111.0 http://blog.csdn.net/hzhsan/article/details/44100215 如: xx.xx.xx.2/24 xx.xx.xx.0/24 通俗一点就是, 斜杠后面的数字就表示子网掩码, 数字具体代表32位子网掩码 (二进制形式) 中前面的"1"的个数。 而且前面的"ip地址"也不一定是一个ip地址, 也可能是一个网络号 (末位是0) 。 通过后面数字可以将前面的网段进一步细划分成具体的子网。 所以 xx.xx.xx.2/24 ——>表示一个ip地址xx.xx.xx.2,24告诉了这个ip地址所对应的子网掩码。 xx.xx.xx.0/24 ——>表示一个网段,并且24告诉了当前具体的子网掩码。 其实这个就是用 CIDR 的形式表示的一个网段,或者说子网。 CIDR: 无类别域间路由选择,Classless and Subnet Address Extensions and Supernetting 我们知道确定一个子网需要知道主机地址和子网掩码,但用CIDR的形式,可以简单得到两个数值。举例说吧,192.168.0.0/24"就表示,这个网段的IP地址从192.168.0.1开始,到192.168.0.254结束 (192.168.0.0和192.168.0.255有特殊含义,不能用作IP地址) ;子网掩码是255.255.255.0。 上面的子网掩码怎么来的呢?其实关键就在"24"上。我们知道IP地址是四个十进制数组成的,相当于32位二进制。用CIDR表示形式,后一个数字将这32位进行了间隔 (以24为例) : 前24位用"1"表示,后面8位用0表示,得到一个二进制数: 11111111 11111111 11111111 00000000。将其转化为十进制,就是: 255.255.255.0了。 例如: 192.168.1.0/24 表示网段是192.168.1.0, 子网掩码是24位, 子网掩码为: 255.255.255.0, 用二进制表示为: 11111111 11111111 11111111 00000000 ,这里为什么是24呢,就是因为子网掩码里面的前面连续的"1"的个数为24个,一定要连续的才行。 ...

2018-02-27 · 1 min · 92 words · -