<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[okJohn's  blog]]></title><description><![CDATA[抓蛙，抓蛙]]></description><link>https://blog.youkuaiyun.com/okjohn</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; okjohn]]></copyright><item><title><![CDATA[《架构师修炼之路》——②对架构的基本认识]]></title><link>https://blog.youkuaiyun.com/okjohn/article/details/154662033</link><guid>https://blog.youkuaiyun.com/okjohn/article/details/154662033</guid><author>okjohn</author><pubDate>Mon, 10 Nov 2025 22:31:50 +0800</pubDate><description><![CDATA[本文简要介绍了架构的定义、架构演进历程，说明了架构设计在软件项目中的重要性，并介绍了架构设计的本质j（决策和平衡）、架构决策的依据（需求、质量属性和约束）和架构设计中模块、组件和微服务三个概念的区别和联系，并简单列举了常见的架构设计方法。]]></description><category></category></item><item><title><![CDATA[《架构师修炼之路》——①浅谈需求分析与管理]]></title><link>https://blog.youkuaiyun.com/okjohn/article/details/153326390</link><guid>https://blog.youkuaiyun.com/okjohn/article/details/153326390</guid><author>okjohn</author><pubDate>Tue, 21 Oct 2025 20:52:51 +0800</pubDate><description><![CDATA[需求分析是架构设计的基石，方向错了，后面的努力可能都白费。虽然需求分析工作在业界很多公司中通常由产品经理主导，但还需项目经理、架构师、开发代表、测试等关键角色一起深度参与。而架构师在其中的主要职责包括：1）了解项目的范围或系统的边界，了解用户的核心诉求，确保架构设计解决真正的问题，即“做正确的事”；2）评估技术可行性和风险；3）基于自身技术功底和业务经验，在方案选型中作出合理的技术权衡，并支撑工作量评估。对需求的敏感性和把控能力也是架构师的一项基本素质。]]></description><category></category></item><item><title><![CDATA[Java 5 新特性——泛型]]></title><link>https://blog.youkuaiyun.com/okjohn/article/details/6180912</link><guid>https://blog.youkuaiyun.com/okjohn/article/details/6180912</guid><author>okjohn</author><pubDate>Sat, 12 Feb 2011 14:45:00 +0800</pubDate><description><![CDATA[       泛型是J2SE 5.0最重要的特性，可以让你通过传递一个或多个引用类型来写一个type(类或接口）和创建一个实例，这个实例受限于只能作用于这些类型。比如，在java 5，java.util.List 已经被泛化。当建立一个list对象时，你通过传递一个java类型建立一个List实例，此list实例只能作用于所传递的类型。这意味着如果你传递一个String ,此List实例只能拥有String对象；如果你传递一个Integer，此实例只能存贮Integer对象。除了创建参数化的类型，你还能创建]]></description><category></category></item><item><title><![CDATA[java 5 新特性——可变参数方法]]></title><link>https://blog.youkuaiyun.com/okjohn/article/details/6180309</link><guid>https://blog.youkuaiyun.com/okjohn/article/details/6180309</guid><author>okjohn</author><pubDate>Sat, 12 Feb 2011 10:21:00 +0800</pubDate><description><![CDATA[　JDK1.5引进了方法的可变参数，受到许多开发人员的青睐。有了这种机制，我们可以写出类似于JavaScript的arguments那样的带任意多个参数的方法。Java的可变参数，可用于普通方法上，也可以用于构造方法上，大大增大了我们所写方法的适用范围。]]></description><category></category></item><item><title><![CDATA[Java 5 新特性——增强for循环]]></title><link>https://blog.youkuaiyun.com/okjohn/article/details/6179243</link><guid>https://blog.youkuaiyun.com/okjohn/article/details/6179243</guid><author>okjohn</author><pubDate>Fri, 11 Feb 2011 16:07:00 +0800</pubDate><description><![CDATA[J2SE 1.5提供了另一种形式的for循环。借助这种形式的for循环，可以用更简单地方式来遍历数组和Collection等类型的对象。本文介绍使用这种循环的具体方式，说明如何自行定义能被这样遍历的类，并解释和这一机制的一些常见问题。]]></description><category></category></item><item><title><![CDATA[Java 5 新特性——枚举类型]]></title><link>https://blog.youkuaiyun.com/okjohn/article/details/6179229</link><guid>https://blog.youkuaiyun.com/okjohn/article/details/6179229</guid><author>okjohn</author><pubDate>Fri, 11 Feb 2011 16:01:00 +0800</pubDate><description><![CDATA[枚举（enum）类型是Java 5新增的特性，它是一种新的类型，允许用常量来表示特定的数据片断，而且全部都以类型安全的形式来表示。]]></description><category></category></item><item><title><![CDATA[Java获得系统环境变量]]></title><link>https://blog.youkuaiyun.com/okjohn/article/details/5866413</link><guid>https://blog.youkuaiyun.com/okjohn/article/details/5866413</guid><author>okjohn</author><pubDate>Mon, 06 Sep 2010 15:31:00 +0800</pubDate><description><![CDATA[Java如何获得系统环境变量]]></description><category></category></item><item><title><![CDATA[硬盘安装SUSE]]></title><link>https://blog.youkuaiyun.com/okjohn/article/details/5863825</link><guid>https://blog.youkuaiyun.com/okjohn/article/details/5863825</guid><author>okjohn</author><pubDate>Sat, 04 Sep 2010 22:10:00 +0800</pubDate><description><![CDATA[已安装windows系统，下载suse安装光盘，放在一个FAT32盘的文件夹下，使用GRUB从硬盘启动并安装suse。
]]></description><category></category></item><item><title><![CDATA[解决Oracle透明网关连接SQL server进行数据操作出现“列名无效”问题]]></title><link>https://blog.youkuaiyun.com/okjohn/article/details/3972470</link><guid>https://blog.youkuaiyun.com/okjohn/article/details/3972470</guid><author>okjohn</author><pubDate>Mon, 09 Mar 2009 13:19:00 +0800</pubDate><description><![CDATA[　　使用Oracle透明网关与SQL server连通，再创建一个数据库链接，即可实现对SQL server数据的查询和处理。　　注意的是，不同数据库间的数据处理应使用标准SQL，即便这样，如果按照通常的写法，SQL中的列名会仍会被宣告“无效”。　　解决的办法是：将列名用双引号括起来。如：　　select * from table1 where "id">10;　　select "]]></description><category></category></item><item><title><![CDATA[Oracle与SQL Server的互连]]></title><link>https://blog.youkuaiyun.com/okjohn/article/details/3972326</link><guid>https://blog.youkuaiyun.com/okjohn/article/details/3972326</guid><author>okjohn</author><pubDate>Mon, 09 Mar 2009 12:26:00 +0800</pubDate><description><![CDATA[不同数据库平台的互连一般称之为数据库的异构服务，现在各大数据库之间都可以实现这样的异构互连，只是各厂商的具体实现技术不一样，如：在SQL SERVER里面叫做LINKED SERVER，通过ODBC实现与其它数据库的互联。 而ORACLE实现异构服务的技术叫做透明网关（Transparent Gateway），当然之前ORACLE还采用过通用连接技术。目前ORACLE利用透明网关可以实现和SQ]]></description><category></category></item><item><title><![CDATA[使用DOS批处理搜索并处理某类文件]]></title><link>https://blog.youkuaiyun.com/okjohn/article/details/3936783</link><guid>https://blog.youkuaiyun.com/okjohn/article/details/3936783</guid><author>okjohn</author><pubDate>Wed, 25 Feb 2009 17:31:00 +0800</pubDate><description><![CDATA[　　电脑中毒了，也不知道是何毒，反正是用ghost恢复一下系统分区就搞定了。　　后来发现没这么简单，D盘下的所有未加密的RAR文件都被修改了，加入了一个“安装.bat”，大概是病毒制造者认为压缩包里面一般都是软件的安装文件吧。这招骗人也太菜了，呵呵，不过也可能骗成功的。　　问题是我该怎样把这些压缩包中的“安装.bat”统统删除呢？一个个的用WinRAR打开删，也能行，可是太不专业了。对于这]]></description><category></category></item><item><title><![CDATA[辞职信(英文)]]></title><link>https://blog.youkuaiyun.com/okjohn/article/details/3904382</link><guid>https://blog.youkuaiyun.com/okjohn/article/details/3904382</guid><author>okjohn</author><pubDate>Wed, 18 Feb 2009 10:37:00 +0800</pubDate><description><![CDATA[RESIGNATION LETTER (邮件标题)Dear Mr. XXX:Im sorry to offer you my resignation, Ive decided to leave this company for personal reasons. My lastday will be March 22, 2009. Theres one month prior to my d]]></description><category></category></item><item><title><![CDATA[使用tar实现从Windows到Linux的整个文件夹快速拷贝]]></title><link>https://blog.youkuaiyun.com/okjohn/article/details/2183048</link><guid>https://blog.youkuaiyun.com/okjohn/article/details/2183048</guid><author>okjohn</author><pubDate>Fri, 14 Mar 2008 17:33:00 +0800</pubDate><description><![CDATA[ 非常适用于文件夹的层次结构庞大的情况：1.下载windows tar工具到本地盘（很小）2. 对windows下的文件夹打包（若文件夹很大可同时进行压缩）。 在命令行下，进入到该目录，执行　　tar cvf directory_name.tar directory_name3. 将打包文件拷贝到Linux下，然后解包　　tar xvf directory_name.tar ]]></description><category></category></item><item><title><![CDATA[jdom 或 dom4j读取xml文件时如何让dtd验证使用本地dtd文件或者不生效 ]]></title><link>https://blog.youkuaiyun.com/okjohn/article/details/2122292</link><guid>https://blog.youkuaiyun.com/okjohn/article/details/2122292</guid><author>okjohn</author><pubDate>Tue, 26 Feb 2008 14:45:00 +0800</pubDate><description><![CDATA[一、写在所有之前：因为dom4j和jdom在这个问题上处理的方法是一模一样的，只是一个是SAXBuilder 一个SAXReader，这里以jdom距离，至于dom4j只需要同理替换一下就可以了。二、问题发生的情况当你用jdom读取一个有dtd验证的xml文件,同时你的网络是不通的情况下。会出现以下错误：1，代码如下package dom;import java.io.File;imp]]></description><category></category></item><item><title><![CDATA[Eclipse插件安装的三种方法]]></title><link>https://blog.youkuaiyun.com/okjohn/article/details/2121608</link><guid>https://blog.youkuaiyun.com/okjohn/article/details/2121608</guid><author>okjohn</author><pubDate>Tue, 26 Feb 2008 10:53:00 +0800</pubDate><description><![CDATA[ 一、联机安装    在eclipse菜单栏中，点击 help --> Software Updates --> Find And Install...     在弹出的对话框中选择 “Search for new features to install” 然后点击 “next”。    接下来点击按钮 New Remort Site...  在弹出的对话框中的URL输入框中填写插件下载地址，Na]]></description><category></category></item><item><title><![CDATA[vbscript访问web service]]></title><link>https://blog.youkuaiyun.com/okjohn/article/details/1763909</link><guid>https://blog.youkuaiyun.com/okjohn/article/details/1763909</guid><author>okjohn</author><pubDate>Wed, 29 Aug 2007 16:02:00 +0800</pubDate><description><![CDATA[ 将下列代码保存为demo.vbs, 双击运行.Option ExplicitWeb Service 地址Const WSDL_URL = "http://192.168.0.3/MyWebService.asmx?WSDL"显示Web Service 地址，点击确定后继续WScript.echo "Connecting: " & WSDL_URL创建并初始化SOAP对象Dim]]></description><category></category></item><item><title><![CDATA[struts中validate的几种情况 ]]></title><link>https://blog.youkuaiyun.com/okjohn/article/details/1498118</link><guid>https://blog.youkuaiyun.com/okjohn/article/details/1498118</guid><author>okjohn</author><pubDate>Tue, 30 Jan 2007 17:43:00 +0800</pubDate><description><![CDATA[ （说明）这里采用了最新版本struts-1.2.7，是在struts-blank的基础上演示的，为了以后的学习和参考用。 一、在对应的Form Baens中重载validate方法在struts-config.xml文件中，action节点下有“validate”这样一个属性。在struts框架中，默认属性是validate=”true”。所以如果想通过Form Baens的重载]]></description><category></category></item><item><title><![CDATA[JBuilder光标问题的解决方案]]></title><link>https://blog.youkuaiyun.com/okjohn/article/details/1433260</link><guid>https://blog.youkuaiyun.com/okjohn/article/details/1433260</guid><author>okjohn</author><pubDate>Thu, 07 Dec 2006 11:13:00 +0800</pubDate><description><![CDATA[　　大家常常说JBuilder在中文系统中存在光标错位的问题，都认为这是JBuilder的一个Bug，其实这实在是冤枉JBuilder了！大家讨论出来的解决方法无外乎两种：　　1、将编辑器的字体改为宋体，用这种方法带来的问题是，在宋体下的英文字体实在难看，阅读起来不太顺眼；　　2、就是将编辑器字体的粗体属性去掉，这样也影响代码的可读性。　　其实，造成JBuilder光标错位的问题并不是]]></description><category></category></item><item><title><![CDATA[以空格代替Tab, 养成良好编码风格]]></title><link>https://blog.youkuaiyun.com/okjohn/article/details/1430595</link><guid>https://blog.youkuaiyun.com/okjohn/article/details/1430595</guid><author>okjohn</author><pubDate>Tue, 05 Dec 2006 11:12:00 +0800</pubDate><description><![CDATA[　　在编写程序代码时用空格代替Tab，可以避免由于编辑器对tab显示方式不同引起的代码错乱，是一种良好的编程风格。　　1. JBuilder　　在Project pane中右键点击项目名称，在弹出的菜单中选择"Properties..."以打开项目属性对话框。再选择 "Formatting" 属性选项，把其中的 "Use tab char" 前面的钩选取消即可。同时还可以在此指定语句块和折行的]]></description><category></category></item><item><title><![CDATA[如何使页面不被浏览器Cache保留]]></title><link>https://blog.youkuaiyun.com/okjohn/article/details/1111696</link><guid>https://blog.youkuaiyun.com/okjohn/article/details/1111696</guid><author>okjohn</author><pubDate>Thu, 24 Aug 2006 11:52:00 +0800</pubDate><description><![CDATA[方法一response.setHeader("Cache-Control","no-cache"); //HTTP 1.1//or response.setHeader("Cache-Control","no-store");//HTTP 1.1response.setHeader("Pragma","no-cache"); //HTTP 1.0response.setDateHeader ("E]]></description><category></category></item></channel></rss>