开始预测的结果是 Task>Delegate>ThreadPool>>Thread. (一)测试代码 static async Task<int> AsyncTask(int i) { return i; } static void TestAsycnTask(int count) { ; i < count; i++) { AsyncTask(i); } } static void TestThread(int count) { ; i < count;…
创建多线程的第一种方式——创建Thread子类和重写run方法: 第二种方式——实现Runnable接口,实现类传参给父类Thread类构造方法创建线程: 第一种方式创建Thread子类和重写run方法: 创建线程: 主线程调用新线程,创建多线程: 运行结果是cpu随机执行:…
1.不勾选Create a simple project,直接点击下一步 2.选择maven-archetype-webapp下一步 3.填写相关信息,点击下一步完成 4.此时会报一个jsp的错误.我们需要引入Java EE的jar包即可.在pom.xml中引入: <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0…
经常使用maven进行项目的管理,今天整理两种方式创建maven项目及创建过程中碰到的问题怎么解决: 方式一: 1.新建maven项目,点击下一步. 2.勾选Create a simple project并点击下一步. 3.填写相关信息后,点击下一步. 4.这时候创建的项目会报web.xml缺失 这时候在src/webapp下创建一个WEB-INF文件夹,然后在WEB-INF文件夹新建一个web.xml文件. 这样工程就创建完成. 5.工程完成后应该先进行一些工程的初步设置: 主要要配置以下几个…
坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:oschina.云+社区.知乎等各大平台都有. 目录 一.列表推导式 二.字典推导式 三.2种方式创建生成器 1.生成器表达式 2.函数里面,通过 yield 定义生成器 一.列表推导式 推导式可以帮助我们快速创建列表.创建字典.比如现在要创建一个列表. 做自动化测试的时候,比如创建个 url 列表,url 列表里面可能是存储了网站的页数: 一直到 100,生成 100 个页面,但是这 100 个页面有规律,url 地址,前面这一部分是不变的,只…
近来打算自己封装一个比较方便读写的Office Excel 工具类,前面已经写了一些,比较粗糙本就计划重构一下,刚好公司的电商APP后台原有的导出Excel实现出现了可怕的性能问题,600行的数据生成Excel工作簿居然需要50秒以上,客户端连接都被熔断了还没导出来,挺巧,那就一起解决吧. 在上一个版本里呢,我认为比较巧妙的地方在于用函数式编程的方式代替反射,很早以前了解了反射的一些底层后我就知道反射的性能很差,但一直没实际测试过各种调用场景的性能差距. 至于底层字节码.CPU指令这些我就不深究…
1. 使用@Bean注解定义initMethod和destroyMethod 所谓initMethod和destroyMethod,是指在springIOC容器中,对于bean对象执行到初始化阶段和销毁阶段所调用的方法,其并不是初始化方法和销毁方法本身. 对于单例模式,initMethod会在创建容器时,构造方法.属性赋值方法完成之后调用,destroyMethod会在关闭容器之后调用: 对于原型模式,initMethod会在每次获取bean对象时,构造方法.属性赋值方法完成之后调用,而dest…
KVO KVO属于设计模式中的观察者模式,在观察者模式中,一个对象任何状态的变更都会通知另外的对改变感兴趣的对象.这些对象之间不需要知道彼此的存在,这其实是一种松耦合的设计.当某个属性变化的时候,我们通常使用这个模式去通知其它对象. 本人用3种方式来讲述KVO的使用,开始前新建一个对象Student类,用以监控Student类中name属性,源码如下 Student.h + Student.m #import <Foundation/Foundation.h> @interface Stude…
摘要:在目前流行的Windows操作系统中,设备驱动程序是操纵硬件的最底层软件接口.为了共享在设备驱动程序设计过程中的经验,给出设备驱动程序通知应用程序的5种方法,详细说明每种方法的原理和实现过程,并给出实现的部分核心代码.希望能够给设备驱动程序的设计者提供一些帮助. 关键词:设备驱动程序   异步I/O   Virtual   Device   Driver(VxD)   Windows   Driver   Model(WDM) 引   言  在DOS操作系统中,应用程序可以直接与硬件打交道…
一:进程池与线程池(同步,异步+回调函数)先造个池子,然后放任务为什么要用“池”:池子使用来限制并发的任务数目,限制我们的计算机在一个自己可承受的范围内去并发地执行任务池子内什么时候装进程:并发的任务属于计算密集型池子内什么时候装线程:并发的任务属于IO密集型 #提交任务的两种方式:    # 同步调用:提交完一个任务之后,就在原地等待,等待任务完完整整地运行完毕拿到结果后,再执行下一行代码,会导致任务是串行执行的    # 异步调用:提交完一个任务之后,不在原地等待,结果???,而是直接执行下…