- 浏览: 79667 次
- 性别:
- 来自: 北京
最新评论
-
heipacker:
什么玩意,你运行过你的代码?
disruptor3.x 简单例子 -
hanqian200705:
请问如果是线程并发消费Event的需要怎么处理? 改THREA ...
disruptor3.x 简单例子 -
zhangbaoliang:
出现这种问题,完全有可能,如果是真这个,的确是有点。。。。。。 ...
被360云杀掉的代码 -
zuoge85:
纠结,如果这样下去,程序员日子不好过
被360云杀掉的代码 -
javageek123:
装了杀毒好比洗澡被偷窥,不装杀毒好比自己去闹市裸奔,性质不同 ...
被360云杀掉的代码
需要把wordFilter去掉,这个类用来把java对象转换为lua的table和字符串。 用于动态生成lua脚本的时候使用 可以弄到el函数里面,著名原作者,而且请注意,对象循环引用我没处理!!!!! java Lua encoder import java.io.IOException; import java.sql.Time; import java.util.Collection; import java.util.Date; import net.sf.cglib.beans.BeanMap; import vlan.core.web.WordFilter; import vlan.util.DateUtils; /** * lua的编码器,编码成lua脚本 * @author zuoge85 * */ public class LuaEncoder { public static final String encodeObject(Object o){ StringBuilder sb=new StringBuilder(); try { encodeObject(sb,o); } catch (IOException e) { throw new RuntimeException(e); } return sb.toString(); } @SuppressWarnings("unchecked") public static final void encodeObject(Appendable sb,Object o) throws IOException{ if(o==null){ sb.append("nil"); }else if(o instanceof Integer){ sb.append(String.valueOf(o)); }else if(o instanceof CharSequence){ sb.append('L'); sb.append('\"'); encode(sb,(CharSequence)o); sb.append('\"'); }else if(o instanceof Byte){ sb.append(String.valueOf(o)); }else if(o instanceof Short){ sb.append(String.valueOf(o)); }else if(o instanceof Float){ sb.append(String.valueOf(o)); }else if(o instanceof Boolean){ sb.append(String.valueOf(o)); }else if(o instanceof java.sql.Date){ sb.append('L'); sb.append('\"'); encode(sb, DateUtils.format((java.sql.Date)o)); sb.append('\"'); }else if(o instanceof Time){ sb.append('L'); sb.append('\"'); encode(sb, DateUtils.format((Time)o)); sb.append('\"'); }else if(o instanceof Date){ sb.append('L'); sb.append('\"'); encode(sb, DateUtils.format((Date)o)); sb.append('\"'); }else if(o instanceof Table){ Table e=(Table)o; e.toString(sb); }else if(o instanceof Collection){ sb.append('{'); boolean isd=false; for(Object item:(Collection)o){ if(isd){ sb.append(','); }else{ isd=true; } encodeObject(sb,item); } sb.append('}'); }else if(o.getClass()==Object.class){ sb.append("{}"); }else if(o instanceof Number){//google的list实现了这个接口的貌似,因此放最后 /** * 太长了的数字当成字符串处理 */ sb.append('\"'); encode(sb, String.valueOf(o)); sb.append('\"'); }else{ //反射对象 BeanMap m=BeanMap.create(o); sb.append('{'); boolean isd=false; for(Object key:m.keySet()){ if(isd){ sb.append(','); }else{ isd=true; } Object value=m.get(key); sb.append((String)key); sb.append('='); encodeObject(sb,value); } sb.append('}'); } } public static final String encode(String str){ StringBuilder sb=new StringBuilder(); try { encode(sb,str); } catch (IOException e) { throw new RuntimeException(e); } return sb.toString(); } public static final void encode(Appendable out,CharSequence str) throws IOException { if (str == null) { return ; } if(wordFilter!=null){ str=wordFilter.out(str); } int sz; sz = str.length(); for (int i = 0; i < sz; i++) { char ch = str.charAt(i); if (ch < 32) { switch (ch) { case '\b' : out.append('\\'); out.append('b'); break; case '\n' : out.append('\\'); out.append('n'); break; case '\t' : out.append('\\'); out.append('t'); break; case '\f' : out.append('\\'); out.append('f'); break; case '\r' : out.append('\\'); out.append('r'); break; default : out.append(ch); break; } } else { switch (ch) { case '\'' : out.append('\\'); out.append('\''); break; case '"' : out.append('\\'); out.append('"'); break; case '\\' : out.append('\\'); out.append('\\'); break; case '/' : out.append('\\'); out.append('/'); break; default : out.append(ch); break; } } } } private static WordFilter wordFilter; /** * 过滤,注意框架会自动设置这个属性,如果ioc工程能获取WordFilter类型的实例 * @param wordFilter */ public static void setWordFilter(WordFilter wordFilter) { LuaEncoder.wordFilter = wordFilter; } }
发表评论
-
简单el表达式实现
2013-06-21 01:05 1821一个简单的el表达式实现 实现还在完善种,现在只能处 ... -
jackson json 实践
2013-06-20 22:36 5323需要忽略 默认值,生成的json带有大量的value是0的内 ... -
java 锁测试
2013-05-04 00:58 33下面是一个简单的锁测试 看来测试结果.轻量级的锁(基于ca ... -
disruptor3.x 简单例子
2013-05-03 14:53 8086这个是最新的 disruptor3的例子....来自官方代 ... -
并发的最低安全性
2013-05-02 13:13 1523并发最低安全性 例如在某些实时性统计的时候我们只需 ... -
伪共享测试
2013-04-30 22:13 1052引用来自于 http://ifeve.com/falsesh ... -
java 系统托盘注意事项
2012-02-10 00:10 1008MenuItem可能出现乱码 ,可以用JMenuItem替代 ... -
maven-assembly配置 例子 错误
2012-02-08 00:13 12697<plugin> ... -
jackson使用
2012-02-08 00:07 2966序列化 ObjectMapper mapper = n ... -
URLEncoder出错 win7 系统乱码
2011-04-13 00:13 1011最开始的时候是System.out.println(java. ... -
记录下这个子 以后测试用的到 龖
2011-03-30 21:53 42记录下这个子 以后测试用的到 龖 ... -
打个标记
2011-03-08 12:40 1055http://hi.baidu.com/zengzhaonon ... -
老婆给程序员老公发了一条信息:下班买几个苹果回来,如果看到西瓜,就买一个~
2011-02-15 15:36 2080老婆给程序员老公发了一条信息:下班买几个苹果回来,如果看到西瓜 ... -
lua 模拟实现switch
2010-11-28 22:55 7512可以考虑实现如下模式形式, 也许还有跟变态的方式,在不考虑效 ... -
windows7 64位 eclipse 64+jre 64 程序老死解决
2010-08-31 16:42 2931用eclipsec.exe运行,发现控制台输出 jav ... -
linux 端口转发
2010-08-28 15:31 950ubuntu下开发的时候eclipse 启动tomcat 不能 ... -
反射和字节码优化的性能还是如此的让人担忧
2010-06-24 16:29 0反射和字节码优化的性能还是如此的让人担忧 性能差距还是 ... -
c语言学习1 数据类型
2010-06-21 01:12 1089为了弥补我c语言的欠缺,开始学c语言了:) 今天开始第 ... -
ubuntu eclipse 紧凑界面
2010-06-20 13:10 1766ubuntu eclipe 的工具栏高度太高了 修改 ... -
java web 乱码
2010-06-06 15:15 1075java web乱码浅析 分析过程不说了, ...
相关推荐
* 在 Java 代码中,使用 `DefaultRedisScript` 执行 Lua 脚本: ```java @Autowired private StringRedisTemplate redisTemplate; @Test public void contextLoads() { String lockKey = "123"; String ...
SpringBoot 通过 RedisTemplate 执行 Lua 脚本的方法步骤 Spring Boot 是一个基于 Java 的框架,用于构建企业级应用程序,而 Redis 是一个基于内存的 NoSQL 数据库,常用于缓存、消息队列和数据存储。Lua 脚本是 ...
2. 加载Lua脚本:使用`state.LdoFile("path_to_your_lua_script.lua");`加载并执行Lua脚本文件。 3. 调用Lua函数:在Lua脚本中定义函数后,可以通过`state.getFunction("lua_function_name");`获取该函数,然后通过...
本文将详细介绍如何在Android应用中使用Luajava库进行Lua脚本的调用,并通过"LuajavaDemo"这个实例项目,深入解析其实现原理和应用技巧。 一、Luajava库简介 Luajava是Lua与Java交互的一个桥梁,它允许Lua代码直接...
LuaJava库允许开发者编写Lua脚本,并在Android应用中调用Java类和方法,反之亦然。这为混合式开发提供了便利,使得开发者可以在不离开Java主框架的同时,利用Lua进行快速原型设计或者处理性能关键的部分。 在压缩包...
1. **Lua脚本优点**: Lua脚本在Redis中执行是原子性的,能确保在并发环境下数据的一致性。此外,通过减少网络往返,提高了数据操作的效率。 2. **`EVAL`命令**: Redis提供了`EVAL`命令来执行Lua脚本。Lua脚本作为...
JSON(JavaScript Object Notation)和Lua Table 是两种广泛使用的数据序列化格式,分别在Web开发和游戏编程领域中占据重要地位。JSON因其简洁明了的结构而被广泛用于数据交换,而Lua Table则是Lua编程语言中的核心...
在Android平台上,有时候为了实现...通过 Luaj 库,我们可以轻松地在Android应用中嵌入Lua脚本,实现动态逻辑处理,降低开发复杂度。记住,安全总是首要考虑的因素,因此确保在允许Lua代码执行时采取适当的防护措施。
在IT行业中,Lua是一种轻量级的脚本语言,常用于游戏开发、嵌入式系统以及服务器配置等场景。在本文中,我们将深入探讨“Lua面向对象封装”这一主题,结合给定的文件名“CC_Object.lua”和“Luatest1.lua”,推测这...
在这个“lua 源代码 添加了 cJson”的项目中,开发者整合了Luaj,一个允许Java应用程序运行Lua脚本的库,与cJson,一个高效的C语言实现的JSON解析器和序列化器。这样的结合对于Android应用尤其有用,因为它可以在...
这些库提供了将Lua与Android原生API交互的桥梁,使得Lua脚本能够访问和控制Android系统服务、处理UI事件、存储数据等。 2. **Lua脚本** Lua语法简单,支持基本的数据类型(如数字、字符串、布尔值、表、nil和函数...
在Java代码中,可以调用`EVAL`命令执行这个lua脚本,确保解锁操作的原子性: ```java public void unlock(String key, String lockValue) { String script = "if redis.call('get', KEYS[1]) == ARGV[1] then\n" +...
这使得你的应用不仅能执行Lua脚本,还能处理复杂的JSON数据,极大地增强了应用的灵活性和可扩展性。在实际开发中,你还可以根据需求进一步定制lua_cjson,或者扩展其他lua库,以满足特定场景的需求。
在Windows平台上,你需要将这个库文件放置在你的Lua搜索路径中,或者与你的Lua脚本在同一目录下,以便lua能够找到并加载cjson库。 总的来说,Lua cjson库是Lua开发者处理JSON数据的必备工具,它简化了JSON和Lua数据...
Luacom.dll是Lua与COM(Component Object Model)接口交互的桥梁,允许Lua脚本调用Windows系统中的Office组件,例如Microsoft Excel,来实现对xlsx文件的读取和写入。 Luacom是一个由Lua社区开发的开源库,它提供了...
介绍当下多数在java下执行lua脚本的程序都是用了luajava。然而luajava存在一些严重的问题,它会将byte数组和string等同对待,而且它的反射执行效率比较低。为了弥补这些问题,我参考luajava,重写了它的java和jni...
10. **Lua脚本**:Redis支持在服务器端执行Lua脚本,这可以用于执行一连串操作,保证原子性。 ```java String script = "return redis.call('incr', KEYS[1])"; Long result = jedis.eval(script, Collections....
8. **脚本操作**:Redis支持Lua脚本,Jedis的`eval`和`evalsha`方法可以执行Lua脚本。 9. **连接断开与关闭**:在应用结束时,记得关闭连接池: ```java jedisPool.close(); ``` 10. **异常处理**:在进行Redis...
3. **脚本操作**:使用Lua脚本在服务器端执行复杂逻辑。 ```java String script = "return redis.call('get', KEYS[1])"; String value = jedis.eval(script, Collections.singletonList("key"), Collections....
- **脚本执行(Lua Scripting)**:Jedis允许通过`scriptLoad`和`eval`执行Lua脚本,实现复杂的原子操作。 4. **连接关闭与资源释放**: - 在完成Redis操作后,记得关闭连接,释放资源。对于单个连接,使用`jedis....