EagleBear2002 的博客

这里必须根绝一切犹豫,这里任何怯懦都无济于事

  1. 迭代完成后添加模块完成对策略的修改满不满足开闭原则
    1. 确定设计模式的目的:需要修改或增加策略的时候
      1. 修改策略:不符合开闭原则,如果已经迭代了很多个版本则选择增加模块来替代原来的部分。
      2. 增加策略:符合开闭原则。
    2. 当我们修改后我们需要 new 这个对象,search 一下,也可以使用反射机制,但是我们在需要用到这个方法的时候都用一段重复的代码来 new 这个对象
  2. 因此我们希望以后新建一个对象的时候可以只修改一个方法来完成创建,这就引出了工厂模式。
  3. 设计模式分类
    1. 模式本身
      1. 创建型
      2. 结构型
      3. 行为型
    2. 模式实现
      1. 类模式:以集成为主要方式实现
      2. 对象模式:以合成为主要方式实现

简单工厂模式

模式动机

设计背景:考虑一个简单的软件应用场景,一个软件系统可以提供多个外观不同的按钮(如圆形按钮、矩形按钮、菱形按钮等),这些按钮都源自同一个基类,不过在继承基类后不同的子类修改了部分属性从而使得它们可以呈现不同的外观,如果我们希望在使用这些按钮时,不需要知道这些具体按钮类的名字,只需要知道表示该按钮类的一个参数,并提供一个调用方便的方法,把该参数传入方法即可返回一个相应的按钮对象,此时,就可以使用简单工厂模式。

模式定义

阅读全文 »

摘要

本文指出了读写问题中传统半读者优先算法的局限性,并设计了新的全读者优先算法,在不抢占资源的情况下将读者的优先级提高到了理论最高优先级。本文对全读者优先算法进行了实验验证。

读者写者问题

对读者写者问题的描述参见:计算机与操作系统-06-并发程序设计:7.2 读者/写者问题

传统读者优先算法

阅读全文 »

就路易斯·亨·摩尔根的研究成果而作

1884 年第一版序言

以下各章,在某种程度上是实现遗愿。不是别人,正是卡尔·马克思曾打算联系他的——在某种限度内我可以说是我们两人的——唯物主义的历史研究所得出的结论来阐述摩尔根的研究成果,并且只是这样来阐明这些成果的全部意义。原来,摩尔根在美国,以他自己的方式,重新发现了 40 年前马克思所发现的唯物主义历史观,并且以此为指导,在把野蛮时代和文明时代加以对比的时候,在主要点上得出了与马克思相同的结果。正如德国的职业经济学家多年来热心地抄袭《资本论》同时又顽强地抹煞它一样,英国“史前史”科学的代表对摩尔根的《古代社会》1,也用了同样的办法。我这本书,只能稍稍补偿我的亡友未能完成的工作。不过,我手中有他写在摩尔根一书的详细摘要2中的批语,这些批语我在本书中有关的地方就加以引用。

根据唯物主义观点,历史中的决定性因素,归根结蒂是直接生活的生产和再生产。但是,生产本身又有两种。一方面是生活资料即食物、衣服、住房以及为此所必需的工具的生产;另一方面是人自身的生产,即种的蕃衍。一定历史时代和一定地区内的人们生活于其下的社会制度,受着两种生产的制约:一方面受劳动的发展阶段的制约,另一方面受家庭的发展阶段的制约。劳动越不发展,劳动产品的数量、从而社会的财富越受限制,社会制度就越在较大程度上受血族关系的支配。然而,在以血族关系为基础的这种社会结构中,劳动生产率日益发展起来;与此同时,私有制和交换、财产差别、使用他人劳动力的可能性,从而阶级对立的基础等等新的社会成分,也日益发展起来;这些新的社会成分在几个世代中竭力使旧的社会制度适应新的条件,直到两者的不相容性最后导致一个彻底的变革为止。以血族团体为基础的旧社会,由于新形成的各社会阶级的冲突而被炸毁;代之而起的是组成为国家的新社会,而国家的基层单位已经不是血族团体,而是地区团体了。在这种社会中,家庭制度完全受所有制的支配,阶级对立和阶级斗争从此自由开展起来,这种阶级对立和阶级斗争构成了直到今日的全部成文史的内容。

摩尔根的伟大功绩,就在于他在主要特点上发现和恢复了我们成文史的这种史前的基础,并且在北美印第安人的血族团体中找到了一把解开希腊、罗马和德意志上古史上那些极为重要而至今尚未解决的哑谜的钥匙。而他的著作也并非一日之功。他研究自己所得的材料,到完全掌握为止,前后大约有 40 年。然而也正因为如此,他这本书才成为今日划时代的少数著作之一。

阅读全文 »

总论

当居于统治地位的封建贵族的疯狂争斗的喧叫充塞着中世纪的时候,被压迫阶级的静悄悄的劳动却在破坏着整个西欧的封建制度,创造着使封建主的地位日益削弱的条件。固然,在农村里贵族老爷们还是作威作福,折磨农奴,靠他们的血汗过着奢侈生活,骑马践踏他们的庄稼,强奸他们的妻女。但是,周围已经兴起了城市:在意大利、法国南部和莱茵河畔,古罗马的自治市从灰烬中复活了;在其他地方,特别在德意志内部,兴建着新的城市,这些城市总是用护城墙和护城壕围绕着,只有用大量军队才能攻下,因此是比贵族的城堡强大得多的要塞。在这些城墙和城壕的后面,发展了中世纪的手工业(十足市民行会的和小的),积累起最初的资本,产生了城市相互之间和城市与外界之间商业来往的需要,而与这种需要同时,也逐渐产生了保护商业来往的手段。

从今天的观点来看,生产和交换的这一切进步其实是很受限制的。生产仍然被纯粹行会手工业的形式束缚着,因而本身还保持着封建的性质。贸易仍然处于欧洲水域之内,并且没有超出欧洲和远东国家交换产品的列万特沿海城市以外。但是不管手工业及其市民手工业者多么微小,多么受限制,他们还是有足够的力量来推翻封建社会;他们至少是在前进,而贵族却是停滞不动的。

  1. 核心观点:农奴的劳动作为旧制度的否定因素,破坏着贵族的剥削条件;
  2. 中世纪的城市保护着手工业,产生了商业的需要,并且产生了保护商业的手段,在城市当中积累了最初的资本;
  3. 手工业者是前进的,而贵族是停滞不前的,即反动的。

货币在封建经济瓦解中的作用

阅读全文 »

问答题例题

影响 http 事务的 TCP 相关延迟

以下内容来自 chatGPT:

  1. 建立连接延迟:在客户端和服务器之间建立 TCP 连接需要时间,包括发送和接收握手消息。因此,建立连接的延迟可能会影响 HTTP 事务的性能。
  2. 往返时间(RTT)延迟:RTT 是客户端发送请求到服务器并接收响应的时间。较高的 RTT 延迟可能会导致 HTTP务的响应时间增加。
  3. 拥塞窗口延迟:TCP 使用拥塞控制算法来防止网络拥塞。当网络拥塞时,TCP 将减小拥塞窗口大小以降低数据包的发送速率。这种拥塞窗口大小的调整可能会导致 HTTP 事务的响应时间变化。
  4. 重传延迟:如果 TCP 数据包在传输过程中丢失或损坏,TCP 将重传数据包。重传可能会导致 HTTP 事务的响应时间延迟,因为它需要额外的时间来等待数据包的重传和重新处理。
  5. 关闭连接延迟:当 HTTP 事务完成时,客户端和服务器之间需要关闭 TCP 连接。关闭连接需要时间,包括发送和接收关闭消息。因此,关闭连接的延迟可能会影响 HTTP 事务的性能。

<meta> 标签的理解

阅读全文 »