7 喝口水就跑

尚未进行身份认证

我要认证

暴躁老哥,在线搬砖。

等级
TA的排名 7k+

Java IO--Selector

一、概述jdk1.4之前提供的io主要是阻塞io(bloking io),服务端需要为每个请求创建一个处理线程,如果没有请求则阻塞等待直到有请求到达;客户端发起请求时,需要判断服务端是否有线程响应,如果有响应,则在响应返回值后继续执行,否则阻塞等待直到响应返回或出现异常。非阻塞io(no-bloking io)使用单线程或者少量线程等待事件通知,处于等待的线程可以释放出来处理其他请求...

2019-06-25 10:38:41

Java IO--Channel

一、概述Channel是一个通道,可以通过它实现数据的读取和写入,它和之前讨论的输入、输出流有很大区别,通道与流的不同之处在于通道是双向的,流只是单向的,流区分输入流和输出流,一个流只能是输入流或者输出流,不能复用。通道解决了复用问题,它既可以处理输入数据,也可以处理输出数据,并且这两者可以同时进行,现在的底层操作系统都是全双工模式,可以支持读写同时操作。channel封装了对数据源的操作...

2019-06-18 11:10:58

Java IO--Buffer

一、概述我们在之前的文章中介绍输入输出流的时候提到过,输入流InputStream的read方法从输入流中读取数据的时候,如果数据源中没有数据,那么这个方法会阻塞。输出流OutputStream的write方法在写入数据时同样也会阻塞,也就是之前介绍的输入、输出流都是阻塞式的。不仅如此,传统的输入、输出流都是通过字节的移动来处理的,也就是说面向流的输入输出每次只能处理一个字节,因此面向流的输入...

2019-06-13 15:41:06

Java IO--BIO

一、概述网络编程的基本模型是Client/Server模型,也就是两个进程之间进行相互通信,其中服务端提供位置信息(ip地址及端口信息),客户端通过连接操作向服务端监听的地址发起连接请求,通过TCP的三次握手建立连接,如果连接建立成功,双方就可以通过网络套接字(Socket)进行通信。Java体系在发展过程中,通过演变提供了不同的通信模型,它们彼此之间互不相同,模型之间性能相差巨大,使用方...

2019-06-11 10:40:35

Java IO--概述

一、概述IO(输入、输出)是比较乏味的事情,因为没有肉眼可见的运行效果,但是输入、输出又是所有程序都必需的部分--使用输入机制以读取程序外的数据,使用输出机制允许程序将数据输入到外部存储设备中(磁盘、光盘、网络设备等)。Java的IO通过Java.io包下的类和接口来支持,Java的IO包括文件IO和网络IO,本文主要讨论网络IO,Java的网络IO主要包括输入和输出两种IO流,每种输入...

2019-06-06 14:34:12

Java编译原理--运行时栈帧结构

Java语言在刚刚诞生的时候提出过一句著名的口号“一次编写,到处运行”,这句话充分的表达了开发人员对于冲破平台界限的渴望,也解释了Java语言跟平台无关的设定。 一、 概述Java虚拟机规定了虚拟机执行字节码的概念模型,这个模型是各类虚拟机的外观结构,不同的虚拟机可以有不同的实现,但是从外部看起来它们都是统一的,输入的是二进制字节流,经过执行引擎处理之后,输出执行结果。当二进制字节流进入内...

2018-09-05 21:20:42

Java编译原理--类加载器

Java语言在刚刚诞生的时候提出过一句著名的口号“一次编写,到处运行”,这句话充分的表达了开发人员对于冲破平台界限的渴望,也解释了Java语言跟平台无关的设定。一、概述类加载过程包括加载、连接和初始化,连接又可以细化为验证、准备和解析,除了加载过程可以由程序自定义处理外,其他的过程都是由虚拟机自动处理的;在这个过程中,类是如何被加载到内存中的呢?加载的时候需要加载哪些类呢?这就是本文要讨论...

2018-08-23 21:18:03

从“微积分”角度--话谈“芝诺悖论-阿基里斯与龟”

阿基里斯(又名阿喀琉斯)是古希腊神话中善跑的英雄。在他和乌龟的竞赛中,他速度为乌龟十倍,乌龟在前面100米跑,他在后面追,但他不可能追上乌龟。因为在竞赛中,追者首先必须到达被追者的出发点,当阿喀琉斯追到100米时,乌龟已经又向前爬了10米,于是,一个新的起点产生了;阿喀琉斯必须继续追,而当他追到乌龟爬的这10米时,乌龟又已经向前爬了1米,阿喀琉斯只能再追向那个1米。就这样,乌龟会制造出无穷个起点,...

2018-08-17 18:36:04

我理解的学习金字塔

“学习金字塔”是美国缅因州的国家训练实验室研究成果,它用数字形式形象显示了:采用不同的学习方式,学习者在两周以后还能记住内容(平均学习保持率)的多少。最早由美国学者、著名学习专家爱德加·戴尔1946年发现并提出的。 : 第一种,“听讲”,也是就我们经常在学校所看到的情况,这种情况学生参与度最低,只是通过听觉来跟授课者交流,两周之后保留的内容仅剩5%。第二种,“阅读”,这种方式参与度...

2018-08-17 18:08:46

Java编译原理--类加载过程

 Java语言在刚刚诞生的时候提出过一句著名的口号“一次编写,到处运行”,这句话充分的表达了开发人员对于冲破平台界限的渴望,也解释了Java语言跟平台无关的设定。一、 概述上一篇文章介绍了class文件的存储细节,class文件包括了类的各种描述信息,但是Java程序的运行需要在内存中实现,那么虚拟机是如何加载这些class文件的?class文件中的静态结构是如何转换成实际的存储结构...

2018-08-15 20:44:47

Java编译原理--类文件结构

       Java语言在刚刚诞生的时候提出过一句著名的口号“一次编写,到处运行”,这句话充分的表达了开发人员对于冲破平台界限的渴望,也解释了Java语言跟平台无关的设定。 一、   class文件意义        众所周知,Java语言是编译型语言,如果要执行Java代码,则首先需要将源码进行编译,变成虚拟机字节码文件,然后由虚拟机执行字节码文件,字节码文件和虚拟机才是Java语言无...

2018-07-23 19:26:19

Java事务--spring+atomikos+tomcat实现分布式事务

         JTA是J2EE的规范之一,如果使用JTA,我们需要去实现相应接口。tomcat是web服务器,没有实现J2EE规范,如果我们需要在tomcat服务器使用JTA,需要自己去实现JTA的接口。本文介绍如何使用tomcat+JTA实现多数据源的分布式事务。        一 选型 tomcat需要使用插件实现JTA,常用插件有jotm和atomikos,本文以atomi...

2016-07-22 11:46:33

Java事务--JTA原理

上一篇文章介绍了JDBC事务,JDBC可以处理单数据源的事务,满足大部分事务处理的需求,但是JDBC事务不能解决多数据源和分布式事务问题,Java平台给我们提供了解决方案--JTA。本文将探讨JTA的一些细节。

2016-07-22 10:44:32

B-tree/B+tree/B*tree

动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree),红黑树 (Red-Black Tree ),B-tree/B+-tree/ B*-tree (B~Tree)。

2016-07-21 10:45:09

Java事务--JDBC事务

 上一篇播客介绍了Java事务的基本概念及分类,这片播客总结下JDBC事务。1 概述事务指的是逻辑上的一组操作,组成这组操作的各个单元,要不全部执行成功,要不全部执行失败;数据库提供了事务,并且支持事务的各种操作,我们可以在JDBC中控制事务。2 使用事务(1)当jdbc获得一个Connection对象时,Connection对象提供了事务控制功能,我们可以通过Connection对象...

2016-06-29 17:46:33

Java事务--概述

 一 什么是Java事务      1.1 事务概念      事务,在计算机术语中是指访问并操作数据库中数据项的一个程序执行单元。      1.2 事务特性      原子性:原子性指的是事务是一个不可分割的工作单元,事务中的操作要不全部成功,要不什么都不做。比如同一个SQL语句中,要么全部执行,要么全部执行失败。      一致性:一致性指的是事务必须使数据库从一个状态变换到另...

2016-06-29 16:53:55

全文索引----中文分词器mmseg4j

         通常情况下,我们根据整个字段来索引数据,字段最长时,也不过十个字;但是还有一种情况,如果我们索引的是一篇文章呢?这时候如何处理这个字段,分词器很好的解决了这个问题。         solr服务器默认为我们提供了分词组件,但是Apache Solr提供的分词器对中文不太友好,举例如下:         它把整个句子的每个字都给分开了,这样如果索引一篇文章的...

2016-05-10 20:54:36

全文索引----solr服务器更新增量索引

    上篇文章我们介绍了全量更新solr索引,但是在数据量较大时,频繁的更新索引会消耗系统性能,如果更新频率较低,则会影响短时的数据准确性,所以,更新时间的间隔是个很难界定。增量索引解决了这个问题,我们可以在较短的时间内只更新那些变化的数据,这样就避免了大批量的数据更新,因为数据量小,我们可以设置较短的时间间隔,大幅度的提高了用户体验度。本文介绍增量索引。    一 配置数据源    1...

2016-05-09 16:36:17

全文索引----solr服务器更新全量索引

     solr索引设置完成后,需要根据数据库的变化及时更新索引,索引的更新有两种方式,全量更新和增量更新。顾名思义,全量更新即删除solr服务器上的所有索引,然后重新导入数据,增量索引即只更新修改的数据,本篇文章介绍全量索引更新。    一 配置数据源    1.1 数据库     我们使用单表作为测试数据源,包括三个字段,id,title,content,方便测试,使用var...

2016-05-08 21:49:21

全文索引----创建多表solr索引

         我们在使用solr作为索引服务器时,通常会将多个表的多个字段作为联合索引,对多个表快速的数据查询也是solr服务器高效率的体现。这片文章介绍下如何基于多个数据表创建索引。        一 无关联多表创建索引        1.1 数据库准备         我们使用任意的两个表作为数据源,这两个表可以属于一个数据库,也可以属于不同的数据库,如果使用两个数据库,则...

2016-05-07 21:10:39

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。