![](https://img-blog.csdnimg.cn/20200620132611438.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java
java
倒骑驴走着瞧
不积跬步无以至千里
展开
-
重写hashcode和equals方法通过Stream流过滤age相同的数据
重写hashcode和equals方法通过stream流过滤数据原创 2022-08-04 23:28:18 · 464 阅读 · 0 评论 -
代码获取文件大小
获取文件大小import java.io.File; public class Main { public static long getFileSize(String filename) { File file = new File(filename); if (!file.exists() || !file.isFile()) { System.out.println("文件不存在"); return -1;原创 2022-01-02 01:04:31 · 240 阅读 · 2 评论 -
最大公共子串
Scanner in = new Scanner(System.in); String ss1 = in.nextLine(); String ss2 = in.nextLine(); String s1 = ss1.length() < ss2.length() ? ss1 : ss2; // 短的字符串 String s2 = ss1.length() < ss2.length() ? ss2 : ss1; ...原创 2021-12-29 16:41:44 · 260 阅读 · 0 评论 -
找二叉树中任意两个节点的最近的公共父节点
大概分为两种情况,一种是pq两个节点在树或者子树的同一边package test;public class SmallCommonParent { public static void main(String[] args) { /* * 第一种情况,p和q在root的两边 * root * / \ * p a * \ * q * */ // TreeNode p = new TreeNode("p");//原创 2021-10-12 13:14:04 · 560 阅读 · 0 评论 -
原地删除有序数组中的相同元素
原地删除有序数组中的相同元素,并输出返回新的数组的长度,并打印内容,空间复杂度为O(1) public static void main(String[] args) { int[] aa = { 1, 1, 1, 3, 3, 4, 4, 5, 6, 8, 8 }; int length = removeDuplicates(aa); System.out.println("长度为:" + length); for (int i = 0; i < length; i++) {原创 2021-10-09 10:47:27 · 121 阅读 · 0 评论 -
java 树的各种遍历
基础知识树是一个有n个有限节点组成一个具有层次关系的集合,每个节点有0个或者多个子节点,没有父节点的节点称为根节点,也就是说除了根节点以外每个节点都有父节点,并且有且只有一个。树的种类比较多,有二叉树,红黑树,AVL树,B树,哈夫曼树,字典树等等。甚至堆我们也可以把它看成是一棵树,树的这么多种类中,我们最常见的应该是二叉树了,下面我们来看一下他的结构。定义:1,结点的度: 一个结点含有的子结点的个数称为该结点的度;2,叶结点或终端结点: 度为0的结点称为叶结点;3,非终端结点或分支结点: 度转载 2021-09-22 14:31:16 · 6825 阅读 · 2 评论 -
Java对姓名, 手机号, 身份证号, 地址进行脱敏
替换几位就用几个*号一、姓名1, 脱敏规则: 只显示第一个汉字,比如李某某置换为李**, 李某置换为李*private static String desensitizedName(String fullName){ if (!Strings.isNullOrEmpty(name)) { String name = StringUtils.left(fullName, 1); return StringUtils.rightPad(nam转载 2021-07-14 17:10:27 · 4579 阅读 · 0 评论 -
final修改变量与匿名内部类调用时候冲突
对于普通变量来说是不可更改的,但是对引用类型来说堆内存中的地址不可变,但是引用类型的值是可以变得;特殊情况下(完全可以通过其他方式解决,这里只是举个例子):某个局部变量在匿名内部类中调用,那么这个变量就需要生命成final的,但是又必须初始化; int score = 0;//这里报错,因为score在内部类中调用,必须声明称final而且必须初始化 button.setOnClickListener(new View.OnClickListener() {原创 2021-03-18 15:38:37 · 105 阅读 · 0 评论 -
ArrayList源码查看
文章目录前言一、ArrayList介绍1.底层实现原理二、方法介绍1.构造方法ArrayList/ArrayList(int)/ArrayList(Collection)2.新增元素add/addAll3.读入数据总结前言一、ArrayList介绍经常使用到的集合框架ArrayList,继承自AbstractList抽象类,实现了List接口具备了list的增删改查等功能,实现RandomAccess空接口(空接口用于标记,底层算法中判断instanceof是否实现该标记接口选择不同算法)具备了快速访原创 2020-09-10 14:59:52 · 418 阅读 · 0 评论 -
Java中HashMap底层实现原理JDK1.8源码分析
Java中HashMap底层实现原理JDK1.8源码分析前言一、HashMap的实现原理二、JDK1.8中的涉及到的数据结构位桶数组数组元素Node前言这几天学习了HashMap的底层实现,但是发现好几个版本的,代码不一,而且看了Android包的HashMap和JDK中的HashMap的也不是一样,原来他们没有指定JDK版本,很多文章都是旧版本JDK1.6.JDK1.7的。现在我来分析一哈最新的JDK1.8的HashMap及性能优化。在JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即转载 2020-09-10 11:03:03 · 258 阅读 · 0 评论 -
java克隆clone(深拷贝/浅拷贝)介绍
clone浅克隆深克隆浅克隆package test;public class CloneTest { public static class Outer implements Cloneable { private int outerInt; private String outerString; private Inner inner = null; public int getOuterInt() { return outerInt; } public vo原创 2020-09-10 10:21:47 · 292 阅读 · 0 评论 -
时间复杂度和空间复杂度分析
学习极客大学覃算法相关课程记录常见的几种时间复杂度O(1):常量阶,运行时间为常量 Constant ComplexityO(logn):对数阶,如二分搜索算法 Logarithmic ComplexityO(nlogn):对数阶,如快速排序算法 Logarithmic ComplexityO(n):线性阶,如n个数内找最大值 Linear ComplexityO(n^2):平方阶,如选择排序,冒泡排序 N Square ComplexityO(n^3):立方阶,如两个n阶矩阵的乘法运算 N翻译 2020-08-12 00:15:16 · 311 阅读 · 0 评论 -
java 生产者和消费者——BlockingQueue方式
利用阻塞队列如下特性实现生产者和消费者模式put 添加一个元素 如果队列满,则阻塞take 移除并返回队列头部的元素 如果队列为空,则阻塞/** * 生产者消费者问题: 容器最多放5个商品;当容器未装满时,生产者一直生产商品并放入容器中,当容器中有商品时,消费者就一直消费商品; 情景: * 生产者生产20个商品并被消费者消费 */public class ProducerAndComsumerDemo {原创 2020-07-07 14:05:42 · 187 阅读 · 0 评论 -
java 生产者和消费者——ReentrantLock方式
/** * 生产者消费者问题: 容器最多放5个商品;当容器未装满时,生产者一直生产商品并放入容器中,当容器中有商品时,消费者就一直消费商品; 情景: * 生产者生产20个商品并被消费者消费 */public class ProducerAndComsumerDemo { private int pruductsSum = 0; private int FULL = 5;// 容器中最多容纳5个产品 private Lock lock; private Condition notEmptyCo原创 2020-07-07 13:47:48 · 393 阅读 · 0 评论 -
java 生产者和消费者——Synchronized方式
/** * 生产者消费者问题: 容器最多放5个商品;当容器未装满时,生产者一直生产商品并放入容器中,当容器中有商品时,消费者就一直消费商品; 情景: * 生产者生产20个商品并被消费者消费 */public class ProducerAndComsumerDemo { private int pruductsSum = 0; private static final int FULL = 5;//容器中最多容纳5个产品 public static void main(String[]原创 2020-07-07 11:32:13 · 919 阅读 · 0 评论 -
java爬楼梯问题
问题假设你现在正在爬楼梯,楼梯有 n 级。每次你只能爬 1级或者 2级,那么你有多少种方法爬到楼梯的顶部?public class ClimbSairs { public static void main(String[] args) { System.out.println("爬1个台阶有" + climb(1) + "种走法"); System.out.println("爬2个台阶有" + climb(2) + "种走法"); System.out.println("爬3个台阶有"原创 2020-06-28 18:21:00 · 1059 阅读 · 0 评论 -
JAVA中的栈和堆
文章转自:https://www.cnblogs.com/ibelieve618/p/6380328.htmlJAVA在程序运行时,在内存中划分5片空间进行数据的存储。分别是:1:寄存器。2:本地方法区。3:方法区。4:栈。5:堆。基本,栈stack和堆heap这两个概念很重要,不了解清楚,后面就不用学了。以下是这几天栈和堆的学习记录和心得。得些记录下来。以后有学到新的,会慢慢补充。一、先说一下最基本的要点基本数据类型、局部变量都是存放在栈内存中的,用完就消失。new创建的实例化对象及数组,是存转载 2020-06-28 17:31:40 · 121 阅读 · 0 评论 -
字符串工具类_姓名脱敏、身份证号脱敏
/** * 姓名脱敏 * * @param name * @return */ public static String desensitizeName(String name) { if (!TextUtils.isEmpty(name)) { char[] chars = name.toCharA...原创 2020-04-20 19:03:48 · 1226 阅读 · 0 评论 -
Cipher初始化时transformation
transformation:“算法/模式/填充”或“算法” public static final Cipher getInstance(String transformation){ return createCipher(transformation, null); }使用第三方库进行aes解密,传入加密的16进制的数据、密钥、算法/模式/填充、偏移量;得...原创 2020-03-11 18:32:40 · 809 阅读 · 0 评论 -
Tomcat使用key和pem配置HTTPS证书
首先推荐一个良心网站:https://freessl.org/输入自己的域名,生成证书:该步骤完成后会得到如下证书文件MAC下直接命令生成.p12文件openssl pkcs12 -export -inkey private.key -in full_chain.pem -name tomcat -out tomcat.p12过程中需要输入密码,记好!通过keytoo...转载 2020-03-04 19:32:48 · 3339 阅读 · 0 评论 -
【Java并发编程实战】-----“J.U.C”:ReentrantLock之一简介
转自:https://www.cnblogs.com/chenssy/p/4735381.html注:由于要介绍ReentrantLock的东西太多了,免得各位客官看累,所以分三篇博客来阐述。本篇博客介绍ReentrantLock基本内容,后两篇博客从源码级别分别阐述ReentrantLock的lock、unlock实现机制。ReentrantLock,可重入的互斥锁,是一种递归无阻塞的同步机...转载 2018-11-14 15:00:31 · 95 阅读 · 0 评论 -
【Java并发编程实战】-----“J.U.C”:锁,lock
在java中有两种方法实现锁机制,一种是在前一篇博客中(【java7并发编程实战】-----线程同步机制:synchronized)介绍的synchronized,而另一种是比synchronized更加强大和领过的Lock。Lock确保当一个线程位于代码的临界区时,另一个线程不进入临界区,相对于synchronized,Lock接口及其实现类提供了更加强大、灵活的锁机制。一个简单的锁在使用s...转载 2018-11-14 14:55:53 · 116 阅读 · 0 评论 -
【Java并发编程实战】-----synchronized
转自:https://www.cnblogs.com/chenssy/p/4701027.html在我们的实际应用当中可能经常会遇到这样一个场景:多个线程读或者、写相同的数据,访问相同的文件等等。对于这种情况如果我们不加以控制,是非常容易导致错误的。在java中,为了解决这个问题,引入临界区概念。所谓临界区是指一个访问共用资源的程序片段,而这些共用资源又无法同时被多个线程访问。在java中为了...转载 2018-11-14 09:54:06 · 126 阅读 · 0 评论 -
【java并发编程实战】-----线程基本概念
转自:https://www.cnblogs.com/chenssy/p/4677265.html学习Java并发已经有一个多月了,感觉有些东西学习一会儿了就会忘记,做了一些笔记但是不系统,对于Java并发这么大的“系统”,需要自己好好总结、整理才能征服它。希望同仁们一起来学习Java并发编程,共同进步,互相指导。在学习Java并发之前我们需要先理解一些基本的概念:共享、可变、线程安全性、线程...转载 2018-11-14 09:49:35 · 114 阅读 · 0 评论 -
JDK API在线文档
API版本 语言 地址JDK 5 英文 http://docs.oracle.com/javase/5/docs/api/JDK 6 英文 http://docs.oracle.com/javase/6/docs/api/JDK 6 中文 http://tool.oschina.net/apidocs/apidoc?api=jdk-zhJDK 7 英文 http://docs.oracle...原创 2018-11-07 14:00:23 · 1551 阅读 · 0 评论 -
重温IO流读写文件
前段时间写后台跑批每天生成一个增量文件,今天有空将IO读写文件重温一下,复制一个文本文件内容到另外一个文本文件中;代码如下:使用了5种方式import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.BufferedWr...原创 2018-11-23 17:46:02 · 135 阅读 · 0 评论 -
正则表达式限制只能输入中文英文数字
无论移动端还是后台都会遇到输入框限制输入特殊字符或者表情符;下面代码通过正则控制只能输入中文、英文、数字package pattern;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test { /** * @param args */ public static vo...原创 2018-11-23 10:45:31 · 19041 阅读 · 2 评论 -
poi解析word中的表格
解析word简历,使用poi解析word表格研究记录如下:package poi; import java.io.File;import java.io.FileInputStream;import java.util.List;import org.apache.poi.xwpf.usermodel.XWPFDocument;import org.apache.poi.xwpf....原创 2018-11-23 11:04:34 · 2899 阅读 · 1 评论 -
CRC16算法遇到的问题解决
项目需要,传输过程中对数据进行校验;使用了CRC校验CRC:即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。因为终端不止有java开发的,也有C#开发的,所以这两套必须配套;因C#已有,所以我需要做的就是把C#的CRC算法翻译成JAVA语言涉及到的转换问题:C#中Byte:无符号的8...原创 2019-01-25 16:04:34 · 1691 阅读 · 2 评论 -
数据结构、算法、数据库复习工具
发现一个好的工具,仅此分享记录地址:工具地址原创 2019-07-31 09:17:23 · 75 阅读 · 0 评论 -
byte[]转16进制字符串
public static String bytesToHexString(byte[] bArr) { StringBuffer sb = new StringBuffer(bArr.length); String sTmp; for (int i = 0; i < bArr.length; i++) { s...原创 2019-08-15 16:26:16 · 1064 阅读 · 0 评论 -
JavaWeb项目部署到阿里轻量应用服务器
JavaWeb项目部署到阿里轻量应用服务器https://www.jianshu.com/p/2604e53a7f6a?from=singlemessagehttps://blog.csdn.net/qq_39720249/article/details/82181484https://blog.csdn.net/weixin_40862011/article/details/8626070...原创 2019-09-12 10:22:08 · 355 阅读 · 0 评论 -
正则匹配ip地址并替换
正则匹配ip地址并替换 public static String picUrlreplaceIp(String url){ if(!TextUtils.isEmpty(url)){ String patt = "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"; Pattern r = Pa...原创 2019-09-18 11:05:02 · 2092 阅读 · 0 评论 -
Java IO流的关闭顺序
做后台开发跑批任务开发时(需要每天生成一个文件)IO流操作注意以下几点:编码格式utf-8在finally中对流进行非空判断并关闭关闭流时需要遵循先开后关的原则,否则会异常“java.io.IOException:Stream Closed”...原创 2018-10-24 20:05:57 · 5071 阅读 · 0 评论