[java se/jdk] map之重定义key对象的hash值-编程思维

0 序言 项目上有个场景:数据源连接池需要对key对象的hash值重写,保证通过相同的关键属性(datasourceName)值去重不同的对象。 public abstract class AbstractDatabaseConnectorKeyedObjectPool<K extends DataSource, V extends AbstractConnector> 1

[java se] java执行命令行-编程思维

1 序言 执行命令行,是实现自动化程序、跨环境调用的重要途径 2 源码示例 package test.java; import org.junit.Test; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; i

windows下java jdk8配置环境变量-编程思维

JDK最新版已经出到了jdk8u60,下载安装完成后,还需要配置环境变量,下面小编就给大家分享下jdk 8.0的环境变量配置教程,希望大家喜欢。 jdk8.0环境变量配置教程 右键选择 计算机→属性→高级系统设置→高级→环境变量 1.系统变量→新建 变量名:JAVA_HOME 变量值:(变量值填写你的jdk的安装目录,例如本人是 C:\Program Files\Java\jdk1.8.0_6

[java/leetcode]算法练习:两数之和(1/simple)_千千寰宇-编程思维

1 题目 题目来源: https://leetcode-cn.com/problems/two-sum/ 2 思路与代码 2.1 思路一:暴力法(两层For循环) 思路一:暴力法(两层For循环) 时间复杂度:O(n^2) 对于每个元素,我们试图通过遍历数组的其余部分来寻找它所对应的目标元素,这将耗费 O(n) 的时间。因此时间复杂度为 O(n^2)。 空间复杂度:O

[java]【异常处理】在项目开发中的通用规范_千千寰宇-编程思维

这一问题,已苦恼多日,上述答案系近整整2日广泛阅读书籍、博客、网络问答后,归纳并苦思而成。 本博文仅罗列总的观点,各观点的具体解释,可私信Word笔记。 如需转载or复制时,请注明出处。 本博文同步发表于知乎:在Java的异常处理机制中,什么时候应该抛出异常,什么时候捕获异常? 一 通用规范 - 1 0 延迟【捕获】,尽早【抛出】,【量力】而行。 1 ☆尽量避免且不捕获本可避免的【Uncheck

[java]排序算法>交换排序>【快速排序】(o(n*logn)/不稳定/n较大/无序/仅顺序存储)_千千寰宇-编程思维

1 快速排序 1.1 算法思想 快速排序是由冒泡排序改进而得的。 在冒泡排序过程中,只对相邻的2个记录进行比较;因此,每次交换2个相邻记录时,只能消除1个逆序。 若能通过2个(不相邻)记录的1次交换,消除多个逆序,则:会大大加快排序的速度。 而快速排序方法中的1次交换,则:可能消除多个逆序。 1.2 算法特征 属于【交换排序】的1种 冒泡排序 快速排序 每次交换2个(不相邻)记录时,可消除

[java]排序算法>选择排序>【简单选择排序】(o(n*n)/不稳定/)_千千寰宇-编程思维

1 选择排序 1.1 算法思想 每一趟从待排序的记录中选出关键字最小的记录,按顺序放在已排序的记录序列的最后(or最前面),直到全部排完位置。 1.2 算法特征 属于【选择排序】 简单选择排序 堆排序 适用于【稳定性】:不稳定(亦可稳定,与“交换记录”的策略相关) 适用于【存储结构】:顺序存储结构 or 链式存储结构 (二者均可) 【时间复杂度】:O(n*n) (最好/平均/最坏) 【空

[java]排序算法>交换排序>【冒泡排序】(o(n*n)/稳定/n较小/有序/顺序+链式)_千千寰宇-编程思维

1 冒泡排序 1.1 算法思想 交换排序的基本思想:两两比较待排序记录的关键字,一旦发现2个记录不满足次序要求时,则:进行交换,直到整个序列全部满足要求为止。 1.2 算法特征 属于【交换排序】 冒泡排序 快速排序 适用于【稳定性】:稳定 适用于【规模N】:较小 适用于【有序性】:有序 适用于【存储结构】:顺序存储 or 链式存储(二者均可) 相关口诀:【插冒归堆】好有序,

[java]排序算法>插入排序>【直接插入排序】(o(n*n)/稳定/n较小/有序/顺序存储+链式存储)_千千寰宇-编程思维

1 直接插入排序 1.1 算法思想 插入排序的基本思想是:每一趟将1个待排序的记录,按其关键字的大小插入到已经排好序的一组记录的适当位置上,直到所有待排序记录全部插入为止。 1.2 算法特征 属于【插入排序】 直接插入排序 折半插入排序 希尔排序 适用于【稳定性】:稳定 适用于【规模N】:较小 适用于【有序性】:有序 适用于【存储结构】:顺序存储or链式存储(二者均可)

[java]排序算法>插入排序>【折半插入排序】(o(n*n)/稳定/n较大/无序/顺序存储)_千千寰宇-编程思维

1 折半插入排序 1.1 算法思想 相比于【直接插入排序】:采用“顺序查找法”查找当前记录在已排好序的序列中的插入位置, 折半插入排序利用“折半查找法”快速查出目标插入位置,再针对性滴移动元素,实现插入。 1.2 算法特征 属于【插入排序】 直接插入排序 折半插入排序 希尔排序 适用于【稳定性】:稳定 适用于【规模N】:较大 适用于【有序性】:无序 适用于【存储结构】:仅顺序存储结构(链

java se之xml<二>xml dom与sax解析_千千寰宇-编程思维

[文档整理系列] Java SE之XML<二>XML DOM与SAX解析 XML编程:CRUD(Create Read Update Delete) XML解析的两种常见方式:   DOM(Document Object Model):     特点:树状解析     优点:【更适合对XML文档的(crud)操作。】对XML文档增删改查操作很方便灵活

java se之正则表达式一:概述_千千寰宇-编程思维

正则表达式 概念 定义:符合一定规则的表达式 作用:用于专门操作字符串 特点:用于一些特定的符号表示代码的操作,这样就简化了长篇的程序代码 好处:可以简化对字符串的复杂操作 弊端:符号定义越多,正则越长,阅读性越差 关键类 String Pattern:正则类对象 Matcher:通过解释Pattern对character sequence执行匹配操作的引擎类。(匹配器