circle

golang之结构体结构体嵌入和匿名成员

為{幸葍}努か 提交于 2019-12-05 03:16:11
考虑一个二维的绘图程序,提供了一个各种图形的库,例如矩形、椭圆形、星形和轮形等几何形状。这里是其中两个的定义: type Circle struct {   X, Y, Radius int } type Wheel struct {   X, Y, Radius, Spokes int } 一个Circle代表的圆形类型包含了标准圆心的 X 和 Y 坐标信息,和一个 Radius 表示的半径信息。一个Wheel轮形除了包含Circle类型所有的全部成员外,还增加了Spokes表示径向辐条的数量。我们可以这样创建一个wheel变量: var w Wheel w.X = 8 w.Y = 8 w.Radius = 5 w.Spokes = 20 随着库中几何形状数量的增多,我们一定会注意到它们之间的相似和重复之处,所以我们可能为了便于维护而将相同的属性独立出来: ype Point struct {   X, Y int } type Circle struct {   Center Point   Radius int } type Wheel struct {   Circle Circle   Spokes int } 这样改动之后结构体类型变的清晰了,但是这种修改同时也导致了访问每个成员变得繁琐: var w Wheel w.Circle.Center.X = 8 w

必备技能echarts

五迷三道 提交于 2019-12-04 23:18:07
echart 设置图例图标形状 https://blog.csdn.net/qq_15390381/article/details/81736796 legend: { data: ["总数", "已解决", "未解决"], icon: "circle", // 这个字段控制形状 类型包括 circle,rect ,roundRect,triangle,diamond,pin,arrow,none itemWidth: 10, // 设置宽度 itemHeight: 10, // 设置高度 itemGap: 40 // 设置间距 }, 来源: https://www.cnblogs.com/qdwz/p/11887786.html

SVG 圆形 - <circle>

若如初见. 提交于 2019-12-04 17:22:39
<circle> 标签可用来创建一个圆: 下面是SVG代码: 实例 <svg xmlns="http://www.w3.org/2000/svg" version="1.1"> <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red"/> </svg> 代码解析: cx和cy属性定义圆点的x和y坐标。如果省略cx和cy,圆的中心会被设置为(0, 0) r属性定义圆的半径 来源: https://www.cnblogs.com/sea520/p/11875333.html

C++ 虚析构函数

天涯浪子 提交于 2019-12-04 16:27:13
防止内存泄露 子类继承父类后,在子类构造函数里,通过new 来生成一个对象实例 在析构函数里执行释放内存操作,如果父类不加上virtual 关键词 则子类执行的是父类的析构函数,不执行自己的析构函数。 父类不加virtual 子类继承后,并执行析构函数: #include <iostream> /** * C++多态 虚析构函数 (防止内存泄露) */ using namespace std; //形状 class Shape { public: Shape(); ~Shape(); virtual double calcArea(); }; class Coordinate { public: Coordinate(int x, int y); ~Coordinate(); protected: int m_iX; int m_iY; }; //Circle继承Shape class Circle : public Shape { public: Circle(double r); ~Circle(); double calcArea(); protected: double m_dR; Coordinate *coordinate; protected: string m_strName; }; //Rect继承Shape class Rect : public Shape {

C++ 虚函数

北战南征 提交于 2019-12-04 16:24:52
父类函数不加virtual关键词,子类继承后,当父类指针指向子类指针,同样的函数,会执行父类的函数。子类的函数实际是被隐藏了,如果用子类的指针指向自己的话,是能够执行的。 #include <iostream> /** * C++多态 虚函数 */ using namespace std; class Shape { public: Shape(); ~Shape(); double calcArea(); }; class Circle : public Shape { public: Circle(double r); ~Circle(); double calcArea(); protected: double m_dR; protected: string m_strName; }; class Rect : public Shape { public: Rect(double width, double height); ~Rect(); double calcArea(); protected: double m_dWidth; double m_dHeight; }; Rect::Rect(double width, double height) { m_dHeight = height; m_dWidth = width; cout << "Rect::Rect()

设计模式——结构型模式之享元模式(六)

不打扰是莪最后的温柔 提交于 2019-12-04 14:31:00
享元模式 享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。 享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。我们将通过创建 5 个对象来画出 20 个分布于不同位置的圆来演示这种模式。由于只有 5 种可用的颜色,所以 color 属性被用来检查现有的 Circle 对象。 个人理解: java中字符串就是使用了享元模式,如果已经存在了,就使用它,否则就重新创建。 介绍 意图: 运用共享技术有效地支持大量细粒度的对象。 主要解决: 在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建。 何时使用: 1、系统中有大量对象。 2、这些对象消耗大量内存。 3、这些对象的状态大部分可以外部化。 4、这些对象可以按照内蕴状态分为很多组,当把外蕴对象从对象中剔除出来时,每一组对象都可以用一个对象来代替。 5、系统不依赖于这些对象身份,这些对象是不可分辨的。 如何解决: 用唯一标识码判断,如果在内存中有,则返回这个唯一标识码所标识的对象。 关键代码: 用 HashMap 存储这些对象。 应用实例: 1、JAVA 中的 String,如果有则返回

Python-矩形和圆形

时间秒杀一切 提交于 2019-12-04 05:51:29
Exercise 15.1. 定义一个叫做 Circle 类,类的属性是圆心 ( center ) 和半径 ( radius ) , 其中, 圆心 ( center ) 是一个  Point 类,而半径 ( radius ) 是一个数字。 实例化一个圆心 (center) 为 ( 150, 100 ) ,半径 (radius) 为 75 的 Circle 对象。 1、编写一个名称为 point_in_circle 的函数,该函数可以接受一个圆类 ( Circle ) 对象和点类 ( Point ) 对象,然后判断该点是否在圆内。在圆内则返回 True 。 2、编写一个名称为 rect_in_circle 的函数,该函数接受一个圆类 ( Circle ) 对象和矩形 ( Rectangle ) 对象,如果该矩形是否完全在圆内或者在圆上则返回 True 。 3、编写一个名为 rect_circle_overlap 函数,该函数接受一个圆类对象和一个矩形类对象,如 果矩形有任意一个角落在圆内则返回 True 。或者写一个更具有挑战性的版本,如果该矩 形有任何部分落在圆内返回 True 。 #######15.9 p175import mathclass Circle: # """ This is a circle Class, incude Center and radius ""

享元模式

微笑、不失礼 提交于 2019-12-03 13:26:12
享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。 享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。我们将通过创建 5 个对象来画出 20 个分布于不同位置的圆来演示这种模式。由于只有 5 种可用的颜色,所以 color 属性被用来检查现有的 Circle 对象。 介绍 意图: 运用共享技术有效地支持大量细粒度的对象。 主要解决: 在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建。 何时使用: 1、系统中有大量对象。 2、这些对象消耗大量内存。 3、这些对象的状态大部分可以外部化。 4、这些对象可以按照内蕴状态分为很多组,当把外蕴对象从对象中剔除出来时,每一组对象都可以用一个对象来代替。 5、系统不依赖于这些对象身份,这些对象是不可分辨的。 如何解决: 用唯一标识码判断,如果在内存中有,则返回这个唯一标识码所标识的对象。 关键代码: 用 HashMap 存储这些对象。 应用实例: 1、JAVA 中的 String,如果有则返回,如果没有则创建一个字符串保存在字符串缓存池里面。 2、数据库的数据池。 优点: 大大减少对象的创建,降低系统的内存

python画一只佩奇

半腔热情 提交于 2019-12-03 13:12:54
用python画一只佩奇 from turtle import* def nose(x,y):#鼻子 penup()#提起笔 goto(x,y)#定位 pendown()#落笔,开始画 setheading(-30)#将乌龟的方向设置为to_angle/为数字(0-东、90-北、180-西、270-南) begin_fill()#准备开始填充图形 a=0.4 for i in range(120): if 0<=i<30 or 60<=i<90: a=a+0.08 left(3) #向左转3度 forward(a) #向前走a的步长 else: a=a-0.08 left(3) forward(a) end_fill()#填充完成 penup() setheading(90) forward(25) setheading(0) forward(10) pendown() pencolor(255,155,192)#画笔颜色 setheading(10) begin_fill() circle(5) color(160,82,45)#返回或设置pencolor和fillcolor end_fill() penup() setheading(0) forward(20) pendown() pencolor(255,155,192) setheading(10) begin_fill(

设计模式 装饰器模式

空扰寡人 提交于 2019-12-03 09:21:52
装饰器模式:为对象添加新功能,不改变其原有的结构和功能 适配器模式是原有的不能用了,要重新封装接口。装饰器模式是原有的还能用,但是需要新增一些东西来完善这个功能 比如手机壳,手机本身的功能不受影响,手机壳就是手机的装饰器模式 uml类图 代码 class Circle { draw() { console.log('画一个圆形'); } } class Decorator { constructor(circle) { this.circle = circle; } draw() { this.circle.draw(); this.setRedBorder(circle); } setRedBorder(circle) { console.log('设置红色边框') } } // 测试 let circle = new Circle(); let client = new Decorator(circle); client.draw(); 使用场景 ES7装饰器 1、安装 yarn add babel-plugin-transform-decorators-legacy 2、.babelrc { "presets": ["es2015", "latest"], "plugins": ["transform-decorators-legacy"] } 3、代码 //