- 博客(38)
- 资源 (1)
- 收藏
- 关注

原创 缓存字节流BufferedInputStream使用及原理解析
流操作的特性是数据传输(只能往前进,而不能往后退),而数据传输速度和数据处理的速度存在不平衡,这种不平衡使得数据传输过程中进行缓存处理而释放数据处理器的资源是一种提高程序效率的机制。比如,厕所的抽水马桶,在你上完厕所后,一按冲水则通过水流冲洗干净马桶,通过水流的冲击力来带走你的排泄物,而抽水马桶上方的水槽中的水是一点点进行积累,有时水未积累到位时,按冲水时,会发现马桶冲不干净。在极端情况下,我们不...
2018-03-08 20:03:51
20740
2
原创 #2~nginx
nginx可以做什么nginx(engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。简单来说,就是一个web服务器,可以提供http服务,一般用来充当代理、反向代理工具来使用。官方网站https://nginx.org/Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。nginx启动配置环境变量在window下,新建环.
2021-08-20 19:36:39
297
原创 #1~nginx安装
nginx在工作中使用的频率越来越高,在涉及前端的web应用中,配合vue进行前后端分离,在每次环境创建时都避免不了安装nginx,本次进行linux系统下安装说明,旨在记录平时操作步骤,后续作为参考指引。安装准备nginx是使用C语言进行编写的程序,所以源码需要进行编译,需要检查linux是否存在相应的编译器,来转换源码为linux可执行应用程序,一般安装gcc。此外,nginx也不是独立的一个系统,在开放过程中也需要依赖其他的软件包,例如pcre、zlib、openssl,详见下文。gcc
2021-08-01 15:34:17
819
4
原创 Set集合
Set集合是无序、不重复和可扩展的Collection衍生类,它存放的是具有相同特性的一组对象。在实现方式上,HashSet、TreeSet都依赖于Map集合,而线程安全上SynchronizedSet、SynchronizedSortedSet都锁定内部对象mutex,在结构修改上保证操作的原子性,CopyOnWriteArraySet保证每次操作都是整个容器进行拷贝,避免fail-fast异常。
2017-12-11 20:59:04
641
原创 List集合
List列表从结构上分为数组列表ArrayList、链表列表Linked,从线程安全性分为ArrayList和LinkedList单线程列表、Vector和Collections.SynchronizedList以及CopyOnWriteArrayList多线程列表,从检测机制分为fail-fast、safe-fast。所以,在实际的业务需求中,需要结构当前程序环境加以利用,而不会盲目选择,因为它们都具有各自的特点。
2017-12-06 19:06:24
984
原创 Collection类适配器
在开始整理Collection集合框架时,最应该了解的是几个抽象类:AbstractCollecton、AbstractList、AbstractSet和AbstractQueue等接口适配器类。在设计模式一书中有提到适配器模式,它包含三种形式:接口适配器、类适配器和对象适配器,而类适配器在java.util包的Collection中得到应用。
2017-12-02 17:26:09
473
原创 Collection集合框架
在java.util包下存在封装了一般数据结构的工具类,如List列表、Queue队列、Set集合等结构。Collection作为聚合对象的抽象类,在线程安全和非线程安全环境下都有其衍生类,下面具体介绍Collection类的框架图,整体了解下Collection。
2017-12-02 11:50:04
1448
原创 String、StringBuilder和StringBuffer的区别
String、StringBuilder和StringBuffer三个类都是用于操作字符串的java.lang包下的工具类。在字符串连接操作比较频繁情况下,StringBuilder、StringBuffer代替“+”操作符能带来更好的性能。另外,StringBuffer在多线程环境下比StringBuilder更安全,因为它给大部分方法加上了synchronized锁关键字。
2017-11-21 15:29:40
673
原创 js比较器组件Comparator.js
对js中的基本类型进行值比较,而不是简单的“==”和“===”在业务应用中十分常见,js相对与java来说,缺少hashcode和equal方法,那么以js组件进行api的抽取,来达到通用的值比较则具有一定的实践意义。
2017-09-25 20:44:32
1245
原创 jQuery.extend扩展利器
jQuery的文件大小400kB左右,全部代码快到9000行。如果没有合理的组织代码,那么整个框架将混乱不堪。在开发框架过程中,也不是一蹴而就,扩展是任何框架都必不可少的工具。jQuery.extend在jQuery的源码中随处可见,它的实现方式也让许多的插件开发者摆脱了承重的代码维护负担。那么jQuery.extend是如何扩展的呢?
2017-07-04 22:49:30
400
原创 jQuery初始化
jQuery(selector, context)构造器,在jQuery提供的五种选择器:#id、element、.class、*和selector1,selector2,selectorN。在jQuery.prototype.init函数中如何分成几个if分支结构进行隔离,每个if条件都匹配了对应的selector
2017-07-02 17:24:02
1616
原创 Hibernate实体命名Bug
Hiberante和java Bean两者之间是由hbm.xml和get、set进行关联。但java Bean中的property属性的名字却有一个需要注意的小点,那就是类似于sName这种已单个字符小写开头,后接首字母大写的驼峰命名。在Hibernate中的BasicPropertyAccessor类中的getterMethod方法里的testStdMethod、testOldMethod两者和p
2017-06-29 08:43:37
451
原创 线程死锁
线程死锁安全性和活跃度通常是相互制约的,虽然可以通过开辟一定量的线程来提高活跃度,但是用来保证多线程安全的锁也可能引起锁顺序死锁问题(lock-ordering deadlock)。类似,我们使用线程池和信号量来约束资源的使用,但是也可能存在资源死锁(resource deadlock)。Java程序不能从死锁中恢复,所以能够避免死锁对于程序的设计十分重要。死锁哲学家就餐是多线程中很经典的问题,它
2017-05-18 19:38:27
329
原创 jQuery的内部全局变量和构造函数
jQuery外层包装函数打开任意一个jQuery的源码js文件,都会看到一个匿名自执行函数,如下代码所示。//()();自执行函数,定义后立马调用(function(window, undefined) { //... ... })(window);window是一个全局对象,为什么要把window作为参数传递到框架内部?调用函数栈时,收索变量顺序是从内到外的方式进行
2017-05-13 12:03:43
4917
原创 任务执行、取消和关闭
任务TaskTask就是抽象、离散的工作单元unit。把一个应用程序的工作work分离到任务中,可简化程序的管理;这种分离还在不同事务间划分了 自然的分界线,可以方便程序出现错误时进行恢复;同时,这种分离还可以为并行工作提供一个自然的结构,有利于提高程序的并发性。任务执行围绕执行任务来管理应用程序时,首先要指明一个清晰的任务边界TaskBoundaries;其次,应用程序应该在负荷过载时平缓地劣
2017-05-09 16:37:46
4511
原创 ThreadPoolExecutor
总结:ThreadPoolExecutor是一个基于池概念的线程执行框架,在并发编程中,合理的配置构造函数中的参数,可以提高应用程序计算能力。
2017-05-09 10:30:00
378
原创 java中的接口懂多少
接口很多人都会写,也明白它用在什么地方,会产生哪些效果。特别是很多人一提到接口,就脱口而出规范、设计模式,那么对于接口又了解多少呢?本章试着从java中接口的定义和使用出发,谈谈java中接口具有哪些特性。一、接口首先,了解接口interface就必须和类class区分开,为什么这么说呢?因为接口和类是两个概念,但接口又和类具有一定的关系。有人不禁会问,怎么说呢?类class是从java.
2017-05-08 13:58:59
6221
原创 jQuery源码结构
从2013年开始学习jQuery,由Aspx.net转换到javaWeb开发过程中,对jQuery的使用越来越频繁,也更加的喜欢上了这个框架,由此在心里不由的想要一探究竟。所以,开这个专栏来记录学习过程。
2017-05-08 08:23:42
612
原创 oracle数据库引擎转换
oracle数据库可以运行众多不同的引擎,如sql,plsql,java,c等,不同引擎之间的转换会消耗大量的CPU资源。java与c的引擎我们使用较少,主要是使用sql与plsql引擎,其中sql引擎是标准sql处理引擎,而plsql引擎主要是用于处理序列、函数、过程、包等,如果一个SQL语句同时嵌套了函数,则会在执行的过程中涉及到sql与lsql的引擎转换。举一个简单的例子,在过程中,我们把函数
2017-05-06 14:18:14
3603
原创 oracle游标使用
在进行PL/sql编程时,我们都会使用游标,游标有两种,一种是显式游标,使用类似如下方式:open 游标 loop fetch into …; exit when notfound; end loop; close 游标;另一种是隐式游标,使用类似如下:for 游标变量 in 游标 loop 赋值变量:=游标变量.列; end loop;这两种游标究竟何种性能更高,消耗资
2017-05-06 14:14:51
512
原创 sychronizer同步器
Synchronizer同步器在java并发编程中,多线程编程中无可避免的是线程流的控制问题以及共享数据的同步问题。java.util.concurrent包下的许多工具类都是为更好、更简单的方式为程序提供线程流控制和共享数据同步管理。Synchronizer是一个对象,它根据自身的状态调节线程的控制流。在java.util.concurrent包中可以充当Synchronizer的类包括:阻塞队列
2017-04-19 19:13:28
1038
原创 Executor任务执行框架
前言官方文档中Executor是一个将任务Runnable的提交与执行进行分离的对象。Executor接口中唯一入口是execute方法,类似于Runnable的run方法。在实际的应用系统中,Runnable作为Thread的传入参数(或者运行对象),由Thread的start方法进行启动。程序在线程中进行调用的入口是Runnable的run,那么为什么又需要一个Executor来执行Run
2017-02-24 10:56:43
766
原创 Timer定时器
Timerjava定时器是一个从当前时间往后延期某段时间长度在执行的一个类,作用类似于Thread.sleep方法,或者一种线程设施,用于安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。在实际的项目开发过程中,两个系统进行集成时,一个系统需要获取另一个系统的业务数据,此时系统需要周期性的调用集成系统的数据传送接口,而实际的被集成系统在线上实时的收集业务数据,那么使用Tim
2017-02-22 11:17:25
616
原创 Java中枚举的梗
Java中的枚举定义和使用,相信大多数的java程序员都会,但是对于enum的使用其实很多人还是一知半解,包括本人。自己无意当中看到下面这段程序后,发现自己彻底懵了,问了一些朋友,知道的也不多,突然觉得自己对枚举的认知量太少。通过学习JLS的enum types的规范后,总结了关于枚举的相关内容。enum Operation { PLUS { double eval(d
2017-01-04 13:54:39
998
原创 Java泛型方法重写问题
java中的泛型是采用类型擦除的方式来实现,也即编译后所有原始类型的泛型类都共享同一份目标代码,例如这里的A<T>编译器编译为A,那么编译器对于引用类中泛型的方法,也即泛型方法进行类型擦除操作时是如何实现的呢?答案是采用最左边类型(当前T的初始具体父类型)来代替。
2016-12-30 08:26:28
9874
1
原创 java类初始化顺序的影响
问题描述:在网上看到一个笔试题,由下列代码输出打印结果为null,为什么? 详细查看http://blog.youkuaiyun.com/two_water/article/details/53891952这篇博客package test;public class Base { private String name ="base"; public Base() { callN
2016-12-28 19:06:33
364
原创 java异常及其处理机制
Java异常处理机制中finally的问题1、什么叫做异常所谓异常是指程序的错误,即指系统错误,也包括逻辑错误,在语义层面上异常是程序的“意外、例外”。程序 = 数据 + 算法 + 代码,那么异常则是代码进行算法实现时出现数据或系统的意外、例外,从而导致了算法没有预测到的错误。2、为什么要进行异常处理有人会说,一个好的算法可以避免异常、错误的出现,也就不需要异常的处
2016-12-13 22:11:55
477
原创 多线程经典问题之读者、写者问题
多线程通信之读者、写者问题读、写问题是另一个非常出名的同步问题,常常用来模拟数据库的数据查询和数据修改两种情况问题。也即, 一个数据库允许有多个访问者同时对其进行数据访问,但是对于数据的修改只能有一个。那么如何来控制这种访问多个,而修改只能一个的数据操作方式?这也涉及到线程间通信和同步问题。数据库中存在的情况为:读者、读者可以同时存在;读者、写者不能同时存在,如果读者在前,则写者等待;否则所有
2016-12-06 09:09:40
1705
原创 哲学家就餐问题
Title 哲学家就餐问题是在1965年由Dijkstra提出并解决的一个问题,后来成为同步问题的一个经典问题。Disciber 有五位哲学家围坐在一张桌子前, 他们面前都放了一碗面,彼此间放了一把叉子。因为面非常的滑,以至于使用一个叉子吃不了,所以每位哲学家需要拿起放在他左右两边的叉子吃面。同时,每位哲学家具有两种状态:进餐、思考问题。每当一位哲学家感到饥饿时,他会试图去获得位于他左右两边的那两把
2016-11-29 14:02:24
899
原创 java生产者和消费者问题
有很长一段时间想坚持写博客,但总是感觉自己的技术水平有限,所以迟迟没动手。今天我在写一个简单的生产者和消费者问题,在多线程的世界里绕了很久很久,但在回顾操作系统的知识时,其中的进程协同和互斥问题给我带来了很大的启发,尤其是其中的信号量Semaphore的通信方式,我很喜欢也很容易理解。在这个过程中,我对单向链表进行堆栈的模拟纠结了挺久,不是不会,而是上班中断断续续的思维以及生活和毕业后的种种感情掠夺
2016-11-28 19:31:36
234
原创 归并排序
package innersort;public class MergeSort { /** * @param args */ public static void main(String[] args) { int[] oldArr1 = { 65, 97, 76, 13, 27, 49, 49, 38, 89, 300, 105, 666,
2016-04-15 21:04:05
200
原创 堆排序
/** * 可以用一维数组表示堆heap,但是并不是一维数组就是堆。要成为堆必须具备一个性质: 数组中的元素满足,k[i]<=k[2*i] && * k[i]<=k[2*i+1] * 如果当前堆的的根节点为堆中的最大值,而其他的左右孩子节点都不大于父节点,则称该堆为大根堆。同理,小根堆为根节点为堆中的最小值 * ,而左右孩子节点均不小于父节点。 *
2016-04-14 21:43:21
216
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人