Navins' NoteBook Information, Code, Programming, Java/C/C++/C# …

Session和Cookie关系

Posted on February 12, 2012
网上看到,留作记录。

PHP中的session可以默认情况下是使用客户端的Cookie(以便和普通意义上的Cookie区别,我称之为session cookie,普通意义上的Cookie为Cookie)来保存session id的,但是PHP中的session是否只能使用session cookie呢?当然不是,否则何必还弄个session出来,不如直接用Cookie算了.Session的一大优点就是当客户端的Cookie被禁用时会自动把session id附在URL中,这样再通过session id就能记住session变量了. $ T5 I# S: c: W9 B. X7 T- b
下面我写两个文件来证实一下,首先在浏览器中设置禁用Cookie. * ], N/ Q1 _7 Z9 \) E& p' g
<? //文件名为test1.php
session_start(); 4 k! Z) o' q$ z) B- w/ o+ L! V
session_register("url");
$url="test2.php";
echo "<a href=$url>goto test2.php</a>
";
?>

Filed under: Share Continue reading

反作弊策略思想

Posted on February 11, 2012

从网上看到,觉得归纳的亮点说着挺有道理。

这要从搜索引擎反作弊策略说起。一个搜索引擎成功的反作弊策略一定是这样的:

1,允许算法被探测出来,而且即使算法被公布,搜索结果的公正性都不会受太大影响。要这么做的原因就是不希望和作弊的人陷入到一种猫捉老鼠的死循环当中。如果老是以堵漏洞的做法来修正算法,那永远都没有尽头。出于这样的考虑,搜索引擎会把那些无法被作弊的的因素在排序算法里放到比较重要的程度。

2,尽可能用一切技术手段自动检测,当技术手段不能解决问题,就用人工来解决。然后把人工发现的问题又反馈给自动检测机制,使自动检测越来越完善。

现在的google基本上就是这样来做的。在现有的排序规则中,那些无法作弊的和能精确反应内容的因素,都是很重要的排序因素。

当然Google也不排斥频繁的调整算法,这也有出于给用户一个最好的搜索体验考虑的。

至于技术检测和人工审查,google也一直在做。

Filed under: Share Continue reading

preg_match学习,官方解释各种迷惑的可以参考下

Posted on November 25, 2011

转:http://118ss.blog.163.com/blog/static/6560818200852592847982/

大家一看到preg_match肯定会头痛的。。。其实没什么,下面我就尽力给还不明白的兄弟们争取讲明白了:

在这里我就不解释preg_match的说明了,朋友们可以通过php手册查看..先来个简单点的:

preg_match("/^(http://)?([^/]+)/i",

"http://www.php.net/index.html",

$matches);

$host = $matches[2];

//

从主机名中取得后面两段

preg_match("/[^./]+.[^./]+$/", $host, $matches);

echo

"domain name is: {$matches[0]}n";

这是手册里的例子。多数人对preg_match犯晕都出在正则上,以后我也会介绍正则。先看这个例子,

preg_match($pattern,$string,$matcher)其中$pattern对应的就是”/^(http://)?([^/]+)/i

$str

http://www.php.net/index.html.$match是匹配到的结果。按照手册上的意思:

如果提供了

matches,则其会被搜索的结果所填充。$matches[0] 将包含与整个模式匹配的文本,$matches[1]

将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推。

这是什么意思呢?第一句就不用解释了,$matches[0]

将包含与整个模式匹配的文本。

咱们用pring_r打印出来第一个$matches:

Array ( [0] => http://www.php.net [1] => http:// [2] => www.php.net )

这回明白了吧。。$matches[0]

将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本。在正则中,()代表模式:匹配 pattern

并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用

$0…$9 属性。就是说数组中下标为1的值就是正则中/^(http://)?([^/]+)/i第一个()里的值!数组下标2的值以此类推

Filed under: Share Continue reading

linux下vi命令大全

Posted on November 24, 2011

文本编辑器是所有计算机系统中最常用的一种工具。UNIX下的编辑器有ex,sed和vi等,其中,使用最为广泛的是vi,而vi命令繁多,论坛里好像这方面的总结不多,以下稍做总结,以资共享!渴望更正和补充!

进入vi的命令
vi filename :打开或新建文件,并将光标置于第一行首
vi +n filename :打开文件,并将光标置于第n行首
vi + filename :打开文件,并将光标置于最后一行首
vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
vi filename....filename :打开多个文件,依次进行编辑

移动光标类命令
h :光标左移一个字符
l :光标右移一个字符
space:光标右移一个字符
Backspace:光标左移一个字符
k或Ctrl+p:光标上移一行
j或Ctrl+n :光标下移一行
Enter :光标下移一行
w或W :光标右移一个字至字首
b或B :光标左移一个字至字首
e或E :光标右移一个字至字尾
) :光标移至句尾
( :光标移至句首
}:光标移至段落开头
{:光标移至段落结尾
nG:光标移至第n行首
n+:光标下移n行
n-:光标上移n行
n$:光标移至第n行尾
H :光标移至屏幕顶行
M :光标移至屏幕中间行
L :光标移至屏幕最后行
0:(注意是数字零)光标移至当前行首
$:光标移至当前行尾

屏幕翻滚类命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。

插入文本类命令
i :在光标前
I :在当前行首
a:光标后
A:在当前行尾
o:在当前行之下新开一行
O:在当前行之上新开一行
r:替换当前字符
R:替换当前字符及其后的字符,直至按ESC键
s:从当前光标位置处开始,以输入的文本替代指定数目的字符
S:删除指定数目的行,并以所输入文本代替之
ncw或nCW:修改指定数目的字
nCC:修改指定数目的行

删除命令
ndw或ndW:删除光标处开始及其后的n-1个字
do:删至行首
d$:删至行尾
ndd:删除当前行及其后n-1行
x或X:删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u:删除输入方式下所输入的文本

Filed under: Share Continue reading

内网用户轻松穿越外网 ipv6+GAE

Posted on August 9, 2011

  引言:此文为校园网用户量身打造。按本文介绍的方法,成功后的效果是:你只需登录内网,然后通过IPv6网络和GAE个人代理服务,即可访问外网。本方案可以为你节省全部网费开支,当然运营商不大愿意看到的这样的结果,但我知道这是广大对于电信行业的垄断式经营怨声载道却又无可奈何的学子们梦寐以求的上网方案。我是站在群众一边的。

  话又说回来,各位电信巨头在每个季度赚得盆满钵满之余,稍稍为祖国的教育事业让出一份利润,也不为过吧?要知道,大多数学生都是没有收入的,而目前提供给我们的各种网络业务,质量参差不齐,服务令人失望,而且仅此一家别无分号。

  所以,每一个神奇的穿越技巧,都对应着一个糟糕的既有业务。

  如果我们可以有选择,如果现在的各种服务都合情合理正规正常,没人会吃饱了撑的去折腾这些。

  闲话到此为止,下面开始正式的技术讨论:)

 

Filed under: Share Continue reading

Javascript, JQuery, Validate使用

Posted on July 31, 2011

js实现页面跳转的几种方式
第一种:

1
2
3
<script type="text/javascript" language="javascript">// < ![CDATA[
   window.location.href="login.jsp?backurl="+window.location.href;
// ]]></script>

第二种:

1
2
3
<script type="text/javascript" language="javascript">// < ![CDATA[
 alert("返回"); window.history.back(-1);
// ]]></script>

第三种:

1
2
3
<script type="text/javascript" language="javascript">// < ![CDATA[
 window.navigate("top.jsp");
// ]]></script>
Filed under: Share Continue reading

WP-PostViews 热门文章插件的使用方法

Posted on April 1, 2011

如果您想在您的网站中显示热门的文章排行,想知道一篇文章被点击了多少次,那么推荐您使用 WP-PostViews 插件 。 WP-PostViews 插件 用来统计一篇文章阅读次数,配合 WP-PostViews Widget 在侧边栏实现显示阅读次数最多的文章或者页面、某分类下阅读次数最多的文章等,完美支持 wordpress 各种版本。

WP-PostViews 插件使用方法

  1. 首先到这里下载 WP-PostViews 插件,安装、激活。
  2. 激活后记得在插件管理页面启用 WP-PostViews Widget,默认是不启用的,启用后您就可以在后台的外观 > 小工具 里面添加 wp-postviews Widget 到合适的位置,根据需要拖动以调整顺序。
  3. 然后刷新前台显示页面,可以看到已经显示出了访问量最高的文章。

如果您使用的主题不支持 sidebar ,别担心。您只要把下面的代码加入到 sidebar.php 中合适的地方即可:

Filed under: Share Continue reading

PreparedStatement 使用实例

Posted on March 28, 2011
/**
* PreparedStatement 使用实例
*/
package com.testjdbc.jdbc;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Types;

/**
* create date: 2011-3-26 下午03:30:06
*
* @author Tao
*
*/
public class TestCallableStatement {
   
    private Connection conn;
    private CallableStatement cstmt;
   
    private String driver = "oracle.jdbc.OracleDriver";
    private String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";

    /**
     *
     */
    public TestCallableStatement() {
        // TODO Auto-generated constructor stub
        try {
            Class.forName(driver);
            conn = DriverManager.getConnection(url, "ty", "ty");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
   

Filed under: Share Continue reading

CallableStatement 使用实例

Posted on March 28, 2011
/**
* CallableStatement使用
*/
package com.testjdbc.jdbc;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Types;

/**
* create date: 2011-3-26 下午03:30:06
*
* @author Tao
*
*/
public class TestCallableStatement {
   
    private Connection conn;
    private CallableStatement cstmt;
   
    private String driver = "oracle.jdbc.OracleDriver";
    private String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";

Filed under: Share Continue reading

VMware下不识别U盘解决方法

Posted on November 25, 2010

首先 要确定您的vmware版本不是太低!

解决这个问题需要开启一项服务:右击我的电脑→管理→服务和应用程序→服务→选择VMware USB Arbitration Service(仔细找啊),将它的状态改为已启动,同时将它的启动类型改为自动,但有时360会提示你禁用这个启动项,不用理他!

然后重新启动vm,进入系统后,最大化vm,这是再安插U盘,就可以使用了!!!

注意:一定要在vm的系统下安插U盘,才能被识别,不然就被机器本身的那个系统识别了!!!

Filed under: Share No Comments