0%

卧室荧光吸顶灯是易耗品,自己动手更换启辉器和灯管是常规操作。百度和知乎了半天,发现带有“更换方法详解”之类的文章全是类似软文的屁话,文章写得臭长,关键信息一点没有。换个灯管是个非常简单的事情,不过还是图解下更换流程,供爱动手的小白参考。

stunnel简介

stunnel 是一个开源跨平台进行通信加密的软件。它可以对原生不支持加密通信的服务(如FTP, Telnet等)在上层提供加密功能,而无须修改这些服务的代码。

Selenium简介

Selenium 是一个浏览器自动测试框架,可以通过模拟各种浏览器行为完成各种测试任务。但它能做的远不止这些,一个更实用的功能是作网页内容爬取。

在贝叶斯推断和参数估计等相关文献中常见$P(X|Y)$与$P(X;Y)$两种不同的表示方法,常常令初学者感到困惑:参数$Y$和随机变量$X$到底是什么关系?二者有什么区别?

《人类简史》的作者在“宗教的法则”一章中对于宗教的出现和解释非常犀利,从成文来看,作者看起来应该像是一个无神论者。搜索引擎上也能看到许多关于基督教徒如何看待《人类简史》的搜索。此处引用一些原文中比较精彩的片段,梳理下宗教发展的轨迹。

There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult. — C. A. R. Hoare


The Law of Leaky Abstractions: All non-trivial abstractions, to some degree, are leaky. — Joel Spolsky


There are only two hard things in Computer Science: cache invalidation and naming things. — PHIL KARLTON

2021-06-20: 使用Hexo扩展的方式可以更简洁地定制页面,避免了本文实现的一些弊端。 Hexo添加自定义分类菜单项并定制页面布局(简洁版)

2020-07-22: 更新hexo-generator-category到v1.0.0后,对应的generator.js代码进行了修改。 2019-11-27: 更新NexT v7.5.0的customcategory.swig文件,与老版本v6.6.0不同。

实际工程中有时需要将同步方法包装在异步方法之中。比如一个类实现了异步接口,而实际实现可能是本地计算的同步操作,也可能是需要HTTP请求的异步操作。对于前者,如果实现中没有await关键字,编译器会提示该方法缺少await运算符,将以同步方式运行。将二者统一的解决方案是使用Task.FromResult将结果包装成一个已完成的Task返回。举例:

TCP为什么需要三次握手

简单答案:

  1. client与server需要交换各自的Initial Sequence Number (ISN),至少需要三次交换。
  2. 若采用两次握手,server可能会浪费资源为延迟到达的SYN包建立连接。

ISN交换至少需要三次

典型的TCP三次握手过程如下图(Computer Networking: A Top-Down Approach):

简介

面向对象软件设计中,如何使软件易读、易维护和灵活适应需求是一个永恒的话题。SOLID原则即为大家在概念上指明了我们应如何达到这些设计目标。相较于设计模式,SOLID是高层次的抽象思想指导,可以说具体的设计模式是SOLID原则的实现。

简介

C# 5引入了async/await异步编程模型,旨在进一步简化异步编程的难度,让异步执行的代码看起来像同步代码一样简洁和容易理解。但初学者往往会将此异步编程模型与多线程编程模型混淆,以致引起一些不必要的错误如死锁或性能损失。