秋式广告杀手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

相关文章
|
11月前
|
存储 缓存 搜索推荐
想要快速地拥有Sitecore DXP平台!这九个开发大坑一定要避开!
随着互联网技术的深入的发展,人们对于个性化的渴望已经达到了新的阈值,这也让以数字洞察力、个性化体验为名的Sitecore DXP平台成为了品牌们竞相追捧的新宠。而在这样的需要背景下,一众新手企业纷纷投身市场,想要分一杯羹。但是经验不足的新人入场,难免会带来不少麻烦,甚至引发了人们对于Sitecore性能的质疑。
|
存储 数据可视化 程序员
选择文库系统的时候需要重点注意和对比哪些东西?
本人程序员出身,接近15年的代码经验,对互联网产品和运营也一直在实践和研究,尤其是对文库产品有着深度理解,因为我自己也一直在运营文库项目。下面是我站在一个普通站长角度给出的一些经验,如果你也想做一个文库网站或文库平台,需要选择一套文库系统产品,请从下面几点出发去做对比,最终做出正确选择。
选择文库系统的时候需要重点注意和对比哪些东西?
选择语音聊天app源码,重点考察对象有哪些?
选择语音聊天app源码,重点考察对象有哪些?
一对一视频源码,提升用户互动活跃度的一大利器
一对一视频源码,提升用户互动活跃度的一大利器
|
前端开发 数据安全/隐私保护 开发者
设计手机直播源码后台系统,不容忽视的四个要点
设计手机直播源码后台系统,不容忽视的四个要点
|
存储 移动开发 监控
“性能问题终结者”Olympic,解决用户痛点背后的秘密是......
白屏、卡顿、页面加载失败、页面跳转慢、图片空窗、崩溃、耗电等问题一直都是用户频繁舆情反馈的痛点。 如何衡量和提升客户端的性能和提升体验,一直都是技术在不断探索和解决的问题。 Google也在每一次的Android Studio的迭代中,不断增加了大量的性能排查工具帮助开发提升代码质量,作为了全世界第一的电商APP,如何定义APP的可用性,以及提升APP的可用性,一直以来都是手淘技术不断追求的目标。
1073 0
“性能问题终结者”Olympic,解决用户痛点背后的秘密是......
想要搭建陪玩平台,这几点不容忽视
随着互联网经济的持续稳定发展,游戏市场的“封印”逐渐被打开,搭建陪玩平台成为一个新的热点。提起陪玩系统相信大家也不陌生,漫漫单排路如果有一个大神能带自己躺赢那是再好不过了,于是陪玩系统运营而生。想要搭建陪玩平台,应该注意哪些问题呢?
|
存储 缓存 固态存储
社交系统ThinkSNS+ 性能简述
概述         本文主要描述ThinkSNS Plus服务端系统性能、服务端高性能部署方案及优化措施、服务端系统持续优化及升级策略。本文未涉及前端(PC站点、H5站点、Android、IOS)性能方案。
1851 0