`
文章列表
原文地址:http://www.importnew.com/16301.html HashMap概述 HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 HashMap的数据 ...
原文地址:http://www.importnew.com/7099.html HashMap的工作原理 首页所有文章资讯Web架构基础技术书籍教程我要投稿更多频道 » HashMap的工作原理 2013/11/15 | 分类: 基础技术 | 24 条评论 | 标签: HASHPMAP 分享到: 306 本文由 ImportNew - 唐小 ...
原文地址:http://www.importnew.com/12773.html Java线程面试题 Top 50 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰 ...

GC回收过程

    博客分类:
  • JVM
Java的GC堆空间可分为年轻代(new Generation) 和年老代(old Generation), new Generation分为Eden, From, To区。其大小默认比例是8:1:1. 新的对象总是在Eden Space中被创建,当Eden区域满时,会触发Monitor GC, 这时会将仍在被使用的读写从Eden区copy到From区,然后清除Eden区;这样Eden区空了,新对象继续可在Eden中创建,当Eden再满时,触发Monitor GC把Eden和From区中仍然存活的对象copy到To区,然后清空Eden和From区;当Eden区再满时,触发Monitor GC把E ...

聊天室总结

聊天室总结 1. 我刚来公司的时候,聊天室是单机的方案:即只有一个chatroom服务,以chatroomId作为targetId, 这意味着,一个聊天室的所有行为,都只能在一台server上。包括加入、退出聊天室;聊天室发消息、聊天室发Notify,以及最终的用户来聊天室拉取消息。 2. 随着聊天室业务的爆发性增长,单机方案已经无法撑住高并发的用户量。这时的架构改进为:把notify和拉取消息的行为,拆分到新增加的chatroommessage服务中,即按业务进行了架构拆分,chatroommessage以userId作为targetId, 这样,当一个聊天室人数很多时,可以通过扩容硬件来 ...

读写锁总结

1. ReadWriteLock 对象的方法中一旦加入了synchronized关键字,则任何时刻只能有一个线程访问synchronized修饰的块。假设有个数据对象用户拥有写方法和读方法,那么多线程环境下要保证数据的安全,需要对该对象的读、写方法都加synchronized关键字。 这样,     1)对于任何线程在写入时,其他线程都无法读,也无法写;     2)如果有线程在读时,其他线程也无法读,也无法写。 这样的规则,对于写入操作时,没有问题。但对于读操作时,会造成不必要的性能瓶颈。因为读操作是可以多线程同时进行的,而synchronized限制了数据的并发读。 ReadWriteLo ...
1. 分布式架构要解决的主要问题 1)高可用:举个单机房高可用的例子,你肯定不希望因为一个磁盘损坏,或一个机器损坏,或者一个交换机损坏,就导致整个系统的服务不可用了。 2)在系统容量增长的情况下,如何实现可伸 ...

top命令学习

top是Linux下的性能分析工具,用于实时显示系统各进程的资源占用情况,类似于windows的资源管理器。 1. 前5行是整体的统计信息区: 第一行,任务队列信息 top - 14:13:29 up 14 days, 23:41,  3 users,  load average: 0.00, 0.03, 0.05 1)14:13:29 --&g ...
Log的三种写法: 1. LOGGER.info(String.format("aaaaaa%sbbbbbb%sccccc%sdddddd%s", "11", "22", "33", "44")); 2. LOGGER.info("aaa{}", "bb"); 3. LOGGER.info("aaaaaa"+"1111"+"bbbbbb"+"2222"+"ccccc& ...

Zookeeper学习

1. 什么是zookeeper? zookeeper是一个分布式的,开源的"分布式应用程序协调服务"。它包含了一个简单的原语集,分布式应用程序可以基于它实现同步服务、配置维护、命名服务等。 zookeeper是hadoop的一个子项目。在分布式应 ...
1. 需求:把ChrmMember类存入Redis, 以备重启server后,聊天室的成员不会丢失。 ChrmMember类的结构: -- private int msgNum; //聊天室中的消息数 -- private long lastMsgTime; //聊天室中最新的消息时间 -- private Stack<String> list = new Stack<>(); / ...

SSDB学习

ssdb把数据存储到磁盘上,性能接近于redis, 但又不像redis那样纯内存那样昂贵,所以可以存储数据量大,且对于读写速度要求大于传统DB的情况。 1. LSM原理 + 异步: (Log-Structured-mechanism), 磁盘内容的所有操作,都将会被顺序地写入一个类似日志的结构中,从而提供文件的写入效率。(通过异步)。同时该日志中还包含了索引信息以提高日志的读效率。日志会被划分为多个段(segment)来进行管理,很适合哪种存在大量小文件写入的场景。简而言之,LSM就是将对数据的更新操作暂时缓存在内存中,当达到一个指定的值,再将其批量写到磁盘,在写入过程中跟已有的数据做merg ...
当两个线程并发地执行一个HashSet的时候,一个线程对HashSet做遍历(Iterator或者for循环,或者.clone()), 另一个线程对它.add或者.remove的时候,会抛出:java.util.ConcurrentModificationException. 而读的时候,hashSet.size(). hashSet.contains(XXX); 则不会发生异常。 解决办法是读的时候加读锁,写的时候加写锁。要注意读写锁必须来自同一个Lock: Lock writeLock = UserListManager.getUserMsgLock(key).writeLock(); ...
一. Basic Life 1. 保持好从容和平的心态 2. 每天坚持锻炼 3. 少吃油腻,多吃清淡 4. 保证每天睡眠充足 5. 每天按部就班进步 二. 学习方法 1. 简明(从官网或博客上学习,书和视频为辅助) 2. 实践驱动(安装到本地,写些有代表性的小例子,总结写精炼的知识点) 3. 底层原理(细究底层原理:通过网上及自己测试,总结成果到博客) 4. 随时记录下工作中的有价值的经验经历。
2017-07-09: 需要做的: 1. 总结聊天室的架构和优化方案。总结出聊天室从单机到当前的分布式的结构演化过程,以及未来要做的优化和架构调整。 2. 学习Zookeeper, CMP,Cluster, 导航等单位中的技术架构和知识。 3. 学透这三本书:《深入了解JVM的高级特性与最佳实践》、《Java并发编程实践》、《大型分布式网站的架构》 4. 学习Python, Go语言。以此来印证Java语言的优缺点 -- 精通多门语言,才能当好架构师。 2016-03-16: 跟李淼转正谈话:怎样做架构师? 1. 深度:要弄投计算机专业课底层原理(数据结构、操作系统、微机原理、通信协议 ...
Global site tag (gtag.js) - Google Analytics