`
文章列表
具体参考这篇文章: 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 ...
用到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 ...
这里要用到使用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 ...
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我们想怎么定义就怎么定义,而其他的框架必 ...
获取一个对象的属性是这样写:"${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 表达式引擎是不支持代入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 ...
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 ...
测试结果: 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= 这种是不行的
Global site tag (gtag.js) - Google Analytics