JavaSE
第二颗大白菜
每天写点什么,不是为了得到一些什么,也不是向谁证明一些什么,更不是为了存在感,而是让自己知道每天都做了些什么。
展开
-
今天就来说一说synchronized把。
今天就来说一说synchronized把。1.一个生活在JVM层面的Java关键字;2.那么直接说明一下,它的使用场景(1)可以修饰类的成员方法,可以使用当前对象的this进行加锁,也可以理解为,当某个类的成员方法添加了synchronized修饰符,那么这个成员方法,在使用的时候,就是只能有一个线程进入该方法,其他均阻塞public synchronized void method() { }(2)修饰静态方法,对于当前类的class对象加锁,当然,我们也可以选择对应的静..原创 2020-12-08 22:35:06 · 279 阅读 · 0 评论 -
关于final的一些事情
1.关于final的一些事情一个Java关键字1.当其一个类变量没有加该修饰符的时候的一个效果:private static int i = 847;public static void main(String[] args) { System.out.println(i); i = 888; System.out.println(i);}执行结果:这个结果应该都懂得,这里就不解释了。当加上一个final之后,是一个什么样的效果...原创 2020-12-08 18:06:43 · 316 阅读 · 0 评论 -
finally一定会执行吗????
finally一定会执行吗????不一定:例子1: public static void test() { int i = 0; i = 1 / i; try { System.out.println("try"); } finally { System.out.println("finally"); } } public stati...原创 2020-12-07 19:43:37 · 2095 阅读 · 0 评论 -
今天说点什么好呢?来说一下集合(ArrayList)为什么会不安全吧。(继上回说的cas)
ArrayList,基本不陌生的,我们看看API很常用的一个动态数组,话不多说,直接上代码(笔者是jdk8)注意观察其add方法,一进入就是两个!!,增加数量。哈哈哈注意:arrayList将元素添加至list尾部。一步一步分析哈ensureCapacityInternal()是什么方法呢?两个私有方法,跳来跳去,真的迷。他到底做了个什么工作呢?先看此方法也就是说,ArrayList如果为空,那么必须最小容量是10,可以看到上述方.原创 2020-07-31 18:10:43 · 982 阅读 · 0 评论 -
局部变量与成员变量的对比区别(从各个角度对比)
局部变量与成员变量的对比声明的位置 局部变量:方法体{}中,形参,代码块{}中 成员变量:类中方法外 类变量:有static修饰 实例变量:没有static修饰 修饰符 局部变量:final 成员变量:public、protected、private、final、static、volatile、transient 值存储的位置 局部变量:栈(线程私有的...原创 2019-10-19 12:11:53 · 2388 阅读 · 0 评论 -
十大排序算法-------详解(Java源码)汇总
话不多说:对于排序算法,可以大致的分为两类 :比较类排序:通过比较决定元素之间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序,相反道理,不通过比较来决定元素之间的相对次序,它可以突破基于比较排序的时间下界,以线性时间来运行,因此也称为线性时间非比较类排序仿照网络大神做了一张思维导图:对于算法复杂度:在先了...原创 2019-03-18 20:19:32 · 3270 阅读 · 0 评论 -
十大排序算法-------【基数排序】详解(Java源码)
基数排序是按照低位先排序,然后收集;再按照高位排序,然后再次收集;依次类推,直到最高位。有时候有些属性是有优先级顺序,先按照低优先级排序,再按照高优先级排序。最后的次序就是高优先级的在前,高优先级相同的低优先级高的在前。算法描述: 取得数组中的最大数,并取得位数; Arrays为原始数组,从低位开始取到每个位组成radix数组; 对redix进行计数排序(利用计数排序适用于小范围数的...原创 2019-03-17 14:36:30 · 3320 阅读 · 0 评论 -
十大排序算法-------【桶排序】详解(Java源码)
桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。桶排序的工作原理:假设输入数据服从均匀分布,将数据分到有限数量的桶里面,每个桶再分别排序(有可能再次使用到排序排序算法或者是以递归的方式继续使用桶排序进行排序)。算法描述 设置一个定量的数组当作空桶; 遍历输入数据,并且把数据一个一个放到对应的桶里面去; 对每个不是空的桶进行排序。 从不是空...原创 2019-03-17 14:35:24 · 4263 阅读 · 1 评论 -
十大排序算法-------【计数排序】详解(Java源码)
计数排序不是基于比较的排序算法,其核心是将输入的数据值转化为键存储在额外开辟的数组空间中,作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是由确定范围的整数。算法描述 找出待排序的数组中最大和最小的元素; 统计数组中每个值为i的元素出现的次数,存入数组C的第i项; 对所有的计数累加(从数组C中的第一个元素开始,每一项和前一项相加); 反向填充目标数组:将每个元素i放在新数...原创 2019-03-17 14:34:20 · 3458 阅读 · 0 评论 -
Java接口中的成员变量为什么必须声明为public static final?
我想对于每个Java程序员来说,接口都不陌生,接口中的方法也经常使用。而接口中的成员变量,就显得用得少一点,而对于成员变量为什么必须声明为public static final,可能就更不清楚了,而且我觉得大多数不清楚为什么要用static 和 final。下面我们就来解释一下。一、为什么要用final? 首先,我们应该明白一个问题。接口,实际上比抽象类更加抽象,它是最...转载 2019-03-21 18:57:27 · 3100 阅读 · 0 评论 -
String对象的intern()方法介绍
首先,我们先了解一下intern()方法的应用场景?String string1 = "zhangsan";String string2 = string1.intern();System.out.println(string1 == string2);这个结果是打印出来一个true;大家咋眼一看,是不是认为将string2的指针指向了string1的对象地址值?,其实不是...原创 2019-03-18 20:28:29 · 3211 阅读 · 0 评论 -
Obejct中有哪些公共方方法【详解】
1.getClass()public final 类<?> getClass()这个方法返回的是Object的运行类。返回的类对象是被表示类的static synchronized方法锁定的对象。实际结果的类型是Class<? extends |x|> 其中的|x|是静态类型上其表达的擦除getClass被调用。例如,在此代码片段中不需要转换:N...原创 2019-03-18 21:56:13 · 2718 阅读 · 0 评论 -
Jsoup包中的Element类
一、简介该类是Node的直接子类,同样实现了可克隆接口。类声明:public classElementextends Node它表示由一个标签名,多个属性和子节点组成的html元素。从这个元素中,你可以提取数据,可以遍历节点树,可以操纵html。二、构造方法1、publicElement(Tag tag, String baseUri, Attributes attri...原创 2019-07-04 11:23:09 · 3686 阅读 · 0 评论 -
Java正则大全
一、校验数字的表达式1 数字:^[0-9]*$2 n位的数字:^\d{n}$3 至少n位的数字:^\d{n,}$4 m-n位的数字:^\d{m,n}$5 零和非零开头的数字:^(0|[1-9][0-9]*)$6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$7 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})...原创 2019-07-21 15:29:17 · 2244 阅读 · 0 评论 -
使用Gson将Object转String出现\u003d 的原因
在使用Gson将Object转json字符串,或者将实体类例如:User转为json的过程中,最终的结果会在值中出现\u003d出现这个的原因是Gson gson = new Gson() 造成的这个时候需要使用Gson gson = new GsonBuilder().disableHtmlEscaping().create();实例化一个gsongson.toJson(...原创 2019-10-08 20:20:20 · 5694 阅读 · 1 评论 -
十大排序算法-------【堆排序】详解(Java源码)
堆排序是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并且同时满足堆积的性质:即子节点的键值或者索引总数小于(或者大于)它的父节点。算法描述 将初始待排序的序列构建成为大顶堆,此堆为初始的无序区; 将堆顶元素R[1]与最后一个元素R[n]交换,此时得到新的无序区(R1,R2,…Rn-1)和新的有序区(Rn),且满足R[1,2,…n-1]<=R[n]; ...原创 2019-03-17 14:31:23 · 3324 阅读 · 0 评论 -
十大排序算法-------【快速排序】详解(Java源码)
快速排序的基本思想是:通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可以通过分别对这两部分序列继续进行排序,以达到整个序列排序。算法描述: 快速排序使用分治法来把一个串(list)分为两个子序列。具体如下: 从序列中挑出一个元素。称为“基准”(通常是选取序列第一个元素,然后以他内容为标准) 重新排序数列,所有比基准小的放到左边,比基准大...原创 2019-03-17 14:24:54 · 2582 阅读 · 0 评论 -
JavaSE回顾及巩固的自学之路(四)——————方法和数组,面向对象
今天是2018.03.31,emmmmmm。好像距离上一次写Javase回顾总结已经好久好久过去,差一点就以为要停更了,哈哈哈。 其实呢,最近是真的好忙(额,这段时间觉得自己一直在学习),因为刚刚开学,面临很多学科的学习压力,自己技术有不够,所以,只有不断的学习,现在已经进入了前端的轨道,前几天就已经进入到html,xml中dom和sax解析方式,JavaScript....所以这边...原创 2018-03-31 12:00:12 · 2240 阅读 · 1 评论 -
Java控制台微动画输出 “草泥马神兽”
public static void gameClearance() { String s = "\r ┏┛ ┻━━━━━┛ ┻┓\r ┃ ┃\r ┃ ━ ┃\r ┃ ┳┛ ┗┳ ┃\r" + " ┃ ┃\r ┃ ┻ ┃\r ┃ ┃\r ┗━┓ ┏━...原创 2018-04-23 21:48:07 · 6875 阅读 · 0 评论 -
Java实现猜数字,附带提示功能。
很简单的一段代码;package com.changeyd.demo;import java.util.Random;import java.util.Scanner;public class MathDemo { public static void main(String[] args) { mathDemo(); } public static int randomWang() { re...原创 2018-04-23 21:49:13 · 3987 阅读 · 0 评论 -
String字符串如何分割????【基础面试题】
今天一个很宅的一个面试官面试我技术相关问题,一进来就直接看我简历,看完简历,然后一句话没说,直接问我问题。哦买嘎,连让我自我介绍都省掉了,直接上来就问我一些String的方法问题,,我的天,我很无奈,我面试的是Java实习岗位吗?但是今天有一个问题让我惊呆了,问:如何分割字符串?我说通常采用下标来分割,采用那个su什么的方法:他说不是,我是指返回一个数组的,我转念一想:t...原创 2019-02-28 22:10:06 · 8270 阅读 · 0 评论 -
深度了解Java集合------------ArrayList的实现原理
1.简单介绍一个ArrayListArrayList是List接口的一个可变数组的实现,实现了所有可选列表操作,并且允许包括null的所有元素,除了实现了List接口之外,此类还提供了一些方法来实现操作内部用来存储列表的数组的大小。对于每个ArrayList实例都有一个容量,该容量是指用来存储元素的数组的大小,他的大小容量总是小于等于列表的长度大小的。随着不断的想ArrayList中不断添...原创 2019-02-25 13:18:10 · 2937 阅读 · 0 评论 -
深度了解Java集合------------HashMap的实现原理
按照惯例,我们先简单介绍一下今天所说的集合实例:HashMapHashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并且允许存储null形式的Key和Value。此实例不保证所映射的顺序,特别是不能保证该顺序一直不变。 二、那么接下来我们说一下HashMap的数据结构及底层原理在Java编程语言中,最基本的结构就是两种,一种是数组,另外一种是模拟指针(引...原创 2019-02-25 13:45:57 · 2951 阅读 · 0 评论 -
十大排序算法----详解(Java源码)汇总
原文地址:https://www.cnblogs.com/onepixel/articles/7674659.html话不多说:对于排序算法,可以大致的分为两类 : 比较类排序:通过比较决定元素之间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序,相反道理,不通过比较来决定元素之间的相对次序,它可以突破基于比较排序的时间下界...原创 2019-03-16 23:53:07 · 3757 阅读 · 1 评论 -
十大排序算法-------【选择排序】详解(Java源码)
选择排序是一种简单直观的排序算法。它的原理就是:通过在没有排序中的序列汇总找到最小(或最大)元素,存放到排序序列的起始位置,然后,在从剩余未排序的序列中继续寻找最小(或最大)的元素,然后放到已排序的下一下标位置。以此类推,直至所有元素排序完成。 算法描述: N个记录的直接选择配置可经过n-1趟直接选择排序得到有序的结果。具体算法描述如下: 初始状态:无序区为R[1…n],有序区为空; ...原创 2019-03-17 14:17:37 · 3220 阅读 · 0 评论 -
十大排序算法-------【插入排序】详解(Java源码)
插入排序的算法描述是一种简单直观的排序算法。它的工作原理就是通过构件有序的序列,对于未排序的数据,在已排序中从后向前扫描,找到相应的位置并插入。算法描述: 一般来说插入拍摄都是采用in-place在数组上实现的。具体算法描述如下: 从第一个元素开始,该元素可以认为已经被排序; 拿到下一个元素,在已经排序的元素序列中从后向前扫描; 如果该元素(已经排序的序列元素)大于新元素,将...原创 2019-03-17 14:18:55 · 2802 阅读 · 0 评论 -
十大排序算法-------【希尔排序】详解(Java源码)
1959年Shell发明,第一个突破O(n²)的排序算法,是简单插入排序的改进版。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。具体算法描述: 选择一个增量序列序列t1,t2,…,tk,其中ti>ti+1,tk=1; 按增量序列个数k,对序列进行k趟排序; 每趟排序,根据对应的增量ti,将待排序序列分割成若干长度为m的子序列,分别对各子序列进...原创 2019-03-17 14:19:43 · 3289 阅读 · 0 评论 -
十大排序算法-------【归并排序】详解(Java源码)
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法的一个非常典型的应用。将已经有序的子序列合并,得到完全有序的序列;即先使得每个子序列有序,再使得子序列之间有序。若将两个有序表合并成一个有序表,称为2-路归并。算法描述: 把长度为n的输入序列分成两个长度为n/2的子序列 对这两个子序列分别采用归并排序 将两个排序好的子序列合并成一个最终的排序序列。 代码...原创 2019-03-17 14:20:27 · 3217 阅读 · 0 评论