关系逻辑

权限设计

筅森魡賤 提交于 2019-11-26 21:44:16
前言: 权限往往是一个极其复杂的问题,但也可简单表述为这样的逻辑表达式:判断"Who对What(Which)进行How的操作"的逻辑表达式是否为真。针对不同的应用,需要根据项目的实际情况和具体架构,在维护性、灵活性、完整性等N多个方案之间比较权衡,选择符合的方案。g 目标: 直观,因为系统最终会由最终用户来维护,权限分配的直观和容易理解,显得比较重要,系统不辞劳苦的实现了组的继承,除了功能的必须,更主要的就是因为它足够直观。 简单,包括概念数量上的简单和意义上的简单还有功能上的简单。想用一个权限系统解决所有的权限问题是不现实的。设计中将常常变化的"定制"特点比较强的部分判断为业务逻辑,而将常常相同的"通用"特点比较强的部分判断为权限逻辑就是基于这样的思路。 扩展,采用可继承在扩展上的困难。的Group概念在支持权限以组方式定义的同时有效避免了重定义时 现状: 对于在企业环境中的访问控制方法,一般有三种: 1.自主型访问控制方法。目前在我国的大多数的信息系统中的访问控制模块中基本是借助于自主型访问控制方法中的访问控制列表(ACLs)。 2.强制型访问控制方法。用于多层次安全级别的军事应用。 3.基于角色的访问控制方法(RBAC)。是目前公认的解决大型企业的统一资源访问控制的有效方法。其显著的两大特征是:1.减小授权管理的复杂性,降低管理开销。2.灵活地支持企业的安全策略

物理CPU、CPU内核、逻辑CPU概念与查看方法

ぐ巨炮叔叔 提交于 2019-11-26 21:37:56
概念区分 1. 物理CPU 即主板插槽上(物理封装上)的CPU芯片个数。物理cpu数量等于不同physical id的个数。 查看命令: # cat /proc/cpuinfo | grep "physical id" | sort -u | wc -l // 物理CPU个数 2. CPU内核数(cpu cores) 即一颗物理CPU包含的内核数量。一般来说,物理CPU个数 X cpu cores = 逻辑CPU个数。如果不相等则表示支持超线程技术。 查看命令 : # cat /proc/cpuinfo | grep "core id " | sort -u | wc -l // CPU内核数 或: # cat /proc/cpuinfo | grep "cpu cores" | uniq 3. 逻辑CPU 一般情况,一颗物理CPU可以有多个物理内核,加上intel的超线程技术(HT, Hyper-Threading)能够把一个物理处理器(内核)在软件层变成两个逻辑处理器,可以使处理器在某一时刻,同步并行处理更多指令和数据(多个线程),当然了实际效能不可实现双倍提升,毕竟干活的核心只有一个。 查看命令: # cat /proc/cpuinfo | grep "processor" | sort -u | wc -l // 逻辑CPU个数(线程数) 关系 逻辑CPU数量 =

物理cpu和逻辑cpu

拜拜、爱过 提交于 2019-11-26 21:37:38
1 物理cpu 插槽里面实际插入的cpu的个数。 通过不重复的physical id可以获取实际的物理cpu的个数。 2 逻辑cpu cat /proc/info processor 1 processor 2 processor 3 ...... 这些是逻辑cpu。 3 逻辑cpu和物理cpu的对应关系 一个物理cpu对应多个处理单元,也就是多核。 所以,逻辑cpu个数=物理cpu个数*每个物理cpu的核数 比如,一台服务器上有2个物理cpu,每个物理cpu是6核的,那么逻辑cpu的个数就是2*6=12个。 4 cpu ht,即cpu超线程 如果开启了cpu ht的话,那么逻辑cpu就要在原来的基础上再乘以2。 来源: https://www.cnblogs.com/hustdc/p/9627156.html

第514篇--Interview Summary (WPF)

社会主义新天地 提交于 2019-11-26 21:36:56
WPF 面试基本问题 1 DP WPF 面试:(WPF) 提供了一组服务,这些服务可用于扩展公共语言运行时 (CLR) 属性的功能。这些服务通常统称为 WPF 属性系统。由 WPF属性系统支持的属性称为依赖项属性, 依赖项属性提供用来扩展属性功能的功能, 最常用的莫过于“数据绑定”功能. 依赖属性可支持WPF中的样式设置、数据绑定、继承、动画及默认值。依赖项属性是通过调用 Register 方法(或RegisterReadOnly)在 WPF 属性系统中注册,并通过 DependencyProperty 标识符标示属性。 依赖项属性只能由继承自 DependencyObject 类的类型使用,但 DependencyObject 在 WPF 类层次结构中的级别很高,因此,WPF 中的大多数可用类都支 持依赖项属性 什么时候用? 应用依赖属性的场景: 1. 希望可在样式中设置属性。 2. 希望属性支持数据绑定。 3. 希望可使用动态资源引用设置属性。 4. 希望从元素树中的父元素自动继承属性值。 比如:A的SizeChanged事件中添加处理图片B的方法。把图片A的Size赋给图片B. 用Binding一下可解决: imageB.DataContext = imageA; imageB.SetBinding(Image.WidthProperty, "Width"); imageB

权限系统概要

ぃ、小莉子 提交于 2019-11-26 21:30:16
权限往往是一个极其复杂的问题,但也可简单表述为这样的逻辑表达式:判断“Who对What(Which)进行How的操作”的逻辑表达式是否为真。针对不同的应用,需要根据项目的实际情况和具体架构,在维护性、灵活性、完整性等N多个方案之间比较权衡,选择符合的方案。 目标: 直观,因为系统最终会由最终用户来维护,权限分配的直观和容易理解,显得比较重要,系统不辞劳苦的实现了组的继承,除了功能的必须,更主要的就是因为它足够直观。 简单,包括概念数量上的简单和意义上的简单还有功能上的简单。想用一个权限系统解决所有的权限问题是不现实的。设计中将常常变化的“定制”特点比较强的部分判断为业务逻辑,而将常常相同的“通用”特点比较强的部分判断为权限逻辑就是基于这样的思路。 扩展,采用可继承在扩展上的困难。的Group概念在支持权限以组方式定义的同时有效避免了重定义时 现状: 对于在企业环境中的访问控制方法,一般有三种: 1.自主型访问控制方法。目前在我国的大多数的信息系统中的访问控制模块中基本是借助于自主型访问控制方法中的访问控制列表(ACLs)。 2.强制型访问控制方法。用于多层次安全级别的军事应用。 3.基于角色的访问控制方法(RBAC)。是目前公认的解决大型企业的统一资源访问控制的有效方法。其显著的两大特征是:1.减小授权管理的复杂性,降低管理开销。2.灵活地支持企业的安全策略,并对企业的变化有很大的

[转载] 你不得不知的Golang线程模型

送分小仙女□ 提交于 2019-11-26 20:01:22
原著:翟陆续(加多) 资深Java , 著Java并发编程之美 一、前言 本节我们来探讨Go的线程模型,首先我们先来回顾下常见的三种线程模型,然后在介绍Go中独特的线程模型。 二、三种线程模型 线程的并发执行是有操作系统来进行调度的,操作系统一般都都在内核提供对线程的支持。而我们在使用高级语言编写程序时候创建的线程是用户线程,那么用户线程与内核线程是什么关系那?其实下面将要讲解的三种线程模型就是根据用户线程与内核线程关系的不同而划分的。 2.1 一对一模型 这种线程模型下用户线程与内核线程是一一对应的,当从程序入口点(比如main函数)启动后,操作系统就创建了一个进程,这个main函数所在的线程就是主线程,在main函数内当我们使用高级语言创建一个用户线程的时候,其实对应创建了一个内核线程,如下图: 这种线程模型优点是在多处理器上,多个线程可以真正实现并行运行,并且当一个线程由于网络IO等原因被阻塞时候,其他的线程不受影响。 缺点是由于一般操作系统会限制内核线程的个数,所以用户线程的个数会受到限制。另外由于用户线程与系统线程一一对应,当用户线程比如执行Io操作(执行系统调用)时候,需要从用户态的用户程序的执行切换到内核态执行内核操作,然后等执行完毕后又会从内核态切换到用户态执行用户程序,而这个切换操作开销是相对比较大的。

如何提高逻辑思维能力

混江龙づ霸主 提交于 2019-11-26 19:36:27
转载 作者: 南北12345678 出处:https://www.cnblogs.com/mike-mei/ 如何提高逻辑思维能力 《教父》中有这样一句台词:“花半秒钟就看透事物本质的人,和花一辈子都看不清事物本质的人,注定是截然不同的命运。”只有能够快速抓住事物本质的人,才能让自己脱颖而出。 要抓住事物的本质,这关乎到一个人的逻辑能力。 那么什么是逻辑呢? 维基百科给出的定义是:“ 逻辑又称理则、论理、推理、推论,是有效推论的哲学研究。”逻辑思维是思维的基础和核心。 逻辑的重要性 恩格斯指出 :“形式逻辑首先是探寻新结果的方法,由已知到未知的方法 。” 我们知道,哈维的血液循环学说 、门捷列夫的元素周期律都是逻辑思维的结晶 ,20 世纪最伟大的创新一 一 爱因斯坦的相对论同样是逻辑思维的成果。 在中国高等教育界,“钱学森之问”激荡着无数人的心灵。“为什么中国总是冒不出杰出人才?”很多人都在思考,都在寻找答案。 钱学森自己是怎样 回答的呢? 他认为,中国没有一所大学是按照培养科技领军人才的“模式”举办的。 那么,什么是培养科技领军人才的“模式”呢? 他说 :“这种模式就是逻辑思维和形象思维的训练并重实施的教育”。 我们需要擅长的两种逻辑方法 常用的逻辑方法有两种,归纳和演绎,这是两条基本的认知事物和思考的逻辑法则。我们不仅要学会,而且要擅长。 简单通俗来说:归纳

[转]浅谈命令查询职责分离(CQRS)模式

戏子无情 提交于 2019-11-26 19:32:10
在常用的三层架构中,通常都是通过数据访问层来修改或者查询数据,一般修改和查询使用的是相同的实体。在一些业务逻辑简单的系统中可能没有什么问题,但是随着系统逻辑变得复杂,用户增多,这种设计就会出现一些性能问题。虽然在DB上可以做一些读写分离的设计,但在业务上如果在读写方面混合在一起的话,仍然会出现一些问题。 本文介绍了命令查询职责分离模式(Command Query Responsibility Segregation,CQRS),该模式从业务上分离修改 (Command,增,删,改,会对系统状态进行修改)和查询(Query,查,不会对系统状态进行修改)的行为。从而使得逻辑更加清晰,便于对不同部分进行针对性的优化。文章首先简要介绍了传统的CRUD方式存在的问题,接着介绍了CQRS模式,最后以一个简单的在线日记系统演示了如何实现CQRS模式。要谈到读写操作,首先我们来看传统的CRUD的问题。 一 CRUD方式的问题 在以前的管理系统中,命令(Command,通常用来更新数据,操作DB)和查询(Query)通常使用的是在数据访问层中Repository中的实体对象(这些对象是对DB中表的映射),这些实体有可能是SQLServer中的一行数据或者多个表。 通常对DB执行的增,删,改,查(CRUD)都是针对的系统的实体对象。如通过数据访问层获取数据,然后通过数据传输对象DTO传给表现层。或者

文件的逻辑与物理结构

大城市里の小女人 提交于 2019-11-26 19:24:31
文件的逻辑与物理结构。首先看第一个,这是理解后一个概念的关键。摸机子的人都知道,文件按其逻辑结构可以分为 有结构的文件,这是由若干个记录所构成的,又称为记录式文件;无结构文件,这是直接由字符序列所构成的文件,故又称为流式文件,但是流式文件是记录式文件的特例,即其每个记录中只含有一个字符。所以对于文件,以下只看成有结构的,即由记录构成的。那么现在,我们上升一个层次,什么是文件的逻辑结构?从哲学的角度说逻辑结构,其实说穿了就是相互之间的关系,那对于文件的逻辑结构就是记录之间的相互关系。再上升一个层次就是每个记录在文件中的位置。我们也笼统的称之为顺序,那么如果你要写一个文件,一定有个潜意识的排列顺序(对于记录文件,就是第一个记录是什么,第二个记录是什么,…;对于流式文件也一定有个字符序,总之这样才能有意义),那么这个排列顺序就是逻辑结构。这些顺序是怎么确定的,一般有顺序与索引两种,由这两种方式来决定记录在文件中的位置。逻辑文件的形式主要有 1) 顺序文件,其记录是按某种顺序排列所形成的,记录在文件中的位置由某种顺序决定,第一个位置上的记录,第二个位置上的记录,…,由某种顺序来决定记录在文件中的位置。 2) 索引文件,记录在文件中的位置由索引表来指向,其实是按某个记录键来确定位置的,即第一个位置的记录在哪,第二个位置的记录在哪....。由索引表来决定这些位置上都是哪些记录。 3)

面向对象:异常处理

被刻印的时光 ゝ 提交于 2019-11-26 17:59:35
一,异常和错误 part1:程序中难免出现错误,而错误分成两种 1.语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) #语法错误示范一 if #语法错误示范二 def test: pass #语法错误示范三 print(haha 语法错误 语法错误 2.逻辑错误(逻辑错误) #用户输入不完整(比如输入为空)或者输入非法(输入不是数字) num=input(">>: ") int(num) #无法完成计算 res1=1/0 res2=1+'str' 逻辑错误 part2:什么是异常 异常就是程序运行时发生错误的信号,在python中,错误触发的异常如下 part3:python中的异常种类 在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,不同的类对象标识不同的异常,一个异常标识一种错误 # 触发IndexError l=['egon','aa'] l[3] # 触发KeyError dic={'name':'egon'} dic['age'] #触发ValueError s='hello' int(s) 错误举例 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x IOError 输入/输出异常;基本上是无法打开文件 ImportError 无法引入模块或包