`
文章列表
开发人员并不能因为自己没有创建线程,就可以不关心线程安全问题了。因为多线程是无所不在的。 框架可能会帮你创建线程。JVM会创建线程运行自清理任务(垃圾回收,对象终结),以及运行主程序的线程 Timer会创建线程处理预定义的任务,任务处理需要考虑线程安全问题. servlet会创建线程池,在这些线程池中运行组件方法。servlet规范要求一个servlet能够被多个线程同时调用,因此servlet需要线程安全。即使servlet只在一个单线程运行,它也需要处理session和context等共享对象问题 RMI会创建额外的线程来运行远程对象中的方法,一个远程对象的方法可能在多个线程中同时执 ...
 Java内置的多线程是把双刃剑,一方面: 它提供了语言,库,以及跨平台的内存模型的支持,方便了用户对并发的开发。 另一方面,它降低了多线程开发的难度,导致了开发门槛低,但多线程是个高级话题,需要额外考虑多线程问题 1.3.1 正确性问题 多线程在缺乏充足同步的情况下,它们的运行结果是难以预料的。在没有同步控制下,编译器,硬件,运行过程中都可以对操作进行时间和顺序的改进。 如在寄存器或处理器缓存变量。因为这样做可以提高性能,但这样会破坏安全性 1.3.2 存活性问题  正确性问题在单线程和多线程都会出现,只是多线程会额外引入一些正确性问题。而存活性问题是多线程独有的。  存活性关注的是顺利达到了 ...
如果多线程用的恰当的话,可以减少开发与运营的成本,提高复杂系统的性能。通过多线程将异步的工作流分解成多个顺序工作的单元,从而更符合真实世界的工作交付方式。多线程能够将复杂的代码块分解成 顺序的代码块,从而更容易编写,阅读以及维护.在GUI系统中,多线程能够提高用户响应。在服务器端,多线程能够提高资源利用率和谈吐量。简化JVM的实现,JVM的垃圾回收都是运行在一个或多个预定义的线程中.很多重大Java应用都依赖于一定程度的多线程应用.1.2.1充分利用多处理器1.2.2 更方便建模1.2.3 处理异步事件更加简单1.2.4 提高用户接口的响应速度
 最开始: 没有操作系统,电脑一次只能运行一个程序。 后来: 操作系统引入并发,允许同时多个程序运行,每个程序都在各自的进程里运行。  导致操作系统允许同时运行多个程序的因素: 资源利用率;公平性;开发方便. 多个线程共享进程的内存,文件句柄资源。每个线程有自己的程序计数器,栈,局部变量 线程在多处理器中能够更进一步地利用硬件资源。因为在多处理器中,多个线程能够同时运行。 多线程有时被称为"轻量级进程",现代很多操作系统将线程(而不是进程)当作最小的调度单元,在缺少外部的协调下,线程之间是同步或异步执行的。 但多个线程共享了进程的地址空间,进程里的多个线程可以访问同一个变量, ...
从今天开始,翻译Java Concurrency in Practice一书,简称JCIP,主要是为了自己理解,所以主要是翻译个大概意思。。。
所涉及到技术点:  1. Java调用命令行文件:ProcessBuilder类的使用  2. Java注册为操作系统服务,可用apache Daemon的Procrun工具来发布  3. 杀进程:    windows下可以用 WScript 脚本,如下:     Sub Kill_Process(ProcessName, CMD)     For Each ps In getobject("winmgmts:\\.\root\cimv2:win32_process").instances_         if Ucase(ps.name)=Ucase(P ...
开发一个专门的守护项目,主要职责为如下几点:        一. 能够将自己注册为 windows或linux服务        二. 提供配置文件,让用户配置如下参数            # 最长停止时间,单位:秒 (默认 10分钟,如果所有的进程在 10 分钟内没有退出,则执行 kill 命令.)            # 最长启动时间,单位:秒 (默认 10分钟,如果所有的进程在 10 分钟内没有启动,则不再等待)            # 启动顺序(停止顺序按照倒顺,用空格分开,如果不想监控某程序,可以从列表中去掉)            # 显示名称           ...
J2EE项目都需要部署在J2EE容器内,所以上生产的时候,一般都会提供启动(startup.bat) 和 停止(stop.bat)的命令行脚本文件来部署。但不能满足以下情形:   1. 如果操作系统因意外重启了,怎么办   2. 运行过程中,进程crash掉了怎么办?   以上2种情况出现,都需要人工再去手工点startup.bat文件,来重新启动,人工会有延迟的,如果系统能够检测到这些异常,并自动处理掉,主要实现如下:  1.开发项目的startup和stop的命令行脚本文件,以及必要的kill脚本  2.项目将一些核心服务用http暴露出来,用于标示服务在正常运行  3.整理该项 ...
  看别人代码的时候,常常会遇到这样的问题, 好像代码中没有实现这个小功能,但一打包运行,这小功能确实已经有了。   翻遍了所有业务实现代码,都没找到,最后发现这个小功能在一个工具类方法实现了,我估计你已经抓狂了。。。     所以在开发项目过程中,所有业务类型功能代码都应该放在业务代码里,而不应该图方便将其放在不应该的地方。这样给维护会带来很大的困难。 工具类方法就只是做工具用的,不应该涉及任何业务代码.

xml合并

利用xslt模板进行合并 /* * 合并xml文件 */ public void testMerge() throws Exception{ String aa = "F:/workspace/bme/mystudy/uconfig/11.xml"; String bb = "F:/workspace/bme/mystudy/uconfig/22.xml"; System.out.println(XmlUtil.DOM2String(mergeDocumentByXslt(getDocumentByUrl(a ...
有钱就泡泡妞 没钱就跑跑步 介于两者之间就购购物 有能力就去国外 没能力就低调的在国内,不要看新闻,不要看政策,不要想着会有什么福利。 介于两者之间就在国内搞搞小爱好,但一定要低调,千万不要惹比你有钱的人。 爱护自己,好好活着,低调活着,用旁人的眼观看时代变迁!
public static Map getLocalMacMap() throws SocketException { Map macs = new HashMap(); for(Enumeration networks = NetworkInterface.getNetworkInterfaces(); networks.hasMoreElements();) { NetworkInterface ni = (NetworkInterface)networks.nextEleme ...
<html> <head> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" s ...

web安全10

3.6      其他 规则4.7.4:使用.innerHtml时,如果只是要显示文本内容,必须在innerHTML取得内容后,再用正则表达式去除HTML标签,以预防跨站脚本。 说明:使用.innerHtml会将内容以HTML显示,容易被利用,导致跨站脚本。 实施指导: <a href="javascript:alert(document.getElementById('test').innerHTML.replace(/<.+?>/gim,''))">无HTML,符合W3C标准</a> 备注:还可以使用.innerText代替. ...

web安全9

3.4      代码注释 3.5      归档要求 规则4.6.1:版本归档时,必须删除开发过程(包括现场定制)中的临时文件、备份文件、无用目录等。 说明:恶意用户可以通过URL请求诸如.bak之类的文件,Web服务器会将这些文件以文本方式呈现给恶意用户,造成代码的泄漏,严重威胁Web应用的安全。 实施指导: 请务必删除如下一些后辍的文件: .old、.OLD、.bak、.BAK、.temp、.save、.backup、.orig、.000、~、~1、.dwt、.tpl 规则4.6.2:归档的页面程序文件的扩展名必须使用小写字母。 说明:很多Web server对大小写是敏感 ...
Global site tag (gtag.js) - Google Analytics