前言今天来介绍下TreeMap,TreeMap是基于红黑树结构实现的一种Map,要分析TreeMap的实现首先就要对红黑树有所了解。
构造图如下:
蓝色线条:继承
绿色线条:接口实现
正文TreeMap底层是基于红黑树(Red-Black tree)实现,所以在学习TreeMap之前我们先来了解下红黑树。
红黑树又称红-黑二叉树,它首先是一颗二叉树,它具体二叉树所有的特性。同时红黑树更是一颗自平衡的排序二叉树。
我们知道一颗基本的二叉树他们都需要满足一个基本性质–即树中的任何节点的值大于它的左子节点,且小于它的右子节点。按照这个基本性质使得树的检索效率大大提高。我们知道在生成二叉树的过...
1).方法传参中调用者传的对象与使用者得到的对象,指向的是同一个内存地址,所以修改的是同一个对象。(不做clone操作的情况下)例: 1.图中所有调用list对象的方法,引用的都是同一个list内存对象。 2.图中 ref2的user(从list中取出的)与main中的user1指向的是同一个对象,所以当调用完,返回main方法时,再修改user1仍然修改了list中的user对象的值。 3.图中ref2中的user如果是重新new出的话,返回到main方法时,再修改user1则不对list中user对象的值生效,因为他们指向的不是同一...
NGINX以高性能的负载均衡器,缓存,和web服务器闻名,驱动了全球超过 40% 最繁忙的网站。在大多数场景下,默认的 NGINX 和 Linux 设置可以很好的工作,但要达到最佳性能,有些时候必须做些调整。首先我们先了解其工作原理。
1. Nginx的模块与工作原理
Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(location是Nginx配置中的一个指令,用于URL匹配),而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。
Nginx的模块从结...
问题概览:
1.使用springBoot的 jdbc组件,启动时,不加载datasource,出问题 . 解决方案:更换成spring的 jdbc组件 (好像还报错)
解决方案:@SpringBootApplication(exclude={DataSourceAutoConfiguration.class}) 启动类增加注解属性
2.springBoot中不可用application.xml来命名spring配置文件,会引起冲突: 文档根元素 “beans” 必须匹配 DOCTYPE 根 “null”
3.springBoot中 spring的配置文件 会不加载??
解决方案...
linux 阿里阿里的CentOS 7+ 版本的系统 :wget http://download.redis.io/releases/redis-4.0.1.tar.gz
tar zxvf redis-4.0.1.tar.gz
cd redis-4.0.1
yum install -y tcl
make & make test (出错则换为:make MALLOC=libc
vi redis.cnf
修改为守护进程的方式运行:
daemonize yes
设置Redis 密码:
requirepass 密码
设置Redis 端口号:
port 9000
密码...
http://blog.csdn.net/zcyhappy1314/article/details/71270937
http://www.cnblogs.com/jiangkuan/p/6189136.html
http://www.jianshu.com/p/ece9ac8e2f81
综合选择RabbitMq
本篇内容大多总结自张开涛的《跟我学Shiro》原文地址:http://jinnianshilongnian.iteye.com/blog/2018936
我并没有全部看完,只是选择了一部分对我来说急需在项目中使用的知识加以学习。并且对于大多数第一次接触Shiro的同学来说,掌握这些也应该足够了。
一、架构
要学习如何使用Shiro必须先从它的架构谈起,作为一款安全框架Shiro的设计相当精妙。Shiro的应用不依赖任何容器,它也可以在JavaSE下使用。但是最常用的环境还是JavaEE。下面以用户登录为例:
(1)使用用户的登录信息创建令牌
1UsernamePasswordToken...
为什么使用springBoot
第一部分–第一章:
使用Selector 的非阻塞I/O总体来看,与阻塞I/O 模型相比,这种模型提供了更好的资源管理:
a、使用较少的线程便可以处理许多连接,因此也减少了内存管理和上下文切换所带来开销;
b、当没有I/O 操作需要处理的时候,线程也可以被用于其他任务。尽管已经有许多直接使用Java NIO API 的应用程序被构建了,但是要做到如此正确和安全并不容易。特别是,在高负载下可靠和高效地处理和调度I/O 操作是一项繁琐而且容易出错的任务,最好留给高性能的网络编程专家——Netty。
异步和可伸缩性之间的联系又是什么呢?
1.非阻塞网络调用使得我们可以不必等待一个操作的完成。完...