Results matching “key” from 一个不留_YiGeBuLiu
原来网站是我用rails程序写的,发表的文章URL都是类似这样的http://yigebuliu.com/article/show/aritcle_id
现在我改用movable type,虽说原来写的文章数据都保留了,但用这种URL访问过来,由于无法解析URL,全部报404错误页面,如google,baidu等搜索引擎还保留着原来那种URL,另外一些网站引用到网站的链接也是用的原来的URL,可movable 没有支持这种风格(反正我不知道怎么设).
因此我想解决这个问题,最后用了rewrite rule来解决此问题.记录一下!
首先先编写一个.htaccess文件,内容如下
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/article/show/.*$
RewriteRule ^(.*)$ $1.html
然后在网站目录上建立一个article/show目录
最后把movable type发布出来的静态html copy 到此目录下.
哈哈,结果用浏览器访问原来的url,比如:http://yigebuliu.com/article/show/100,再也不是可恶的404了,吼吼,成功,睡觉去也.
UPDATE:
看了访问日志,还有http://yigebuliu.com/article/tag/key这种情况.这是原来blog的tag访问方式,好办,再写个rewrite rule就行.
RewriteCond %{REQUEST_URI} ^/article/tag/.*$
RewriteRule ^article/tag/(.*)$ /cgi-bin/mt/mt-search.cgi?search=$1&IncludeBlogs=1
把所有/article/tag/*的这种访问uri全部rewrite成movable type搜索的uri就行了,也就是/cgi-bin/mt/mt-search.cgi?search=key&IncludeBlogs=1
我现在用的OC4J版本是10.13
第一步先建一个用https访问的web site 文件,内容大致如下:
<?xml version="1.0" standalone='yes'?>
<web-site
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://xmlns.oracle.com/oracleas/schema/web-sit
e-10_0.xsd"
port="443" secure ="true"
display-name="OC4J 10g (10.1.3) Default Web Site"
schema-major-version="10"
schema-minor-version="0"
>
<ssl-config keystore="my.keystore" keystore-password="hello" />
<default-web-app application="default" name="defaultWebApp" access-log="true"/
>
<web-app application="default" name="gm" root="/gm" access-log="true"/>
<web-app application="default" name="wap" root="/wap" access-log="true"/>
<web-app application="default" name="media" root="/media" access-log="true"/>
<web-app application="system" name="dms0" root="/dmsoc4j" access-log="false" /
>
<web-app application="system" name="dms0" root="/dms0" access-log="false" />
<!--
<web-app application="system" name="admin_web" root="/adminoc4j" />
-->
<web-app application="system" name="JMXSoapAdapter-web" root="/JMXSoapAdapter" />
<web-app application="default" name="jmsrouter_web" root="/jmsrouter" load-on-startup="true" />
<web-app application="javasso" name="javasso-web" root="/jsso" load-on-startup="false" />
<web-app application="ascontrol" name="ascontrol" root="/em" load-on-startup="true" ohs-routing="false" />
<!-- Access Log, where requests are logged to -->
<access-log path="../log/default-web-access.log" split="day" />
<!-- Uncomment this if you want to use ODL logging capabilities
<odl-access-log path="../log/default-web-access" max-file-size="1000" max-directory-size="10000"/>
-->
</web-site>
其中红色的是重点部分.标准https端口号是443,如果选用其它端口的话则直接改就行了,secure ="true"是必须标注的.
<ssl-config keystore="my.keystore" keystore-password="hello" />这个就是用于https的证书文件,和密码.
第二步是在server.xml中加入使用https的web site 文件,如下:
<?xml version="1.0"?>
<application-server xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xmlns.oracl
e.com/oracleas/schema/application-server-10_1.xsd" application-directory="../applications"
check-for-updates="adminClientOnly"
deployment-directory="../application-deployments"
connector-directory="../connectors"
schema-major-version="10" schema-minor-version="0" >
....
<global-application name="default" path="application.xml" parent="system" start="true" />
<application name="javasso" path="../../home/applications/javasso.ear" parent="default" start="false" />
<application name="ascontrol" path="../../home/applications/ascontrol.ear" parent="system" start="true" />
<global-web-app-config path="global-web-application.xml" />
<transaction-manager-config path="transaction-manager.xml" />
<web-site default="true" path="./default-web-site.xml" />
<web-site path="./secure-web-site.xml" />
<cluster id="78400349798527" />
</application-server>
这样oc4j配置就可以,然后重启oc4j,用浏览器访问一下吧.https://localost,是不是可以了呢.当然还会提示证书未信任,解决这个问题就是要买一个证书了,便宜的,几百,贵的7,8千.
今天在删除一个oralce分区表中的一个分区时直接把分区删了,而没有重新建立这个表的索引,造成应用出问题了,以后要切记这个问题.
其实造成这个问题的发生就是我对oracle的分区表太不了解了.
错误1.在建立这个分区表时,这个表的所有索引全部建成global的了,就是整个表的索引,如果建成每个分区一个索引,也就是local的也不会出现今天的问题
错误2.删除分区表时没有加入更新索引的语句,造成所有索引unusable,我的语句是
这里如果写成
也没事了
没办法,错误已经造成,只好把这个表的所有index rebuild了
rebuild的时间是漫长的....
另外查询某个表的索引状态可以用下面这个语句:
结果中valid是有效的,unusable未使用的.
以后要切记了!
由于业务中有一个日志表随着时间越来越长,表越来越大,每次做Insert,Update时,资源占用很大,直接导致了系统慢,所以决定把这个表改成分区表的形式(只是数据库的存储做了变化,Insert,Update,Select,Delete都未做变化).
下面稍微介绍一下分区表的概念:
在大型的企业应用或企业级的数据库应用中,要处理的数据量通常可以达到几十到几百GB,有的甚至可以到TB级。虽然存储介质和数据处理技术的发展也很快,但是仍然不能满足用户的需求,为了使用户的大量的数据在读写操作和查询中速度更快,Oracle提供了对表和索引进行分区的技术,以改善大型应用系统的性能。
使用分区的优点:
·增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用;
·维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可;
·均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能;
·改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。
下面介绍一个分区表的使用:
1.建立分区表
这个表是根据DATVISITTIME字段的值来插入不同的分区表中,2006年10月的数据插到HS_APP_VISITLOG_0610中,2006年11月的数据插到HS_APP_VISITLOG_0611中,2006年12月的数据插到HS_APP_VISITLOG_0612中,然后其它的数据插到HS_APP_VISITLOG_MAX中.
PS:不用事先建HS_APP_VISITLOG_0610...HS_APP_VISITLOG_MAX这些表,在建HS_APP_VISITLOG_PART这个表时会自动建立.
2.增加分区表
3.删除分区表
最后再讲一下分区表其它的东东:
1.分区表可以把不同的子表放在不同的表空间中,建分区表时间时用
这是网易教程里的一个例子,就是看交易号,如果小于30000000,就把记录存在表空间dinya_space01的part_01 子表中
2.分区表存储记录有几种方式
·范围分区 就是上面那时间段,还有交易号的,用less than关键字
·Hash分区(散列分区) ,故名思议,就是Hash方式存储记录
·复合分区
有时候我们需要根据范围分区后,每个分区内的数据再散列地分布在几个表空间中,这样我们就要使用复合分区。复合分区是先使用范围分区,然后在每个分区内再使用散列分区的一种分区方法,如将物料交易的记录按时间分区,然后每个分区中的数据分三个子分区,将数据散列地存储在三个指定的表空间中:
CREATE TABLE `users` (
`id` int(11) NOT NULL auto_increment,
`user_name` varchar(255) character set utf8 collate utf8_bin NOT NULL,
`login_user` varchar(28) NOT NULL,
`login_pwd` varchar(128) NOT NULL,
`enabled_flag` tinyint(4) NOT NULL,
`update_at` datetime NOT NULL,
`create_at` datetime NOT NULL
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
2.rails的database.yml指定encoding
development:
adapter: mysql
database: yige_development
username: root
password:
host: localhost
socket: /var/run/mysqld/mysqld.sock
encoding: utf8
其中socket: /var/run/mysqld/mysqld.sock,是因为ubuntu的apt-get安装mysql时,mysql Socket文件的位置.
3.在application.rb中加入
before_filter :configure_charsets
def configure_charsets
@headers["Content-Type"] = "text/html; charset=utf-8"
suppress(ActiveRecord::StatementInvalid) do
ActiveRecord::Base.connection.execute 'SET NAMES UTF8'
end
end
4.在rhtml模板中加入
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
