医学遗传学
3 篇文章
论文解读
5 篇文章
2021-09-15
896 字
4 分钟
你会几种“复制”文本的方式?
前言
最近有一位朋友学习了I/O流,他提出了这样一个问题:现在有一个简单的haha.txt文件,利用IO流将haha.txt中的所有文本复制到第二个txt文件:haha2.txt中,问有多少种方式?
I/O流是Java中一个比较重要的模块,但是jdk中与IO流有关的类比较繁多,大伙记忆起来也比较繁琐,推荐大家多敲代码,在敲代码的过程中,对记忆这些类会轻松许多。
借那位朋友的问题,我们来复习一下IO流中四种最基本的流。
四种最基本的IO流
FileInputStream 和 FileOutputStream
第一种方式:
利用 FileInputStream 和 FileOutputStr
2021-09-03
3.8k 字
14 分钟
Java多线程详解(线程池)
前言
上一章我们介绍了Java中的Thread类里一些常用的方法。本节我们就来聊一聊线程池。
说到“池”,大家或许都不陌生,在java中,我们有见过数据库连接池,Java常量池,对象池等等,将实体进行“池化”,这种“池化”思想,有助于我们对实体进行统一的管理,监控和调用。
本章的主要内容有:
创建线程池
构造方法的参数解读
四种功能性线程池
关闭线程池
作为经常被面试的一个模块,线程池的概念不是那么通俗易懂,但在实际开发应用中,线程池对程序性能优化有着不可磨灭的贡献。
线程池
线程池效率对比
首先,我们来对比下面两个程序运行的效率。程序一,使用前面我们学过的一般线程:
12345
2021-09-02
3.8k 字
14 分钟
Java多线程详解(深究Thread类)
前言
上一章咱介绍了线程同步,了解了解决线程安全的基本思想----“队列与锁”。
在前几章的介绍中,我们时不时地会使用到sleep()这个方法,知道它可以通过使线程休眠来扩大问题发生的可能性,使开发者能够迅速定位到bug的位置。它是Thread类中一个比较重要的静态方法,那么本章就来介绍一下Thread类中一些常用的方法。
在介绍Thread类里面的方法之前,我们来回顾一下线程的五大状态:
请注意体会,当调用下面的这些方法时,线程的状态是如何变化的。
sleep()
sleep()方法有两种重载:
public static native void sleep(long millis)
2021-08-31
2.8k 字
12 分钟
Java多线程详解(线程同步)
前言
上一章,我们通过几个例子介绍了线程安全问题,而说到线程安全就不得不提到线程同步,它是解决线程安全的一种重要方法。本章就来简单地介绍一下线程同步。
从上一章的学习我们知道,当多个线程操作一个资源的时候,有可能由于线程的不确定切换出现数据不一致的安全问题,因此,我们要解决这个问题,就得想办法使得资源在某个时间戳只能被一个线程访问。基于这样的思想,我们提出了“队列与锁”的策略:
通俗理解,就是将所有线程排成一个队列,给要共享的资源上把锁,只有线程获得该资源的锁之后,才能访问该资源。
这也是线程同步的基本思想。所谓线程同步,是指同一进程中的多个线程相互协调工作从而达到一致性。使用线程同步,在解
2021-08-29
2.6k 字
10 分钟
Java多线程详解(线程不安全案例)
前言
通过前面两章的学习,我们了解了线程的基本概念和创建线程的四种方式。
这一章,我们来谈谈线程安全问题。
也许小伙伴们刚听到这个词语的时候,是一脸懵逼,笔者初学线程安全也是这样的。所以本章从几个案例入手,让小伙伴们尽可能地理解什么是线程安全。
sleep()方法
在学习线程安全之前,我们首先得简单地介绍Thread类中的一个静态方法----sleep()
首先我们要知道,程序运行的速度是非常快的,当CPU调度某个线程开始执行时,由于运行速度太快,此线程可能执行完之后CPU才开始调度其他线程,这样显然不符合并发的特点,因此我们希望能阻塞某个线程的运行,使得其他线程有执行的“机会”,这时我们
2021-08-28
1.3k 字
5 分钟
Java多线程详解(如何创建线程)
前言
前面一章,我们了解了线程的基本概念,从这一章,我们开始学习如何创建一个线程。总的说来,在java中,有四种创建线程的方式:
继承Thread类
实现Runnable接口
实现Callable接口
使用线程池
上述四种创建线程的方式中,我们着重介绍 1,2 ,对于 3,4,小伙伴们作为了解即可。下面用代码来实现这几种创建方式。
继承Thread类
下面的代码中使用了sleep()方法,不太理解的同学可以先放一放,后面我们会详细介绍这个方法。
123456789101112131415161718192021222324252627282930313233/** * * @aut
2021-08-28
1k 字
3 分钟
Java多线程详解(基本概念)
前言
从本章开始,我们就要开始介绍Java中一个非常重要的概念-----多线程。线程化思想是计算机领域的重要思想,有了线程,咱编写的程序才能更为高效准确地运行起来。
首先,咱来了解一下为什么会有线程以及多线程的出现?
实际上,最早出现的计算机主要是为了解决一些复杂的计算问题,这个时期的计算机只能识别一些特定的指令,由于计算机无法存储指令,当用户未输入任何指令的时候,计算机就不会工作,因此很多情况下计算机都处于暂停状态,这样计算机本身的资源并未得到有效的利用。
后来随着科学计算的需要,科学家们开始试着给计算机写入一系列指令,让计算机执行完之后从另一台设备中输出,这样虽然提高了计算机本身资源的利
2021-08-26
912 字
3 分钟
java中出现的静态代理模式
前言
本章我们来介绍,java中出现的静态代理模式。
代理,对应于英语单词-----Proxy,从字面上理解,就是在实现代理目标(Target)所有的需求的同时,还能够实现代理目标无法做到的事情,比如为目标添加审查和监控功能,主要包括前置处理和后置处理。
代理如何理解?
咱从网上找到了一个典型的例子,在这分享给大家,请大家从下面的例子中细细体会:
话说啊我们可爱的小明同志马上就要结婚啦,可是,许多的琐事诸如场地布置,鲜花摆放,婚礼流程等等,他自己操办不过来,于是,他找到了一家婚庆公司,由婚庆公司代替他去操办所有的琐事,而他自己,只需要专注于自己的事情就行了(比如努力工作挣足够的钱来办婚礼_
2021-08-25
1.3k 字
5 分钟
Lambda表达式初识
前言
之前有一个小伙伴给我发了一段代码,说是看不懂,这段代码是这样的:
12345678910public class Aha { public static void main(String[] args) { Care iCare = () -> System.out.println("Hahahahaha~"); iCare.care(); }}interface Care{ void care();}
如果屏幕面前的你也不是很能够理解,那就听我细讲吧。
2021-08-24
1.8k 字
5 分钟
java的设计模式
前言
今天,给大家简单地介绍一下设计模式。关于设计模式,网上的资料有许多,结合笔者自己的理解,简单地谈一谈。
什么是设计模式?
查阅了许多资料,他们给出的定义基本一致:
设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。
合理地使用设计模式能够使代码编制真正工程化。经过好几辈科学家的探索和实践,他们总结出了许多合理且高效的模式和思想,比如“优先使用对象的组合而不使用继承”,再比如“针对接口编程,依赖于抽象而不依赖于具体”等等。
设计模式是软件工程的基石。在现实生活中所见到的许多原理,在设计模式中