在介绍FileInputStream和FileOutputStream的例子中,使用了一个byte数组来作为数据读入的缓冲区,以文件存取为例,硬盘存取的速度远低于内存中的数据存取速度.为了减少对硬盘的存取,通常从文件中一次读入一定长度的数据,而写入时也是一次写入一定长度的数据,这可以增加文件存取的效率. java.io.BufferedInputStream与java.io.BufferedOutputStream可以为InputStream.OutputStream类的对象增加缓冲区功能. 构…
1. 概念简介 BufferedInputStream和BufferedOutputStream是带缓冲区的字节输入输出处理流.它们本身并不具有IO流的读取与写入功能,只是在别的流(节点流或其他处理流)上加上缓冲功能以提高效率,就像是把别的流包装起来一样,因此缓冲流是一种处理流.事实上,这两个处理流(BufferedInputStream和 BufferedOutputStream),加上BufferedReader和BufferedWriter,这四个流在设计时使用到的正是装饰设计模式,通过装…
Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/54894451 本文出自[赵彦军的博客] InputStream |__FilterInputStream |__BufferedInputStream 首先抛出一个问题,有了InputStream为什么还要有BufferedInputStream? Buffere…
BufferedInputStream是带缓冲区的输入流,默认缓冲区大小是8M,能够减少访问磁盘的次数,提高文件读取性能:BufferedOutputStream是带缓冲区的输出流,能够提高文件的写入效率.BufferedInputStream与BufferedOutputStream分别是FilterInputStream类和FilterOutputStream类的子类,实现了装饰设计模式. BufferedInputStream类的例子如下: import java.io.File; imp…
BufferedInputStream是带缓冲区的输入流,默认缓冲区大小是8M,能够减少访问磁盘的次数,提高文件读取性能:BufferedOutputStream是带缓冲区的输出流,能够提高文件的写入效率.BufferedInputStream与BufferedOutputStream分别是FilterInputStream类和FilterOutputStream类的子类,实现了装饰设计模式. BufferedInputStream类的例子如下: import java.io.File; imp…
Java IO(十)BufferedInputStream 和 BufferedOutputStream 一.BufferedInputStream 和 BufferedOutputStream (一).BufferedInputStream BufferedInputStream 是缓冲字节输入流,继承自FilterInputStream,它的作用是为另一个输入流对象提供一些额外的功能.如:缓冲功能,支持 mark(标记)和reset(重置)功能等. BufferedInputStream 本…
BufferedInputStream.BufferedOutputStream的基本使用 BufferedInputStream是FilterInputStream流的子类,FilterInputStream又是InputStream流的子类.一个 BufferedInputStream为另一个输入流添加了功能,即缓冲输入和支持mark和reset方法的功能. 当BufferedInputStream创建时,就会创建一个内部缓冲区数组.当从流中读取或跳过字节时,内部缓冲 区将根据需要从所包含的…
什么是缓冲流: 缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率. 图解: 1.字节缓冲流BufferedInputStream:BufferedOutputStream: public BufferedInputStream(InputStream in) :创建一个 新的缓冲输入流. public BufferedOutputStream(OutputStream out) : 创建一个新的缓冲输出流. 案例对比:…
一.基本介绍: 1.节点流可以从一个特定的数据源读写数据,如FileReader. FileWriter 如图:字节流是直接对数据源(文件,数组之类存放数据的地方)进行操作 2.处理流(也叫包装流)是"连接"在已存在的流(节 点流或处理流)之上,为程序提供更为强大的读写功能,也更加灵活,如BufferedReader.BufferedWriter 3.节点流和处理流的区别和联系: 1).节点流是底层流/低级流,直接跟数据源相接.2).处理流(包装流)包装节点流,既可以消除不同节点流的实…
Atitit 泛型原理与理解attilax总结 1. 泛型历史11.1.1. 由来11.2. 为什么需要泛型,类型安全21.3. 7.泛型的好处22. 泛型的机制编辑22.1.1. 机制32.1.2. 编译机制32.2. 参考31.泛型历史泛型编程(Generic Programming)最初提出时的动机很简单直接:发明一种语言机制,能够帮助实现一个通用的标准容器库.所谓通用的标准容器库,就是要能够做到,比如用一个List类存放所有可能类型的对象这样的事:泛型编程让你编写完全一般化并可重复使用的…
从tcp原理角度理解Broken pipe和Connection reset by peer的区别 http://lovestblog.cn/blog/2014/05/20/tcp-broken-pipe/   以前我们经常会碰到Broken pipe或者Connection reset by peer之类的异常,但是tcp实现里什么情况下会抛出这些异常呢,以前我给对方的回答都是模棱两可的,自己说实话都没把握,因为自己也没有验证过,对它们的认识都是从网上看来的,正确与否也不知道,昨天独明突然又问…
对CAP原理的理解 CAP原理按照定义,指的是C(Consistency)一致性,A(Availability)可用性,P(Partition tolerance)分区容错性在一个完整的计算机系统中三种特性不能同时得到完全满足. Consistency((强)一致性):指的是在同一时间点,所有的数据状态是否是一致的.对于一致性的理解,个人认为可以从关系型数据库的事务概念出发来进行理解.例如:一次银行账户的转账,双方账户的金额必须同时增加,和减少.不能出现转账账户已经扣钱,而被转账账户未能增加金额…
SIFT特征原理与理解 SIFT(Scale-invariant feature transform)尺度不变特征变换 SIFT是一种用来侦测和描述影像中局部性特征的算法,它在空间尺度中寻找极值点,并提取出其位置.尺度.旋转不变量. SIFT特征是基于物体上的一些局部外观的兴趣点而与影像的大小和旋转无关.使用 SIFT特征描述对于部分物体遮蔽的侦测率也相当高,甚至只需要3个以上的SIFT物体特征就足以计算出位置与方位. SIFT算法的特点 SIFT特征是图像的局部特征,其对旋转.尺度缩放.亮度变…
linux内存管理原理深入理解段式页式 https://blog.csdn.net/h674174380/article/details/75453750 其实一直没弄明白 linux 到底是 段页式 还是仅是段式内存管理 2017-07-20 08:52:39 楼下丶小黑 阅读数 6275   前一段时间看了<深入理解Linux内核>对其中的内存管理部分花了不少时间,但是还是有很多问题不是很清楚,最近又花了一些时间复习了一下,在这里记录下自己的理解和对Linux中内存管理的一些看法和认识.…
从原理上理解MySQL的优化建议 预备知识 B+树索引 mysql的默认存储引擎InnoDB使用B+树来存储数据的,所以在分析优化建议之前,了解一下B+树索引的基本原理. 上图是一个B+树索引示意图,每个节点表示一个磁盘块,也可以理解为数据库中的页. 分析下B+树索引的查找过程,如果我要查询主键为35的数据,索引会怎么走? 首先会判断35小于根节点37,继续查询左子树 判断35大于22和33,那么进入右子树,找到了叶子节点33 继续遍历找到35 最后取出其data即可 在索引的情况下,查询35只…
4. 自动配置原理再理解 ​ 配置文件到底能写什么?怎么写?SpringBoot官方文档有大量的配置,但是难以全部记住. 分析自动配置原理 ​ 官方文档 ​ 我们以HttpEncodingAutoConfiguration(Http编码自动配置)为例解释自动配置原理: //表示这是一个配置类,和以前编写的配置文件一样,也可以给容器中添加组件: @Configuration //启动指定类的ConfigurationProperties功能: //进入这个HttpProperties查看,将配置文…
1.IO流概述及其分类 * 1.概念      * IO流用来处理设备之间的数据传输      * Java对数据的操作是通过流的方式      * Java用于操作流的类都在IO包中      * 流按流向分为两种:输入流,输出流.      * 流按操作类型分为两种:          * 字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的          * 字符流 : 字符流只能操作纯字符数据,比较方便. * 2.IO流常用父类      * 字节流的抽象…
转载请注明源出处:http://www.cnblogs.com/lighten/p/6971234.html 1.前言 本文主要介绍输入输出流中的BufferedInputStream和BufferedOutStream的实现,其虽是InputStream和OutputStream的子类,但中间还隔了一个FilterInputStream和FilterOutputStream.前言中先介绍一下这两个类.这两个类都是简单的包装类. 1.1 FilterInputStream FilterInput…
package test.stream; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Date; /*…
MP3的复制过程: package com.lp.ecjtu; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; /** * * @autho…
首先观察BufferedInputStream 的继承体系,可以看出他是继承自一个FilterInputStream,而这个又是继承自InputStream 我们在之前的装饰器模式就讲过,这个BufferedInputStream 是很典型的装饰器模式的案例,那么在其内部应该有封装一个被包装对象 BufferedInputStream 成员变量 class BufferedInputStream extends FilterInputStream { private static int DEF…
1,mybatis流程跟踪,原理理解 基本思路: 从SqlSessionFactory的初始化出发,观察资源的准备和环境的准备,以及实现持久层的一些过程: 进入SqlSessionFactoryBean类,发现先执行的是 然后是: 在初始化类之后,做的准备工作如下: public void afterPropertiesSet() throws Exception {     notNull(dataSource, "Property 'dataSource' is required"…
理解完aop的名词解释,继续学习spring aop的工作原理. 首先明确aop到底是什么东西?又如何不违单一原则并实现交叉处理呢? 如果对它的认识只停留在面向切面编程,那就脏了.从oop(Object Oriented Programming)说起,oop引入封装,多态,继承等概念建立对象层次的结构,处理公共行为属性的集合.对于一个系统而言,需要把分散对象整合到一起的时候,oop就虚了,因为这样的需求已经在对象层次之上了.如订单模块,还款模块都需要User对象配合(当然不止于User对象完成的…
NodeJS是近年来比较火的服务端JS平台,这一方面得益于其在后端处理高并发的卓越性能,另一方面在nodeJS平台上的npm.grunt.express等强大的代码与项目管理应用崛起,几乎重新定义了前端的工作方式和流程. NodeJS的成功标志着它的强大,但是不是所有情况都适合应用NodeJS作为服务器端平台呢? 答案当然是否定的,而网上也是众说纷纭.那我们从原理出发了解一下NodeJS的适用情况. 在讲NodeJS之前我们不仿先看一下传统(以Apache为代表)的服务器端处理平台处理并发的方式…
tornado实现协程的原理主要是利用了(1)python里面的generator (2)future类和ioloop相互配合,两者之间的相互配合是通过gen.coroutine装饰器来实现的: 具体个人理解是: (1) 执行到函数中的yield表达式时,函数中止,然后返回yield的参数: (2) 将yield的返回值分装成future类,并且将(1)中yield之后的代码块 作为一个整体交给Runner(在gen.py中)类封装一下,Runner类中有一个run方法,是用来执行这段代码块的:…
正如名字所示,TLD算法主要由三个模块构成:追踪器(tracker),检测器(detector)和机器学习(learning). 对于视频追踪来说,常用的方法有两种,一是使用追踪器根据物体在上一帧的位置预测它在下一帧的位置,但这样会积累误差,而且一旦物体在图像中消失,追踪器就会永久失效,即使物体再出现也无法完成追踪:另一种方法是使用检测器,对每一帧单独处理检测物体的位置,但这又需要提前对检测器离线训练,只能用来追踪事先已知的物体. TLD是对视频中未知物体的长时间跟踪的算法."未知物体"…
概念 Aspect Oriented Programming,面向切面编程,实际上它是一个规范.一种设计思路,总之是抽象的. 先上图 使用目的 从项目结构上来说 对业务逻辑的各个部分进行隔离,降低业务逻辑的耦合度 从开发的角度上说 减少重复编码,提高程序的可重用性,提高了开发的效率 总结简单的讲:就是那些与业务无关,却为业务模块所共同调用的逻辑封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性. 使用场景 日志记录,性能统计,安全控制,事务处理,异常处理等…
HashMap的数据结构 HashMap是数组+链表+红黑树(JDK1.8增加了红黑树部分)实现的,他的底层结构是一个数组,而数组的元素是一个单向链表.HashMap默认初始化的是一个长度为16位的数组,每个数组储存的元素代表的是每一个链表的头结点.在jdk1.8中,当HashMap不断地插入元素,导致链表太长时,会将链表转换为红黑树. Node<K,V> Node是HashMap的一个内部类,实现了Map.Entry接口,本质就是一个存储键值对的链表. 具体如下: static class…
一.前言 我们h5项目终端适配采用的是淘宝那套<Flexible实现手淘H5页面的终端适配>方案.主要原理是rem布局.最近和别人谈弹性布局原理,发现虽然已经使用了那套方案很久,但是自己对rem的理解很含糊, 包括vw.vh等.所以打算写博客总结一下,以加深理解. 二.几个概念 这里就不讲那些,物理像素.设备像素比了,可以自己查阅.要去理解rem/em/vm/vh等,首先要直观的去理解他们到底是什么?理解好了,后面就好办了.其实这几个都是css单位,就像我们常用的px一样,只不过他们都是相对单…
今天要做个小笔记,浅谈一下对cdn的一些理解,在工作中我们经常用到cdn代理访问,那他的原理是什么不知道大家有没有考虑过 CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求. 到这里又不得不提到另一个概念:全局负载技术 全局负载均衡(GSL.B,Global Server Load Balance)主要的目的是在整个网络范围内将用户的请求定…