- 博客(13)
- 资源 (3)
- 收藏
- 关注
原创 java HashMap&ConcurrentHashMap
HashMap是我们非常常用的数据结构,由数组和链表组合构成的数据结构。大概如下,数组里面每个地方都存了Key-Value这样的实例,在Java7叫Entry在Java8中叫Node。HashMap的默认初始化长度16,在使用是2的幂的数字的时候,Length-1的值是所有二进制位全为1,这种情况下,index的结果等同于HashCode后几位的值。只要输入的HashCode本身分布均...
2020-03-27 12:24:23 204
原创 设计与开发应用服务器--相关技术
服务器的设计与开发涉及到诸多技术和问题,归纳一下大致可以分为以下几种: 服务器启动和接收数据过程 多线程策略 NIO 长连接 同步与异步 配置化支持 责任链模式 集群与负载均衡 数据包设计 服务端连接协议 客户端连接技术服务器启动和数据请求过程各种服务器所提供的功能和实现机制都不尽相同,但在启动和数据...
2020-03-27 08:52:08 219
原创 java future模式
Future介绍用过Java并发包的朋友或许对Future (interface) 已经比较熟悉了,其实Future 本身是一种被广泛运用的并发设计模式,可在很大程度上简化需要数据流同步的并发应用开发。Future模式可以简单的看成是 Proxy 模式 与 Thread-Per-Message 模式 的结合,在Proxy模式中,用一个Proxy来代替真正的目标(Subject)生成,目...
2020-03-27 08:45:03 119
原创 java难度大算法
题目如下:用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。static int[] bits = new int[] { 1, 2, 3, 4, 5 };/*** @param args*/public static void main(String[] ar...
2020-03-27 08:36:45 582
原创 Top K
1. 问题描述在大规模数据处理中,常遇到的一类问题是,在海量数据中找出出现频率最高的前K个数,或者从海量数据中找出最大的前K个数,这类问题通常称为“top K”问题,如:在搜索引擎中,统计搜索最热门的10个查询词;在歌曲库中统计下载率最高的前10首歌等等。2. 当前解决方案针对top k类问题,通常比较好的方案是【分治+trie树/hash+小顶堆】,即先将数据集按照hash方法分解成...
2020-03-26 21:24:35 209
原创 java 字符串split
使用StringTokenizer比使用Spring.split()提高接近一倍的性能。要是用indexOf来逐步查找,性能还能进一步提高25%左右。很显然,越接近底层的方法性能越得到满足。不过,这个只是在于对性能要求高的需求底下才有真正的意义。普通应用,String.split()足以补充一点:使用String.indexOf()去扫描的时候,如果使用ArrayList或者...
2020-03-26 21:21:24 131
原创 java队列
在JDK 5之前LinkedList就已经存在,而且本身实现都是一种双向队列。所以到了JDK 5以后就将LinkedList同时实现Deque接口,这样LinkedList就又属于Queue的一部分了。通常情况下Queue都是靠链表结构实现的,但是链表意味着有一些而外的引用开销,如果是双向链表开销就更大了。所以为了节省内存,一种方式就是使用固定大小的数组来实现队列。在这种情况下队列的大小是固定...
2020-03-26 21:21:02 94
原创 spring中的线程池
多线程并发处理起来通常比较麻烦,如果你使用spring容器来管理业务bean,事情就好办了多了。spring封装了java的多线程的实现,你只需要关注于并发事物的流程以及一些并发负载量等特性,具体来说如何使用spring来处理并发事务:1.了解 TaskExecutor接口Spring的TaskExecutor接口等同于java.util.concurrent.Executor接口。...
2020-03-26 21:17:15 686
原创 zookeeper应用场景
Zookeeper的主流应用场景实现思路(除去官方示例)(1)配置管理集中式的配置管理在应用集群中是非常常见的,一般商业公司内部都会实现一套集中的配置管理中心,应对不同的应用集群对于共享各自配置的需求,并且在配置变更时能够通知到集群中的每一个机器。Zookeeper很容易实现这种集中式的配置管理,比如将APP1的所有配置配置到/APP1 znode下,APP1所有机器一启动就对/APP...
2020-03-26 21:15:48 507
原创 HBase存储结构
一、 Hbase存储框架图1 Hbase存储架构图1、 结构HBase中的每张表都通过行键按照一定的范围被分割成多个子表(HRegion),默认一个HRegion超过256M就要被分割成两个,由HRegionServer管理,管理哪些HRegion由HMaster分配。HRegionServer存取一个子表时,会创建一个HRegion对象,然后对表的每个列...
2020-03-26 21:10:53 2469
原创 负载均衡策略
负载均衡分全局负载均衡和本地负载均衡。地负载均衡是指对本地的服务器群做负载均衡,全局负载均衡是指对分别放置在不同的地理位置、有不同网络结构的服务器群间作负载均衡。循环DNS就是每次解析域名时指向IP loop list 里的下一个IP.负载均衡路由器通过某种策略把请求发送到响应最快的server上, 同时可以满足故障转移/故障恢复. 但是负载均衡路由器本身需要维护,...
2020-03-26 21:05:01 1290
原创 一致性hash算法
consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在 cache 系统中应用越来越广泛;1 基本场景比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的 ...
2020-03-26 21:04:13 87
原创 java程序里运行外部程序
使用Runtime.getRuntime().exec()方法可以在java程序里运行外部程序。 1. exec(String command) 2. exec(String command, String envp[], File dir) 3. exec(String cmd, String envp[]) 4. exec(String cmdarray[]) 5. exe...
2020-03-26 21:03:17 249
Building Service Oriented Architectures (SOA) with the J2EE Platform
2008-03-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人