自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Vince的修炼之路

千里之行,始于足下

  • 博客(56)
  • 资源 (1)
  • 收藏
  • 关注

原创 使用IDEA导入工程时无反映的问题处理

在使用idea导入maven工程时或gradle工程时出现无法导入,或卡住无法操作,这时可以通过IDEA的日志排查问题,其实IDEA也是用JAVA开发的,从日志的堆栈信息也可以看出来,所以可以像排查普通的JAVA应用一样。如果IDEA以后能增加些类似的失败提示就太完美了

2017-02-27 20:45:23 7048

原创 GO语言实现的简单“木马”小程序

初学GO语言可能会感觉到很枯燥,而且GO和其他的编程语言的语法还有很大的差异,可能刚开始很难入门,为了提高对GO语言的学习兴趣,快速地掌握GO的基本语法,我尝试写了个类似后门的小程序,主要的功能是可以在另一台设备上查看和操作目标设备,我是在我自己的电脑上运行这个小程序,然后用PAD来操作我的电脑,实现简单的目录访问和文件查看,还有重启或关闭计算机的简单功能,由于我也是才开始学习GO语言第二天,也就

2016-11-06 13:17:17 6919 2

原创 MySQL5.7新特性之JSON类型

随着NOSQL数据库的广泛应用,可扩展的存储方式在关系型数据库中也有了很好的支持,最新的MySQL5.7中就新增加了一个数据类型:JSON使用示例:插入一条数据insert into vince.test(`data`) values('{"name":"tomcat","age":15}');更新数据UPDATE `vince`.`test` SET `data` =

2016-10-26 21:11:17 12591

原创 2016版IDEA使用小技巧(持续更新)

从Eclipse转IDEA时,刚开始可能不太习惯,可能会出现Maven依赖没有更新、编辑框老是有红色提示,还以为是写的代码有报错、还有不能像Eclipse那样自动生成一个序列化的版本号,本文是笔者从Eclipse转成IDEA后的技巧经验总结,并且文章会持续更新

2016-10-26 20:03:24 12735 3

原创 深入剖析Guice(Google依赖注入框架)

众所周知的依赖注入框架Spring,但还有一个性能好且轻量的框架Guice,Guice来自Google,且Google的很多产品都是使用的Guice

2016-10-25 22:06:00 17657

原创 MySQL性能分析与优化

对SQL查询语句进行执行性能分析:1、set profiling=1;  开启性能统计2、show profiles;  显示统计结果3、show profile for query 1;   显示具体的统计结果   具体每个步骤的精确耗时如果是root用户,可以直接查看information_schema的PROFILING表,可以看到每步具体对应于源码的哪一行。

2015-09-06 20:27:38 782

原创 图解JavaScript

JavaScript是web前端开发的必备技能之一,在如今各种JS框架满天飞,我们如何选择并应用成了困扰,而且最头疼的是那么多浏览器与那么多的版本让应用的兼容性也成了前端的难题。本文是我对JS学习与工作使用的一个总结,从理论的角度剖析JS。BOM(浏览器对象模型)由于web开发中JS是运行在浏览器中的,而浏览器会提供一个API的形式让JS可以访问到一些属性,就样就产生了浏览器对象模型,包括

2015-09-03 23:35:05 1029

原创 如何让超出范围的文本自动显示为省略号(CSS)

溢出文本显示省略号的效果:white-space:nowrap;  强制文本在一行显示overflow:hidden;   溢出内容为隐藏text-overflow:ellipsis;  当对象内文本溢出时显示省略标记(...)

2015-08-15 11:34:26 1595

原创 H5页面性能优化

H5性能优化的两个原则1、最少化请求个数2、最小单个文件大小最少请求个数为什么要减少请求次数:手机浏览器同时响应请求为4个请求(Android支持4个,iOS 5后可支持6个)如何减少请求次数:1、合并图片(将若干个小图合并成一个大图、雪碧图)2、合并JS/CSS文件(Nginx_concat_module)天猫与淘宝的线上实践:

2015-08-15 11:15:36 6147

原创 NodeJS学习笔记

nodejs npm安装代理设置:npm config set proxy http://username:password@host:port安装第三方模块npm install mongodb/mysql/express/redis/...nodejs重点学习内容:nodejs + express : Web MVCnodejs + redis :

2015-07-29 19:57:01 855

原创 Python写的Web spider(网络爬虫)

Python写的Web spider:# web spider# author vince 2015/7/29import urllib2import re# get href contentpattern = '<a(?:\\s+.+?)*?\\s+href=\"([h]{1}[^\"]*?)\"'t = set("") # collection of urldef

2015-07-29 19:19:19 1563

原创 如何选择Solr的布署方案

对于应用规模不大的,不建议采用solrcloud,传统的主从方式更容易维护和使用,对于数据规模较大的应用,建议采用solrcloud的部署方式,solrcloud是HA的架构,高可用性,有点类似于MongoDB的分片架构,采用的Zookeeper作为协调管理器,对于Zookeeper参见我之前的文章中的介绍。常用传统的主从部署方式如图:这种部署是我们生产是常用的,但有许多功

2015-07-27 21:51:48 727

原创 Wildfly8 POST请求中文乱码分析与解决

最近遇到的一个关于POST请求中文乱码的问题,原本应用是在TOMCAT上运行的,切换到Wildfly8后,测试环境是正常的,但生产环境下客户端发出的相同请求在服务端获取到的中文出现了乱码,在经过定位后发现是Wildfly8的一个配置引起的。问题分析如下:在HTTP的POST请求中,如果是这种情况 Content-Type: application/x-www-form-urlencoded

2015-07-24 11:43:22 3822

原创 Cookie与系统安全

Cookie的安全往往被程序员们所忽视,首先来了解一下Cookie是什么?背景:程序员们用Session在服务端保存着和用户相关的信息,当用户退出时,或关闭浏览器时session就失效了,这时程序员们希望通过用户每次请求时所带的一些数据来识别之前登录过的用户,于是在用户的浏览器中就出现了Cookie。用途:Cookie中往往存储着和用户相关的信息,这些信息有时可以标识着一个身份,请

2015-06-19 21:57:11 546

原创 详解APNS苹果消息推送通知

苹果消息通知什么?如下图如示就是APP的服务端在用户未打开APP进程时,还能发通知给用户APP的服务技术相关概念Provider:提供推送的第三方服务系统Device:苹果设备,例如iphone和ipad等APNS:苹果推送消息服务,属于苹果的服务APP:安装在苹果设备上的应用程序DeviceToken:设备的标识,用于确定接收通知的设备及APPPayl

2015-06-19 19:59:21 3571

原创 Web安全编程

安全编程能够体现一个程序员是否合格,什么是安全编程,就是在开发阶段避免系统漏洞,根据乌云漏洞平台的统计,2014排行前10的安全问题如下:最容易由程序员的编程疏忽产生的漏洞是SQL注入和XSS,SQL注入的危害严重的情况是泄漏整个数据库的信息,后果不堪设想,XSS的后果严重的情况使用户信息泄漏。

2015-05-12 20:49:32 2372 3

原创 JAVA中几种常用的RPC框架介绍

RPC是远程过程调用的简称,广泛应用在大规模分布式应用中,作用是有助于系统的垂直拆分,使系统更易拓展。Java中的RPC框架比较多,各有特色,广泛使用的有RMI、Hessian、Dubbo等。1、RMI(远程方法调用)JAVA自带的远程方法调用工具,不过有一定的局限性2、Hessian(基于HTTP的远程方法调用)基于HTTP协议传输,在性能方面还不够完美,负载均衡和失效转移依赖于

2015-05-02 23:17:40 154841 20

原创 JAVA解压ZIP文件

import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.

2015-05-02 23:11:12 1809

原创 图解WildFly8之Servlet容器Undertow剖析

WildFly8的默认Servlet容器采用的不是Tomcat,也不是Jetty,而是JBoss自己开源的Undertow,Undertow是用Java编写的性能灵活的Servlet容器,底层基于高性能的NIO框架XNIO,XNIO也是JBoss开源的产品,JBoss开源的高性能NIO框架还有一个很有名:Netty。Undertow在WildFly8中的角色如图:Undertow的架构

2015-04-28 01:03:55 8085 2

原创 多个依赖Netty3的应用在同一个Wildfly服务器上的布署冲突问题分析与解决

最近项目里遇到一个问题,就是在wildfly-8.1.0的同一个server上布署多个war,且这几个war中都依赖了netty3,导致只能有一个war包成功,经过排查,发现是jboss服务器本身的一个bug(https://issues.jboss.org/browse/IMMUTANT-144),原因是jboss本身对相同的"拓展"只能注册一次,而netty3中的jboss-beans.xml

2015-04-17 20:53:13 3186

原创 浅谈JAVA的线程安全与性能之间的权衡

1、StringBuffer 与 StringBuilderStringBuffer自JDK1.0就有了,继承自AbstractStringBuilder类,是线程安全的类,推荐在多线程环境下使用;StringBuilder是JDK1.5才加的,多线程环境下不推荐使用,非线程安全的工具类,但是单线程环境下比StringBuffer性能提高很多;StringBuffer的线程安全是用sync

2015-03-17 20:21:45 869

原创 图解MySQL5原理与架构

MySQL是比较常用的关系型数据库,对于使用MySQL作为存储的系统,MySQL的优化对于系统的性能至关重要,包括SQL的优化,然而要想做好优化,首先要对其总体有所了解,本文浅析了MySQL的总体架构思想,让我们更加了解MySQL。1、插件的架构思想:MySQL的架构是插件形式,插件的特点是热插拔,就是系统不需要停机就可以完成加载和卸载,绝大多数的插件架构如图:MySQL的总体

2015-03-04 20:38:13 690

原创 图解WildFly 8.X配置HTTPS

以前配置过tomcat的https,切换WildFly8后要配置https,然而WildFly8配置https与tomcat配置https又不相同。1、HTTPShttps是在http的基础上增加了一层加密,常用的加密算法是RSA,非对称密钥加密,原理基于大数的因式分解,需要公钥和私钥,公钥对外,私钥保密,用公钥加密,私钥用来解密。我测试环境我们用JDK自带的工具生成,具体操作如下:1

2015-03-04 12:43:09 3598 1

原创 详解Spring的声明式事务

事务(Transactional):在软件开发领域,全有或全无的操作被称作事务,事务具有四个特性:ACID。A:Atomic 原子性    确保事务中的所有操作全部发生或全部不发生C:Consistent 一致性    事务的执行结果是确定I:Isolated 隔离性     事务是彼此隔离的,避免同步读写相同数据D:Durable 持久性     事务的结果是持久化的

2015-02-12 22:08:07 689

原创 图解WildFly8.x模块化加载数据库驱动

在上一篇中《图解WildFly8.x配置JNDI数据源》没有说明数据库的驱动是如何设置的,本文以Mysql的驱动设置为例进行详细的补充,主要是利用JBoss的模块化设计思想,让系统启动更快,更充分地利用内存。首先到modules目录增加驱动的包。module.xml文件的配置如下:接下来要手动修改standalone.xml配置文件,增加添加的驱动:配置好后,在后台的图形界

2015-01-09 20:55:13 1416

原创 图解WildFly8.x配置JNDI数据源

最近公司一直在推广使用JBoss,以前用的要么是Tomcat,要么是IBM的WAS,这里记录一下自己的转型过程,首先是安装Eclipse插件,具体步骤如下,如果是代理上网的,要在Eclipse里设置代理。

2015-01-06 21:16:11 5271

原创 深入AOP原理与应用

AOP(Aspect Oriented Programming)就是面向切面编程,也是一种编程思想,接触了JAVA是Spring框架后我才了解AOP,在我的工作中会经常用到,举个存储分层的例子,就像硬盘、内存和CPU中的寄存器,对应的高性能应用系统会有普通数据库、Redis和本地内存:那么这里的缓存操作我们可以抽出来统一做,这里我们就用到了AOP,切点就是对数据的存取方法,还有就是调用外部

2015-01-06 18:33:07 1582 1

原创 带圆角LOGO的QrCode二维码实时生成

最近工作中经常要用到QrCode二维码,研究了一下,写了个带圆角LOGO的JAVA实现,QrCode之所以能在中间放个LOGO图标,是因为编码时的信息冗余。实现的具体代码如下:方法接口:import java.io.File;import java.io.OutputStream;public interface QRCodeService { public void ge

2014-12-24 19:22:32 4842 3

原创 图解MongoDB原理(二)

根据上篇文章《图解MongoDB原理》的基本介绍,本文以具体的操作为例继续深入解析mongodb。演示的所有服务都是在一台机器上,我的目录是F:\JAVA\MongoDB\cluster,文件结构如下:说明:1个配置服务结点,1个路由服务结点,三个分片结点。启动流程1、启动config服务F:\JAVA\MongoDB\cluster\mongo\mongod -con

2014-12-13 18:44:17 6115

原创 图解MongoDB原理

MongoDB是一款非常常用的面向文档型非关系数据库,主要应用在微博、博客、IM等的消息存储业务中,由于存储的数据与金融等行业比起来并不是那么重要,而且对事务也没什么要求,所以在这种场景下,MongoDB要比关系型数据库更适合,因为传统的关系型数据库的每次操作都会有ACK,而MongoDB的设计去掉了这个步骤,大大提高了存储的性能,而且MongoDB的设计考虑了设备故障经常出现的场景,所以在设计时

2014-12-11 20:03:42 27870 1

原创 Redis的图形界面管理工具RedisDesktopManager

Redis是一个比较常用的nosql数据库,数据都在内存中,和传统的关系型数据一样,Redis也有个图形化的管理工具:RedisDesktopManager。界面如下:用RedisDesktopManager可以很方便地查看redis里的所有数据,这样我们在开发与调试的时候就可以事半功倍了。这款工具软件的官网地址:http://redisdesktop.com/

2014-12-07 13:33:48 29172

原创 探索图论在IM集群环境下的应用

我在工作中遇到了IM集群环境下消息路由问题,当集群数小时可以用内存共享的方案,当集群结点变多时,共享的数据同步会成为系统的瓶颈,为此我从网络中TCP报文的路由原理得到灵感,想了一个不用共享内存的方案,而且理论上支持大规模的集群。应用场景如下,红色与蓝色是服务结点,橙色代表客户端结点:当一个橙色结点要给另一个橙色结点发消息时,我们应该如何设计消息的路由策略?上图是我们理想的消息路

2014-12-07 13:23:57 1651 3

原创 大规模集群环境下的协调者Zookeeper

在大数据和云计算普遍的今天,越来越多的应用使用了Apache下zookeeper这个利器,举几个家喻户小的,像HBase,Kafka,国内阿里巴巴开源的Dubbo等。首先来了解下zookeeper,原型是Google的Chubby,数据结构是树,我个人理解其实zookeeper也是nosql的一种,是一个非关系型数据库,里面存储的是树结构的数据,包括结点与关系,还有结点上

2014-12-06 22:53:24 1845

原创 文件断点续传原理与实现

在网络状况不好的情况下,对于文件的传输,我们希望能够支持可以每次传部分数据。首先从文件传输协议FTP和TFTP开始分析,FTP是基于TCP的,一般情况下建立两个连接,一个负责指令,一个负责数据;而TFTP是基于UDP的,由于UDP传输是不可靠的,虽然传输速度很快,但对于普通的文件像PDF这种,少了一个字节都不行。本次以IM中的文件下载场景为例,解析基于TCP的文件断点续传的原理,并用代码实现。

2014-12-06 21:44:05 12176 1

原创 一种拼音分词器的JAVA实现

搜索中的分词器有很多种,包括中文、英文,一般的网站都会有站内搜索功能,也就是对用户输入的内容进行处理,本文对中文的全拼实现了一个分词器,原理很简单,就是模式匹配。根据中文全拼的特点,即声母和韵母配对,首先列举出所有的声母,再分别列举出所有声母对应的韵母集,分词的过程就是遍历匹配的过程。具体代码如下:import java.util.ArrayList;public cl

2014-12-02 18:46:13 3058

原创 Flex与Netty实现的WEB版IM(即时聊天)

Apache Flex是基于MXML和ActionScript的Flash程序设计框架,可以快速开发RIA(富Internet应用)程序,Netty是JAVA实现的高性能的网络通信框架,可以快速构建网络应用的服务端。即时通讯现在已经非常普遍了,本文以简单的WEB版聊天为例浅谈IM系统的设计与原理,最后再探讨下大规模集群下的服务端的瓶颈与解决思路。1、可用的方案选型(1)socket

2014-11-27 20:07:23 7391 4

原创 高性能网络框架Netty的TCP拆包、粘包解决方案

简单地说,网络通信时由于TCP会对传输的数据报进行对用户透明的拆分与重新组装,然后将拆分后的分别发送,而我们接收时要获取发送时的数据报,如何再对其拆分与组装,以便于我们能知道报文的意思,这个提取报文的过程就是TCP的拆包与粘包,在我们自己做底层的通信设计时,这是必须要考虑的。结合最近在做一个和通信相关的项目,本文讲几个经典且常用的几种粘包与拆包方法及其在Netty中的实现,Netty是高性能的通信...

2014-11-14 20:27:31 9160

原创 剖析Jetty的运行原理

之前写过一篇简单使用Jetty的文章,Jetty对于做JAVA Web方面开发的人来说并不陌生,他是一个servlet容器,不过相对Tomcat来说设计的比较简单,而且使用起来也比较简单灵活,我是在学习和使用openfire时接触的Jetty,openfire使用Jetty开发其强大的管理后台。在我最近的一个项目里我也想用Jetty来开发一个后台管理程序,不过用Jetty来开发后台管理程序的缺

2014-11-07 21:18:40 5074

原创 erlang开发入门

最先接触erlang是在今年的年初,当时是因为RabbitMQ而结识的erlang,了解后才知道的COP(Concurrency Oriented Programming)面向并发编程。为什么我会决定要学习Erlang,首先是因为我对函数式编程的好奇,一直以来我都觉得很神秘,然后主要的原因还是我想通过学习Erlang去了解RabbitMQ、ejabberd、Tsung这几个比较出名的技术,Ra

2014-11-07 19:58:15 3012

原创 企业自建的苹果通知推送系统的架构演进与探索

企业的APP开发中,对于苹果设备有个独特的通知推送功能要解决,尤其是在做移动IM时,对APNS(Apple Push Notification Service)的要求比较高,虽然有专门的第三方提供此类服务,但出于安全的考滤,有能力的公司宁愿自建推送服务系统。本人结合工作中的开发经验,在这探讨一下其架构的演进与探索,希望能使此类系统更加完美。IM系统自建苹果通知推送服务系统的层级关系如下:

2014-10-28 19:43:55 1478

MINA2与Netty4比较分析

从源码和网上资料,总结了Mina2与Netty4的区别,主要是分析线程模型的Buffer,还提到了Netty4中引入的Google的优秀的序列化工具ProtoBuf

2015-09-22

空空如也

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

TA关注的人

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