秋式广告杀手V2.5发布:各种涉及知识点分享

简介:

经过一个多月,终于发布了秋式广告杀手新版本V2.5了,由于基本上问题很少,所以更新周期就长一些。

 

这里谈一点这次改动涉及到的内容和知识点:

复制代码

1: 去掉了最初依赖的Hosts模式,所以对Hosts的增删改代码都去除了。

2: 百度竞价广告的屏蔽,除了原有的百度搜索,增加百度知识页面的广告屏蔽。

3: 增加了一台服务器,提供默认一剑出墙的服务。

4: 针对默认代理功能,经过层层思考,允许软件在不同目录下的时候可以开多个,以监听不同的端口,变成一款多端口代理软件。

复制代码


下面分享几个升级中,被我记住的知识点:

 

1:线程的try catch的必要性:

先说下线程异常的危害性:

1:winform程序:线程异常,若未try,会导致软件自动退出。

2:webform程序:线程异常,若未try,会导致应用程序池重启,类似网站重启。

 

总结:

别太过份相信自己对代码的掌控,只要是线程的代码函数,都加个try保险,我这种层次的都逃不过万一的某种错误,对于软件,真是稳定压倒一切。

 

2: 软件只能启动单个实例的知识点:

有时候,我们只允许软件启动一个实例,所以我们通常会有这么段通用代码检测:

复制代码
static class Program
{
        public static System.Threading.Semaphore _mutex;
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            _mutex = new System.Threading.Semaphore(1, 1, "adkiller");
            if (_mutex.WaitOne(0, false) == false)
            {
                MessageBox.Show("软件已经启动过了!", "运行提示");
                return;

            } 

复制代码

 

需要有点变化:这次的升级, 需要变成了在不同的目录允许多开,所以,按逻辑,我写下了这么段代码:

复制代码
    Process cp = Process.GetCurrentProcess();
            Process[] allPros = Process.GetProcessesByName(cp.ProcessName);
            processCount = allPros.Length;
            if (processCount > 1)
            {
                foreach (Process pro in allPros)
                {
                    if (cp != pro &&  cp.MainModule.FileName == pro.MainModule.FileName)
                    {
                        MessageBox.Show("软件已经启动过了!", "运行提示");
                        return;
                    }
                }

            } 

 

复制代码

 

这里又涉及到两个知识点:

1:调试期的问题:

复制代码

在调试的时候,默认有个.vshost宿主,导致调试后运行的软件名称为:秋式广告杀手.vshost.exe

我要测试多个不同目录的软件运行,所以在其它目录也运行了软件,问题来了:

调试的进程“秋式广告杀手.vshost.exe”和直接运行的“秋式广告杀手.exe”,是对不上号的。

解决方法:

这时候,只要把:项目-右键属性-调试-启用VS宿主进程的勾去掉就可以了。

复制代码

 

2:想当然的错误:

复制代码

以为Process.GetCurrentProcess()获取出来的当前进程对象,总会和获取进程列表里的同个进程对象一样,所以才有了cp==pro这样的对象比较判断。

实际的错误:

用Process.GetCurrentProcess出来的对象,和循环进程的每一个pro对象都是不等的,所以直接的判断是错误。

复制代码

 

网上这样相当然的错误代码有点多:

复制代码

一开始,我也网上搜了搜,发现好多和我写的相当然的代码一样,网上也有这种用=号判断出错误示例代码,大伙要注意下。

解决方法:

经过本人细心的发现,对于进程,其进程ID是一样的,于是把判断的语句改成:

cp.Id!=pro.Id

通过进程ID来判断是否同一进程。

复制代码

 

好了,本节,基本就分享这两个相对被我记住的知识小点。 

 

软件升级:软件重启运行,系统会自动升级。

软件下载地址:http://www.cyqdata.com/download/article-detail-54271 

 

另外,那10关挑战题,到现在还没被完全破关,继续大伙继续给力:开发者基础知识游戏,共10关,欢迎挑战


版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:

http://www.cnblogs.com/cyq1162/archive/2013/03/10/2952934.html

相关文章
|
存储 数据可视化 程序员
选择文库系统的时候需要重点注意和对比哪些东西?
本人程序员出身,接近15年的代码经验,对互联网产品和运营也一直在实践和研究,尤其是对文库产品有着深度理解,因为我自己也一直在运营文库项目。下面是我站在一个普通站长角度给出的一些经验,如果你也想做一个文库网站或文库平台,需要选择一套文库系统产品,请从下面几点出发去做对比,最终做出正确选择。
选择文库系统的时候需要重点注意和对比哪些东西?
|
存储 SQL XML
搜索引擎项目开发过程以及重难点整理(一)
搜索引擎项目开发过程以及重难点整理(一)
583 0
搜索引擎项目开发过程以及重难点整理(一)
|
SQL 自然语言处理 搜索推荐
搜索引擎项目开发过程以及重难点整理(二)
搜索引擎项目开发过程以及重难点整理(二)
159 0
搜索引擎项目开发过程以及重难点整理(二)
|
SQL 存储 分布式计算
“开源”vs“商业”,差别到底有多大?这篇测试一目了然
来自用户的声音… 开源就能搞定,还要选商业方案吗? 我是小白用户,开源方案上手快吗? 性能有极致要求,开源能满足吗? 追求性价比,哪种方案更适合我? 我对MySQL很熟悉,数据分析场景适合吗? 上述问题如何解?看阿里云帮你对比分析!
15187 0
“开源”vs“商业”,差别到底有多大?这篇测试一目了然
|
监控 算法 索引
从小白的视角理解广告系统
开篇  因为一些原因有幸接触了一些广告相关的工程技术,结合周末随便翻阅的计算广告学一书,写一篇博文沉淀一下。  文章主要从像我这样的小白用户视角,聚焦于广告相关的工程方向,当然文章当中绝对不会出现违规的内部信息,所以各位大佬们也可以放心了,文章主要会围绕计算广告学中提到的系统架构图进行说明。
2000 0
|
存储 数据库 容器
整理关于牛人们对图书管理系统领域建模的精彩讨论,以此希望大家学习下别人是如何思考的
原文:整理关于牛人们对图书管理系统领域建模的精彩讨论,以此希望大家学习下别人是如何思考的 关于图书管理系统的业务大家都应该比较了解了,主要的核心业务是:用户持图书卡去图书馆借书或还书。下面是他们几个人讨论的最经典内容,我特地整理出来供大家可以集中的观看他们的讨论。
1109 0