线程池
线程池引入一个线程完成一项任务所需时间为: 创建线程时间 - Time1 线程中执行任务的时间 - Time2 销毁线程时间 - Time3 为什么需要线程池 线程池技术正是关注如何缩短或调整Time1和Time3的时间,从而提高程序的性能。项目中可以把Time1,T3分别安排在项目的启动和结束的时间段或者一些空闲的时间段 线程池不仅调整Time1,Time3产生的时间段,而且它还显著减少了创建线程的数目,提高线程的复用率 系统启动一个新线程的成本是比较高的,因为涉及与操作系统的交互,在这种情形下,使用线程池可以很好地提高性能,尤其是当程序中需要创建大量生存期很短暂的线程时,优先考虑使用线程池 Java提供的线程池 ExecutorService:线程池的接口 Executors:创建各种线程池的工具类 1234567891011121314151617181920212223242526272829303132public class Test { public static void main(String[] args) { //创建单个...
Fork/Join并行计算框架
Fork/Join并行计算框架简介 Fork/Join框架:在必要时将一个大任务进行拆分(fork)成若干个小任务(拆到不可再拆时),再将一个个 小任务的运行结果进行join合并,一般都是在大数据搜索中使用 Fork/Join采用“工作窃取” 模式(work-stealing) : 当执行新的任务时它可以将其拆分分成更小的任务执行,并将小任务加到线程队列中。在程序执行过程中如果有闲置线程,闲置线程会把其他线程的线程队列末尾的任务偷偷拿到自己的线程中执行,注意线程队列是双关,即队列里最前面的任务会被直接,最后的任务会被闲置线程拿走去执行。这种方式减少了线程的等待时间,提高了性能 具体使用12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152public class Test1 { @Test public void test01() { //需求:计算1-10000000L之和 //创建...
一阶段知识点梳理
JavaSE基础 变量:程序执行过程中可变的量(存储单个数据的容器) 标识符:给类、接口、方法、变量取名字时使用到的字符序列 组成部分:数字、大小写字母、$、_、中文 注意: 区分大小写 不能使用数组开头 不能使用除了$和_以外的符号 不能使用关键字 不要使用中文 关键字:Java提供的具有特殊意义的单词 基本数据类型 描述 占用空间 byte 字节型 1字节 short 短整型 2字节 int 整型 4字节 long 长整型 8字节 float 单精度浮点型 4字节 double 双精度浮点型 8字节 char 字符型 2字节 boolean 布尔型 4字节 注意:boolean底层使用int去存储,boolean的数组的元素使用byte类型去存储 运算符 符号 算数运算符 +、-、*、/、%、++、– 赋值运算符 =、+=、-=、*=、/=、%= 关系运算符 ==、!=、>、&g...
JDK1.8新特性
JDK1.8新特性JDK1.8新特性简介 速度更快 - 优化底层源码,比如HashMap、ConcurrentHashMap 代码更少 - 添加新的语法Lambda表达式 强大的Stream API 便于并行 最大化减少空指针异常 - Optional Lambda表达式简介 Lambda是一个匿名函数(方法), 允许把函数作为一个方法的参数 。利用Lambda表达式可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。 一般都是优化匿名内部类 基础语法无参数、无返回值的抽象方法 123456789101112131415161718public class Test1 { @Test public void test01() {// I1 i1 = new I1() {// @Override// public void method() {// System.out.println("传统使用匿名内部类的方式");// }// };...
传统日期格式化的线程问题
传统日期格式化的线程问题需求:让多线程同时去解析日期错误示范123456789101112131415161718192021222324252627282930public class Test1 { @Test public void test01() throws Exception { //格式化日期类 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); //任务类:用于解析成Date对象 Callable<Date> task = new Callable<Date>() { @Override public Date call() throws Exception { return sdf.parse("20200123"); } }; //Date解析结果的集合 List<Future<Date>> list =...
IO流
IO流概念 I – in – 输入(读) O – out – 输出(写) 流 – 一点一点的想水流一样去传输数据 注意:站在程序的角度去看待输入还是输出 分类 按照方向分流:输入流、输出流 按照单位分流:字节流、字符流 按照功能分流:基础流/节点流、处理流 注意:new 处理流(new 基础流) – 装饰者模型 – 处理流对象中往往包含了基础流的对象,在基础流的基础上拓展了额外的功能,使得流更为强大(效率),工作中一般使用处理流 存储单位 1024KB = 1MB 1024MB = 1GB 1024GB = 1TB 1024TB = 1PB 注意:进制1024 学习注意事项 按照流的发展历史去学习 注意流与流之间的继承关系 举一反三 字节流 应用场景:操作二进制数据(音频、视频、图片) abstract class InputStream – 字节输入流的基类(抽象类) abstract class OutputStream – 字节输出流的基类(抽象类) class FileInputS...
平时在用的网站
平时在用的网站学术信息检索 小木虫 - 学术 科研 互动社区 艾瑞咨询 百度学术 - 保持学习的态度 成都工业学院图书馆 文献检索 - Web of Science 核心合集 维普网 万方数据知识服务平台 图书馆 中国国家图书馆·中国国家数字图书馆·国家典籍博物馆 普中开源电子分享网 - Powered by Discuz! 书栈网 标准 中国图书馆分类法 - 中图分类号 - 中图法 - 中图分类法 - 中图分类号查询 - 中图法分类号 - 中图分类 - 中国图书分类法简表 日常视野 豆瓣 购物 淘宝网 - 淘!我喜欢 京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物! 视频 简影 咒 1080P完整版免费在线观看-大米星球 金曼TV-在线观看 Vidhub视频库-在线视频网站-海量高清视频在线观看 茶杯狐 Cupfox - 努力让找电影变得简单 工具 KOOK(原开黑啦),一个好用的语音沟通工具 - 官方网站 游戏学习版 SE7EN.ws Access denied | byrut.org used Cloudflare to restrict acc...
数据结构
数据结构引入对于程序员来说,数据结构是一门非常重要的科目,但是也是一门比较难以掌握的科目,这里记录了自己在大学课程中的一些实践代码,方便以后回来看看自己写的数据结构有多烂…… 线性表顺序结构线性表的顺序存储,C++代码实现如下 SeqlList.h,如果一个类使用了模板的话,不能将实现与定义拆分成两个文件,这个问题我卡了很久很久~ 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125#pragma once#include <iostream>using namespace std;const ...
大三上软件构造期末复习提纲
大三上软件构造期末复习提纲软件开发的最佳实践的机制指的是有机体的构造 软件 = 程序 + 数据 + 文档 集成化开发环境的特点有哪些P19 IDE的特点是集成化、可视化和自动化。 在一个软件系统中支持软件实现的多个基本活动,具有操作方便、界面一致、自动化程度高、集成工具及时更新、有助于提高生产率等特点。同时,IDE体积比较大,内部的编译、运行、调试、连接等过程对开发者是透明的,不利于理解和掌握软件构造基本原理。 敏捷开发的定义P10 是应对快速变化的需求的一种软件开发能力。它以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个互相联系、但也可以独立运行的小项目,分别完成,在此过程中,软件一直处于可使用状态。 软件的模块化理论、模块之间的关系、模块内部的关系? 个体软件过程(Personal Software Process,PSP)的作用P9 PSP能够说明个体软件过程的原则; 帮助软件工程师做出准确的计划; 确定...
大三上离散数学期末复习提纲
大三上离散数学期末复习提纲命题逻辑命题及其表示具有唯一真值的陈述句称为命题 原子命题:没有联结词的命题 复合命题:有联结词的命题 命题通常使用大写字母P,Q,R等表示 命题变元,命题常元 命题常元如:P:今天下雨 逻辑联结词 否定 P 非P 0 1 1 0 合取 P Q P ^ Q 0 0 0 0 1 0 1 0 0 1 1 1 析取 P Q P v Q 0 0 0 0 1 1 1 0 1 1 1 1 条件 P Q P -> Q 0 0 1 0 1 1 1 0 0 1 1 1 双条件 P Q P ^ Q 0 0 1 0 1 0 1 0 0 1 1 1 命题公式与符号化单个的命题变元也是命题公式 命题符号化案例 1234张三和李四都是班干部设 P:张三是班干部, Q:李四是班干部。则命题符号化为: P ^ Q 真值表与等价公式一般,在含有n个命题变元的命题公式中,共有2^n种指派 蕴含式最小联结词组范式推理理论谓词逻辑谓词的基...










