自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ninetyhe的博客

当你迷茫不知所措的时候,做好手上的事情,是最好的选择。

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

原创 关于JVM个人浅谈(三)

在上一篇中,大致讲述了GC回收的算法,接下来就在本篇文章里介绍一下如何去预估Java对象的大小,以便后续再优化JVM提供数据理论基础。一个普通对象的内存大小如下:1._mark对象头 占用8byte;2.oop指针,默认占用4byte;3.数据区 具体根据对象属性而定;4.padding,内存对齐(如果不懂,可以看看计算机组成原理 这本书 大学计算机系必修之一) Java以8的

2015-08-12 22:45:24 698

原创 Redis缓存应用之Java

想必Redis这个缓存已经无人不知了,在代理的配合下已经在分布式缓存中的得到了很好的肯定,现在我们一起通过一个Java的例子全面了解Redis缓存。首先需要安装redis,下载地址: https://github.com/MSOpenTech/redis安装完后,在自己的安装目录 下进入cmd输入 redis-server --maxmemroy 200m ;之所以需要加这个指令“--ma

2015-08-06 16:48:34 1297

原创 关于JVM个人浅谈(二)

在上一章,我们了解Java虚拟机的分布以及各个部分的主要存储内容,下面将介绍GC的长用回收算法。1.引用计数法:引用计数法是比较古老的一种垃圾回收算法。主要实现就是当任何一个对象引用A对象的时候,则在A对象的计数器上加1,如果引用失效的时候,则将A的计数器减1,如果对象A的引用计数器为0,则回收该对象的内存空间。这种方式虽然简单,但是存在不足,就是当A对象引用B对象,B对象又引用A对象,这

2015-08-05 10:45:54 643

原创 关于JVM个人浅谈(一)

Java虚拟机是Java程序运行的基础,也是深入理解java的必备知识。  首先JVM的内存分布主要有:程序计数器,虚拟机栈,本地方法栈,Java堆,方法区。其中标红的表示相对更重要。  1)程序计数器程序计数器是一块很小的内存,是每一块线程的私有空间,主要负责为每一个线程记录下一条需要运行的指令。如果当前线程正在执行一个Java方法,则程序计数器记录正在执行的Java字节码地址,如果

2015-08-05 10:15:33 773

原创 深度理解反射机制

1.反射的概念:Java的反射机制就是指程序在运行的状态下,允许改变程序的结构或者变量类型。换句话说就是Java可以加载一个运行时才得知名称的class类,获得其构造函数,成员变量以及方法;2.Java通过反射机制实例化的方法:1)获得该对象的类:  import java.lang.reflect.Field;import java.util.List;/** * Cre

2016-12-31 15:10:22 691

原创 静态代理与动态代理

首先了解一下代理作用:代理解藕,是的接口实现类与业务代码解藕,无需通过调用接口实现类却不仅仅实现了接口的方法而且对该方法增加,同时也使得代码的逻辑层次清晰。首先我们看看静态代理:/** * 接口 * Created by ykanghe on 12/28/16. */public interface SimpleInterface { public void sayH

2016-12-28 22:50:06 509

原创 Java 常用算法 插入,冒泡,快速排序大放送

基础思想不在复述,java的实现如下:import java.util.Arrays;/** * Created by ykanghe on 12/27/16. */public class algorithm { /** * 快速排序 * * @param a * @param left * @param right

2016-12-27 23:10:57 527

原创 关于Integer的一个大坑

最近在业务代码中,一时偷懒,用了包装类,于是踩了一个大坑;而话不说,先上代码:Integer a=1;Integer b=2;Integer c =129;Integer d = 129;a=b true; c=b fales;为什么呢?看看源码:/** * Cache to support the object identity semantics

2016-12-16 11:31:16 850 1

原创 Java中Volatile个人理解

1.what is volatile?  在java中为了解决线程的并发问题,引入了volatile关键字修饰符号;其作用是:在多线程情况下,保证数据同步,换句话说就是在多线程情况下,对一个volatile字段进行修改后,任何访问这个字段的线程都是读到最新的值。2.volatile is thread safe?  虽然volatile可以保证在多线程的情况下,数据同步,但是volat

2016-12-06 17:08:14 487

原创 浅谈IO的那点事

1.首先介绍一下阻塞,非阻塞,同步和异步的关系;所谓阻塞即在调用结果没有返回之前,线程一直挂起;非阻塞则是无论结果是否返回,则都不会阻塞当前线程;同步:即调用方法或者函数的时候必须有结果才返回,而非同步则调用完方法则直接返回了;2.io模型:同步阻塞,同步非阻塞,异步阻塞,异步非阻塞;例子具体可见:http://blog.csdn.net/barnetthe/article/det

2016-11-27 16:22:21 707

原创 Java实现二叉搜索树

package Tree;/** * Created by ykanghe on 2016/9/8. */public class BinSearchTree { //根节点 Node root; //叶子节点 private static class Node { public int iData; public int

2016-09-08 16:09:19 377

原创 JAVA实现将数组存入二叉树中

在工作中,当我们面临在使用内存存储数据的时候,只使用hashmap存储,可能会面临内存不足,只能不断扩容的情况下。于是我们可以自己写一些数据结构来存储,譬如二叉树这样的数据结构来存储,这样如果重复的字段只存在一个节点,不同的字段只需要延时叶子节点即可。下面一起来看看,如何用java实现二叉树的存储结构,下面只是一个简单的例子,如果读者需要使用复杂的结构的话,可以按自己的需要自行实现;

2016-09-07 14:21:09 6006

原创 Linux sed 替换文本命令 实战在html页面使用

sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法sed命令行格式为;在这本文只简单的介绍一下sed替换文本的命令,主要用户html页面的针对js以及css加上版本号,这样保证每次发布前端脚本的时候,实时拉到最新的js和css; sed的替换命令格式大致如下:[address]s

2016-08-29 14:30:16 3661

原创 mave工程dependencyManagement与dependencies区别

在Maven中dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器。在dependencyManagement下申明的dependencies,Maven并不会去实际下载所依赖的jar包,而是在dependencyManagement中用一个Map记录了jar的三维坐标。而被仅仅是被dependencies包裹的元素,

2016-07-29 10:45:47 672

原创 线程的生命周期

Java线程生命周期:   一个线程的大致生命周期分为:创建-就绪-(阻塞)-运行-死亡。   1)创建:当一个thread被实例化出来后就完成了线程的创建;   2)就绪:当一个线程调用了start()方法的时候,该线程就处于就绪的状态了;   3)阻塞:如果一个就绪的线程,没有获得cpu的资源的时候,即处于阻塞状态,我们通常调用wait()方法时候,可让该线程会处于阻塞状态‘

2016-05-22 16:43:22 427

原创 消息中间件RabbitMQ

一.RabbitMq 概念:RabbitMq是开源的AMQP(Advance Message Queuing Protocol,高级消息队列协议;),服务端是通过Erlang语言编写的,该协议是应用层的面向消息的中间设计,该特点是面向消息,路由,队列并提供可靠型,安全型的队列协议,支持跨平台,然而其中最大的特点就是异步。RabbitMqAPI中基本对象就是ConnectionFactory

2016-03-08 16:32:01 794

原创 Java如果提高反射效率

1.什么是反射?通俗的来说就是,通过java的类名创建Class对象,然后我们可以通过class对象的newInstance的方法获得我们所需要的对象,而且这个过程是在程序运行中创建的,我们可以称之为动态编译,这样很大的提高了代码的灵活性,并降低了代码之前的耦合度。这样我们常见的例子就是Class.forName("JDBC");我想我们在加载jdbc的时候都用过这个方法,这样就是反射,具体的

2016-01-20 15:29:19 2763

原创 Redis主从复制安全性

Redis主从复制的配置十分简单,它可以使从服务器是主服务器的完全拷贝。下面是关于Redis主从复制的几点重要内容:Redis使用异步复制。但从Redis 2.8开始,从服务器会周期性的应答从复制流中处理的数据量。一个主服务器可以有多个从服务器。从服务器也可以接受其他从服务器的连接。除了多个从服务器连接到一个主服务器之外,多个从服务器也可以连接到一个从服务器上,形成一个图状结构Redi

2015-12-31 10:39:31 711

转载 Mysql之性能优化

MySQL 数据库性能优化之索引优化大家都知道索引对于数据访问的性能有非常关键的作用,都知道索引可以提高数据访问效率。为什么索引能提高数据访问性能?他会不会有“副作用”?是不是索引创建越多,性能就越好?到底该如何设计索引,才能最大限度的发挥其效能?这篇文章主要是带着上面这几个问题来做一个简要的分析,同时排除了业务场景所带来的特殊性,请不要纠结业务场景的影响。索引

2015-12-28 11:56:10 422

原创 Netty浅谈(一)

1.what is netty ?netty是jboss下的提供一个异步,事件驱动的网络应用框架,该框架极大简化了网络编程,并具备高性能,高可靠的优点。这里需要和NIO区分一下的是,NIO是基于异步的网络通信框架,而netty由于是基于NIO实现的,所以即能基于网络通信,而且可以用于网络应用的分层结构,也许这么说很抽象,但后续会基于NIO的零拷贝解释清楚。目前只需要知道netty是网络应用框架

2015-12-11 16:15:18 614

转载 建立索引所需要关注的问题

1、表的主键、外键必须有索引;2、数据量超过300的表应该有索引;3、经常与其他表进行连接的表,在连接字段上应该建立索引;4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;5、索引应该建在选择性高的字段上;6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:A、正确选择复合

2015-10-07 20:36:28 527

转载 直击阻塞,非阻塞,异步,同步四者联系与区别

老张爱喝茶,废话不说,煮开水。出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。1 老张把水壶放到火上,立等水开。(同步阻塞)老张觉得自己有点傻2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种水壶。水开之后,能大声发出嘀~~~~的噪音。3 老张把响水壶放到火上,立等水

2015-10-06 20:02:08 515

原创 浅谈 Nginx和LVS的各种优缺点

LVS的负载能力强,因为其工作方式逻辑非常简单,仅进行请求分发,而且工作在网络的第4层,没有流量,所以其效率不需要有过多的忧虑。LVS基本能支持所有应用,因为工作在第4层,所以LVS可以对几乎所有应用进行负载均衡,包括Web、数据库等。注意:LVS并不能完全判别节点故障,比如在WLC规则下,如果集群里有一个节点没有配置VIP,将会导致整个集群不能使用。还有一些其他问题,目前尚需进一

2015-09-28 14:26:50 17590 1

原创 愿你从根本上了解HashMap

想必对于一个Java开发程序员来说,HashMap用的不少了,当被人问起你了解HashMap的时候,也许你会说:HashMap是线程不安全的,HashMap采取K,V的形式存储,HashMap是高效,强一点的会说,HashMap通过一个Entry的内部类实现的,是的,可你真的了解Map吗?你会说Map是通过数组实现的,你或者也会说是通过链表实现的?可它实际上是通过数组和链表实现的,就算你知道这一点

2015-09-07 20:55:32 1061

原创 Java问题排查(运维篇)

每一位开发想必都会遇到线上服务告警,而导致这样原因的肯能有流量增加或是代码中bug异常没有抓住导致,而此刻我们就需要去排查问题。1:业务增加,导致FGC频繁发送,如果不知道如何查看FGC的话,可以参考之前写的:Jstat查看MinorGC和FGC使用详解,点击即可。这里不做重新复述。当发现FGC的次数频繁很高,这里说明了需要优化JVM来减少FGC的次数;而这种问题不是个人原因导致的线上问题,所

2015-08-20 10:15:55 2506

原创 Java IO深入浅出

1.What is stream?  流失一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或者是网络连接。类似的,当程序需要写入数据的时候,就会开启通向目的地的流。在Java中,IO的部分很庞大,基本包括两大部分:字节流和字符流。具体结构如下图(图源于网上):2:什么是字节流?以字节为单位传输的流。字节流的输入流祖

2015-08-19 22:30:44 866

原创 DNS原理及解析流程

1,what is DNS?DNS 是domain name system 的英文缩写,中文名是域名系统,作为IP地址与域名之间相互转化的一个分布式数据库。可以理解成一个在ip地址与域名之间的一个翻译员。2.DNS的工程流程是什么?当我们在浏览器输入网页的时候不可能记住每一个网站的ip地址,而是输入某个网页的网页地址(域名地址),然后通过DNS将我们入职的域名地址转换为对应的i

2015-08-17 20:48:48 769

原创 写出高性能的JQuery

一个糟糕的Jquery可能会影响到整个页面的渲染更或是请求耗时很长,这样的网页展示,我想是用户不愿意看到的。1.取消没必要的频繁的获取Jquery对象,这个在Java编程里我想一样:// 糟糕h = $('#element').height();$('#element').css('height',h-20);// 建议$element = $('#element');h = $

2015-08-14 17:26:49 683

原创 秒懂命令模式

在软件开发中,由于请求者与行为实现者之间存在过高的耦合,这样对于同一个接口存在多处调用的情况下,我们对其进行封装,这样供各处调用,而且大大的降低了请求者与行为执行者之间的耦合度。在实际运用中,例如在客户端发起的请求,可以通过不同的Cmd的命令字来调取相应的接口实现类,完成逻辑,而且这种设计模式已经广泛的运用。于是乎,命令模式成为了设计模式中的十分重要一部分,而且在开发中也是运用十分流行。

2015-08-11 17:35:28 795

原创 观察者模式

观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,让它们能够自动更新自己。首先定义一个接口,负责对被观察者对象的属性更新package com.test.observer;/** * 被观察的对象接口 * @author yuewen * */// 抽象观察者角色public

2015-08-11 15:59:11 785

原创 关于Session和cookie个人见解

背景:由于HTTP是无状态的协议,这样我们无法判断同一个用户多次请求时记录用户的信息从而需要频繁的身份校验,包括开启多个浏览器浏览同一个网站依旧需要不停的都身份验证。这样就产生了session机制,可以理解成Session基于保持状态的Web服务器的方法,那么cookie就是基于保持状态的客户端方法。由于一般的Session唯一标示SessionID又依赖于cookie的存储(这里只是相对,因为s

2015-08-10 21:38:40 782

原创 AJAX快速掌握

html> head> title>MyTesttitle> script language="javascript"> function onclickAjax(){ var xmlHttp; if(Windows.XMLHttpRequest){   xmlHttp=new XMLHttpRequest();

2015-08-05 22:04:14 722

原创 Jstat使用详解

1.jps可以理解成java进程的ps,也就是罗列出所有的正在运行的Java进程;2.jstat 一个极强的一个VM监控工具;jstat -gcutil pid 可以查看对应该id进程的gc所有状况,如下图:下面解释一下各个字母表示的意思:s0:如果了解JVM的童鞋,很清楚s0就是Java堆内存里的新生代的survivor space0的简称,所有该值指的是新生代s0的已使

2015-08-05 15:37:40 5508

原创 Maven实战之正式环境和测试环境配置分离

最近一直在研究前公司的架构,发现原公司的架构还是很不错的,对于生产环境以及测试环境这一点,虽然没有配置中心,但也是一定程度实现了正式环境以及测试环境的分离。闲话不多说,现在直接上代码:首先需要在pom文件中确定filter和要filter的资源,这是通过在build节点中添加filter和resource来实现的,示例如下: ${env}.properties

2015-08-04 10:05:51 3046

原创 JQuery详解一

1.下载完jquery 需要在区间引入 jquery框架(这里我用过的是1.91.1版本) src = "你的路径/jquery.1.9.1.min.js">红字这块最重要,language与type可以不写。下面写一个简单的例子:一个简单的jquery例子程序 src = "你的路径/jquery.1.9.1.min.js">你自己写的js部分$(document

2015-07-31 17:29:05 727

原创 Linux基础之vmstat详细教程

1.vmstat 常用指令 vmstat 统计虚拟内存信息,可以对操作系统的proc、memory、CPU、IO等信息进行统计以呈现给用户。一般vmstat工具的使用是通过两个数字参数来完成的,[ delay [ count ] ]其中delay是间隔,count显示多少次信息。如:vmstat 1 3 是每1秒显示一次,共显示3次。2.vmstat其他指令详解vmstat

2015-07-30 22:33:41 786

原创 HTML基本元素了解

一个无序列表:p表示段落,可以认为内容的一大段  咖啡    茶  牛奶这里是第二段  这里是表格的头    时间地点    这里是表格的内容    2000悉尼第一行,且一定要写在标签tr里的td中有效    2004雅典第二行    2000北京第三行

2015-07-25 11:26:33 546

原创 JQuery基础attribute

之前工作上纯后端,基本不碰js,最近也开始设计动态页面与后端交互,总结了一些jquery的基本常用指令attr$("#label"):这个代码选中html文档中,id为label的标签,即;$(".label"):这个代码选中html文档中,class属性为label的标签,即;$("label"):这个代码选中html文档中,标签名为label的标签,即;#是.是

2015-07-25 11:01:24 781

原创 Java之socket编程

1,什么是Socket网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket。Socket通常用来实现客户方和服务方的连接。Socket是TCP/IP协议的一个十分流行的编程界面,一个Socket由一个IP地址和一个端口号唯一确定。可以认为在scoket实现了应用层下的复杂的通信,并对上层透明。但是,Socket所支持的协议种类也不光TCP/IP一种,

2015-07-14 20:17:13 493

原创 HTTP长链接

HTTP长连接首先明白什么是短链接,所谓短连接是指通讯 双方 有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想

2015-07-13 21:04:15 718

空空如也

空空如也

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

TA关注的人

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