Solid

[译]开发者须知的SOLID原则

允我心安 提交于 2020-12-13 10:28:04
原文: SOLID Principles every Developer Should Know – Bits and Pieces SOLID Principles every devloper should know 面向对象为软件开发带来了新的设计方式,它使得开发者可以将具有相同目的或功能的数据结组合到一个类中来完成单一的目的,不需要考虑整个应用。 但是,面向对象编程没有减少混乱和不可维护的程序。正是这样,Robert C. Martin发展出了5条指南/准则,让开发者可以易于创建可读且易于维护的程序。 这5条准则就是S.O.L.I.D原则(缩写是Michael Feathers推演出来的) S: Single Responsibilty Principle 单一功能原则 O: Open-Closed Principle 开闭原则 L: Liskov Substitution Principle 里氏替换 I: Interface Segregation Principle 接口分离 D: Dependency Inversion Principle 依赖反转 接下来我们详细讨论上述原则。 注意: 本文的大部分例子可能不能满足或者适用现实世界的应用程序。要视你自己的实际设计和使用场景来定。最 重要 的是理解和掌握如何运用或遵循这些原则。 建议:使用 Bit

AkShare-股票数据-美港目标价

情到浓时终转凉″ 提交于 2020-12-13 07:07:49
作者寄语 目前提供美股和港股的来自各大投行的目标价和评级数据接口,数据从2019年开始。 更新接口 "stock_js_price" # 美港目标价 美港目标价 接口: stock_js_price 目标地址: https://www.ushknews.com/report.html 描述: 获取美港电讯-美港目标价数据 限量: 单次获取所有数据, 数据从 2019-至今 输入参数 名称 类型 必选 描述 category str Y category="us"; choice of {"us", "hk"} 输出参数 名称 类型 默认显示 描述 id float Y - indicator_id float Y - latest_rating str Y - previous_rating str Y - latest_target_price str Y - previous_target_price str Y - institution str Y - pub_time str Y - status float Y - name str Y - us float Y - hk float Y - 接口示例 import akshare as ak stock_js_price_df = ak.stock_js_price(category= "us" ) print

emmc和ssd的区别【转】

寵の児 提交于 2020-12-13 00:23:49
本文转载自: https://blog.csdn.net/hawk_lexiang/article/details/78228789 emmc和ssd eMMC和SSD主要是满足不同需求而发展出来的NAND应用,相同点都是控制器加NAND颗粒组成的存储介质; 平板和手机为了满足移动性的需求,所以需要做到轻,薄;尤其是功耗要很低,因此eMMC就诞生了;所以eMMC接口是用IO pin来定义的,这样接口简单,功耗低;另外eMMC对于苹果iPad、安卓平板电脑、手机的作用也是巨大的,平板和手机都比较小,所以eMMC是把控制器和NAND颗粒封装在一个package里面,这也造成eMMC不能放很多NAND颗粒,容量比较低。 总结eMMC特点就是功耗低,容量小,随机读写性能差; SSD主要是为了满足大容量存储尤其是数据中心等应用场合,SSD成PC电脑的性能催化剂,读写性能尤其是随机读写性能快。为可达到这样的性能,SSD控制器都是使用高速总线,刚开始是SATA,现在PCIE也越来越多,以后可能会用光纤;NAND颗粒都有多个通道用于提升容量和读写性能。所以SSD功耗也很大。 总结SSD特点就是功耗大, 容量大,读写快。 单颗闪存芯片制作的eMMC,相当于缩小精简的SSD eMMC实际上将主控、闪存晶圆Die单元封装在一个颗粒芯片,它看起来和普通的闪存颗粒没什么两样,这种一体化封装被称为eMMC

记录利用CSS完美解决前端图片变形问题

眉间皱痕 提交于 2020-12-06 18:54:08
在头条IT学堂看到CSS完美解决前端图片变形问题的文章,就记录分享下: 一、让图片的宽度或者高度等于容器的宽度或高度,多余的裁掉,然后让图片居中: < style type ="text/css" > div { width : 200px ; height : 200px ; overflow : hidden ; border : 2px solid red ; position : relative ; } img { width : 100% ; position : absolute ; top : 50% ; left : 50% ; transform : translate(-50%, -50%) ; } </ style > < div > < img src ="1.png" > </ div > < br > < div > < img src ="1.jpg" > </ div > 效果图: 如果图片的宽度限制了,高度大于等于容器的高度,就会填满整个容器,但是如果图片高度小于容器高度,就会出现空白,固定高度同理。此方法是最简单也最实用,配合后台裁切,更加完美。 二、让图片始终显示在容器内,并且居中显示。这种方法不会裁切图片,可以说是上面的升级版。 < style type ="text/css" > div { width : 200px ; height

令人惊叹的JavaScript装B黑科技

一世执手 提交于 2020-12-05 11:09:43
Javascript是一门很吊的语言,我可能学了假的JavaScript,哈哈,大家还有什么推荐的,补充送那啥邀请码。 本文秉承着:你看不懂是你SB,我写的代码就要牛逼。 1、单行写一个评级组件 "★★★★★☆☆☆☆☆".slice(5 - rate, 10 - rate);定义一个变量rate是1到5的值,然后执行上面代码,看图 才发现插件什么的都弱爆了 2、如何装逼用代码骂别人SB ( ! ( ~ + []) + {})[ -- [ ~ + " " ][ + []] * [ ~ + []] + ~~ ! + []] + ({} + [])[[ ~ ! + []] * ~ + []] 3、如何用代码优雅的证明自己NB 这个牛逼了 console . log (([][[]] + [])[ + !! []] + ([] + {})[ ! + [] + !! []]) 4、JavaScript 错误处理的方式的正确姿势 😂 😂 😂 ,舅服你 try { something } catch (e) { window . location . href = " http://stackoverflow.com/search?q=[js]+ " + e . message ; } 5、从一行代码里面学点JavaScript []. forEach . call ( $$ ( " * " )

一个学渣的CTO逆袭之路

故事扮演 提交于 2020-12-04 08:17:13
这个画面,熟悉不? 80、90后的人,相信很多应该看过 当年 新华电脑专修学院的广告吧! 对!我就是因为这则广告,入了计算机的“坑”,并且越陷越深! 当年,我在上初中,看了这则广告,便被被深深地吸引了,是那种全身上下每个细胞都很热血的感觉! 我记得当时中考是在县城,考完试,出了考场,我收到一个某电脑培训机构的传单。这激起我内心对计算机学习的欲望,我便毫不犹豫地报了名,从此,开启了我的计算机之路。下面就我的个人经历,来谈谈我自己的跃迁之路吧! 0 1 启程之初-建立知识体系 回忆起这个阶段,我觉得我走的真是比较顺利,每次在遇到迷茫时刻都遇到了人生导师,给我指明了方向: 初中时代 正如开头所说,我中考结束正式进入培训机构学习,但是我还清晰记得当时那种大屁股电脑,装98系统,刚接触,简直太神奇了! 一进去就看到某位大神,啪啪的打字,速度超快,我顿时就惊呆了。我当时心里想,我也要成为那样的人。 期间学习内容现在看来是非常简单,当时就三个内容,五笔打字,word、excel 基础操作。这个阶段建立起了对计算机基础认知!五笔打字练就了我敲键盘的速度,对后来我写代码影响极大! 高中阶段 培训完正式进入高中学习,高一上半年一直对学习没有很好进入状态,直到上学期结束,我就和我爸说想辍学,去新华学电脑,学编程,我爸气的差点揍我,直到某一天,我家有个亲戚是某学校的校长,来我家跟我爸聊起,有个对口高考(对

linux下如何查询进程资源占用?

假装没事ソ 提交于 2020-12-04 08:02:17
linux下有时需要查询某个文件被哪些进程调用,或者某个进程打开了哪些文件,今天介绍两个命令。 0 1 fuser 可以显示出当前哪个程序在使用某个文件、挂载点、网络端口,并给出程序进程的PID等信息 如图fuser显示使用指定文件或者文件系统的用户、进程号、权限、命令。 权限类型有一下几种: c——代表当前目录 e——将此文件作为程序的可执行对象使用 f——打开的文件,默认不显示 F——打开的文件,用于写操作,默认不显示 r——根目录 m——映射文件或者共享库 s——将此文件作为共享库 fuser命令常用选项: -a 显示所有命令行中指定的文件,默认情况下被访问的文件才会被显示。 -c 和-m一样,用于POSIX兼容。 -k 杀掉访问文件的进程。如果没有指定-signal就会发送SIGKILL信号。 -i 杀掉进程之前询问用户,如果没有-k这个选项会被忽略。 -l 列出所有已知的信号名称。 -m name 指定一个挂载文件系统上的文件或者被挂载的块设备(名称name)。这样所有访问这个文件或者文件系统的进程都会被列出来。如果指定的是一个目录会自动转换成"name/",并使用所有挂载在那个目录下面的文件系统。 -n space 指定一个不同的命名空间(space).这里支持不同的空间文件(文件名,此处默认)、tcp(本地tcp端口)、udp(本地udp端口)。对于端口,

关于thymeleaf+layout布局的使用方式,spring boot 访问页面(静态页面及jsp页面)

丶灬走出姿态 提交于 2020-12-04 01:47:47
首先建立相同部分的html,这里我命名为layout.html,放在了`templates/layout'文件夹下,这个路径以后是会用到的,以下是我的layout的代码,比较粗糙. 但是应该会更好的帮助理解. 要提到几个重要的部分 <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org" xmlns:layout ="http://www.ultraq.net.nz/web/thymeleaf/layout"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <style> * {font-family: Microsoft YaHei, Tahoma, Helvetica, Arial, sans- serif;} .header {background - color: #f5f5f5;padding: 20px;} .header a {padding: 0 20px;} .container {padding: 20px;margin:20px auto;}

论文速览:Multi-source Domain Adaptation for Semantic Segmentation

左心房为你撑大大i 提交于 2020-12-03 11:29:30
Multi-source Domain Adaptation for Semantic Segmentation [ NeurIPS 2019 ] [ 2020 : MADAN: Multi-source Adversarial Domain Aggregation Network for Domain Adaptation] [ github ] 目录 Multi-source Domain Adaptation for Semantic Segmentation Abstract Problem Setup MADAN Overview Dynamic Adversarial Image Generation Adversarial Domain Aggregation Feature-aligned Semantic Segmentation MADAN Learning Abstract Simulation-to-real domain adaptation for semantic segmentation has been actively studied for various applications such as autonomous driving. Existing methods mainly focus on a single-source

C# 在PPT中绘制形状(shape)

爷,独闯天下 提交于 2020-12-03 02:33:35
概述 本篇文章将介绍C# 在PPT幻灯片中操作形状(shape)的方法。这里主要涉及常规形状,如箭头、矩形、圆形、三角形、多边形、不规则形状等。下面的示例中,可以通过绘制形状,并设置相应格式等。示例包含以下要点: 绘制形状 用图片填充形状 在形状中添加文字 设置形状单色、渐变色填充 设置形状阴影效果 组合多个形状为一个 设置形状光边效果 将形状保存为图片 工具 Spire.Presentation for .NET 下载安装后,注意在程序中添加引用Spire.Presentation.dll到程序,dll文件可在安装路径下的Bin文件夹中获取。 示例代码(供参考) 【示例1】绘制形状 步骤1:新建一个幻灯片 // 新建一个幻灯片文档,并指定幻灯片大小 Presentation ppt = new Presentation(); ppt.SlideSize.Type = SlideSizeType.Screen16x9; 步骤2:获取第一张幻灯片 ISlide slide = ppt.Slides[ 0 ]; 步骤3:添加一个云朵形状,并填充渐变色,绘入文字 // 添加一个云朵形状,并填充渐变颜色 IAutoShape shape1 = slide.Shapes.AppendShape(ShapeType.CalloutCloud, new RectangleF( 160 , 50