- 博客(42)
- 资源 (5)
- 收藏
- 关注
转载 分布式锁的介绍及使用方案
一、分布式锁当应用服务器数量超过1台,对相同数据的访问可能造成访问冲突(特别是写冲突)。单纯使用关系数据库比如MYSQL的应用可以借助于事务来实现锁,也可以使用版本号等实现乐观锁,最大的缺陷就是可用性降低(性能差)。对于GLEASY这种满足大规模并发访问请求的应用来说,使用数据库事务来实现数据库就有些捉襟见肘了。另外对于一些不依赖数据库的应用,比如分布式文件系统,为了保证同一文件在大量读写操作
2016-09-20 18:26:46
1139
原创 JAVA8新特性
Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。一、接口的默认方法Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例
2016-09-20 14:51:16
642
原创 Java实现生产者消费者模型
生产者消费者问题是研究多线程程序时绕不开的经典问题之一,它描述是有一块缓冲区作为仓库,生产者可以将产品放入仓库,消费者则可以从仓库中取走产品。解决生产者/消费者问题的方法可分为两类:(1)采用某种机制保护生产者和消费者之间的同步;(2)在生产者和消费者之间建立一个管道。第一种方式有较高的效率,并且易于实现,代码的可控制性较好,属于常用的模式。第二种管道缓冲区不易控制,被传输数据对象不易于封装等,实
2016-09-19 17:07:47
9268
原创 ZooKeeper常用指令集
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。下载地址:http://zookeeper.apache.org/releases.html#downloadZooKeeper服
2016-09-19 16:27:21
1295
原创 Java多线程之ForkJoinTask,ForkJoinPool介绍及使用
ForkJoinTask是jdk1.7整合Fork/Join,即拆分fork+合并join,性能上有大大提升。思想:充分利用多核CPU把计算拆分成多个子任务,并行计算,提高CPU利用率大大减少运算时间。有点像,MapReduce思路感觉大致一样。jdk7中已经提供了最简洁的接口,让你不需要太多时间关心并行时线程的通信,死锁问题,线程同步,下面是它提供的接口:RecursiveActio
2016-09-19 14:18:45
8091
原创 Java中常见内存溢出错误及处理方法
相信有一定JAVA开发经验的人或多或少都会遇到OutOfMemoryError的问题,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的认识。 在解决Java内存溢出问题之前,需要对JVM(Java虚拟机)的内存管理有一定的认识。JVM管理的内存大致包括三种不同类型的内存区域:Permanent Generation space(永久保存区域)、Heap space(
2016-09-18 18:01:30
4300
转载 分布式集群项目中同步DB数据的解决方案之Canal
业务场景描述:在我们的项目中有些配置信息持久化在数据库中,这些配置信息又是在系统启动后自动加载并缓存在local或者redis中,但如果后台运营系统进行了相应更新配置操作,我们需要实现“热部署”或“热插拔”等功能的话,我们有哪些方案可以实现呢?单机项目就非常简单了,但分布式集群的项目怎么办呢? 分布式集群的项目之间同步数据,我们来讲一下有哪些方案解决。方案一:项目程序中对DB进行操
2016-09-18 15:23:08
6250
转载 IDEA下安装/配置Jrebel6.X
1. 为什么要使用Jrebel在日常开发过程中, 一旦修改配置/在类中增加静态变量/增加方法/修改方法名等情况, tomcat不会自动加载, 需要重启tomcat才能使修改后的代码或配置生效.对于比较大的项目, 每次启动需要5min+时, 就比较浪费时间了. Jrebel插件可以让我们修改任何代码均不用重启, 可以大大减少重启项目所浪费的时间.Jrebel官网: http://
2016-07-18 11:11:00
1749
转载 常用UML每种图的细节问题
常用UML每种图的细节问题: 1、用例图(use case diagrams)【概念】描述用户需求,从用户的角度描述系统的功能【描述方式】椭圆表示某个用例;人形符号表示角色【目的】帮组开发团队以一种可视化的方式理解系统的功能需求【用例图】 2、静态图 类图(class diagrams) 【概念】显
2016-07-18 10:43:54
1474
原创 UML类图中类与类之间的关系及画法
类与类之间的关系通常有4种,即依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)、实现关系(Realization)依赖关系(Dependency)【概念】表示两个或多个模型元素之间语义上的连接关系【绘图方式】虚线箭头,箭头指向被使用者【依赖图】泛化关系(继承)(Generalization)【概念】描述类
2016-07-18 10:42:01
7582
转载 高并发系统之限流特技:有了它,京东6.18如虎添翼!
转载 ------ 2016-06-24 张开涛相关文章在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统能处理的容量,可谓是抗高并发流量的银弹;而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开;而有些场景并不能用缓存和降级来解决,比如稀缺资源(秒杀、抢购)、写服务(如评论、下单)、频繁的复杂查询(
2016-06-24 10:28:17
6862
原创 Java基础面试复习二
21、写clone()方法时,通常都有一行代码,是什么?clone 有缺省行为,super.clone();因为首先要把父类中的成员复制到位,然后才是复制自己的成员。22、面向对象的特征有哪些方面计算机软件系统是现实生活中的业务在计算机中的映射,而现实生活中的业务其实就是一个个对象协作的过程。面向对象编程就是按现实业务一样的方式将程序代码按一个个对象进行组织和编写,
2016-06-12 16:55:18
1422
原创 Hibernate的N+1查询及解决
在Session的缓存中存放的是相互关联的对象图。默认情况下,当hibernate从数据库中加载Customer对象时,会同时加载所有关联的Order对象。以Customer和Order类为例,假定ORDERS表的CUSTOMER_ID外键允许为null,图1列出了CUSTOMERS表和ORDERS表中的记录。 以下Session的find()方法用于到数据库中检索所有的Custome
2016-06-08 19:12:12
6957
转载 B树、B-树、B+树、B*树
B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; 如: B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,
2016-06-08 18:29:00
4153
转载 Mybatis入门实例(四)——MyBatis与Spring 3.X的整合
这篇文章主要是说明了Spring3和MyBatis的整合方法,之所以要整合就是将MyBatis创建factory等各种繁冗的工作以及对session的管理、事务的管理交由spring容器帮我们管理,省心省力。这个项目是在我的前几篇文章的基础上加入spring的内容,关于MyBatis的项目如何建立请查阅我之前的关于MyBatis的帖子。 整个的项目结构如下:先把包都导入
2016-06-08 15:49:55
4535
原创 Mybatis入门实例(三)——使用MyBatis Generator生成DAO
虽然MyBatis很方便,但是想要手写全部的mapper还是很累人的,好在MyBatis官方推出了自动化工具,可以根据数据库和定义好的配置直接生成DAO层及以下的全部代码,非常方便.需要注意的是,虽然自动化工具需要一个配置文件,但是MyBatis的配置文件仍然不能少,自动化工具的配置文件用于对生成的代码的选项进行配置,MyBatis的配置文件才是运行时的主要配置文件.在类路径下面建立gen
2016-06-08 14:48:20
6558
转载 Mybatis入门实例(二)——添加ehcache缓存支持
为了提高MyBatis的性能,有时候我们需要加入缓存支持,目前用的比较多的缓存莫过于ehcache缓存了,ehcache性能强大,而且位各种应用都提供了解决方案,在此我们主要是做查询缓存,提高查询的效率. 在Mybatis的官网上把集成ehcache的文档下载下来看了看,说的太简单了,对于新手很难理解,而且里面说的也不是很清楚,经过一番折腾,终于将ehcache加入了. 官网上提供
2016-06-08 14:47:33
4703
转载 Mybatis入门实例(一)
ibatis的3.X版本改名了,叫做MyBatis,暂且不讨论之间的差别,今天来做一个MyBatis的小例子其实MyBatis虽然在源码层面上和ibatis差别较大,但是我们实际用的时候差别并不大,只不过xml里面的标签名变了变,类名变了而已,其他的基本上一样.如果学过hibernate,会发现Mybatis里面的类名等和hibernate的很接近,这样做就是为了降低开发人员的学习成本.
2016-06-08 14:46:06
5026
原创 Nginx相关指令及配置
一.Nginx相关指令:1.nginx启动nginx -c /etc/nginx/nginx.conf其中参数-c指定nginx启动时加载的配置文件,当然也可以不指定配置文件,省略-c,也可以启动,表示使用默认的配置文件。nginx2.nginx停止nginx -s stop 或者nginx -s quit 或者pkill -9 nginx 例如在
2016-06-02 16:07:34
6978
原创 Nginx安装及使用
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。(百度百科-http://www.dwz.cn
2016-06-01 14:37:41
1827
原创 Mac系统开发常见问题-80端口被占用的解决方案2-使用Nginx解决
起因: 开发中,eclipse中无法使用80端口(因mac 本身已经占用了80端口),导致调试项目的时候,需要使用8080端口调试,不是很方便,所以,想到使用nginx做代理,然后做转发到8080端口。思路: 无非就那么几种: 1、干掉80端口的占用程序,直接让tomcat占用 2、端口转发,将80端口转发到其他
2016-05-31 21:16:17
6020
原创 Mac系统开发常见问题-80端口被占用的解决方案1-使用pfctl做网络层转发
IntelliJ IDEA之Tomcat启动相关报错:1.EvnetLog报错:Error running test1: Address localhost:80 is already in use大致可能解决方案1:Mac OS X 因为要绑定80端口需要ROOT权限, 但是如果用root权限启动eclipse或tomcat又会造成, 启动创建的各类文件是root的,普通用户无法
2016-05-31 21:05:36
14519
原创 Mac系统开发常见问题-IntelliJIDEA-TOMCAT-Unable to ping server at localhost:1099
IntelliJ IDEA之Tomcat启动相关报错:1.EvnetLog报错:Application Server was not connected before run configuration stop, reason: Unable to ping server at localhost:1099 out报:/Users/niefei/Programs
2016-05-30 23:13:51
6978
原创 Mac系统开发常见问题-IntelliJIDEA-TOMCAT-Address localhost:80 is already in use
IntelliJ IDEA之Tomcat启动相关报错:1.EvnetLog报错:Error running test1: Address localhost:80 is already in usea默认Mac系统中80端口由web共享文件apache【/etc/apache/】占用,更换listen 80 - 》 8011等b默认Mac系统中80端口需要使用root用户才能启动,即你
2016-05-30 23:00:05
13385
原创 Mac系统开发常见问题-Mac登录界面多了一个其他账户选项
最近在给MacbookPro安装许多应用多了,开机登录页面“其他账户”选项,开机及其丑陋,无法忍受,搜索相关文章发现可以这样解决。方法:1.系统偏好设置-》用户与群组-》解锁-》登录选项-》自动登录-》所用账号及保存密码。【好处在于自动登录,坏处是无隐私】2.彻底解决问题的方式,类似于windows的修改注册表,大致方案如下:原因分析: 在安装一些软件时会自动启用ro
2016-05-30 22:51:37
18757
转载 Git常用指令集
Git 是一个很强大的分布式版本控制系统。它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势。Git常用操作命令:1) 远程仓库相关命令检出仓库:$ git clone git://github.com/jQuery/jquery.git查看远程仓库:$ git remote -v添加远程仓库:$ git remote add
2016-05-27 11:23:48
2155
原创 苹果Mac系统开发必备资源
昨天在Mac系统上安装了一系列的开发工具,搞了到半夜,要装的有点贪多....哈哈,分享一下,相关安装软件及注册码的获取方式。分享相关下载软件的地址:mac软件:http://soft.macx.cn/pc6苹果电脑软件::http://www.pc6.com/mac/开发工具:1.InteliiJ IDEA15:(建议官方版,怕又有xcode事件)htt
2016-05-24 09:43:25
3581
原创 2016年5月热门IT职位的推荐
如有兴趣联系直接回复“NextX工作室”的公众号,并将简历发送我们邮箱:nextxworkroom@163.com 。我们会诚心将你简历转发给相关HR,并更新相关信息。——————————互联网公司推荐求职网站:“拉勾网”,“100offer”普通行业推荐求职网站:“51job”,“智联招聘”,“赶集网”等Hot Jobs List
2016-05-20 18:01:44
3890
转载 理解Java垃圾回收机制
理解java垃圾回收机制有什么好处呢?作为一个软件工程师,满足自己的好奇心将是一个很好的理由,不过更重要的是,理解GC工作机制可以帮助你写出更好的Java应用程序。这是我个人的主观观点,但我相信一个人精通了GC,往往会是一个更好的Java程序员。如果你对GC感兴趣,那就意味着你有一定大规模应用开发的经验。如果你已经仔细过考虑选择合适的GC算法,这意味着你完全理解你开发的应用程序的功能。当然,这
2016-05-20 17:58:09
2165
转载 Java-JVM的内存调优
首先需要注意的是在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因为GC过后这个值是不会变化的,因此内存调优的时候要更多地使用JDK提供的内存查看工具,比如JConsole和Java VisualVM。对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数,过多的GC和Full GC是会占用很多的系统资源
2016-05-17 11:00:31
1880
转载 Java-JVM的内存管理和垃圾回收
JVM内存组成结构JVM栈由堆、栈、本地方法栈、方法区等部分组成,结构图如下所示:1)堆所有通过new创建的对象的内存都在堆中分配,其大小可以通过-Xmx和-Xms来控制。堆被划分为新生代和旧生代,新生代又被进一步划分为Eden和Survivor区,最后Survivor由From Space和To Space组成,结构图如下所示:新生代。新建的对象都是用新生代分配内存,
2016-05-17 10:56:54
1748
转载 Java-JVM的Java代码编译和执行的整个过程
Java代码编译是由Java源码编译器来完成,流程图如下所示:Java字节码的执行是由JVM执行引擎来完成,流程图如下所示: Java代码编译和执行的整个过程包含了以下三个重要的机制:Java源码编译机制类加载机制类执行机制Java源码编译机制Java源码编译由以下三个过程组成:分析和输入到符号表注解处理语义分析和生成class文件流程图如下所示
2016-05-17 10:55:21
5385
转载 Java-JVM的基本结构
从Java平台的逻辑结构上来看,我们可以从下图来了解JVM:从上图能清晰看到Java平台包含的各个逻辑模块,也能了解到JDK与JRE的区别对于JVM自身的物理结构,我们可以从下图鸟瞰一下:对于JVM的学习,在我看来这么几个部分最重要:Java代码编译和执行的整个过程JVM内存管理及垃圾回收机制
2016-05-17 10:02:07
4390
转载 Java多线程
线程的概念:程序 进程与线程的区别: 程序是一个静态的代码或者说静态的存在.而进程是程序的一次运行过程. 多个进程的内部数据和状态都是完全独立的,而多线程是共享一块内存空间和一组系统资源,有可能互相影响. 线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈,所以线程的切换比进程切换的负担要小。线程的实现方法:继承Threa
2016-05-16 18:03:41
1725
转载 CAS实现SSO单点登录原理
1. CAS 简介1.1. What is CAS ?CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的、开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录解决方法(属于 Web SSO )。CAS 开始于 2001 年, 并在 2004 年 12 月正式成为 JA-SIG 的一个项目。1.
2016-05-16 17:17:29
2073
转载 Java内存模型及管理
1. 概述 多任务和高并发是衡量一台计算机处理器的能力重要指标之一。一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题,它代表着一秒内服务器平均能响应的请求数,而TPS值与程序的并发能力有着非常密切的关系。在讨论Java内存模型和线程之前,先简单介绍一下硬件的效率与一致性。2.硬件的效率与一致性 由于
2016-05-16 14:10:04
2388
转载 Spring的AOP实现原理
什么是AOPAOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从
2016-05-13 16:01:41
11898
原创 HashMap实现原理
1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2. HashMap的数据结构: 在Java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,H
2016-05-13 10:39:32
16321
3
原创 Java基础面试复习一
做Java业务开发很久了,有些技术快忘了?来吧,让我们从基础重新开始复习一下~~~1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。2、Java有没有goto?java中的保留字,现在没有在java中使用。3、说说&和&&的区别。&和&&都可以用作逻辑与的运算
2016-05-12 15:47:56
4509
原创 Linux常用指令集
1. ls命令ls命令是列出目录内容(List Directory Contents)的意思。运行它就是列出文件夹里的内容,可能是文件也可能是文件夹。?1234567root@tecmint:~# ls Android-Games
2016-05-10 18:09:18
2931
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人