stackoverflow上一个最会举例子的专家
https://stackoverflow.com/
Premraj是stackoverflow上一个一个最会举例子的专家,我特意收集了他的一些有趣的举例:
Java弱引用最精彩的解释
https://stackoverflow.com/questions/299659/whats-the-difference-between-softreference-and-weakreference-in-java/46291143#46291143
https://stackoverflow.com/questions/12646404/concurrenthashmap-and-hashtable-in-java/31579480#31579480
https://stackoverflow.com/questions/510632/whats-the-difference-between-concurrenthashmap-and-collections-synchronizedmap
https://stackoverflow.com/questions/2889777/difference-between-hashmap-linkedhashmap-and-treemap/50551555#50551555
HashMap,LinkedHashMap和TreeMap之间的区别
这三个类都实现了Map
接口,并提供了大部分相同的功能。最重要的区别是条目的迭代顺序:
HashMap
绝对不保证迭代顺序。当添加新元素时,它甚至可以(并且将)完全改变。TreeMap
将根据其compareTo()
方法(或外部提供的Comparator
)按键的“自然排序”进行迭代。此外,它实现了SortedMap
接口,该接口包含依赖于此排序顺序的方法。LinkedHashMap
将按照条目放入地图的顺序进行迭代
“Hashtable”是基于散列的映射的通用名称。在Java API的上下文中, Hashtable
是一个过时的类,它来自Java 1.1之前的集合框架。它不应再被使用,因为它的API混杂着复制功能的过时方法,并且它的方法是同步的(这会降低性能并且通常是无用的)。使用ConcurrentHashMap而不是Hashtable。
这三个都表示从唯一键到值的映射,因此实现了Map接口。
HashMap是基于键散列的映射。它支持O(1)get / put操作。密钥必须具有一致的实现
hashCode()
并且equals()
为此工作。LinkedHashMap与HashMap非常相似,但它增加了对添加(或访问)项目的顺序的认知,因此迭代顺序与插入顺序(或访问顺序,取决于构造参数)相同。
TreeMap是基于树的映射。其put / get操作需要O(log n)时间。它要求项目具有一些比较机制,可以使用Comparable或Comparator。迭代顺序由此机制确定。
其实就是LinkedHashMap是插入顺序,TreeMap是排序的顺序。
https://stackoverflow.com/questions/1216380/what-is-a-stream/33914070#33914070
什么是流?
https://stackoverflow.com/questions/3085285/difference-between-cohesion-and-coupling/48472013#48472013
内聚与耦合的区别
----
https://enterprisecraftsmanship.com/2015/09/02/cohesion-coupling-difference/
高内聚,低耦合指南
实质上,高内聚意味着将代码库的一部分保存在一个地方。同时,低耦合是尽可能地分离代码库的不相关部分。
理论上,指南看起来很简单。但是,在实践中,您需要深入了解软件的域模型,以便了解代码库的哪些部分实际相关。
----
内聚是指类(或模块)可以做什么。低凝聚力意味着班级做了各种各样的行动 - 它是广泛的,没有关注它应该做什么。高凝聚力意味着课程专注于应该做的事情,即只关注课堂意图的方法。
低内聚的例子:
-------------------
| Staff |
-------------------
| checkEmail() |
| sendEmail() |
| emailValidate() |
| PrintLetter() |
-------------------
高内聚的例子:
----------------------------
| Staff |
----------------------------
| -salary |
| -emailAddr |
----------------------------
| setSalary(newSalary) |
| getSalary() |
| setEmailAddr(newEmail) |
| getEmailAddr() |
----------------------------
至于耦合,它指的是两个类/模块相互依赖或相互依赖的方式。对于低耦合类,更改一个类中的主要内容不应该影响另一个类。高耦合会使您难以更改和维护代码; 由于课程紧密相连,因此进行更改可能需要对整个系统进行改造。
良好的软件设计具有高内聚力和低耦合性。
Java中的ThreadFactory用法
有人可以简要解释如何使用ThreadFactory?使用和不使用ThreadFactory的示例可能对理解差异非常有帮助。
他也是引用了这里:
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadFactory.html
如何在非线程的对象上调用wait()和notify()方法?
如何在不是线程的对象上调用wait()
和notify()
方法?那真的没有意义,是吗?
当然,它必须有意义,因为这两种方法可用于所有Java对象。有人可以提供解释吗?我无法理解如何使用wait()
和之间的线程之间进行通信notify()
。
其实wait
,notify
成员函数不应该属于线程,它应该属于命名为东西条件变量它来自POSIX线程。你可以看看cpp如何包装这个概念,它将它包装成一个专用的类名std :: condition_variable。
我认为cpp比java更好地封装,java做得太多了,它把概念直接放到了Object类中,好吧,这让人们在开始时感到困惑。
Spring @Transactional - 隔离,传播
有人可以通过现实世界的例子解释注释中的隔离和传播参数@Transactional
。基本上何时以及为什么我应该选择更改其默认值。
什么是回调函数?
如何用简单的英语解释回调?它们与从另一个函数调用一个函数有什么不同?
JDK动态代理和CGLib有什么区别?
http://bytebuddy.net/#/
Java字节码3-使用ByteBuddy实现一个Java-Agent
基于 ByteBuddy 运行时动态修改字节码
https://gist.github.com/premraj10/3a3eac42a72c32de3a41ec13ef3d56ad
什么是枚举,为什么它们有用?
https://www.javatpoint.com/enum-in-java
stackoverflow上一个最会举例子的专家相关推荐
- 【124】JavaScript获取下一个、上一个兄弟节点
我最近工作中碰到一个需求,要获取某个 HTML 节点的下一个兄弟节点.通过查阅文档,得知要使用 nextSibling 属性.但是碰到一个问题:实际使用中,为了方便阅读代码,HTML标签之间必然有缩进 ...
- 为什么 StackOverflow 上的代码片段会摧毁你的项目?
昨天公司里碰到一件令人哑然失笑的事情.帮朋友公司做的一个项目,做SIT测试的时候发现一些bug,仔细查了下原因,原来是因为当初觉得这个项目比较简单,交给了几个新入职的新丁,也算是给他们练练手,结果其中 ...
- 论文: 贝叶斯优化方法和应用综述(1)--------陈述设计类问题举例子,与 model-free优化计算的对比
陈述: 就是想看一下贝叶斯学派的陈述,从不同的学派的对比,看看有什么优缺点,然后自己思考下. 摘要: 通过设计恰当的概率代理模型和采集函数,贝叶斯优化框架只需经过少数次目标函数评估即可获得理 ...
- .NET(C#) Internals: 以一个数组填充的例子初步了解.NET 4.0中的并行(二)
引言 随着CPU多核的普及,编程时充分利用这个特性越显重要.上篇首先用传统的嵌套循环进行数组填充,然后用.NET 4.0中的System.Threading.Tasks提供的Parallel Clas ...
- angular面试题及答案_关于最流行的Angular问题的StackOverflow上的48个答案
angular面试题及答案 by Shlomi Levi 通过Shlomi Levi 关于最流行的Angular问题的StackOverflow上的48个答案 (48 answers on Stack ...
- Matlab多if语句(if,elseif,else)分段执行时遇到被上一个条件覆盖的问题及解决
举个最简单的例子: 前面设置N_all=200,想要利用多if语句实现分段执行不同函数,得到y=1,y=2,y=1的三个分段: 却得到了分段图如下:在N_all=150~200区间内仍有THr=2,好 ...
- LeetCode刷题之---上一个排序
1.问题说明 上一个排序,随机给定一个数组,目标任务是找到"上一个排序",那么什么是上一个排序呢? 这个问题可能很多人看到就直接懵逼了,所谓上一个排序,之的就是按照升序排序,然后依 ...
- (C++)类的定义(实现类成员函数)——详细讲解,举例子
前面讲解了类的声明,现在我们讲解一下类的定义. 类的定义说简单点就是实现类成员函数,而成员函数定义与常规的函数定义非常相似,也需要有函数头和函数体,也可以有返回类型和参数. 有两个特殊的特征: 1.定 ...
- 如何在StackOverflow上获得第一个标签徽章-以及为什么它很重要。
by Angelos Chalaris 通过安吉洛斯·查拉利斯(Angelos Chalaris) 如何在StackOverflow上获得第一个标签徽章-以及为什么它很重要. (How to get ...
最新文章
- 在Windows7/10上通过VS2013编译FFmpeg 4.1.3源码操作步骤
- 直博清华的小姐姐!本科就发表了SCI,享受朝九晚五的学习生活,做自己的小太阳!...
- CakePHP 2.x CookBook 中文版 第五章 控制器 之 组件
- python123.io作业_Python自动化开发学习3
- poj 3090 amp;amp; poj 2478(法雷级数,欧拉函数)
- Java SE Eclipse中引入第三方jar及class
- Android USB Host与HID通讯(二)
- NFS调试linux内核启动卡死在DHCP和RARP上
- Linux安装Yum包管理器
- bottle模板中的替换
- Trick(一)——判断一个数的位数
- 孔板流量计计算公式_带你全面了解各种流量计!
- win10连接mq_Win10环境下配置RocketMQ
- hi3519模组测试
- 暴走英雄坛服务器维护,《暴走英雄坛》4月29日更新公告
- 爬虫中使用selenium实现对斗鱼直播的各个房间标题、主播id,直播内容类型和热度信息的爬取
- Java 利用Calender类制作日历,并且标注日期
- 字符串的方法练习------Python篇
- 北京航空航天大学研究生院计算机科学与技术哪个方向偏嵌入式,北京航空航天大学研究生专业介绍:计算机科学与技术...
- 最详细的***教程 下
热门文章
- 图像处理怎么学matlab,Matlab数字图像处理学习(1)-亮度变换
- js 万年历农历转阳历 方法_Python 农历公历算法转换
- ps怎么制作流体_ps相框制作教程:ps怎么制作相框效果
- 使用pycharm将自己项目代码上传github(保姆教程)
- 基于双门限法的端点检测
- linux 启动nacos报错_nacos在Linux上的搭建启动报错
- 剑指offer:面试题37. 序列化二叉树
- Udacity机器人软件工程师课程笔记(二十五) - 使用PID控制四轴飞行器 - 四轴飞行器(四旋翼)模拟器
- 如何将非官方扩展程序加入chrome的白名单
- 在CentOS 6.2上搭建vim开发环境