- 博客(32)
- 收藏
- 关注
原创 ArrayList和CopyOnWriteArrayList使用iterator迭代器出现的一些问题
看源码突然发现一个神奇的地方,关于线程不安全的ArrayList和线程安全的CopyOnWriteArrayList使用iterator迭代器出现的一些问题。ArrayList的分析我们知道ArrayList是线程不安全的集合类,但是在单线程环境下,使用iterator进行遍历修改的时候会出现 java.util.ConcurrentModificationException并发修改异常,这是为什么呢?原来是由于ArrayList实现了fail-fast机制,什么是fail-fast机制呢?如果当一
2021-04-07 22:16:42 703
原创 单例模式的几种实现方式
import java.util.Random;public class Test{ public static void main(String[] args) { Singleton instance = Singleton.getInstance(); System.out.println(instance); Singleton instance2 = Singleton.getInstance(); System.out.
2021-03-23 10:25:02 135
原创 HashMap源码分析(逐句解析)
今天学习了HashMap的源码分析,然后自己跟着源码走了一遍,写了一些总结,嘿嘿。核心属性分析既然要学习HashMap,那我们肯定要知道他有哪些属性,不然方法就更看不懂了。推荐可以看一下这一篇博客:https://blog.csdn.net/fan2012huan/article/details/51087722,通过反射进行测试,可以更好的理解属性的意义。重要属性如下://HashMap核心属性分析 //默认数组容量大小为16 static final int DEFAULT_INI
2021-03-12 19:31:35 161 1
原创 ArrayList及LinkedList源码分析
jdk7的情况利用无参构造ArrayList list = new ArrayList();创建一个ArrayList会在底层创建一个长度为10的Object数组;调用add方法之后,list.add(123)之后直接将ObjectArray[0]=new Integer(123);当添加元素超过10之后,例如添加第十一个元素,此时数组容量不够需要进行扩容操作,数组会扩容为原始数组长度的1.5倍,同时需要将原有数组的数据复制到新的数组中。建议在开发中使用带参数的构造器:ArrayList lis
2021-03-05 21:54:22 140 2
原创 Spring中Bean的生命周期
Spring中Bean的生命周期实例Spring中Bean的生命周期大致分为如下几步:1、通过构造器创建Bean实例2、调用set函数对Bean完成属性的填充以及对其他bean的引用3、调用bean实例的初始化方法4、此时已经可以获取bean对象,可以使用了5、关闭容器后,调用bean实例的初始化方法实例演示首先导入Spring的依赖以及Junit依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http
2021-03-04 21:20:21 123 1
原创 论文-Catch22:Canonical Time-series Characteristics(规范时间序列特征)
一、论文主要工作总结在这项工作中,介绍了一种时间序列特征的小集合的方法,该方法(i)在给定的时间序列问题集合中表现出强大的分类性能,并且(ii)具有最小的冗余性。将该方法应用于93个时间序列分类数据集(包含超过147,000个时间序列),并使用hctsa特征库的过滤版本(4791个特征),引入了22个规范的时间序列特征,catch22可以适合时间序列数据挖掘任务中通常遇到的动态变化。尽管将分类精度平均降低了7%,但从4791降到22的降维与计算时间减少了约1000倍,并且时间随时间序列长度的变化接近
2020-06-16 10:05:51 1165
原创 毕25-第七天(day12)-多线程(线程间通信)
线程间通信 线程间通信其实就是多个线程在操作同一个资源,但是操作的动作不同,下面需要实现一个需求:有一个输入操作和一个输出操作,一边向缓冲区中存数据,一遍从缓冲区中取数据:class Res{ String name; String sex;}class Input implements Runnable{ private Res r; Input(Res r){ this.r = r; } public void run() { int x = 0; while..
2020-05-12 16:32:01 229
原创 毕25-第六天(day11)-多线程
多线程创建及运行 进程是一个正在执行的程序,每一个进程执行都有一个执行顺序。该顺序是一个执行路径,或者叫一个控制单元。线程就是进程中的一个独立的控制单元,线程在控制着进程的执行。一个进程中至少有一个线程。JavaVM启动的时候会有一个进程java.exe,该进程中至少有一个线程负责Java程序的执行,而且这个线程运行的代码存在于main方法中,该线程称之为主线程。扩展:其实更细节的说,jvm启动的不止一个线程,还有负责垃圾回收机制的线程。Java已经提供了对线程这类事物的描述,即..
2020-05-11 22:43:34 156
原创 毕25-第五天(day10)-面向对象(异常)
finally关键字 在下面的例子中,finally中语句,以及后面的输出over语句都执行了:class FuShuException extends Exception{ FuShuException(String msg){ super(msg); }}class Demo{ int div(int a,int b)throws FuShuException{ if(b<0) { throw new FuShuException("除数为负数"); }..
2020-05-10 23:27:45 134
原创 毕25-第四天(day09)-面向对象(异常)
异常概述 异常就是程序在运行时出现的不正常情况。异常的由来:出现问题是现实生活中一个具体的事物,所以可以通过Java的类来描述,并封装为对象。所以异常就是Java对于不正常情况进行描述后的对象体现。如下面的除零操作:class Demo{ int div(int a,int b) { return a/b; }}class Test{ public static void main(String[] args) { Demo d = new Demo(); d.di..
2020-05-09 22:19:24 121
原创 毕25-第三天(day09)-面向对象(内部类)
内部类访问规则 内部类的访问规则:1、内部类可以直接访问外部类中的成员,包括私有成员。之所以可以直接访问外部类中的成员,是因为内部类持有了一个外部类的引用,格式为:外部类名.this。2、外部类要访问内部类,必须建立内部类对象。看如下案例:class Outer{ private int x = 3; class Inner{ void function() { System.out.println("inner:"+x); } } void method()..
2020-05-08 23:58:29 166
原创 毕25-第二天(day08)-面向对象(多态)
多态的扩展性 假设有如下几个类:abstract class Animal{ abstract void eat();}class Cat extends Animal{ public void eat() { System.out.println("吃鱼"); } public void catchMouse() { System.out.println("抓...
2020-05-07 22:10:25 158
原创 毕25-第二天(day07)-面向对象(继承与接口)
继承 在下面的例子中有两个类,Student、Worker。class Student{ String name; int age; void study(){ System.out.println("study"); }}class Worker{ String name; int age; void w...
2020-05-07 14:00:34 133
原创 毕25-第一天(day06)-面向对象(设计模式之单例设计模式)
单例设计模式 设计模式:解决某一问题最行之有效的方法。Java中有23种设计模式。单例设计模式:解决一个类在内存中只存在一个对象。想要保证对象唯一,有如下要求:1、为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象;2、还为了让其他程序可以访问到该类对象,只好在本类中自定义一个对象;3、为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。这三个要...
2020-05-06 21:21:54 177
原创 毕25-第一天(day06)-面向对象
static关键字 static是一个静态的修饰符,用于修饰成员(成员变量、成员函数)。当成员被静态修饰后,就多了一个调用方式,除了可以使用对象调用,还可以直接被类名调用,类名.静态成员。class Person{ String name; //实例变量,或成员变量 static String country = "CN"; //静态成员变量,或类变量 publi...
2020-05-06 20:09:59 126
原创 毕25第一天-面向对象
面向对象与面向过程的区别 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向对象是把构成问题的事物分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。直观的例子:人开门。面向过程思想:1、打开门;2、关闭门。面向对象思想:将人和门分为两个对象,每个对象有不同的方...
2020-05-06 12:18:30 175
转载 Java学习路线大纲
一、Java基础课程1)Java基础课程内容涉及:Java开发介绍、Java数组、Java面向对象、常用基础类、集合、IO流、多线程、异常、网络、反射。 第一阶段:Java基...
2020-05-05 19:19:42 1332
原创 Java——方法的参数总是使用值传递
在C语言中函数的参数有值传递方式以及地址传递方式两种,但是在Java中只有值传递这一种方式。案例一:在下面的例子中执行将a乘以3int a = 10;three_a(a);方法three_a()的部分如下:public static void three_a(int x){ x = x*3;}将a传入方法中,经过调用three_a()方法之后,首先x=10...
2020-05-04 21:05:21 210
原创 Java——不规则多维数组的构建
普通多维数组的构建相对来说都是规则的,比如定义一个二维数组:int[][] a = new int[10][5],这个数组是一个10行5列的二维数组。上述构建的二维数组是每行的列数都是相同的,但是对于想构建每一行的列数有所不同的数组,则需要其他的定义方式。在Java中,实际上没有多维数组,只有一维数组,多维数组称为“数组的数组”;对于一个二维数组来说,首先把它看作一维数组,这个一维数组中的...
2020-05-03 19:21:16 877
原创 论文——Deep Forest: Towards an Alternative to Deep Neural Networks - 周志华老师深度森林第一篇
在“Deep Forest: Towards an Alternative to Deep Neural Networks”(论文网址见文章最后)这篇论文中,提出了除利用神经网络的深度学习以外的基于树的深度方法gcForest。这篇深度森林论文中使用的是多粒度级联森林gcForest,深度学习取得成功的主要原因是有:有逐层的处理、有内部特征的变化、有足够的模型复杂度。类比于这些原因,周教授...
2020-03-13 09:31:05 1110
原创 论文——AutoEncoder by Forest-周志华老师深度森林第二篇
在论文AutoEncoder by Forest中,提出了EncoderForest,即“eForest”,它可以让一个决策树集成在监督和无监督的环境中执行前向和后向编码运算。 事实上,森林通常被用来进行前向预测,从每棵树的根部到叶子,而不知道如何进行后向重建,即从叶子上获得的信息中推导出原始样本。 下面是前向编码的算法1: 对于...
2020-03-12 13:44:08 607
原创 关于周志华老师的几篇深度森林论文的介绍
第一篇:https://cloud.tencent.com/developer/article/1086286第二篇:https://cloud.tencent.com/developer/article/1069274第三篇:https://cloud.tencent.com/developer/article/1145554会议内容:https://cloud.tencent.co...
2020-03-12 11:06:49 503
原创 多视角学习的一些总结博客
多视角学习包括:(1)协同训练;(2)多核学习;(3)子空间学习协同训练:https://blog.csdn.net/shine19930820/article/details/77426599https://blog.csdn.net/qq_35994754/article/details/73457817https://blog.csdn.net/s2010241013/art...
2020-03-12 11:03:14 689
转载 集成学习方法及思想总结
集成学习(Ensemble Learning)有时也被笼统地称作提升(Boosting)方法,广泛用于分类和回归任务。它最初的思想很简单:使用一些(不同的)方法改变原始训练样本的分布,从而构建多个不同的分类器,并将这些分类器线性组合得到一个更强大的分类器,来做最后的决策。也就是常说的“三个臭皮匠顶个诸葛亮”的想法。集成学习的理论基础来自于Kearns和Valiant提出的基于PAC(proba...
2019-11-24 15:55:01 1119
转载 Java 方法——基本类型参数的绑定与引用类型参数的绑定
原文链接:https://blog.csdn.net/wentianwwl/article/details/102757152基本类型参数的绑定class 基本类型参数绑定01 { public static void main(String[] args){ Person p = new Person(); int n = 15; ...
2019-11-05 11:38:32 1467 1
原创 LeetCode刷题——5.最长回文子串
题目来源:https://leetcode-cn.com/problems/longest-palindromic-substring题目5给定一个字符串 s,找到 s 中最长的回文子串。你可以假设s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"解法:...
2019-10-28 22:13:06 170
原创 LeetCode刷题——4.寻找两个有序数组的中位数
题目来源:https://leetcode-cn.com/problems/median-of-two-sorted-arrays题目4:给定两个大小为 m 和 n 的有序数组nums1 和nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为O(log(m + n))。你可以假设nums1和nums2不会同时为空。示例 1:nums1 = [...
2019-10-25 16:59:28 197
原创 LeetCode刷题——3.最长无重复字符的子串
题目来源:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters题目2:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例:示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:...
2019-10-22 21:27:24 227
原创 LeetCode刷题——2.两数相加
题目来源:https://leetcode-cn.com/problemset/all/题目2:给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -...
2019-10-22 09:27:50 280
原创 LeetCode刷题——1.两数之和
题目来源:https://leetcode-cn.com/problems/two-sum题目1:给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9...
2019-09-24 23:06:51 128
原创 单链表相关问题的Java实现
题目:设在一个带表头结点的单链表中所有元素结点的数据值按递增顺序排列,试编写一个函数,删除表中所有大于min小于max的元素(若存在)。单链表的结构包括当前结点的数据域和指向下一结点的指针域。首先,定义结点类的结构:public class Node { Node next = null; int data; public Node(int data){...
2019-09-24 00:12:20 298
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人