SuperCSV

SuperCSV Super CSV是一个速度奇快、免费跨平台的 CVS 格式数据的读写库,可以方便的处理对象、Map、列表的读写操作,以及自动化的类型转换和数据检查功能。 InputStreamReader freader = new InputStreamReader(new FileInputStream( new File("csv/test1.csv")), "GB2312"); ICsvBeanReader reader = new CsvBeanReader(freader, CsvPreference.EXCEL_PREFERENCE); //获取头部信息 String[] headers = reader.getCSVHeader(true); //获取数据部分 UserBean bean = null; while ((bean = reader.read(UserBean.class, headers, UserBean.readProcessors)) != null) { System.out.print(bean.getName() + "t"); System.out.print(bean.getAge() + "t"); System.out.print(bean.getBirthday() + "t"); System.out.println(bean.getAddress()); } java csv: Commons CSV (Sandbox) Skife CSV opencsv GenJava-CSV Super Csv JavaCSV CSVBeans

2012-08-28 · 1 min · 63 words · -

ArrayBlockingQueue

ArrayBlockingQueue ArrayBlockingQueue 是一个基于数组的阻塞队列实现,此队列按 FIFO (先进先出) 原则对元素进行排序, 在 ArrayBlockingQueue 内部,维护了一个定长数组,以便缓存队列中的数据对象,这是一个常用的阻塞队列,除了一个定长数组外,ArrayBlockingQueue内部还保存着两个整形变量,分别标识着队列的头部和尾部在数组中的位置。 ArrayBlockingQueue 在生产者放入数据和消费者获取数据,都是共用同一个锁对象,由此也意味着两者无法真正并行运行,这点尤其不同于 LinkedBlockingQueue, 按照实现原理来分析 ArrayBlockingQueue 完全可以采用分离锁,从而实现生产者和消费者操作的完全并行运行。Doug Lea 之所以没这样去做,也许是因为 ArrayBlockingQueue 的数据写入和获取操作已经足够轻巧,以至于引入独立的锁机制,除了给代码带来额外的复杂性外,其在性能上完全占不到任何便宜。 ArrayBlockingQueue 和 LinkedBlockingQueue 间还有一个明显的不同之处在于,前者在插入或删除元素时不会产生或销毁任何额外的对象实例,而后者则会生成一个额外的 Node 对象。这在长时间内需要高效并发地处理大批量数据的系统中,其对于 GC 的影响还是存在一定的区别。而在创建 ArrayBlockingQueue 时,我们还可以控制对象的内部锁是否采用公平锁,默认采用非公平锁。 队列的头部是在队列中存在时间最长的元素。队列的尾部是在队列中存在时间最短的元素。新元素插入到队列的尾部,队列检索操作则是从队列头部开始获得元素。 这是一个典型的 “有界缓存区”,固定大小的数组在其中保持生产者插入的元素和使用者提取的元素。一旦创建了这样的缓存区,就不能再增加其容量。试图向已满队列中放入元素会导致放入操作受阻塞;试图从空队列中检索元素将导致类似阻塞。 此类支持对等待的生产者线程和使用者线程进行排序的可选公平策略。默认情况下,不保证是这种排序。然而,通过将公平性 (fairness) 设置为 true 而构造的队列允许按照 FIFO 顺序访问线程。公平性通常会降低吞吐量,但也减少了可变性和避免了"不平衡性"。 ArrayBlockingQueue 在构造时需要指定容量,并可以选择是否需要公平性,如果公平参数被设置true,等待时间最长的线程会优先得到处理 (其实就是通过将 ReentrantLock 设置为 true 来达到这种公平性的: 即等待时间最长的线程会先操作) 。通常,公平性会使你在性能上付出代价,只有在的确非常需要的时候再使用它。它是基于数组的阻塞循环队列,此队列按 FIFO (先进先出) 原则对元素进行排序。 PriorityBlockingQueue PriorityBlockingQueue 是一个带优先级的队列,而不是先进先出队列。元素按优先级顺序被移除,该队列也没有上限 (看了一下源码,PriorityBlockingQueue 是对 PriorityQueue 的再次包装,是基于堆数据结构的,而 PriorityQueue 是没有容量限制的,与ArrayList一样,所以在优先阻塞队列上put时是不会受阻的。虽然此队列逻辑上是无界的,但是由于资源被耗尽,所以试图执行添加操作可能会导致 OutOfMemoryError) ,但是如果队列为空,那么取元素的操作take就会阻塞,所以它的检索操作take是受阻的。另外,往入该队列中的元素要具有比较能力。 最后,DelayQueue (基于PriorityQueue来实现的) 是一个存放Delayed 元素的无界阻塞队列,只有在延迟期满时才能从中提取元素。该队列的头部是延迟期满后保存时间最长的 Delayed 元素。如果延迟都还没有期满,则队列没有头部,并且poll将返回null。当一个元素的 getDelay(TimeUnit.NANOSECONDS) 方法返回一个小于或等于零的值时,则出现期满,poll就以移除这个元素了。此队列不允许使用 null 元素。 下面是延迟接口: ...

2012-08-26 · 2 min · 366 words · -

Java 线程池, thread pool, Executors, ThreadPoolExecutor

Java 线程池, thread pool, Executors, ThreadPoolExecutor Executors ThreadPoolExecutor ExecutorService 在 Java 1.5 引入 ExecutorService 之后,基本上已经不建议直接创建 Thread 对象,而是统一使用 ExecutorService。毕竟从接口的易用程度上来说 ExecutorService 就远胜于原始的 Thread,更不用提 java.util.concurrent 提供的数种线程池,Future 类,Lock 类等各种便利工具。 在操作系统中,线程是一个非常重要的资源,频繁创建和销毁线程会降低系统性能。Java 线程池原理类似于数据库连接池,目的就是帮助我们实现线程复用,减少频繁创建和销毁线程。ThreadPoolExecutor Executors Executors 提供了一些创建线程池的工具方法。 ExecutorService es = Executors.newSingleThreadExecutor() 源码实现: new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()) corePoolSize 和maximumPoolSize都为1,也就是创建了一个固定大小是1的线程池,workQueue是 new LinkedBlockingQueue<Runnable>() 也就是队列的大小是Integer.MAX_VALUE,可以认为是队列的大小不限制。 由此可以得出通过该方法创建的线程池,每次只能同时运行一个线程,当有多个任务同时提交时,那也要一个一个排队执行。 Executors.newFixedThreadPool(int nThreads) 源码实现: new ThreadPoolExecutor(nThreads, nThreads, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()) 类似Executors.newSingleThreadExecutor()也是创建了一个固定大小的线程池,但是可以指定同时运行的线程数量为nThreads。 Executors.newCachedThreadPool() 源码实现: new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue()) ...

2012-08-26 · 4 min · 704 words · -

开源许可证, Open Source License, BSD, MIT, Apache,GPL

开源许可证, Open Source License, BSD, MIT, Apache,GPL 开源许可证(Open Source License) 由宽松到严紧排序,常用的开源许可证有: MIT BSD Apache LGPL GPL MIT、BSD 许可证都源自大学,体现了简单、开放和包容的特点。 MIT、BSD、Apache 三者都支持闭源的后续开发。 GPL、LGPL 传染性开源,编译的代码里用了这里的代码,都必须开源。 MIT 分发软件时,必须保留原始的许可证声明,与 BSD (二条款版) 基本一致。 https://opensource.org/licenses/mit-license.php 来源于大学,MIT 许可证是史上最为简洁和慷慨(permissive)的开源协议之一。作者只想保留版权, 而无任何其他了限制. 也就是说, 你必须在你的发行版里包含原许可协议的声明, 无论你是以二进制发布的还是以源代码发布的。 简言之: 用户可以拿你的代码做任何想做的事情 用户在项目副本中要包含版权声明和许可声明 你无需承担任何责任 应用案例有:JQuery、Rails 等 BSD (二条款版) 分发软件时,必须保留原始的许可证声明。 来源于大学,BSD可证与MIT差不多,也非常简单、慷慨。 BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。 但”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件: 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。 BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对 商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。 BSD (三条款版) 分发软件时,必须保留原始的许可证声明。不得使用原始作者的名字为软件促销。 Apache 2 分发软件时,必须保留原始的许可证声明。凡是修改过的文件,必须向用户说明该文件修改过;没有修改过的文件,必须保持许可证不变。 来自apache,类似MIT许可证,但它重视专利权。 Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足的条件也和BSD类似: 需要给代码的用户一份Apache Licence 如果你修改了代码,需要再被修改的文件中说明。 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。 如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改。 Apache Licence也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。 应用案例有:Apache 家族、SVN、NuGet 等等。 ...

2012-08-25 · 1 min · 164 words · -

Java 反编译

Java 反编译 Java Decompiler “Java Decompiler”, 由 Pavel Kouznetsov开发,目前最新版本为0.2.5. 它由 C++开发,并且官方可以下载windows、linux和苹果Mac Os三个平台的可执行程序。 http://jd.benow.ca/ http://www.oschina.net/p/java+decompiler DJ Java Decompiler(不免费) DJ Java Decompiler 是个反编译的工具,可以将编译过的 CLASS 文件编译还原成为 Java 原始文件,并且不需要额外安装 JVM (Java Virtual Machine) 或是JDK 的工具模组即可使用。不单如此,它也兼具有 Java 程序编辑工具的角色,提供一些辅助功能便于程序撰写与修改。 DJ Java Decompiler 在 Windows 95、Windows 98、Windows 2000、Windows XP、Windows 2003、Windows Vista、 Windows 7等多种平台上均可以运行的 Java 反编译器和汇编器。DJ Java Decompiler 能够反复编译复杂的 Java 小程序和二进制文件,生产出准确的源代码。它不仅是 Java 反编译器和汇编器,也是一个功能齐全的使用有着着色语法的图形用户界面的 Java 编辑器。 这款软件十分适合用来学习编程,而且它能够让用户保存、打印、编辑和编译生成的 Java 代码。 另外,DJ Java Decompiler 是一个独立的 windows 应用程序,它不要求安装Java,所以运行使用相当方便,大家不妨试一下。 个人觉得比较好的功能有: 可以直接打开jar 档, 查看jar 包里原文件 ...

2012-08-24 · 1 min · 75 words · -

ArrayList Capacity

ArrayList Capacity http://topic.csdn.net/t/20061223/10/5250896.html 任何一个 ArrayList 对象都有一个 capacity 属性,用来指示该 ArrayList 的容量,用"容量"这个词容易引起像本贴楼主那样的误解,我觉得用"容纳能力"比较贴切。 我们知道ArrayList的内部是采用数组来存储元素的,由于java数组都是定长的,所以这个数组的大小一定是固定的,这个大小就是capacity。我们可以肯定capacity一定是大于或等于ArrayList的size,那么当size不断增加到了要超过capacity的时候,ArrayList就不得不重新创建新的capacity来容纳更多的元素,这时需要首先建立一个更长的数组,将原来的数组中的元素复制到新数组中,再删除原来的数组。可见当ArrayList越来越大时,这种操作的消耗也是越来越大的。 为了减少这种不必要的重建capacity的操作,当我们能肯定ArrayList大致有多大 (或者至少会有多大) 时,我们可以先让ArrayList把capacity设为我们期望的大小,以避免多余的数组重建。 假设ArrayList自动把capacity设为10,每次重建时将长度递增原来的三分之二,那么当我们需要大约存储50个元素到ArrayList中时,就会大约需要重建数组4次,分别是在增加第11、第17、第26、第39个元素的时候进行的。如果我们一开始就让ArrayList的capacity为50,那么不需要任何数组重建就能完成所有插入操作了。 java允许我们在构造ArrayList的同时指定capacity,如new ArrayList(50),也允许在以后将它设得更大,而增大capacity就是使用ensureCapacity()方法。注意: capacity只能比原来的更大,而不能比原来的更小,否则java会忽略该操作。ArrayList的初始默认capacity为10,所以给capacity指定小于10的整数是毫无意义的。 最后说说ArrayList的size,前面说过,size一定小于等于capactiy,而且更重要的是,访问超过size的位置将抛出异常,尽管这个位置可能没有超过capacity。ensureCapacity()只可能增加capacity,而不会对size有任何影响。要增加size,只能用add()方法。 https://blog.csdn.net/vandavidchou/article/details/104306445

2012-08-20 · 1 min · 20 words · -

JAVA 正则表达式 分组与捕获

JAVA 正则表达式 分组与捕获 import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Fenzhu { public static void main(String[] args) { Pattern p = Pattern.compile("(/d{3,5})([a-z]{2})"); String s = "123aa-34345bb-234cc-00"; Matcher m = p.matcher(s); while(m.find()) { System.out.println("m.group():"+m.group()); //打印所有 System.out.println("m.group(1):"+m.group(1)); //打印数字的 System.out.println("m.group(2):"+m.group(2)); //打印字母的 System.out.println(); } System.out.println("捕获个数:groupCount()="+m.groupCount()); } } 1 概述 1.1 什么是捕获组 捕获组就是把正则表达式中子表达式匹配的内容,保存到内存中以数字编号或显式命名的组里,方便后面引用。当然,这种引用既可以是在正则表达式内部,也可以是在正则表达式外部。 捕获组有两种形式,一种是普通捕获组,另一种是命名捕获组,通常所说的捕获组指的是普通捕获组。语法如下: 普通捕获组: (Expression) 命名捕获组: (?Expression) 普通捕获组在大多数支持正则表达式的语言或工具中都是支持的,而命名捕获组目前只有.NET、PHP、Python等部分语言支持,据说Java会在7.0中提供对这一特性的支持。上面给出的命名捕获组的语法是.NET中的语法,另外在.NET中使用(?’name’Expression)与使用(?Expression)是等价的。在PHP和Python中命名捕获组语法为: (?PExpression)。 ...

2012-08-19 · 3 min · 574 words · -

java正则表达式的中的问号

java正则表达式的中的问号 java正则表达式中的 ? 是惰性匹配,具体的看下面的例子: Pattern pattern = Pattern.compile("<.*>"); Matcher matcher =pattern.matcher("主页"); System.out.println(matcher.replaceAll("")); 将输出空,因为没有加问号,此时进行的是最长匹配(贪婪匹配) 可以做如果更改 Pattern pattern = Pattern.compile("<.*>"); Matcher matcher =pattern.matcher("主页[color=red]</a[/color]"); System.out.println(matcher.replaceAll("")); 将输出: 主页</a 如果把程序修改为: Pattern pattern = Pattern.compile("<.*?>"); Matcher matcher =pattern.matcher("主页"); System.out.println(matcher.replaceAll("")); 将输出: 主页 不加 ? 表示贪婪,加 ? 表示勉强,区别如下: 勉强是从左边一个一个地吃直到匹配为止,不加 ?的是一口吃掉整个字符串,然后从最后一个一个地吐出来直到匹配为止 字符串 a=====b=====b=== a.*b 将匹配满足条件最长的字符串 a=====b=====b 工作方式: 首先将: a=====b=====b=== 全部吃掉,从右边一个一个地吐出来 1. a=====b=====b=== 不匹配,吐出一字符 a=====b=====b== 不匹配,再吐出一字符 a=====b=====b= 不匹配,再吐出一字符 a=====b=====b 匹配了,结束。如果再不匹配继续吐,直到没有字符了,匹配失败 a.*? 将匹配满足条件最短的字符串 a=====b 工作方式: 从左边一个一个地吃掉字符 ...

2012-08-19 · 1 min · 83 words · -

Java正则表达式

Java正则表达式 大写字母和数字组成的10个字符 private static final Pattern pattern = Pattern.compile("([A-Z]|[0-9]){10}"); pattern.matcher("abcd1234567").matches(); 3位数字 d{3} 众所周知,在程序开发中,难免会遇到需要匹配、查找、替换、判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力。因此,学习及使用正则表达式,便成了解决这一矛盾的主要手段。 大家都知道,正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符 (例如字符a到z) 以及特殊字符 (元字符) 组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。 自从jdk1.4推出java.util.regex包,就为我们提供了很好的JAVA正则表达式应用平台。因为正则表达式是一个很庞杂的体系,所以我仅例举些入门的概念,更多的请参阅相关书籍及自行摸索。 // 反斜杠 /t 间隔 (’/u0009’) /n 换行 (’/u000A’) /r 回车 (’/u000D’) /d 数字 等价于[0-9] /D 非数字 等价于[^0-9] /s 空白符号 [/t/n/x0B/f/r] /S 非空白符号 [^/t/n/x0B/f/r] /w 单独字符 [a-zA-Z_0-9] /W 非单独字符 [^a-zA-Z_0-9] /f 换页符 /e Escape /b 一个单词的边界 /B 一个非单词的边界 /G 前一个匹配的结束 ^为限制开头 ^java 条件限制为以Java为开头字符 $为限制结尾 java$ 条件限制为以java为结尾字符 . 条件限制除/n以外任意一个单独字符 java.. 条件限制为java后除换行外任意两个字符 加入特定限制条件「[]」 [a-z] 条件限制在小写a to z范围中一个字符 [A-Z] 条件限制在大写A to Z范围中一个字符 [a-zA-Z] 条件限制在小写a to z或大写A to Z范围中一个字符 [0-9] 条件限制在小写0 to 9范围中一个字符 [0-9a-z] 条件限制在小写0 to 9或a to z范围中一个字符 [0-9[a-z]] 条件限制在小写0 to 9或a to z范围中一个字符(交集) ...

2012-08-19 · 3 min · 538 words · -

Debian系统回收站无法清空解决办法

Debian系统回收站无法清空解决办法 Debian系统回收站无法清空: (1) 切换到root身份 su - (2) chown -R wiloon /home/wiloon/.local/share/Trash (3) 退出su权限 exit (4) chmod -R +w /home/wiloon/.local/share/Trash (5) 接下来就可以去清空回收站了 rm -rf /home/wiloon/.local/share/Trash/files/*

2012-08-16 · 1 min · 24 words · -

pacakge-info.java

pacakge-info.java http://strong-life-126-com.iteye.com/blog/806246 翻看以前的笔记,看到一个特殊的java文件: pacakge-info.java,虽然有记录,但是不全,就尝试着追踪一下该问题, 分享一下流水账式的结果。 首先,它不能随便被创建。在Eclipse中, package-info文件不能随便被创建,会报"Type name is notvalid"错误,类名无效,Java变量定义规范是: 字母、数字、下划线,还有那个不怎么常用的$符号 (顺带说下,Java是支持中文名称的变量,习惯挑战的同学可以尝试下,分享一下这方面的经验) ,这个中划线可不再之列,那怎么创建这个文件呢? 很简单,用记事本创建一个,然后拷贝进去再改一下就成了,更直接的办法就是从别的项目中拷贝过来一个,这更方便。 其次,服务的对象很特殊。一个类是一类或一组事物的描述,比如Dog这个类,就是描述旺财的,那package-info这个类是描述啥的呢?它总要有一个被描述或被陈述的对象,它是描述和记录本包信息。 最后,类不能带有public、private访问权限。package-info.java再怎么特殊,也是一个类文件,也会被编译成package-info.class,但是在package-info.java中只能声明默认访问权限的类,也就是友好类。 其实还有几个特殊的地方,比如不可以继承,没有接口,没有类间关系 (关联、组合、聚合等等) 等。 这个文件的特殊性说完了,那再说说它有什么作用,它有三个作用: 为标注在包上Annotation提供便利; 声明友好类和包常量; 提供包的整体注释说明。 我们来建立一个项目演示这三个作用,建立一个package-info的Java Project,在com.company包三个类:package-info.java 是我们重点关注的,PkgAnnotation.java是一个标注在包上的注解定义,Client.java模拟业务操作类。其结构如下图: 为标注在包上Annotation提供便利 首先定义一个包类型的注解,它只能放置的一个包上: Java代码 /** 定义只能标注在package上的注解 */ @Target(ElementType.PACKAGE) @Retention(RetentionPolicy.RUNTIME) public @interface PkgAnnotation { } 再定义一个package-info类,这个是一个特殊的类,先看代码: Java代码 @PkgAnnotation package com.company; 很简单,就这么个文件,里面啥都没有,就这两句话,没有class类,没有常变量声明。接着写一个模拟交易类,代码如下: Java代码 public class Client { public static void main(String[] args) { //可以通过I/O操作或配置项获得包名 String pkgName = “com.company”; Package pkg = Package.getPackage(pkgName); //获得包上的注解 Annotation[] annotations = pkg.getAnnotations(); //遍历注解数组 for(Annotation an:annotations){ if(an instanceof PkgAnnotation){ ...

2012-08-15 · 1 min · 156 words · -

QCad

QCad QCad QCad是开放源代码的LINUX CAD软件,它使用户能够在LINUX中快速、稳定、方便的使用CAD。使用QCad的用 QCAD界面户不用有CAD编程的基础知识就能够轻松使用QCad。 Qcad 是一个用于 2D 和制图的计算机辅助设计 (CAD) 软件包。它对 Linux, Mac OS X, Unix 和 Microsoft Windows 可用。Qcad 被 RibbonSoft 开发和已经在 GPL 下分发。QCad 2,设计来"使 Qcad 更多产的、更加用户友好的、更灵活的和用其它产品增加了它的兼容性"开发在2002年开发。很多用途后面的界面和概念是与AutoCAD 相同的,尽管可能比在 Qcad 中理解更容易。Qcad 是对 Linux 可用的非常少的 OpenSource CAD 包,和的确是最全功能的。QCad 在内部使用 AutoCAD DXF 文件格式和保留和输入文件。文件能够以很多格式输出,但是明显缺少的是 VRML 和 AVG 两者。

2012-08-07 · 1 min · 45 words · -

VGA线

VGA线 VGA线本来含有14根线15孔 (第9针可以作给usb供电线,也可以作盲针即: 空脚) ,其中5根传输VGA主信号,还有4根主要数据信号线,还有CLK 线DAT线地线等。但是从传输VGA视频的角度,很多线材生产商的工程师认为其他4根没有作用,将其省略。所以有类似没有电视机数据反馈的说法。其实是偷工减料!这就是所谓VGA线3+2,3+4,3+6,3+9的说法来历,都是指内部线的数量! 3+几是指红、绿、蓝每根线都有单独的地线屏蔽网的叫3+几。 3+2是指红、绿、蓝+行、场信号线 (纯平显示器适用,有的液晶显示器可能会出现图像虚、重影等,不适用大屏液晶、电视和投影) 3+4是指红、绿、蓝+ 行、场+数字地+屏幕与主机之间的地址码1根 (多数液晶适用,但不适合定位屏幕数据的类型液晶等显示设备,不适用投影) 3+6是指红、绿、蓝+ 行、场+数字地+屏幕与主机之间的地址码1根+反馈定位屏幕的数据信号线+时钟线 (适用绝大多数显示设备,适用投影)

2012-08-07 · 1 min · 15 words · -

img width

img width 标签的 height 和 width 属性设置图像的尺寸。 提示: 为图像指定 height 和 width 属性是一个好习惯。如果设置了这些属性,就可以在页面加载时为图像预留空间。如果没有这些属性,浏览器就无法了解图像的尺寸,也就无法为图像保留合适的空间,因此当图像加载时,页面的布局就会发生变化。 (下面的篇幅详细解释了这个观点) 。 提示: 请不要通过 height 和 width 属性来缩放图像。如果通过 height 和 width 属性来缩小图像,那么用户就必须下载大容量的图像 (即使图像在页面上看上去很小) 。正确的做法是,在网页上使用图像之前,应该通过软件把图像处理为合适的尺寸。

2012-07-22 · 1 min · 27 words · -

linux game alien arena

linux game alien arena Alien Arena 2011 7.50版本发布,这款开源的游戏新版本带来了以下特色:新增的物理引擎 ,改善的游戏IRC客户端,GUN的自动化安装工具,以便Linux/Unix/Macos下的安装,新的True Type字体支持,2张全新的地图,1张修改善的地图,著名音乐人Paul Joyce带来的全新游戏音乐. Alien Arena介绍: 一款免费开源的第一人称射击游戏(FPS),使用改动的id Tech2,行动和武器方面非常相似<雷神之锤II>,也拥有全部的跳跃技巧 更多的介绍:http://zh.wikipedia.org/zh/Alien_Arena 1 编译: sudo apt-get build-dep alien-arena 2 安装额外的依赖 sudo apt-get install libode-dev 3 安装 ./configure make sudo make install 4 打开终端,输入crx,开始享受吧

2012-07-15 · 1 min · 37 words · -

CSRF/XSRF

CSRF/XSRF CSRF (Cross-site request forgery跨站请求伪造,也被称成为"one click attack"或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本 (XSS) ,但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行 (因此对其进行防范的资源也相当稀少) 和难以防范,所以被认为比XSS更具危险性。攻击通过在授权用户访问的页面中包含链接或者脚本的方式工作。例如: 一个网站用户Bob可能正在浏览聊天论坛,而同时另一个用户Alice也在此论坛中,并且后者刚刚发布了一个具有Bob银行链接的图片消息。设想一下,Alice编写了一个在Bob的银行站点上进行取款的form提交的链接,并将此链接作为图片tag。如果Bob的银行在cookie中保存他的授权信息,并且此cookie没有过期,那么当Bob的浏览器尝试装载图片时将提交这个取款form和他的cookie,这样在没经Bob同意的情况下便授权了这次事务。 CSRF是一种依赖web浏览器的、被混淆过的代理人攻击 (deputy attack) 。在上面银行示例中的代理人是Bob的web浏览器,它被混淆后误将Bob的授权直接交给了Alice使用。 下面是CSRF的常见特性: 依靠用户标识危害网站 利用网站对用户标识的信任 欺骗用户的浏览器发送HTTP请求给目标站点 另外可以通过IMG标签会触发一个GET请求,可以利用它来实现CSRF攻击。风险在于那些通过基于受信任的输入form和对特定行为无需授权的已认证的用户来执行某些行为的web应用。已经通过被保存在用户浏览器中的cookie进行认证的用户将在完全无知的情况下发送HTTP请求到那个信任他的站点,进而进行用户不愿做的行为。 使用图片的CSRF攻击常常出现在网络论坛中,因为那里允许用户发布图片而不能使用JavaScript。贴图只是GET的方式,很多时候我们需要伪造POST的请求。一个办法是利用跨站,当然目标站点可能不存在跨站,这个时候我们可以从第三方网站发动攻击。 比如我要攻击一个存在问题的blog,那就先去目标blog留言,留下一个网址,诱其主人点击过来 (这个就要看你的忽悠本事咯:p) ,然后构造个HTML表单提交些数据过去。 多窗口浏览器就帮了一点忙。 多窗口浏览器 (firefox、遨游、MyIE……) 便捷的同时也带来了一些问题,因为多窗口浏览器新开的窗口是具有当前所有会话的。即我用IE登陆了我的Blog,然后我想看新闻了,又运行一个IE进程,这个时候两个IE窗口的会话是彼此独立的,从看新闻的IE发送请求到Blog不会有我登录的cookie;但是多窗口浏览器永远都只有一个进程,各窗口的会话是通用的,即看新闻的窗口发请求到Blog是会带上我在blog登录的cookie。 想一想,当我们用鼠标在Blog/BBS/WebMail点击别人留下的链接的时候,说不定一场精心准备的CSRF攻击正等着我们。

2012-07-15 · 1 min · 31 words · -

元胞自动机,Cellular Automaton

元胞自动机,Cellular Automaton http://baike.baidu.com/view/389880.htm 元胞自动机(Cellular Automaton,复数为Cellular Automata,简称CA,也有人译为细胞自动机、点格自动机、分子自动机或单元自动机)。是一时间和空间都离散的动力系统。散布在规则格网 (Lattice Grid)中的每一元胞(Cell)取有限的离散状态,遵循同样的作用规则,依据确定的局部规则作同步更新。大量元胞通过简单的相互作用而构成动态系统的演化。 不同于一般的动力学模型,元胞自动机不是由严格定义的物理方程或函数确定,而是用一系列模型构造的规则构成。凡是满足这些规则的模型都可以算作是元胞自动机模型。因此,元胞自动机是一类模型的总称,或者说是一个方法框架。其特点是时间、空间、状态都离散,每个变量只取有限多个状态,且其状态改变的规则在时间和空间上都是局部的。 具体解释 元胞自动机的构建没有固定的数学公式,构成方式繁杂,变种很多,行为复杂。故其分类难度也较大,自元胞自动机产生以来,对于元胞自动机分类的研究就是元胞自动机的一个重要的研究课题和核心理论,在基于不同的出发点,元胞自动机可有多种分类,其中,最具影响力的当属S. Wolfram在80年代初做的基于动力学行为的元胞自动机分类,而基于维数的元胞自动机分类也是最简单和最常用的划分。除此之外,在1990年,Howard A.Gutowitz提出了基于元胞自动机行为的马尔科夫概率量测的层次化、参量化的分类体系 (Gutowitz,H. A.,1990) 。下面就上述的前两种分类作进一步的介绍。同时就几种特殊类型的元胞自动机进行介绍和探讨S. Wolfrarm在详细分析研究了一维元胞自动机的演化行为,并在大量的计算机实验的基础上,将所有元胞自动机的动力学行为归纳为四大类 (Wolfram. S.,1986): ⑴平稳型:自任何初始状态开始,经过一定时间运行后,元胞空间趋于一个空间平稳的构形,这里空间平稳即指每一个元胞处于固定状态。不随时间变化而变化。 ⑵周期型: 经过一定时间运行后,元胞空间趋于一系列简单的固定结构 (Stable Patterns) 或周期结构 (Perlodical Patterns)。由于这些结构可看作是一种滤波器 (Filter) ,故可应用到图像处理的研究中。 ⑶混沌型: 自任何初始状态开始,经过一定时间运行后,元胞自动机表现出混沌的非周期行为,所生成的结构的统计特征不再变止,通常表现为分形分维特征。 ⑷复杂型: 出现复杂的局部结构,或者说是局部的混沌,其中有些会不断地传播。 分别描述 从另一角度,元胞自动机可视为动力系统,因而可将初试点、轨道、不动点、周期轨和终极轨等一系列概念用到元胞自动机的研究中,上述分类,又可以分别描述为 (谭跃进,1996;谢惠民,1994;李才伟、1997) ; ⑴均匀状态,即点态吸引子,或称不动点; ⑵简单的周期结构,即周期性吸引子,或称周期轨; ⑶混沌的非周期性模式,即混沌吸引子; ⑷这第四类行为可以与生命系统等复杂系统中的自组织现象相比拟,但在连续系统中没有相对应的模式。但从研究元胞自动机的角度讲,最具研究价值的具有第四类行为的元胞自动机,因为这类元胞自动机被认为具有"突现计算"(Emergent Computation) 功能,研究表明,可以用作广义计算机 (Universal Computer) 以仿真任意复杂的计算过程。另外,此类元胞自动机在发展过程中还表现出很强的不可逆 (lrreversibility) 特征,而且,这种元胞自动机在若干有限循环后,有可能会 “死"掉,即所有元胞的状态变为零。 应用 元胞自动机可用来研究很多一般现象。其中包括通信、信息传递 (Communicahon) 、计算 (Compulation) 、构造 (ConsTruction) 、生长 (Growth) 、复制 (Reproductionj、竞争 (Competition) 与进化 (Evolutio,]) 等 (Smith A.,1969;Perrier,J.Y.,1996) 。同时。它为动力学系统理论中有关秩序 (Ordering) 、紊动 (Turbulence) 、混沌 (Chaos) 、非对称 (Symmetry-Breaking) 、分形 (Fractality) 等系统整体行为与复杂现象的研究提供了一个有效的模型工具 (Vichhac。G,1984; Bennett,C,1985) 。 ...

2012-07-15 · 1 min · 121 words · -

size

size size 程序列出参数列表中各目标文件或存档库文件的段大小 — 以及总大小。默认情况下,对每个目标文件或存档库中的每个模块都会产生一行输出。 size foo wiloonwy@penguin:~/tmp$ size foo text data bss dec hex filename 1458 584 8 2050 802 foo 前三部分的内容是文本段、数据段和 bss 段及其相应的大小。然后是十进制格式和十六进制格式的总大小。最后是文件名。 size foo --format=SysV foo : section size addr .interp 28 792 .note.gnu.property 64 824 .note.gnu.build-id 36 888 .note.ABI-tag 32 924 .gnu.hash 28 960 .dynsym 168 992 .dynstr 130 1160 .gnu.version 14 1290 .gnu.version_r 32 1304 .rela.dyn 192 1336 .rela.plt 24 1528 .init 27 4096 .plt 32 4128 .text 405 4160 .fini 13 4568 .rodata 17 8192 .eh_frame_hdr 52 8212 .eh_frame 216 8264 .init_array 8 15848 .fini_array 8 15856 .dynamic 480 15864 .got 40 16344 .got.plt 32 16384 .data 16 16416 .bss 8 16432 .comment 18 0 .debug_aranges 48 0 .debug_info 140 0 .debug_abbrev 67 0 .debug_line 86 0 .debug_str 133 0 .debug_line_str 123 0 Total 2717

2012-07-12 · 1 min · 131 words · -

url转义字符

url 转义字符, urlencode url 转义字符, URL escape codes 对与通过get方式提交的url,浏览器在提交前首先根据http协议把参数及其值解析配对。而url的参数间是通过&分割的,这就是浏览器进行参数配置的分割依据。如果你的参数值中含有&等url特殊字符,那么你在服务器端就会拿到意想不到的值。所以必须对url的特殊字符进行转义。 编码的格式为: %加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII (16进制) 码值。例如 空格的编码值是"%20"。 url转义字符, URL特殊符号及编码 空格 URL中的空格可以用 + 号或者编码 %20 " %22 ' %27 + URL中+号表示空格 %2B , %2C : %3A [ %5B ] %5D / 分隔目录和子目录 %2F 十六进制值 ! %21 ? 分隔实际的 URL 和参数 %3F % 指定特殊字符 %25 # 表示书签 %23 & URL 中指定的参数间的分隔符 %26 ( %28 ) %29 . %2E = %3D , 逗号 %2C { %7B } %7D http://www.wetools.com/url-escape-code http://alipay.iteye.com/blog/68412 ...

2012-07-10 · 1 min · 76 words · -

google firstitemmsec

google firstitemmsec Get subscription list. Each subscription contains a “category” if the user had created folders. It also has a field called firstitemmsec that denotes in milliseconds the time from which entries for that feed should be picked up. firstitemmsec initially stumped me until I added a new subscription. I noticed that Google Reader has entries for a feed spanning back to a month (probably -infinity). So the reader has to know to show you articles only from the time you subscribed to a feed. ...

2012-07-09 · 1 min · 117 words · -