gradle ojdbc6

gradle ojdbc6 install ojdbc into loacal repo http://www.wiloon.com/?p=4863 modify build.gradle, then gradle can search local maven repo apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'war' apply plugin: "maven" repositories { mavenCentral() maven { name 'local-repo' url 'file:///D:/dev/mavenRepo/' } } http://forums.gradle.org/gradle/topics/access_a_oracle_db_runs_no_more_with_gradle_1_0_rc_3 http://blog.csdn.net/howdy_world/article/details/25650281

2014-03-04 · 1 min · 42 words · -

番茄冰激凌

番茄冰激凌 番茄含有丰富的营养,多吃有益。习惯上,番茄做法大多凉拌、做汤、炒鸡蛋。这里,为大家介绍几种番茄的夏季另类做法,趁夏季番茄大量上市,不妨试着多做几种花样。 番茄冰饮 原料: 番茄500克,白糖100克。 制作方法: ①选新鲜、成熟番茄,洗净后切小块,加入白糖拌匀,腌两小时,待腌出汁备用;②将其放入冰格内,置冰箱中冷冻成冰块即可。 特点: 色泽鲜红,酸甜可口,生津开胃,促进食欲。 番茄冰淇淋 原料: 番茄100克,牛奶100克,奶油30克,水70克,鸡蛋两个,白糖50克,香精少许。 制作方法: ①将番茄洗净去皮,切成碎块,加水煮沸成酱汁备用,牛奶煮沸备用。②将糖、鸡蛋加入稍凉的番茄汁内,边加入边不断搅拌,再加牛奶,搅匀备用。③将混合液加热、过滤、晾凉,加奶油、香精,拌匀。④把上述混合液置冰箱冷冻,并经常搅拌,凝冻后即可食用。

2014-03-03 · 1 min · 14 words · -

Javascript 重定向 window.location.href / replace / reload()

Javascript 重定向 window.location.href / replace / reload() location.href,可以点击浏览器的后退按钮返回本页。 location.assign(URL) assign() 方法可加载一个新的文档。效果与location.href相当。 location.reload(force) 如果该方法没有规定参数,或者参数是 false,它就会用 HTTP 头 If-Modified-Since 来检测服务器上的文档是否已改变。如果文档已改变,reload() 会再次下载该文档。如果文档未改变,则该方法将从缓存中装载文档。这与用户单击浏览器的刷新按钮的效果是完全一样的。 如果把该方法的参数设置为 true,那么无论文档的最后修改日期是什么,它都会绕过缓存,从服务器上重新下载该文档。这与用户在单击浏览器的刷新按钮时按住 Shift 健的效果是完全一样。 location.replace(newURL) 不能点击浏览区的后退按钮返回本页。 将地址替换成新url,该方法通过指定URL替换当前缓存在历史里 (客户端) 的项目, 因此当使用replace方法之后,你不能通过"前进"和"后 退"来访问已经被替换的URL,这个特点对于做一些过渡页面非常有用! replace() 方法不会在 History 对象中生成一个新的记录。当使用该方法时,新的 URL 将覆盖 History 对象中的当前记录。 http://jun1986.iteye.com/blog/1176909 一、最外层top跳转页面,适合用于iframe框架集 top.window.location.href("${pageContext.request.contextPath}/Login_goBack"); ============================================================================================ 二、window.location.href和window.location.replace的区别 1.window.location.href=“url”: 改变url地址; 三、强制页面刷新 1.window.location.reload(): 强制刷新页面,从服务器重新请求! ============================================================================================ 四、window.location.reload();页面实现跳转和刷新 1 history.go(0) 2 location.reload() 3 location=location 4 location.assign(location) 5 document.execCommand(‘Refresh’) 6 window.navigate(location) 7 location.replace(location) 8 document.URL=location.href 这几个都可以刷新 window.location.reload();刷新 ...

2014-03-03 · 1 min · 100 words · -

deluged

deluged docker run \ -d \ --name=deluge \ --net=host \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Asia/Shanghai \ -v deluge-config:/config \ -v deluge-downloads:/downloads \ --restart unless-stopped \ linuxserver/deluge #debian apt-get update apt-get install deluged deluge-web #运行 deluge守护进程 deluged 和web控制端 deluged nohup deluge-web & 用浏览器访问 http://ip:8112 默认密码是 deluge http://www.jianshu.com/p/48feb68b3b30 http://dev.deluge-torrent.org/wiki/UserGuide

2014-03-02 · 1 min · 50 words · -

Raspberry Pi init

Raspberry Pi init deluged - http://www.wiloon.com/?p=6306

2014-03-02 · 1 min · 6 words · -

linux下休眠/待机命令

linux下休眠/待机命令 命令行工具hibernate 安装 hibernate sudo aptitude install hibernate # sleep ,系统内存映象将写入 swap 区后关机 sudo hibernate-disk # suspend ,就是挂起。 sudo hibernate-ram #配置hiberante sudo dpkg-reconfigure hibernate 主要是休眠唤醒密码。 if you cat /sys/power/state mem disk you can echo “mem” > /sys/power/state 这相当于待机 echo “disk” > /sys/power/state 这相当于休眠 from http://linux.chinaunix.net/bbs/viewthread.php?tid=1057578 命令行中执行如下: [root@fsc feng]# file /sys/power/state /sys/power/state: ASCII text [root@fsc feng]# cat /sys/power/state standby mem disk [root@fsc feng]# echo “mem”>/sys/power/state ...

2014-03-02 · 2 min · 220 words · -

Java Iterator 迭代器

Java Iterator 迭代器 http://www.cnblogs.com/amboyna/archive/2007/09/25/904804.html http://jnotnull.iteye.com/blog/262379 迭代器 (Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为"轻量级"对象,因为创建它的代价小。 Java中的Iterator功能比较简单,并且只能单向移动: (1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意: iterator()方法是java.lang.Iterable接口,被Collection继承。 (2) 使用next()获得序列中的下一个元素。 (3) 使用hasNext()检查序列中是否还有元素。 (4) 使用remove()将迭代器新返回的元素删除。 Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。 迭代器应用: list l = new ArrayList(); l.add(“aa”); l.add(“bb”); l.add(“cc”); for (Iterator iter = l.iterator(); iter.hasNext();) { String str = (String)iter.next(); System.out.println(str); } /*迭代器用于while循环 Iterator iter = l.iterator(); while(iter.hasNext()){ String str = (String) iter.next(); System.out.println(str); } */

2014-02-28 · 1 min · 55 words · -

js check platform

js check platform <script type="text/javascript"> <!- //平台、设备和操作系统 var system ={ win : false, mac : false, xll : false }; //检测平台 var p = navigator.platform; alert(p); system.win = p.indexOf("Win") == 0; system.mac = p.indexOf("Mac") == 0; system.x11 = (p == "X11") || (p.indexOf("Linux") == 0); //跳转语句 if(system.win||system.mac||system.xll){//转向后台登陆页面 window.location.href="login.jsp"; }else{ window.location.href="wapLojin.jsp"; } -> </script> var isMobile = { Android: function() { return navigator.userAgent.match(/Android/i) ? true : false; }, BlackBerry: function() { return navigator.userAgent.match(/BlackBerry/i) ? true : false; }, iOS: function() { return navigator.userAgent.match(/iPhone|iPad|iPod/i) ? true : false; }, Windows: function() { return navigator.userAgent.match(/IEMobile/i) ? true : false; }, any: function() { return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Windows()); } }; http://blog.csdn.net/yakson/article/details/9390863 ...

2014-02-27 · 1 min · 112 words · -

golang http 文件下载

golang http 文件下载 golang + gin c.Writer.WriteHeader(http.StatusOK) c.Header("Content-Disposition", fmt.Sprintf("attachment; filename=%s.bin", "foo")) c.Header("Content-Type", "application/octet-stream") c.Header("Content-Transfer-Encoding", "binary") c.Header("Accept-Ranges", "bytes") c.Header("Connection", "keep-alive") c.Header("Content-Length", fmt.Sprintf("%d", len(paramsBytes))) c.Writer.Write(paramsBytes) vuetify import fileDownload from 'js-file-download' exportCsv (): void { Axios.get('/export', { headers: { Authorization: 'Bearer ' + localStorage.getItem('JWT_TOKEN') }, params: { foo: this.foo, start: this.dateStart + ' ' + this.timeStart, end: this.dateEnd + ' ' + this.timeEnd }, responseType: 'blob' }).then(response => { const fileName = response.headers['content-disposition'].match(/filename=(.*)/)[1] console.log('data: ' + response.data) fileDownload(response.data, fileName) }).catch(error => { console.log({ error }) }) } http://blog.csdn.net/androidmylove/article/details/8881573 // Ajax 文件下载 jQuery.download = function(url, data, method){ // 获得url和data if( url && data ){ // data 是 string 或者 array/object data = typeof data == 'string' ? data : jQuery.param(data); // 把参数组装成 form 的 input var inputs = ''; jQuery.each(data.split('&'), function(){ var pair = this.split('='); inputs+='<input type="hidden" name="'+ pair[0] +'" value="'+ pair[1] +'" />'; }); // request发送请求 jQuery('<form action="'+ url +'" method="'+ (method||'post') +'">'+inputs+'</form>') .appendTo('body').submit().remove(); }; }; 文章结束给大家分享下程序员的一些笑话语录: 一个合格的程序员是不会写出 诸如 “摧毁地球” 这样的程序的,他们会写一个函数叫 “摧毁行星"而把地球当一个参数传进去。

2014-02-26 · 1 min · 159 words · -

Java URL URI

Java URL URI http://blog.csdn.net/majiabao123/article/details/4202158 从JDK1.4开始,java.net包对统一资源定位符(uniform resource locator URL)和统一资源标识符(uniform resource identifier URI)作了非常有用的区分。 URI是个纯粹的句法结构,用于指定标识Web资源的字符串的各个不同部分。URL是URI的一个特例,它包含了定位Web资源的足够信息。其他URI,比如: mailto: cay@horstman.com 则不属于定位符,因为根据该标识符无法定位任何资源。像这样的URI我们称之为URN(统一资源名称)。 在Java类库中,URI类不包含任何访问资源的方法,它唯一的作用就是解析。相反的是,URL类可以打开一个到达资源的流。因此URL类只能作用于那些Java类库知道该如何处理的模式,例如: http: ,https: ,ftp:,本地文件系统(file:),和Jar文件(jar:)。 URI类的作用之一是解析标识符并将它们分解成各个不同的组成部分。你可以用以下方法读取它们: getSchema getHost getPort getPath getQuery URI类的另一个作用是处理绝对标识符和相对标识符。如果存在一个如下的绝对URI: http://docs.mycompany.com/api/java/net/serversocket.html 和一个如下的相对URI: ../../java/net/socket.html#Socket() 那么你可以将它们合并成一个绝对URI: http://docs.mycompany.com/api/java/net/socket.html#Socket() 这个过程被称为相对URL的转换。 与此相反的过程成为相对化。例如: 假设你有一个基本URI: http://docs.mycompany/api 和另一个URI: http://docs.mycompany/api/java/lang/String.html 那么相对化后的URI就是: java/lang/String.html

2014-02-26 · 1 min · 39 words · -

电脑通过USB共享android手机网络访问Internet

电脑通过USB共享android手机网络访问Internet 打开手机USB绑定 【设置】->【无线和网络设置】->【绑定与便携式热点】->【USB绑定】 详细内容参见: https://support.google.com/android/answer/182134#usb 2.下载驱动安装信息 从android官网下载驱动程序信息文件 tetherxp.inf ( http://www.android.com/drivers/tetherxp.inf ) 3.使用手机附带的 USB 线连接手机与计算机。 4.Windows XP 的"新硬件向导"打开后,选择否,暂时不,然后点击下一步。 5.选择从列表或指定位置安装,然后点击下一步。 6.点击浏览,找到您在步骤 1 中下载的配置文件的安装目录,然后点击下一步。Windows XP 会使用该配置文件进行配置,以支持与 Android 手机进行 USB 网络共享。 7.在 Windows XP 安装完用于 Android USB 以太网/RNDIS 的软件后,点击完成。 http://blog.sina.com.cn/s/blog_570343830101ezix.html https://support.google.com/android/answer/182134#usb

2014-02-25 · 1 min · 37 words · -

怎样用Javascript定义一个类

怎样用Javascript定义一个类 http://www.cnblogs.com/xcj26/archive/2013/04/08/3006023.html 其实Javascript中没有类这个定义,但是有类这个概念。很多人都写过这样的代码,对,没错,就是如下代码,清晰的不能再清晰了,就是一个关键字 function,然后定义一个方法名,方法名后紧跟一对括号。如果你在项目中写过这样的代码,那么祝贺你,你可以不费任何吹毛之力,就能一口气读完这篇博文了. function Print() { …… } 当我们在写c#代码,焦头烂额,无从下手的时候,至少我们还是可以厚着脸皮在老板的面前,敲出华丽的 class ***{},是的,没错,就这几个字符。殊不知这这几个字符体现出来的境界。说浅些,我会敲键盘写代码,说深些,我有可能理解了面向对象的编程,至少我会定义一个类。是这样的,c#中定义一个类是用class。 有一天,老板变态了,让我用Javascript来定义一个类,我无从下手呀,我平时都是用("."),("#")的人物呀,思考良久,我还模糊的记的document.getElementById("")这个东西,但是好像与Javascript的类扯不上关系呀。怎么办?问了google问百度啊,最后在一个角落,找到了定义Javascript类的E文。仔细一阅,难道这是一个坑吗?明明用function定义了一个方法,活生生的把它说成一个类,反复几次Google百度后,有点怀疑了,难道Javascript中定义一个类,真的是用function?其实没错,在Javascript中,定义一个类是用fucntion() *\*{}。不管是在学校的菜鸟,还是国外的顶级程序员,在这件事上是平等的,想定义一个Javascript的类,就必须得先敲下function **(){}。 在定义Javascript类上,表现形势上大家虽然是平等的,都是用function ***(){}。但实质上,确是蕴含着大量的学问。也许有些朋友到目前为止,是不是感觉我说的太简单了,那我们就在这个function上玩点花样。 function Dog(category, name, age) { this.Category = category; this.Name = name; this.Age = age; } 一个Javascript类就这样定义完成了,现在就可以自豪的说,我会面向对象的手法编定Javascript代码了。 类定义好了,那我们怎么样来用这个类呢?其实用法和C#的用法很像。 var dog01 = new Dog(“狗类”, “土狗”, 2); var dog02 = new Dog(“狗类”, “黄狗”, 5); 有些朋友要拍砖了,这么简单的东西,都拿出来说,那我们不妨再来进阶一下。我上边的代码,实例化了两个对象,一个是dog01,dog01下边那个是dog02。因为dog01的Cateogry太口语化了,我要修改为dog01.Categry = ‘犬类’,这样听起来是不是舒服多了,这是一个很简单的事,我们仅仅需要为dog01的Cateogry重赋值就可以了。我们修改了dog01的Cateory, dog02的Category会跟着变吗?答案是肯定的,不会变,如果有变,肯定有鬼。那我们有没有方法让dog01,dog02这些对象的Cateogry属性共用起来呢?也就是说当我修改了Category属性,不管是dog01,还是dog02都跟一样的变,我们不妨来这样写写。 <img alt="复制代码" src="http://common.cnblogs.com/images/copycode.gif" /> function Dog(name,age) { this.Name = “”; this.Age = “”; } Dog.prototype.Category = “狗类”; var dog01 = new Dog(“土狗”,2); var dog02 = new Dog(“黄狗”,5); alert(dog01.Category); alert(dog02.Category); Dog.prototype.Category = “犬类”; alert(dog01.Category); alert(dog02.Category); ...

2014-02-25 · 1 min · 95 words · -

spring junit

spring junit 一.首先讲下注解,autowire 与 resource的区别 @Autowired是按类型装配依赖对象,默认情况下,要求依赖对象必须存在,若允许null值,可以设置它的required属性为false。如果想使用按名称装配,可以结合@Qualifier注解一起使用。如: @Autowired @Qualifier(“xmlBean1”) private XMLBean xmlBean; @Resource和@Autowired一样,也可以标注在字段或属性的setter方法上,但它默认是按名称装配。名称可以通过@Resource的name属性指定,如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象。当没有使用name属性时,如果按照字段名找不到bean,就会转而使用按类型装配的方式进行查找;但当使用了name属性,只能按照指定的name查找bean,当找不到相应的bean时,就会抛异常。 @Resource(name=“xmlBeanx”) private XMLBean xmlBean;//用于字段上 二.讲解spring测试套件的好处: 在开发基于Spring的应用时,如果你还直接使用Junit进行单元测试,那你就错过了Spring为我们所提供的饕餮大餐了。使用Junit直接进行单元测试有以下四大不足: 导致多次Spring容器初始化问题 根据JUnit测试方法的调用流程,每执行一个测试方法都会创建一个测试用例的实例并调用setUp()方法。由于一般情况下,我们在setUp()方法中初始化Spring容器,这意味着如果测试用例有多少个测试方法,Spring容器就会被重复初始化多次。虽然初始化Spring容器的速度并不会太慢,但由于可能会在Spring容器初始化时执行加载Hibernate映射文件等耗时的操作,如果每执行一个测试方法都必须重复初始化Spring容器,则对测试性能的影响是不容忽视的; -->使用Spring测试套件,Spring容器只会初始化一次! 需要使用硬编码方式手工获取Bean 在测试用例类中我们需要通过ctx.getBean()方法从Spirng容器中获取需要测试的目标Bean,并且还要进行强制类型转换的造型操作。这种乏味的操作迷漫在测试用例的代码中,让人觉得烦琐不堪; -->使用Spring测试套件,测试用例类中的属性会被自动填充Spring容器的对应Bean ,无须在手工设置Bean! 数据库现场容易遭受破坏 测试方法对数据库的更改操作会持久化到数据库中。虽然是针对开发数据库进行操作,但如果数据操作的影响是持久的,可能会影响到后面的测试行为。举个例子,用户在测试方法中插入一条ID为1的User记录,第一次运行不会有问题,第二次运行时,就会因为主键冲突而导致测试用例失败。所以应该既能够完成功能逻辑检查,又能够在测试完成后恢复现场,不会留下"后遗症"; -->使用Spring测试套件,Spring会在你验证后,自动回滚对数据库的操作,保证数据库的现场不被破坏,因此重复测试不会发生问题! 不方便对数据操作正确性进行检查 假如我们向登录日志表插入了一条成功登录日志,可是我们却没有对t_login_log表中是否确实添加了一条记录进行检查。一般情况下,我们可能是打开数据库,肉眼观察是否插入了相应的记录,但这严重违背了自动测试的原则。试想在测试包括成千上万个数据操作行为的程序时,如何用肉眼进行检查? -->只要你继承Spring的测试套件的用例类,你就可以通过jdbcTemplate在同一事务中访问数据库,查询数据的变化,验证操作的正确性! Spring提供了一套扩展于Junit测试用例的测试套件,使用这套测试套件完全解决了以上四个问题,让我们测试Spring的应用更加方便。现在我的项目中已经完成摒弃Junit,而采用Spring的测试套件,确实带来了很大的便利。严重推荐Springer使用这个测试套件。这个测试套件主要由org.springframework.test包下的若干类组成,使用简单快捷,方便上手。 ** 最后讲spring 的 测试套件:** 1.显示基类,其实就是用来加载配置文件的 @RunWith(SpringJUnit4ClassRunner.class) //使用junit4进行测试@ContextConfiguration({"/app*.xml","/spring/app*.xml","/spring/service/app*.xml"}) //加载配置文件 public class BaseJunit4Test { } 接着是我们自己的测试类 public class UserAssignServiceTest extends BaseJunit4Test{ @Resource //自动注入,默认按名称 private UserAssignService userAssignService; @Test //标明是测试方法 @Transactional //标明此方法需使用事务 @Rollback(false) //标明使用完此方法后事务不回滚,true时为回滚 public void testInsertUserAssign() { for(int i=0;i<10;i++){ UserAssign u=new UserAssign(); u.setAmount("7"); u.setCity(2); u.setProvince(1); u.setCompany("宜信"); u.setCreate_date(DateUtil.getCurrentTimeSecond()); u.setCreator(0); u.setEmail("1133@163.com"); u.setOper_date(DateUtil.getCurrentTimeSecond()); u.setPosition("工人"); u.setOperator(0); u.setQudao("2"); u.setUsername("张"+i); userAssignService.insertUserAssign(u); Assert.assertNotNull(u.getId()); } } }

2014-02-24 · 1 min · 88 words · -

aws-cli

aws-cli install # archlinux pacman -Sy aws-cli # macos https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html aws console> iam> user> w10n_ec2>create access key> cli> commands aws configure # default region name: ap-southeast-1 # default output format: json cat ~/.aws/credentials cat ~/.aws/config aws ec2 describe-instances --instance-ids i-xxxxxxxxxxxxxxxxx --query 'Reservations[*].Instances[*].{ID:InstanceId,State:State.Name}' --output table

2014-02-24 · 1 min · 44 words · -

spring MVC 返回JSON数据(Spring3.0 MVC+Jackson+AJAX)

spring MVC 返回JSON数据 (Spring3.0 MVC+Jackson+AJAX) 本文本的框架为:SpringMVC 3.2.3 \ jackson 1.9.2 传统的返回JSON格式的AJAX,用的方法一般是: 在后台先把数据(Object)封装成JSON数据,再用HttpServletResponse返回。 本示例中,SpringMVC可直接支持JSON格式数据的返回。具体如下。 1、JAR包: SPRINGMVC包需的包,另外还需JACKSON的两个包。 jackson-core-asl-1.9.2.jar jackson-mapper-asl-1.9.2.jar 2、spring-servlet.xml中加入: Java代码 <img alt="收藏代码" src="http://angelbill3.iteye.com/images/icon_star.png" /> <!- 返回JSON模版 -> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" > <property name="messageConverters"> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" /> </list> </property> </bean> 我们在SPRING的配置中加入了一个新的适配器: AnnotationMethodHandlerAdapter,通过这个适配器,我们配置了一个属性,messageConverters,其中mappingJacksonHttpMessageConverter这个Bean,它就是用来处理json数据转换的。 注: 我的项目中没有乱码现象,这样配即可,若有乱码现象,可以在MappingJacksonHttpMessageConverter的BEAN中配置supportedMediaTypes属性,是用于解决返回的乱码问题。 3、Controller中的使用 Java代码 <img alt="收藏代码" src="http://angelbill3.iteye.com/images/icon_star.png" /> @Controller public class SelectController { @Resource private TypeService typeService; @RequestMapping("/type") @ResponseBody public Object type(){ List<Type> typelist = this.typeService.getTypeByParentid(Const.TYPE_DAILY); return typelist; } } 在SpringMVC中可以在Controller的某个方法上加**@ResponseBody**注解,表示该方法的返回结果直接写入HTTP response body中。 ...

2014-02-21 · 1 min · 129 words · -

Javascript 加载顺序

Javascript 加载顺序 Javascript加载顺序 http://www.benben.cc/blog/?p=9 最近经常看到别人提及Javascript脚本的加载顺序,看完之后虽略有所悟,但古人云"纸上得来终觉浅,绝知此事要躬行。“这句话云的好,所以我决定亲自测试一下,看看浏览器究竟是怎么加载脚本的。 先看html部分的代码: <script>alert("我是html根节点之外的内部脚本");</script> 再看header.js中的代码: 1 alert("我是header中src外部引用的脚本"); 接着是outer.js中的代码: document.write('<script type="text/javascript">'); document.write(‘alert(“我是header中通过外部通过document.write生成的脚本”)’); //document.write(’’); document.write(’’); 最后是body.js中的代码 1 alert("我是body中src外部引用的脚本"); 代码的输出顺序如下: alert("我是html根节点之外的内部脚本"); alert(“我是头部header里的内部脚本”); alert(“我是header中src外部引用的脚本”); alert(“我是header中通过外部通过document.write生成的脚本”); alert(“我是页面body里的内部脚本”); alert(“我是body中src外部引用的脚本”); alert(“我是html根节点之外的内部脚本”); 最后只有点击按钮才会触发alert(‘我是body中的按钮,这是我自己绑定的事件’); 刚开始看完代码后你觉得加载顺序如何呢?其实很简单,浏览器加载的时候完全是按照自上而下顺序加载的,遇到外部引用就暂时跳出到外部js中执行,执行完毕后返回跳出的位置继续向下执行,而且经测试可以看到,按钮是在body.js执行完毕后才显示在页面中的,这也证实了浏览器是顺序加载的。 这里需要说明两点: 浏览器根节点之外是不允许有任何元素的,在这里我们只是为了判断加载顺序才写了不符合规矩的代码,这一点可以在chrome的调试中看到报错。 outer.js中通过document.write再次引用外部js的那一行我已经做了注释,虽然此方法有许多人证实可行,但是在我的环境下会报脚本错误,而且这样做会引起浏览器加载顺序的不兼容 (详情可见: Javascript加载顺序的BUG) ,因此在实际应用中若非迫不得已还是少用为妙。

2014-02-21 · 1 min · 35 words · -

H2 Database

H2 Database H2的简单使用 H2不依赖与任何Jar包,使用H2时,只需要将H2的Jar包添加到classpath中即可。 Xml代码 <img alt="收藏代码" src="http://puroc.iteye.com/images/icon_star.png" /> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.3.171</version> </dependency> **配置数据源: ** 通过spring jdbc来访问H2,下面是spring的配置,在这里我使用的是H2的in-memery模式。 Xml代码 <img alt="收藏代码" src="http://puroc.iteye.com/images/icon_star.png" /> <bean id="dataSource4H2" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="org.h2.Driver" /> <property name="url" value="jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;IGNORECASE=TRUE;MODE=MySQL" /> <property name="username" value="test" /> <property name="password" value="test" /> </bean> <bean id="jdbcTemplate4H2" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource"> <ref bean="dataSource4H2" /> </property> </bean> H2的URL可以支持很多参数的设置,具体可以参看H2的官方网站http://www.h2database.com/html/features.html 我这里的参数配置说明如下: a) jdbc:h2:mem:test: 代表用内存来存储数据。mem:后面的为数据库名称。 b) DB_CLOSE_DELAY=-1: 代表当JVM停止时才关闭H2数据库。 c) IGNORECASE=TRUE: 不区分大小写。 d) MODE=MySQL: H2本身支持的是标准的SQL,但实际上不同的数据库之间存在一些差别,H2为了适配不同的数据库,可以在URL中添加MODE这个参数,我们使用的是MySQL数据库,所以MODE=MySQL ...

2014-02-21 · 1 min · 93 words · -

D3

D3 D3 是最流行的可视化库之一,它被很多其他的表格插件所使用。它允许绑定任意数据到DOM,然后将数据驱动转换应用到Document中。你可以使用它用一个数组创建基本的HMTL表格,或是利用它的流体过度和交互,用相似的数据创建惊人的SVG条形图。D3-js D3.JS 基于javascript的图表展示库 先什么都不说。一起来看看d3.js神奇效果。 打开https://github.com/mbostock/d3/wiki/Gallery 这里有很多d3.js的Demo。 这个东西图表确实很不错吧? 简单介绍之前 先说明一点东西。 d3.js 只适合现代浏览器, (意思是说它对IE8已经IE8以下版本支持不好) 。但对IE9,chrome,FireFox,Opera 和基于webkit的苹果浏览器Safari都能支持。 图标是基于矢量图形的,采用svg进行画图。所以在了解d3.js之前你需要知道svg有关知识。看看这个就够了http://www.w3school.com.cn/svg/index.asp 如果你用d3.js,我就当你是一个有点点经验的程序猿了,不是菜鸟,所以。。。。懂一点Jquery那是必须的。。。 本系列博客将根据官方文档的介绍顺序来写。 重要的一点,本人也是一边学一边写,出现点错误是不可避免。若有发现,请指出。在博客后面留言就可以了。谢谢! 争取每周末更新两篇。(希望了解更多可点击此处) 好吧。有了以上说明,先下载一个d3.js (连js库都没有能说个j8) 下载地址http://d3js.org/d3.v3.zip 下载好了?? 国际惯例 Hello World <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Hello World</title> <script type="text/javascript" src="d3.v3.js"></script> </head> <body> </body> <script type="text/javascript"> function helloworld(){ d3.select("h1").html("Hello D3.js !"); /* 看到这个是不是觉得和Jquery很相似? d3的选择器使用Jquery差不多,当然没有Jquery那么强大了, 这就是为什么我在开篇会提到jquery,如果对Jquery有一定的了解那么 关于d3的选择器你也就会用了。 */ }; helloworld(); /*啰嗦一下,有点Jquery经验的请无视。 helloworld这个方法之所以在body标签后调用而不是在head标签中 是因为浏览器解析html文档 是按顺序解析,如果写在head标签中,那么当浏览器解析到d3.select("h1")时, d3会发现在解析过的html中找不到h1 DOM节点 也就无法正确选择到了。 至于怎么写在head标签中又可以在整个Html都加载后再执行请自行Google. */ </script> </html>

2014-02-20 · 1 min · 78 words · -

静态页面html调用静态页面html的内容几种方法

静态页面html调用静态页面html的内容几种方法 静态页面html调用静态页面html的内容几种方法 简介: 在论坛中常常有网友问到,可以在一个html的文件当中读取另一个html文件的内容吗?答案是确定的,而且方法不只一种,在以前我只会使用iframe来引用,后来发现了另外的几种方法,那今天就总结这几种方法让大家参考一下,本人觉得第三种方式较好! 1.IFrame引入,看看下面的代码 你会看到一个外部引入的文件,但会发现有一个类似外框的东西将其包围,可使用 但你会发现还会有点问题,就是背景色不同,你只要在引入的文件import.htm中使用相同的背景色也可以,但如果你使用的是IE5.5的话,可以看看这篇关于透明色的文章 如果想引入的文件过长时不出现滚动条的话在import.htm中的body中加入scroll=no 2.方式 3.Behavior的download方式

2014-02-12 · 1 min · 10 words · -

java – volatile

java – volatile volatile 关键字, Volatile [‘vɑlətl] volatile关键字告诉编译器,去内存里面取最新值。但是,即使取的是内存里的所谓“最新”值,事实上并不能保证最新。 voldatile关键字首先具有“易变性”,声明为volatile变量编译器会强制要求读内存,相关语句不会直接使用上一条语句对应的的寄存器内容,而是重新从内存中读取。 其次具有”不可优化”性,volatile告诉编译器,不要对这个变量进行各种激进的优化,甚至将变量直接消除,保证代码中的指令一定会被执行。 最后具有“顺序性”,能够保证Volatile变量间的顺序性,编译器不会进行乱序优化。不过要注意与非volatile变量之间的操作,还是可能被编译器重排序的。 需要注意的是其含义跟原子操作无关,比如: volatile int a; a++; 其中a++操作实际对应三条汇编指令实现”读-改-写“操作 (RMW) ,并非原子的。 思考: bool 类型是不是适合使用, 不会出问题。 不同编程语言中 voldatile 含义与实现并不完全相同, Java 语言中 voldatile 变量可以被看作是一种轻量级的同步, 因其还附带了 acuire 和 release 语义。 实际上也是从 JDK5 以后才通过这个措施进行完善,其 volatile 变量具有 synchronized 的可见性特性, 但是不具备原子特性。 Java语言中有 volatile 修饰的变量, 赋值后多执行了一个 load addl $0x0, (%esp) 操作, 这个操作相当于一个 lock 指令, 就是增加一个完全的内存屏障指令, 这点与C++实现并不一样。 volatile 的读性能消耗与普通变量几乎相同, 但是写操作稍慢 ,因为它需要在本地代码中插入许多内存屏障指令来保证处理器不发生乱序执行。 Java 实践中仅满足下面这些条件才应该使用 volatile 关键字: 变量写入操作不依赖变量当前值,或确保只有一个线程更新变量的值 (Java可以,C++仍然不能) 该变量不会与其他变量一起纳入 变量并未被锁保护 C++中voldatile等于插入编译器级别屏障,因此并不能阻止CPU硬件级别导致的重排。C++11 中volatile语义没有任何变化,不过提供了std::atomic工具可以真正实现原子操作,而且默认加入了内存屏障 (可以通过在store与load操作时设置内存模型参数进行调整,默认为std::memory_order_seq_cst) 。 ...

2014-02-12 · 3 min · 533 words · -