- 博客(125)
- 资源 (3)
- 收藏
- 关注
原创 Java IO--Selector
一、概述jdk1.4之前提供的io主要是阻塞io(bloking io),服务端需要为每个请求创建一个处理线程,如果没有请求则阻塞等待直到有请求到达;客户端发起请求时,需要判断服务端是否有线程响应,如果有响应,则在响应返回值后继续执行,否则阻塞等待直到响应返回或出现异常。非阻塞io(no-bloking io)使用单线程或者少量线程等待事件通知,处于等待的线程可以释放出来处理其他请求...
2019-06-25 10:38:41
649
原创 Java IO--Channel
一、概述Channel是一个通道,可以通过它实现数据的读取和写入,它和之前讨论的输入、输出流有很大区别,通道与流的不同之处在于通道是双向的,流只是单向的,流区分输入流和输出流,一个流只能是输入流或者输出流,不能复用。通道解决了复用问题,它既可以处理输入数据,也可以处理输出数据,并且这两者可以同时进行,现在的底层操作系统都是全双工模式,可以支持读写同时操作。channel封装了对数据源的操作...
2019-06-18 11:10:58
2167
原创 Java IO--Buffer
一、概述我们在之前的文章中介绍输入输出流的时候提到过,输入流InputStream的read方法从输入流中读取数据的时候,如果数据源中没有数据,那么这个方法会阻塞。输出流OutputStream的write方法在写入数据时同样也会阻塞,也就是之前介绍的输入、输出流都是阻塞式的。不仅如此,传统的输入、输出流都是通过字节的移动来处理的,也就是说面向流的输入输出每次只能处理一个字节,因此面向流的输入...
2019-06-13 15:41:06
1514
原创 Java IO--BIO
一、概述网络编程的基本模型是Client/Server模型,也就是两个进程之间进行相互通信,其中服务端提供位置信息(ip地址及端口信息),客户端通过连接操作向服务端监听的地址发起连接请求,通过TCP的三次握手建立连接,如果连接建立成功,双方就可以通过网络套接字(Socket)进行通信。Java体系在发展过程中,通过演变提供了不同的通信模型,它们彼此之间互不相同,模型之间性能相差巨大,使用方...
2019-06-11 10:40:35
290
原创 Java IO--概述
一、概述IO(输入、输出)是比较乏味的事情,因为没有肉眼可见的运行效果,但是输入、输出又是所有程序都必需的部分--使用输入机制以读取程序外的数据,使用输出机制允许程序将数据输入到外部存储设备中(磁盘、光盘、网络设备等)。Java的IO通过Java.io包下的类和接口来支持,Java的IO包括文件IO和网络IO,本文主要讨论网络IO,Java的网络IO主要包括输入和输出两种IO流,每种输入...
2019-06-06 14:34:12
231
原创 Java编译原理--运行时栈帧结构
Java语言在刚刚诞生的时候提出过一句著名的口号“一次编写,到处运行”,这句话充分的表达了开发人员对于冲破平台界限的渴望,也解释了Java语言跟平台无关的设定。 一、 概述Java虚拟机规定了虚拟机执行字节码的概念模型,这个模型是各类虚拟机的外观结构,不同的虚拟机可以有不同的实现,但是从外部看起来它们都是统一的,输入的是二进制字节流,经过执行引擎处理之后,输出执行结果。当二进制字节流进入内...
2018-09-05 21:20:42
2047
原创 Java编译原理--类加载器
Java语言在刚刚诞生的时候提出过一句著名的口号“一次编写,到处运行”,这句话充分的表达了开发人员对于冲破平台界限的渴望,也解释了Java语言跟平台无关的设定。一、概述类加载过程包括加载、连接和初始化,连接又可以细化为验证、准备和解析,除了加载过程可以由程序自定义处理外,其他的过程都是由虚拟机自动处理的;在这个过程中,类是如何被加载到内存中的呢?加载的时候需要加载哪些类呢?这就是本文要讨论...
2018-08-23 21:18:03
337
原创 从“微积分”角度--话谈“芝诺悖论-阿基里斯与龟”
阿基里斯(又名阿喀琉斯)是古希腊神话中善跑的英雄。在他和乌龟的竞赛中,他速度为乌龟十倍,乌龟在前面100米跑,他在后面追,但他不可能追上乌龟。因为在竞赛中,追者首先必须到达被追者的出发点,当阿喀琉斯追到100米时,乌龟已经又向前爬了10米,于是,一个新的起点产生了;阿喀琉斯必须继续追,而当他追到乌龟爬的这10米时,乌龟又已经向前爬了1米,阿喀琉斯只能再追向那个1米。就这样,乌龟会制造出无穷个起点,...
2018-08-17 18:36:04
3040
原创 我理解的学习金字塔
“学习金字塔”是美国缅因州的国家训练实验室研究成果,它用数字形式形象显示了:采用不同的学习方式,学习者在两周以后还能记住内容(平均学习保持率)的多少。最早由美国学者、著名学习专家爱德加·戴尔1946年发现并提出的。 : 第一种,“听讲”,也是就我们经常在学校所看到的情况,这种情况学生参与度最低,只是通过听觉来跟授课者交流,两周之后保留的内容仅剩5%。第二种,“阅读”,这种方式参与度...
2018-08-17 18:08:46
1551
原创 Java编译原理--类加载过程
Java语言在刚刚诞生的时候提出过一句著名的口号“一次编写,到处运行”,这句话充分的表达了开发人员对于冲破平台界限的渴望,也解释了Java语言跟平台无关的设定。一、 概述上一篇文章介绍了class文件的存储细节,class文件包括了类的各种描述信息,但是Java程序的运行需要在内存中实现,那么虚拟机是如何加载这些class文件的?class文件中的静态结构是如何转换成实际的存储结构...
2018-08-15 20:44:47
11449
2
原创 Java编译原理--类文件结构
Java语言在刚刚诞生的时候提出过一句著名的口号“一次编写,到处运行”,这句话充分的表达了开发人员对于冲破平台界限的渴望,也解释了Java语言跟平台无关的设定。 一、 class文件意义 众所周知,Java语言是编译型语言,如果要执行Java代码,则首先需要将源码进行编译,变成虚拟机字节码文件,然后由虚拟机执行字节码文件,字节码文件和虚拟机才是Java语言无...
2018-07-23 19:26:19
460
原创 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
5330
4
原创 Java事务--JTA原理
上一篇文章介绍了JDBC事务,JDBC可以处理单数据源的事务,满足大部分事务处理的需求,但是JDBC事务不能解决多数据源和分布式事务问题,Java平台给我们提供了解决方案--JTA。本文将探讨JTA的一些细节。
2016-07-22 10:44:32
11293
6
转载 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
639
3
原创 Java事务--JDBC事务
上一篇播客介绍了Java事务的基本概念及分类,这片播客总结下JDBC事务。1 概述事务指的是逻辑上的一组操作,组成这组操作的各个单元,要不全部执行成功,要不全部执行失败;数据库提供了事务,并且支持事务的各种操作,我们可以在JDBC中控制事务。2 使用事务(1)当jdbc获得一个Connection对象时,Connection对象提供了事务控制功能,我们可以通过Connection对象...
2016-06-29 17:46:33
705
6
原创 Java事务--概述
一 什么是Java事务 1.1 事务概念 事务,在计算机术语中是指访问并操作数据库中数据项的一个程序执行单元。 1.2 事务特性 原子性:原子性指的是事务是一个不可分割的工作单元,事务中的操作要不全部成功,要不什么都不做。比如同一个SQL语句中,要么全部执行,要么全部执行失败。 一致性:一致性指的是事务必须使数据库从一个状态变换到另...
2016-06-29 16:53:55
950
5
原创 全文索引----中文分词器mmseg4j
通常情况下,我们根据整个字段来索引数据,字段最长时,也不过十个字;但是还有一种情况,如果我们索引的是一篇文章呢?这时候如何处理这个字段,分词器很好的解决了这个问题。 solr服务器默认为我们提供了分词组件,但是Apache Solr提供的分词器对中文不太友好,举例如下: 它把整个句子的每个字都给分开了,这样如果索引一篇文章的...
2016-05-10 20:54:36
9218
10
原创 全文索引----solr服务器更新增量索引
上篇文章我们介绍了全量更新solr索引,但是在数据量较大时,频繁的更新索引会消耗系统性能,如果更新频率较低,则会影响短时的数据准确性,所以,更新时间的间隔是个很难界定。增量索引解决了这个问题,我们可以在较短的时间内只更新那些变化的数据,这样就避免了大批量的数据更新,因为数据量小,我们可以设置较短的时间间隔,大幅度的提高了用户体验度。本文介绍增量索引。 一 配置数据源 1...
2016-05-09 16:36:17
11298
9
原创 全文索引----solr服务器更新全量索引
solr索引设置完成后,需要根据数据库的变化及时更新索引,索引的更新有两种方式,全量更新和增量更新。顾名思义,全量更新即删除solr服务器上的所有索引,然后重新导入数据,增量索引即只更新修改的数据,本篇文章介绍全量索引更新。 一 配置数据源 1.1 数据库 我们使用单表作为测试数据源,包括三个字段,id,title,content,方便测试,使用var...
2016-05-08 21:49:21
11973
10
原创 全文索引----创建多表solr索引
我们在使用solr作为索引服务器时,通常会将多个表的多个字段作为联合索引,对多个表快速的数据查询也是solr服务器高效率的体现。这片文章介绍下如何基于多个数据表创建索引。 一 无关联多表创建索引 1.1 数据库准备 我们使用任意的两个表作为数据源,这两个表可以属于一个数据库,也可以属于不同的数据库,如果使用两个数据库,则...
2016-05-07 21:10:39
14934
18
原创 全文索引----配置solr数据源
上篇文章我们介绍了solrJ工具,本篇文章我们介绍solr的数据源。我们使用solr作为全文索引的服务器,那么必须要为solr提供数据源,小编solr服务器总结了三种数据来源,分别是:使用命令提供数据源、solrJ提供数据源和配置文件配置数据源,下边分别介绍着三种方式。一 使用命令配置数据源 1 环境 本文以linux环境作为示例介绍此功能,操作环境cent...
2016-04-30 21:10:04
12037
19
原创 全文索引----solr客户端工具solrJ
上一篇博客中,我们使用solr的桌面客户端工具展示返回的数据,如果我们需要在程序中使用这些返回值的话,就需要另外的一个工具了----solrJ。一 solrJ介绍 1 是什么? 为了方便的操作solr服务器,Apache为我们提供了solrJ工具,我们可以通过solrJ对solr服务器进行创建索引、更新、查询、处理返回值等操作,它其实相当于solr服务器和我们程...
2016-04-27 20:09:33
3287
13
原创 全文索引----solr入门
一 Apache Solr介绍 1 solr是什么? solr是一个独立的企业级搜索应用服务器,他对外提供类似webservice的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引,也可以通过http get 请求提出查找请求,并得到XML格式的返回结果。 2 特点 solr是一个高性能,基于lucene的全文搜索服务...
2016-04-26 20:12:49
1383
25
原创 linux环境下MySQL的日志监控
调试代码是,数据库的监控是一个不可或缺的检测手段,特别是在测试持久层的功能时,数据库的检测就显得更加重要了。本文以MySQL为例,介绍数据库日志的配置和查看。
2016-04-24 20:30:27
2464
7
原创 jfinal上传图片
使用jfinal开发程序时,需要上传图片到服务器,查阅官方帮助文档发现,jfinal已经分装好了文件上传的工具,写此文章做个总结。
2016-03-30 21:33:21
7160
11
原创 SSH图片上传
最近在做上传文件(主要是图片)的功能,因为在此过程中遇到了不少问题,在此做个总结。一 环境1 Jboss服务器:centos72 语言:Java3 框架:springMVC4 图片服务器:nginx二 主要技术为了降低Jboss服务器的IO操作,同时提高页面的加载速度,使用nginx服务器作为图片服务器,我们在上传图片时,将向Jboss服务器放置一张图片,同时向nginx服务器上传一...
2016-03-29 20:49:04
1250
7
原创 探索工作流(七)--流程实例持久化
在没有持久化之前,流程实例是存在于内存中的,所以我们最多只能有一个宿主来使用这个流程实例,一旦流程包含多个节点,需要多次使用这个流程实例,那么流程示例的持久化就是不可或缺的一个过程。Workflow4将工作流持久化封装成一个插件来提供持久化服务,并且通过调用SqlWorkflowPersistenceService类来实现SQL Server数据中流程实例的持久化。
2016-02-13 20:58:04
2847
3
原创 探索工作流(六)--多线程
上篇播客中介绍了WorkflowApplication对象创建工作流和此对象的生命周期,本文继续介绍有关WorkflowApplication对象的内容--多线程和持久化。
2016-02-01 20:11:57
1874
8
原创 探索工作流(五)--工作流宿主WorkflowApplication
上篇文章介绍了使用WorkflowInvoker宿主创建和启动工作流,本篇文章继续介绍工作流宿主,上篇文章说过,WorkflowInvoker是个轻量级的工作流宿主,一般用于学习和开发环境,本文将介绍重量级的工作流宿主,也就是我们日常开发环境和应用环境中最常用的工作流宿主WorkflowApplication。
2016-01-30 08:31:14
1471
3
原创 探索工作流(四)--工作流宿主--WorkflowInvoker
程序中使用工作流可以让我们的程序更加灵活,但是工作流对象不能直接创建和运行,工作流对象的所有创建、启动等操作都是由工作流载体--即工作流宿主来完成,此文即简单介绍下WF4的宿主。
2016-01-27 15:09:26
1251
4
原创 探索工作流(三)--顺序工作流 Sequence
上篇文章简要介绍了状态工作流的基本知识,这片文章我们介绍顺序工作流--SequenceWorlflow。
2016-01-26 11:30:30
1178
2
原创 探索工作流(二)--状态工作流 My Workflow Trip
上篇文章简要介绍了工作流的基本知识,这片文章我们开始工作流之旅,第一个工作流程序--MyWorkflowTrip。
2016-01-26 10:22:34
1273
4
原创 探索工作流(一)--概述
工作流我们经常提到,并且也一直在使用,有很多成熟的使用案例,但是对于工作流的具体定义,我们还是比较模糊的,它是标准?引擎?技术?解决思想?还是架构?工作流到底是什么呢?
2016-01-25 20:19:30
996
3
原创 oracle 11创建数据表并且给用户授予权限
oracle安装完成后,需要查看一下是否安装成功了,并且创建一个表测试一下。本文以oracle 11 为例,介绍oracle的常用命令以及如何创建一个数据表。
2016-01-03 21:48:13
4912
5
原创 session简介
session含义有狭义和广义之分,狭义上我们将浏览器访问服务器时,服务器创建的操作空间称为session;广义 上,session是指一个浏览器(终端用户)与交互系统(服务器)进行通信的时间间隔,通常指从注册进入系统到 注销退出系统所经过的时间,以及分配的操作空间称为session。通常,我们将浏览器访问服务器时创建的会话 对象称为session。
2015-12-31 21:26:11
798
4
原创 linux环境下实现svn服务器支持http协议
经过两天的努力,svn终于支持http协议来访问了,在此做个总结,收集一下过程中的错误,作为后来人的前车之鉴
2015-12-30 21:12:02
8083
12
原创 Java反射学习笔记
Java的反射机制指的是,Java程序在运行过程中,对于任意一个类,都能够动态的获得这个类的任意的属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取对象属性和方法的功能称为Java语言的反射机制。
2015-12-27 23:55:53
970
10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人