自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(78)
  • 收藏
  • 关注

原创 用户体验要素的五个层次

产品的使用属性第一 杯子就是用来装水的,如果为了美观将杯子设计成镂空的,那杯子就不是杯子了,充其量只能算是个艺术品。不要为了设计而设计,要为使用而设计。 没有用户会阅读使用说明书 用户越来越懒,没有用户愿意为了使用一个产品而去阅读使用说明。当然,这个既有用户对互联网产品越来越熟悉的原因,也要归功于产品的交互设计越来越人性化。 在一个竞争激烈的市场,很难有第二次机会去接触用户 市场上同类的竞品越来越多,当一个用户离开你的产品,并习惯了别的竞品时。他很难会再回来使用你的...

2022-02-25 08:30:00 1701

原创 逐步改进代码

编程是一种技艺甚于科学的东西,要编写整洁的代码,必须先写肮脏代码,然后再清理它。小学老师就曾告诉我们写作文要先打草稿,再逐步改进。多数新手程序员并没有认真遵循这个建议,他们相信,首要任务就是写出能工作的代码,只要能工作,就转移到下一个任务上。而那个能工作的程序就留在了最后那个能工作的状态。多数有经验的程序员都知道,这是一种自毁行为。混乱是逐渐产生的,希望你看到一段乱七八糟的代码时,第一反应是不会就此罢手,而是不希望下一个人看到这段代码时,代码还是这个状态。毁坏程序最好的方法之一就是以改进之名大动

2022-02-06 22:56:17 343

原创 总结代码整洁之道

注释不恰当的信息注释只应该描述有关代码和设计的技术性信息废弃的注释如果发现废弃的注释,最好尽快更新或删除,废弃的注释会远离它们曾经描述的代码,变成代码中无关和误导读者的浮岛。冗余注释如果注释描述的是某种充分自我描述了的东西,那么注释就是多余的糟糕的注释字斟句酌使用正确的语法和拼写,别闲扯,别画蛇添足,保持简洁注释掉的代码删除它!别担心源代码控制系统还会记得它。环境构建系统应该是单步...

2022-02-06 22:55:36 530

原创 -了解并发

为什么要并发?并发是一种解耦策略,它帮助我们把做什么(目的)和何时做(时机)分解开。解耦目的与时机能明显的改进应用程序的吞吐量和结构。从结构的角度看,应用程序看起来更像是许多台协同工作的计算机,而不是一个大循环。系统因此会更被易于理解。关于编写并发软件的中肯说法并发会在性能和编写额外代码上增加一些开销 正确的并发是复杂的,几遍对于简单的问题也是如此 并发缺陷并非总能重现,所以常被看做偶发事件而忽略 并发常常需要对设计策略做根本性修改并发防御原则单一权责 限制数据作用域两

2022-02-06 22:27:29 822

原创 通过迭代使代码整洁

使得系统变得整洁的4条规则:运行所有测试; 不可重复; 表达了程序员的意图; 尽可能减少类和方法的数量;其中1为测试规则,234为重构规则。1. 运行所有测试紧耦合的代码难以编写测试,只要系统可以测试,就会导向保持类短小且目的单一的设计方案。不可测试的系统就无法验证,也绝不应该部署。2.重构不可重复重复是拥有良好设计的系统的大敌,它代表着额外的工作、额外的风险和额外且不必要的复杂度。重复有多重表现,极其雷同的代码行也是重复。小规模服用可以大量降低系统的复杂性。表达力

2022-01-05 00:35:17 94

转载 理解依赖注入

什么是依赖关系?举个例子说明,一个类Person,另一个类Car,如果Person的某个方法比如说drive,需要引用Car,则称Person类依赖于 Car类,延伸到对象,这种依赖关系依然成立,比如说Person类的对象boy依赖于Car类的对象toyota。Public Person{...public void drive(){ Car toyota=new Car("TOYOTA"); toyota.挂档; toyota.踩油门; toyota.打方向;}}这...

2022-01-05 00:21:18 102

原创 java类

遵循标准的java类,应该从一组变量列表开始,吐过有公共静态常量,应该先出现,然后是私有静态变量,以及私有实体变量。很少有公共变量。类的第一条规则是应该短小,类的名称应当描述其全责。类名越含糊,该类越有可能拥有过多的全责。单一权责原则认为,类或模块应该有且只有一套加以修改的理由。系统应该由许多短小的类而不是少量巨大的类组成。每个小类封装成一个权责,只有一个修改的原因,并与少数其他类一起协同达成期望的系统行为。类应该只有少数实体变量,类中的每个方法都应该操作一个或多个这种变量,通常而言,方法操作的

2021-12-22 00:04:50 346

原创 单元测试(摘抄)

什么是单元测试极限编程(Extreme Programming,或简称XP)讲究TDD(test-driven development),即测试驱动开发,先编写测试代码,再进行开发。有一套运行通过的测试,我会确保任何需要用到代码的人都能方便的使用这些测试,并且确保测试代码一起签入同一个代码包。TDD三定律第一定律 在编写不能通过的单元测试前,不可编写生产代码第二定律 只可编写刚好无法通过的单元测试,不能编译也算不通过第三定律 只可编写刚好足以通过当前失败测试的生产代码保持

2021-12-21 23:56:30 180

原创 第三方代码的边界问题

在接口提供者和使用者之间,存在与生俱来的矛盾。第三方程序包和框架提供者追求普适性,这样就能再多种环境中工作,从而吸引广泛的用户。而使用者则想要得到集中满足特定需求的接口。这种矛盾会导致系统边界上出现问题。学习性测试为要使用的第三方代码编写测试,可能是最符合开发者的利益。学习第三方代码很难,整合第三方代码也很难,同时做这两件事难上加难。但是我们可以尝试不同的做法,比如不要在生产代码中实验新东西,而是编写测试来浏览和理解第三方代码。Jim Newkirk把这种叫做学习性测试。在学习性测试中,我们就想

2021-12-06 22:11:32 294

原创 异常错误处理摘抄(java)

不会java,先将书中的重点摘抄一下。错误处理很重要,但如果它搞乱了代码逻辑,就是错误的做法。异常的妙处之一是,它们在程序中定义了范围。try-catch-finally语句中try部分的代码时,你是在表明可以随时取消执行,并在catch语句中接续。如果你在编写一套关键词代码库,则已检异常有时也会有用:你必须捕获异常。但对于一般的应用开发,其依赖成本要高于收益。你抛出的每个异常,都应当提供足够的环境说明,以便判断错误的来源和位置。对于代码的某个特定区域,单一异常类通常可行。伴随异常发

2021-12-06 21:56:35 288

原创 对象和数据结构

先描述一个现象:我们将变量设置为私有(private)有一个理由,不想让外界依赖这些变量。那么为什么还有程序员给该对象添加赋值器(setter)和取值器(getter)呢?将私有变量公之于众,如同他们是公共变量一般。事实上,即使变量都是私有的,但我们也通过变量取值器和赋值器使用变量,其实现也被暴露了。然后我们来看两份代码,他们实现了相同的功能,但在扩展时会有不同的问题:过程式代码 1对象式代码 2如果给代码1的Geometry类添加一个新的函数,其形状类完全不受影响。另一方面,.

2021-11-24 20:32:37 534

原创 培养良好的代码格式

目的原始代码修改之后很久,其代码风格和可读性仍会影响代码的可维护性和扩展性。好的代码如同报纸上的文章,你从上到下阅读,在顶部你期望有个头条,告诉你故事的主题,好让你决定是否读下去。第一段是整个故事的大纲,给出粗线条概述,但隐藏了故事细节。接着读下去,细节渐次增加,直至你了解了所有的日期、名字、引语、说法和其他细节。团队应该一致同意采用一套简单的格式规则,所有成员都要遵从这套规则。垂直维度对于java源代码来说,如JUnit、FitNesse和Time and Money都由相对较小的文件

2021-11-17 20:00:00 94

原创 什么是好的注释?

为什么要写注释?什么也比不上防止良好的注释来的有用,什么也不会比乱七八糟的注释更有本事搞乱一个模块,什么也不会比陈旧、提供错误信息的注释更有破坏性。所以良好的注释是提高代码质量重要的一环。注释的恰当用法是弥补我们在用代码表达意图时遭遇的失败,如果发现自己需要写注释,就再想想看是否有办法用代码来表达。注释存在时间越久,离其所描述的代码就越远,就越来越变得全然错误,原因是程序员没有坚持维护注释。程序员应当负责将注释保持在可维护、有关联、精确的高度。注意:注释不能梅花糟糕的代码,与其花时间

2021-11-11 19:32:16 1176

原创 怎样写一个干净利落的函数

函数最重要的规则是短小,20行封顶为最佳。每个函数只做一件事,每个函数依序把你带到下一个函数。if、else、while语句等, 其中的代码应该只占一行,改行大抵应该是一个函数的调用语句。函数不应该达到足以容纳嵌套结构。编写函数是为了把比较大的概念拆分为另一抽象层上的一系列步骤。如果函数只做了该函数名下同一抽象层上的步骤,则该函数还是只做了一件事。函数中的语句要在同一抽象层级上。使用具有描述性的名称,且命名方式保持一致。参数不易阅读,它们带有太多的概念性,所以尽量使用少的参数。最理想

2021-11-05 00:09:11 111

原创 有意义的命名

一个好的命名应遵循如下几条规则:一旦发现了有更好的名称,就替换掉旧的。 名称应该告诉读者,它为什么会存在,它做什么事,应该怎么用,如果名称需要注释来补充,那就不算是名副其实。 避免使用专有名词,或与本意相悖的词。 提防使用外形相似度较高的名称。 做有意义的区分,以数字命名是其对立面(如a1,a2,a3,...)。 避免出现同义词(如product,productInfo,productData)。 使用读得出来的名称,而不是各种单词的一系列缩写。 使用可搜索的名称,便于后续维护。 避免使

2021-10-27 21:30:00 158

原创 为什么要写整洁的代码?

不管是刚入行不到一年的新手程序员,还是工作三年以上的老鸟,一定碰到过“祖传代码”,并为之头疼。对代码的每次修改都影响其他两三处的代码,每次添加或修改代码,都得对那堆扭纹柴了然于心,这样才能往上扔更多的扭纹柴,随着这团乱麻越来越大,再也无法清理,最后束手无策。宁愿自己重新写这个功能,也不愿碰它。很久之前,这种能跑就行的代码被开发出来,并说有朝一日再回头整理,最终“稍后等于永不”,堆叠成一个个谜题,等到后面接手的人去解答。被祖传代码拖了后腿,开发者又背负deadline压力,只好继续堆叠混乱。而事实

2021-10-21 00:00:15 207

原创 cstown优化点

description重复关键词过多当前出现的问题:优化方向:保留最多2个重复词,可以添加其他关键词。从图中可以看到这些自然搜索排名靠前的网站,他们出现重复词的概率极低,而且无论文本数量多少通常不超过2次,一行文本的容量下(大概160英文字符),大多只出现一次核心关键词。目前cstown在一行文本的情况下,出现3次双单词重复词“heat transfer”。形成一句话,最好是吸引点击方向优化,比如以叹号结尾的句子。目前cstown去掉行业专有名词几乎不剩什么有意义的单词,有堆砌关键词的感觉。

2021-05-25 00:02:42 180 1

原创 SEO之关键词

长尾词较长的、比较具体的、搜索次数比较低的词。单个长尾词搜索次数少,但词的总体数量庞大,加起来的总搜索次数不比热门关键词搜索次数少,甚至更多,而且搜索意图更明确。大型网站的长尾流量往往远超热门词的流量。长尾词竞争小,利于提高排名。导航类关键词指用户在寻找特定网站,他知道自己要去哪个网站,只是不记得网址或懒得输入,所以在搜索引擎输入品牌名称或相关词。竞争对手的品牌被当做导航关键词时,对自己是个机会,可以从对手的品牌搜索中获得流量。可以靠增强外部链接和锚文字,以及创建专题来实现。交易类关键词

2021-05-22 23:05:15 336

原创 SEO之关键词选择原则

如果是电商网站则要与产品相关,如果是靠广告收入的网站,只要能获得流量的关键词就行选择搜索次数多、竞争相对小的词(细分领域),这点可以利用工具分析主关键词不可太宽泛主关键词不可太特殊、太长。比如非著名的公司品牌、名称、产品等。选择商业价值高的。不同关键词搜索者的购买意图也不同。搜索结果数量。搜索结果数越大,竞争程度越大。通常结果数在10w以下竞争小,容易做。十几万——有热度。一两百万——有热度千万——行业通用名词,竞争激烈intitle:数量竞价结果数。参考付费广告推广的关键词竞价.

2021-05-22 16:28:50 365

原创 SEO之高级搜索指令

双引号 “”完全匹配搜索百度、谷歌减号 -排除减号后面的内容减号前面是空格,后面不接空格百度、谷歌星号 *任意匹配谷歌inurl:搜索查询词出现在URL中的页面支持中文和英文谷歌、百度inanchor:导入链接锚文字中包含搜索词的页面。锚文字。谷歌可以用来找竞争对手。intitle:页面title中包含关键字的页面百度、谷歌allintitle:1 页面标题中包含多组关键词,allintitle:a b既包含a也包含b的结果2 谷歌al

2021-05-22 15:21:22 318

原创 谷歌SEO之抓取——名词摘录

Googlebot会爬取站内链接,最简单的爬取遍历策略为深度优先和广度优先。深度优先爬虫沿着发现的链接一直向前爬行,直到再也没有其他链接。然后返回到第一个页面,沿着另一个链接继续向前爬行。广度优先在一个页面发现多个链接时,是把当前页面所有第一层链接都爬一遍,再沿着第二层页面发现的链接爬向第三层页面。理论上只要时间足够,爬虫能够爬完整个互联网,但实际操作中不可能有无限时间,所以爬取策略一般都是混合使用,照顾到尽量多的网站...

2021-05-20 21:19:37 234

原创 从0搭建一个Git服务器并部署代码

当自己有了服务之后,自然希望把代码存到自己的服务器上,并且能够热更新自己的项目。这时候就需要自己搭建一个git服务器了,实现在服务器收到代码更改后,更新到自己的项目上。下面是操作流程:1.建立云服务器上的git仓库。首先我们选定一个目录作为Git仓库,假定是/home/gitrepo/runoob.git,在/home/gitrepo目录下输入命令:$ cd /home...

2020-03-07 00:56:08 674

原创 腾讯云+tipask快速搭建基于laravel的CMS网站

一、购买腾讯云服务器,服务市场->基础环境->选择WordPress平台镜像二、按照tipask教程安装tipask官方教程地址https://wenda.tipask.com/article/22官方教程对新手不太友好,我整理如下:1.ftp上传文件云服务器镜像装载完毕后,浏览器访问服务器公网ip,点击获取权限后会下载服务器相关的文件浏览器访问host url,根据所给的账号密码登录...

2018-06-04 00:05:03 1597

原创 laravel摘抄

Dependency injection:is a fancy phrase that essentially means this: class dependencies are "injected" into the class via the constructor or, in some cases, "setter" methods.Service Container

2018-04-27 14:50:41 247

原创 css移动端模糊

1.模糊CSS:transform:translate(-50%,-50%)使文本模糊(CSS: transform: translate(-50%, -50%) makes texts blurry)

2018-04-27 14:48:43 1096

原创 vue插槽slot

一、什么是插槽slot简单来说,就是父子组件间用来渲染对方的内容的。比如,写在子组件开始结束标签之间的内容,除非子组件模板包含至少一个 插口,否则父组件的内容将会被丢弃。原因:父组件模板的内容在父组件作用域内编译;子组件模板的内容在子组件作用域内编译。二、单个插槽当子组件模板只有一个没有属性的插槽的时候,父组件传入的整个内容片段将插入到插槽所在的DOM位置,并替换掉插槽本身。最初

2018-04-27 14:28:32 285

原创 vue组件通信

这部分vue文档已经说的很清楚了,但是为了更好的理解,自己再整理一遍。首先,父组件的与子组件的通信是通过子组件的props。那么子组件有数据变化时,想要通知父组件应该怎么办呢?父组件可以在使用子组件的地方直接用 v-on 来监听子组件触发的事件。简单来说,就是子组件监听的事件,在函数内使用 $emit(eventName, optionalPayload) 触发事件,在父组件使

2018-04-25 15:05:51 202

原创 vue一些容易混淆的名词

1.计算属性计算属性是基于它们的依赖进行缓存的,而调用方法总是每次重新计算。如果不需要缓存,就使用方法。当你有一些数据需要随着其它数据变动而变动时,通常更好的做法是使用计算属性而不是命令式的 watch 回调。2.侦听属性watch当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的。

2018-04-24 14:11:16 659

转载 浏览器渲染过程

浏览器的渲染分为五个步骤:处理HTML标记并构建DOM树处理CSS标记并构建 CSSOM树(CSS Object Model) 将CSSOM和DOM合并成一个渲染树根据渲染树来布局,以计算每个节点的几何信息将各个节点绘制到屏幕上这五个步骤不一定一次性顺序完成。如果DOM或者CSSOM被修改,以上过程需要重复执行,这样才能计算出哪些像素需要在屏幕上进行重新渲染。实际页面中,CSS与JavaScrip...

2018-04-11 14:54:03 236

原创 php爬虫——以爬取图片为例

爬虫的一般思路如下:分析目标源所有url抓取URL分析内容入库现在以抓取一个图片为主的网站为例,爬取其中的图片。网站名称:堆糖网域名:https://www.duitang.com/需抓取的分类/频道:时尚穿搭、美妆造型、婚礼婚纱1.分析目标源所有url

2018-02-10 03:25:22 6793

原创 php文件相关操作

由于接下来要接触使用php爬虫,而爬取来的数据有时候为了节省数据库资源,需要保存为本地文本文件,所以在这里整理一下php相关的文件操作函数。一、打开文件首先打开文件fopenresource fopen(string $filename,string $mode)filename:被打开的文件路径mode:打开文件的模式写入是重新写入,如果想在文件末尾追加应

2018-02-03 16:37:57 248

原创 laravel本地项目常见错误及解决办法

1.nginx报错require(/data/www/dongmeiwei.com/bootstrap/../vendor/autoload.php): failed to open stream: No such file or directory in /data/www/dongmeiwei.com/bootstrap/autoload.php on line 17解决办法:comp

2018-01-31 09:22:34 3047

原创 LNMP软件安装目录

为了方便配置软链接使用:LNMP相关软件安装目录Nginx 目录: /usr/local/nginx/MySQL 目录 : /usr/local/mysql/MySQL数据库所在目录:/usr/local/mysql/var/MariaDB 目录 : /usr/local/mariadb/MariaDB数据库所在目录:/usr/local/mariadb/var/PHP

2018-01-30 23:47:07 305

原创 facade外观模式

在使用laravel框架的时候,经常能看到facade,今天就来研究一下到底什么是facade。一、定义Facade(外观)模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。它是为子系统中的一组接口所提供的一个一致的界面。Facade并不是laravel框架独有的东西,它属于设计模式中的外观模式。以上的定义有些绕,我们举个例子

2018-01-27 18:20:49 710

原创 laravel 队列jobs体验

在真正开始看文档学习queue之前,对于队列的印象是这是一个比较难的东西,一时半会儿学不会,是高级程序员处理的东西。然而在真正接触了之后,却发现并没有想象中那么难以攀登。花了两个小时看英文文档(慢的一匹),然后就可以按部就班的实现一个小的队列任务了。实现过程如下:1.数据库建表php artisan queue:table //队列任务表php artisan queue

2018-01-20 16:26:06 14577

原创 整理项目结构,提高工作效率

入职以来,手上的laravel项目已经开发了两个多月,随着版本的更替,项目里存在了3个版本的代码:初始版、v1、v2。对于laravel项目来说,对于代码,总体分为三个大块:controller、

2018-01-13 14:09:39 639

转载 sign_and_send_pubkey: signing failed: agent refused operation

git添加公钥后报错sign_and_send_pubkey: signing failed: agent refused operation的解决办法  在服务器添加完公钥后报错1sign_and_send_pubkey: signing failed: agent refused operation

2018-01-13 01:23:22 407

原创 seo初识:发布一个新的网站首先该做些什么?

一、页面对SEO流量的影响一个网站最先产生的是页面,无论是首页、列表页、详情页或者其他页面。这些页面是否有人搜索,怎么合理的部署该页面的TDK是最开始的SEO工作,也是很重要的SEO工作之一。二、爬虫网络爬虫是一个自己主动提取网页的程序。它为搜索引擎从Internet网上下载网页。是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL開始,获得初始网页上的URL。在抓取网页的过程中。不断从当前

2018-01-06 13:02:25 1151

原创 【翻译】使用Docker Compose一键安装安装Mesos

你绝对应该尝试一下Docker。它高效和简单的用户体验会令你惊叹。在这篇文章中,我将向你展示如何使用Docker compose构建一个单节点的Mesos。Docker在2月26日发布了compose。Compose可以让你实现多环境下安装Mesos,并用一个二进制的docker-compose来管理。Compose的环境配置是定义在一个YAML文件中的,超级容易阅读且超级容易编写

2018-01-05 17:00:41 485

原创 laravel为网站添加支付功能流程(支付宝)

为网站添加支付功能,本博客以添加支付宝接口为例。一、创建应用链接:蚂蚁金服开放平台进入蚂蚁金服开放平台->开发者中心->网页&移动应用按需求选择创建应用选择应用功能然后提交审核,大部分功能需要签约后才能使用。等审核正式通过,该应用就可以正式投入使用。二、配置秘钥及环境用生成工具生成公私钥后,将应用公钥填入秘钥处,私钥留着配置在

2017-12-29 17:31:29 2277

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除