自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hubin0011的专栏

逝者如斯夫,不舍昼夜

  • 博客(78)
  • 收藏
  • 关注

原创 Nginx安装

nginx安装过程

2022-12-01 14:26:02 371

原创 Maven常用命令

maven常用命令

2015-03-23 13:14:10 399

原创 intellij idea build时出现illegal character的问题

在用intellij idea编译工程时出现了非法字符的错误,但是此工程在eclipse中编译却没有出现错误。查看代码发现,原来是方法名中有中文,而Java文件的编码是GBK,不是UTF-8。在Idea中配置javac使用GBK编码进行编译即可,如下图:

2014-12-29 09:55:10 1620

原创 Spring定时器的Cron表达式

Cron表达式说明Cron表达式规范Cron表达式包含6个或者7个域,每个域之间用空格分开,依次是:秒(0-59) 分(0-59) 小时(0-23) 日期(0-31) 月(0-11) 星期日(1-7) 年(1970-2099)其中的“年”是可选Cron的域规范秒、分、时、月和年,有四种规则"* - , /":* :表示匹配任意值。比如分钟域使用"

2014-12-21 21:48:58 971

原创 Spring中配置SLF4J和Log4J

背景SLF越来越流行,接口也比Common-Log好用,如何在基于

2014-10-11 14:12:35 1254

原创 ubuntu安装xmind

最近换ubuntu为主力环境,下载了xmind按转

2014-09-09 20:30:45 1785

原创 Tomcat UTF-8 编码设置

Tomcat UTF-8  编码设置修

2014-07-15 10:11:46 636

原创 4.3 ForkJoin_聚合任务结果

ForkJoin 聚合任务结果

2014-07-09 15:07:28 673

原创 4.2 ForkJoin_拆分任务

ForkJoin 拆分任务概述本章节用一个简单示例说明如何拆分任务。示例是更新一批产品的价格。任务类继承ForkJoinTask类,并复写execute方法,在execute方法中进行任务拆分或者价格更新。如果任务需要更新的产品数量大于10,它将拆分这些元素为两部分,并相应创建两个任务,再通过调用invokeAll方法来分配所拆分的任务,invokeAll方法是一个同步调用,这个任务将

2014-07-09 15:04:45 795

原创 4.1 Fork/Join框架概述

Fork/Join框架概述概述

2014-07-09 15:02:33 542

原创 3.4 取消任务

取消任务概述使用执行器时,不需要管理线程,只需要实现Runnable或Callable任务并发送任务给执行器即可。执行器负责创建线程,管理线程池中的线程,当线程不再需要时就销毁它们。有时候,我们可能需要取消已经发送给执行器的任务,这种情况下,可以使用Future接口的cancel方法来取消任务。cancel方法取消任务的执行有如下几种:* 如果任务已经完成,或者

2014-07-09 14:59:53 519

原创 3.2 获得执行器任务的结果

获得执行器任务的结果概述创建线程的基本方法:实现Runnable接口没有方法能够返回线程执行结果。Executor Framework允许各并发任务返回结果。这个能力通过以下两个两个接口实现:

2014-06-18 18:28:22 565

原创 3.1 创建线程执行器

创建线程执行器Executor Framework概述

2014-05-19 18:22:38 509

原创 2.11 线程间的数据交换

线程间的数据交换

2014-05-09 18:24:19 631

原创 2.10 并发任务的阶段性运行

并发任务的阶段性运行Java并发API提供了一个更复杂、更强大的同步辅助类:Phaser,它允许执行并发多阶段任务。当我们有并发任务并且需要分解成几步执行时,这种机制就非常适用。Phase类机制实在每一步结束的位置对并发线程进行同步,当所有线程都完成额这一步才允许执行下一步。Phaser类初始化时需要指定参与同步操作的任务数,同时也可以动态的增减任务数。这里用一个简单例子来

2014-05-07 19:09:21 529

原创 细说Redis持久化机制

概述Redis不仅可以作为缓存来使用,也可以作为内存数据库。Redis作为内存数据库使用时,必须要解决一个问题:数据的持久性。有些将Redis作为缓存使用的场景也需要将缓存的数据持久化到存储介质上,这样在Redis重启后仍然能对热点数据提供缓存服务,不会因为缓存数据的缺失而对整个系统造成冲击。本文就Redis内置的持久化机制进行说明。

2014-05-07 19:03:13 1963

原创 2.9.集合点同步

集合点同步上节讨论了如何实现等待并发线程完成,如果并发线程在一个节点需要等待其他的并发线程完成操作,而后才能继续处理,如何让并发线程能够在一点(这个点称之为集合点)等待其他线程?为更容易的处理这类问题,Java5引入了**CyclicBarrier**类,它也是一个同步辅助类,允许多个线程在某个点上进行同步。**CyclicBarrier**使用一个整数进行初始化,这个数是需要

2014-05-06 21:50:55 568

原创 2.8.等待多个并发完成

等待多个并发完成经常会有这种场景:在主线程中启动多个工作线程,然后主线程需要等待工作线程全部完成后再进行下一步处理。如何实现等待多个线程完成?用Thread.join方法?这种方式耦合性太强,而且太土了!Java5引入了新的机制,这个机制语义明确、功能强大、使用灵活,这就是**CountDownLatch**类。**CountDownLatch**类是同步辅助类,在完成一组正在其他线程中执

2014-05-05 22:04:23 588

原创 2.7.资源并发访问控制

资源并发访问控制

2014-05-05 21:54:26 697

原创 2.5.线程的同步和协作_锁的公平性

锁的公平性

2014-05-05 21:44:45 608

转载 搭建高可用的MongoDB集群(下)-2

按照上一节中深入副本集搭建后还有两个问题没有解决:从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大;数据压力大到机器支撑不了的时候能否做到自动扩展?在系统早期,数据量还小的时候不会引起太大的问题,但是随着数据量持续增多,后续迟早会出现一台机器硬件瓶颈问题的。而MongoDB主打的就是海量数据架构,他不能解决海量数据怎么行!“分片”就用这个来解决这个问题。传统数据库怎么

2014-04-25 19:12:41 598

转载 搭建高可用的MongoDB集群(下)-1

MongoDB公司原名10gen,创立于2007年,在2013年收到一笔2.31亿美元的融资后,公司市值评估已增至10亿美元级别,这个高度是知名开源公司Red Hat(创建于1993年)20年的奋斗成果。高性能、易扩展一直是MongoDB的立足之本,同时规范的文档和接口更让其深受用户喜爱,这一点从分析DB-Engines的得分结果不难看出——仅仅1年时间,MongoDB就完成了第7名到第五

2014-04-25 19:11:18 576

转载 搭建高可用的MongoDB集群(上):MongoDB的配置与副本集-2

这篇文章看完这些问题就可以搞定了。NoSQL的产生就是为了解决大数据量、高扩展性、高性能、灵活数据模型、高可用性。但是光通过主从模式的架构远远达不到上面几点,由此MongoDB设计了副本集和分片的功能。这篇文章主要介绍副本集:mongoDB官方已经不建议使用主从模式了,替代方案是采用副本集的模式, 点击查看,如图: 那什么是副本集呢?打魔兽世界总说打副本,其实这两个概念差不多一个意

2014-04-25 19:10:02 568

转载 搭建高可用的MongoDB集群(上):MongoDB的配置与副本集-1

在大数据的时代,传统的关系型数据库要能更高的服务必须要解决高并发读写、海量数据高效存储、高可扩展性和高可用性这些难题。不过就是因为这些问题Nosql诞生了。NOSQL有这些优势:大数据量,可以通过廉价服务器存储大量的数据,轻松摆脱传统mysql单表存储量级限制。高扩展性,Nosql去掉了关系数据库的关系型特性,很容易横向扩展,摆脱了以往老是纵向扩展的诟病。高性能,Nosql通过简单

2014-04-25 19:09:16 595

原创 2.4.线程的同步和协作_读写锁

读写锁锁机制引入了读写锁特性:ReadWriteLock接口和唯一的实现类ReentrantReadWriteLock。读写锁是锁机制的最大改进之一,提供了将读和写分开处理的能力。ReentrantReadWriteLock有两个锁,一个是读操作锁,另一个是写操作锁。读操作锁允许多个线程同时访问,但是写操作锁只允许一个线程进行访问,在一个线程执行写操作时,其他线程不能执行读操作。在

2014-04-23 12:14:23 476

原创 2.3.线程的同步和协作_锁

锁synchronized是最基本的同步机制,Java5.0引入了另外一种更强大更灵活的同步机制:Lock接口及其实现类。Lock接口的引入使得同步机制不再局限于关键字,而可以在API一层实现,深远的影响了Java的并发基础设施。相比synchronized,Lock机制有以下优点:* 支持更灵活的同步代码块结构。使用synchronized关键字时,只能在同一个s

2014-04-23 12:12:40 382

转载 有经验的Java开发者和架构师容易犯的10个错误(下)

首先允许我们问一个严肃的问题?为什么Java初学者能够方便的从网上找到相对应的开发建议呢?每当我去网上搜索想要的建议的时候,我总是能发现一大堆是关于基本入门的教程、书籍以及资源。同样也发现网上到处充斥着从宽泛的角度描述一个大型的企业级项目:如何扩展你的架构,使用消息总线,如何与数据库互联,UML图表使用以及其它高层次的信息。这时问题就来了:我们这些有经验的(专业的)Java开发者如何找到合

2014-04-23 12:05:47 446

翻译 有经验的Java开发者和架构师容易犯的10个错误(上)

首先允许我们问一个严肃的问题?为什么Java初学者能够方便的从网上找到相对应的开发建议呢?每当我去网上搜索想要的建议的时候,我总是能发现一大堆是关于基本入门的教程、书籍以及资源。同样也发现网上到处充斥着从宽泛的角度描述一个大型的企业级项目:如何扩展你的架构,使用消息总线,如何与数据库互联,UML图表使用以及其它高层次的信息。这时问题就来了:我们这些有经验的(专业的)Java开发者如何找到合

2014-04-23 12:03:41 517

转载 115个Java面试题和答案——终极列表(下)

第一篇讨论了面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,本章主要讨论异常处理,Java小应用程序,Swing,JDBC,远程方法调用(RMI),Servlet和JSP。异常处理Java小应用程序(Applet)SwingJDBC远程方法调用(RMI)ServletJSP异常处理43.Ja

2014-04-23 11:59:39 547

转载 115个Java面试题和答案——终极列表(上)

本文我们将要讨论Java面试中的各种不同类型的面试题,它们可以让雇主测试应聘者的Java和通用的面向对象编程的能力。下面的章节分为上下两篇,第一篇将要讨论面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,第二篇主要讨论异常处理,Java小应用程序,Swing,JDBC,远程方法调用(RMI),Servlet和JSP。开始!目录面向对象编

2014-04-23 11:56:23 426

翻译 Lambda FAQ_17.Java的集合要去向何方

Java的集合要去向何方

2014-04-23 11:50:51 611

原创 2.2.线程的同步和协作_基本协作

基本协作

2014-04-22 15:41:43 512

原创 2.1.线程的同步和协作_基本同步

基本同步同步概述多个线程共享一个资源的场景非常常见,比如多个线程读或者写相同的数据等。为了防止共享资源可能出现的错误或数据不一致,需要有一些机制来防止错误的发生。临界区(Critical Section)是指访问共享资源的代码块,这个代码块在同一时间只允许一个线程执行。Java提供了同步机制来实现临界区。当一个线程试图访问一个临界区时,它使用同步机制查看是不是已经有其他线程

2014-04-22 15:38:26 667

原创 1.6.线程基础_守护线程

守护线程Java有种线程叫做守护(Deamon)线程。这种线程优先级很低,通常是无限循环的,作为服务提供者。守护线程是的优先级的,而且当程序中只有守护线程时,程序会退出运行。所以守护线程不能做重要的工作,因为它不能保证什么时候被分配到资源,也可能会随时结束。创建守护线程很简单,只要调用Thread类的setDaemon方法即可。下面用守护线程演示一个时钟:

2014-04-21 18:11:03 422

原创 1.5.线程基础_线程异常处理

线程的异常处理

2014-04-21 18:09:43 503

翻译 Lambda FAQ_16.钻石问题

diamond problem“diamond-problem”是允许多继承所带来的问题。对于允许状态的多继承语言来说(比如C++)这是一个严重的问题。但是,在Java中是不允许类的多继承,仅仅允许接口多继承,所以是不包含状态的。考虑下面的场景:interface A { default void m() { ... } }inte

2014-04-21 18:06:46 572

翻译 Lambda FAQ_15.如何解决方法声明之间的冲突

如何解决方法声明之间的冲突?因为可以从多个接口继承,所以相同的默认方法能够从不同的路径继承而来。因为每个继承的默认方法提供不同的实现,编译器需要一个一种方式来选择使用哪个声明。下面是编译器的选择方式:* 类总是优先的。在类或者子类中的声明总是优先于所有的默认方法声明。* 在有同样签名式的方法中选择最明确提供默认方法的接口。例如,基于这个原则下面的代码将输出**hello

2014-04-19 22:07:51 516

原创 1.4.线程基础_线程组

线程组当线程变多后就带来了管理问题,JAVA平台提供了线程组进行线程的管理。这运行我们把一个线程组内的所有线程当成一个单一的单元。比如要中断线程组内的所有线程,只需要中断线程组即可。假设我们要中断10个线程,只需要把10个线程用一个线程组管理,然后中断线程组就可。实例代码如下:

2014-04-18 18:39:53 429

原创 1.3.线程基础_等待线程

等待线程有时候我们需要等待其他线程完成后当前线程才可以继续执行。回顾之前的示例可以看到主线程和其他线程是并发运行的,回顾一下1.2中程序执行的日志:

2014-04-18 18:38:02 484

翻译 Lambda FAQ_14.默认方法是否给Java引入了多重继承

默认方法是否给Java引入了多重继承?当然不是,因为Java中已经有了多重继承。在语言最开始就有接口类型的多继承特性。默认方式确实引入了一种新的多继承方式,称之为行为多继承。Java仍然没有类似C++中的状态多继承。下面是一个行为多继承的例子。**java.util.Sized**这个新接口生命了**size**和**isEmpty**两个方法,并且为后者提供了默认实现

2014-04-18 14:19:46 562

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除