<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[日三省乎己]]></title><description><![CDATA[循路觅宗师，形影不相离，师知吾亦知，吾乃成宗师。]]></description><link>https://blog.youkuaiyun.com/shkkhd</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; shkkhd]]></copyright><item><title><![CDATA[java系统性能优化之mysql数据库优化]]></title><link>https://blog.youkuaiyun.com/shkkhd/article/details/123949819</link><guid>https://blog.youkuaiyun.com/shkkhd/article/details/123949819</guid><author>shkkhd</author><pubDate>Thu, 07 Apr 2022 00:41:23 +0800</pubDate><description><![CDATA[java开发的应用系统经常面临系统响应时间过长的情况，可能的原因有很多方面，比如网络延迟、代码逻辑不合理，数据量太大、架构设计不合理、慢查询等。在优化的时候不能一上来就扑倒sql调优上，要整体查看性能损耗最大的地方在哪里，然后对症下药。

今天主要探讨的是从数据库下手可以做哪些优化。对mysql数据库进行优化也有以下几个维度来进行。从上到下，优化的投入产出比越来越小，意味着sql与索引层面的优化消耗的成本低，带来的回报大，而硬件与操作系统层面的优化成本高，回报相对没有那么大。





1.SQL与索引

]]></description><category></category></item><item><title><![CDATA[java的static类使用]]></title><link>https://blog.youkuaiyun.com/shkkhd/article/details/6088731</link><guid>https://blog.youkuaiyun.com/shkkhd/article/details/6088731</guid><author>shkkhd</author><pubDate>Tue, 21 Dec 2010 11:08:00 +0800</pubDate><description><![CDATA[1.static类只能是内部类，不能是外部类

2.static类可以有static成员（包含变量和方法），非static类不能有static成员（包含变量和方法）

3.static内部类只能访问外部类的静态成员（包含变量和方法），不能访问非静态成员（包含变量和方法）]]></description><category></category></item><item><title><![CDATA[java可变参数使用]]></title><link>https://blog.youkuaiyun.com/shkkhd/article/details/6067921</link><guid>https://blog.youkuaiyun.com/shkkhd/article/details/6067921</guid><author>shkkhd</author><pubDate>Fri, 10 Dec 2010 15:46:00 +0800</pubDate><description><![CDATA[1.java将可变参数当做数组处理，当同一个类中有如下情况时public void fun(int ...args){...}public void fun(int[] args){...}会有编译错误提示void fun(int ...args)和void fun(int[] args)重复2.方法的参数中只能有一个可变参数，并且可变参数必须放在参数列表最后的位置public void fun(int,arg0,String arg1,int ...args){...}3.当调用方法同时符合含有可变参数的]]></description><category></category></item><item><title><![CDATA[weblogic自动部署没有生效的情况]]></title><link>https://blog.youkuaiyun.com/shkkhd/article/details/5188987</link><guid>https://blog.youkuaiyun.com/shkkhd/article/details/5188987</guid><author>shkkhd</author><pubDate>Thu, 14 Jan 2010 11:03:00 +0800</pubDate><description><![CDATA[     在Myeclipse中选择weblogic做web服务器，然后将要部署的项目发布到weblogic上，项目的war包就会自动出现在%weblogic_home%/user_projects/domains/base_domain/autodeploy文件夹下。这样就可以完成项目自动部署到weblogic中，不需要在weblogic console中手动配置。但这种方法经常出现部署后没有生]]></description><category></category></item><item><title><![CDATA[标签遇到的怪问题]]></title><link>https://blog.youkuaiyun.com/shkkhd/article/details/5107425</link><guid>https://blog.youkuaiyun.com/shkkhd/article/details/5107425</guid><author>shkkhd</author><pubDate>Wed, 30 Dec 2009 16:58:00 +0800</pubDate><description><![CDATA[今天解决了一个令我相当无语的struts2标签使用问题，程序方面一切再正常不过了，就像大家都知道1+1=2，但计算机执行结果却不等于2，无论怎样按照常规方法来修改出问题的地方，结果都超出常人的理解范围。废话不多说，先描述一下问题特征： 在一个jsp界面上按照这样的方式使用select标签，在后台action中对应有quickCondition的属性，假设在下拉框中选择“1”，按道理传到后台]]></description><category></category></item><item><title><![CDATA[递归删除目录和文件]]></title><link>https://blog.youkuaiyun.com/shkkhd/article/details/4758567</link><guid>https://blog.youkuaiyun.com/shkkhd/article/details/4758567</guid><author>shkkhd</author><pubDate>Mon, 02 Nov 2009 17:25:00 +0800</pubDate><description><![CDATA[前几天写了个递归删除目录和文件的程序，将一个和svn绑定的文件夹中的.svn删除，用来取消svn的绑定。修改一下函数参数可以用来递归删除一个文件夹和子文件夹下某一个同名目录（包括子目录和文件）。使用方法是传递函数的参数：要删除的目录或文件的绝对路径和名称。代码如下：CodeCode highlighting produced by Actipro CodeHighlighter]]></description><category></category></item><item><title><![CDATA[调用聚合函数的错误用法]]></title><link>https://blog.youkuaiyun.com/shkkhd/article/details/4758542</link><guid>https://blog.youkuaiyun.com/shkkhd/article/details/4758542</guid><author>shkkhd</author><pubDate>Mon, 02 Nov 2009 17:22:00 +0800</pubDate><description><![CDATA[ 如果查询中包含一个聚合函数，而所选择的列并不在聚合函数中，那么这些列就必须在GROUP BY子句中；否则就会出现下面的错误：ORA-00937: not a single-group group function。例如，下面这个查询选择product_type_id列和AVG(price)，但是却没有使用一个包含product_type_id的GROUP BY子句： ]]></description><category></category></item><item><title><![CDATA[SqlServer2005函数学习]]></title><link>https://blog.youkuaiyun.com/shkkhd/article/details/4758529</link><guid>https://blog.youkuaiyun.com/shkkhd/article/details/4758529</guid><author>shkkhd</author><pubDate>Mon, 02 Nov 2009 17:20:00 +0800</pubDate><description><![CDATA[--聚合函数use pubsgoselect avg(distinct price)  --算平均数from titleswhere type=businessgo use pubsgoselect max(ytd_sales)  --最大数from titlesgo use pubsgoselect min(ytd_sales) --最小数from titlesgo use pubsgose]]></description><category></category></item><item><title><![CDATA[Powerdesigner引起的Word使用问题]]></title><link>https://blog.youkuaiyun.com/shkkhd/article/details/4758460</link><guid>https://blog.youkuaiyun.com/shkkhd/article/details/4758460</guid><author>shkkhd</author><pubDate>Mon, 02 Nov 2009 17:08:00 +0800</pubDate><description><![CDATA[      我的电脑经常安装或卸载一些软件，有些软件安装之后会和其他软件冲突，改变了其他软件的注册表或重要的信息。前两天我的word2003突然出现了一些问题，感觉莫名奇妙。我查了资料，最后找到问题的原因，总结一下。1.文档内容无法选中以及点击鼠标没反应，不能用鼠标灵活的控制编辑的部分。上网查了一下，原来是安装powerdesigner后就会出现这个问题。解决办法：运行regedit.ex]]></description><category></category></item><item><title><![CDATA[通过一道笔试题理解c#静态构造函数 ]]></title><link>https://blog.youkuaiyun.com/shkkhd/article/details/4752914</link><guid>https://blog.youkuaiyun.com/shkkhd/article/details/4752914</guid><author>shkkhd</author><pubDate>Sat, 31 Oct 2009 23:36:00 +0800</pubDate><description><![CDATA[ 今天看到了一道c#笔试题，是关于静态字段和静态构造函数初始化的。静态函数是c#新的特性，如果不知道它的初始化顺序就会对这道题晕头转向。对于静态构造函数可以参考http://www.cnblogs.com/michaelxu/archive/2007/03/29/693401.html。下来从这道笔试题来分析一下静态构造函数的初始化顺序。 1 class A 2 { 3     pub]]></description><category></category></item><item><title><![CDATA[C#中const和readonly的区别 ]]></title><link>https://blog.youkuaiyun.com/shkkhd/article/details/4752910</link><guid>https://blog.youkuaiyun.com/shkkhd/article/details/4752910</guid><author>shkkhd</author><pubDate>Sat, 31 Oct 2009 23:36:00 +0800</pubDate><description><![CDATA[ class Program1{    public const string name = "小李";private static readonly string age;private static string sex;//readonly是运行常量private readonly string address = new string("中国广东");//c]]></description><category></category></item><item><title><![CDATA[编程中遇到的问题（二）]]></title><link>https://blog.youkuaiyun.com/shkkhd/article/details/4752907</link><guid>https://blog.youkuaiyun.com/shkkhd/article/details/4752907</guid><author>shkkhd</author><pubDate>Sat, 31 Oct 2009 23:35:00 +0800</pubDate><description><![CDATA[ 1将数据库中表通过sqldataAdapter保存到dataTable就可以用datatable.select()在内存中查找符合条件的行，不用读数据库就可以查找。昨天写了一个到数据库查找重复主键的代码，结果主键冲突在datatable中添加行时就被抛出了，白写了一大堆。。。2FileUpload控件获取带路径的文件名用FileUpload1.PostedFile.FileName就行了]]></description><category></category></item><item><title><![CDATA[编程中遇到的问题（一）]]></title><link>https://blog.youkuaiyun.com/shkkhd/article/details/4752905</link><guid>https://blog.youkuaiyun.com/shkkhd/article/details/4752905</guid><author>shkkhd</author><pubDate>Sat, 31 Oct 2009 23:33:00 +0800</pubDate><description><![CDATA[ 1.gridView,detailView更新、删除、取消、编辑、选择等按钮按下时都要先刷新页面，再执行相应事件的操作，如果在page_Load中有数据绑定操作，则要考虑数据绑定对功能操作的影响。今天就遇到这样的问题，detailsView插入时从控件中得到的值为空，原因是点插入按钮时，页面现刷新，detailsView重新绑定，输入的值就没有了。2window.showdialog(]]></description><category></category></item><item><title><![CDATA[cnblogs转移到csdn上来]]></title><link>https://blog.youkuaiyun.com/shkkhd/article/details/4749013</link><guid>https://blog.youkuaiyun.com/shkkhd/article/details/4749013</guid><author>shkkhd</author><pubDate>Fri, 30 Oct 2009 17:24:00 +0800</pubDate><description><![CDATA[      我有两个技术blog，一个是csdn，另一个是博客园。前一个是大学里记录下的点滴心得，后来工作后发现博客园是个不错的网站，加上有点喜新厌旧，就把后来的文章发到博客园。         毕业一年多蓦然回首，再次看到以前的博客，发现学生时幼稚而认真的文字是多么可爱。时间在流逝，人在改变，为了能流畅展示我的技术成长轨迹，我决定这两天把博客园上的文章陆续迁移过来，在这里重新营造自己的技术小]]></description><category></category></item><item><title><![CDATA[atoi和itoa函数]]></title><link>https://blog.youkuaiyun.com/shkkhd/article/details/1870215</link><guid>https://blog.youkuaiyun.com/shkkhd/article/details/1870215</guid><author>shkkhd</author><pubDate>Tue, 06 Nov 2007 19:46:00 +0800</pubDate><description><![CDATA[以下是我自己写的atoi()和itoa() int atoi(const char *string){     int i = 0;     int value = 0;     while(string[i]!=/0)     {          value = value*10 + string[i] -0;          i++;     }        return v]]></description><category></category></item><item><title><![CDATA[指针与引用的区别]]></title><link>https://blog.youkuaiyun.com/shkkhd/article/details/1839854</link><guid>https://blog.youkuaiyun.com/shkkhd/article/details/1839854</guid><author>shkkhd</author><pubDate>Tue, 23 Oct 2007 16:25:00 +0800</pubDate><description><![CDATA[《高质量c++编程指南》中提到的 指针与引用的区别：（1）引用被创建的同时必须被初始化（指针则可以在任何时候被初始化）。（2）不能有NULL引用，引用必须与合法的存储单元关联（指针则可以是NULL）。（3）一旦引用被初始化，就不能改变引用的关系（指针则可以随时改变所指的对象）。引用的主要功能是传递函数的参数和返回值。]]></description><category></category></item><item><title><![CDATA[理解临时对象的来源 ]]></title><link>https://blog.youkuaiyun.com/shkkhd/article/details/1837881</link><guid>https://blog.youkuaiyun.com/shkkhd/article/details/1837881</guid><author>shkkhd</author><pubDate>Mon, 22 Oct 2007 19:23:00 +0800</pubDate><description><![CDATA[ 当程序员之间进行交谈时，他们经常把仅仅需要一小段时间的变量称为临时变量。例如在下面这段swap(交换)例程里： templatevoid swap(T& object1, T& object2){  T temp = object1;  object1 = object2;  object2 = temp;}    通常把temp叫做临时变量。不过就C++而言，t]]></description><category></category></item><item><title><![CDATA[开闭原则与工厂模式]]></title><link>https://blog.youkuaiyun.com/shkkhd/article/details/1831144</link><guid>https://blog.youkuaiyun.com/shkkhd/article/details/1831144</guid><author>shkkhd</author><pubDate>Thu, 18 Oct 2007 15:42:00 +0800</pubDate><description><![CDATA[开闭原则很简单，一句话：“Closed for Modification; Open for Extension”——“对变更关闭；对扩展开放”。  结合工厂模式的设计，如果系统需要加入一个新的产品，那么所需要的就是向系统中加入一个这个产品类以及它所对应的工厂类。没有必要修改客户端，也没有必要修改抽象工厂角色或者其他已有的具体工厂角色。对于增加新的产品类而言，这个系统完全支持“开-闭”原则。]]></description><category></category></item><item><title><![CDATA[java中返回局部对象问题]]></title><link>https://blog.youkuaiyun.com/shkkhd/article/details/1829584</link><guid>https://blog.youkuaiyun.com/shkkhd/article/details/1829584</guid><author>shkkhd</author><pubDate>Wed, 17 Oct 2007 16:57:00 +0800</pubDate><description><![CDATA[Class ObjectA...{}Public Class Test...{         Public static ObjectA  Factory()...{                  return new ObjectA();        }} 上面例子中Test类中Factory方法返回一个局部的ObjectA对象，我就产生疑问，局部对象在方法外不是销毁了吗，这]]></description><category></category></item><item><title><![CDATA[重定向和转发的区别]]></title><link>https://blog.youkuaiyun.com/shkkhd/article/details/1820497</link><guid>https://blog.youkuaiyun.com/shkkhd/article/details/1820497</guid><author>shkkhd</author><pubDate>Thu, 11 Oct 2007 17:20:00 +0800</pubDate><description><![CDATA[ 重定向：以前的request中存放的变量全部失效，并进入一个新的request作用域。转发：以前的request中存放的变量不会失效，就像把两个页面拼到了一起。正文开始： 先是看上去不同，他们的调用分别如下：request.getRequestDispatcher("apage.jsp").forward(request, response);//转发到apage.jspresp]]></description><category></category></item></channel></rss>