美文网首页
2019-04-19

2019-04-19

作者: 努力努力再努力_b6d1 | 来源:发表于2019-04-19 16:55 被阅读0次

    每天看一张shiro,一口气看完太难https://jinnianshilongnian.iteye.com/blog/2018398
    每天一点
    https://gitchat.csdn.net/activity/5c6cf6044bb44360f3370255?seriesId=5c7f8f900043541716772f2a&utm_source=csdn_toolbar
    明天继续看
    https://blog.csdn.net/fu770727044/article/details/85682926
    实现服务器启动默认开启阿波罗
    Springcloud 阿波罗原理
    info debug日志级别,为什么debug,info能打印

    shiro第二章
    即在应用中,谁能证明他就是本人。(身份证,用户名/密码)
    在shiro中,用户需要提供principals 身份和 credentials 证明 给shiro,从而应用能验证用户身份。
    身份:主体的标识属性,可以是邮箱,用户名
    证明:密码/数字证书
    Subject Realm : 主体 验证主体的数据源

    身份认证流程

    image

    流程如下:

    1、首先调用Subject.login(token)进行登录,其会自动委托给Security Manager,调用之前必须通过SecurityUtils. setSecurityManager()设置;

    2、SecurityManager负责真正的身份验证逻辑;它会委托给Authenticator进行身份验证;

    3、Authenticator才是真正的身份验证者,Shiro API中核心的身份认证入口点,此处可以自定义插入自己的实现;

    4、Authenticator可能会委托给相应的AuthenticationStrategy进行多Realm身份验证,默认ModularRealmAuthenticator会调用AuthenticationStrategy进行多Realm身份验证;

    5、Authenticator会把相应的token传入Realm,从Realm获取身份验证信息,如果没有返回/抛出异常表示身份验证失败了。此处可以配置多个Realm,将按照相应的顺序及策略进行访问。

    Realm:域,Shiro从从Realm获取安全数据(如用户、角色、权限),就是说SecurityManager要验证用户身份,那么它需要从Realm获取相应的用户进行比较以确定用户身份是否合法;也需要从Realm得到用户相应的角色/权限进行验证用户是否能进行操作;可以把Realm看成DataSource,即安全数据源。如我们之前的ini配置方式将使用org.apache.shiro.realm.text.IniRealm。

    Shiro默认提供的Realm:
    一般继承AuthorizingRealm(授权)即可,其继承了AuthenticatingRealm(即身份验证),而且也间接继承了CachingRealm(带有缓存实现)
    org.apache.shiro.realm.text.IniRealm:[users]部分指定用户名/密码及其角色;[roles]部分指定角色即权限信息;

    org.apache.shiro.realm.text.PropertiesRealm: user.username=password,role1,role2指定用户名/密码及其角色;role.role1=permission1,permission2指定角色及权限信息;

    org.apache.shiro.realm.jdbc.JdbcRealm:通过sql查询相应的信息,如“select password from users where username = ?”获取用户密码,“select password, password_salt from users where username = ?”获取用户密码及盐;“select role_name from user_roles where username = ?”获取用户角色;“select permission from roles_permissions where role_name = ?”获取角色对应的权限信息;也可以调用相应的api进行自定义sql;
    2.6 Authenticator及AuthenticationStrategy
    Authenticator的职责是验证用户帐号,是Shiro API中身份验证核心的入口点

    final的应用场景?
    1.修饰变量:一般为static final


    image.png

    2.修饰方法
    修饰方法之后,比非final方法要快(快在哪呢?),因为在编译时已经静态绑定了,不需要在动态绑定
    3.修饰类
    当一个类被final修饰之后,表示该类是完整的,不能被继承。

    final的优点:
    final关键字提高了性能。JVM和Java应用都会缓存final变量。
    final变量可以在多线程环境下共享,而不需要额外的同步开销
    使用final关键字,JVM会对方法,变量,类进行优化
    不可变类:他的对象一旦被创建了就不能被更改了,String是不可变类的代表,好处有:对象只可读,在多线程环境之下安全的共享,不用额外同步等
    总而言之就是 快,多线程安全

    Java中Math. round()方法干什么的?
    返回值为long,如果是Math. round(1f)返回的就是int
    Java八种基本数据类型:
    四种整形:byte short int long
    两种浮点型 float double
    一种字符类型 char
    一种布尔类型 boolean
    8位:Byte(字节型) 16位:short(短整型)、char(字符型) 32位:int(整型)、float(单精度型/浮点型) 64位:long(长整型)、double(双精度型) 最后一个:boolean(布尔类型

    阿波罗为什么能实时修改内存参数?
    1.因为客户端和服务端保持一个长连接(为了省内存,性能,宽带的耗损 用的长轮训)
    2.是5分钟客户端 就会去服务端访问一次 接口,一般都是304(客户端发送给服务端的请求接收到了,但是文档信息没有修改的时候返回的状态码)


    image.png

    晚上 申请订阅号和2个小程序 实现统一登录 和模板发送消息
    安装单车,用15分钟(不要太多)


    image.png

    https://blog.csdn.net/huaweitman/article/details/64128427
    看世纪高通的面试题
    wxjava原理总结

    相关文章

      网友评论

          本文标题:2019-04-19

          本文链接:https://www.haomeiwen.com/subject/yhvfgqtx.html