作者:shilili

安全专家建议用户放弃Java平台 避免安全风险

四月 11, 2012 分类: 社区 作者:shilili

一般来说,计算机用户在安装完操作系统后,大多数人会立即安装应用程序以便帮助其浏览互联网。而许多人认为如果没有安装Flash和Java,就会影响其访问网页中特定的内容。实际上,有很多更安全的方法可以替代Flash和Java。

F-Secure公司的研究人员称许多人使用Java,但实际上并不需要Java,这给了一些网络犯罪分子可乘之机。出现这种情况的主要原因是互联网用户将Java与JavaScript混淆了,后者则是浏览互联网所必备的组件。

安全专家建议如果用户由于使用网上银行或者其他互联网应用而确实需要Java,可以在一个独立,专用的浏览器中安装Java插件。另外,第三方组件往往带有大量的安全漏洞,很容易被黑客利用。如果必须使用这些组件,安全专家建议要将这些组件保持为最新版本,同时还要寻找更新,更安全的替代产品。

作者:roach

aws有没有提供更多的登录界面和model样式,公司没有美工急。。。

四月 10, 2012 分类: 社区 作者:roach

如题

作者:shilili

Oracle与MySQL的几点区别

四月 10, 2012 分类: 社区 作者:shilili

Oracle数据库与MySQL数据库的区别是本文我们主要介绍的内容,希望能够对您有所帮助。

1.组函数用法规则

mysql中组函数在select语句中可以随意使用,但在oracle中如果查询语句中有组函数,那其他列名必须是组函数处理过的,或者是group by子句中的列否则报错

eg:

select name,count(money) from user;这个放在mysql中没有问题在oracle中就有问题了。

2.自动增长的数据类型处理

MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。

CREATE SEQUENCE序列号的名称(最好是表名+序列号标记)INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE;

其中最大的值按字段的长度来定,如果定义的自动增长的序列号NUMBER(6),最大值为999999

INSERT语句插入这个字段值为:序列号的名称.NEXTVAL

3.单引号的处理

MYSQL里可以用双引号包起字符串,ORACLE里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。

4.翻页的SQL语句的处理

MYSQL处理翻页的SQL语句比较简单,用LIMIT开始位置,记录个数;PHP里还可以用SEEK定位到结果集的位置。ORACLE处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位置,并且只能用ROWNUM<100,不能用ROWNUM>80。

以下是经过分析后较好的两种ORACLE翻页SQL语句(ID是唯一关键字的字段名):

语句一:

SELECT ID, [FIELD_NAME,...] FROM TABLE_NAME WHERE ID IN ( SELECT ID FROM (SELECT ROWNUM AS NUMROW, ID FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 条件3;

语句二:

SELECT * FROM (( SELECT ROWNUM AS NUMROW, c.* from (select [FIELD_NAME,...] FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2) c) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 条件3;

5.长字符串的处理

长字符串的处理ORACLE也有它特殊的地方。INSERT和UPDATE时最大可操作的字符串长度小于等于4000个单字节,如果要插入更长的字符串,请考虑字段用CLOB类型,方法借用ORACLE里自带的DBMS_LOB程序包。插入修改记录前一定要做进行非空和长度判断,不能为空的字段值和超出长度字段值都应该提出警告,返回上次操作。

6.日期字段的处理

MYSQL日期字段分DATE和TIME两种,ORACLE日期字段只有DATE,包含年月日时分秒信息,用当前数据库的系统时间为SYSDATE,精确到秒,或者用字符串转换成日期型函数TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)年-月-日24小时:分钟:秒的格式YYYY-MM-DD HH24:MI:SS TO_DATE()还有很多种日期格式,可以参看ORACLE DOC.日期型字段转换成字符串函数TO_CHAR(‘2001-08-01’,’YYYY-MM-DD HH24:MI:SS’)

日期字段的数学运算公式有很大的不同。MYSQL找到离当前时间7天用DATE_FIELD_NAME > SUBDATE(NOW(),INTERVAL 7 DAY)ORACLE找到离当前时间7天用 DATE_FIELD_NAME >SYSDATE – 7;

MYSQL中插入当前时间的几个函数是:NOW()函数以`’YYYY-MM-DD HH:MM:SS’返回当前的日期时间,可以直接存到DATETIME字段中。CURDATE()以’YYYY-MM-DD’的格式返回今天的日期,可以直接存到DATE字段中。CURTIME()以’HH:MM:SS’的格式返回当前的时间,可以直接存到TIME字段中。例:insert into tablename (fieldname) values (now())

而oracle中当前时间是sysdate

7.空字符的处理

MYSQL的非空字段也有空的内容,ORACLE里定义了非空字段就不容许有空的内容。按MYSQL的NOT NULL来定义ORACLE表结构,导数据的时候会产生错误。因此导数据时要对空字符进行判断,如果为NULL或空字符,需要把它改成一个空格的字符串。

8.字符串的模糊比较

MYSQL里用字段名like%‘字符串%’,ORACLE里也可以用字段名like%‘字符串%’但这种方法不能使用索引,速度不快,用字符串比较函数instr(字段名,‘字符串’)>0会得到更精确的查找结果。

9.程序和函数里,操作数据库的工作完成后请注意结果集和指针的释放。

作者:wangguizhi

选择BPM与企业规模大小无直接关系

四月 9, 2012 分类: F.行业动态, 社区 作者:wangguizhi

       事实上,是否要选择BPM,和企业规模大小并无直接关系,而是要考虑企业经营模式的复杂程度。大企业选用BPM,流程通畅管理自然有序,无需多说。那么,小企业呢?

  【IT商业新闻网讯】

  (记者 吴泽)在中国市场,选择业务流程管理(BPM)的中国企业大多是年销售规模在五个亿以上的大中型企业,对于中小企业来说,或者直接选择ERP,或者管理信息化还未提上议事日程。 阅读全文 →

作者:shilili

浅谈Java中的几种随机数

四月 9, 2012 分类: 社区 作者:shilili

众所周知,随机数是任何一种编程语言最基本的特征之一。而生成随机数的基本方式也是相同的:产生一个0到1之间的随机数。看似简单,但有时我们也会忽略了一些有趣的功能。

我们从书本上学到什么?

最明显的,也是直观的方式,在Java中生成随机数只要简单的调用:

  • java.lang.Math.random() 
  • 在所有其他语言中,生成随机数就像是使用Math工具类,如abs, pow, floor, sqrt和其他数学函数。大多数人通过书籍、教程和课程来了解这个类。一个简单的例子:从0.0到1.0之间可以生成一个双精度浮点数。那么通过上面的信息,开发人员要产生0.0和10.0之间的双精度浮点数会这样来写:

  • Math.random() * 10 
  • 而产生0和10之间的整数,则会写成:

  • Math.round(Math.random() * 10) 
  • 进阶通过阅读Math.random()的源码,或者干脆利用IDE的自动完成功能,开发人员可以很容易发现,java.lang.Math.random()使用一个内部的随机生成对象 – 一个很强大的对象可以灵活的随机产生:布尔值、所有数字类型,甚至是高斯分布。例如:

  • new java.util.Random().nextInt(10) 
  • 它有一个缺点,就是它是一个对象。它的方法必须是通过一个实例来调用,这意味着必须先调用它的构造函数。如果在内存充足的情况下,像上面的表达式是可以接受的;但内存不足时,就会带来问题。

    一个简单的解决方案,可以避免每次需要生成一个随机数时创建一个新实例,那就是使用一个静态类。猜你可能想到了java.lang.Math,很好,我们就是改良java.lang.Math的初始化。虽然这个工程量低,但你也要做一些简单的单元测试来确保其不会出错。

    假设程序需要生成一个随机数来存储,问题就又来了。比如有时需要操作或保护种子(seed),一个内部数用来存储状态和计算下一个随机数。在这些特殊情况下,共用随机生成对象是不合适的。

    并发在Java EE多线程应用程序的环境中,随机生成实例对象仍然可以被存储在类或其他实现类,作为一个静态属性。幸运的是,java.util.Random是线程安全的,所以不存在多个线程调用会破坏种子(seed)的风险。

    另一个值得考虑的是多线程java.lang.ThreadLocal的实例。偷懒的做法是通过Java本身API实现单一实例,当然你也可以确保每一个线程都有自己的一个实例对象。

    虽然Java没有提供一个很好的方法来管理java.util.Random的单一实例。但是,期待已久的Java 7提供了一种新的方式来产生随机数:

  • java.util.concurrent.ThreadLocalRandom.current().nextInt(10) 
  • 这个新的API综合了其他两种方法的优点:单一实例/静态访问,就像Math.random()一样灵活。ThreadLocalRandom也比其他任何处理高并发的方法要更快。

    经验

    Chris Marasti-Georg 指出:

  • Math.round(Math.random() * 10) 
  • 使分布不平衡,例如:0.0 – 0.499999将四舍五入为0,而0.5至1.499999将四舍五入为1。那么如何使用旧式语法来实现正确的均衡分布,如下:

  • Math.floor(Math.random() * 11) 
  • 幸运的是,如果我们使用java.util.Random或java.util.concurrent.ThreadLocalRandom就不用担心上述问题了。

    Java实战项目里面介绍了一些不正确使用java.util.Random API的危害。这个教训告诉我们不要使用:

  • Math.abs(rnd.nextInt())%n 
  • 而使用:

  • rnd.nextInt(n) 
  • 作者:刘萌

    5个让人激动的Java项目

    四月 9, 2012 分类: 社区 作者:刘萌

    每个Java/JVM领域的技术专家都应从那些项目中获益,他们中有2011在SanJose举办的Jax 会议中提名为最好的技术产品奖的。我之所以选择他们是因为他们可以广泛用于一系列的项目中解决真实问题。作为开发者,我们也不得不在每天都讨论这些,那么我们赶紧来看看究竟有哪些值得令人激动的项目。

    1.Neo4j 图形数据库

             Neo4j是一个高性能图形引擎,该引擎拥有成熟稳健的数据库的所有特性。程序员利用面向对象、灵活网络结构而不是严格的静态表操作,但是他们可以完全享受到具备完全事务特性、企业级数据库的所有好处。对于很多应用来说,Neo4j相比关系型数据库性能提升1000倍,同时Spring和其他框架有相应的插件支持。

    2.JRebel  不需再重新部署

              JRebel是一个小型的JVM插件,它能使Java程序员在不需重新部署情况下即时地看到代码改变后的结果。JRebel 能够在一个时间点让你单独地更新管理类文件和资源的版本来替换块应用部署,当开发者在IDE中对类和资源有任何的修改时,变化能立刻地反映到已经部署好的应用中。通过省略从构建到重新部署期所花时间每年能节省约5.25周。

    3.Gradle  一个更好的构建工具

             Gradle充分吸取了Maven和Ant的优点。Gradle站点说道:“工程自动化是软件项目成功的必要条件,而且它应该是实现起来简单、易用、好玩的。构建没有千篇一律的方法,所以Gradle没有死板的强加方法于我们,尽管你会认为查找和描述你的方法很重要,然而Gradle对于如何描述它有着非常好的支持。我不认为工具能够拯救我们,但是Gradle能给你所需要的自由,你可以利用Gradle构建易描述的、可维护的、简洁的、高性能项目”。

    4.Akka 更加简单的可伸缩性、容错性、并发性、远程调用的Actor模型应用

             编写出可靠的并发、容错、可伸缩的应用简直太难了,很多时候是因为我们使用不合理的工具和错误的抽象级别,Akka正是用来解决这些难题的。使用 Actor模型与STM(软件事务内存)提高抽象级别,Actor提供了更好的平台来建立可靠的并发和可伸缩的应用,对于容错采取任其崩溃、接受失败的模型(Let it crash/Embrace failure),它已经成功运用在电信行业。系统几乎不会宕机(高可用性99.9999999 % 一年只有31 ms宕机,这里有详细介绍),Actors同样为透明的分布式提供了抽象化,为真正的可扩展和容错的应用提供了基本要素。

    5.Play Framework —关注开发者效率和RESTful风格的架构

            Ruby中有Rails框架,Groovy有Grails,现在Java有了Play!Play 是一个纯Java框架,因此可以继续使用你钟爱的开发工具和类库。如果你已经在使用Java作为开发平台,那样也不需要切换到另一种语言、另一种IDE和库文件,你要做的仅仅是切换到一个更高效的Java环境中。

    作者:wangguizhi

    领跑活动郑州之旅圆满落幕

    四月 6, 2012 分类: F.行业动态 作者:wangguizhi

          3月30日,炎黄盈动领跑活动之BPM研讨沙龙郑州之旅圆满落下帷幕。近年来郑州乃至河南地区加大了信息化建设的步伐,本次研讨会也得到了众多企事业单位领导的重视,亲自或安排相关部门负责人出席了活动。

           阅读全文 →

    作者:shilili

    BPM对企业要做到“不聋 不哑 不瞎”

    四月 5, 2012 分类: 社区 作者:shilili

    如果企业流程未来的目标是持续流程改进,能从流程中获取智能化当然很好。BPM软件有一个数据库,用于交付流程信息。BPM厂商也开始看到这种需求,构建出这样的功能来让客户获取到这种“智能”。而且现在BPM厂商将越来越多的功能添加到其软件中,为客户提供一种信息洞察力,从而促进流程的持续改进。

    过去的七年中,BPM原则有了长足的发展,BPM技术也是如此。企业成本已经通过BPM得到节省,工作效率也更高,流程逐渐发展壮大,甚至有些企业实现了资本化流程。尽管这些看起来都不错,但企业仍旧需要BPM和BPMS技术带来更多的产出,流程就需要更加智能和灵活。

    随着企业信息化的不断发展,就需要BPM提供更多的利益。现在更多的流程技术主要通过BPMS的形式提供给用户,纵观业务流程管理的生命周期,一个企业要确定问题所在,根据这个流程寻求BPM解决方案,然后再实施这个方案。以后,企业需要监控这个解决方案运行的好不好,这也会引出一个较短的周期,对流程中的东西能够立即可见。企业也会期望更有效地运行流程。

    如果企业流程未来的目标是持续流程改进,能从流程中获取智能化当然很好。BPM软件有一个数据库,用于交付流程信息。BPM厂商也开始看到这种需求,构建出这样的功能来让客户获取到这种“智能”。而且现在BPM厂商将越来越多的功能添加到其软件中,为客户提供一种信息洞察力,从而促进流程的持续改进。

    流程已经变得越来越智能,而且能反馈会实际的东西。从最小的范围上来讲,一项流程需要通知流程参与者、流程管理者、流程设计者和需要作出决策和执行的流程所有者。往大了说,流程会对于如何解决处境问题给出建议。

    流程还需要知道更多的事件以及相关的事件,一项流程需要找到预期事件,而流程参与者的反馈可能直接影响到流程的发展。还要能够对整个的流程环境有一个把握,能够触及到所有的内容。

    此外,可视性也成为流程需要加强内容。因为这关系到资源的可控性以及流程的可触范围。一个小型流程应该能够提供工作负载、资源饱和状态、流程前进的目标、总体目标和KPI的可视性。通常会用一个Dashboard来展现这些内容。而在一项巨大的应用中,多个交互流程中的资源可视性更为重要。整个流程环境都应该能看清,对于意外情况要能够通知给正确的负责方。

    Videos, Slideshows and Podcasts by Cincopa Wordpress Plugin