`
文章列表
源码来源:OpenJDK 10   简述 HashMap实现了Map接口 与Hashtable不同处在于: HashMap允许null为key,允许null为value,而Hashtable则不支持 Hashtable线程安全,HashMap未同步化,所以线程不安全   关于性能 当所使用的Hash函数能使得所有元素均匀地分布到各哈希桶时,get和put这类基础操作的耗时可接近常量(O(1))。 遍历HashMap的耗时与内部哈希桶的数量和键值对的数量有关。这些内部对象越多,遍历耗时越久。所以对遍历性能要求较高时,不应把HashMap的初始容量设置得过高,负载因子也不宜 ...
源码来源:OpenJDK 10   解读对象 synchronizedCollection(Collection<T> c) synchronizedList(List<T> list) synchronizedSet(Set<T> s) synchronizedSortedSet(SortedSet<T> s) synchronizedNavigableSet(NavigableSet<T> s) synchronizedMap(Map<K, V> m) synchronizedSortedMap(S ...
源码来源:OpenJDK 10   简述 Vector实现了List接口;大小可变 ArrayList是线程不安全的,Vector的方法线程安全。Vector的public方法多用synchronized修饰,无此修饰的方法的内部实现也使用了synchronized。除此之外,与ArrayList原理相同,实 ...
源码来源:OpenJDK 10   简述 LinkedList实现了List和Deque(双端队列)接口,它是一个双向链表。 当需要访问特定索引处的元素时,会选取离目标位置更近的一端开始遍历(从头部或尾部开始)。   关于线程安全/同步 与ArrayList类似,LinkedList线程不安全。如果在多线程场景下使用,且至少有一个线程会改变list的结构,就要像对待ArrayList(TODO:hyper link)那样做好相关同步处理。 通过iterator方法和listIterator方法获得的迭代器都是fail-fast机制的。但该机制也是可用于辅助排障,而不能作为正 ...
源码来源:OpenJDK 10   简述 ArrayList实现了List接口;大小可变;允许有null元素;支持调整其内部用户存储数据的数组大小;与Vector比较相似,除了ArrayList不同步(多线程不安全)。   关于性能 size, isEmpty, get, set, iterator, listIterator等方法的时间复杂度都是O(1);add的时间复杂度是可变常量(amortized constant time)。(与LinkedList相比,ArrayList的常量因子更小一点)。除了这些操作,其它操作的一般都是线性复杂度O(n)。 当需要向一个Arr ...

读了《人件》

《人件》 (原书第3版) [美] Tom DeMarco  Timothy Lister  著 肖然 张逸 藤云  译   (没看过英文原版。感觉大量语句不通顺,与上下文语境不融洽。)   在大多数项目中,社会性的复杂度远比技术上的挑战要难处理得多。 更加严峻的问题:即使我们意识到社会性因素比技术上的因素重要得多,也从来没有用这样的思维观念管理过团队。  
1. 什么是 ASP.NET Identity ASP.NET Identity 是微软推出,用于在ASP.NET应用中管理用户的组件。   The mainstay for user management in recent years has been ASP.NET Membership, which has suffered from design choices. The biggest limitation is that the schema used to store the data worked only with SQL Server and was diffic ...
.Net CLR的内存模型和JVM的内存模型有很多相似的地方。《JVM 结构小结》    1 进程内存空间 应用程序的内存受进程的虚拟地址空间的限制。 32位进程:最多1.5GB 64位进程:最多8TB   2 引用跟踪算法 为了解决“引用计数算 ...

JVM 结构小结

    博客分类:
  • Java
JVM的内存模型和.Net CLR的内存模型有很多相似的地方。《.Net CLR 内存模型小结》   1 类加载器(ClassLoader) 1.1 Class Loader 的分类 启动类加载器(BootStrap Class Loader):加载 rt.java (Java基础类库)。 扩展类加载器(Extension Class Loader):加载扩展功能 jar 包。 系统类加载器(System Class Loader):即 AppClassLoader。加载启动参数 classpath 中的 jar 包,包括用户自己写的类。 用户自定义类加载器(User D ...
来源:《The "Double-Checked Locking is Broken" Declaration》   1. 单例模式的简单实现 // 只支持单线程的版本 class Foo { private Helper helper = null; public Helper getHelper() { if (helper == null) helper = new Helper(); ...
如题
来源:《代码整洁之道:程序员的职业素养》   1. 开发人员的目标 开发人员应把“QA找不到任何错误”作为努力的目标。 (虽然这个目标几乎无法实现,但仍然是我们努力的目标。正所谓“求其上,得其中;求其中,得其下;求其下,必败”。)   2. QA在项目中的角色 QA在团队中的角色是需求规约定义者(specifier)和特性描述者(characterizer)。 (某些项目中,特别是业务复杂需要较强专业能力的项目中,会设有全职的业务研究员(BA)。在这些项目中,BA会负责上述角色中偏业务的部分,QA则负责偏测试理论的部分。)   3. 自动化测试金字塔
《Pro .Net 4 Parallel Programming in C#》笔记 $ 周期性定时任务用 CancellationToken.WaitHandle.WaitOne(TimeSpan)  特点:如果Task被Cancel,WaitOne马上就会返回。   $ 同步元 同步元选择 场景 解决方案 串行访问边界区域 lock关键字或System.Threading.Monitor或System.Threading.SpinLock 增加或减少数值
《自动化测试最佳实践》讲座总结 2016年11月26日 - 27日,参加了为期两天的自动化测试最佳实践。讲师是业界大牛陆宏杰。他在微软工作了5年,后来又在Photoshop工作了5年。 自动化测试是软件工程中非常重要的一部分,所以这次课程涉及了很多项目管理中其它内容。在此我针对部分内容做了总结。   0. 为什么要做测试自动化(Why) 测试自动化是为了做持续集成。而持续集成则是为了更早地发现并解决软件缺陷,同时生成项目数据报表(Dashboard)。这些都是为了更好地管理项目。   1. 自动化测试能做什么(What) 1.1 自动化测试能做什么 自动化测试是为了预防缺陷 ...

读了《执行》

(从QQ空间搬过来了)   最近读了《执行》 (作者:(美)博西迪,(美)查兰 著,刘祥亚 等译)。主旨总的来说就是,领导必须深入基层参与具体业务。阅读感受    此书以谈话的方式编排。感觉就像在看口述的完整记录,夹杂大量的事例叙述,水分很足
Global site tag (gtag.js) - Google Analytics