自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 前端学习笔记(二)CSS复合选择器

2022-05-22 22:20:33 215

原创 前端开发学习笔记---CSS emmet语法

vscode emmet语法 输入 输出 div <div></div> div*3 <div></div><div></div><div></div> ul>li <ul><li></li></ul> div+p <div></div><p></p>.

2022-05-22 13:14:52 246

原创 eclipse 代码提示快捷键

Mac option + / windows Alt + /

2021-07-05 16:56:27 1452

原创 java学习笔记--父类和子类的加载顺序

首先加载父类的静态成员(按顺序加载),然后加载子类的静态成员,再加载父类对象的构造代码块再加载构造方法,再加载子类对象的构造代码块以及构造方法。

2021-06-18 15:23:57 375

原创 java学习笔记--访问修饰符

protected:允许在当前类,同包子类/非子类(任意类),跨包子类中访问。 换句话说就是同包的所有类可以调用,跨包只有子类才能调用。

2021-06-18 12:39:34 245

原创 ios学习笔记--弹出对话框

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"操作提示" message:@"恭喜过关" preferredStyle:(UIAlertControllerStyleAlert)]; UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel han...

2021-06-17 16:21:57 224

原创 ios学习笔记--状态栏

//更改状态栏为浅色 -(UIStatusBarStyle)preferredStatusBarStyle{ return UIStatusBarStyleLightContent; } //隐藏状态栏 -(BOOL)prefersStatusBarHidden{ return YES; }

2021-06-11 00:34:44 100

原创 ios学习笔记--xib

读取xib的方法: [[NSBundle mainBundle] loadNibNamed:@"..." owner:nil options:nil][0]; //由于xib文件中可能存在多个控件,所以loadNibNamed读取的是一个包含一个或多个控件的NSArray 读取的文件名中不要加入.nib 当读取到一个含有多个子控件的控件时,为了分别对其中子控件进行操作,需要将该控件连接至一个自定义的类,该类需要继承该控件本该对应的类。 然后利用控件拖线,即可利用类对象分别访问子控件了。 ...

2021-06-10 15:19:57 275

原创 ios学习笔记---id和instancetype的区别

id返回的是未知类型的一切对象 instancetype返回的是其方法所在类的对象类型

2021-06-10 11:55:20 176

原创 ios学习笔记--字典转模型

字典中的数据应该转换成对象的形式存在,这样可以在使用到字典中数据的时候,可以直接得到代码提示,而不至于索引时出错甚至没有编译错误。 假设某字典中有两个键值对:[@"name"]

2021-06-10 11:43:54 345

原创 iosUI界面学习笔记---图片缓存和非缓存方式

缓存方式: NSString *str = [[NSBundle mainBundle] pathForResource:@"..." ofType:nil]; UIImage *img = [UIImage imageWithContentsOfFile:str]; fe

2021-06-09 18:27:50 227

原创 多线程编程(三)

条件变量 mutex my_mutex; condition_variable my_cond; unique_lock<mutex> ul(my_mutex); ..... mycond.wait(ul,lambda表达式或者可调用对象); 条件变量需要绑定到unique_lock上,wait的作用是,如果第二个参数的返回值是true,则继续往下执行,如果返回值是false,则会自动将unique_lock解锁,并且阻塞,直到其他线程用这个条件变量调用notify_one,才会唤醒这个线

2020-08-18 16:31:14 131

原创 c++学习笔记 智能指针注意事项

1.当用了裸指针给智能指针赋值之后,就不应该再使用裸指针了。 2.不能用一个裸指针同时给多个智能指针初始化,这会使得每一个强引用计数都是1. 3.通过get获得的裸指针不能再绑到其他的智能指针上,道理同2 4.若一个智能指针已经指在类对象上了,不能通过类对象的this指针返回一个智能指针,道理同2.需要将类继承自enable_shared_from_this<>.并使用shared_from_this来返回绑定到此对象的智能指针 class A:public enable_shared

2020-08-07 17:31:03 861

原创 C++四种类型转换

1.static_cast<需要准换的类型> 编译时进行转换类型检查,可用于整型实型转换,继承关系中的子类对象转换为父类对象,void*与其他类型指针的转换。不可用于指针类型之间的转换。 2.dynamic_cast<需要准换的类型> 运行时类型识别和检查,主要用于父类型和子类型之间转换,父类型指针指向子类型对象,然后用dynamic_cast将父类型指针转换为子类型指针 3.const_cast<需要准换的类型> 编译时进行类型转换,去除指针或引用..

2020-07-21 17:03:13 158

原创 vector和string一些不记得的用法

string s; s.c_str() //返回指向该字符串内存地址的指针 vector<int> arr(m,n) //初始化m个n vector<int> arr(n)//初始化n个0 vector<string> s{m,"hello"}//m个hello vector<int> arr{2,3} //包含2和3 vector<string> s{10}//10个空字符串 vector<int> arr{10}//一个1.

2020-07-19 19:18:55 251

原创 多线程编程2

mutex my_mutex; my_mutex.lock(); my_mutex.unlock(); 互斥量的加锁与解锁 为了防止有的时候加锁后忘记解锁,可以使用lock_guard void func() { mutex my_mutex; lock_guard<mutex> lg(my_mutex); ..... } 当lock_guard对象离开作用域后,运行析构函数,自动解锁。 如何实现死锁:两个进程,以不同顺序加锁两个互斥量。 如果...

2020-07-19 16:35:49 161

原创 多线程编程(一)

引用头文件thread 创建线程:thread mythread(多线程函数) 阻塞主线程直到子线程运行完毕:mythread.join() 分离主线程和子线程,使得主线程和子线程可以同步执行下去(一旦分离后,就无法再使线程join),主线程结束后子线程也结束:mythread.detach() 检查线程是否能join或者detach:mythread.joinable() ...

2020-07-15 23:59:36 629

原创 c++分割字符串的方法

string s = "1_3_2_4_"; stringstream ss(s); string temp; while (getline(ss, temp, '_')) { cout << temp << endl; }

2020-07-15 11:30:05 231

原创 操作系统学习笔记二

内存中包含着系统区以及用户区,系统区固定给系统用,用户区用来存储用户进程 内部碎片:内存分配给进程的内存区域中,有没有用上的内存空间 外部碎片:内存分配给进程的内存区域全部用上,但是内存空间中存在着很小的内存区域无法使用。 内存分配技术分为以下几种: 1.单一连续分配:在多道程序系统出现之前,由于系统一次只处理一个程序,所以内存会将一整个用户区都分配给进程,所以容易出现内部碎片。 2.固定连续分配:这种方式分为两种:等分内存划分,不等内存划分,区别在于提前将内存区域划分成多个区域,前者区域大小一样

2020-07-15 10:30:13 260

原创 操作系统学习笔记一

文件的执行过程: 首先多个.cpp源文件通过预处理阶段,将包含的头文件进行文本展开。 然后通过编译阶段,将所有高级语言代码翻译成汇编语言。 再通过汇编阶段,将所有汇编语言转化成机器语言(即二进制文件),也可称作多个目标模块。 再通过链接阶段,将多个具有独立逻辑地址的目标模块及所需要的库函数整合成具有完整的逻辑地址的完整目标模块。 最后通过装入阶段,将目标模块装入内存,进行逻辑地址到物理地址的变换,最后运行程序。 链接可分为以下几种: 1.静态链接:将所有目标模块在装入内存前,整合成完整的.

2020-07-13 23:59:14 638

原创 mysql学习笔记(四)

delete和truncate的区别 1.delete删除后再插入,自增长列从断点开始,truncate删除后再插入,自增长列从1开始 2.truncate效率比delete高 3.delete有返回值,truncate无返回值 4.delete有筛选条件,truncate不能加筛选条件 5.delete可以回滚,truncate不能回滚 六大约束: NOT NULL 非空,保证该字段不能为空 DEFAULT:默认,用于保证该字段有默认值 PRIMARY KEY:主键,用于保证该字段.

2020-07-11 12:08:52 147

原创 mysql学习笔记(三)

连接查询 内连接: 等值连接 非等值连接 自连接 外连接: 左外连接 右外连接 全外连接 交叉连接:

2020-07-10 23:32:47 98

原创 mysql学习笔记(二)

分组函数: sum() avg() min() max() count() 所有分组函数均忽略NULL值 可以用如下方式去重: sum(distinct 列名) 分组查询: 分组前筛选: select 分组函数,x from 表 [where 条件] group by x [order by 子句] 分组后筛选: select 分组函数,x from 表 group by x having 条件 [order by 子句] ...

2020-06-26 00:48:42 113

原创 mysql学习笔记(一)

以管理员方式启动dos 启动Mysql服务:net start mysql 停止mysql服务:net stop mysql 登入客户端的命令: mysql 【-h localhost -P 3306】 -u root -p 若是本机,可以省略括号中的内容 show databases:查看所有的库 use 库名:进入库 show tables:显示有什么表 show tables from 库名:不用进入某库就可以显示有什么表 desc 表名:查看表的结构 语法规范...

2020-06-24 19:36:02 203

原创 tensowflow学习笔记 tensorboard的使用

将数据用tensorboard保存下来: import tensorflow as tf import datetime import os ##普通的读数据,建网络的过程 gpus = tf.config.experimental.list_physical_devices('GPU') for gpu in gpus: tf.config.experimental.set_memory_growth(gpu,True) (train_image,train_label),(test_im

2020-05-16 14:26:33 249

原创 tensorflow学习笔记 自定义网络训练

import tensorflow as tf gpus = tf.config.experimental.list_physical_devices(device_type='GPU')##设置GPU调用策略 for gpu in gpus: tf.config.experimental.set_memory_growth(gpu,True) ##将数据转换成dataset形式 (train_x,train_label),_ = tf.keras.datasets.mnist.load_da.

2020-05-15 19:20:55 468

原创 tensorflow学习笔记 卫星图像识别

数据集为飞机与河流的图像,分别存在两个文件夹中 文件夹名称相当于图像的标签 首先需要从文件夹中读入图像: import tensorflow as tf import numpy as np import matplotlib.pyplot as plt import pathlib import random data_root = pathlib.Path('F:\\深度学习课程资料\\tensorflow\\数据集\\2_class') ##建立根目录的pathlib对...

2020-05-14 23:45:07 1050

原创 tensorflow学习笔记 函数式API

input = tf.keras.Input(shape=(28,28)) x = tf.keras.layers.Flatten()(input) x = tf.keras.layers.Dense(32,activation='relu')(x) x = tf.keras.layers.Dropout(0.5)(x) x = tf.keras.layers.Dense(64,activation='relu')(x) x = tf.keras.layers.Dropout(0.5)(x) x = tf.

2020-05-14 15:58:54 237

原创 tensorflow学习笔记

建立全连接网络: import tensorflow as tf import pandas as pd import matplotlib.pyplot as plt data = pd.read_csv('F:\\深度学习课程资料\\tensorflow\\数据集\\小型CSV数据\\Advertising.csv') x = data.iloc[:,1:-1] y = data.iloc[:,-1] model = tf.keras.Sequential([tf.keras.layers.Den

2020-05-14 15:58:32 108

原创 tensorflow学习笔记

fashion_mnist训练集 切分训练集和测试集 (train_image,train_label),(test_image,test_label) = tf.keras.datasets.fashion_mnist.load_data() 归一化数据集 train_image = train_image/255 test_image=test_image/255 建立网络模型 model = tf.keras.Sequential() model.add(tf.keras.layer

2020-05-13 19:04:39 244

原创 shared_ptr

引用计数的增加: 新的shared_ptr指向同一块内存 作为函数参数 值传递的时候 作为函数的返回值,被接收的时候 引用计数的减少: 给shared_ptr赋予新值,使其指向新的内存 局部shared_ptr离开其作用域 usecount():返回引用计数的值 unique():若此指针独占这个内存区域,则返回true,否则false,若指针指向空也返回false reset():(无参数)若指针是唯一指向内存区域的指针,则释放此内存,并将指针置空,若不是唯一的,则将引用计数减一,.

2020-05-12 17:36:39 151

原创 new和delete

new和delete是关键字运算符不是函数 new做了两件事,分配内存(调用operator new()函数来分配内存),调用构造函数 delete做了两件事,调用析构函数,释放内存(调用operator delete()函数来释放内存) 为什么delete知道new分配了多少内存需要释放呢,因为new内部有记录机制,会将分配的内存大小额外在一个区域记录下来,delete通过读取这个区域就知道需要释放多少内存 当定义了一个占1个字节的类A时,使用A *a = new A[4]时,若最后不del.

2020-05-09 14:08:56 179

原创 可变参数模板

template<typename T,typename ...U> void func(const T &a,const U&...b) { cout << sizeof(a) << endl;; cout << sizeof...(b) << endl; } int main() { func(1, 2, 3,...

2020-05-07 17:06:56 223

原创 模板全特化,偏特化

模板函数和模板类有的时候可能需要对传入的不同类型进行不同的处理,比如说有的模板传入int或double类型都可以处理,但是传入char型则会出错,这时就需要模板特化的方式。 类模板全特化:将模板类型里的所有类型参数全部具体指明之后处理 template<typename T,typrname C> struct A { A(){cout<<"泛化版本构造函数"...

2020-05-07 13:30:07 452

原创 using 定义模板别名

template<typename T> using map_s_t = map<string,T>; template<typename T> using Func = int(*)(T,T); int prt(int a,int b) { return a<b?a:b; } int main() { map_s_t<int...

2020-05-06 12:21:23 254

原创 c++学习笔记 函数模板,类模板,类模板中的模板成员函数,显式实例化

定义一个函数模板的格式如下: template<typename T> T add(T a,T b) { return a+b; } 类模板函数只有在使用的时候才会生成实例,调用只有类型参数的函数模板时,编译器可以通过参数来推断参数类型,当其中有类型参数和非类型参数时,需要在调用时填入类型名。 定义一个类模板的时候应该为如下的格式: template<type...

2020-05-05 16:41:50 452

原创 如何对大数据进行排序

现有8G的数据,其中都是无符号的int型,现有1G内存,如何对这些数据排序。 答: 首先建立一个struct将数据包起来,结构体包含数据的值及它出现的次数。需要建立一个大根堆,每个大根堆的一个数据项是这个结构体,且此结构体<数据占4字节,词频占8字节>,所以大概可以建8千万个数的大根堆,但是还需要建立一个表<数据占4字节,词频占8字节>,其中存储已经在大根堆中的数,方便...

2020-04-30 12:54:53 1413

原创 大数据处理问题

1.一个无符号的四字节数字范围为0~4294967295,现有40亿个数字在一个文件中,现有1G内存,如何找到这个范围内哪些数字没有出现过。 答:建立一个这个范围大小位数的位图,仅占500M左右,位图的0号位置代表数字0是否出现,x号位置代表数字x,现遍历这个文件,加个出现的数字的下标处置一,所有没置一的位置就是没出现过的数 2.一个无符号的四字节数字范围为0~4294967295,现在...

2020-04-30 00:20:52 204

原创 二叉树的Morris遍历

此算法可以时间复杂度O(N),空间复杂度O(1)的遍历二叉树 算法流程: 1.首先cur指向根节点,判断是否有左子树,如果没有左子树则cur指向右子树 2.若有左子树,则找到其左子树的最右边的节点,判断此节点的右树是否指向cur节点(判断是第一次到还是第二次到),若指向空,将此节点的右树指向cur,并将cur移向左子树。若指向cur,则恢复成指向空。并将cur移向右子树 3.重复执行1到2...

2020-04-29 15:06:23 133

原创 单调栈

问题:给定一个数组,求得每个元素左右两边离它最近的小于它的数,要求时间复杂度O(N) 若是求两边比它小的,则用单调递增栈 若是求两边比它大的,则用单调递减栈 pair<int, int> *GetResult(vector<int> arr) { pair<int, int> *res = new pair<int, int>[arr.si...

2020-04-28 22:29:04 95

空空如也

空空如也

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

TA关注的人

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