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
相关文章:

Java中的两个关键字——super、this
Java中的两个关键字——super、this 神话丿小王子的博客主页 一、super super 是java中方的一个关键字,用它可以引用父类中的成员: super可用于访问父类中定义的属性 super可用于调用父类中定义的成员方法 super可用于在子类构造器中调用父类的构造器 使…

android system window,Android控件的fitSystemWindows属性
官方描述:根据系统窗体里的元素比如状态栏来调整View的布局。如果被设为true,控件的padding将会被调整为顶部留出一个statusBar的空间。类似于伪代码paddingTop"statusBarHeight"。重点说明:当布局内容可以延伸到状态栏,…

Nestjs OpenAPI(Swagger)
官方文档 用来描述api 转载于:https://www.cnblogs.com/ajanuw/p/9846589.html

Jdk11,Jdk12的低延迟垃圾收集器ZGC
https://wiki.openjdk.java.net/display/zgc/Main Z垃圾收集器,也称为ZGC,是一种可扩展的低延迟垃圾收集器,旨在实现以下目标: 暂停时间不超过10毫秒暂停时间不会随堆或实时设置大小而增加处理堆范围从几百M到几T字节大小 一目了…

Android项目驱动式开发教程 第2版,《Android项目驱动式开发教程》第一章开发入门.ppt...
《Android项目驱动式开发教程》第一章开发入门1.4 项目框架分析 4 android:versionName"1.0" > 5 8 第9行代码android:icon用来声明整个APP的图标,图片一般都放在drawable文件夹下,使用资源引用的方式。 第10行代码android:label用来声明整…
getLocationInWindow getLocationOnScreen getLeft , getTop, getBottom,getRight
版权声明:本文为博主原创文章,未经博主允许不得转载。 最近做项目时,发现在activity的onCreate()和onResume()方法里调用View.getLocationInWindow() 时,View.getLocationInWindow()返回空值,觉得很奇怪,因…

使用reflector对.NET反编译
reflector的下载地址:https://www.cr173.com/soft/355285.html 反编译后的结果: 转载于:https://www.cnblogs.com/ZaraNet/p/9848355.html

协程和Java实现
多线程的性能问题: 1.同步锁。 2.线程阻塞状态和可运行状态之间的切换。 3.线程上下文的切换。 协程,英文Coroutines,是一种比线程更加轻量级的存在。正如一个进程可以拥有多个线程一样,一个线程也可以拥有多个协程。 协程&a…

LoadRunner 技巧之 手动关联与预关联
上一节介绍了关联的原理与自动关联,除了自动关联还有另外两种关联方式:手动关联与 预关联。 手动关联 如果脚本很长,那么我们想找到一…

android app文档,android App项目需求描述文档.docx
本app是给外卖配送员用的,系统后台根据一定的逻辑生成或者建立运单,本App读到后台的运单讲外卖送到定外卖的手中本文档所需详细资料请到/s/1jGGgtLG下载与后台交互的地方不用实现,有数据显示的自己把交互函数写好 返回的测试数据写在交互函数…
如何利用微信小游戏的分包加载机制突破4M代码包体积限制
相信大家度过了一个不错的端午假期,在端午前夕,即6月15日晚上,微信小游戏宣布支持分包加载功能,白鹭引擎在端午节后第一天正式支持分包加载机制。在正式向开发者介绍如何使用前,我先为各位解读一下我对微信提供这个 AP…

一个会画图的工程师
发现小谢图画的很好,虽然有些也是他引用的,但是我觉得还是很好所以这里收集下。 【RocketMQ源码学习】2-Namesrv 3-Remoting模块 rocketmq-remoting 模块是 RocketMQ 中负责网络通信的模块,被其他所有需要网络通信的模块依赖。它是基于 Net…

2016百度实习编程题:括号序列
不知如何解决 1.感觉贪心或者动态规划,不知道如何解决 2.做过生成合法括号序列的题目,想到用DFS补成合法的括号,然而没有成功

html动画怎么隐藏,JQuery操作div隐藏和显示的4种动画
Jquery-Div动画显示body{font-family:"宋体";font-size:13px;color:#415973;}#ShowDiv{display:none;width:300px;height:100px;border:1px solid #ccc;border-right:2px solid #888;border-bottom:2px solid #888;background-color:#f9f9f9;text-align:center;paddi…

@芥末的糖----------《后端加密》
bcryptsession 生命周期 session 标识产生的时机和清除时机:(权限验证) 用户已经登录:这个唯一标识会在用户登录时产生,用户点击退出时或者关闭浏览器时清除。 …
Java中的ClassLoader和SPI机制
深入探讨 Java 类加载器 成富是著名的Java专家,在IBM技术网站发表很多Java好文,也有著作。 线程上下文类加载器 线程上下文类加载器(context class loader)是从 JDK 1.2 开始引入的。类 java.lang.Thread中的方法 getContextCl…

html在线缓存视频,javascript – 如何为HTML视频添加缓冲
给你的视频提供ID:用于缓冲:var vid document.getElementById("myVideoOne");alert("Start: " vid.buffered.start(0) " End: " vid.buffered.end(0));var vid document.getElementById("myVideoTwo");aler…
ComponentName(String pkg, String cls)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qingfeng812/article/details/51279606 开发中因为改项目包名,用了全局替换,误操作把改构造函数的第二个参数只写了类名,不是完整的全路径…

mysql干货——数据库字符集和校对规则详解
2019独角兽企业重金招聘Python工程师标准>>> 一、什么是字符集 字符是多个文字和符号的总称,包括各个国家的文字、标点符号、图形符号、数字等。字符集多个字符的集合。 字符集合种类较多,每个字符集包含的字符的个数不同。对于字符集不支持的…

android监听器在哪里创建,[转载]android开发中创建按钮事件监听器的几种方法
第一种:匿名内部类作为事件监听器类Button button(Button)findViewById(R.id.button);button.setOnClickListener(newOnClickListener(){public void onClick(View v){System.out.println(“匿名内部类作为事件监听类”);}});大部分时候,事件处理器都没有…
Go语言源码分析CAS的实现和Java如出一辙
看了Go的源码CAS这块实现和java还是类似的。 关于Java的分析参考:Java使用字节码和汇编语言同步分析volatile,synchronized的底层实现 都是使用汇编指令:LOCKCMPXCHGL 原因很简单:单核肯定不能发挥Go的高并发性能,G…

python 的文件读写方法:read readline readlines wirte writelines
read()方法读入整个文件,把整个文件以字符串形式返回。readline() 方法每次只读一行,每运行一次只读一行。如果要读整个文件,需要结合循环判断文件结束。python判断文件末尾的标志是,读到空字符。比如:while str ! :r…

c# 模板方法模式
为什么80%的码农都做不了架构师?>>> 既然是模板肯定定义了相同的东西板式,提供了空白的地方自己添加进去就可以了 模板方法是把相同的部分抽象出来到抽象类中去定义,具体子类来实现具体的不同部分,这个思路也正式模板…
transient HashMap使用目的分析
看HashSet源码有这么一句: private transient HashMap<E,Object> map; 再看HashSet的Add方法: 实际上HashSet是复用HashMap了。 而我们去看看HashMap也会发现一样使用了transient 而不管是HashSet还是HashMapdou都要求是Serializable的ÿ…

4月29日监理师课程作业
软考信息系统监理师:2016年4月29日作业一、信息应用系统分析设计阶段监理1、需求分析的进入条件是什么?(记)答:①业主单位与承建单位正式签订建设合同,②并对初步的项目开发计划达成一致意见。2、需求分析的…

沉浸式导航栏html,混合开发 h5+ 沉浸式的适配
1.需要在mainfest.json plus对象里添加"statusbar": {"immersed": "true","style":"dark"}2.新建immersed.js注意 在里边不适用plus,因为plus.ready之后再js改变样式 必然造成页面闪烁跳动(function(w){document.addEventLi…
puppet yum模块、配置仓储、mount模块
转载:http://blog.51cto.com/ywzhou/1577335 作用:自动为客户端配置YUM源,为使用yum安装软件包提供便捷。 1、服务端配置yum模块 (1)模块清单 [rootpuppet ~]# tree /etc/puppet/modules/yum/ /etc/puppet/modules/yum…

最新技术选型解决方案列表
最新技术选型解决方案列表 1 概述 这是一份当前的技术选型方案,针对创业、中小型公司 2 目标2.1 产品目标2.1.1 SaaS 2.1.1.1 免安装 2.1.1.2 多租户 2.1.1.3 流量计费 2.1.2 可配置 2.1.2.1 需开通服务 2.1.2.2 服务自动组合 2.1…

合工大的计算机专业好不好,合肥工业大学计算机好,还是西电的好?差距有多大?...
合肥工业大学计算机好,还是西电的好?差距有多大?这两个大学都是教育部直属的工科院校,但是性质完全不一样,到底谁更厉害,结论是西电的计算机要比合肥工业大学强。首先因为西电本身就是比哈工大厉害的大学,学科评估方…

DataWorks V2使用PyUdf
在DataWorks上新建一个Python资源,命名为 test_udf.py 编辑pyudf的脚本代码,实现方法请参考Python实现MaxCompute UDF # -*- coding:utf-8 -*- from odps.udf import annotate #函数签名,SQL执行前所有函数的参数类型和返回值类型必须确定&a…