
JAVA
文章平均质量分 62
gg_gogoing
这个作者很懒,什么都没留下…
展开
-
压测总结
性能瓶颈一般是这三个方面:CPU、网络带宽、I/O前提:带宽为5M,往返延迟为33ms,处理时间为16ms 若要忽略报文内容每次等待通信的时间。则5M/s * 50ms = 250KB 但是一般的TCP 窗口大小为几十B到4KB不等,8KB/ 5M/s = 1.6ms 因此发送1.6ms后即停止发送等待网络返回结果后才发送。线程数分析: 5 线程的时候CPU调度无压力线程分原创 2016-11-17 16:58:47 · 1194 阅读 · 0 评论 -
UndeclaredThrowableException 详解
前言:在用Jersey做rest服务时,因为其使用统一异常接口,无法在controller中识别自定义异常。会报UndeclaredThrowableException。原文在Java中一个使用动态代理的通用方式是提供装饰器方法。这将会使你增加额外的操作在对象的外面。看一个常见的动态代理实现。public interface InterfaceA { void display() thr翻译 2015-11-26 23:43:03 · 38289 阅读 · 0 评论 -
java-web 过滤器 & 监听器 & 拦截器
servlet规范 servlet/filter/listener/interceptor区别与联系 http://blog.youkuaiyun.com/sundenskyqq/article/details/8549932 http://hejiajunsh.iteye.com/blog/1776571 application:上下文对象,是由容器创建和初始化的,它的范围是整个的web应用,原创 2015-07-27 16:45:57 · 3971 阅读 · 0 评论 -
Java继承 学习 && 类初始化顺序
reference private是私有成员,子类不可访问,和被override的类都要通过super访问。变量没有重写之说,只有覆盖。 类的继承知识点 (1)java不支持多重继承,也就是说子类至多只能有一个父类 (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法 (3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被原创 2015-11-14 20:31:09 · 425 阅读 · 0 评论 -
JUnit && Mock
JUnit&&Mock入门 专题介绍 AssertThat assertThat, assertEquals, assertTrue比较 JUnit参数 基本要求 1. 测试方法上必须使用@Test进行修饰 2. 测试方法必须使用public void进行修饰,不能带任何的参数 @Test:将一个普通的方法修饰成为一个测试方法 @Test(expected=XXX(异常类).cl原创 2015-08-06 13:41:55 · 662 阅读 · 0 评论 -
Cookie && Session && Token
CookiesCookie的由来: HTTP 本身是一个无状态的 request/response 协议. 服务器接收一个来自客户端的request, 处理完以后返回一个response。 但是这个过程中, 服务器几乎没有什么信息可以用来判定是哪个客户端(用户)发来的request, 也无法记录用户的请求顺序. Cookie是目前识别用户,实现持久会话最好的方式。Cookie通常会跟User-A原创 2015-08-12 16:11:07 · 3230 阅读 · 0 评论 -
jvm扫盲
参考 参考classloader双亲委派机制 内容:加载一个类的时候先问自己的parent是否有,不断向上,仍无则自己加载类。 目的是为了在运行过程中不重复加载,且版本统一。 反转委派 每个方块都是一个类加载器,JavaEE规范推荐每个模块的类加载器先加载本类加载的内容,如果加载不到才回到parent类加载器中尝试加载。 反转委派原则的原因是应用服务器中所携带的类库并不是应用所期待的,也原创 2015-08-05 21:05:23 · 552 阅读 · 0 评论 -
java 利用内部类进行特别初始化
匿名内部类 参考 不同的初始化方式 使用的是匿名内部类方法,不过这里的内部类没有抽象方法Map <String , String> map = new HashMap<String , String>(){{ put("key1", "value1"); put("key2", "value2"); //.... some other put() code put原创 2015-08-06 14:09:49 · 419 阅读 · 0 评论 -
Java自定义异常设计
项目中经常会遇到try…catch…finally。很是烦,而且并没有一个整体的设计原则去实践。尤其是当遇到自己需要设计异常的时候。 参考 Jersey实现统一异常 讨论内容很多自定义异常一、自定义异常父类的选择系统异常:软件的缺陷,客户端对此类异常是无能为力的,通常是Unchecked Exception。 业务异常:用户未按正常流程操作导致的异常,通常是Checked Except原创 2015-11-28 10:57:15 · 2438 阅读 · 0 评论 -
javaweb.用Jesery 构建rest服务
REST概念: 每个资源由URI标识。 使用统一的接口。处理资源使用POST,GET,PUT,DELETE操作类似创建,读取,更新和删除(CRUD)操作。 无状态。每个请求是一个独立的请求。从客户端到服务器的每个请求都必须包含所有必要的信息,以便于理解。 通信都是通过展现。例如XML,JSON1、@Path ,定义路径。2、@GET、@POST、@PUT等,定义提交请求的方法原创 2015-11-29 10:01:11 · 1257 阅读 · 0 评论 -
AVL平衡树(详解)-JAVA版本
平衡二叉树在进行插入操作的时候可能出现不平衡的情况,AVL树即是一种自平衡的二叉树.它通过旋转不平衡的节点来使二叉树重新保持平衡,并且查找、插入和删除操作在平均和最坏情况下时间复杂度都是O(log n)AVL树的旋转一共有四种情形,注意所有旋转情况都是围绕着使得二叉树不平衡的第一个节点展开的。RBT VS AVL:实际上插入AVL树和红黑树的速度取决于你所插入的数据.如果你的数据分原创 2016-11-17 16:52:04 · 598 阅读 · 0 评论 -
Tomcat 配置
一般来说对一项任务的重启,要么调用脚本,要么直接kill ClassNotFoundException “1catalina.org.apache.juli.FileHandler” 这个问题是catalina.sh 中JAVA_OPS设置的问题,要把-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 选项放在JA原创 2016-11-17 16:51:58 · 329 阅读 · 0 评论 -
git diff java 实现
经常使用git diff 但是其是如何实现的呢? 本博客简单实现不考虑行的比较。可以比较两个字符串// 相当于把每一行换比较换成字符比较,道理一样s1='xxxxxxxxxx's2='yyyyyyyyyy'首先我们把文件转化为两个列表,列表的每个元素是文件的某一行:A = [1行、2行、3行、4行、…] B = [1行、2行、3行、4行、…] 然后我们计算A和B最长的相似元素的长度lcs(原创 2016-06-17 11:59:41 · 4279 阅读 · 0 评论 -
开发中的编码问题
起因 昨天一个客户调用接口,使用之前的代码没有问题。但是调用另一个接口就出错。由于服务调用成功,所以感觉是编码问题。update字符集与字符编码 1. 完整的表达编码,要有字符集、字符编码、字库表。 2. 字库表是一个相当于所有可读或者可显示字符的数据库,字库表决定了整个字符集能够展现表示的所有字符的范围。 3. 字符集即用一个编码值code point来表示一个字符在字库中的位置 字原创 2015-11-11 15:38:46 · 907 阅读 · 0 评论 -
TopMap
经常有一种需求,是需要存储键值对,放入一个对象对应的使用次数。 然后需要获取前10%、20%等数据。如果进行Map的全量排序输出会非常慢,因此需要用TreeMap。包装后如下:@Test public void testHashMap() { Map<String, Integer> topMap = new HashMap<>(); List<String> li原创 2016-04-13 17:07:35 · 1119 阅读 · 0 评论 -
自己动手实现-监听器
监听器就是在执行一些操作的时候通知监听此事件的对象执行一定的方法。写了BingoneMap,其中使用Set存储监听器,在事件发生后执行监听器事件。基本要素是留一个口子给开发者实现该事件需执行怎么的操作。同时注意数据之间的传递,监听器方法和调用者之间的数据交互。package bingone;import java.util.*;/** * Created by bingone on 16/3/2原创 2016-03-21 01:21:22 · 944 阅读 · 1 评论 -
CountDownLatch
CountDownLatch 针对有强先后关系类的并发顺序,而不是允许随机的情况。CountDownLatch其实可以把它看作一个计数器,只不过这个计数器的操作是原子操作,同时只能有一个线程去操作这个计数器,也就是同时只能有一个线程去减这个计数器里面的值。 你可以向CountDownLatch对象设置一个初始的数字作为计数值,任何调用这个对象上的await()方法都会阻塞,直到这个计数原创 2016-03-18 23:21:12 · 357 阅读 · 1 评论 -
Java多线程示例(模拟通话,sleep,join,yield,wait,notify,Semaphore)
主线程等待子线程的多种方法 synchronized浅析 sleep 是静态方法,Thread.sleep(xx)谁调用谁睡眠。 join 是合并方法,当前线程调用其他线程xx.join()则等到xx结束才能运行 yield 当前线程让出cpu进入就绪队列。 wait,noitfy,synchronized配合使用对资源进行管理。 synchronized(this)以及非static原创 2016-02-14 13:38:01 · 1934 阅读 · 0 评论 -
Java json && 框架中的 泛型 + 反射
前段时间再写SDK,需要接收服务器返回的json数据,于是定义了一个ResultDOpublic class ApiResult<T> { private int code; private String msg; private T data; public int getCode() { return code; } public vo原创 2015-11-14 21:53:36 · 1437 阅读 · 0 评论 -
JAVA-深拷贝/浅拷贝 比较器
只有基础内置元素=才会深拷贝(String不是)你定义的类如果需要深拷贝,要rewrite Cloneable的Clone方法若是继承关系,父类也要重写。http://www.cnblogs.com/yxnchinahlj/archive/2010/09/20/1831615.html①为什么我们在派生类中覆盖Object的clone()方法时,一定要调用super.clone()原创 2015-01-04 09:47:19 · 763 阅读 · 0 评论 -
Mock学习
对于一个比较大型的项目,一个功能点的测试可能需要很多外部依赖。如果真的去创建外部依赖,开销很大而且很不灵活。 Mock框架就是为了解决这个问题而诞生的。 参考 参考 参考///maven 依赖<dependencies> <dependency> <groupId>org.mockito</groupId> <artif原创 2015-09-01 19:24:26 · 493 阅读 · 0 评论 -
Java 注解入门实例 && 注解传参
参考 概念:java提供了一种原程序中的元素关联任何信息和任何元数据的途径和方法 JDK内置系统注解: @Override 用于修饰此方法覆盖了父类的方法; @Deprecated 用于修饰已经过时的方法; @Suppvisewarnings 用于通知java编译器禁止特定的编译警告。 注解按照运行机制划分 源码注解:注解只在源码中存在,编译成.class文件就不存在了; 编译时原创 2015-08-01 19:34:41 · 16940 阅读 · 3 评论 -
Java中static final 关键字释惑
static static表示“全局”或者“静态”的意思 1. 按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。两者的区别是: 对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便)原创 2015-07-30 11:01:28 · 647 阅读 · 0 评论 -
AVL平衡树(详解)-JAVA/C版本
平衡二叉树在进行插入操作的时候可能出现不平衡的情况,AVL树即是一种自平衡的二叉树.它通过旋转不平衡的节点来使二叉树重新保持平衡,并且查找、插入和删除操作在平均和最坏情况下时间复杂度都是O(log n)AVL树的旋转一共有四种情形,注意所有旋转情况都是围绕着使得二叉树不平衡的第一个节点展开的。RBT VS AVL:实际上插入AVL树和红黑树的速度取决于你所插入的数据.如果你的数据分原创 2015-04-13 10:21:43 · 1206 阅读 · 0 评论 -
JAVA-JDBC
包含以下几步:1. 数据库连接: 加载数据库驱动Class.forName("com.mysql.jdbc.Driver"); ,获得数据连接conn=DriverManager.getConnection(URL, USER, PASSWORD); 2. 读取数据 : 建立执行对象,建立接收对象并接收执行语句的结果.3. 关闭数据库查询与其他操作不同PreparedState原创 2015-04-10 10:10:32 · 773 阅读 · 0 评论 -
java.net.SocketException: Connection reset
第1个异常是java.net.BindException:Address already in use: JVM_Bind。该异常发生在服务器端进行new ServerSocket(port)(port是一个0,65536的整型值)操作时。异常的原因是以为与port一样的一个端口已经被启动,并进行监听。此时用netstat –an命令,可以看到一个Listending状态的端口。只需要找一个没有被转载 2015-03-25 10:07:52 · 1367 阅读 · 0 评论 -
JAVA-基本元素使用(随机数,数组,排序)
JAVA中也不能淡化基本功能啊.随机数: 点击打开链接1.包 java.lang.Math.Random; 静态方法Math.Random() 返回一个0.0~1.0的double2.包 java.util.Random; 一个类Random()的两种构造方法:Random():创建一个新的随机数生成器。Random(long seed):使用单个 long 种子创原创 2015-03-18 15:27:53 · 940 阅读 · 0 评论 -
JAVA-手写服务器
花了3天时间搞了这么个服务器程序,基于Socket与Thread等JAVA基本东西.基本知识.HTTP协议,这个是浏览器与服务器交互的"暗语".一般常见的交互方式是Get/Post下面是请求文件信息Request:GET /index.html?uname=11111111111111111&pwd=22222222222222 HTTP/1.1Host: localhost:8原创 2015-03-31 14:04:33 · 2701 阅读 · 0 评论 -
JAVA-Socket通信基础
两种通信方式,TCP/UDPTCP要有个服务器端套接字,ServerSocket,客户端用Socket就可以连接,然后互相按照协议通信.没有open/start等方法.但要close通信则是socket.getInputStream() socket.getOutputStream() 用缓冲区包装比较好,输出记得刷新UDP的服务器端用DatagramSocket (监听端口),创建原创 2015-03-28 10:34:22 · 689 阅读 · 0 评论 -
JAVA- Thread初步
一.创建线程1.继承Thread2.实现Runnable接口二.线程互斥synchronized (互斥对象)实现的原理是这个互斥对象每次只能允许一个线程进入,其他的则进入这个互斥对象的等待队列中.三.线程同步wait()和notify() notifyAll()这三个方法用于协调多个线程对共享数据的存取,所以必须在synchronized语句块内使用。synchr原创 2015-03-27 12:34:52 · 834 阅读 · 0 评论 -
java中List实现的三种方式Vector、ArraryList和LinkedList
List接口一共有三个实现类,分别是ArrayList、Vector和LinkedList。List用于存放多个元素,能够维护元素的次序,并且允许元素的重复。3个具体实现类的相关区别如下:ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制到新的存储原创 2015-03-25 10:28:45 · 903 阅读 · 0 评论 -
JAVA-OOP
对象,类,方法,实例变量构造函数 public classname(...)析构函数 protected finalize()封装:自己设为私有,编写公有方法使用。继承:不会继承private多态抽象覆盖:子类重写父类的方法,要求方法名和参数类型完全一样(参数不能是子类),返回值和异常比父类小或者相同(即为父类的子类),访问修饰符比父类大或者相同的若是构造函数则原创 2015-01-01 17:37:05 · 965 阅读 · 0 评论 -
JAVA-接口 抽象类 内部类 匿名类
接口中所有属性是Public static final,方法都是public. 访问修饰符则必须是public接口也可扩展另一个接口,相似于类的继承,关键字extendshttp://www.cnblogs.com/dolphin0520/p/3811437.html 深入理解Java的接口和抽象类 http://baike.baidu.com/view/2493204.h原创 2015-01-04 09:46:29 · 964 阅读 · 0 评论 -
java 泛型详解
参考:Java泛型详解 点击打开链接泛型是在首次编译时刻检查的,为了比避免仅仅是数据类型不一致而导致的重载.在没有泛型之前,一旦把一个对象丢进java集合中,集合就会忘记对象的类型,把所有对象当成Object类型来处理。当程序从集合中取出对象时,就需要进行强制类型转换,这种强制类型转换不仅代码臃肿,而且容易引起ClassCastException异常。1. 将运行时出现的Class原创 2015-04-15 09:43:03 · 739 阅读 · 0 评论 -
xxxxxxclub系统模块分类
不是分析整个程序运行的过程。 分析程序在设计的时候模块如何分类针对的是应用程序,name 类的装载:1. Spring配置 基于接口调用hsf 3. 一个页面对应的java类 Spring的xml文件装载配置在webx.xml中设定 bean的使用用Autowired注入到使用类,作为成员<beans:import resource="classpath*:META-INF/s原创 2015-08-13 11:18:49 · 2180 阅读 · 0 评论 -
RPC远程调用概念 && demo实例
RPC是指远程过程调用,直观说法就是A通过网络调用B的过程方法。也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。为什么RPC呢?就是无法在一个进程内,甚至一个计算机内通过本地调用的方式完成的需求,比如比如不同的系统间的通讯,甚至不同的组织间的通讯。由于计算能力需要横向扩展,原创 2015-08-12 12:32:48 · 5075 阅读 · 0 评论 -
java填坑
慢慢填坑咯~ 1. 观察运行结果package javaBasic;public class Dervied extends Base { private String name = "dervied"; public Dervied() { tellName(); printName(); } public void tellName()原创 2015-08-26 12:08:12 · 820 阅读 · 0 评论 -
eclipse使用
这个开发工具用得好也是一件神器。快捷键参考大全 快捷键很多,列出常用的几个 Ctrl + z 撤销 Ctrl + y 恢复 Ctrl + d 删除一行 Ctrl + m 快速切换全屏 Ctrl + e 快速切换标签 或 PgUp/PgDn Ctrl + o 查看大纲 Ctrl + h 查找字符串(这个查找范围是全工作空间) Ctrl + Shift原创 2015-08-06 09:56:39 · 542 阅读 · 0 评论 -
Java内存理解 && 反射访问私有属性或方法
参考来源 AccessibleObject类是Field、Method、和Constructor对象的基类。它提供了将反射的对象标记为在使用时取消默认Java语言访问控制检查的能力。对于公共成员、默认(打包)访问成员、受保护成员和私有成员,在分别使用Field、Method和Constructor对象来设置或获得字段、调用方法,或者创建和初始化类的新实例的时候,会执行访问检查。 当反射对象的a原创 2015-06-15 09:00:37 · 1136 阅读 · 1 评论 -
词法分析学习-手工构词
这个是看MOOC学编译原理的一个作业。 识别标识符和关键字,核心在于转移图,dfa的构造package bingone;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.InputStreamReader;/** * 手工构造词法分析器,标注的关键字有if for 。 * @author原创 2015-06-28 09:57:39 · 574 阅读 · 0 评论