0?wx_fmt=png

在计算机科学中只有两件事情最难:缓存失效和取名字。

——Phil Karlton

写出好代码很难,为什么?因为好的代码都是易读的。我们总是关注于当下,却不顾及以后;我们总是关注于代码一次写成,但忽视了在以后会被一次又一次地读写。

0?wx_fmt=png

好代码总是为了方便他人易读在不断优化,这就需要我们将共情作为核心。好代码能帮助别人从读到的一段文字里面去回溯,从其他不同的视角去观察这个问题,这甚至比写代码本身还难;程序员需要去理解这段代码解决了一个人类问题,并且用一个其他人都能明白的方法表达出来。对于我来说,这就是将软件问题放在人类社会的这个大环境中:我们是为哪位读者编写代码?读者能理解么?

所以,如何加工处理、并传递我们的想法给我们的人类同胞们,这才是编程的核心。


根据成员命名

为了阐述我们的第一个概念,让我们来做一个小游戏:“我们在哪个房间?”。我会给你一些图片,你来说出这是什么房间。

问题1/3:有沙发的是什么房间

0?wx_fmt=png

从家具判断,这一定是客厅。根据一个成员(沙发),我们就可以知道我们在哪个房间。这很容易。

下一个问题。

问题2/3:有坐便器的是什么房间

0?wx_fmt=png

从图片物体判断,我们非常肯定地说这是洗手间。

看到一个模式了么?房间的名字就是一个标签,定义了房间里的东西。有了这个标签,我们不需要查看容器,就可以知道里面有什么元素。因此我们有了第一个推论:

推论1:容器的名称指示其元素的功能

其实这基本就是鸭子类型(Duck Typing)。如果房间里有床呢?那这就是卧室。

反之也成立:通过容器的名称,我们可以推理其成员。如果我们说的是卧室,那就很可能有一张床。因此我们有了第二个推论:

推论2:通过容器名称我们可以推理其成员

现在我们有了以上的两个推论,让我们试着把它们应用到下一个房间上。

问题3/3:有坐便器和床的是什么房间

0?wx_fmt=png

坐便器和床在一个房间?这就让这个房间的定义模糊化了。如果必须用推论1和2来对房间进行命名,恐怕得叫怪兽房间了吧。

问题并不在于房间内物件的数量,而在于完全不相关的事物被当做具有相同的功能来对待。在家里,我们将具有相同目的的事物归类,这样会让我们的组织更加简单;如果各个物件功能被混淆、放置一起,我们就不确定设计者想要什么,或者这些事物是被设计来怎么用的。一旦混淆,工作进程就会受阻。

推论3:容器功能的清晰度是跟其成员之间相关性成正比的

以上推论比较难读懂,所以用一张图来阐述:

0?wx_fmt=png

当成员之间是相互关联的,很容易找到一个好的名字;当不相关的时候,就变得非常困难。相关的方面,可能是功能、目的、它们的策略、类型或者其它。也只有讨论到准则的时候,相关性才有意义。在后面我会讨论到这一点。

软件中,同样适用。我们有成员、类、功能、服务、应用、小怪物。Robert Delaunay说过:“我们的理解与我们的感知有关”。在这个技术背景下,我们的代码可以用最简单的方法,让我们的读者感知到商业的需求么?

示例 1: HTTP 域和car(车)

HTTP是一个域,有请求和回复。但如果我们把一个叫做car的成员放进HTTP,那么我们就不能再叫它HTTP了。在这个案例中,这个类变得很混乱。

public interface WhatIsAGoodNameForThis {
/* methods for a car */
public void gas();
public void brake();

  /* methods for an HTTP client */
public Response makeGetRequest(String param); 
}

0?wx_fmt=png

示例2: 词语的连接

一个普遍的模式是在类名后面加上Builder或者其它er结尾的词。比如:SomethingBuilder. UserBuilder, AccountBuilder, AccountCreator, UserHelper, JobPerformer.

0?wx_fmt=png

从名字上解析,我们可得到三层意思。

  1. 类名里的动词Build,表示程序上这是一个类中包含有过程,具有复合功能;

  2. 它有两个内在的、隐藏的实体,一个User一个Builder,所以可能会有违反封装原则的危险;

  3. Builder可以访问User的内部工作机制,因为Builder和User就是相互缠绕的啊。

这就像是一个工厂模式。当这个类在滥用代码库的时候,我们的示例就会带来问题。需要提醒的是,在工厂模式里,我们并不需要创建一个类。应用的createUser()就可以很好地实现工厂模式。

示例3: Base

让我们来看一些真实的示例。第一个I18n Ruby gem(为了简洁起见,只提供类和方法的名字):

class Base
def config
def translate
deflocale_available?(locale)
def transliterate
end

在这里,Base这个类没有表达任何含义。它可以设置(configure)、翻译(translate),以及判断locale是否可得(available)。它做的是一些不同的、无关联的事情。

示例4: 取名对设计的指导意义

当我们讨论到这些类名是如何影响我们的设计时,Discourse有一些例子。以下的例子引起了我们的兴趣:

classPostAlerter
def notify_post_users
def notify_group_summary
def notify_non_pm_users
def create_notification
def unread_posts
def unread_count
def group_stats
end

PostAlerter 这个名字表示这个类的功能是提醒人们接收新闻发布信息。

但是unread_posts, unread_count 和group_stats ,这些很明显地是在说其它的事情,这就使得这个类名不是那么理想。把以上三个放进一个PostsStatistics 的类里,就会使类更加清晰明了,便于新人理解。

Class PostAlerter
def notify_post_users
def notify_group_summary
def notify_non_pm_users
def create_notification
end

classPostsStatistics
defunread_posts
defunread_count
defgroup_stats
end

示例5: 怪兽名字们

Spring框架里有一些例子,因为成员太多,所以起了一些怪兽一样的类名。以下是一个:

classSimpleBeanFactoryAwareAspectInstanceFactory {
public ClassLoadergetAspectClassLoader()
public Object getAspectInstance()
public intgetOrder() 
public void setAspectBeanName(String aspectBeanName) 
public void setBeanFactory(BeanFactorybeanFactory)

示例6:一个好名字的例子

坏名字的例子已经够多了,在D3’s arc(https://github.com/d3/d3-shape/blob/master/src/arc.js)可以找到好的取名例子,比如:

export default function() {
/* ... */
arc.centroid     = function() { /* ... */ }
arc.innerRadius  = function() { /* ... */ }
arc.outerRadius  = function() { /* ... */ }
arc.cornerRadius = function() { /* ... */ }
arc.padRadius    = function() { /* ... */ }
arc.startAngle   = function() { /* ... */ }
arc.endAngle     = function() { /* ... */ }
arc.padAngle     = function() { /* ... */ }
return arc;
}

这里的所有的方法都表达了一个意思:它们都表示了圆弧的组成。我特别欣赏下面这张图,清晰明了。

0?wx_fmt=png

方法1:分解


0?wx_fmt=png

什么时候使用: 这个类找不到好的名字,但是你对各成员已经有了独立的概念,这时候你想为这些小组取个好名字。

分成两步:

  1. 识别概念

  2. 对它们进行分解

在坐便器+床这个场景中,我们把床推到左边、坐便器推到右边。这样,我们就有了不同的事物,我们可以自然而然地给出不同的命名。

当你不能为一些事物给出好的名字时,可能在你面前的不止一件事物;目前你所知道的,给不同的事物命名很难。当你遇到麻烦的时候,试着分解你面前的事物。

示例

我们有一个未命名的类,包含了request、 response、 essay-headers、URLs、body、 caching和timeout.把所有的成员从主类(main class)中拉出来,我们就有了Request、 Response、 Headers、URLs、ResponseBody、 Cache、Timeout等等。如果我们所拥有的只是这些类的名字,我们可以非常肯定我们是在处理一个网页请求。对于网页请求一个很好的命名就是HTTPClient。

当这个代码很难取名,不要首先想到整体!不要!想一想部分。


方法2:发现新概念


0?wx_fmt=png

什么时候使用: 当类不简单或者不连贯。

发现新概念需要商务领域的知识。当软件与商务使用相同的术语时,一切就进行了统一,不同领域的专家用着同一种语法。

示例1:将多种元素封装于一个新概念中

曾经,有个公司几乎要丢失一单大合同,为什么呢?因为那个团队在开发新功能和问题处理方面,速度特别慢。

这个市场电子商务为不同国家的学生提供不同规则的多个支付网关,需求确实比较复杂。当我读到支付代码PaymentGateway的时候震惊了,这是有多么复杂啊。代码里面还有相当一部分依赖条件,包括:User,UserAddress, CreditCard, BillingAddress, SellerAddress, LineItems,Discounts,等等。这个巨大的构造函数使得他们很难再添加新规则,因为添加任何一条规则都会打破其他规则,并需要去改动网管适配代码。

这个问题甚至影响到了支付之外的服务。为了聚集消息类数据,他们给学生发送了邮件。技术支持有自己独立的屏幕来看数据的第三次汇聚,除了这个特别的用到了名为Aggregator类的地方(类名也就是本义)。

于是,我们不得不做点什么,来挽救这个架构缺陷。

处理这个问题,我想到了一些主意:我需要你( PaymentGateway)为我处理一些支付细节。如果我是一张课桌,或许我需要把这些发票帮我整理好。所以说如果我创建一个名为 invoice的类,仅用来处理这些细节信息的汇聚,那么网关是不需要知道那些细节的,因为invoice会处理的,对吗?与其注入无数个对象,我是否可以尝试只传递一个给你?

Invoice这个术语之前从来没有应用过。我们花了一个月的时间进行重组,然后我们就能够更为灵活地对代码进行改动。Invoice是一个很好的实例,它描述了汇聚的概念而且大多数人都能看懂。最终解决方案是向Gateway单独注入了Invoice类作为接口,用于屏蔽其他更多类。

好的命名不仅仅是优美的词汇,而是要用精准的语言去表达代码的内涵。

示例2: 根据业务领域的调整命名

在一个未开发的拼车项目中,我们从头设计我们的系统。在对其它交通方案的研究中,对于某人在某天从某处出发到某目的地的这一旅行,最合适的词是trip;而这一些旅行的人,就被称为ride。我们打印了一个词汇表,这样公司的人就可以讨论并且分享使用这些共同的词汇。

但产品发布之后,我们的客户总是把我们的trips称为rides。很快,我们就在将客户的请求转换为我们需要做的事情上,产生了问题。痛定思痛,我们觉得是时候该把trips改变为rides、rides改变成carpools。这样就解决了一个公司说着两种不同语言的问题。

示例3:抽象级别 

一个人说,移动右腿然后左腿再右腿,另一个说走路。两者都是一样的意思,但后者说法更抽象。

理想情况下,当代码越来越接近其公共API,它越接近于企业术语。随着它接近数据库和金属,它会使用更多的计算机术语。在这之间,抽象程度逐步降低。

在一家公司中,一个业务人员会说postTweet,所以例如postTweet()这样的一个名字,将在公共API比makeHttpRequest()更说得通。在一家拥有更多技术服务的公司中,后者的表达方式也足够清楚。

二,考虑特异性。postTweet()是非常具体的,因为makeHttpRequest()是通用的,可以用于Facebook或基本上涉及HTTP的任何内容。一个通用名称可以轻易地被重复使用,会导致含义不清晰。这就解释了为什么框架代码与商业软件代码有如此大的区别。

Example 4:  概括

很久以前,一个CMS有数据库表的新闻,历史,视频,文章,页面等。他们大多数有相同的列,标题,摘要,文本。Videostable有额外的属性例如url(嵌入YouTube)和有adate属性的历史,所以网页会显示一年的历史事件列表。所有这些表格看起来都是副本,在这里和那里有一些差异,如果要添加新功能,就需要重写大量样板。

我拆散了所有那些表,整合进一个类,名为contents,并用一个外部指针指向一个表格,名为section,包含新闻,历史,视频等清单。现在,一段代码的contents就足够了。几年后,一个朋友不得不写一个小的CMS,我建议他说,我把所有这些表折叠成一个被称为contents的外键,指向一个叫做“sections”的表,其中列出了相同的方法。一旦管理content的表单完成,它花费1/N的时间来执行,因为对于同一类型的每个新的部分来说,都是一样的。

通过命名的方式将过程通用化,会在很大程度上提高生产力。新闻是一个Content,文章是一个Content。历史是一个Content。所有这些都可以共享相同的属性吗?是。那调查是不是Cintent?哦,不,不是Content。


方法三:分组标准

什么时候使用:当名字很好,但他们不能很好地相配时。

组件可以通过各种标准进行分组,包括物理性质,经济性,情感性,社会性和软件中最常用的功能。相框根据情感方面分组,而产品则根据经济动机分组。沙发和电视留在同一个房间,根据功能标准分组在一起,因为它们具有相同的功能或提供休闲的相同目的。

在软件中,我们倾向于按功能对组件进行分组。列出你的项目文件,你可能会看到像controller /,models /,adapters /,templates /等等。然而,有些时候,这些分组并不让人舒服,这就是时候来重新评估模块结构了。

示例:按策略分组

一个用于自动化文档操作的库(如API蓝图)根据代码生成规范文件,lints所述文件(保证格式正确)并上传到云(如S3)。

根据文件格式,将自动进行各种后续决定。选择API蓝图将会选择不同的linter,不同的测试器和不同的API Elements转换器。这里的关键词策略是基于一个输入strategy来组合所有这些不同的功能。此后,该库包括一个称为strategy策略的模块(或名称空间),该模块将文件格式,linter,文档测试器和存储供应商组合在一起。这使得库可以将业务核心策略中的普通操作文件(如上传者,解析器和命令行)分开。


利用上下文

每个应用程序都有不同的上下文,同样的,其中的每个模块,它们内的每个类,到每个功能也是这样。User这个名字可以单独表示系统用户,也可能是数据库表或者第三方服务凭证。lib/billing/user 与lib/booking/user不同,但仍然是用户。

0?wx_fmt=png

想象一下,每个容器,如模块,都是一个bucket。在其中,组件被封装,与外界绝缘。你可以自由命名这些类,无需为一些寻常的事物去创建出生僻的名称。

一个在整体式架构(一个大容器,其中有一些小容器)中的微服务(许多独立的容器)的强有力的论据是,它强制限制每个服务中的责任,因为你无法轻松地将完全不相关的事情互相纠缠在一起。 BillingApp内部的几张同能,BookingApp内预订功能等等。在一个单一的架构中,这些相应的服务名称可以是简单的模块名称,但并不是每个人都会恪守原则保持代码井井有条的。

示例:命名空间

马克正在建立一个需要生产成千上万条广告的广告平台,然后发送到AdWords(谷歌),脸书和必应,所有这些都通过图形用户界面进行管理。

马克从一个称为Ad的实体开始,很快开始膨胀。AdWords的广告有headline_part1和headline_part2,脸书不会,而必应只有headline。他需要想办法分裂他的实体。他思考不同的语境,以及如何利用语言的命名空间来表达这一点。他想出了以下结构:

  • csdcAdwords :: Ad:这表示Adwords中的广告对象。它具有Adwords独有的属性,逻辑可以包含在此类中。

  • Facebook ::Ad:与上一个相同,除了它具有脸书的具体要求和逻辑。

  • 必应::Ad: 和上面一样.

  • RemoteAdService :: Ad:这是Adwords::Ad,Facebook::Ad,Bing::Ad和其余部分之间的界面。这意味着这三个类都将具有相同的公共API, 允许系统利用多态。

  • Database::Ad:这是广告表的对象关系映射(ORM)。它使用ActiveRecord,DataMapper或任何自定义解决方案。

  • GUI :: Ad:这表示在UI中显示广告所需的属性。它可能具有演示和国际化功能。

•API :: Ad:广告的HTTP端点将具有自己的自定义属性,因此序列化逻辑存在于此处。

词语可以意味着不同的东西,这取决于上下文,当我们利用上下文时,我们可以为组件选择更简单的单词。在这个例子中,我们不需要复杂的过程就能找到这些组件名称,因为它们是一回事,广告。


无意词和新词

年复一年,名字也在发展并被赋予获得新闻的含义。新词不断涌现,填补空缺。

助手(helper):助手是支持应用程序的主要目标的功能。但是,那么定义应用程序的主要目标是什么?应用程序中的所有内容都支持应用程序的主要目标。

在实践中,它们被集中在一个非自然的分组中,为一些其他混杂的,常用的操作提供可重用性。他们倾向于Feature Envy,他们需要访问另一个组件的内部数据来工作。他们是找不到正确名称东西的借口。

基础:名为Base的类是很久以前在C#中指定继承的惯例,缺少一个更好的名称。例如,汽车和自行车的父类将是Base而不是Vehicle。

尽管微软的建议避免了这个名字(Cwalina,2009),但它显然通过ActiveRecord影响了了Ruby界。到目前为止,我们仍然将Base看作开发人员找不到名称的类名。

Base的变体包括Common and Utils。例如,JSON Ruby gem 的Commonclass具有解析(parse),生成(generate),加载(load)和jj的方法,但是常见的是什么意思呢?

任务:在Javascript社区有一个习惯来调用异步函数,叫tasks。它从task.js开始,即使原始库不存在,该术语也被使用。

团队中的每个人都明白吗?如果真是那样就好了。但是,当一个某人新加入团队,遇到了和60年代以来存在的已然被抛弃在垃圾中命名法,会发生什么情况呢?

我在一个项目中工作,猜一下这个类的名字,亚特兰大。是的,亚特兰大。真见鬼,没人说的清楚为啥叫那名字。


沟通

“现实仅存在于人的思想,而非其他任何地方。”乔治·奥威尔(George Orwell)

我认为沟通交流的做法是一个利他主义的行为,我们提高技能的努力与我们对别人的关心有关。我们希望人们容易理解,我们想要消除矛盾和障碍。

其次,我们希望别人了解我们。令收到消息的人理解这条消息是发件人的责任,如果能够接受这个观点,我们营造一个共情的环境,一个双赢的局面。没有任何借口不去刻意练习我们的沟通技巧 - 除非你住在丛林中。

随着写作,我们优化阅读,练习共情等方面的技巧可能是很辛苦的。但是,正如生活中的一切,熟能生巧是最朴素的真理。



原文发布时间为:2017-5-3

本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 为页面添加正确的doctype声明-W3C标准

    问题:今天无意间接触placeholder这个input元素的HTML5属性。但是写代码的时候编辑器提示没有此属性,感觉很奇怪?回答:之前HTML文档申明的是<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">改为<!DOCTYPE HTML>不受约束。可以使用H…...

    2024/4/20 17:08:03
  2. Web安全深度剖析-笔记

    Web安全深度剖析-笔记 文章目录Web安全深度剖析-笔记HTTP基础知识http请求方法http状态码http消息头(字段)截取HTTP请求搜索引擎劫持SQLmap注入注入基础知识使用DVWA来练习使用sqlmapSQLmap基本使用方法更多的选项简述利用过程其他常用的参数用法SQLmap能检测到的注入类型其他…...

    2024/4/20 17:08:02
  3. 名字真好听的五子棋——12周进度

    名字真好听的五子棋——12周进度 伪代码 创建五子棋游戏主窗体和菜单 实现了整个五子棋程序算法的核心 棋盘的宽度、高度、棋盘 棋盘方格的横向、纵向坐标所对应的棋子颜色 判断下子的横向、纵向坐标是否越界 判断该坐标位置是否可下棋子 在该坐标位置下棋子判断胜负 流程图UML…...

    2024/4/20 17:08:01
  4. web提权总结

    【 web提权 】 1.能不能执行cmd就看这个命令:net user,net不行就用net1,再不行就上传一个net到可写可读目录,执行/c c:\windows\temp\cookies\net1.exe user 2.当提权成功,3389没开的情况下,上传开3389的vps没成功时,试试上传rootkit.asp 用刚提权的用户登录进去就是sys…...

    2024/4/22 10:08:58
  5. VS2010 在Win 7 附加w3wp.exe进程进行调试和权限问题

    因为在Windows 7 中有了UAC这么一个东东,所以很多东西都需要系统管理员的权限了,所以在附加w3wp.exe进程时,就会提示如下信息框--关于权限问题。 1。在启动VS2010时,按住Ctrl+Shift后,单击打开VS 2010 2。右击VS2010(devenv.exe)后,在菜单中选择"以管理员身份运行…...

    2024/4/20 17:08:00
  6. 嘉年华--好好听的名字噢!

    题目听起来怎么有点矫柔造作的语气迪士尼的嘉年华来了,我突然有了一种非要去看看的冲动,真是于是就撺掇pp,pp问起丽子,就是的,怎么忘了她,跄跄三人行就是这么组成的.pp说应该是两人去的地方,怎么偏要拽上她们,改成三人去.我说:“如果我的生活里只两个人存在,会缺少很多色彩“(这…...

    2024/4/20 17:07:59
  7. Web入侵法总汇

    本博客专门收集通过网站应用程序这一层次(web application layer)入侵的黑客手法。通过Web入侵可以避开防火墙,因为所有的操作都是通过HTTP,在端口80进行的。据统计这种入侵方法占internet入侵总数的75%。本博客致力于帮助广大程序员及网站管理员对这种方法作深入的了解,以便…...

    2024/4/20 17:07:57
  8. 好听的女孩游戏名字:梦紫★幽兰 梦蝶※雪儿

    梦紫★幽兰 梦蝶※雪儿 云淡↘风轻 知足↘常乐 绯眸★凝月 水中↘天使 江南↘听雨 琪琪↘宝贝 逆风★飞扬 可爱★女生 如沐↘春风 蓝天↘白云 琪乐↘融融 静等↘花开 蓝天↘的云 游戏名字|游戏名字大全 我心★飞翔 人海★情缘 伊人↘如梦 陌上↘花开 月明★星稀 人生★如梦 爱心…...

    2024/4/27 13:50:13
  9. kali_64安装w3af失败

    遇到的报错信息如下: root@kali:~# apt-get install w3af Reading package lists… Done Building dependency tree Reading state information… Done Package w3af is not available, but is referred to by another package. This may mean that the package is miss…...

    2024/4/21 11:22:59
  10. 在TMG2010中发布Web服务器场

    在许多情况下,我们使用TMG2010(或ISA Server 2006)发布单一的Web服务器,这适合对可靠性与性能要求不高的单位。如果用户对网站的响应要求比较高,并且要求实时在线并且需要提供容灾能力时,发布单一的Web服务器就不适合了。例如,在图1所示的网络拓扑中,Web服务器由两台服…...

    2024/4/21 11:22:59
  11. 好听的女孩游戏名字:杨柳★依依 蓝之※枫林

    杨柳★依依 蓝之※枫林 云淡★风轻 心静↘如水 今夜↘薇凉 梦想↘成真 浅浅↘一笑 雨中↘漫步 风淡★云清 蓝色★紫玲 落花★忆梦 丝丝↘小雨 好听的女孩游戏名字|游戏名字大全 一地↘琉璃 茜茜★燕子 甜甜★向上 浅夏↘淡忆 星辰↘启航 可爱★天使 秋水★伊人 青云★流水 轻风…...

    2024/4/21 11:22:57
  12. 转发3389到80突破防火墙

    干掉IPSEC后仍然无法连接3389,就可以用到此工具,自动停止IIS将3389转到80上 工具的命令是在cmd下输入 antifw -s 运行程序 停止iis将3389改为80 antifw -l 关闭程序。恢复iis web服务器肯定不限制80端口的连接,所以开了防火墙也不会限制80…所以用这个你再开防火墙也没有…...

    2024/4/21 11:22:56
  13. 在计算机“.”上没有找到服务W3SVC。(http)/在计算机上没有找到服务WAS

    在配置完Windows下的IIS服务之后,新建了一个网站,却不能启动。错误提示是:在计算机“.”上没有找到服务W3SVC。(http)和在计算机上没有找到服务WAS。解决办法:打开电脑控制面板->程序->程序和功能->启用或关闭windows功能原因是: 没有开启相关服务可以发现,网站…...

    2024/4/26 22:52:29
  14. 路路通 GPS软件 脱壳+破解 纪要 (RtNavi.exe)

    用PEID查壳为未知壳,如图。用ESP定律尝试,可直接到OEP,用loadpe先完整转存,再用ImportREC修复IAT,在修复过程中发现最后一行invalid,直接先删除掉。 打开修复后的文件,弹出错误对话框,如图:1,初步考虑为刚刚删除掉的无效IAT有问题,初步跟踪,没有发现特别之处。 2,…...

    2024/4/21 11:22:55
  15. w3m的的使用

    w3m是linux下的文本网页浏览器。我用的ubuntu的操作系统,用apt-get装完之后。就可使用了。 w3m是一个支持html格式的济览器,暂不支持ccs,所以排版有点混乱,但它对中文支持相当好。 比如 $w3m http://www.sohu.com 光标上下左右移动的的快捷键和VI一样。 可以用manpages看更…...

    2024/4/21 11:22:53
  16. Windows Server 2012 Web方式修改域用户密码-通过Remote Desktop Web实现

    1.在Windows Server 2003上,操作系统默认提供了一种修改域用户密码的方式 2.在Windows Server 2008上,可以提取Windows Server 2003上的代码来实现相同的功能 3.在Windows Server 2012上,提供了一种新的修改域用户密码的方式:通过Remote Desktop Web修改域用户密码,下面我…...

    2024/4/27 12:45:14
  17. W3C 解析XML

    W3C解析 负责 XMLpackage com.itheima.xml;import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.io.Writer; import java.util.Iterator; import java.util.Vector;import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.Docum…...

    2024/4/27 13:17:00
  18. 关于web服务器的攻击方式汇总

    web服务器是很容易受到攻击的,而且攻击方式呈现多样化,很多人都不知道web服务器的攻击方式到底是哪些,所以都不知道如何下手预防web服务器被攻击,因此今天本教程就整理了一些攻击方式,让大家了解一下。1、SQL注入漏洞的入侵这种是ASP+ACCESS的网站入侵方式,通过注入点列出…...

    2024/4/21 11:22:50
  19. ESP法和二次断点法脱壳总结

    ESP法和二次断点法脱壳总结 一直想学一些逆向破解之类的知识,但是起步比较难,听看雪的某个高手说你可以从免杀方面的知识入手,掌握点基础。 首先感谢姬良写的《杀不死的秘密》这本书,真心不错。 1、ESP 原理:维持堆栈平衡 壳程序运行后,首先运行壳部分,然后将原程序还原…...

    2024/4/21 11:22:49
  20. 从认识web应用开始(二)web应用基础-HTTP应用

    第一篇认识TCP通信延迟,试图总结了一下复杂的网络通信一些原理、算法基本思路。目的就是为了说明一下绝大部分web应用所依赖的底层TCP通信协议机制带来“延迟”的问题和一些常见的优化的手段。以前在电信业务系统里面有一段较长从事实时计费OCS的经历,其中一个比较重要的核心…...

    2024/4/20 17:08:13

最新文章

  1. 微星主板安装双系统不能进入Ubuntu的解决办法

    在微星主板的台式机上面依次安装了Windows11和Ubuntu22.04。在Ubuntu安装完成后重启&#xff0c;没有出现系统选择界面&#xff0c;直接进入了Windows11。怎么解决&#xff1f;方法如下&#xff1a; &#xff08;1&#xff09;正常安装Windows11 &#xff08;2&#xff09;安…...

    2024/5/4 14:15:48
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. C# 构建可定时关闭的异步提示弹窗

    C# 构建可定时关闭的异步提示弹窗 引言1、调用接口的实现2、自动定时窗口的实现 引言 我们在最常用最简单的提示弹框莫过于MessageBox.Show( )的方法了&#xff0c;但是使用久了之后&#xff0c;你会发现这个MessageBox并不是万能的&#xff0c;有事后并不想客户去点击&#x…...

    2024/5/3 5:57:39
  4. Redis精品案例解析:Redis实现持久化主要有两种方式

    Redis实现持久化主要有两种方式&#xff1a;RDB&#xff08;Redis DataBase&#xff09;和AOF&#xff08;Append Only File&#xff09;。这两种方式各有优缺点&#xff0c;适用于不同的使用场景。 1. RDB持久化 RDB持久化是通过创建一个二进制的dump文件来保存当前Redis数据…...

    2024/5/2 2:36:32
  5. 分享一个基于Multi-SLAM+3DGS的新一代三维内容生产技术

    基于智能空间计算&#xff0c;新一代超逼真三维内容生成技术。 可自动化生成超逼真的大场景三维模型&#xff0c;并在各类终端和空间计算设备中&#xff0c;实现前所未有的沉浸式体验。 更可接入专业三维软件和应用平台&#xff0c;进行深度的模型开发与场景落地。 支持超大复杂…...

    2024/5/3 1:31:22
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/1 17:30:59
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/2 16:16:39
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/3 23:10:03
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/2 15:04:34
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/4 2:59:34
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/2 9:07:46
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57