debian 安装svn客户端

debian 安装svn客户端 apt-get install subversion cd /usr/local/src/ svn checkout http://droidwall.googlecode.com/svn/trunk/ droidwall-read-only

2013-01-08 · 1 min · 11 words · -

git svn

git svn install ubuntu sudo apt-get install -y git-svn # init mkdir -p /path/to/project-foo/ git svn init https://url.to.svn.repo git svn fetch -r 1342:HEAD 从中心服务器的 svn repository 获取最新更新 这个操作可以通过"git-svn rebase"完成。注意这里用的是rebase,而不是update。update命令对于通过git-svn检出的svn repostory的git版本库是不可用的。 git svn rebase git commit -a -m "" git svn dcommit Password for ‘user0’: Can’t locate Term/ReadKey.pm git requires perl-term-readkey when it asks for user input Found when trying to enter a password for a git svn dcommit Password for ‘user0’: Can’t locate Term/ReadKey.pm in @INC (you may need to install the Term::ReadKey module) (@INC contains: /usr/share/perl5/site_perl /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5/core_perl /usr/share/perl5/core_perl .) at /usr/share/perl5/vendor_perl/Git.pm line 565. ...

2013-01-07 · 3 min · 488 words · -

top command

top command top 命令是常用的性能监控工具之一,用于监控系统整体性能和进程信息. top 界面分为两个部份,上面部份显示关于系统整体性能,下面部份显示各进程信息。 第一行显示的内容和 uptime 命令一样, 可以显示和折叠 cpu 使用信息. top: 这个没有什么意思,只是个名称而已 01:47:56 : 系统当前时间 up 1:26 : 系统开机到现在经过了多少时间 2 users: 当前两个用户在线 load average: 0.00,0.00,0.00: 系统 1 分钟, 5 分钟, 15 分钟的 CPU 负载信息 Tasks: 38 total: 当前有38个任务/进程 1 running: 1个进程正在运行 37 sleeping: 37个进程睡眠 0 stopped: 停止的进程数 0 zombie: 僵死的进程数 0 zombie: 僵死的进程数 zombie 进程 : 不是异常情况。 一个进程从创建到结束在最后那一段时间遍是僵尸。留在内存中等待父进程取的东西便是僵尸。任何程序都有僵尸状态,它占用一点内存资源,仅仅是表象而已不必害怕。如果程序有问题有机会遇见,解决大批量僵尸简单有效的办法是重起。kill是无任何效果的stop模式: 与sleep进程应区别,sleep会主动放弃cpu,而stop是被动放弃cpu ,例单步跟踪,stop(暂停)的进程是无法自己回到运行状态的。 Cpu(s): 表示这一行显示 CPU 总体信息 us: 用户态进程占用 CPU 时间百分比,不包含 renice 值为负的任务占用的CPU的时间。 CPU 消耗在 User space 的时间百分比 sy: 内核线程占用 CPU 时间百分比, 消耗在 Kernel space 的时间百分比。 ni: renice 值为负的任务的用户态进程的CPU时间百分比。nice 是优先级的意思, 表示被 nice 命令改变优先级的任务所占的百分比 id: 空闲CPU时间百分比 wa: IO wait 的缩写, io wait 所占的百分比, CPU 等待外部 I/O 的时间百分比,这段时间 CPU 不能干其他事,但是也没有执行运算,这个值太高就说明外部设备有问题 hi: CPU硬中断时间百分比, hardware interrupt 的缩写,CPU 响应硬件中断请求的时间百分比 si: CPU软中断时间百分比, software interrupt 的缩写,CPU 响应软件中断请求的时间百分比 st: 虚拟cpu等待实际cpu的时间的百分比, stole time 的缩写,该项指标只对虚拟机有效,表示分配给当前虚拟机的 CPU 时间之中,被同一台物理机上的其他虚拟机偷走的时间百分比 # 查看某一个用户 的进程, 查看 user0 用户进程 top -u user0 #显示线程 top -H -p PID printf "%x\n" tid 交互命令 P: 按 CPU 使用率排序 T: 按 MITE+ 排序 M: 按 %MEM 排序 f: 编辑基本视图中的显示字段 Space: 立即刷新显示 h: 显示帮助 k: 杀死某进程。你会被提示输入进程 ID 以及要发送给它的信号。 一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。 [n] 改变显示的进程数量。你会被提示输入数量。 ...

2013-01-06 · 2 min · 337 words · -

symbol

symbol ZWNBSP 是“Zero Width No-Break Space”的缩写。它是一种看不见的字符,主要用于文本处理和排版中。ZWNBSP的主要功能包括: 防止自动换行:在某些文本编辑器或排版工具中,ZWNBSP可以用于防止在不希望的地方自动换行。 排版和格式调整:在需要精确控制文本显示的场合,例如在编程、网页设计或文档处理时,ZWNBSP可以帮助实现特定的格式需求。 字符连接:有时候,ZWNBSP用于在两个字符之间插入而不影响它们的视觉连接,比如在某些语言或符号中。 ZWNBSP在Unicode中的编码是U+FEFF,但在许多现代应用中,它更多被用作字节顺序标记(BOM),而不是作为零宽度空格。

2013-01-05 · 1 min · 10 words · -

JAVA读取文件的两种方法 JAVA.IO和JAVA.LANG.CLASSLOADER

java 文件 Files.exists():检测文件路径是否存在。 Files.createFile():创建文件。 Files.createDirectory():创建文件夹。 Files.delete():删除一个文件或目录。 Files.copy():复制文件。 Files.move():移动文件。 Files.size():查看文件个数。 Files.read():读取文件。 Files.write():写入文件。 JAVA读取文件的两种方法 JAVA.IO和JAVA.LANG.CLASSLOADER http://www.blogjava.net/flysky19/articles/93280.html java读取文件的两种方法: java.io和java.lang.ClassLoader什么时候使用java.io,什么时候使用java.lang.ClassLoader呢? (注: 要是之前读xml文件时清晰知道java读取文件有这两种方法就好了!可以少走很多去理解相对路径的弯路!) 自己的总结: *java.io:相对于当前用户目录的相对路径读取;注重与磁盘文件打交道或者纯java project中使用。 (虽然ClassLoader方式更通用,但是如果不是javaEE环境,要定位到classpath路径下去读文件是不合理的。) *java.lang.ClassLoader:相对于classpath的相对路径读取;建议在javaEE环境中都使用这种方式。 整理资料一: http://www.code168.com/bbs/html/2005-12-9/23554625833.html 问: java打成jar包的后续问题!!!!如何在读取jar包里面的配置文件? 答1: 如果用java.util.ResourceBundle就不用担心什么,它本来就是从class loader folder/jar文件里找 properties文件。 如果你已经注意到了,java取文件有两种方法,java.util.io和java.lang.ClassLoader两种。 java.io: File file = new File("…"); FileInputStream fis = new FileInputStream("…"); FileReader fr = new FileReader("…"); ClassLoader: ClassLoader loader = XXXClass.class.getClassLoader(); ClassLoader loader = Thread.currentThread().getContextClassLoader(); URL url = loader.getResource("…"); File file = new File(url.getFile()); InputStream input = loader.getResourceAsStream("…"); ...

2013-01-03 · 1 min · 137 words · -

OpenSK

OpenSK Google 完全开源了其安全密钥项目 OpenSK,该实现支持 FIDO U2F 和 FIDO2 规范,支持 W3C 的 WebAuthn 标准,并采用安全可靠的 Rust 语言编写。 利用 OpenSK 开源项目,研究人员、安全密钥制造商以及发烧友可以快速制作出支持 FIDO 规范的安全密钥设备,体验更加安全的用户身份验证服务。 为了让用户能够低成本、快速上手体验 OpenSK,我们在 nRF52840 MDK USB Dongle 上做了移植,使其能够简单快速升级 OpenSK 固件而无需使用昂贵的下载工具。 硬件要求 nRF52840 MDK USB Dongle(裸板或外壳版都行,可自行在淘宝选购) 最新版 Google Chome 浏览器(38+)或 Firefox 浏览器 https://zhuanlan.zhihu.com/p/109631580

2012-12-29 · 1 min · 41 words · -

使用 Maven 执行 java main class

使用 Maven 执行 java main class mvn exec:java -Dexec.mainClass=“org.ts.main.App” http://www.cnblogs.com/foxswl/archive/2010/05/10/maven-execute-java-main.html http://www.vineetmanohar.com/2009/11/3-ways-to-run-java-main-from-maven/

2012-12-25 · 1 min · 11 words · -

slf4j

slf4j <properties> <slf4j.version>1.7.36</slf4j.version> </properties> <dependencies> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>${slf4j.version}</version> </dependency> </dependencies> ... http://baike.baidu.com/view/1895694.htm http://ugibb510.iteye.com/blog/458482 SLF4J, (Simple Logging Facade for Java) ,不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。 实际上,SLF4J所提供的核心API是一些接口以及一个LoggerFactory的工厂类。从某种程度上,SLF4J有点类似JDBC,不过比JDBC更简单,在JDBC中,你需要指定驱动程序,而在使用SLF4J的时候,不需要在代码中或配置文件中指定你打算使用那个具体的日志系统。如同使用JDBC基本不用考虑具体数据库一样,SLF4J提供了统一的记录日志的接口,只要按照其提供的方法记录即可,最终日志的格式、记录级别、输出方式等通过具体日志系统的配置来实现,因此可以在应用中灵活切换日志系统。 1、什么情况可以使用 如果你开发的是类库或者嵌入式组件,那么就应该考虑采用SLF4J,因为不可能影响最终用户选择哪种日志系统。在另一方面,如果是一个简单或者独立的应用,确定只有一种日志系统,那么就没有使用SLF4J的必要。假设你打算将你使用log4j的产品卖给要求使用JDK 1.4 Logging的用户时,面对成千上万的log4j调用的修改,相信这绝对不是一件轻松的事情。但是如果开始便使用SLF4J,那么这种转换将是非常轻松的事情。 2、举例 (1) 代码 ```java import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class Wombat { final Logger logger = LoggerFactory.getLogger(Wombat.class); Integer t; Integer oldT; public void setTemperature(Integer temperature) { oldT = t; t = temperature; Object[] objs = {new java.util.Date(), oldT, t}; logger.info("Today is {}, Temperature set to {}. Old temperature was {}.", objs); if (temperature.intValue() > 50) { logger.warn("Temperature({}) has risen above 50 degrees.", t); } } public static void main(String[] args) { Wombat wombat = new Wombat(); wombat.setTemperature(10); wombat.setTemperature(60); } } (2) 使用SLF4J提供的simple log ...

2012-12-25 · 3 min · 563 words · -

archlinux k8s

archlinux k8s disable swap # check swap usage, if no output, swap is disabled swapon --show # check swap status systemctl list-units --type=swap # disable swap sudo swapoff -a # disable zram swap sudo systemctl mask dev-zram0.swap sudo pacman -Syu reboot sudo pacman -S containerd kubeadm kubelet kubectl curl jq open-iscsi reboot # 如果提示 : iptables-nft-1:1.8.11-2 and iptables-1:1.8.11-2 are in conflict. Remove iptables? [y/N] # 删除 iptables, Kubernetes,推荐使用 iptables-nft,因为 Kubernetes 自 v1.13 起支持 iptables 的 nftables 后端(iptables-nft),而且 nftables 是 Linux 内核中更现代的防火墙实现,逐渐取代传统 iptables。此外,Arch Linux 的默认配置倾向于 nftables。 # 查看 containerd 版本 ctr version lsmod|grep br_netfilter lsmod|grep overlay # 在安装 kubelet 的时候 br_netfilter 已经设置 好了, k8s.conf 里不需要再加 br_netfilter cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf overlay EOF sudo modprobe overlay # 安装 kubeadm 的时候这三个变量会自动设置, 输出应该都是 1 sysctl net.bridge.bridge-nf-call-iptables sysctl net.bridge.bridge-nf-call-ip6tables sysctl net.ipv4.ip_forward # containerd config sudo mkdir /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml vim /etc/containerd/config.toml # 打开文件,找到 `[plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.runc.options]` # 在下面加 一行 SystemdCgroup = true # 配置 containerd 使用 systemd 作为 cgroup 驱动 # 检查 containerd 的 状态 sudo systemctl status containerd # 重启 containerd sudo systemctl restart containerd sudo systemctl enable --now containerd sudo systemctl status kubelet systemctl enable kubelet.service systemctl enable --now iscsid kube-vip kube-vip 相关的命令要在每个 control plane 节点上执行 ...

2012-12-23 · 4 min · 663 words · -

SSD - Smart Response

SSD - Smart Response Smart Response 固态硬盘缓存技术属于英特尔Rapid Storage Technology 10.5的新功能,其允许用户将一块固态硬盘 (部分或全部容量) 用作于机械硬盘 (单块或RAID阵列) 高速缓存,让整机系统获得接近于固态硬盘的读取/写入性能,同时还能保留机械硬盘容量大的优势。 Smart Response固态硬盘缓存技术具有三种工作模式,分别为关闭 (Off) ,增强 (Enhanced) 和极限 (Maximized) 。其中增强模式是默认状态,使用该模式时,由于数据同时写入高速缓存和机械硬盘,因此写入速度并无提升,但系统启动和数据读取的速度将得到较大提升,同时无需担心数据意外丢失;而极限模式下,数据将首先写入高速缓存中,然后再从缓存转移至机械硬. Intel’s Rapid Storage Technology (RST) driver that is only available for Windows to access the drive.

2012-12-22 · 1 min · 38 words · -

Spring annoation

Spring annoation @PostConstruct 和 @PreDestroy Spring 容器中的 Bean 是有生命周期的,Spring 允许在 Bean 在初始化完成后以及 Bean 销毁前执行特定的操作,您既可以通过实现 InitializingBean/DisposableBean 接口来定制初始化之后 / 销毁之前的操作方法,也可以通过 <bean> 元素的 init-method/destroy-method 属性指定初始化之后 / 销毁之前调用的操作方法。关于 Spring 的生命周期,笔者在《精通 Spring 2.x—企业应用开发精解》第 3 章进行了详细的描述,有兴趣的读者可以查阅。 JSR-250 为初始化之后/销毁之前方法的指定定义了两个注释类,分别是 @PostConstruct 和 @PreDestroy,这两个注释只能应用于方法上。标注了 @PostConstruct 注释的方法将在类实例化后调用,而标注了 @PreDestroy 的方法将在类销毁之前调用。

2012-12-18 · 1 min · 39 words · -

spring @ModelAttribute

spring @ModelAttribute 通过 SpringMVC 的 SessionAttributes Annotation 关联 User 属性 SpringMVC 文档提到了 @SessionAttributes annotation,和 @ModelAttribute 配合使用可以往 Session 中存或者从 Session 中取指定属性名的具体对象。 ,@SessionAttributes 是用来在 controller 内部共享 model 属性的。从文档自带的例子来看,标注成 @SessionAttributes 属性的对象,会一直保留在 Session 或者其他会话存储中,直到 SessionStatus 被显式 setComplete()。那这个 annotation 对我们有什么帮助呢? 答案就是我们可以在需要访问 Session 属性的 controller 上加上 @SessionAttributes,然后在 action 需要的 User 参数上加上 @ModelAttribute,并保证两者的属性名称一致。SpringMVC 就会自动将 @SessionAttributes 定义的属性注入到 ModelMap 对象,在 setup action 的参数列表时,去 ModelMap 中取到这样的对象,再添加到参数列表。只要我们不去调用 SessionStatus 的 setComplete() 方法,这个对象就会一直保留在 Session 中,从而实现 Session 信息的共享。 controller的代码如下: @Controller @SessionAttributes(“currentUser”) public class GreetingController{ ...

2012-12-17 · 1 min · 92 words · -

jetty tomcat

jetty tomcat jetty vs tomcat http://www.ibm.com/developerworks/cn/java/j-lo-jetty/ jetty与 Tomcat 的比较 Tomcat 和 Jetty 都是作为一个 Servlet 引擎应用的比较广泛,可以将它们比作为中国与美国的关系,虽然 Jetty 正常成长为一个优秀的 Servlet 引擎,但是目前的 Tomcat 的地位仍然难以撼动。相比较来看,它们都有各自的优点与缺点。 Tomcat 经过长时间的发展,它已经广泛的被市场接受和认可,相对 Jetty 来说 Tomcat 还是比较稳定和成熟,尤其在企业级应用方面,Tomcat 仍然是第一选择。但是随着 Jetty 的发展,Jetty 的市场份额也在不断提高,至于原因就要归功与 Jetty 的很多优点了,而这些优点也是因为 Jetty 在技术上的优势体现出来的。 架构比较 从架构上来说,显然 Jetty 比 Tomcat 更加简单,如果你对 Tomcat 的架构还不是很了解的话,建议你先看一下 《Tomcat系统架构与设计模式》这篇文章。 Jetty 的架构从前面的分析可知,它的所有组件都是基于 Handler 来实现,当然它也支持 JMX。但是主要的功能扩展都可以用 Handler 来实现。可以说 Jetty 是面向 Handler 的架构,就像 Spring 是面向 Bean 的架构,iBATIS 是面向 statement 一样,而 Tomcat 是以多级容器构建起来的,它们的架构设计必然都有一个"元神",所有以这个"元神"构建的其它组件都是肉身。 从设计模板角度来看 Handler 的设计实际上就是一个责任链模式,接口类 HandlerCollection 可以帮助开发者构建一个链,而另一个接口类 ScopeHandler 可以帮助你控制这个链的访问顺序。另外一个用到的设计模板就是观察者模式,用这个设计模式控制了整个 Jetty 的生命周期,只要继承了 LifeCycle 接口,你的对象就可以交给 Jetty 来统一管理了。所以扩展 Jetty 非常简单,也很容易让人理解,整体架构上的简单也带来了无比的好处,Jetty 可以很容易被扩展和裁剪。 ...

2012-12-16 · 1 min · 189 words · -

Jetty

Jetty Jetty 是一个开源的servlet容器,它为基于Java的web内容,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行 (stand-alone) 的Java应用提供网络和web连接。 易用性 易用性是 Jetty 设计的基本原则,易用性主要体现在以下几个方面: 通过 XML 或者 API 来对 Jetty 进行配置;默认配置可以满足大部分的需求;将 Jetty 嵌入到应用程序当中只需要非常少的代码; 可扩展性 在使用了 Ajax 的 Web 2.0 的应用程序中,每个连接需要保持更长的时间,这样线程和内存的消耗量会急剧的增加。这就使得我们担心整个程序会因为单个组件陷入瓶颈而影响整个程序的性能。但是有了 Jetty: 即使在有大量服务请求的情况下,系统的性能也能保持在一个可以接受的状态。利用 Continuation 机制来处理大量的用户请求以及时间比较长的连接。 另外 Jetty 设计了非常良好的接口,因此在 Jetty 的某种实现无法满足用户的需要时,用户可以非常方便地对 Jetty 的某些实现进行修改,使得 Jetty 适用于特殊的应用程序的需求。 易嵌入性 Jetty 设计之初就是作为一个优秀的组件来设计的,这也就意味着 Jetty 可以非常容易的嵌入到应用程序当中而不需要程序为了使用 Jetty 做修改。从某种程度上,你也可以把 Jetty 理解为一个嵌入式的Web服务器。 Jetty 可以作为嵌入式服务器使用,Jetty的运行速度较快,而且是轻量级的,可以在Java中可以从test case中控制其运行。从而可以使自动化测试不再依赖外部环境,顺利实现自动化测试。

2012-12-16 · 1 min · 50 words · -

java asm

java asm 什么是 ASM ? ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class 被存储在严格格式定义的 .class 文件里,这些类文件拥有足够的元数据来解析类中的所有元素: 类名称、方法、属性以及 Java 字节码 (指令) 。ASM 从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。 与 BCEL 和 SERL 不同,ASM 提供了更为现代的编程模型。对于 ASM 来说,Java class 被描述为一棵树;使用 Visitor模式(访问者模式) 遍历整个二进制结构;事件驱动的处理方式使得用户只需要关注于对其编程有意义的部分,而不必了解 Java 类文件格式的所有细节: ASM 框架提供了默认的 “response taker"处理这一切。 为什么要动态生成 Java 类? 动态生成 Java 类与 AOP 密切相关的。AOP 的初衷在于软件设计世界中存在这么一类代码,零散而又耦合: 零散是由于一些公有的功能 (诸如著名的 log 例子) 分散在所有模块之中;同时改变 log 功能又会影响到所有的模块。出现这样的缺陷,很大程度上是由于传统的 面向对象编程注重以继承关系为代表的"纵向"关系,而对于拥有相同功能或者说方面 (Aspect) 的模块之间的"横向"关系不能很好地表达。例如,目前有一个既有的银行管理系统,包括 Bank、Customer、Account、Invoice 等对象,现在要加入一个安全检查模块, 对已有类的所有操作之前都必须进行一次安全检查。 http://www.ibm.com/developerworks/cn/java/j-lo-asm30/

2012-12-15 · 1 min · 65 words · -

cglib

CGLIB cglib是一个强大的,高性能,高质量的Code生成类库,它可以在运行期扩展Java类与实现Java接口。Hibernate用它来实现PO字节码的动态生成。 CGLIB是一个强大的高性能的代码生成包。它广泛的被许多AOP的框架使用,例如Spring AOP和dynaop,为他们提供方法的interception (拦截) 。 最流行的OR Mapping工具hibernate也使用CGLIB来代理单端single-ended(多对一和一对一)关联 (对集合的延迟抓取,是采用其他机制实现的) 。 EasyMock和jMock是通过使用模仿 (moke) 对象来测试java代码的包。它们都通过使用CGLIB来为那些没有接口的类创建模仿 (moke) 对象。 代理为控制要访问的目标对象提供了一种途径。当访问对象时,它引入了一个间接的层。JDK自从1.3版本开始,就引入了动态代理,并且经常被用来动态地创建代理。JDK的动态代理用起来非常简单,但它有一个限制,就是使用动态代理的对象必须实现一个或多个接口。如果想代理没有实现接口的继承的类,该怎么办?现在我们可以使用CGLIB包 CGLIB包的底层是通过使用一个小而快的字节码处理框架ASM,来转换字节码并生成新的类。 除了CGLIB包,脚本语言例如Groovy和BeanShell,也是使用ASM来生成java的字节码。当然不鼓励直接使用ASM,因为它要求你必须对JVM内部结构包括class文件的格式和指令集都很熟悉。 Hibernate用它来实现PO(Persistent Object 持久化对象)字节码的动态生成。 http://baike.baidu.com/view/1254036.htm?fr=aladdin

2012-12-15 · 1 min · 22 words · -

AspectJ

AspectJ AspectJ是一个面向方面的框架,它扩展了Java语言。AspectJ定义了AOP语法所以它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件。 AspectJ 是一个基于 Java 语言的 AOP 框架,提供了强大的 AOP 功能,其他很多 AOP 框架都借鉴或采纳其中的一些思想。 AspectJ 是 Java 语言的一个 AOP 实现,其主要包括两个部分: 第一个部分定义了如何表达、定义 AOP 编程中的语法规范,通过这套语言规范,我们可以方便地用 AOP 来解决 Java 语言中存在的交叉关注点问题;另一个部分是工具部分,包括编译器、调试工具等。 AspectJ 是最早、功能比较强大的 AOP 实现之一,对整套 AOP 机制都有较好的实现,很多其他语言的 AOP 实现,也借鉴或采纳了 AspectJ 中很多设计。在 Java 领域,AspectJ 中的很多语法结构基本上已成为 AOP 领域的标准。 Spring AOP 与 AspectJ 相同的是,Spring AOP 同样需要对目标类进行增强,也就是生成新的 AOP 代理类;与 AspectJ 不同的是,Spring AOP 无需使用任何特殊命令对 Java 源代码进行编译,它采用运行时动态地、在内存中临时生成"代理类"的方式来生成 AOP 代理。 Spring 允许使用 AspectJ Annotation 用于定义方面 (Aspect) 、切入点 (Pointcut) 和增强处理 (Advice) ,Spring 框架则可识别并根据这些 Annotation 来生成 AOP 代理。Spring 只是使用了和 AspectJ 5 一样的注解,但并没有使用 AspectJ 的编译器或者织入器 (Weaver) ,底层依然使用的是 Spring AOP,依然是在运行时动态生成 AOP 代理,并不依赖于 AspectJ 的编译器或者织入器。 ...

2012-12-15 · 1 min · 97 words · -

Apache Shiro

Apache Shiro Apache Shiro (发音为"shee-roh",日语"堡垒 (Castle) “的意思) 是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可为任何应用提供安全保障 - 从命令行应用、移动应用到大型网络及企业应用。 Shiro为解决下列问题 (我喜欢称它们为应用安全的四要素) 提供了保护应用的API: 认证 - 用户身份识别,常被称为用户"登录”; 授权 - 访问控制; 密码加密 - 保护或隐藏数据防止被偷窥; 会话管理 - 每用户相关的时间敏感的状态。 Shiro还支持一些辅助特性,如Web应用安全、单元测试和多线程,它们的存在强化了上面提到的四个要素。 Subject 在考虑应用安全时,你最常问的问题可能是"当前用户是谁?“或"当前用户允许做X吗?"。当我们写代码或设计用户界面时,问自己这些问题很平常: 应用通常都是基于用户故事构建的,并且你希望功能描述 (和安全) 是基于每个用户的。所以,对于我们而言,考虑应用安全的最自然方式就是基于当前用户。Shiro的API用它的Subject概念从根本上体现了这种思考方式。 Subject一词是一个安全术语,其基本意思是"当前的操作用户”。称之为"用户"并不准确,因为"用户"一词通常跟人相关。在安全领域,术语"Subject"可以是人,也可以是第三方进程、后台帐户 (Daemon Account) 或其他类似事物。它仅仅意味着"当前跟软件交互的东西"。但考虑到大多数目的和用途,你可以把它认为是Shiro的"用户"概念。在代码的任何地方,你都能轻易的获得Shiro Subject, http://www.infoq.com/cn/articles/apache-shiro http://kdboy.iteye.com/blog/1154644

2012-12-12 · 1 min · 38 words · -

word basic

word basic word 中更新目录 http://www.2word.com/word2010/2010Mulu/528.html 如果文档完成后发现有些地方必须要进行修改,修改后会发现标题章节标题所在页码已经发生了变化,而目录中的页码没有同步更新,这时您可以手动的更新目录。在word2010中更新目录的方法如下: 第一步、启动word,打开需要更新目录的文档; 第二步、切换到"引用"功能区,在"目录"组中点击"更新目录",如图一所示:

2012-12-12 · 1 min · 8 words · -

Quartz

Quartz Quartz 是个开源的作业调度框架 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或 EJBs。 Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。Quartz 允许开发人员根据时间间隔 (或天) 来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。整合了 Quartz 的应用程序可以重用来自不同事件的作业,还可以为一个事件组合多个作业。虽然可以通过属性文件 (在属性文件中可以指定 JDBC 事务的数据源、全局作业和/或触发器侦听器、插件、线程池,以及更多) 配置 Quartz,但它根本没有与应用程序服务器的上下文或引用集成在一起。结果就是作业不能访问 Web 服务器的内部函数;例如,在使用 WebSphere 应用服务器时,由 Quartz 调度的作业并不能影响服务器的动态缓存和数据源。 Quartz任务调度CronTrigger配置格式详细说明 CronTrigger配置完整格式为: [秒] [分] [小时] [日] [月] [周] [年] 序号 说明 是否必填 允许填写的值 允许的通配符 1 秒 是 0-59 , - * / 2 分 是 0-59 , - * / 3 小时 是 0-23 , - * / 4 日 是 1-31 , - * ? / L W ...

2012-12-11 · 2 min · 287 words · -