- 博客(5)
- 资源 (8)
- 收藏
- 关注
原创 协程概念
协程的诞生 线程切换 在IO密集型的程序中由于IO操作远远小于CPU的操作,所以往往需要CPU去等IO操作。同步IO下系统需要切换线程,让操作系统可以再IO过程中执行其他的东西。这样虽然代码是符合人类的思维习惯但是由于大量的线程切换带来了大量的性能的浪费,尤其是IO密集型的程序。 异步IO 所以人们发明了异步IO。就是当数据到达的时候触发我的回调。来减少线程切换带来性能损失。但是这样的坏处也是很大的,主要的坏处就是操作被 “分片” 了,代码写的不是 “一气呵成” 这种。 而是每次来段数据就要判断 数
2020-11-29 16:34:58 3223 2
原创 聊聊一个电商优惠券产品形态
优惠券形式 我们经常浏览淘宝、京东等电商平台,可以领取优惠券来购买商品,像双11有很多满减优惠券,及无门槛的叠猫猫购物红包等,这些其实都是一种营销手段,本文来解析如何来实现一套优惠券方案。 优惠券方案 1、优惠券基本信息 优惠券基本信息主要分为两个方面:派发 和 使用 派发 派发是指优惠券可以领取的时间范围、领取方式(唯一兑换码、通用兑换码)、总的派发数量、单日派发数量、领取指定用户(会员、新用户等)、每人领取限制、派发渠道(app、小程序)等。 使用 使用就是具体的优惠券的使用时间、满足条件及优惠金额、
2020-11-28 18:59:51 744
原创 单例模式多线程引发的思考
单例模式 内存屏障和重排序 单例模式中懒汉式的方式中,其中提到了双重校验锁的内容,比直接在方法上枷锁要好,但很多博客写的都有问题,他们忽视了内存屏障和指令重排序,一般是要给变量加volatile关键词,我们先看下正确的写法: public class Singleton { /** * 该函数限制用户主动创建实例 */ private Singleton() {} privat...
2020-11-08 16:25:16 195
原创 线程池一些知识解答
线程池 如何保持线程复用 其实开启一个线程后,再线程的run 方法中 写一个循环,执行一个任务后就从队列中获取任务对象Worker,Worker对象是线程池定义的对象,一个Worker对象中都有一个线程,可以任务Worker的多少就表明线程的多少,不过代码里没有利用Worker集合的大小来做判断,而是利用了AtomicInteger对象来控制线程数量。 每一个任务 也都是一个Runnable对象 在线程池里每一个任务也都是一个可执行的Runnable对象,在线程的run 方法中执行 task.run()方法
2020-11-08 15:42:55 194 1
原创 5分钟思考网络模型:IO、BIO、NIO
IO IO其实指的是Input/Output,是指输入输出,主要用来传输数据,各个设备之间的数据传输,那么为何慢慢有了很多IO?NIO、BIO、AIO等,这些都是其实现形式,基于不同的操作系统机制来包装的IO模型,我们慢慢就会知道这些模型的区别。 IO流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。 字节流和字符流的区别: 读写单
2020-11-02 10:13:42 231
【新人赛】快来一起挖掘幸福感!
2019-07-08
PotPlayer64位v.1.7.13622
2018-08-08
asp.net 视频播放、利用flexpaper+swtools实现文档在线浏览
2015-05-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人