IIS下HTTP跳转HTTPS方法

下载URL重写组件,IIS是带有URL重写功能组件的,但是并没有集成到IIS中去,要自行下载安装,安装成功后在网站配置页面就会出现URL重写组件。

Win2012下部署多个HTTPS网站

当一个https的请求到达IIS服务器时,https请求为加密状态,需要拿到相应的服务器证书解密请求。由于每个站点对应的证书不同,服务器需要通过请求中不同的主机头来判断需要用哪个证书解密,然而主机头作为请求的一部分也被加密。最终IIS只好使用第一个绑定到该IP:PORT的站点证书解密请求,从而有可能造成对于其他站点的请求失败而报错。

解决CEFSharp关闭时主程序退出的问题

昨天在写代码时,碰到了一个问题。

Form里面有一个TabControl,里面有多个TabPage,每个TabPage里面都放了一个CefSharp.WinForms.ChromiumWebBrowser用来展示网页。但是无论关闭任何一个Tabpage,主程序都会退出,并且在输出页面报 “程序[2508] XXX.vshost.exe 已退出,返回值为 -1073741819 (0xc0000005) ‘Access violation’。”

CefSharp屏蔽右键菜单

实现接口:

internal class MenuHandler : CefSharp.IContextMenuHandler
{
    public bool OnContextMenuCommand(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame, CefSharp.IContextMenuParams parameters, CefSharp.CefMenuCommand commandId, CefSharp.CefEventFlags eventFlags)
    {
        System.Console.WriteLine(@"OnContextMenuCommand");
        return false;
    }

    public void OnContextMenuDismissed(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame)
    {
        System.Console.WriteLine(@"OnContextMenuDismissed");
    }

    public bool RunContextMenu(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame, CefSharp.IContextMenuParams parameters, CefSharp.IMenuModel model, CefSharp.IRunContextMenuCallback callback)
    {
        System.Console.WriteLine(@"RunContextMenu");
        return false;
    }

    public void OnBeforeContextMenu(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame, CefSharp.IContextMenuParams parameters, CefSharp.IMenuModel model)
    {
        System.Console.WriteLine(@"OnBeforeContextMenu");
        model.Clear();
    }
}

调用:

C语言函数指针基础

本文写的非常详细,因为我想为初学者建立一个意识模型,来帮助他们理解函数指针的语法和基础。如果你不讨厌事无巨细,请尽情阅读吧。

函数指针虽然在语法上让人有些迷惑,但不失为一种有趣而强大的工具。本文将从C语言函数指针的基础开始介绍,再结合一些简单的用法和关于函数名称和地址的趣闻。在最后,本文给出一种简单的方式来看待函数指针,让你对其用法有一个更清晰的理解。

解读C指针

我想对很多学习C语言的新手来说,指针无疑是一个难点。但是,我觉得指针也是C语言特别重要的一个特性。也许,你在除了C和C++以外的编程语言中,很少看到指针。而C++中,也多用引用,而非指针。指针,作为一种高效的工具,可谓是一把双刃剑——用得好,可以大大提高程序效率,但用的不好,就是很多bug的滋生地。

为什么越学反而越蠢?碎片化学习是个骗局

先给你讲个故事,看你有没有中招。

有一天,你的朋友给你「知识装逼」了一个术语,牛!怎么知道的?—— 他推给你一个公众号。

你开始关注,觉得哇!大神!牛逼!长见识! 每天刷每天刷每天刷。很多问题也有了解决方法 —— 按照这个进度,过 3 年就能理解宇宙终极奥义了。

长期刷朋友圈接收碎片化知识有什么弊端?

碎片信息通常具备这样的特征:

  • 它们往往是一些事实的集合而非逻辑
  • 它们往往大量简化了推演过程
  • 它们往往将多路径简化为单一路径
  • 它们往往不够严谨、全面

简而言之,碎片信息为了达到易于习得的目的,通常会显著降低认知成本,最明显的方式就是:将复杂的事物简单化。它们往往只告诉你表面上的东西,却不会告诉你背后的原理,以及它与其他事物之间的联系。

RESTful API 设计

移动互联网时代,RESTful API成为越来越重要的移动端和服务器端交互的形式。尤其是在很多互联网公司或者传统行业拥抱移动互联网的时候,一套设计良好的Restful API能够帮助互联网产品支持单服务端+多客户端的场景。RESTful架构本身是一个风格而不是一个标准,这也就意味着在具体设计时会有不同的实现。

Linux开机启动十步骤

linux启动

启动第一步–加载BIOS

当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。在BIOS将系统的控制权交给硬盘第一个扇区之后,就开始由Linux来控制系统了。