毫无技术
STL笔记(一)什么是迭代器
三 22nd
最近开始看STL,不去具体学习该怎样用,而是直接去看其实现机制,翻看源码——果然不推荐初学者这么做,这是我以身试法得到的惨痛的经验教训······
STL的魅力,在于其抽象性,它的高度抽象,使其能够用来进行泛型编程(Generic Programming),实现的关键,在于迭代器(Iterator)。迭代器让我们在使用STL时无须为自己将要使用的数据类型操心,迭代器能把一切做好,它能够读取你的数据,标识其位置,遍历数据序列,甚至更改你的数据,就像一个功能强大的指针(Point)。
确实,很多书上介绍迭代器时,都说迭代器是一种更为广泛的指针,是连接数据结构和算法(Algorithms)的接口,看似很通俗易懂的说法,却让我陷入了一种想要究根诘底的兴趣中——迭代器究竟是什么东西?
于是我翻查了《泛型编程与STL》和《C++ STL 中文版》两本书,发现两书确实晦涩,里面用到不少比较高级的C++编程技巧,看得我蛋疼,不过我还是坚持下来了,终于小有所获。
参考《泛型》一书中所说,迭代器是一种概念(Concept),那么什么是concept呢,concept可以看作是一组条件,也就是说只要满足了迭代器所要求的一组条件,那么它就是迭代器。这看似是废话,但事实上却是描述什么是迭代器的一种很棒的方法。迭代器有五种,分别是输入迭代器(Input Iterator)、输出迭代器(Output Iterator)、前向迭代器(Forward Iterator)、双向迭代器(Bidirectional Iterator)以及随机存取迭代器(Random Access Iterator),每一种都是一个concept,都有自己的一组条件,其中比较基本的要求就是需要能支持operator *、operator ++、operator ==、operator =以及operator <等运算。而满足这些条件的实现就是concept的一个模型(Model),比如说C++指针,就是一种迭代器的model,更准确的说,是随机存取迭代器的model。
由此,我们可以说得出一般意义上的迭代器是什么东西了,它是一种满足“concept 迭代器”规则的实现,它可以是一种基本数据类型(指针),也可以是STL头文件<Iterator>里提供的Iterator class,或者是嵌套定义在容器(Container)中的Iterator class,还可以是我们自编的自定义类型。
或许你还是很疑惑,单纯这样定义一个规则就能适用于泛型编程了?这其中的原理机制其实也不难,支撑迭代器成为泛型指针的机制总结起来就四个字——函数重载(Overload)。简单的说就是迭代器根据不同的数据结构采用一致的接口,而接口下的实现却是不同的,这样一来表面上迭代器就是个万能的指针,而底下却是各有所司。
那么其究竟是怎么实现的呢,下次有空再讲·····
方便地屏蔽对自己的流量统计
一 23rd
各位站长朋友在给自己网站添加流量统计时有没有想过要去除对自己的流量统计呢?大家平时因种种原因经常会不断刷新自己的网站,这样就会对统计造成了一定的干扰;当然如果网站流量够大的话这些干扰是可以忽略不计的,但如果是像本博一般沒甚流量的博客的话,自己的点击也被统计进去那么就很不爽了······
像股沟的analytics提供有强大的过滤功能,但因为我们的IP多数是动态的,所以使用起来很不方便,网上比较流行的是通过Cookie过滤,具体请看这;而CNZZ的统计沒有过滤功能,那就别提如何不统计自己了。
不过统计方沒提供办法不代表我们不能主动出击。统计代码多是JS脚本,那么通过广告过滤插件就能轻而易举的把它们过滤掉了,正是过滤于无形之中。
我所使用的是FF+adblock插件,如果你直接订阅了其中的针对中国的广告列表的话,那么就直接可以屏蔽了CNZZ的流量统计。使用adblock异常的简单,甚至不需要知道如何写过滤规则,在所要屏蔽的网站点击它的小红钮,则会在浏览器下方弹出一个写着“本页可过滤的项目”的列表框,里面列出了允许你屏蔽的项目。其中包括图片、视频、脚本、样式表等等东东,你只需选中你的统计代码,把它屏蔽掉就OK了。
股沟阅读器基础教程
一 22nd
鉴于上两篇博文刚提到了股沟阅读器就有人因之找上门,因此我想或许应写个简单的基础教程,让大家也都能享受到通过股沟阅读器阅读的快感。而说实话,自己也是刚用不久,对其的强大功能尚知之甚少,但总算能够顺利阅读,故写之。
1、如何获取
股沟阅读器,即Google reader,或谷歌阅读器,需要你有股沟的帐号才能开通其服务,如果你尚无股沟的帐号,你可以到这里去申请,不过据说天朝部分地区申请要发手机短信验证,如果你RP不好碰上了的话,就自己决定发不发吧,不过本人比较信得过股沟;如果你已经有了一个股沟帐号的话,那么就可以直接从这里登录了,帐号是你的gmail帐号,密码就是你帐号的密码。
2、语言设置
顺利进入股沟阅读器后,如果语言是英语,想要换成中文,可以点右上角的Settings的Reader settings选项,其中的第一项就是language,把chinese选上即可。如果你是初次使用,它将提供有个快速入门的页面,上面已经帮你选出了三个方面的群组,如果你对哪个有兴趣的话,点击订阅即可。
3 、如何订阅
如果你想订阅某个博客或什么的网站的话,你可以把你想订阅的博客或网站的网址复制,然后点击股沟阅读器左上角的“添加订阅”按钮,其会弹出一个小框,将地址粘贴到其中,点添加既可。但要注意的是,不是任何的博客和网站都提供用RSS feed 订阅的,如果提示找不到的feed的话则只能作罢了。
这里股沟提供了一个很不错的功能,让你能方便的订阅。打开阅读器设置,选择“酷功能”标签,里面提供有三种功能,前两个自己研究,而最后一个很好很强大,将下面高亮显示的“订阅···”字样的东东添加到收藏夹(书签),以后你在浏览某个博客或网站时想要订阅的话,可以直接在当前博客网站点击那个书签,然后神奇的事情就会发生······
另外还可以通过搜索或是推荐来订阅——点开左边树形目录中的“浏览资料”,在右边选择“搜索”标签,既可在搜索框中通过关键字来搜索自己感兴趣的内容,然后在搜索列表中订阅。而点“推荐”标签,股沟就会根据你的喜好进行推荐,当然,如果是新用户的话股沟还不清楚你的偏好,所以也不会有什么推荐。
4、如何阅读
当你已经订阅了某博客或网站,则你所订阅的内容就会在左下角的“订阅”一栏中出现,你只需要点击你想要阅读的条目,其内容就会在右边的一大块视框中出现。点击阅读视框上方的供稿设置,可以对供稿进行排序,也可以退订,还可以翻译等等。
5、如何管理
建议将自己订阅的条目分类,可以通过建立文件夹进行分类。将鼠标移动到左下角的订阅栏中,随便将鼠标放到一个条目上,此条目则会高亮选中,并在右边出现一个下拉三角,点中其下拉三角,选中“新文件夹···”选项则会弹出一个对话框,然后输入文件夹名即可。若要改变文件夹,也可通过类似的操作做到,在此不叙。关于管理自己的订阅有许多方法,读者可以自己研究,找到最适合自己的一种。
通过以上的简单教程相信你已经可以开始正常使用股沟阅读器了,股沟阅读器功能强大,使用便利,十分适合阅读一些开放性的东西,其某些用途也曾在这里提过,只要一经订阅,你就不用去愁那堵该死的墙了。这里强烈建议到Gmail里去设置“始终使用https”,这样可以让你更有安全感。不过前段时间股沟称对新申请的用户都默认选上了那个选项,未辨真假,大家看下自己的地址栏就知道了······