<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hwssz的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hwssz</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hwssz]]></copyright><item><title><![CDATA[mysql 慢sql优化记录]]></title><link>https://blog.youkuaiyun.com/hwssz/article/details/139848987</link><guid>https://blog.youkuaiyun.com/hwssz/article/details/139848987</guid><author>hwssz</author><pubDate>Fri, 21 Jun 2024 09:41:33 +0800</pubDate><description><![CDATA[马上修改索引 idx_userid(userid,isread,msgnumber)，执行一下只耗时0.5秒了。这里isread和msgnumber两列的值属于枚举类型，加入索引在查询时效果没那么大，而且msgnumber这里是<>，用不上索引。仔细分析是查询语句中用到了非索引字段，如果能把语句中涉及到的字段都加入索引，这样SQL在执行中可以减少回表时间，回表时间在SQL执行中占比挺大的。表上索引有 idx_userid(userid)，这条SQL是一条比较标准的统计SQL，涉及字段也少。]]></description><category></category></item><item><title><![CDATA[mysql in 子查询中 子查询会多次执行 还是只执行一次保存结果]]></title><link>https://blog.youkuaiyun.com/hwssz/article/details/137973633</link><guid>https://blog.youkuaiyun.com/hwssz/article/details/137973633</guid><author>hwssz</author><pubDate>Fri, 19 Apr 2024 18:08:33 +0800</pubDate><description><![CDATA[为了提高性能，可以考虑使用其他查询技术，如`JOIN`或物化子查询（将子查询结果存储在一个临时表中），以减少子查询的执行次数。- 如果子查询是相关子查询（Correlated Subquery），即子查询中引用了外部查询的列，那么子查询将为外部查询的每一行执行一次。- 如果子查询不依赖于外部查询的任何参数，MySQL会认为子查询的结果是固定的，因此它将执行子查询一次，并将结果缓存起来。在MySQL中，`IN`子查询的执行方式取决于查询的具体情况和MySQL的查询优化器的决定。]]></description><category></category></item><item><title><![CDATA[solr functionquery函数查询自定义函数实现]]></title><link>https://blog.youkuaiyun.com/hwssz/article/details/136911862</link><guid>https://blog.youkuaiyun.com/hwssz/article/details/136911862</guid><author>hwssz</author><pubDate>Thu, 21 Mar 2024 16:34:45 +0800</pubDate><description><![CDATA[solr functionquery 自定义函数contain代码示例]]></description><category></category></item><item><title><![CDATA[xss mybatis sql注入漏洞修改小技巧]]></title><link>https://blog.youkuaiyun.com/hwssz/article/details/136474256</link><guid>https://blog.youkuaiyun.com/hwssz/article/details/136474256</guid><author>hwssz</author><pubDate>Tue, 05 Mar 2024 11:54:55 +0800</pubDate><description><![CDATA[mybatis中使用#号占位符会根据参数值类型增加引号，而$占位符则是直接显示原值，所以存在被SQL注入的可能。如果改xml就能修复这个问题，工作量少很多，第2条比较简单，第1条复杂点，试了多次终于可以了，下面是方案，使用eclipse的正则替换，半小时就把这个问题解决了。查看发过来的文档，问题SQL集中在几种SQL，ids参数值'aa','bb' name参数值 aa。等保现在是系统上线的基本要求了，所以 工作中mybatis推荐使用#占位符，避免SQL注入，]]></description><category></category></item><item><title><![CDATA[mysql SQL优化工作记录（1）]]></title><link>https://blog.youkuaiyun.com/hwssz/article/details/136473069</link><guid>https://blog.youkuaiyun.com/hwssz/article/details/136473069</guid><author>hwssz</author><pubDate>Tue, 05 Mar 2024 11:09:11 +0800</pubDate><description><![CDATA[fid是表的主键，按主键查询怎么会出现扫全表的情况了，原因是fid是字符串类型，传值-1 mysql会使用函数将-1转为字符串在进行比较，无法使用到表的索引，改成'-1' 后生产打包，这条慢SQL消失了，问题解决。今天生产数据库预警了，马上拉一下慢日志，定位了慢SQL，发出来大家一起学习。]]></description><category></category></item><item><title><![CDATA[Https SSL证书 本地化OCSP地址是什么]]></title><link>https://blog.youkuaiyun.com/hwssz/article/details/136458464</link><guid>https://blog.youkuaiyun.com/hwssz/article/details/136458464</guid><author>hwssz</author><pubDate>Mon, 04 Mar 2024 17:52:50 +0800</pubDate><description><![CDATA[通过远程复现问题并抓包，我们发现在客户电脑上每次打开专用浏览器都会先访问一个国外证书网站在继续请求，而访问国外证书的网站的不稳定性导致了无法正常打开网站。我们实际使用中发现2000左右的DV证书 证书授权信息地址是国外的，而5000左右的OV证书证书授权信息地址是国内的地址。大家可以看看访问网站的证书的详细信息中授权信息访问那一行，可以知道浏览器在校验这个证书时会去访问的授权信息地址了。在给网站换上了阿里云的OV证书后，地区反馈访问网站已经正常了，这个访问白屏的问题解决了。]]></description><category></category></item><item><title><![CDATA[nginx重试机制导致系统雪崩]]></title><link>https://blog.youkuaiyun.com/hwssz/article/details/123644048</link><guid>https://blog.youkuaiyun.com/hwssz/article/details/123644048</guid><author>hwssz</author><pubDate>Mon, 21 Mar 2022 19:43:13 +0800</pubDate><description><![CDATA[最近在上线项目的过程中遇到由于一个请求大量查询数据库，导致生产系统宕机。后期在把开发、dba、运维都拉在一起开会讨论时，按dba提供的数据库配置 性能后都无法相信这个请求会导致数据库宕机。后面重新复盘，在执行一次这个请求后仔细排查执行过程，才发现是由于nginx自带的请求故障转移导致了这次的宕机。

  我们系统是采用nginx作为负载均衡工具，负责转发请求到后端的应用节点。nginx有一个故障请求重试的机制。在后端节点请求超时时会把该请求自动转发到下一个节点，如果下一个节点返回结果则将该结果返回给用户..]]></description><category></category></item><item><title><![CDATA[Redis sortedset 跳跃表实现代理ip池]]></title><link>https://blog.youkuaiyun.com/hwssz/article/details/123631745</link><guid>https://blog.youkuaiyun.com/hwssz/article/details/123631745</guid><author>hwssz</author><pubDate>Mon, 21 Mar 2022 11:51:16 +0800</pubDate><description><![CDATA[线上系统功能有个场景，需要获取代理IP进行爬取数据。对接的代理IP的返回接口每个IP有存活时间，需要保证一直取到的IP是有效IP，之前代码实现是定时拉取代理IP，并存放在Redis中，存活时间即Redis key的过期时间，取的时候以key的前缀查找随机取一个。这种方式实现简单，也符合需求，但是上线后Redis预警很多，查看慢日志发现大部分是该功能模糊查找key这个问题。

    对于这个场景可以采用Redis 有序队列sorted set来实现，相关命令是zdd-插入，zrange-获取。定时拉...]]></description><category></category></item><item><title><![CDATA[架构问题的探寻]]></title><link>https://blog.youkuaiyun.com/hwssz/article/details/5863582</link><guid>https://blog.youkuaiyun.com/hwssz/article/details/5863582</guid><author>hwssz</author><pubDate>Sat, 04 Sep 2010 18:20:00 +0800</pubDate><description><![CDATA[<br />随想：人人网之新鲜事存储实现 转载自http://www.thinklog.cn/?post=344<br /> <br />现在的SNS太火了，大家都在搞SNS，<br />我也很喜欢用这个，呵呵，从07年开始就一直在用校内网，现在的人人网，<br />每天总想登陆看看好友的新鲜事，<br />最近被问到这么个问题：<br />如何设计实现好友的新鲜事存储，设计一下数据结构，以及实现的方法，<br />说实话对这个用户数量巨大的系统，存储还真是个问题，<br />正好看了一篇文章  《又拍网架]]></description><category></category></item><item><title><![CDATA[Servlet 接触很多，用的也很多，但其中的原理却不是很清楚，补补]]></title><link>https://blog.youkuaiyun.com/hwssz/article/details/5846676</link><guid>https://blog.youkuaiyun.com/hwssz/article/details/5846676</guid><author>hwssz</author><pubDate>Sat, 28 Aug 2010 21:49:00 +0800</pubDate><description><![CDATA[<br /><br />什么是Servlet技术<br />   Servlet技术是Sun公司提供的一种实现动态网页的解决方案，它是基于JAVA编程语言的WEB服务器端编程技术。一个Servlet程序就是一个实现了特殊JAVA接口的类，它由支持Servlet(具有Servlet引擎)的WEB服务器调用和启动运行。一个Servlet程序负责处理它所对应的一个或一组URL访问地址的请求，并接受客户端发出的访问请求信息和产生响应信息<br />       Servlet，可以实现动态的页面，可以针对不同的请求]]></description><category></category></item><item><title><![CDATA[Spring事务管理机制的实现原理-动态代理]]></title><link>https://blog.youkuaiyun.com/hwssz/article/details/5819393</link><guid>https://blog.youkuaiyun.com/hwssz/article/details/5819393</guid><author>hwssz</author><pubDate>Tue, 17 Aug 2010 21:53:00 +0800</pubDate><description><![CDATA[<br />　之前在做项目中遇到spring无法进行事务代理问题，最后发现是因为没有写接口，原因当时明白了，看到这篇文章写的清楚些，转过来<br /> <br />我们先来分析一下Spring事务管理机制的实现原理。由于Spring内置AOP默认使用动态代理模式实现，我们就先来分析一下动态代理模式的实现方 法。动态代理模式的核心就在于代码中不出现与具体应用层相关联的接口或者类引用，如上所说，这个代理类适用于任何接口的实现。下面我们来看一个例子。 public class TxHandler implemen]]></description><category></category></item><item><title><![CDATA[详细介绍spring的事物属性，很详细]]></title><link>https://blog.youkuaiyun.com/hwssz/article/details/5819353</link><guid>https://blog.youkuaiyun.com/hwssz/article/details/5819353</guid><author>hwssz</author><pubDate>Tue, 17 Aug 2010 21:31:00 +0800</pubDate><description><![CDATA[<br />Spring声明式事务让我们从复杂的事务处理中得到解脱。使得我们再也无需要去处理获得连接、关闭连接、事务提交和回滚等这些操作。再也无需要我们在与事务相关的方法中处理大量的try…catch…finally代码。 <br />我们在使用Spring声明式事务时，有一个非常重要的概念就是事务属性。事务属性通常由事务的传播行为，事务的隔离级别，事务的超时值和事务只读标志组成。我们在进行事务划分时，需要进行事务定义，也就是配置事务的属性。 <br />Spring在TransactionDefiniti]]></description><category></category></item><item><title><![CDATA[遍历ArrayList，Iterator和for循环哪个更快？]]></title><link>https://blog.youkuaiyun.com/hwssz/article/details/5802751</link><guid>https://blog.youkuaiyun.com/hwssz/article/details/5802751</guid><author>hwssz</author><pubDate>Tue, 10 Aug 2010 23:11:00 +0800</pubDate><description><![CDATA[<br />经常用，心血来潮搜索下答案，整理下内容<br /> <br />简单：<br />Iterator 主要性能开销在next方法体，其一：对记录集进行检测，如果在迭代的过程中，记录集有被修改，会抛出异常；其二：next方法体内有try...catch方法体，这也会影响性能，JVM不能对try...catch块内的代码进行优化。<br />而for因为不管数据被中途修改，也不进行异常处理，所以当然快啦<br /> <br />详细：<br />ArrayList的iterator是在Abstract]]></description><category></category></item><item><title><![CDATA[MVC模式及MVC1和MVC2模式的区别]]></title><link>https://blog.youkuaiyun.com/hwssz/article/details/5796546</link><guid>https://blog.youkuaiyun.com/hwssz/article/details/5796546</guid><author>hwssz</author><pubDate>Sun, 08 Aug 2010 11:30:00 +0800</pubDate><description><![CDATA[文章分类:Java编程
    MVC模式是"Model-View-Controller"的缩写，中文翻译为"模式-视图-控制器"。MVC应用程序总是由这三个部分组成。Event(事件)导致Controller改变Model或View，或者同时改变两者。只要Controller改变了Models的数据或者属性，所有依赖的View都会自动更新。类似的，只要Controller改变了View，View会从潜在的Model中获取数据来刷新自己。如下图：
 

    MVC模式在具体的应用中，又分为MVC]]></description><category></category></item><item><title><![CDATA[extjs 中store 关于baseParams的一个bug]]></title><link>https://blog.youkuaiyun.com/hwssz/article/details/5770815</link><guid>https://blog.youkuaiyun.com/hwssz/article/details/5770815</guid><author>hwssz</author><pubDate>Wed, 28 Jul 2010 11:38:00 +0800</pubDate><description><![CDATA[<br />困扰于roload参数不变的问题，很幸运在网上找到了答案，贴在下面：<br />http://www.javaeye.com/topic/713163<br /> <br /><br />ExtJs 中，我们使用GirdPanel的时候往往需要给后台传递查询条件。<br />一般是通过修改Store的baseParams。<br /> Js代码 var store = GirdPanel.getStore();  store.baseParams = { 查询条件 }  store.reload]]></description><category></category></item><item><title><![CDATA[Struts 2中的OGNL  精华]]></title><link>https://blog.youkuaiyun.com/hwssz/article/details/5684820</link><guid>https://blog.youkuaiyun.com/hwssz/article/details/5684820</guid><author>hwssz</author><pubDate>Mon, 21 Jun 2010 21:34:00 +0800</pubDate><description><![CDATA[<br />本人是一个EL（Expression Language，以下译为表达式语言）的支持者。因为我对<% %>写法极为反感，忘记了在那本书上看到的一句话——“使用标志（Tag）的一个目的就是避免在JSP页面中出现过多的<%%>的语句，使页面与后台代码分离。”<br />表达式语言主要有以下几大好处：避免(MyType) request.getAttribute()和myBean.getMyProperty()之类的语句，使页面更简洁；支持运算符（如+-*/），比普通的标志具有更高的自由度和更强的功能；]]></description><category></category></item><item><title><![CDATA[Hibernate事务管理 ]]></title><link>https://blog.youkuaiyun.com/hwssz/article/details/5684749</link><guid>https://blog.youkuaiyun.com/hwssz/article/details/5684749</guid><author>hwssz</author><pubDate>Mon, 21 Jun 2010 20:34:00 +0800</pubDate><description><![CDATA[<br />数据库事务ACID特征： <br />Atomic（原子性）：指整个数据库事务是不可分割的工作单元。 <br />Consistency（一致性）：指数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。 <br />Isolation（隔离性）：指的是在并发环境中，当不同的事务同时操纵相同的数据时，每个事务都有各自的完整数据空间。 <br />Durability（持久性）：指的是只要事务成功结束，它对数据库所作的更新就必须永久保存下来。 <br /><br />数据库系统支持两种事务模式]]></description><category></category></item><item><title><![CDATA[数据库索引研究 转帖加原创]]></title><link>https://blog.youkuaiyun.com/hwssz/article/details/5680658</link><guid>https://blog.youkuaiyun.com/hwssz/article/details/5680658</guid><author>hwssz</author><pubDate>Sat, 19 Jun 2010 22:07:00 +0800</pubDate><description><![CDATA[<br />　数据库索引应用 <br />一、索引的概念 <br />　　索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中，索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中，索引也允许数据库程序迅速地找到表中的数据，而不必扫描整个数据库。 <br />二、索引的特点 <br />　　1.索引可以加快数据库的检索速度 <br />　　2.索引降低了数据库插入、修改、删除等维护任务的速度 <br />　　3.索引创建在表上，不能创建在视图上 <br />　　4.索引既可以]]></description><category></category></item><item><title><![CDATA[什么是数据库  复习下数据库的基础]]></title><link>https://blog.youkuaiyun.com/hwssz/article/details/5680598</link><guid>https://blog.youkuaiyun.com/hwssz/article/details/5680598</guid><author>hwssz</author><pubDate>Sat, 19 Jun 2010 21:12:00 +0800</pubDate><description><![CDATA[<br />数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合。这种数据集合具有如下特点：尽可能不重复，以最优方式为某个特定组织的多种应用服务，其数据结构独立于使用它的应用程序，对数据的增、删、改和检索由统一软件进行管理和控制。从发展的历史看，数据库是数据管理的高级阶段，它是由文件管理系统发展起来的。 

数据库的基本结构分三个层次，反映了观察数据库的三种不同角度。 

(1)物理数据层。它是数据库的最内层，是物理存贮设备上实际存储的数据的集合。这些数据是原始数据，是用户加工的对象，由内部]]></description><category></category></item><item><title><![CDATA[spring aop的讲解]]></title><link>https://blog.youkuaiyun.com/hwssz/article/details/5679358</link><guid>https://blog.youkuaiyun.com/hwssz/article/details/5679358</guid><author>hwssz</author><pubDate>Sat, 19 Jun 2010 01:04:00 +0800</pubDate><description><![CDATA[<br /><br />Spring AOP学习笔记 需明确的几个概念： 通知(Advice)：用于告知系统将有哪些新的行为。 切入点(Pointcut):定义了通知应该在应用到那些连接点。 目标对象(Target)：被通知的对象。 代理(Proxy)：将通知应用到目标对象后创建的对象。<br /> <br />需明确的几个概念:<br />l         通知(Advice)：用于告知系统将有哪些新的行为。<br />l         切入点(Pointcut):定义了通知应该在应用到那些连接点。<]]></description><category></category></item></channel></rss>