- 博客(257)
- 资源 (2)
- 收藏
- 关注
原创 并发(2)--java线程池原理
线程池Execotors工具可以创建普通的线程池以及schedule调度任务的调度池。使用线程池的一个优点就是: 1、线程是稀缺资源,使用线程池可以减少创建和销毁线程的次数,每个工作线程都可以重复使用。 2、可以根据系统的承受能力,调整线程池中工作线程的数量,防止因为消耗过多内存导致服务器崩溃。 线程池创建的方式是: 线程池的核心类java.uitl.
2017-08-31 22:59:07
574
2
原创 并发(1)--线程池简介
通常情况下,当我们使用一个线程的时候,采用new方式去创建一个线程,这样实现起来很方便,但是与此同时存在一个问题:大量创建线程,会带来资源的消耗,并且如果并发的数量很多的时候,并且每个线程的执行时间很短的话,频繁创建线程会很消耗效率,因为频繁创建和销毁线程是一个很耗时间的过程。 如何使得线程可以复用,即执行完毕并不会销毁,进而可以执行其他的任务,那该多好啊,在java中可以通过线程池来达
2017-08-31 22:34:35
496
1
原创 Netty学习系列(二)-- NIO介绍
简介 nio 是non-blocking的简称,在jdk1.4 里提供的新api 。Sun 官方标榜的特性如下: 为所有的原始类型提供(Buffer)缓存支持。字符集编码解码解决方案。 Channel :一个新的原始I/O 抽象。支持锁和内存映射文件的文件访问接口。提供多路(non-bloking) 非阻塞式的高伸缩性网络I/O 。三大核心 NIO主要有三大核心部分:Cha
2017-06-25 21:19:51
621
3
原创 Netty学习系列(一)-- 掀开你神秘的面纱
Netty是什么(1)Netty的本质是由JBOSS提供的一个java开源框架。(2)Netty优势是提供异步的、事件驱动的网络应用程序框架和工具。(3)Netty的目的是用以快速开发高性能、高可靠性的网络服务器和客户端程序。总而言之: Netty 是一个基于 JAVA NIO 类库的异步通信框架,它的架构特点是:异步非阻塞、基于事件驱动、高性能、高可靠性和高可定制性。Net
2017-06-25 21:06:07
681
2
转载 Hadoop1.x与Hadoop2的区别
原文地址:http://blog.csdn.net/fenglibing/article/details/32916445 1、变更介绍 Hadoop2相比较于Hadoop1.x来说,HDFS的架构与MapReduce的都有较大的变化,且速度上和可用性上都有了很大的提高,Hadoop2中有两个重要的变更: l HDFS的NameNodes可以以集群的方式布署,增强了NameNo
2016-07-24 21:28:23
777
3
转载 Java NIO使用及原理分析 (四)
在上一篇文章中介绍了关于缓冲区的一些细节内容,现在终于可以进入NIO中最有意思的部分非阻塞I/O。通常在进行同步I/O操作时,如果读取数据,代码会阻塞直至有 可供读取的数据。同样,写入调用将会阻塞直至数据能够写入。传统的Server/Client模式会基于TPR(Thread per Request),服务器会为每个客户端请求建立一个线程,由该线程单独负责处理一个客户请求。这种模式带来的一个问题就
2016-07-22 20:45:04
461
3
转载 Java NIO使用及原理分析(三)
在上一篇文章中介绍了缓冲区内部对于状态变化的跟踪机制,而对于NIO中缓冲区来说,还有很多的内容值的学习,如缓冲区的分片与数据共享,只读缓冲区等。在本文中我们来看一下缓冲区一些更细节的内容。 缓冲区的分配 在前面的几个例子中,我们已经看过了,在创建一个缓冲区对象时,会调用静态方法allocate()来指定缓冲区的容量,其实调用 allocate()相当于创建了一个指定大小的数组,并把
2016-07-22 20:43:02
405
3
转载 Java NIO使用及原理分析(二)
在第一篇中,我们介绍了NIO中的两个核心对象:缓冲区和通道,在谈到缓冲区时,我们说缓冲区对象本质上是一个数组,但它其实是一个特殊的数组,缓冲区对象内置了一些机制,能够跟踪和记录缓冲区的状态变化情况,如果我们使用get()方法从缓冲区获取数据或者使用put()方法把数据写入缓冲区,都会引起缓冲区状态的变化。本文为NIO使用及原理分析的第二篇,将会分析NIO中的Buffer对象。 在缓冲区中,
2016-07-22 20:41:18
495
3
转载 Java NIO使用及原理分析 (一)
最近由于工作关系要做一些Java方面的开发,其中最重要的一块就是Java NIO(New I/O),尽管很早以前了解过一些,但并没有认真去看过它的实现原理,也没有机会在工作中使用,这次也好重新研究一下,顺便写点东西,就当是自己学习 Java NIO的笔记了。本文为NIO使用及原理分析的第一篇,将会介绍NIO中几个重要的概念。在Java1.4之前的I/O系统中,提供的都是面向流的I/O系
2016-07-22 20:36:46
431
2
原创 Oauth2.0协议简介
Ø 什么是Oauth2.0授权 概念 Oauth2.0授权是一个关于开放授权的一个开放标准,它可以允许用户授权第三方应用并且访问他们存储在另外的服务提供者上面的信息,而不需要将用户名和密码提供给第三方应用或者分享他们的数据的所有内容。 访问的原理是:Oauth允许用户提供一个令牌给第三方网站,一个令牌对应一个特定的第三方网站,同时该令牌只能在特定的时间内访问特定的资源。
2016-06-29 09:53:22
746
4
原创 Ehcache学习(四)ehcache缓存共享
缓存实现共享一般是在集群中很常用的,那么怎么配置呢?实现集群中缓存的方式有RMI,jgrop以及jms,我们把常用的第一种RMI方式进行详细的讲解以及实例的演示。 由于资源有限,我在我的机器上使用同一个ip不同的端口号来进行集群的模拟,从而达到我们想要演示的目的,实现缓存的共享。(以在windows上为例) 具体说明是: 配置cacheManagerPeerListenerFa
2016-06-16 16:32:57
6124
5
原创 Ehcache学习(三)ehcache与springAOP拦截器实例
本次我们使用springAOP+ehcache结合来实现数据的缓存,我们可以 Cache 系统中 Service 或则 DAO 层的 get/find 等方法返回结果,如果数据更新( 使用Create/update/delete 方法), 则刷新 cache 中相应的内容。Aop中最常见的就是拦截器,那么我们首先需要创建的就是一个拦截器:Ø MethodCacheIntercepto
2016-06-16 16:17:04
8527
3
原创 Ehcache学习(二)ehcache与spring注解实例
Ø 简介 概念 系统缓存是位于应用程序与物理数据源之间, 用于临时存放复制数据的内存区域,目的是为了减少应用程序对物理数据源访问的次数, 从而提高应用程序的运行性能. 缓存设想内存是有限的, 缓存的时效性也是有限的,所以可以设定内存数量的大小, 可以执行失效算法 , 可以在内存满了的时候,按照最少访问等算法将缓存直接移除或切换到硬盘上。 EhCache 是一个纯Java
2016-06-16 15:39:33
2664
3
原创 Ehcache学习(一)简介与实例
Ø 简介 概念 EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,JavaEE和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点。
2016-06-16 15:31:51
704
5
转载 MongoDB(四)分片集群
我们知道即使是采用了副本集,但是还是有些问题是无法进行解决的,比如:从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大,还有就是数据压力加大的时候,大到数据库支持不了的时候是否可以自动扩展呢? 此时Mongodb又出了新的解决方案,来应对这些事情。那就是Mongodb的分片集群技术。 具体情况详见下面的连接:http://www.cnblogs.com/huangxin
2016-06-13 20:34:32
704
3
原创 MongoDB(三)主从复制以及副本集的配置和使用
上篇主要讲解的是主从复制,这次我们来讲一下副本集。 副本集的优点在于:副本集采用的是心跳机制,当主机的节点挂掉之后,会从从服务器中通过选择机制再次选择一个主节点,这个主副切换是自动进行的 Ø 副本集的配置与使用 配置 与主从配置基本类似,我们先建立与主从复制基本一直的目录, 服务器端配置文件参数配置 启动服务器的服务端 启动服务器的客户端
2016-06-13 20:25:53
1329
1
原创 MongoDB(二)主从复制以及副本集的配置和使用
** Mongodb是支持数据之间的相互复制的,具体存在两种方式,一种就是主从复制,而另一种是副本集,两者之间既有相同点,也有不同点,我们将通过实例进行讲解。 主从复制 概念讲解 什么是主从复制?之前我们接触过mysql,知道数据库的双击备份,也就是主节点当掉之后,从节点可以接替主节点继续工作,这种模式在一定肯定是优于单节点,比单节点增加了一份可靠性。
2016-06-13 20:13:49
1457
3
原创 MongoDB(一)简介和安装使用
MongoDB 是一个基于分布式文件存储的数据库,是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。 对于关系型数据库,我们都比较熟悉,这里不做详细的介绍,主要来介绍的就是非关系型数据库,NoSql. Ø NoSql 简介 什么是NoSql? NoSQL = Not Only SQL,也就是意味着不仅仅是sql。NoSQL,指的
2016-06-13 19:50:43
575
3
原创 Java8新特性(四)------接口中可以定义方法体
Java8比起以前的版本存在很大的变化,我们知道在之前的版本中接口只能是定义抽象的方法,是不能定义实现的,但是在java8环境下,这个不可能已经变得可能。下面我们通过例子一步一步的来讲解下java8的用法。 定义静态方法 在接口中定义的静态方法,不是抽象的,具体实现的,可以直接使用接口名称调用。/** * Created by xiaona on 2016/5/30. */pu
2016-05-30 16:12:21
17722
10
原创 Java8新特性(三)------Stream
Ø 基础讲解 在java8中Stream被定义为泛型接口,这个接口代表的是数据流,但是Stream并不是一个数据结构,不直接进行数据的存储。Stream主要是通过管道来操作数据。 Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator。原始版本的Iterator,用户只能显式地一个一个遍历元素并对其执行某些操作;高级版本的
2016-05-30 16:03:18
675
3
原创 Java8新特性(二)------lamda表达式
Ø 基础讲解 Lambda表达式是一种基于函数的编程语言,下面我们来演示一下java8中lambda表达式的运用,根据例子来分析一下java8中lambda表达式的改进。 新建一个项目,这个项目必须是基于java8的,我使用的IDE编辑器是idea,故而配置idea的jdk环境为java8,配置如图: 我们先来看一下传统的写法:第一种实现方式interface
2016-05-30 15:59:10
755
3
原创 Java8新特性(一)------函数式编程
Ø 基本概念 理解FunctionalInterface(函数式接口,以下简称FI)是学习Java8 Lambda表达式的关键所在。FI的定义其实很简单:任何接口,如果只包含唯一 一个抽象方法,那么它就是一个FI。为了让编译器帮助我们确保一个接口满足FI的要求(也就是说有且仅有一个抽象方法),Java8提供了@FunctionalInterface注解。 对于方法的引用,严格来讲都是
2016-05-30 15:50:30
905
4
原创 java mail 邮件创建--基本原理
上篇提到了JAF,那么什么是JAF呢?JAF全称是javabeans activations framework ,也就是javabeans的激活框架,是一个专门的数据处理框架,它用于封装数据,并为应用程序提供访问和操作数据的接口,javamail api可以利用JAF从某种数据源中读取数据和获取数据的MIME类型,并且用这些数据生成MIME消息中的消息头和消息体。 JAF的主要作用就是让
2016-04-30 08:06:16
619
原创 Java mail API学习
Java mail API学习是sun公司为了方便java开发人员在程序中实现邮件的发送和接受而提供的一套标准的开发包,它支持一些常用的协议SMTP,POP3,IMAP以及MIME协议等等,java开发人员编写邮件处理程序的时候,只是需要调用相应的API类就可以了,java mail API主要是封装在一个mail.jar的文件中,mail.jar是邮件开发的核心包。 Ø Java mail
2016-04-29 23:19:48
675
1
原创 java.io------BufferedReader
java中的IO,也就是Input与Output的缩写。在java中,IO涉及的范围很大,我们主要来理解对于文件的读写操作。 对于文件内容的操作我们主要可以分为两类,是:字节流和字符流。而对于字符流有FileWriter和FileReader,其中他们的抽象类是Writer和Reader;而字节流主要是FileInputStream和FileOutputStream,其抽象类是InputStr
2016-04-29 20:35:20
631
1
原创 Java mail学习之邮件基础
了解相关邮件的基础知识,才能更好滴编写邮件,那么关于邮件有哪些基础的知识呢? Ø 邮件服务器 要在internet上提供电子邮件功能,必须具有专门的电子邮件服务器,就比如我们之前没有电子邮件之前,使用现实生活中的邮局一样,我们必须将我们的信件发送到邮局,然后邮局再次进行转发,才能达到我们想要的目的地。 电子邮件也是同理,电子邮件的传送也是需要有一个电子邮件服务器的,完成的功能就是
2016-04-29 19:58:06
585
2
原创 java使用篇—解析json数组
在程序的世界中,前台和后台的是很常见的事情,但是不同的情况下的处理可能不一样,最近做一个活动的时候,需要将前台的tab中所以选中的数据异步提交到后台,经过处理后将处理的结果返回给前台,并且进行显示。 Tab中的数据经过一系列的转换后是一个json的数组,那么接下来的事情就是如何在后台进行接收和处理了。 数据的格式是:$.ajax({ type: 'P
2016-03-31 09:06:04
3111
3
原创 Java实用篇--如何在指定文件位置创建文件
为什么提到这个问题呢?还是接着上次的创建完压缩文件后,会把文件存放在一个地方,这样的话所有商户创建的文件都会存在一个地方,这样就无法对商户的查看权限进行控制了,这样导致的结果就是其他商户创建的压缩文件被所有商户所共享,而这个不是我们所希望的,所以实现对压缩文件后的查看权限的实现变得很有必要了。 其实实现这个并不难。只要在商户压缩的文件的时候,把文件的压缩存放的地址动态进行创建,而不是事先创建
2016-03-31 08:46:12
2347
2
原创 Java实用篇------文件的压缩
生活当中的我们经常使用一个写文件压缩和解压的工具,也就是可视化的工具。比如,好压还有360等等使我们比较常见的工具。 那么一个工具的使用背后往往是代码或者说是程序在操控的,我们习惯了司空见惯的东西,比如能够使用工具的东西我们肯定不会使用手动操作来完成,能够机械化的东西我们也不会使用人工来完成。 但是这些东西使用的前提,那就是必须要人 先制造出这些东西,我们才能使用呢,所以工具不是从石头
2016-03-31 08:33:57
473
2
原创 java多线程------向线程传参
向线程传参的背景是:多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别。由于线程的运行和结束是不可预估,因此,在传递和返回数据时就不同于函数通过函数参数和return语句来返回数据。 不同于函数的调用,函数的调用通常是我们传入相应的参数,并且把这个函数将最终的计算结果进行返回,但是在多线程的异步开发模式下,数据的传递和返回与同步是存在很大的问题的。 最近在做项目的时候遇
2016-03-31 08:14:23
5225
2
原创 微信之旅——订阅号和服务号
公众平台的使用和我们使用其他的网络平台是一样,如果你仅仅是浏览或者是限于读的阶段,那么你是无须注册也是可以浏览部分的信息的,但是如果你想设置自己的个性化的配置,那么你就要进行注册,使用注册的号进行登录。 登录微信的公众平台注册登录,地址是:https://mp.weixin.qq.com,在注册的时候是分为两种类型:订阅号和服务号。 那么什么是服务号?什么又是订阅号?两者又有哪些区别呢
2016-02-29 12:48:10
582
6
原创 linux下mysql出现中文乱码(中文问号)
今天遇到一个很特别的情况,由于mysql的外网服务器遭受了攻击,无法不能使用可视化的方式连接数据库,这样给我的数据查询造成不小的麻烦,可是程序的问题往往是需要比对数据库的信息的,那怎么办? 后来使用Linux命令查询数据库,可是这一查问题出来了?会看到很多地方都是出来了中文乱码?这是怎么回事啊? 这个肯定是编码问题,但是是哪里的编码问题,很多认为是mysql的编码,因为编码不统一,就会
2016-02-29 09:37:56
2740
4
原创 微信之旅——js安全域名接口
微信公众平台js接口安全域名是什么?这里设置安全域名,目的是为了当发现此公众平台发现诱导分享行为时,可以根据此域名追溯到所有分享出去的链接,以及通过这些链接增加的粉丝。这样,微信就可以牢牢控制了你的微信平台,一旦发现违规,让分享链接失效,删除掉诱导行为增加的粉丝,是瞬间就可以完成的。因此,微信平台的开发者,一定要合理来使用分享功能,不要因小失大。等到你的微信平台被封,估计哭都来不及。 为什么
2016-02-29 09:23:04
3940
4
原创 微信之旅——微信公众号
最近做的项目是基于微信的二次开发,那么我们首先来了解什么微信的二次开发?可能有的人会想,微信的二次开发是不是很难?对于微信的二次开发存在很大茫然,其实并不像我们想象的那样,因为微信结合的是手机,很多时候在想,难不成还得学习手机开发的相关的技术吗? 其实这觉得这可能是很多人的疑虑,但是最近的学习中发现其实不是这个样子的,微信开发技术有以下的好处:不需要使用手机app的相关技术,并且开发语言并不
2016-02-29 09:12:06
931
3
原创 整理行囊,继续远航—致过去的时光
2015已经悄然离我们远去,回首间,我将以往碎片一片一片的拾起,拼凑昨日我的经历,时间就是这么的无情,在你不经意的瞬间,悄然逝去,不留痕迹,而唯一的迹象就是在我们这里,也就是写满了成长足迹的经历。 在逝去的一年里,每个人都有自己的经历,酸甜苦辣各自品味着其中的滋味。谁都想改变世界,以为改变世界是一件很难的事情,转眼间才知道,原来生活的点点就可以改变世界,点滴虽小,但是积少成多的思想,
2016-02-23 09:26:08
568
7
原创 人海中寻找,真的遇到你——Spring @ responsebody
当你面对一件事情,无计可施的时候,你是选择放弃,还是选择继续呢?生活中的我们总是在寻找下一个路口,也许就是在下一个路口就是我们转角处。 今天在调试ajax发送post请求的时候遇到了一个问题,就是发送的请求明明成功了,但是就是返回不了结果,后台使用的是spring mvc进行接收的,与前面的很多方法进行对比,发现一样了,试了很多方法就是不行,最后采取的是再试试。 终于发现了不一样的地方
2016-01-30 20:43:55
505
5
原创 用一颗热心,迎接生活的挑战——nginx初始
生命中总是充满着未知,但是未知并不可怕,可怕的是你面对未知,你却选择了退缩或者是逃避,人生从不缺乏勇气,关键在于你是否具备了这样的品质。 总是喜欢在花开的季节,赏花,总是希望在春天到了的时候,踏青,因为从大自然我可以汲取更多的勇气,从而带着我在生活中更加的自信,更加的有勇气。 当我面对新的东西的时候,我是那么的欢喜,欢喜自己又可以学到新的东西。Nginx,让我/知道了一个名词就是代理,
2016-01-30 20:23:39
478
4
原创 在程序世界,寻找更多精彩——线程的启动
原来生命从不缺乏精彩,只是我们从不善于发现,你的时间不能活在别人的眼里,而是在自我看来,你无法左右别人的口舌,却能左右自己的心情和未来。 当你实在控制不了自己的情绪的时候,就去绕着城市的房子转一圈吧,也许你会有所新的追求。在你不经意的瞬间。 其实人在一定的条件下是跟随者心情进行波动的,如何掌控心情,使得自己的效率达到最高呢,那只能是自己做主了。好了,不发表这么多感慨了,进入正题。
2016-01-30 19:47:32
456
4
原创 花开的季节,携梦想归来(一)
从未如此认真过,此刻的我一笔笔书写下自己的点点滴滴,是遗憾也好,是幸福也罢,人的一生总是有那么几个时刻,躲在某个角落,泪流满面。 Ø 忘不了那个充满着梦想的天空 过去不知道过去了多长,我将自己遗忘在某个角落,在做梦的年纪撒下了梦的种子,总是期待在某个春天发芽,开花,可是总是在开花的季节,我却总是忘记了继续给它浇水,施肥,于是我再次在播种的季节将梦想的种子撒下,因世间种种总是在某个时刻忘
2016-01-08 08:22:30
595
7
原创 Jfinal—悄悄走近你
不同于其他的,JFinal是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。 在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!为您节约更多时间,去陪恋人、家人和朋友 。 jfinal的使用官方文档已经介绍的很详细了,大家可以参考官方文档进行学习,这里大致介绍
2015-12-31 22:23:13
545
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人