自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 收藏
  • 关注

转载 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)

当今软件行业,开源已经是大势所趋,但是其实不同的开源协议也是有着不同的试用范围的。现在我们来盘点一下。以下内容参考链接http://blind.iteye.com/blog/516425。现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种(http://www.opensource.org/licenses/alphabetical)。我们在

2016-08-07 22:59:12 452 5

原创 用jetty跑maven项目(详细版,适合小白)

众所周知,jetty和tomcat都是apache的产品,其中jetty的功能没有apache强大,换来的是比apache更轻的体量和更高的效率,tomcat大家都比较熟悉,jetty可能会比较陌生一些。今天我就用jetty带着大家一起跑一个简单的maven web项目。环境准备: maven准备 首先下载maven,可以直接去官网下载,链接如下: http://maven.apache.or

2016-07-09 01:14:00 3138

翻译 jetty官方文档翻译第二章

Chapter 2. Using Jetty IntroductionTable of ContentsDownloading Jetty Running Jetty Deploying Web Applications Finding Jetty in Maven You can use Jetty in many different ways, ranging from embeddin

2016-06-19 15:08:06 791

翻译 jetty官方文档翻译第一章

Chapter 1. Introducing Jetty What is Jetty? Jetty is an open-source project providing an HTTP server, HTTP client, and javax.servlet container. This guide is in two parts. The first part emphasizes

2016-06-13 23:24:16 856

原创 排序常用的三种算法

冒泡算法public static void sort(long[] arr) { long tmp = 0; for(int i=0;i<arr.length - 1;i++) { for(int j=arr.length - 1;j>i;j--){ if(arr[j]<arr[j-1]){ //进行交换

2016-05-15 22:32:32 620

原创 java容器总结

容器大体分为两类:Collection和Map。 区别: 1 Collection中存储了一组对象,而Map存储键值对。 2 Collection的子类都实现了iterator这个方法,该方法能返回一个Iterator对象。Collection的具体实现包括List和Set。 区别: 1 List是有序的,元素可以重复的,Set是无序的,元素不可以重复。 2 Set的value最多只能存

2016-05-08 20:18:53 589

原创 找到满足条件的数组

给定函数d(n)=n+n的各位之和,n为正整数,如d(78)=78+7+8=93。这样这个函数可以看成一个生成器,如93可以看成由78生成。 定义数A:数A找不到一个数B可以由d(B)=A,即A不能由其他数生成。现在要写程序,找出1至10000里的所有符合数A定义的数。 回答: 申请一个长度为10000的bool数组,每个元素代表对应的值是否可以有其它数生成。开始时将数组中的值都初始化为fal

2016-05-01 21:43:18 927

原创 对一个正整数n,算得到1需要的最少操作次数

实现一个函数,对一个正整数n,算得到1需要的最少操作次数。操作规则为:如果n为偶数,将其除以2;如果n为奇数,可以加1或减1;一直处理下去。例子: func(7) = 4,可以证明最少需要4次运算 n = 7 n-1 6 n/2 3 n-1 2 n/2 1 要求:实现函数(实现尽可能高效) int func(unsign int n);n为输入,返回最小的运算次数。给出思路(文字描述)

2016-05-01 20:46:55 2457

原创 HashMap如何存储数据的?

我们知道,HashMap是通过key算出hashCode,然后,通过使用hashCode当做下标来存储数据的,其实这种说法并非完全正确,比如HashMap初始容量只有16,他是怎么存储下hashCode值大于16的数据的呢?通过观察源码,我们发现如下源码: /** * Returns index for hash code h. */ static int inde

2016-04-30 19:02:13 6796

原创 mysql不同版本varchar长度的不同含义

我们知道我们常用的字符集有utf-8,gbk,gb2312等。 GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换。 其中UTF8一个汉字占三个字节。 GB2312是GBK的子集,GBK是GB18030的子集,所以他们都是一个汉字占二个字节。在mysql中5以后的版本设置varchar(10)就是代表能存10个汉字。 在mysql中4版本设置varchar(10)就

2016-04-27 11:49:23 614

原创 HashMap最大容量为什么是2的32次方

//默认的桶数组大小static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;//极限值(超过这个值就将threshold修改为Integer.MAX_VALUE(此时桶大小已经是2的31次方了),表明不进行扩容了)static final int MAXIMUM_CAPACITY = 1 << 30;//负载因子(请阅读下面体会这个值的用处)s

2016-04-24 16:41:46 10982 10

原创 jvm参数配置

配置如下参数,可打印GC信息: -verbose:gc -XX:+printGC[GC 4790K->374K(15872K), 0.0001606 secs][GC 4790K->374K(15872K), 0.0001474 secs][GC 4790K->374K(15872K), 0.0001563 secs][GC 4790K->374K(15872K), 0.0001682 s

2016-04-21 00:26:42 363

原创 jvm运行机制

jvm启动流程 启动java进程-》装载配置(根据当前路径和系统版本寻找jvm.cfg)-》根据配置寻找JVM.dll(JVM.dll为JVM主要实现)-》初始化JVM获得JNIEnv接口(JNIEnv为JVM 接口,findClass等操作通过它实现)-》找到main方法并运行。jvm基本结构 PC寄存器 每个线程拥有一个PC寄存器(程序计数器) 在线程创建时 创建 指向下一条指令的地址

2016-04-19 23:25:07 402

原创 jvm简介

定义 jvm严格来讲是一种规范,现下最流行的实现是hotspot。发展史 1996年 SUN JDK 1.0 Classic VM 纯解释运行,使用外挂进行JIT1997年 JDK1.1 发布 AWT、内部类、JDBC、RMI、反射1998年 JDK1.2 Solaris Exact VM JIT 解释器混合 Accurate Memory Management 精确内存管理,数据类型敏

2016-04-19 00:07:19 333

原创 socket长连接和socket短连接

短连接 连接->传输数据->关闭连接 HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。 也可以这样说:短连接是指SOCKET连接后发送后接收完数据后马上断开连接。 长连接 连接->传输数据->保持连接 -> 传输数据-> 。。。 ->关闭连接。 长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。 http的长连接

2016-04-18 21:32:06 570

原创 java.io.File 删除文件delete()和deleteOnExit()的区别

file.delete()//删除文件,删除的是创建File对象时指定与之关联创建的那个文件. file.deleteOnExit();//在JVM进程退出的时候删除文件,通常用在临时文件的删除.

2016-04-18 10:40:45 1731

原创 mysql集群原理剖析

mysql集群? MySQL集群是一个无共享的(shared-nothing)、分布式节点架构的存储方案,其目的是提供容错性和高性能。 数据更新使用读已提交隔离级别(read-committedisolation)来保证所有节点数据的一致性,使用两阶段提交机制(two-phasedcommit)保证所有节点都有相同的数据(如果任何一个写操作失败,则更新失败)。 无共享的对等节点使得某台服务器上

2016-04-17 23:18:17 855 1

原创 java native关键字

简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern “C”告知C++编译器去调用一个C的函数。

2016-04-17 10:30:48 245

原创 Iterator简单剖析

迭代器(Iterator)是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。迭代器(Iterator)游标默认在第一个元素之前的位置,所需取第一个元素需要用到next()方法。迭代器(Iterator)的方法如下: 如下为java代码简单应用:package com.ldz.constant;imp

2016-04-16 19:08:58 370

转载 TCP协议中的三次握手和四次挥手(图解)

建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示: 先来看看如何建立连接的。 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。 那如何断开连接呢?简单的过程如下: 【注意】中断连接端可以是Client端

2016-04-16 17:12:28 201

原创 TCP和UDP的区别

首先:TCP和UDP都是传输层的协议。他们的区别 TCP协议是面向连接的协议,UDP协议不是面向连接的协议。所以TCP是可靠的协议,UDP是不可靠的协议。TCP协议和UDP协议为什么会共存? 有些应用,对数据传输可靠性要求非常高,例如大家浏览网页,通过网页注册帐号、转帐等服务,这是不容许出错的,使用TCP协议能把出错的可能性降到最低(当然,网络自身很糟糕,TCP协议也没办法)。但是,提供这种可靠

2016-04-14 23:04:44 376

原创 soa架构简单剖析

什么是SOA (面向服务的体系结构) ? 面向服务的体系结构是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以使用一种统一和通用的方式进行交互。SOA发展 基本特征 SOA的实施具有几个鲜明的基本特征。实施SOA的关键目标是

2016-04-12 22:08:06 243

转载 java多线程编程关键字volatile,ThreadLocal和synchronized

1.volatile volatile主要是用来在多线程中同步变量。 在一般情况下,为了提升性能,每个线程在运行时都会将主内存中的变量保存一份在自己的内存中作为变量副本,但是这样就很容易出现多个线程中保存的副本变量不一致,或与主内存的中的变量值不一致的情况。 而当一个变量被volatile修饰后,该变量就不能被缓存到线程的内存中,它会告诉编译器不要进行任何移出读取和写入操作的优化,换句话说就

2016-04-12 21:22:07 386

原创 分布式锁简单介绍

什么是分布式锁? 百度百科给出如下定义: 分布式锁是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。 在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个

2016-04-11 19:37:10 344

原创 jvm常用参数设置

1 初始堆大小: 默认值:物理内存的1/64(<1GB),默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制。 设置命令-Xms2 最大堆大小: 默认值:物理内存的1/4(<1GB),默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制。3 年轻代大小 默认值:注意:

2016-04-10 23:26:38 784

转载 fullGC过于频繁的原因和解决方案

案例1 系统高峰期fullGC频繁,优化后恢复正常。 导致原因: 系统中有一个调用频繁的接口会调用下面这个方法,目的是获取图片的宽高信息,但是Image这个对象用完不会自动释放,需要手动调用 flush()方法;以前没有调用这个方法,就导致一有请求就会有大对象进入old区,在业务高峰期old区一会就被打满,所以一直进行fgc。public static Image getImage(Strin

2016-04-10 23:02:43 10184

原创 mysql主从数据库简单实现

想要配置主从数据库,首先要有两台机器(没有物理机,拿虚机充数也可),没有的同学就不用往下看了。我们的实验环境为centos操作系统。假设我们有两台机器(多台原理相同); ip分别如下(这两台机器要预装mysql服务): 192.168.88.128 192.168.88.129我们可以拿192.168.88.128当做主数据库,把192.168.88.129当做从数据库。配置主库首先我们要对1

2016-04-10 22:26:49 548

原创 centos系统yum安装mysql

查看能安装的mysql版本 yum list mysql* 如下图: 安装 mysql yum install mysql-server* -y 出现如下提示,表示安装成功。 启动mysql服务 service mysqld start 如下图: 登陆mysql(默认没有密码) mysql uroot -p 如下图: 查看database show databases;

2016-04-10 14:01:30 319

原创 常用的三个字符串类型剖析

常用的三个字符串类型有String,StringBuffer,StringBuilder它们的底层数据结构都是字符数组。String 底层数组是一个被final描述的字符数组。所以不可变 StringBuffer 继承了AbstractStringBuilder,AbstractStringBuilder里定义了一个字符数组,因为没有被final修饰,所以是可变的。 方法被synchroni

2016-04-09 22:53:14 1197

原创 linux系统yum常用命令

1.列出所有可更新的软件清单 命令:yum check-update2.安装所有更新软件 命令:yum update3.仅安装指定的软件 命令:yum install4.仅更新指定的软件 命令:yum update5.列出所有可安裝的软件清单 命令:yum list6.用YUM安装软件包 命令:yum install7.用YUM删除软件包 命令:yum remove8.使用YUM查找软

2016-04-09 19:59:24 435

原创 linux系统安装yum服务

进入命令行界面,输入如下命令进行安装: apt-get install yum如下图:

2016-04-09 18:38:48 343

原创 linux常用操作

1 界面版的乌班图如何进入命令行模式? 在菜单输入终端,点击进入终端。 如下图: 2 如何切换到root账户? 两种方式: su,输入root账户的密码后切换到root身份,无时间限制。 sudo su,效果同su,只是不需要root的密码,而需要当前用户的密码。 如下图: 3 查看当前目录文件列表 ls命令,如下图: 4 退回到上一目录 cd ..命令,如下图: 5 进入当

2016-04-09 18:31:06 237

原创 JVM原理简单剖析

JVM在整个jdk中处于最底层,负责于操作系统的交互,用来屏蔽操作系统环境,提供一个完整的Java运行环境,因此也就虚拟计算机. JVM工作原理和特点主要是指操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境.1.创建JVM装载环境和配置2.装载JVM.dll3.初始化JVM.dll并挂界到JNIENV(JNI调用接口)实例4.调用JNIEnv实例装载并处理clas

2016-04-09 17:32:40 294

原创 MySql主从数据库和读写分离简单剖析

主从数据库 主从数据库, 主要是主数据库将数据通过二进制的日志文件同步到从库。在大型的互联网项目中,通常数据库操作都是一个瓶颈,频繁的数据库操作,导致数据库处理不过来。这其中一个原因都是因为server是集群的,而数据库还是单台,所以导致两边处理能力相差甚远。许多的国内外大型互联网项目架构体系中,均采用了MySQL的主从数据库配置来实现查询负载、增强数据库处理能力。假设我们的实验环境有两台服务器:

2016-04-08 00:40:18 1868

原创 适配器模式剖析

什么是适配器模式? 在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。——Gang of Four模式中的角色 目标接口(Targe

2016-04-06 22:45:27 261

原创 代理模式剖析

什么是代理模式? 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式的组成? 抽象角色:通过接口或抽象类声明真实角色实现的业务方法。 代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。 真实角色:实现抽象角色,定义真实角色所要

2016-04-06 22:29:00 232

转载 spring原理

一、 IoC(Inversion of control): 控制反转 1、IoC: 概念:控制权由对象本身转向容器;由容器根据配置文件去创建实例并创建各个实例之间的依赖关系 核心:bean工厂;在Spring中,bean工厂创建的各个实例称作bean 二、AOP(Aspect-Oriented Programming): 面向方面编程 1、 代理的两种方式: 静态代理:

2016-04-05 22:02:53 279

转载 jvm参数在哪里设置

在哪里设置,分好几种情况: 1、集成开发环境下启动并使用JVM,如eclipse需要修改根目录文件eclipse.ini; 2、Windows服务器下安装版Tomcat,可使用Tomcat7w.exe工具(tomcat目录下)和直接修改注册表两种方式修改Jvm参数; 3、Windows服务器解压版Tomcat注册Windows服务,方法同上; 4、解压版本的Tomcat, 通过startup

2016-04-04 21:26:51 17316

转载 java动态获取jvm参数

JDK提供java.lang.management包, 其实就是基于JMX技术规范,提供一套完整的MBean,动态获取JVM的运行时数据,达到监控JVM性能的目的。 java.lang.management包,是Java SE 5 中新引入的 JMX API。package com.ldz.jvm;import java.lang.management.CompilationMXBean;imp

2016-04-04 21:01:47 4600

转载 java堆内存的划分

根据对象的存活率(年龄),Java对内存划分为3种:新生代、老年代、永久代1、新生代: 比如我们在方法中去new一个对象,那这方法调用完毕后,对象就会被回收,这就是一个典型的新生代对象。 现在的商业虚拟机都采用这种收集算法来回收新生代,新生代中的对象98%都是“朝生夕死”的,所以并不需要按照1:1的比例来划分内存空间,而是将内存分为一块比较大的Eden空间和两块较小的Survivor空间,每次使用

2016-04-04 17:57:19 2359

空空如也

空空如也

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

TA关注的人

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