自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(102)
  • 资源 (7)
  • 收藏
  • 关注

原创 博客搬迁至wengyingjian.github.io

我现在在http://wengyingjain.github.io上写博客了。。。

2015-12-18 23:43:21 898

原创 获取客户端IP地址(多层代理)

一。需求最近在做的一个模块中,有一个后台统计功能要求按照用户的省份来统计。所以在用户操作的时候,后台就应该得到其地理位置信息,并存放在数据库中。二。分析作为一个移动应用,要想定位用户1.可以通过客户端系统(android,ios)获取,(以前android做过使用百度lbs定位的)2.可以通过h5页面,gps定位(前台调用一些接口我也不太懂,好像能这样吧,反正这不是

2015-11-23 22:09:33 1694

原创 mac安装linux虚拟机

一.环境:    mac,使用visual box,安装ubuntu二.安装:    设置账户名,密码。三.配置:     1.在visual box中设置网络连接方式为桥接(默认为转换,无法ping通)        ifconfig获取IP,在客户端hosts中配置     2.获取root密码         sudo passed root,

2015-11-23 21:36:39 2556

原创 使用cargo自动化部署maven项目

1.在开发的过程中,将程序打包丢到服务器上,然后重启tomcat还是比较麻烦的。我自己要做如下步骤:1),使用maven 命令打包2),将包通过fileZilla丢到服务器tomcat/webapps下3),bin/shutdown.sh4),bin/startup.sh2.在《maven实战》一书中提到了cargo,使用这个就能够实现自动化部署。然而把上面的代码对

2015-11-13 17:27:37 921

原创 数据库不支持中文解决方案(mysql)

今天在向mysql表中插入数据的时候报了错,错误信息大致是这样的:java.sql.SQLException: Incorrect string value: '\xE3\x80\x90\xE9\x80\这个一看就是字符编码问题,于是去看数据库的编码,果然不是utf-8,于是改成utf-8继续测试,但是问题还是一样,报同样的错我的解决

2015-10-08 13:26:06 1517

原创 Git创建,提交,分支等常用命令

1.git config --global user.name "name"  git config --global user.email "email"2.git init3.git add filename  git commit -m "description"4.git status 查看文件信息5.git diff fil

2015-10-05 11:59:59 2475

原创 命令行-查看端口占用,并且关闭占用程序

1.查看所有端口netstat -ano2.查看某个端口netstat -aon|findstr "8080"3.查看某个pid对应的程序.tasklist|findstr "4668"4.关闭某个程序taskkill /f /t /im javaw.exe

2015-09-29 15:25:29 807 1

转载 Spring Boot——开发新一代Spring应用

Spring官方网站本身使用Spring框架开发,随着功能以及业务逻辑的日益复杂,应用伴随着大量的XML配置文件以及复杂的Bean依赖关系。随着Spring 3.0的发布,Spring IO团队逐渐开始摆脱XML配置文件,并且在开发过程中大量使用“约定优先配置”(convention over configuration)的思想来摆脱Spring框架中各类繁复纷杂的配置(即时是Java Con

2015-09-28 10:25:51 1013

原创 Maven(三)-依赖自己的程序

之前的一个HelloWorld,使用到了Junit所以在pom.xml配置了junit的依赖现在我们要另外写一个工程,依赖于该工程的类.1.创建文件夹.maven-022.老规矩,创建pom.xml,src/test/java3.新建一个测试类 TestDependency.javapackage com.aii.

2015-09-26 14:48:02 1136

原创 Maven(二)-HelloWorld

1.新建文件夹: maven-012.maven-01目录下:新建一个pom.xml文件(Project Object Model),里面的内容找个已有的pom文件拷下3.配置一些必须的属性:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.

2015-09-26 14:21:36 591

原创 Maven(一)-环境搭建

1.下载Maven:http://maven.apache.org2.安装:解压,配置环境变量(跟JDK,Tomcat类似)M2_JOME: ${dir}PATH : ${dir}/bin;3.测试安装:cmd输入:mvn -v 跳出关于版本的信息如果出错,会提示JAVA_HOME或者是M2

2015-09-26 13:50:08 507

原创 Web Service-HelloWorld环境搭建

什么都不管,先把HelloWorld搭建起来先再看Web Service是干嘛的一.新建一个Java工程二.写服务器端代码一个server接口,一个实现类,再加一个主函数package com.aii.ws.server;import javax.jws.WebMethod;import javax.jws.WebService;@WebServicepubli

2015-09-16 16:34:15 714

原创 设计模式之原型模式

工厂方法造出来的对象是新的一个对象,里面的属性一般都是默认的.而我所理解的原型模式操作的方法造出的是一个克隆体,可以看成2步:1.制造出一个对象.2.将造出的对象里面的属性按照被克隆体一样的拷过来举个例子,那就是孙悟空和六耳猕猴的故事..六耳猕猴除了是个new出来的猴子以外,其他所有的东西都是孙悟空那复制过来的.这个涉及到一个浅克隆与深克隆的概念:浅克隆:克隆出

2015-09-15 15:13:43 972

原创 设计模式之建造者模式

当得到简单的对象的时候,使用工厂模式即可.当得到复杂的对象,而且对象的一些属性需要繁琐配置的时候,使用建造者模式比较好.这里以建造汽车为例,汽车的组件可以自由搭配.package builder;public class Car { private String engine; private String tire; private String door; pr

2015-09-15 13:55:28 865

原创 设计模式之抽象工厂模式

在上一篇中介绍了工厂模式,其中静态方法模式是效果比较好的.现在需求变了,要在添加一个动物,猪.那就需要改代码了.先加入猪这个类.public class Pig extends Animal { @Override public void eat() { System.out.println("猪吃"); }}然后在原来的静态方法工厂上添加一个方法

2015-09-15 13:25:19 915

原创 设计模式之工厂方法模式

主要内容:1.工厂方法模式2.多个工厂方法模式3.静态方法模式一.工厂方法模式public abstract class Animal { public abstract void eat();}public class Cat extends Animal { @Override public void eat() { }}public clas

2015-09-15 13:03:28 865

原创 设计模式的六大原则

概括:原则含义具体方法开闭原则对扩展开放,对修改关闭多使用抽象类和接口里氏代换原则基类可以被子类替换使用抽象类继承,不使用具体类继承依赖倒转原则要依赖于抽象,不要依赖于具体针对接口编程,不针对实现编程接口隔离原则使用多个隔离的接口,比使

2015-09-15 12:35:27 10501 1

转载 OpenJDK与HashMap……放心地教这个老家伙一些新(非堆!)技巧

OpenJDK的非堆JDK增强提议(JDK Enhancement-Proposal,JEP)试图标准化一项基础设施,它从Java6开始,只能在HotSpot和OpenJDK内部使用。这种设施能够像管理堆内存那样管理非堆内存,同时避免了使用堆内存所带来的一些限制。对于上百万短期存在的对象/值来说,堆内存工作起来是很好的,但是如果你想要增加一些其他的需求,如几十亿的对象/值的话,假若你想避免持续增加

2015-09-08 22:12:24 1989

转载 聊聊并发——深入分析ConcurrentHashMap

术语定义术语英文解释哈希算法hash algorithm是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。哈希表hash table根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称为哈希表或散列,所得存储位置称为哈希地

2015-09-06 13:27:01 823 1

转载 聊聊并发——ConcurrentLinkedQueue的实现原理分析

1. 引言在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式:一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而非阻塞的实现方式则可以使用循环CAS的方式来实现,本文让我们一起来研究下Doug Lea是如何使用非阻塞的方式来实现线程安全队列Concurren

2015-09-06 13:16:37 1010

转载 致敬disruptor:CAS实现高效(伪)无锁阻塞队列实践

目录[hide]1引言2RingBuffer实现3CAS与乐观并发控制4两阶段发布5使用场景6Benchmark引言在多线程开发中,我们常常遇到这样一种场景:一些线程接受用户请求,另外一些线程处理这些请求,之所以把接受请求和处理请求的逻辑分开,一方面是出于资源调度的考虑(用户请求也许很多,但这些请求涉及的资源很少),另一方面也可能是异步响应的需求。这种场景存在于NIO的

2015-09-06 12:59:28 2496

转载 基数排序(Radix Sort)

基数排序是非比较排序算法,算法的时间复杂度是O(n). 相比于快速排序的O(nlgn),从表面上看具有不小的优势.但事实上可能有些出入,因为基数排序的n可能具有比较大的系数K.因此在具体的应用中,应首先对这个排序函数的效率进行评估.基数排序的主要思路是,将所有待比较数值(注意,必须是正整数)统一为同样的数位长度,数位较短的数前面补零. 然后, 从最低位开始, 依次进行一次稳定排序(我们常用上一

2015-09-06 12:43:48 778

原创 审批流(二)

一.回顾上篇说到了一个无法确定当前节点到底轮到谁的问题.更加完整的数据库:checkFlow:baseProjecct:上篇说到每个流程必定为一个发文所有,对应的就是baseProject的一行数据.解释一下baseProject各列的含义:checkState:当前审批到了哪个节点了,记录的是上一个完成的节点delete:当前发文是

2015-09-04 21:37:25 4043

原创 审批流(一)

需求:审批流程自定义审批的每个节点可以有多个审核人,有一个失败则视为审批失败审批的过程可以自由前进后退:当发文到达某个节点失败后,会自动被打回到上一个节点.上一个节点可以选择修改后继续提交,或者再打回到上一个节点.整个审批可以看成是三种状态:1.草稿:来自两种情况:1.发起人刚起草审核.2.审核被第一个审核人打回此状态下发起人可自由修改发文

2015-09-04 21:10:22 14962

原创 hive的安装

hive的安装还算是比较简单的,因为不需要修改太多的配置文件1.下载,解压 我把他放在了/usr/hadoop/hive2.设置一下环境变量.(好像没设置也没啥的)vim /etc/profileexport JAVA_HOME=/usr/java/jdk8export HADOOP_HOME=/usr/hadoop/hadoop...export H

2015-08-31 23:34:39 845

原创 伪分布式hadoop环境搭建

官网上的教程版本不符,还过于简单(很多必要的步骤没提到),所以自行网上找教程.在这里整理一下:假设java_home已经配置完成,ssh也可连通1.修改配置文件以下文件均在 %HADOOP_HOME%/conf/ 下core-site.xml:  Hadoop Core的配置项,例如HDFS和MapReduce常用的I/O设置等。hdfs-sit

2015-08-31 22:21:12 1005

原创 linux配置免密码ssh登录

hadoop部署需要ssh免密码登录.在官方网站上就两句话:但是在我的机器上出现了很多的问题,导致一直ssh还是需要密码,在这里一一写下:1.authorized_keys的权限必须是600的.而生成默认的不是所以使用一下命令:$ chmod 600 authorized_keys 顺带,还有.ssh这个文件夹的目录的

2015-08-31 20:52:48 967

原创 剑指offer面试题40-数组中只出现一次的数字

题目:一个整形数组里除了两个数字意外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度是On,空间复杂度为O1这个是上一篇 2016阿里巴巴java笔试题 的增强版...还是使用异或,异或到了最后得到结果是怎么样的呢?其余的数字都互相异或变成了0,所以最后的结果就是这2个不相同的数字的异或结果.就假定要找的两个数字为数字A和数字B

2015-08-31 13:51:26 1951 1

原创 2016阿里巴巴java笔试题

题目:一个整形数组里除了一个数字出现3次以外,其他数字都出现2次.请写程序找出这个出现3次的数字.要求使用辅助空间O1,时间复杂度Onlogn.1.使用堆排序.(堆排序的时间复杂度为Onlogn)因为堆排序每次取到的都是最大(或是最小)的数字,三个相同的数字肯定是紧挨着被取出的.所以在原先的堆排序算法上,加2个标记记录即可.代码:// 使用堆排序,每次取

2015-08-31 13:24:57 2399

原创 剑指offer面试题29-数组中出现次数超过一半的数字

题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5此,超过数组长度的一半,因此输出2分析:因为是这个数出现的次数比其他数出现次数的总和还多,所以可以考虑用栈做,用来两两抵消.如果碰到一样的,则加上,如果碰到与栈的末尾不一样,则弹出一个(抵消).这样到了最后,剩下

2015-08-30 16:56:22 831

原创 hadoop集群搭建-笔记

1.修改主机名需要修改的参数/etc/hosts 中的映射/etc/sysconfig/network 中的主机名2.修改hadoop配置文件1.conf/core-site.xml//配置NameNode的信息               fs.default.name          hdfs://localhost:9000

2015-08-29 21:50:35 751

原创 Linux下安装JDK

好久不用linux又全忘了。。一、下载jdk由于我用的虚拟机无法连网,,校园网。。坑所以使用windows下载下来jdk以后拖到桌面二、移动jdkmv jdk-filename targetdir三、解压tar -zxvf jdk-filename四、环境变量配置打开配置文件vim /etc/profile

2015-08-28 21:25:25 875

原创 权限(二)--权限的控制(过滤器与自定义标签)

一、接着上一篇的说 权限(一)--用户、权限组以及权限的分配权限的控制分为两块:1.页面的控制(没用权限的不让他看到页面)2.过滤控制(就算知道url,没有权限也不让进)在项目中,都是由一个人来负责权限部分的编写,然后其他人的活中多少会涉及到一些权限相关的。所以,权限控制的通用性是非常重要的(总不能每次写到就找写权限部分的那个人,问他怎么

2015-08-28 19:03:25 3187

原创 根据应用程序设置JVM参数(三)-优化老年代大小

接着前面的,现在来计算老年代的日志图:1.假如没有FullGc,如何计算老年代需要多少时间装满?(不看第一条和最后一条数据,分析)通过MinorGc计算每次老年代的增量老年代的增量 = 堆的总量 - 新生代的剩余量(souvivor区)这样可以得到几乎每次minorGc老年代增加85m空间,而minorGc每4秒一次。老年代的

2015-08-28 15:12:59 2650

原创 根据应用程序设置JVM参数(二)-优化新生代大小

一、还是接着上一篇的讲:继续贴上一次运行的日志数据分析:1.看频率,可以发现基本上是4秒进行一次Gc2.看耗时,可以发现基本上是需要0.037秒当前的虚拟机设置为:堆:1600M年轻代:600M年老代:1000M二、优化需求1:要求MinorGc的响应时间小于0.02秒分

2015-08-28 14:22:44 7834

原创 根据应用程序设置JVM参数(一)-设置堆、新生代、老年代、持久代大小

一、根据程序的运行状况查看其活跃的数据量①、活跃的数据:1.应用程序运行于稳定状态时,老年代占用的java堆大小2.应用程序运行于稳定状态时,永久代占用的java堆大小其实就是FullGc后这2个数据的大小②、动手测试:1.测试代码:public class A { int[] storage = new int[102400]; int[]

2015-08-27 17:29:24 16418

原创 JVM命令行选项及GC日志

一、设置参数在使用eclipse编译器的时候,可以采用以下的运行方式来设置虚拟机的参数:具体参数的设置:这里先以打印回收时间,回收信息为例二、打印信息解释:三、一些常用的jvm参数-XX:+PrintGCTimeStamps:打印此次垃圾回收距离jvm开始运行的所耗时间-XX:+Pr

2015-08-27 15:29:40 8132 3

原创 jvm参数设置

堆设置-Xms:初始堆大小-Xmx:最大堆大小-XX:NewSize=n:设置年轻代大小-XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个

2015-08-27 12:45:00 934

原创 权限(一)--用户、权限组以及权限的分配

基本上所有的项目都会涉及到权限的控制与处理。这里将讲讲自己对权限控制的理解以及处理方法,本篇主要介绍权限的分配。一、权限组权限组的意思就是一组权限的集合。在论坛等一些系统中,我们常常能够看到一些角色:游客,会员,管理员,超级管理员。他们的权限以及能够查看的板块都是不一样的。这样的角色我们也可以称作权限组。二、用户,权限组(角色),权限

2015-08-26 23:56:48 31611 2

原创 事务的ACID

A(Atomicity):原子性C(Consistency):一致性I(Isolation):隔离性D(Durability):持久性原子性:事务要么全部完成,要么全部不完成。一致性:事务前后数据库的完整性保持一致(即满足各列的完整性约束条件)。隔离性:隔离状态执行事务,每个事务执行的时候,不会被其他的线程影响。持久性:事务完

2015-08-26 18:42:31 809

《Spring Boot参考指南》

Spring Boot Reference Guide中文翻译 -《Spring Boot参考指南》

2015-09-26

权限控制Demo

权限控制Demo

2015-08-28

SSH整合样例

SSH整合样例

2015-08-02

ImitateStruts2

实现可插拔的拦截器。 实现ActionServletContext,ActionContext

2015-07-25

StrutsSupport

struts的service实现transaction处理,测试用例

2015-07-23

FakeStruts

简单的struts实现(目前所学的见解) 使用cglib,proxy代理实现transaction注解事务处理。 使用了mybatis持久框架

2015-07-22

Andorid AIDL模拟实现

Andorid AIDL模拟实现

2015-04-18

空空如也

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

TA关注的人

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