- 浏览: 52494 次
- 性别:
- 来自: 北京
最新评论
文章列表
1. HashMap的数据结构
数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。
数组
数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;
链表
链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。
题外话:看到一篇不错的从mysql迁移数据到redis的解决方案,特此记录一下。
做开发的同学都知道,一旦设计到底层存储优化,数据结构甚至数据库的变更,通常都会进行数据迁移的工作。如果系统运行时间过长,数据迁移的数量可能非常庞大。这时候,如何进行高效的数据迁移,实际也是上线质量的直接影响因素之一。
下面内容是转载的一个小技巧(原文),无法适用于各种变化的场景,仅供大家参考。
场景是从MySQL中将数据导入到Redis
ServiceLoader与ClassLoader是Java中2个即相互区别又相互联系的加载器.JVM利用ClassLoader将类载入内存,这是一个类声明周期的第一步(一个java类的完整的生命周期会经历加载、连接、初始化、使用、和卸载五个阶段,当然也有在加载或者连接之后没有被初始化就直接被使用的情况)。详情请参阅:详解Java类的生命周期
那ServiceLoader又是什么呢?ServiceLoader:一个简单的服务提供者加载设施。服务是一个熟知的接口和类(通常为抽象类)集合。服务提供者是服务的特定实现。提供者中的类通常实现接口,并子类化在服务本身中定义的子类。服务提供者可以以 ...
- 2015-09-10 12:34
- 浏览 629
- 评论(0)
看到公司的项目代码中,在META-INF下service中定义了一些文件。文件名都是以全限定类名的方式命名的,而且没每个文件里的内容也是一堆全限定类名的值。搞不懂这些是什么用途,遂百度了一下
看到了一篇介绍java中spi的博客链接,该博客中对于java的spi机制做了一些介绍,博客链接附上:点击打开链接
传统的应用中,我们对于一个接口有多个实现类。每一个实现类我们在使用的时候,都是动态去调用的。如果是基于java的spi,我们可以通过在工程的META-INF的service文件夹下创建基于接口的全限定类名的文件,文件内容是对于这个接口提供的多个实现类,内容的格式是一个实 ...
- 2015-09-10 11:31
- 浏览 643
- 评论(0)
采用分布式系统架构是由于业务需求决定的,若系统要求具备如下特性,便可考虑采用分布式架构来实现:
1.数据存储的分区容错,冗余
2.应用的大访问、高性能要求
3.应用的高可用要求,故障转移
分布式系统遵循几个基本原则
1.CAP原理
CAP Theorem,CAP原理中,有三个要素:
- 2015-09-10 09:36
- 浏览 672
- 评论(0)
1.redis现存的数据结构二进制安全的 字符串 string二进制安全的 字符串列表 list of string二进制安全的 字符串集合 set of string,换言之:它是一组无重复未排序的element。可以把它看成Ruby中的 hash–其key等于element,value都等于’true‘。有序集合sorted set of string,类似于集合set,但其中每个元素都和一个浮点数score(评分)关联。element根据score排序。可以把它看成Ruby中的 hash–其key等于element,value等于score,但元素总是按score的顺序排列,无需额外的排序 ...
- 2015-09-09 21:15
- 浏览 494
- 评论(0)
Redis - 分区
分区是一种将数据分成多个Redis的情况下,让每一个实例将只包含你的键字的子集的过程。
分区的好处
它允许更大的数据库,使用的多台计算机的存储器的总和。如果不分区,一台计算机的内存可支数量 ...
- 2015-09-09 16:53
- 浏览 448
- 评论(0)
Redis - 订阅
Redis的订阅实现了邮件系统,发送者(在Redis的术语中被称为发布者)发送的邮件,而接收器(用户)接收它们。由该消息传送的链路被称为通道。
在Redis客户端可以订阅任何数目的通道。
示例
以下举例说明如何发布用户的概念工作。在下面的例子给出一个客户端订阅一个通道名为redisChat
- 2015-09-09 15:44
- 浏览 402
- 评论(0)
Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案。
Redis 优势
异常快速:Redis的速度非常快,每秒能执行约11万集合,每秒约81000+条记录。
支持丰富的数据类型:Redis支持最大多数开发人员已经知道像列表,集合,有序集合,散列数据类型。这使得它非常容易解决各种各样的问题,因为我们知道哪些问题是可以处理通过它的数据类型更好。
- 2015-09-09 09:42
- 浏览 370
- 评论(0)
数据处理大致可以分成两大类: 联机事务处理 OLTP( on-line transactionprocessing)、 联机分析处理 OLAP( On-Line Analytical Processing)。
( 1) OLTP 是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。 OLTP 系统强调数据库内存效率,强调内存各种指标的命令率,强调绑定变量,强调并发操作;
( 2) OLAP 是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。 OLAP 系统则强调数据分析,强调 SQL 执行市场,强调磁盘 I/O,强调分区等。
...
- 2015-07-06 17:16
- 浏览 523
- 评论(0)
今天下午,搭建公司项目的测试环境。要在本地搞两套tomcat应用服务器,分别部署不同的应用程序。通常我们的做法就是修改tomcat安装目录下conf下的server.xml配置文件中的端口号,以便部署不同的应用。不会造成端口冲突。
可就在更改完相应的端口号之后,部署了应用程序。服务可以正常启动,但是我集成在Eclipse中的tomcat确启动不起来了。我想,我把相应的端口号,都改过了啊!为什么还是不行呢???
这里就记录一下,如果你也遇到和我一样的问题,请关注下面的配置细节(其实也没什么难的):
就是在startup。bat中,在文件的头两行加入一下连段代码就 ...
- 2015-04-08 17:57
- 浏览 484
- 评论(0)
转载自:点击打卡
mysql主从复制
(超简单)
怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下:
1、主从服务器分别作以下操作:
1.1、版本一致
1.2、初始化表,并在后台启动mysql
1.3、修改root的密码2、修改主服务器master:
#vi /etc/my.cnf
[mysqld]
- 2015-03-05 18:48
- 浏览 363
- 评论(0)
作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从。我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水平的J ...
- 2015-02-03 13:25
- 浏览 500
- 评论(0)
转载来自:点击打开链接
要想在java领域成为大牛,除了不断进行项目实战以外,还要不断的进行进修和学习,以下将本人学习java多年使用的好书和一些好的视频推荐给大家,这些书和视频都是本人在网络找了很久,后来又经过实践证明的好书和视频。希望对大家学习java有帮助
首先,是书的推荐:
1 学习java,java基础,
1.0入门:Head First Java(中文版)这本书,我没看过,但是在当当网的评价是5颗星,而且广受赞誉,值得一看啊。据说非常适合入门。链接:http://product.dangdang.com/product.aspx?product_ ...
- 2015-02-03 12:07
- 浏览 470
- 评论(0)
转载自:Java程序性能优化Tip
本博客是阅读<java time and space performance tips>这本小书后整理的读书笔记性质博客,增加了几个测试代码,代码可以在此下载:java时空间性能优化测试代码,文件StopWatch是一个秒表计时工具类,它的代码在文末。
1. 时间优化
1.1标准代码优化
a.将循环不变量的计算移出循环
我写了一个测试例子如下:
- 2015-02-02 14:30
- 浏览 312
- 评论(0)