推荐我在github上的一个重构项目mvelx

近半年时间一直在对mvel项目中的代码尝试进行翻译,在翻译的过程当中,就有一个对人家的代码进行修改的冲动。但考虑到很多使用此框架的人,在碰到问题时都是对照的原来的代码。因此在翻译过程中,对原来的代码和注解不作任何调整,所有的操作都是作添加处理。待大部分的功能都进入尾声,相应的重构项目的日程也提上来。

恰好在项目中碰到一个需要对mvel功能作调整才能支持的例子,因此就此在github上新开一个项目,重构原来的mvel,并且在加上相应的功能代码之后,决定作为一个新的项目进行发布,并且所有的代码都保证开源方式。

想了解mvel是什么,可以先google一下,作为一个表达式引擎,它能够支持大部分的表达式工作场景。但对于想要了解这一种引擎的开发人员来说,没有一个有效的注释和相应的开发思路,是很难了解到底是什么东西。并且如果只是想使用,不深入其中,是不会明白一个表达式引擎是如何工作的。

相应的git项目地址:https://github.com/flym/mvelx
目的:用于提供mvel的中文注释版,并且删除在实际开发中不再使用的代码,提供一个简单的脚本执行引擎

希望得到支持

redis中aof备份策略中的配置参数

在使用redis时,都会配置相应的存储策略,以保证redis并不会由于意外挂掉,在短时间内重启时数据不会消失。在当前的版本中,redis提供了bgsave和aof两种策略,本文主要描述了aof中的相关参数以及为什么这样是可以足够安全的。
本文的描述主要参考redis的conf文件以及各项网络

appendonly

开启aof特性,这个控制是否启用aof.

appendfilename

写入文件的文件名。开启aof之后,每条命令(除读之外的命令),均会写入到文件中,这里即实际写入的文件.

appendfsync

写入策略,默认值everysec,每秒写一次(调用flush)。另外两个值,always | no,分别表示每次redis写命令之外就写文件,和由操作系统保证。always对硬盘压力大,everysec是一个平衡值,no对硬盘压力最小,但调度由系统控制,丢失数据风险最大.

继续阅读“redis中aof备份策略中的配置参数”

scala中sbt相应安装及配置信息

在使用scala进行开发时,特别是混合java进行开发时,都推荐使用sbt,而不是使用maven进行开发。因此,本篇描述了我搭建一个基本的sbt环境以及相应的配置信息,并且在idea中也能够识别相应的配置信息。
默认情况下,scala的配置信息使用默认值均会使用 ~/.ivy2以及~/.sbt,作为开发人员,肯定不会使用这些默认值,而是使用统一的配置目录及相关信息.

默认安装情况

默认情况下,将sbt文件从官方(http://www.scala-sbt.org/download.html)下载下来,并解压至指定的目录之后。配置好环境变量(主要是bin)之后,运行sbt,将使用默认的配置下载相应的组件信息。

  • ivy存储配置信息    默认存储在~/.ivy2目录下,主要包括在整个项目开发中所使用的jar缓存,类型maven中的repository
  • sbt启动信息    默认存储至~/.sbt 目录下,主要包括sbt启动时所依赖的组件,如scala信息以及sbt本身的各项jar文件.

自定义配置
其实这些配置信息都可以通过sbt自带的配置文件进行修改,网上在类似替换jar文件,或者在~/.sbt中增加配置项这些作法。但对于不想将配置信息放在~目录中来说,这些都不太方便。要修改这些信息,也很方便,在linux中,我们只需要修改文件sbtopts即可.此文件随sbt提供,在sbt目录下的conf目录中。具体配置如下所示:

继续阅读“scala中sbt相应安装及配置信息”

thinkpad w540在win8下休眠或合上盖子屏幕不亮的解决方法

本文来自讨论:https://forums.lenovo.com/t5/W-Series-ThinkPad-Laptops/W540-Blank-screen-after-undocking-sleep/td-p/1768605

笔者笔记本w540装上win8(或windows 2012)之后,出现一个现象,只要盒上盖子,或者是自动休眠之后,重新打开笔记本,屏幕始终就不亮了。只有直接按电源重新启动,但只要再次休眠,同样的情况就会出现。不仅是这样,只要合上盖子,这个问题也会出现,还能不能愉快地工作了…

经google,搜到前端提到的帖子,此问题还是软件驱动的问题。驱动在休眠之后,不能自动唤醒屏幕,或者说不知道LCD屏幕的存在。解决此问题办法也很简单。按下面步骤即可:

  • 卸载原来笔记本自带的intel驱动,在我的电脑,右键属性,设备管理器,选择显卡,选择intel HD 4600,右键卸载,并且选择删除驱动程序。
  • 下载旧版本的intel驱动,地址:https://downloadcenter.intel.com/Detail_Desc.aspx?DwnldID=24329 。即版本:3958的版本,下载完安装。
  • 重启,问题解决:)

struts2 Action的参数处理和应用(数据访问和处理)-技术培训

这是一次为部门作的技术培训ppt,以下将其贴出,以方便大家查看。
下载地址:http://download.csdn.net/download/fly_m/5562553

本培训从最基本的数据如何进行访问和如何调用方法开始,逐步深入,讲解在数据处理当中涉及到的数据访问,转换,封装以及数据创建等内容。然后结合struts2,讲解在struts2中是如何运用这些理论来处理这些事项,并且是如何运行的;最后讲解了一个之前提到过如何在sturts2中使用带参数进行方法调用,并且是如何作到的。
涉及到以下主题

基本的数据访问
数据链
Request请求中的数据处理
数据转换和封装
泛型映射
Struts2中的数据处理
方法参数映射
Struts2中的数据增强处理

继续阅读“struts2 Action的参数处理和应用(数据访问和处理)-技术培训”

使用webBrowser控件进行无需选择打印机直接打印

以前做的一个系统(内部小型局域网,在线售票系统),采用的是基于浏览器的打印方式,客户提出在每次打印时都必须选择一次打印机,即在调用window.print()的时候弹出选择打印机的界面,这样很费时间,能不能去掉。

后来在网上找了一些控件,比较有名的就是scriptx这个控件,它可以实现打印控制,包括控制边距,选择页数等。的确很不错,不过很可惜,这个控件是收费的,而且破解版根本就找不到,要不就是已经失效了。估计内部使用了基于联网的方式进行认证。
而且该控件提供的免费版中,方法factory.printing.print(false)基本起不到预期的作用,本来想不弹出选择界面,结果还是不能幸免。于是放弃寻找破解版的念头,寻找其他的控件吧。

后台终于找到可以使用windows自带的webBrowrser进行操作了,因为笔者的需求很简单,不需要控制打印选项这些,就是想直接使用默认的打印机,不弹出打印选择界面而已。OK,以下是实现代码,很简单的(主要是后面有一些限制)//界面上

<object ID="PrintCommandObject" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></object>

//javascript
		var PrintCommand = document.getElementById("PrintCommandObject");
			 PrintCommandObject.ExecWB(6, 2);//这里使用的是6,2参数,有的说6,6,笔者测试不通过

继续阅读“使用webBrowser控件进行无需选择打印机直接打印”