Java基础认知--权限管理

所谓“万变不离其宗”,“宗”即本,本质。不管如何错综变化只要抓住本质,就能拨开云雾。这句话反过来也可以这样说,只要摸透本质就可幻化无穷。上层建筑要想建的高建的漂亮,底层必须牢固可靠。所以打好底层能力是能爬的高的关键。这里我们不提智商,性格,思维模式,沟通表达啊这些底层,我们不说那些抽象宏观的东西,这里我们聚焦于一些具体的技术。学技术也一样,先弄懂本质基础,才能玩的溜。基础需要不断的巩固加强,此系列的文章我会写一些自己对Java的基础知识的理解认知。

此篇的主题为Java的权限管理。

首先一个事物存在必定有存在的理由,咱们先要问一个问题,为什么要设置权限管理?回答这样的问题思路也简单,所谓“成年人只看利弊,小孩儿才分对错”,只要看这么做有什么好处就行。让我们先把关于权限的修饰符一一列出。

修饰符 可修饰的成员 权限
private 域,方法 仅类内可见
default 域,方法,类 同包类可见
protected 域,方法 同包类,包外子类可见
public 域,方法,类 所有可见

我们举个例子来解释好处,下面是一个可以提供给int数组排序服务的ArraySort类:

public class ArraySort {
        public int[] Sort(int[] arr){
            return bubble_sort(arr);
        }
    private  int[] bubble_sort(int[] arr) {
        int arr_len = arr.length;
        byte flag;
        for (int i = 1; i <= arr_len - 1; i++) {
            flag = 1;
            for (int j = 0; j < arr_len - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    swap(arr, j, j + 1);
                    flag = 0;
                }
            }
            if(flag == 1) {
                break;
            }
        }
        return arr;
    }
      private  void swap(int[] arr, int i, int j) {
        int tmp = arr[i];
        arr[i] = arr[j];
        arr[j] = tmp;
    }
}

既然这个类只提供排序服务,那么我就只开放Sort(int[] arr)这个方法就好,其他的对使用者没用,都开放了也显繁杂会给使用者造成烦扰,所有其他方法我都用private去修饰了,此乃权限修饰的好处一。有一天我在回过头来研究我的排序的算法,发现这个冒泡排序时间复杂度高,不是个好算法,于是我就想改成归并算法。那么此时我就可以直接在此类中就行修改,修改后在暴露给外界的Sort方法中直接调用归并方法即可,这样对于使用者来说是无感的,但是如果我把此类中private修饰符都改成了public,那么如果有使用者使用了swap()和bubble_sort()方法,当我进行算法改进的时候这些方法自然要改或删,那么使用者在使用这些方法的时候就会找不到了或者方法的逻辑变了,这样可能导致程序报错,耗费开发人员的精力。当然更改算法可以直接增加一个公共方法不就好了,保留之前的代码,大家不必细究此例,我只是借此例子做修饰符的说明,大家理解修饰符的好处即可。所以大家应该尽量把不必要暴露的成员,方法设成private。

再说default和protected修饰符,再举个例子,如果你跟另一个团队成员在共同开发一个功能包,而他要用你开发的某个方法,这时就可以用default修饰,这样对包外的类就不会开放,而跟你开发同一个功能包的人也能用。这时假设另一个在开发另一个包的人也想用你写的一个方法,那就可以用protected修饰,这样他只要继承你写的这个类就可以用到,也不会过度暴露。

借用《Java编程思想》中的一句话,权限修饰符描述的是类库创建者和该类库的外部使用者的关系,大家明白了这句话,这些权限修饰符也就很好理解了。

今天是新年第一天,也是进入2000年来第三个十年的开始,不管以前种种,希望大家可以满怀希望,信心迎接新的一年,新年快乐!

原文地址:https://www.cnblogs.com/heisenburg/p/12127752.html

时间: 2024-11-09 03:05:23

Java基础认知--权限管理的相关文章

java基础---JVM内存管理以及内存运行机制学习总结

自己从网上搜资料拼接了一张JVM内存图:如下图所示: 我们思考几个问题: 1.jVM是怎么运行的? 2.JVM运行时内存是怎么分配的? 3.我们写的java代码(类,对象,方法,常量,变量等等)最终存放在哪个区? VM运行时数据区域: 1.程序计数器(program Counter Register):   是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器.在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的 方式去实 现),字节码解释器工作时就是通过改

java web简单权限管理设计

一套最基本的权限管理包括用户.角色.资源. 数据库设计 我的设计如下: 用户:user 角色:role 用户-角色:user_role 资源:resource(包括上级菜单.子菜单.按钮等资源) 角色-资源:role_resource 标准的权限管理系统设计为以上5张表. 注:用户.用户-角色我就不做说明了,这两个是很简单的两块,用户的crud,以及为用户分配角色(多对多的关系)稍微琢磨一下就清楚了,下面都是针对为角色分配权限的实现 后台实现 展示层采用ztree树 <%@ page conte

linux基础操作----权限管理

linux的拥有这强大的权限操作. 我们能够简单的对linux权限管理进行分类: 权限本身有: 读 read. 写 write. 运行 execute 权限针对目标: 文件. 文件夹文件夹 权限针对用户: 主人 user. 同组 group. 其它组 other 我们如今举个样例分别对上述进行解释: 当前用户是zhoudong 用于文件doublegun.txt zhoudong(music) rwx (主人权限:读/写/运行) doublegun.txt xueyou(music) rw- (

Linux基础之权限管理

权限管理: ls -l rwxrwxrwx: 左三位:定义user(owner)的权限 中三位:定义group的权限: 右三位:定义other的权限 进程安全上下文: 进程对文件的访问权限应用模型: 进程的属主与文件的属主是否相同:如果相同,则应用属主权限: 否则,则检查进程的属主是否属于文件的属组:如果是,则应用属组权限: 否则,就只能应用other的权限: 权限: r:readable, 读 w:writable, 写 x:excutable,执行 文件: r:可获取文件的数据: w: 可修

JAVA 基础 访问控制权限

包(package) package的作用 当编写一个JAVA源码文件时,此文件通常被称为编译单元.每个编译单元都必须有一个后缀名 .java . 而在编译单元中可以有一个 public 类,该类的名称必须和文件的名称相同.文件中允许有其他类,但是不能是public类. 当编译一个 .java 文件时,文件中的每个类都会有一个后缀为 .class 的输出文件,文件名和类名相同. Java可运行程序是一组可以打包压缩为一个Java文档文件(JAR,使用Java的jar文档生成器)的.class文件

Java基础之内存管理原理及内存区域详解

一.概述 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干不同的数据区域,这些区域都有各自的用途以及创建和销毁的时间.Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如下图所示: 下面就每一个区域进行阐述. 二.运行时数据区域 程序计数器 程序计数器,可以看做是当前线程所执行的字节码的行号指示器.在虚拟机的概念模型里,字节码解释器工作就是通过改变程序计数器的值来选择下一条需要执行的字节码指令,分支.循环.跳转.异常处理.线程恢复等基础功能都要依赖这个计数器来完成.

Java中的权限管理

java中有四个权限,分别为private,protected,default,public,不写即为default,每个权限分别为如下表格: private default protected public 本类可访问 是 是 是 是 本包非本类可访问 否 是 是 是 非本包的子类可访问 否 否 是 是 非本包的类 否 否 否 是 另外类成员的权限不得大于类的权限,如果大于,以类的权限为准.即如下的一个类: class Test{     public int i=0;     public 

Exchange 2013权限管理

一  定义 Role Based Access Control (RBAC) ,是用于 Microsoft Exchange Server 2013 的权限模型.角色分为两种类型:管理角色:可以管理 Exchange 组织的用户或组.最终用户角色:可以管理其自己的邮箱及其拥有的通讯组的用户.角色组,使用角色组可以向管理角色授予权限.角色分配策略,为角色提供不同级别的权限.作用域,是对角色分配产生影响的作用域. 二  关系图 若想更形象的理解Exchange各组件之间的关系,可以参考下图. 2.1

【基于url权限管理 shiro(一)】--基础

只要有用户参与的系统一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源.权限管理包括用户认证和授权两部分.   用户认证 1.概念 用户认证,用户去访问系统,系统要验证用户身份的合法性.最常用的用户身份验证的方法:1.用户名密码方式.2.指纹打卡机.3.基于证书验证方法..系统验证用户身份合法,用户方可访问系统的资源. 2.用户认证流程   3.关键对象 subject:主体,理解为用户,可能是程序,都要去访问系统的资源,系