- 浏览: 2573681 次
- 性别:
- 来自: 广州
最新评论
-
hsluoyz:
PyCasbin是一个用Python语言打造的轻量级开源访问控 ...
权限管理的一个简单后台 -
liuyachao111:
谢谢 问题解决了
对实体 "characterEncoding" 的引用必须以 ';' 分隔符结尾 -
jnjeC:
多谢博主分享,在配置文件里的&也要改成& ...
对实体 "characterEncoding" 的引用必须以 ';' 分隔符结尾 -
大维啊:
同志,你这不行啊!
java 的 AccessController.doPrivileged使用 -
lisha2009:
解决了我的问题,多谢博主分享!
对实体 "characterEncoding" 的引用必须以 ';' 分隔符结尾
文章列表
java的泛型并不是都擦除了的
- 博客分类:
- 游戏
具体参考这篇文章: http://rednaxelafx.iteye.com/blog/586212
Java泛型有这么一种规律:
位于声明一侧的,源码里写了什么到运行时就能看到什么;
位于使用一侧的,源码里写什么到运行时都没了。
具体例子:
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;
public c ...
看到同事写的一个代码,让我很蛋疼,获取静态变量的时候用了一个while循环,然后不停的Thread.yield();。
@Component
public class InitEffectFactory implements ApplicationContextAware {
/** 初始化方法 */
@PostConstruct
protected void init() {
//前面是一对的初始化操作
InitEffectFactory.instance = this;
}
/**
* 获取效果工厂实例
* @return
...
mockito模拟私有方法
- 博客分类:
- 测试
用到powmock
注意点:
1 @RunWith(PowerMockRunner.class)
2 @PrepareForTest(PrivateObject.class)
3 PrivateObject obj = PowerMockito.spy(new PrivateObject()); 这里用spy
4 PowerMockito.when(obj, "name").thenReturn("private"); name是方法名
package com.eyu.ahxy.module.staticd;
public cla ...
mockito模拟静态方法
- 博客分类:
- 测试
这里要用到使用powerMock
注意点:
1 @RunWith(PowerMockRunner.class)
2 PowerMockito.mockStatic(StaticTest.class);
package com.eyu.ahxy.module.staticd;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertThat;
import org.junit.Test;
import org.junit.runner.RunWith;
import ...
java的int和byte数组的相互转换
- 博客分类:
- java
byte数组转为int
有两种原理,
一种是先左移动24位,在无符号右移 对应的是byte2int3
另外一种是 先移动 在把干扰的和0做与操作,消除干扰(byte负数的时候 右移时左边都是1,这个时候是有干扰的) 对应的是byte2int2
还有就是这两种的结合了 对应byte2int
注意这个转成byte和实际int的byte的顺序是相反的,不要理解错了。
这样写的原因是写起来更好看,功能反正是ok的
public static int byte2int(byte[] res) {
int targets = (res[0] & 0xff) | ((res[1 ...
先说结论:
Double a=360/15660.0;
System.err.println(Long.toBinaryString(Double.doubleToLongBits(a)));
其实就是先转成long 再long转成2进制
起因是这样的:
Double a=360/15660.0;
我java这边看到的结果是:0.022988505747126436
但是前端lua看到的是 0.022988505747126
我直觉就认为前端lua二逼,生生截断了3位
但是前端lua表示不服
确认的方法就是核对二进制,一看二进制是一样的。
所以啊 不要相信看到的东 ...
性能排序 执行一百万次的耗时:
juel 1243ms
Rhino 1889ms
jesl 2833ms
mvel 2950ms
ongl 4091ms
jsel 15393ms
性能最好的是juel,
jsel是可以直接排除的了
从api的使用友好程度来说
最好的是jesl
Rhino和mvel,ongl都需要编译
juel的表达式写的有点奇怪
总体来看的话,我比较会去选择jesl,使用简单,性能ok。
但是Rhino写的是js,会有更多的想象力,而且在java8有新的解释引擎,速度会更快。会有更多的扩扩展点,js我们想怎么定义就怎么定义,而其他的框架必 ...
juel 性能测试 表达式的写法有点奇怪
- 博客分类:
- 表达式框架
获取一个对象的属性是这样写:"${test.a}" 但是外层有$的时候,要去掉
测试发现性能还是挺好的:
1000000次 ===>1243毫秒 100000次 ===>394毫秒
测试代码:
package com.eyu.ahxy.module.expression.juel;
import javax.el.ExpressionFactory;
import javax.el.ValueExpression;
import org.junit.Test;
import de.odysseus.el.ExpressionFactor ...
编译后 1000000次 ===>4091毫秒 100000次 ===>1255毫秒
不编译 1000000次 ===>27091毫秒 100000次 ===>3997毫秒
性能不是很好 mvel和rinho是它的2-3倍
ongl使用静态方法的形式不太好:@java.lang.Math@min(3,5),这个样子,有点蛋疼啊
package com.eyu.ahxy.module.expression.ognl;
import ognl.Node;
import ognl.Ognl;
import ognl.OgnlContext;
im ...
IK 表达式引擎测试,不符合项目需求
- 博客分类:
- 表达式框架
IK 表达式引擎是不支持代入java对象的,所以其实不符合项目需求的
不过之前做搜索的时候用过ik的分词器,还是对它做个测试吧
测试的只是普通的运算,如果是单纯的数字运算也还是可以用这个的
package com.eyu.ahxy.module.expression.ik;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import org.wltea.expression.ExpressionEvaluator;
import org.wltea.expressi ...
jsel性能测试 感觉性能不行啊
- 博客分类:
- 表达式框架
1000000次 ===>15393毫秒 100000次 ===>2111毫秒
和前面的几个框架比起来差很远啊
使用的是Lite-20111106.jar,已经是最近的版本了,其实一看名字就是2011年的,,,
jar包下载地址:https://code.google.com/p/lite/downloads/list
package com.eyu.ahxy.module.expression.jsel;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
impor ...
jesl的性能测试 其实发现都差不多
- 博客分类:
- 表达式框架
测试结果:
1000000次 ===>2833毫秒 100000次 ===>627毫秒
package com.eyu.ahxy.module.expression.jesl;
import org.apache.commons.jexl2.Expression;
import org.apache.commons.jexl2.JexlContext;
import org.apache.commons.jexl2.JexlEngine;
import org.apache.commons.jexl2.MapContext;
import org.junit.T ...
先说结果:
mvel 1000000次 ===>2950毫秒 100000次 ===>627毫秒
Rhino 1000000次 ===>1889毫秒 100000次 ===>494毫秒
测试代码如下:我用了还算是项目中稍微复杂点的表达式
mvel的性能测试
package com.eyu.ahxy.module.expression;
import java.io.Serializable;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import ja ...
主要是这句:
post.setRequestEntity(new ByteArrayRequestEntity(json.getBytes("UTF-8")));
@Test
public void test_http() throws Exception {
HttpClient client = new HttpClient();
PostMethod post = new PostMethod("http://127.0.0.1:8080/charge/server/sync");
List<ServerEntity& ...
RequestParam 的坑
- 博客分类:
- 坑
@RequestParam(required = false, defaultValue = "0") int gold,
这里就不能传一个参数:gold=
这样会400的错
但是换成 Integer也是不行的 会变成null
所以前端要么就不要传这个参数过来,要么就是要正确的传,gold= 这种是不行的