cats

iOS分类底层实现原理小记

廉价感情. 提交于 2020-03-23 02:30:38
摘要:iOS分类底层是怎么实现的?本文将分如下四个模块进行探究分类的结构体编译时的分类分类的加载总结本文使用的runtime源码版本是objc4-680文中类与分类代码如下//类@interfacePerson:NSObject@property(nonatomic,copy)NSString*presonName;@end@implementationPerson-(void)doSomeThing{NSLog(@"Person");}@end//分类@int iOS 分类底层是怎么实现的? 本文将分如下四个模块进行探究 分类的结构体 编译时的分类 分类的加载 总结 本文使用的runtime源码版本是 objc4 - 680 文中类与分类代码如下 //类 @interface Person : NSObject @property (nonatomic ,copy) NSString *presonName; @end @implementation Person - (void)doSomeThing{ NSLog(@"Person"); } @end // 分类 @interface Person(categoryPerson) @property (nonatomic ,copy) NSString *categoryPersonName; @end

数据挖掘——预测未来销售

南笙酒味 提交于 2020-02-07 09:14:15
数据挖掘——预测未来销售 处理sale_train_v2.csv和test.csv 处理shop.csv 处理item_categories.csv 处理items.csv 特征添加 该项目来自kaggle比赛, 处理sale_train_v2.csv和test.csv 1、读取训练数据: test = pd . read_csv ( "./test.csv" ) . set_index ( "ID" ) train = pd . read_csv ( "./sales_train_v2.csv" ) 2、删除异常值 先画图查看"item_price"属性的分布: index = [ v for v in range ( 2935849 ) ] plt . scatter ( index , train [ "item_price" ] ) plt . show ( ) 属性"item_price"的分布如上,这里将大于100000的点视为异常值,将其剔除掉: train = train [ train . item_price < 100000 ] 再看"item_cnt_day"属性: 将大于1000视为异常值: train = train [ train . item_cnt_day < 1000 ] 3、将售价低于0的使用中值填充 median = train [ (

Matplotlib _ 05 细节设置

走远了吗. 提交于 2020-01-31 04:39:36
import pandas as pd import matplotlib.pyplot as plt women_degrees = pd.read_csv("C:/Users/Amber/Documents/唐宇迪-机器学习课程资料/Python库代码(4个)/3-可视化库matpltlib/percent-bachelors-degrees-women-usa.csv") plt.plot(women_degrees['Year'],women_degrees['Biology']) plt.show() import pandas as pd import matplotlib.pyplot as plt women_degrees = pd.read_csv("C:/Users/Amber/Documents/唐宇迪-机器学习课程资料/Python库代码(4个)/3-可视化库matpltlib/percent-bachelors-degrees-women-usa.csv") plt.plot(women_degrees['Year'],women_degrees['Biology'],c='blue',label='Women') plt.plot(women_degrees['Year'], 100-women_degrees['Biology'], label=

8.2利用python读写文件

梦想的初衷 提交于 2020-01-21 01:07:38
在python中,读写文件有3个步骤: 1.调用open( )函数,返回一个File对象,打开文件。 2.调用File对象的read( )或write( )方法,进行读写操作。 3.调用File对象的close( )方法,关闭该文件。 读取文件 >> > >> > test1File = open ( 'C:\\Users\\Administrator\\Desktop\\testdir\\test1.txt' ) #打开文件 >> > test1Content = test1File . read ( ) #读取文件 >> > print ( test1Content ) #打印出文件内容 Hello weorld! Hello , Xiaotie! 调用readlines( )逐行读取文件。每个字符串就是文本中的每一行,除了最后一行,每行以一个换行字符\n结束。 >> > test1File = open ( 'C:\\Users\\Administrator\\Desktop\\testdir\\test1.txt' ) >> > test1Content = test1File . readlines ( ) >> > print ( test1Content ) [ 'Hello weorld!\n' , 'Hello,Xiaotie!' ] 写入文件 write(

keras猫狗大战

有些话、适合烂在心里 提交于 2019-12-20 09:30:29
先划分数据集程序训练集中猫狗各12500张现在提取1000张做为训练集,500张作为测试集,500张作为验证集: # -*- coding: utf-8 -*-import os, shutiloriginal_dataset_dir = '/home/duchao/projects(my)/keras/kagge/train' # 原始文解压目录base_dir = '/home/duchao/projects(my)/keras/kagge/small_data'# 创建新的文件夹os.mkdir(base_dir)# 分别对应划分好的训练(1000),验证(500)和测试目录(500)train_dir = os.path.join(base_dir, 'train')os.mkdir(train_dir)validation_dir = os.path.join(base_dir, 'validation')os.mkdir(validation_dir)test_dir = os.path.join(base_dir, 'test')os.mkdir(test_dir)# 猫的训练目录train_cats_dir = os.path.join(train_dir, 'cats')os.mkdir(train_cats_dir)# 狗的训练目录train_dogs_dir

Aizu - 2224 Save your cats

匿名 (未验证) 提交于 2019-12-03 00:41:02
Problem C: Nicholas Y. Alford was a cat lover. He had a garden in a village and kept many cats in his garden. The cats were so cute that people in the village also loved them. One day, an evil witch visited the village. She envied the cats for being loved by everyone. She drove magical piles in his garden and enclosed the cats with magical fences running between the piles. She said “Your cats are shut away in the fences until they become ugly old cats.” like a curse and went away. Nicholas tried to break the fences with a hummer, but the fences are impregnable against his effort. He went to a

js使用函数式编程改造循环

蓝咒 提交于 2019-12-02 16:19:04
For 循环的设计思想深受可变状态与副作用的影响,不过函数式编程中认为可变状态与副作用是导致潜在错误与不可预测性的罪魁祸首,是应该尽力避免的模式。众所周知,使用全局状态会污染局部代码,而同样的局部状态同样会导致与全局状态一样的问题,只不过因为局部状态的影响被限制在较小的影响范围内,因此不像全局状态那样的突兀。允许可变的状态也就意味着变量可能因为未知的原因被改变,开发者可能要花费数小时的时间去定位到底是哪一段代码修改了这个变量值。在过去的开发岁月里,我就是因为这样变秃了,却似乎没有变强。另一方面,任何修改除了作用域内变量值的函数都被称为有副作用的函数。典型的譬如修改全局变量、读入键盘输入、调用远程 API 、写入磁盘等等。副作用的功效强大,我们应该尽可能地将其封装与控制在一定范围内。大道理就回顾到这里,下面我们直接看下代码: const cats = [ { name: 'Mojo', months: 84 }, { name: 'Mao-Mao', months: 34 }, { name: 'Waffles', months: 4 }, { name: 'Pickles', months: 6 } ]; const kittens = []; //典型的 for 循环用法 for (const i = 0; i < cats.length; i++) { if (cats[i]

使用SQLQuery 在Hibernate中使用sql语句

情到浓时终转凉″ 提交于 2019-12-01 19:45:40
session.createSQLQuery.转载 对原生SQL查询执行的控制是通过 SQLQuery 接口进行的,通过执行 Session.createSQLQuery() 获取这个接口。下面来描述如何使用这个API进行查询。 1.标量查询(Scalar queries) 最基本的SQL查询就是获得一个标量(数值)的列表。 sess.createSQLQuery("SELECT * FROM CATS").list(); sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").list(); 它们都将返回一个 Object数组(Object[])组成的List ,数组每个元素都是CATS表的一个字段值。Hibernate会使用 ResultSetMetadata 来判定返回的标量值的实际顺序和类型。 如果要 避免过多的使用 ResultSetMetadata , 或者只是为了更加明确的指名返回值 ,可以使用 addScalar() 。 sess.createSQLQuery("SELECT * FROM CATS").addScalar("ID", Hibernate.LONG).addScalar("NAME", Hibernate.STRING).addScalar("BIRTHDATE", Hibernate

liunx帮助whatis使用方法

冷暖自知 提交于 2019-11-30 09:39:15
       liunx帮助             获取帮助的能力决定了技术的能力! 1、whatis ♢只显示命令的简短描述,相对功能比较单一。 [09:42:22 root@centos ~]#whatis rm rm (1) - remove files or directories rm (1p) - remove directory entries   1,1p:表示分类章节 ♢使用数据库: whatis 查看某个命令的列表依赖于数据库,这个数据库刚安装os时是没有的,是经过一段时间之后系统自动创建的但是自动创建时间不定,可以通过命令主动生成 whatis 依赖的数据库。 [root@centos6 ~]# whatis rm rm: nothing appropriate ♢makewhatis | mandb制作数据库: 生成的方法centos6使用 makewhatis 生成,centos7使用 mandb 生成。 [root@centos6 ~]# whatis cal cal: nothing appropriate [root@centos6 ~]# makewhatis [root@centos6 ~]# whatis cal cal (1) - displays a calendar cal (1p) - print a calendar [root

OC语言特性

别说谁变了你拦得住时间么 提交于 2019-11-29 21:48:48
Category 你用分类都做了哪些事情? 声明私有方法 分解体积庞大的类文件 把Framework的私有方法公开 特点 在运行时决议,也就是在编译时并没有把Category中声明的内容添加到宿主类中,而是在运行的时候通过runtime将添加的方法添加到宿主类上面 可以为系统添加分类 分类中可以添加哪些内容? 实例方法 类方法 协议 属性 Category结构 struct category_t { const char *name; //分类名称 classref_t cls; //分类所属的宿主类 struct method_list_t *instanceMethods; //实例方法列表 struct method_list_t *classMethods; //类方法列表 struct protocol_list_t *protocols; //协议 struct property_list_t *instanceProperties; //实例属性列表 // Fields below this point are not always present on disk. struct property_list_t *_classProperties; method_list_t *methodsForMeta(bool isMeta) { if (isMeta)