搜索到与相关的文章
编程技术

第一章 Shiro简介——《跟我学Shiro》

目录贴:跟我学Shiro目录贴1.1简介ApacheShiro是Java的一个安全框架。目前,使用ApacheShiro的人越来越多,因为它相当简单,对比SpringSecurity,可能没有SpringSecurity做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了。对于它俩到底哪个好,这个不必纠结,能更简单的解决项目问题就好了。本教程只介绍基本的Shiro使用,不会过多分析源码等,重在使用。Shiro可以非

系统 2019-08-29 22:00:48 1995

编程技术

构建亿级前端读服务

从入职京东到现在,做读服务已经一年多的时间了,经历了各种亿级到百亿级的读服务;这段时间也进行了一些新的读服务架构尝试,从架构到代码的编写,各个环节都进行了反复尝试,压测并进行调优,希望得到一个自己满意的读服务架构。一些设计原则无状态数据闭环缓存银弹并发化降级开关限流切流量其他无状态如果设计的应用是无状态的,那么应用就可以水平扩展,当然实际生产环境可能是这样子的:应用无状态,配置文件有状态。比如不同的机房需要读取不同的数据源,此时就需要通过配置文件指定。数据

系统 2019-08-29 22:00:35 1995

编程技术

【查找结构 2】二叉查找树 [BST]

当所有的静态查找结构添加和删除一个数据的时候,整个结构都需要重建。这对于常常需要在查找过程中动态改变数据而言,是灾难性的。因此人们就必须去寻找高效的动态查找结构,我们在这讨论一个非常常用的动态查找树——二叉查找树。二叉查找树的特点下面的图就是两棵二叉查找树,我们可以总结一下他的特点:(1)若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值(2)若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值(3)它的左、右子树也分别为二叉查找树我们中

系统 2019-08-29 21:59:55 1995

编程技术

JVM垃圾回收机制总结(2) :基本算法概述

1、引用计数收集器(ReferenceCounting)引用计数是垃圾收集的早期策略。在这种方法中,堆中每一个对象都有一个引用计数。一个对象被创建了,并且指向该对象的引用被分配给一个变量,这个对象的引用计数被置为1。当任何其他变量被赋值为对这个对象的引用时,计数加1。当一个对象的引用超过了生存期或者被设置一个新的值时,对象的引用计数减1。任何引用计数为0的对象可以被当作垃圾收集。当一个对象被垃圾收集的时候,它引用的任何对象计数值减1。在这种方法中,一个对象

系统 2019-08-29 21:59:34 1995

编程技术

Hibernate中的Criteria条件查询

CriteriaQuery通过面向对象化的设计,将数据查询条件封装为一个对象。简单来讲,CriteriaQuery可以看作是传统SQL的对象化表示,如:Criteriacriteria=session.createCriteria(User.class);criteria.add(Expression.eq("name","Erica");criteria.add(Expression.eq("sex",newInteger(1)));这里的criteri

系统 2019-08-12 09:30:03 1995

Python

Python 字典与字符串的互转实例

字典转换为字符串if__name__=='__main__':a={'a':1,'b':2,'c':3}b=str(a)print(type(b))输出结果为:---------------------------------------------------------------字符串转换为字典if__name__=='__main__':a="{'a':1,'b':2,'c':3}"b=eval(a)print(type(b))输出结果为:以上这篇

系统 2019-09-27 17:57:02 1994

Python

python3 property装饰器实现原理与用法示例

本文实例讲述了python3property装饰器实现原理与用法。分享给大家供大家参考,具体如下:学习python的同学,慢慢的都会接触到装饰器,装饰器在python里是功能强大的语法。装饰器配合python的魔法方法,能实现很多意想不到的功能。废话不多说,如果你已经掌握了闭包的原理,代码的逻辑还是可以看明白的,咱们直接进入正题。property的意义@property把一个类的getter方法变成属性,如果还有setter方法,就在setter方法前面加

系统 2019-09-27 17:55:44 1994

Python

python中 * 的用法详解

1、表示乘号2、表示倍数,例如:defT(msg,time=1):print((msg+'')*time)T('hi',3)打印结果(打印3次):hihihi3、单个*(1)、如:*parameter是用来接受任意多个参数并将其放在一个元组中。>>>defdemo(*p):print(p)>>>demo(1,2,3)(1,2,3)(2)、函数在调用多个参数时,在列表、元组、集合、字典及其他可迭代对象作为实参,并在前面加*如*(1,2,3)解释器将自动进行解

系统 2019-09-27 17:55:37 1994

Python

Python:MD5加密和文件生成MD5值

importhashlibclassMd5_enc():def__init__(self,key="cxj"):self.key=keyself.maker=hashlib.md5()defmd5_str(self,message):self.maker.update(bytes(self.key,encoding="utf-8"))self.maker.update(bytes(message,encoding="utf-8"))rel=self.mak

系统 2019-09-27 17:55:15 1994

Python

解决python3在anaconda下安装caffe失败的问题

Python跟Python3完全就是两种语言1、importcaffeFAILED环境为Ubuntu16cuda8.0NVIDIA361.77Anaconda2。昨天莫名其妙Caffe不能用了:>>>importcaffeTraceback(mostrecentcalllast):File"",line1,inFile"/home/duchengyao/project/caffe/python/caffe/__init__.py",line1,infrom

系统 2019-09-27 17:55:11 1994