精华内容
下载资源
问答
  • 改写Riched20

    2004-11-18 11:54:00
    改写Riched20的时候注意处理procedure TRichEditStrings.Insert ,Richedit20版本,对于#13#10的处理似乎和原来的不一样,计算总个数的时候会少一。
    改写Riched20的时候,注意处理procedure TRichEditStrings.Insert ,Richedit20版本,对于#13#10的处理似乎和原来的不一样,计算总个数的时候会少一。
    展开全文
  • UrlReWriteFilter 路径改写

    千次阅读 2012-03-14 15:37:30
    作为一个网站,开发的时候,使用它-UrlReWriteFilter是必须的。 UrlRewriteFilter是一个用于改写URL的Web过滤器,类似于Apache的mod_rewrite。适用于任何Web应用服务器(如Resin,Orion,Tomcat等)。其典型应用...

     

     

    作为一个网站,在开发的时候,使用它-UrlReWriteFilter是必须的。

    UrlRewriteFilter是一个用于改写URL的Web过滤器,类似于Apache的mod_rewrite。适用于任何Web应用服务器(如Resin,Orion,Tomcat等)。其典型应用就把动态URL静态化,便于搜索引擎爬虫抓取你的动态网页。

     

    在这写出使用它的步骤:

     

    1,添加urlrewrite-3.2.0.jar到工程中。

    2,在web.xml中添加过滤器,如下:

     

    <!-- urlRewriteFilter -->
        <filter>
            <filter-name>UrlRewriteFilter</filter-name>
            <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
            <init-param>
                <param-name>logLevel</param-name>
                <param-value>WARN</param-value>
            </init-param>
        </filter>
        
        <filter-mapping>
            <filter-name>UrlRewriteFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>


    在struts2的过滤器中添加<dispatcher>REQUEST</dispatcher>和<dispatcher>FORWARD</dispatcher>

    在我使用的过程中我没有用到上面的配置,但好多人说一定要配置。

     

    <filter>
            <filter-name>struts2</filter-name>
            <filter-class>
                org.apache.struts2.dispatcher.FilterDispatcher
            </filter-class>
        </filter>
    
    
    <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>*.action</url-pattern>
            <dispatcher>REQUEST</dispatcher>
            <dispatcher>FORWARD</dispatcher>
     </filter-mapping>


    接下来编写urlrewrite.xml文件。将文件放在WEB-INF文件夹下。(注意文件名一定要是urlrewrite.xml)文件内容如下:

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN"
            "http://tuckey.org/res/dtds/urlrewrite3.2.dtd">
    <!--
        Configuration file for UrlRewriteFilter
        http://tuckey.org/urlrewrite/
    -->
    
    
    <urlrewrite>
       
        <rule>
            <from>/noParams.html</from>
            <to type="forward">noParams.action</to>
        </rule>
        
        <rule>
            <from>^/withParams/([a-zA-Z0-9]+).html$</from>
            <to type="forward">withParams.action?name=$1</to>
        </rule>
        
        <rule>
            <from>^/withParams2/([a-zA-Z0-9]+).html$</from>
            <to type="redirect">%{context-path}/withParams.action?name=$1</to>
        </rule>
        
    </urlrewrite>


    <from>标签中的路径的格式就是我们要改写的的样式。<to>标签中的实际是我们真实的请求。这里我们可以简单的认为,就是通过这个配置文件,将我们请求的美化后的伪静态html页面,映射成为真实的action请求

    <to>有两种type,分别为:forward和redirect。

     

    如果使用forward,则限定<to>中的请求必须和urlRewriteFilter在同一上下文环境中。而redirect则没有限制,可以跳转到任何其他的工程中。

    另外,<from>标签中使用的是正则表达式,即^和$之间的内容。关于正则表达式,这里不再进行详细说明。

    最后,from可以包含多个正则表达式,其对应的参数,在<to>中,可以用$1,$2等按照顺序进行接收

     

     

    网上的朋友遇见常见问题分享:


    1,使用URL美化器后,跳转页面报404错误。这里要注意的是,在struts2的过滤器中,如果没有配置<dispatcher>REQUEST</dispatcher>,redirect方式是不可用的。如果没有添加<dispatcher>FORWARD</dispatcher>,forward方式是不可用的。所以前面说明了,必须要在struts2中添加这两点。另外,网上也有人说要也添加<dispatcher>INCLUDE </dispatcher> 。但是目前还不知道这个是做什么用的。没有添加,也没有出现问题。

    2,使用redirect方式,相比forward方式,性能较低。所以如果系统到处都要使用URL美化器,要慎重选择使用redirect。

    3,如果使用forward方式,则要处理好路径方面的问题。因为如果经过美化,URL的路径中多了或者少了几个目录,其跳转后的页面中,使用相对路径的资源(例如图片),就会请求不到,原因就是路径是以当前的URL路径为基础进行计算位置的。

    解决方法:1,在跳转的jsp页面中,资源的路径位置使用绝对路径。2,不要在不同目录之间使用forward做请求转发,保证当前路径不发生变化。3,改用redirect方式。

     

     

     

    展开全文
  • ClamWin杀毒程序的改写

    2015-04-02 00:30:08
    1 程序安装程序安装的时候需要注意的事项 在上图中可以看到两个勾选项,这两项在改写的程序中不需要。 上图一个勾选项中写的病毒库文件是需要下载的,但在改写程序中不需要连接网络下载病毒库文件,只需要先准备一些...

    简介:ClamWin是一款开源的杀毒程序,这款程序可以从SourceForge上通过Subversion for windows下载。下面是对ClamWin杀毒软件改写。

    1 程序安装

    程序安装的时候需要注意的事项

    在上图中可以看到两个勾选项,这两项在改写的程序中不需要。

    这里写图片描述

    上图一个勾选项中写的病毒库文件是需要下载的,但在改写程序中不需要连接网络下载病毒库文件,只需要先准备一些病毒库样本就可以了。

    这里写图片描述

    这表示正在从远程的病毒库下载病毒样本。

    2 获取ClamWin的源代码

    (1) 下载Subversion的客户端
    (2) 下载VisualSVN的客户端并安装
    (3) 打开VS2013,在菜单栏上找到VisualSVN,然后Checkout该项目,项目地址是
    https://clamwin.svn.sourceforge.net/svnroot/clamwin
    (4) 耐心等待项目下载完毕,该项目有130Mb左右
    由于不太会使用Subversion,所以直接通过VisualSVN将项目Checkout到了本地了

    3 病毒文件的File Verification

    ClaimWin是基于ClaimAV改写,因此该网站将有所怀疑的文件发送给了ClaimAV病毒库

    4 编译ClamWin的方法

    由于ClamWin是基于ClamAV开发,所以在其开发文档中有ClamAV的文件。
    根据SVN的定义,trunck目录下是当前发布版本,因此找到trunck目录下的clamwin,其中的Install文件详细叙述了个人二次开发的方法,由于是英文,所以自己需要记录一下编译的方法。

    准备工作

    1. 由于Windows下的托盘图标需要用到Python,所以必须安装Python 2.2及其以上版本。
    2. 下载并安装wxPython,它是Python编程语言的一个GUI工具箱。要求的wxPython的版本号是2.4.2.4 ,作者特别声明不要使用wxPython 2.5版本,因为不兼容。(不过这项内容好像并不是必须的)
    3. 如果要编译安装程序,需要InnoSetup5和IsTool。
    4. 需要clamav的源代码。
      5.如果不会编译,请直接使用build.bat文件。

    说实话,已经好几天过去了,我确实仍然不会编译,主要原因是我对Python和wxPython都不熟悉,而且对于Linux我也是一知半解。但是,当我打开build.bat文件的时候,眼前豁然开朗。

    原来的配置 更改后的配置
    set CYGWINDIR=d:\cygwin set CYGWINDIR=C: \cygwin
    set THISDIR=l:\Projects\ClamWin\0.90\clamwin set THISDIR=D:\Project\clamwin\trunck\clamwin
    set ISTOOLDIR=C:\Program Files (x86)\ISTool set ISTOOLDIR=C:\Program Files (x86)\ISTool
    set UPX_UTIL=C:\tools\upx.exe(脱壳工具) UPX下载
    set VCINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 8\VC set VCINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 8\VC
    set MSSDKDIR=C:\Program Files\Microsoft Platform SDK
    展开全文
  • mysql like为什么不走索引,如何改写

    千次阅读 2018-10-12 11:53:04
    如果出现了这个值,那应该注意,根据查询的具体情况可能需要添加索引来改进能。 Impossible where 这个值强调了where语句会导致没有符合条件的行。 Select tables optimized away 这个值意味着仅...

    本文旨在用最通俗的语言讲述最枯燥的基本知识:

    这个话题比较有意思。
    昨天中午吃完饭间突然有个同事蹦出了一句:“like有索引吗?”,我顺口就说没有,另一个同事反驳说有啊,还有些同事说看情况的有,这下有点懵逼了,都不知道那种说法是正确的,于是决定花了个半小时来研究验证这个问题,终于得到答案。

    怎么验证的呢?

    坊间有传言:MySQL性能优化有个神器,叫做explain,它可以对select语句进行分析并且输出详细的select执行过程的详细信息,让开发者从这些信息中获得优化的思路。

    下面来讲讲这个MySQL提供的explain命令:

    语法:explain SQL语句
    例如:

    1explain select * from user where id=1

     执行完毕之后,它的输出有以下字段:

    • id
    • select_type
    • table
    • partitions
    • type
    • possible_keys
    • key
    • key_len
    • ref
    • rows
    • Extra

    要想知道explain命名怎么使用,就必须把这些字段搞清楚

    1. id

    SELECT查询的标识符, 每个SELECT语句都会自动分配一个唯一的标识符

    2. select_type

    每个select查询字句的类型,具体类型以及对应作用如下表:

    类型名 解释
    SIMPLE 简单SELECT,不使用UNION或子查询等
    PRIMARY 查询中若包含任何复杂的子部分,最外层的select被标记为PRIMARY
    UNION UNION中的第二个或后面的SELECT语句
    DEPENDENT UNION UNION中的第二个或后面的SELECT语句,取决于外面的查询
    UNION RESULT UNION的结果
    SUBQUERY 子查询中的第一个SELECT
    DEPENDENT SUBQUERY 子查询中的第一个SELECT,取决于外面的查询
    DERIVED 派生表的SELECT, FROM子句的子查询
    UNCACHEABLE SUBQUERY 一个子查询的结果不能被缓存,必须重新评估外链接的第一行

    3. table

    显示这一行的数据是查哪张表的,不过有时短路显示的不是真实的表名。

    4. partitions

    匹配的分区(这个目前用处不大)

    5. type

    访问类型,表示MySQL在表中找到所需行的方式,对应的值和解释如下:

    类型名 优级别 解释
    system 1 表仅有一行
    const 2 表最多有一个匹配行,在查询开始时即被读取
    eq_ref 3 使用primary key或者unique key作为多表连接的条件,仅从该表中读取一行
    ref 4 作为查询条件的索引在每个表匹配索引值的行从表中读取出来
    fulltext 5 全文索引检索
    ref_or_null 6 和ref一致,但增加了NULL值查询支持
    index_merge 7 表示使用了索引合并优化方法
    unique_subquery 8 使用了替换了in子查询
    index_subquery 9 使用了替换了in子查询,但只适用于子查询中的非唯一索引
    range 10 只检索给定范围的行,使用一个索引来选择行
    index 11 全表扫描,但扫描表的方式是按索引的次序进行
    ALL 12 全表扫描的方式找到匹配的行

    type作为访问类型,其值代表着当前查询所用的类型,是体现性能的一个重要指标,从表中可以看到,从上到下,扫描表的方式越来越宽,性能也就越来越差,因此,对于一个查询,最好能保持在range级别以上。

    6. possible_keys

    主动指出查询能用哪个索引在表中找到记录
    也就是会列出在查询中的字段中有索引的字段,但不一定被查询所用。

    7. key

    显示再查询中实际使用的索引/键,如果没有索引,则显示NULL。
    但如果想强制查询中使用或忽视possible_keys列中的索引,则可以在查询中使用FORCE INDEX、USE INDEX或者IGNORE INDEX。

    8. key_len

    表示索引中使用的字节数。

    9. ref

    表示哪些列或常量被用于查找索引列上的值。

    10. rows

    显示当前查询估算到的查找到匹配记录所需的记录行数。

    11. Extra

    显示当前查询所用的解决方式,它有以下几种情况:

    类型名 解释
    Using where 列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的,
    Using temporary 表示MySQL需要使用临时表来存储结果集,常见于排序和分组查询
    Using filesort MySQL中无法利用索引完成的排序操作称为“文件排序”
    Using join buffer 改值强调了在获取连接条件时没有使用索引,并且需要连接缓冲区来存储中间结果。如果出现了这个值,那应该注意,根据查询的具体情况可能需要添加索引来改进能。
    Impossible where 这个值强调了where语句会导致没有符合条件的行。
    Select tables optimized away 这个值意味着仅通过使用索引,优化器可能仅从聚合函数结果中返回一行

    讲完了语法,我们来实际操作一波,首先创建个表:

    1-- 创建表
    2CREATE TABLE test(
    3id INT(11) NOT NULL AUTO_INCREMENT,
    4uname VARCHAR(255),
    5PRIMARY KEY(id) 
    6);
    复制代码

    然后给uname字段加上索引:

    1-- 添加索引
    2ALTER TABLE test ADD INDEX uname_index (uname);
    复制代码

    查看一下索引是否添加成功:

    1-- 查看是否有索引
    2SHOW INDEX FROM test;
    复制代码

    输出结果为:

     

    可以看出索引已经创建成功,接下来添加一些数据:

    1-- 添加一些数据
    2INSERT INTO test VALUES(1,'jay');
    3INSERT INTO test VALUES(2,'ja');
    4INSERT INTO test VALUES(3,'bril');
    5INSERT INTO test VALUES(4,'aybar');
    复制代码

    一切准备就绪,下面用explain这个命令来探究一些like语句是否有索引,
    like有四种情况,分别为没有%、 %% 、左%、右%、

    1. like 字段名

    1EXPLAIN SELECT * FROM test WHERE uname LIKE 'j'; 
    复制代码

    输出为:

     

    可以看出:
    type的值为:range,key的值为uname_index,也就是说这种情况下,使用了索引。

    2. like %字段名%

    1EXPLAIN SELECT * FROM test WHERE uname LIKE '%j%'; 
    复制代码

    输出为:

     

    可以看出:
    type的值为ALL也就是全表扫描,而且key的值为NULL,也就是说没用到任何索引。

    3. like %字段名

    1EXPLAIN SELECT * FROM test WHERE uname LIKE '%j'; 
    复制代码

    输出为:

     

    可以看出:
    type的值为ALL,key的值为NULL,同样没用到索引。

    4. like 字段名%

    1EXPLAIN SELECT * FROM test WHERE uname LIKE 'j%'; 
    复制代码

    输出为:

     


    可以看出:
    type的值为:range,key的值为uname_index,也就是说这种情况下,使用了索引。

    5. 用其他方法实现:LOCATE('substr',str,pos)方法

    SELECT LOCATE('xbar',`foobar`); 
    ###返回0 
    
    SELECT LOCATE('bar',`foobarbar`); 
    ###返回4
    
    SELECT LOCATE('bar',`foobarbar`,5);
    ###返回7

    备注:返回 substr 在 str 中第一次出现的位置,如果 substr 在 str 中不存在,返回值为 0 。如果pos存在,返回 substr 在 str 第pos个位置后第一次出现的位置,如果 substr 在 str 中不存在,返回值为0。

    SELECT `column` FROM `table` WHERE LOCATE('keyword', `field`)>0

    备注:keyword是要搜索的内容,field为被匹配的字段,查询出所有存在keyword的数据

    5.2 FIND_IN_SET(str1,str2)方法

    返回str2中str1所在的位置索引,其中str2必须以","分割开。

    SELECT * FROM `person` WHERE FIND_IN_SET('apply',`name`);

    总结

    由上面的试验可以总结出like是否使用索引的规律:
    like语句要使索引生效,like后不能以%开始,也就是说 (like %字段名%) 、(like %字段名)这类语句会使索引失效,而(like 字段名)、(like 字段名%)这类语句索引是可以正常使用,也可以换LOCATE的写法、FIND_IN_SET

    其它

    为了查证like索引的问题,研究了MySQL神奇explain,但explain不仅仅只能检查索引使用情况,还可以提供很多其它的性能优化方面的帮助,至于具体的使用,其实跟上面讲的一样,把explain结果列出来,然后顺藤摸瓜查阅相关的字段就可以得到相应的内容。


     

    展开全文
  • 小弟的作品:http://robot.dgut.edu.cn/index.php/Admin/Index/add_content (求大佬们千万别黑了,虽然到处都是... 个人看法:主要是为了后台可以进行编辑,就好比你公众号写文章,也是基于富文本编辑器来写的。 ...
  • 有些时候,根据设计需求可能会想修改IP核生成的源文件(只能修改未加密文件),包括HDL文件和XDC约束文件。 这种修改不能直接修改源文件,因为后续设计流程中,IP可能会复位或重新生成,导致修改操作被复原。...
  • 文章目录1 接口回调的改写(1)使用suspendCoroutine(2)使用suspendCancellableCoroutine2 RxJava的订阅回调转换成挂起函数总结: 1 接口回调的改写 一般接口回调的场景,我们都可以改成挂起函数的形式,比如网络...
  • 大致就是自定义一个BlockButton继承UIButton,然后里面用 addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents 这个方法触发block,代码很简单,不多说了 ...
  • 关于qtablewidget中单元格按键改写

    千次阅读 2012-08-11 14:10:06
    主要功能是qtbalewidget的单元格编辑状态下,实现按键盘KEY_A改写KEY_B,MD,艹..首先骂两句..这个问题折腾我接近一个星期时间,一方面自己是新手,对控件以及QT事件信息处理机构不熟悉,导致无论是event 还是...
  • vivado 编辑与改写IP核源文件

    千次阅读 2020-07-21 15:50:43
    有些时候,根据设计需求可能会想修改IP核生成的源文件(只能修改未加密文件),包括HDL文件和XDC约束文件。 这种修改不能直接修改源文件,因为后续设计流程中,...
  • credential Provider 简易改写攻略

    千次阅读 2014-07-14 23:07:53
    作为一个比较新的技术(个人感觉现在中国的局域网上能找的信息中,只要是xp之后的技术,资料都是少得可怜。),资料少的可怜。百度,这个关键词到了第三页的信息中中文信息就没有用了。谷歌被
  • Oracle 查询优化器 -- 改写查询语句

    千次阅读 2015-07-10 17:17:25
    当我们执行一条查询语句的时候,我们只告诉 Oracle 我们想哪些数据,至于数据哪里,怎么找,那是查询优化器的事情,优化器需要改写查询语句,决定访问路径(如:全表扫描,快速全索引扫描,索引扫描),决定表...
  • 通过WriteProcessMemory改写进程的内存

    千次阅读 2017-04-18 14:14:08
    这个程序的功能是窗体上建立两个button,点击不论什么一个button都会弹出一个对话框,输出button回调函数的wParam、lParam參数的值,外加一段字符串“mess”,我们改动的就是字符串“mess”的第一个字符“m”为...
  • 批量读取文件名和批量改写文件名

    千次阅读 2018-09-25 23:10:32
    (1)新建文本文档文本文档里输入: dir /a-d /b *.mp4&gt;src.txt echo 收集文件名成功! pause (2)保存为“createsrc.bat”。 文件名字被提取到当前文件夹的 src.txt 里面了!也可以提取某类型的文件...
  • 灵活运用runtime改写系统的方法

    千次阅读 2016-03-07 11:10:19
    有些时候数组越界了,但我们不想让程序崩溃。越界了,就置空,程序还能正常运行。那么如何避免数组越界引起的程序崩溃?重写NSArray的objectAtIndex方法,然后里面写一些自己的操作,但是我们并不知道系统的...
  • CListCtrl列表中,改写几列的文字颜色 ListCtrl控件绘画前处理NM_CUSTOMDRAW消息。 告诉Windows我们想对每个Item处理NM_CUSTOMDRAW消息。当这些消息中的一个到来,告诉Windows我们想每个SubItem的绘制前处理这...
  • Qt学习之路(24): QPainter(改写paintEvent)多些大家对我的支持啊!有朋友也提出,前面的几节有关event的教程缺少例子。... 有人问豆子拿Qt做什么,其实,豆子就是做一个Qt的画图程序,努力朝着Photosh...
  • 用MATLAB改写DICOM文件中的图像数据

    千次阅读 2018-01-25 13:33:29
    前段时间由于一项TASK的需求,根据原有的一组DICOM文件的信息将一组另外生成的二维图像数据重新写成DICOM文件格式以作后续使用,我采取了通过MATLAB写文件的方式把这个二维图像数据写到原DICOM文件中存储图像数据...
  • 深度学习中的注意力机制(2017版)

    万次阅读 多人点赞 2017-12-10 21:57:17
    没有引入注意力的模型输入句子比较短的时候问题不大,但是如果输入句子比较长,此时所有语义完全通过一个中间语义向量来表示,单词自身的信息已经消失,可想而知会丢失很多细节信息,这也是为何引入注意力模型的...
  • oracle标量子查询简介和表连接改写

    千次阅读 2016-08-24 12:44:46
    Oracle允许select子句中包含单行子查询,这个也就是oracle的标量子查询,标量子查询有点类似于外连接,当使用到外连接时我们可以灵活的将其转化为标量子查询。 SQL> create table t1 as select * from all_...
  • 本文简述了SOAR的下载安装和使用方法,并介绍了SOAR的基础设置和应用的四个...这是一款智能SQL优化和改写工具,开发人员可以直接通过此工具快速的对自己的SQL进行质量检查,生成评估报告,防止将问题SQL带到线上从...
  • 今天博客https://www.jianshu.com/p/7645a5ea7f46一文中看到博主对循环中continue和break的看法:尽量避免使用continue和break,觉得挺有意思,特记录下。避免使用continue和break。循环语句(for,while)里面...
  • 所以具体改动的代码以中期阶段项目里面的源码文件为准,项目源码下载请移步《改写《魔塔》中篇06:善后工作和注意事项(附:中期阶段项目下载)》。还有我们对原书中的项目进行了一些改动,包括用CCArray替换了...
  • 什么要改MSSQL是因为MSSQL比Access储存有更多的优势 最被大家所认知的就是存储过程了 所以access版的程序改mssql的话 那首先应该将最常用的,不可变的sql语句转化为存储过程 又因为mssql支持参数化的sql...
  • 改写《魔塔》后篇05:添加对象层

    千次阅读 2013-04-06 11:27:26
    终于可以接着往下写了,这两天查找错误可算把我害惨了,下面会用红字详细说明是什么地方出了问题。  好了,我们再往游戏里添加一个NPC对象。我们先把npc.png图片复制到我们得项目中。这里我们用到Tiled编辑器...
  • 记首次开博  给大家分享最近踩到的一个vue开发中的坑 最近跳槽换了一家公司,技术栈也从...解决办法就是到webpack的配置文件中禁止使用模块热重载,总之这样其实并不会影响生产上,只是开发的时候注意下就行
  • 里面添加通道注意力机制和空间注意力机制 通道注意力机制 class ChannelAttention(nn.Module): def __init__(self, in_planes, ratio=16): super(ChannelAttention, self).__init__() self.avg_pool = nn...
  • 注意:题目指针的方式有
  • 4、IDEA默认快捷方式 1. Ctrl + Space  完成类、方法、变量名称的自动...跳转到指定的java文件(其它文件)这个功能很方便,至少我不用每回都一长串的文件列表里找寻我想编辑的类文件和jsp文件了  3. Ctrl

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 114,256
精华内容 45,702
关键字:

在改写的时候要注意什么