自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (2)
  • 收藏
  • 关注

原创 iosday2----stackView、Label、Gesture

Stackview它继承于UIView,用来管理一行或一列视图的布局(堆叠视图的控制器类视图,所谓堆叠视图时一种平铺式的线性布局方式,不可重叠,布局方向也不可交错.Axisstack 的朝向,只有垂直或水平Distribution管理的视图在沿着其轴向上的布局如果减去所有的spacing,所有arrangedSubview的固有尺寸(intrinsicContentSize)之和不能填满StackView,那么就按照Hugging的优先级将其拉伸。反之,如果超出StackView的尺寸则按Com

2020-12-16 11:12:13 159

原创 ios开发---AutoLayout

布局约束:1.页边间距约束左边距和右边距。2.水平间距约束3.等宽约束4.方向比例约束5.实践布局约束

2020-12-14 18:12:13 98

原创 swift基础day7---泛型、不透明类型、自动引用计数、内存安全、访问控制

泛型能根据自定义的需求,编写出适用于任意类型的、灵活可复用的函数及类型。泛型函数泛型版本的函数使用占位符类型名(这里叫做 T ),而不是 实际类型名(例如 Int、String 或 Double),占位符类型名并不关心 T 具体的类型,但它要求 a 和b 必须是相同的类型,T 的实际类型由每次调用 swapTwoValues(:???? 来决定。//泛型函数func swapTwoValues<T>(_ a: inout T, _ b: inout T){ let tempora

2020-12-11 15:18:19 134

原创 swift基础day7---扩展、协议

扩展(extension)扩展可以给一个类型添加新的功能,但是不能重写已经存在的功能。扩展可以实现:添加计算型实例属性和计算型类属性定义实例方法和类方法 提供新的构造器定义下标定义和使用新的嵌套类型使已经存在的类型遵循一个协议对一个现有的类型,如果你定义了一个扩展来添加新的功能,那么这个类型的所有实例都可以使用这个新功能,包括那些在扩展定义之前就存在的实例。计算型属性扩展:扩展可以添加新的计算属性,但是它们不能添加存储属性,或向现有的属性添加属性观察者。构造器扩展扩展可以给一个类添

2020-12-10 23:27:21 125

原创 swift基础day6---类型转换、嵌套类型

类型转换在 Swift 中使用 is 和 as ,分别提供了一种方式去检查值的类型或者转换它的类型。为类型转换定义类层次将类型转换用在类和子类的层次结构上,检查特定类实例的类型并且转换这个类实例的类型成为这个层次结构中的其他类型.class MediaItem { var name: String init(name: String) { self.name = name }}class Movie: MediaItem { var director

2020-12-10 22:52:59 81

原创 swift基础day6---错误处理

错误处理Swift 在运行时提供了抛出、捕获、传递和操作可恢复错误等支持。Swift 中的错误处理涉及到错误处理模式与Cocoa有关。表示与抛出错误遵循Error 协议。//表示与抛出错误enum VendingMachineError: Error { case invalidSelection //选择无效 case insufficientFunds(coinsNeeded: Int) //金额不足 case outOfstock //缺货}throw

2020-12-10 18:17:03 105

原创 swift基础day6---可选链

可选链式调用可选链式调用可以应用于任意类型,并且能检查调用是否成功。使用可选链式调用代替强制展开可选链式调用的返回结果与原本的返回结果具有相同的类型,但是被包装成了一个可选值。(类似于:Int?)//使用可选链式调用代替强制展开class Person { var residence: Residence? //如果使用!,residence没有值会出现运行错误}class Residence { var numberOfRooms = 1}let john = Pe

2020-12-10 16:24:28 85

原创 swift基础day6----构造方法与析构过程

存储属性的初始赋值类和结构体在创建实例时,必须为所有存储型属性设置合适的初始值。存储型属性的值不能处于一个未知的状态。可以在构造器中为存储型属性设置初始值,也可以在定义属性时分配默认值。构造器构造器在创建某个特定类型的新实例时被调用。构造器本身的作用,只是为了确保对象能被正确构造。struct Fahreheit { var temperature: Double init() { temperature = 32.0 }}var f = Fahrehei

2020-12-10 15:24:31 104

原创 swift基础day5---继承

//继承 Inheritanceclass Transpotation { var petrol: Int = 10 //油量 //行驶 func drive() { //具体由子类实现 if petrol == 0 { self.addPetrol() } } //加油 func addPetrol() { petrol += 10 }}//子类cla

2020-12-07 18:08:06 77

原创 swift基础day5---面向对象(封装、多态)

封装把隐藏属性、方法与方法实现细节的过程称为封装目的:1.使用数据更加方便,2.为了数据保护。隐藏属性和方法使用访问控制修饰符将类和其属性方法封装起来。修饰符:private:所修饰的属性或者方法只能在当前 Swift 源文件里可以访问,在别的文件里访问会出错.public:所修饰的属性或者方法对于引用了该文件或者模块的文件来讲,都能访问这些属性和方法。一般来说 public 的出现是为了 API 开发而设置。internal:默认的访问权限。所修饰的属性或者方法在源代码所在的整个模块都可

2020-12-07 18:03:03 98

原创 swift基础day5---方法

实例方法是被某个类型的实例调用的方法,类型方法是定义在类型本身上调用的方法。实例方法属于某个特定类、结构体或者枚举类型实例的方法。提供访问和修改实例属性的方法或提供与实例目的相关的功能,并以此来支撑实例的功能。实例方法能够隐式访问它所属类型的所有的其他实例方法和属性。只能被它所属的类的某个特定实例调用,并且不能脱离于现存的实例而被调用。class Counter { var count = 0 //实例方法 func increment() { count +

2020-12-07 15:57:24 67

原创 swift基础day5---属性

属性计算属性:直接计算(而不是存储)值,可以用于类、结构体和枚举。存储属性:将常量和变量存储为实例的一部分,只能用于类和结构体。类型属性:与类型本身关联。属性观察器可以添加到类本身定义的存储属性上,也可以添加到从父类继承的属性上。可以利用属性包装器来复用多个属性的 getter 和 setter 中的代码存储属性:struct FixedLengthRange { var firstValue: Int let length: Int}var rangeOfThreeI

2020-12-07 14:11:48 100

原创 swift基础day4---结构体和类

结构体和类对比共同点:定义属性用于存储值定义方法用于提供功能定义下标操作用于通过下标语法访问它们的值定义构造器用于设置初始值通过扩展以增加默认实现之外的功能遵循协议以提供某种标准功能不同点:优先使用结构体,因为它们更容易理解,仅在适当或必要时才使用类。继承允许一个类继承另一个类的特征类型转换允许在运行时检查和解释一个类实例的类型析构器允许一个类实例释放任何其所被分配的资源引用计数允许对一个类的多次引用类实例没有默认的成员逐一构造器命名:类和结构体命名使用大写,属性和方法使用小写

2020-12-06 23:49:43 116

原创 swift基础day4---枚举

枚举(enumerations)枚举成员可以指定任意类型的关联值存储到枚举成员中,枚举是一等类型。枚举的特性:计算属性,提供枚举值的附加信息,实例方法,提供和枚举值相关联的功能,也可以定义构造函数,来提供一个初始值,可以在原始实现的基础上扩展它们的功能,提供标准功能。以一个大写字母开头。给枚举类型起一个单数名字而不是复数名字,以便于:var directionToHead = CompassPoint.west枚举成员的遍历(1)令枚举遵循 CaseIterable 协议。Swift 会生成一个 a

2020-12-06 21:43:01 97

原创 swift基础day4---闭包

闭包闭包的结构函数包含:函数名,参数列表,返回值,函数体。闭包:{(参数列表) ->fan返回值 in 闭包体}//标准函数func myFunc(param: Int) -> Int{ return param * param}//闭包let myClosures = {(param: Int) -> Int in return param * param}myFunc(param: 3) //调用函数myClosures(3) //调用闭包

2020-12-06 16:26:26 95

原创 swift基础day4---函数

函数与闭包函数函数类型闭包函数有名称的功能代码块,闭包在大多数情况下没有名称的功能代码块。函数每个函数都有一个由函数的参数值类型和返回值类型组成的类型.内部命名在函数实现时使用,外部命名在函数调用时使用。在某参数类型的后面追加符号"…",会将此参数设置为数量可变,传递的值会被包装成集合类型赋值给相应参数,并且传递的参数类型必须相同,并且可以传递多组数了可变的参数,不同参数之间参数类型可以不同。参数传递:如果传递的是值类型的参数,那么参数值在传递斤函数内部时会将原值拷贝为一份常量,且在函数内不可以

2020-12-06 14:23:34 81

原创 swift基础day3

1.for循环与while循环(Control Flow: For-In Loops, While Loops)//for循环for index in 1...3{ print("\(index) times 6 is \(index * 6)")}let num1 = 0let num2 = 20for index in stride(from: num1, to: num2, by: 5){ print(index) //0,5,10,15不包含20} //stride(.

2020-12-04 16:45:24 82

原创 swift基础day2

1.Strings and Characters字符串字面量的特殊符号:转义字符 \0(空字符)、\(反斜线)、\t(水平制表符)、\n(换行符)、\r(回车符)、"(双引号)、’(单引号)。Unicode 标量,写成 \u{n}(u 为小写),其中 n 为任意一到八位十六进制数且可用的 Unicode 位码。字符串是值类型每一个 Swift 的 Character 类型代表一个可扩展的字形群。而一个可扩展的字形群构成了人类可读的单个字符,它由一个或多个(当组合时) Unicode 标量的序列组成

2020-12-03 23:39:06 82

原创 swift基础day1

1.Xcode playground如果想创建 iOS playground 则需要引入 UIKit :import UIKit2.常量和变量(Constants and Variables)let定义常量,定义完成后不可修改var定义变量,可修改。3.常量和变量的类型: Int, Double, Bool, TupleInt:Double:Float:Bool:True,False,nilTuple:tuple用于传递复合类型的数据,介于基础类型和类之间,复杂的数据通过类(或结构

2020-12-02 16:40:06 79

原创 使用描述符对实例属性做类型检查

需要属性_get_、set、_delete_方法,在_set_方法内使用isinstance函数做检查。class Attr(object): def __init__(self, name, type_): self.name = name self.type_ = type_ def __get__(self, instance, owner): # print('in__get__', instance, owner)

2020-11-11 11:49:01 82

原创 面试问题记录1

1,面向对象与面向过程的区别?答:面向对象易维护、易复用,易扩展。因为有继承、多态、封装等特性,可设计出低耦合系统,使用更加灵活,易维护,性能较低。面向过程的性能比面向对象高,类调用时需要实例化,开销比较大,比较耗费资源,比如:单片机,Linux开发等2.TCP与UDP的区别?答:(1)连接:TCP需要建立连接,UDP不需要建立连接(2)安全传输:UDP不可靠传输,不使用流量控制和拥塞控制(尽最大努力交付,即不保证可靠交付),TCP使用可靠传输,使用流量控制和拥塞控制(差错,不丢失,不重复,且按序到

2020-11-11 11:45:28 46

原创 Python——定义带参数的装饰器

可以看成生产装饰器的工厂,每次调用typeassert,返回一个特定的装饰器,然后用它去修饰其他函数。from inspect import signaturedef typeassert(*ty_args, **ty_kargs): def decoraror(func): # func ->a,b # d = {'a':int, 'b':str} sig = signature(func) btypes = sig.bin

2020-11-11 10:58:46 68

原创 Python——为被装饰的函数保存元数据

解决方法:使用funtools中的装饰器wraps装饰的内部包裹函数,可以制定将原函数的某些属性更新到包裹函数上面。from functools import wraps, update_wrapper,WRAPPER_ASSIGNMENTS, WRAPPER_UPDATESdef mydecorator(func): @wraps(func) def wrapper(*args, **kargs): '''wrapper function''' pr

2020-11-11 10:55:24 65

原创 Python——函数装饰器

定义装饰器函数,用它来生成一个在原函数基础上添加新功能的函数,代替原函数。例如:用函数装饰器计算斐波那契数列:初始写法:def fibonacci1(n, catch=None): if catch is None: catch = {} if n in catch: return catch[n] if n <= 1: return 1 catch[n] = fibonacci1(n-1, catch) + fib

2020-11-11 10:51:38 79 1

原创 python十大排序算法-- 选择排序

算法描述: 是一种简单直观的排序算法,每次一轮遍历都找到当前最小的元素并和未排序元素的第一个元素交换位置。算法步骤:在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,放到已排序序列的末尾,以此类推,直到所有元素均排序完毕。代码:def SelectionSort(arr): for i in range(len(arr)-1): minIndex = i for j in range(i+1, len(arr)):

2020-10-31 15:45:30 70

原创 Python读写json文件

load和dump与loads与dumps功能类似。但是接口不同load、dump接口是一个文件import jsonl = [1, 2, 'abc', {'name':'Bob', 'age':14}]# json.dumps 将Python对象转换为jsonjson.dumps(l) #d = {'b': None,'a': 5, 'c': 'abc' }json.dumps(d)json.dumps(l, separators=[',', ':']) #去掉,:前后的空格j

2020-10-29 21:00:01 43

原创 让对象支持上下文管理

定义实例的__enter__,__exit__方法,它们分别在with开始和结束时被调用。from telnetlib import Telnetfrom sys import stdin, stdoutfrom collections import dequeclass TelnetClient(object): def __init__(self, addr, port=23): self.addr = addr self.port = port

2020-10-28 11:50:04 66

原创 创建可管理的对象属性

使用property函数为类创建可管理属性,fget、fset、fdel对应相应属性访问。from math import piclass Circle(object): def __init__(self, radius): self.radius = radius def getRadius(self): return self.radius def setRadius(self, value):

2020-10-28 11:34:06 71 1

原创 让类支持比较操作

方法1:比较运算符重载,需要实现以下方法:小于,小于等于,大于,大于等于,等于,不等于。from functools import total_orderingfrom abc import ABCMeta,abstractmethod@total_ordering #装饰类class Shape(object): #父类 @abstractmethod def area(self): pass # 小于 def __lt__(self, ot

2020-10-27 18:34:53 71

原创 为创建大量实例节省内存

定义类的__slots__属性,用来声明实例属性名字的列表。#Player为正常类class Player(object): def __init__(self, uid, name, status=0,level=1): self.uid = uid self.name = name self.status = status self.level = level#使用__slots__属性后class Player2(obje

2020-10-27 18:28:20 48

原创 环状数据结构垃圾回收

使用weakref可以创建一种能访问对象但不增加计数的对象,若对象存在则返回该对象,若不存在则返回None。import weakrefclass Data(object): def __init__(self, value, owner): self.owner = weakref.ref(owner) self.value = value def __str__(self): return "%s 's data, value is %

2020-10-27 18:24:45 77

原创 字符串切片分割

方法1:多次使用split方法方法2:正则表达式:re.split()import redef mySplit(s, ds): res = [s] for d in ds: t = [] map(lambda x: t.extend(x.split(d)), res) res = t return ress = 'ab;cd|efg|hi,jkl|mn\topq;rst,uvw\txyz'res = re.split(r'[

2020-10-27 18:20:08 246

原创 对迭代器使用切片操作

from itertools import islicel = range(20)t = iter(l)for x in islice(t, 5,10): print(x)

2020-10-27 18:17:41 51

原创 反向迭代与实现

class FloatRange: def __init__(self, start, end, step=0.1): self.start = start self.end = end self.step = step # 正向 def __iter__(self): t = self.start while t<=self.end: yield t

2020-10-27 18:16:04 50

原创 for语句中迭代多个可迭代对象

并行:学生考试成绩语文、英语、数学分别存储在3个列表中,同时迭代三个列表,计算每个学生的总分(使用内置函数zip)串行:年级有4个班,每班英语成绩分别存储在4个列表中,一次迭代每个列表,统计学生成绩高于90分的人数(itertools.chann)from random import randintfrom itertools import chain#一般方法chinese = [randint(60, 100)for i in range(40)]math = [randint(60, .

2020-10-27 18:13:45 87

原创 生成器函数实现可迭代对象

class IntTuple(tuple): def __new__(cls,iterable): g = (x for x in iterable if isinstance(x, int) and x > 0) #使用构造器方法 return super(IntTuple,cls).__new__(cls, g) def __init__(self, iterable): #self为tuple的一个实例,tuple为不可变对象 sel

2020-10-27 18:05:05 54

原创 可迭代对象与迭代器

1.可迭代对象包括迭代器2.可迭代对象必须实现_iter_方法,迭代器必须实现_iter_方法和next方法3.如果一个对象拥有_iter_方法,该对象为可迭代对象,如果一个对象拥有next方法,该对象为迭代器可迭代对象包括:迭代器、序列(列表、元组、字符串等)、字典如下获得城市天气:import requests#迭代器class weatherIterlator(object): def __init__(self, cities): self.cities =

2020-10-27 17:49:33 56

原创 历史记录

历史记录如何实现用户的历史记录?解决方案:使用容量为n的队列存储历史记录。步骤:使用collection中的deque,它是一个双向循环列表退出前,使用pickle将队列中的对象存入文件,再次运行时将其导入。#实现用户的历史记录功能,记录5条from random import randintfrom collections import dequeN = randint(0, 100)history = deque([], 5) #存储五个已输入的历史记录def guess

2020-10-27 17:26:50 96

原创 python十大排序算法-- 直接插入排序

**算法描述:**每次取一个列表元素与列表中已经排序好的列表段进行比较,然后插入从而得到新的排序好的列表段,最终获得排序好的列表。**算法步骤:**去一个元素插入已经排好的序列中,形成新的序列。代码:def insertSort(array): for i in range(1, len(array)): j = i - 1 temp = array[i] while j >= 0 and array[j] > temp:

2020-09-10 17:46:10 101 1

原创 python十大排序算法-- 快速排序

**算法描述:**快速排序又是一种“分而治之”思想在排序算法上的典型应用。本质上来看,快速排序应该算是在冒泡排序基础上的递归分治法。算法步骤:先从数列中取出一个数作为基准数。分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。再对左右区间重复第二步,直到各区间只有一个数。代码:def quickSort(array, low, high): if low >= high: return i = low j = high

2020-09-10 16:11:53 100

计算机网络第八章课后答案

本资源为计算机网路第八章课后习题答案,原书为英文版

2018-10-25

edf格式介绍

edf格式全称欧洲数据格式,本资源整体介绍了edf格式是什么,edf格式是数据的字段包含了哪些等等

2018-10-25

空空如也

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

TA关注的人

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