自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yooppa的博客

喜欢deca joins 的浴室

  • 博客(30)
  • 收藏
  • 关注

原创 线程池设计示例:

以下先总结具体设计思路:1、创建一个线程池——ThreadPool 类 ,由于Java面向对象的特点 你要清楚该类定义来是干什么的 在实例化该类的对象一定会调用其构造方法 那么构造方法就有着要实现的功能 —— 就比如线程池对象实例化后就是一个装着可供处理某种任务的线程集合 于是线程池这个类本身不会去继承Thread 是特意处理某种类型任务的自定义线程类去继承因此在实例化线程池类的对象时 在该类的调用方法里实例化好这个特意处理某种类型任务的自定义线程类对象就是一种线程池public class Thre

2021-11-30 22:45:33 259

原创 java learn 线程池设计思想及Java自带的线程池

在简历中可以写上自己在Java方面有独立设计线程池的能力——如果真的确实如此线程池——是把多个线程装在一个集合中 把需要执行的任务或者功能目的扔进去随机一个线程进行处理(这里也可以理解为线程交互,毕竟你在创建任务时也是在实例化一个线程对象——因此会混淆那个是“任务” 那个是处理任务 因为他们都是线程类)线程类集合通常调用 notifyAll注意:处理任务的线程池在整个过程中,都不需要创建新的线程,而是循环使用这些已经存在的线程除了自定义线程池 java自带线程池:java提供自带的线程池,而不需要

2021-11-29 23:01:47 85

原创 利用comparator 使其TreeSet 的输出顺序由从小到大 变成从大到小

TreeSet 本有一个构造方法支持传入一个Comparatorpublic TreeSet(Comparator comparator)所以在实例化TreeSet 对象时可以:import java.util.Comparator;import java.util.TreeSet;public class collection_test { public static void main(String[] args) { TreeSet<Integer>

2021-11-28 23:38:38 621

原创 Java learn Lock对象和synchronized

首先回顾一下synchronized 关键字1、用于线程安全 解决同步问题 占有同步对象2、占有同步对象会十分执意 必须占有才肯罢休 synchronized 语句块执行结束才释放对象3、线程交互 this 提供wait,notify和notifyAll方法Lock 与其作用相类似 但是用法细节不同首先Lock是一个接口 配合import java.util.concurrent.locks.ReentrantLock;多态的写法实例化对象 进行引用Lock接口的方法Lock lock = n

2021-11-27 11:51:37 257

原创 Java 基础概念期末复习(仅限个人知识盲区)

1、涉及向下与向上转型类B是类C的父类 正确的实例化对象写法是:B b=new C ();子转父任意转 父转子则不行判断这种写法 主要是从右往左看 指向2、在父类中private修饰的成员变量能够被子类继承 且需要进行分配存储空间3、String和StringBuffer的实例化对象都是字符串类型 但是String内容在创建对象后不可以修改4、文件类的输入流输出流的类中 利用read方法读取数据在byte[]数组中该数组里的数据是所读取的所有数据 不是一次的5、不含公共类的Java源文件名称

2021-11-26 21:19:17 512

原创 Java learn 原子访问

首先 也是涉及到线程的安全与否:这里主要是引入原子性操作概念 及如何运用自JDKJDK6 以后,新增加了的一个包java.util.concurrent.atomic。原子性操作这种现象其实在平时码代码中就存在了,原子性操作即不可中断操作——赋值:int i = 5; 此类赋值操作原子性操作 本就是线程安全的比如:i++的操作 实质是由多个原子性操作组合而成的——先取值; 再加一; 再赋值 . 因此这种由多个原子性操作组合而成的操作就不是线程安全的结合synchronized 关键字的作用 ——

2021-11-25 23:04:21 361

原创 Java learn 线程交互

首先归纳以下目前遇到的方法需要try catch 的 ,因为时常会遇到调用方法的时候搞忘线程类里目前遇到的 sleep(); join();以及在线程交互中的同步对象的方法wait();由于线程之间存在交互通知比如 加减 修改保存等等 一个线程完成一种事件之后通知另一个线程干嘛。一般都有限制条件 才会启动另一线程 比如做减的方法到多少之后停下等待加法线程进行加法运算为了实现停下等待 可以配合while(true){continue;}但是占用CPU太多资源为避免此类问题的发生——使用wa

2021-11-24 17:36:30 288

原创 java细节——next() 和 nextLine()

关于String类的输入:Scanner 类实例 调用next() 和 nextLine() 两种方法时应注意的地方1、当用next()时 输入的整体字符串若含有空格 则空格之后的部分不会输入2、nextLine() 是输入整体一行一行的输入 所以会包括空格及其之后的字符串所以在对于字符串的输入时选择nextLine() 会更好...

2021-11-23 22:57:58 361

原创 Java learn 死锁

死锁产生原因:项目代码比较繁琐,多线程应用里有可能会发生死锁死锁在数据库里的解释更为清晰全面 且难度也是很大 概念难懂代码示例死锁: class fileguy { public static void main(String[] args) { players P1=new players("sd",3,3); players P2=new players("sd1",2,3); Thread t1=new Thread() { public void run()

2021-11-22 23:12:26 347

原创 Java learn 常见的线程安全类

1、HashMap 和 Hashtable 都实现了Map接口 以键值对方式保存数据这两者在之前提到过区别在于HashMap 可以存放Null 而Hashtable 不行Hashtable是线程安全类 HashMap不是至于验证 可以查看两个类的Java源码 Hashtable的实例方法都是以synchronized修饰符修饰的2、StringBuffer 和 StringBuilder 两者都可以对字符串进行相应操作StringBuilder 是非线程安全类 StringBuffer 是线程

2021-11-21 19:07:02 735

原创 Java learn 多线程同步问题

多线程的同步问题指的是多个线程同时修改一个数据的时候,可能导致的问题多线程的问题,又叫Concurrency 问题在之前的博客中提到过 各个线程会进行竞争CPU资源来执行代码 因此在改数据的时候 如果争相抢占CPU资源来做修改 最后的数据会变成脏数据比如 线程甲和乙甲拿到源数据 进行修改 还没来得及修改完 乙就开始拿源数据进行修改 使得最后的数据是乙的操作结果为准的 但是往往预期功能实现的不是这样得到数据也就被称为脏数据。这种情况往往是建立在多次运行之后产生的解决方法:为此引入 占用释放 来

2021-11-20 16:34:57 368

原创 Java learn 常见的线程方法

如同当初学习 String类一致 在学习之前 都会去熟悉该类的常见方法1、Thread.sleep() 可以理解为线程执行的延迟 存在于run方法中 放入参数其中 Thread.sleep(100) 表示该线程执行会停顿100毫秒 在这里会出现会抛出InterruptedException 中断异常——也就是该类是否停顿了 因为有可能停止就不执行了这时就会抛出 InterruptedException 以源码角度来看实质就是throws因此需要在调用的时候 进行try catch 异常捕抓2、Thr

2021-11-19 22:09:11 310 1

原创 java practice——利用多线程同时在文件夹中查找多个字符串并输出其路径

细节:今天发现的细节是 你在写一个方法时对象去调用它的时候 该方法里只需要写属性的操作 而不用 对象.属性 这种写法去操作 因为该对象调用时 默认其方法里的属性是该对象的。public boolean Isrunover( ) { return speed<patience?true:false; }而不是这种:public boolean Isrunover(players o1) { return o1.speed<o1.patience?tr

2021-11-18 23:07:24 567

原创 多线程的进一步理解

刚开始学多线程的时候 接触其概念似懂非懂——就是谈及概念很好理解 但是上手代码实操就犯难以下是代码实操之后的领悟(个人理解):首先 线程的建立 是因为自定义的类的功能实现需要这么一个线程支持比如 建立一个选手类 每一个选手在同一场比赛竞争 这时情况千奇百怪但是都是同时进行 不可能让选手挨个挨个来单独进行比赛 这时就需要利用线程类具体的思路也就是:1、建立选手类 (设计的开始,针对生活中的一种群体而言建立)给出其属性, 实现相应的方法要想更真实 可以让部分选手起步晚一点:try { T

2021-11-17 22:42:31 41

原创 Java learn 多线程的创建及启动

多线程——是涵盖在操作系统里的一部分 所以在学之前最好读一下操作系统原理的系列教材多线程的意思就是在同一时间,可以做多件事情。创建多线程的方法有 继承线程类 实现Runnable接口 及匿名类的写法线程概念:首先 进程(processor)和线程(Thread) 的概念区别进程: 比如 启动游戏就是一个进程 该进程可以在任务管理器看见且可关闭线程:游戏中会同时发生很多事件 这些事件就是线程因此 线程是存在于进程里的 进程涵盖多个线程且可同时发生 这种例子在平时上网的时候很常见在不用线程类去实

2021-11-16 15:28:42 2653

原创 Java learn lambda聚合操作

首次利用聚合操作 是在容器类中lambda表达式其实备受争议 有的人觉得还是别用 而有的极力推崇 但不能否定的是lambda表达式运用好了之后对于个人的编程能力 逻辑思维能力也是不错的提升依个人而言 需要的地方能用就用 不用刻意去思考那个地方要用lambda表达式这部分是lambda表达式的核心部分——聚合操作 极大的节省了代码量以下是个人学习聚合操作的总结(配合部分代码):聚合操作能够完成传统方式的遍历算法——利用for语句配合if else的条件语句进行的判断以此达到功能目的的代码段以下就是

2021-11-15 15:49:09 932

原创 Java继承部分自我细节处总结

写在之前:关于为何总结此次 继承部分的细节 是因为在一次过程化测验中狠狠戳中弱点——对于继承部分的理解还是太浅以下是如何发现这一薄弱环节:题目详情就详略得当的提一下——首先题目要求实现 三个类——People Student Cadre 一个接口——DutyJava面向对象的特征 正和关系型数据库有着一定联系 :数据库对于一个实体有着属性、关系 究其这一点和Java面向对象的特征有一定相似之处People 很显然相对于Student Cadre这两个类是父类 "学生"在"人类"这个集合中按照包

2021-11-14 22:42:32 166

原创 Java learn lambda的方法引用

lambda 的方法引用 实质也是建立在把引用方法的代码段简写成lambda表达式分为以下几种:1、引用静态方法首先得有个静态方法写成静态方法是因为 main主方法用类名调用时只会调用静态方法h -> Test.test(h) —— h为变量名具体类型自定义 Test示例类名 引用静态方法test 放入参数h也可写成 Test::test依据情况而言 有的时候方法里直接放lambda表达式即可 以上只作为介绍引用静态方法将其核心语句写入静态方法并返回。2、引用对象方法建立在对该类进行

2021-11-13 17:00:59 563

原创 java learn lambda表达式概念的引入

lambda 表达式的运用 实质是为了方便而表达式 实质就是我们平时在码代码的时候写的式子——诸如条件语句 或者判定的语句1、常见的方法比如 使用增强型for循环遍历整个容器类且这个容器类泛型是——Integer 若要在其中添上if语句判定找出合乎要求的数字 就得有相应约束的式子2、匿名类来实现提供一个接口 之后定义一个类implements该接口Te t=new Te() { public void sf() { } };其中 方法 sf

2021-11-12 20:14:05 698

原创 Java learn 泛型转型

1、对象转型据以往的学习,子类转父类 是一定可以成功的2、以此 在泛型转型这方面的实质也是 和对象转型一样但是:值得注意的是:子类泛型不可以转换成父类泛型 虽然子类转换成父类在对象转型可以发生为什么不可以:如果子类泛型转成父类泛型该父类泛型引用会去指向子类那么其他子类理应可以往里面实例化对象 但是实质还是指向的是子类泛型 因此都是子类是不能将其中实例化对象同理:父类也不可以转子类...

2021-11-11 17:48:07 333

原创 java learn 泛型通配符

1、? extends 类名这种通配符 指的是该类的子类泛型的某一个 也是意在表达这个容器类装的那些类的对象数据代码示例:(由集合中的泛型示例)ArrayList<Hero> er=new ArrayList<>(); er.add(new Hero("Hero-")); ArrayList<? extends Hero> sd=er;写法如上图所示为什么需要运用这种——ArrayList<? extends Hero> sd 我的理解是为

2021-11-10 15:56:55 386

原创 Java 常见数据结构使用泛型所呈现的便捷之处

Stack 栈 使用泛型 案例:import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedList;public class MyStack<T> { LinkedList<T> sd=new LinkedList<>(); public void pull(T t) { sd.addFirst(t); } public void peek() {

2021-11-09 16:49:44 661

原创 Java learn为什么使用泛型

泛型 这一功能 目前的运用是在集合这一部分其实集合中的泛型 可用可不用不用泛型:ArrayList 不用泛型时 支持所有类 也就是——Object类然而调用get(0) 返回的类型是Object 所以在想用get调用指定对象类型避免不了对象转型——但是开发人员在码代码时 一个容器肯定得放多种类型的实例化对象当在 get() 获取时需要进行对象转型 对象类型少好记忆 但是多了会出现对象转型异常因此使用泛型的好处也就在此处体现了 能够极大的避免出现此类错误使用泛型:泛型的好处:泛型的用法是在

2021-11-08 15:20:31 57

原创 Java learn 集合框架(比较器 聚合操作(伊始))

比较器:import java.util.Comparator;是一个用于比较多个对象特定属性值的大小的类——也就是 设计一个类实例化其对象 会包含诸多属性值 那么排序多个对象时对于容器类来说 要利用到工具类Collections 其中的sort这个方法可以实现 但是对象属性太多没指定是按照那个 因此会报错为解决 利用到Comparator 这个比较器 来选取特定属性值进行操作 就可以避免。解决方式 有两种写法:1、在要对其实例化对象的类进行接口Comparable的方法实现 可以查看接口Com

2021-11-07 17:05:49 95

原创 Java learn 自定义的MyHashMap

主要实现HashMap 的两个方法——put(); 和 get();但是 当我新建一个类进行测试的时候 告知我java.lang.StackOverflowError就无语…MyHashMap 里有之前写好的自定义hashcode方法 自定义的MyHashMap 完全是按照 HashMap键值对理解进行复刻的组成 —— 一个接口 包含put 和 get 两个方法 定义一个类用于进行实例化构造有参构造方法进行键值对的定义 之后就是MyHashMap 这个类来实现接口interface:public

2021-11-06 17:22:54 108

原创 Java practice 随机生成随机长度的字符串 并自写hashcode函数 返回其hash值

hashcode 主要是返回一个int值 其实核心在于他对于这个hash值怎么得来的算法才是难以理解的 但是给一个算法 照着写还是蛮容易的比如怎么去计算这个hashcode规定:s[0] 表示第一位字符n表示字符串的长度那么 (s[0]+ s[1] + s[2] + s[3]+ s[n-1])*23. 这一个表达式就是求hashcode 的算法 —— 也就是已经设计好 只需读懂他的意思照着码 就行 但是难懂的是为什么要去定义一个这样的表达式 逐渐认识到 自己还只是个coder 不是个designer

2021-11-05 12:00:52 301

原创 Java learn HashCode 原理 自我总结

以下是经过个人学习之后 对于Hash Code 的总结 可能存在错误:在即将结束 对于集合框架的学习——也就是学到Hash Code 这里 感觉 对于算法的时间复杂度和空间复杂度 要求也越来越高 所以需要积累更多高效的算法在写代码时。实现了List 接口的容器类 是在进行集合框架学习时 第一时间接触的 比如ArrayList 之后 再是 Map Set 接口之后发现 容器类有存储就有插入 查询 删除 修改 这些基本操作就涉及到了时间的效率问题ArrayList 和 HashMap 同时插入等量的对

2021-11-04 15:17:54 85

原创 Java learn and practice HashMap table 及 几种set

相应练习 也就是利用Hash Map 实现 在键值对中 键与值反转——键变值值变键写在之前: 实践明白了HashMap相对于Hashtable 确实是可以存放Null代码示例:import java.util.HashMap;import java.util.Hashtable;import java.util.Map;import java.util.ArrayList;public class Hashset { public static void main(String[]

2021-11-03 17:17:09 60

原创 Java learn浅谈Hashtable和HashMap的区别

首先:HashMap和Hashtable都实现了Map接口,都是键值对保存数据的方式区别1:HashMap可以存放 nullHashtable不能存放null区别2:HashMap不是线程安全的类Hashtable是线程安全的类需要导入:import java.util.HashMap;import java.util.Hashtable; HashMap<String,String> hashMap = new HashMap<String,String>()

2021-11-02 14:44:24 74

原创 Java learn ArrayList和LinkedList的区别

1、ArrayList和LinkedList的区别ArrayList 插入,删除数据慢LinkedList, 插入,删除数据快 (本就是Java 封装好的一个链表结构)ArrayList是顺序结构,所以定位很快LinkedList 是链表结构,必须得一个一个的数过去,所以定位慢至于为什么定位慢? 以下代码示例有形象展示:import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedList;impor

2021-11-01 20:47:30 45

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除