- 博客(30)
- 收藏
- 关注
原创 vue源码watch实现
个人理解:数据变化之后需要做出一些callback,那就有点类似于数据监听,数据监听中使用了watcher去更新视图,那同样在watch中也使用watcher,当数据发生改变,去watcher当中执行一些callback。所以需要对watch里面的对象进行处理,核心就是获取data属性,表达式,和一些值。首先依然是从options里面获取watch,但watch里面的形态可能有很多种。之后使用watcher类,因为数据改变时,dep会notify watcher。
2023-09-07 14:38:18
155
原创 vue5源码(watch)
数据的状态分为get和set,get的时候触发收集依赖即dep.depend,set的时候触发更新dep.notify,然后watcher去通知组件进行更新。每一个observer的实例都有一个dep实例,我的理解是每一个对象都有一个dep.一个dep可以对应多个watcher,相当于当响应式对象的数据发生变化时,它会通过dep同志所有watcher,告诉他们需要重新计算。get的时候收集依赖,dep.target理解为自己指定的全局的位置,全局唯一。,所以dep是在observer中调用的。
2023-08-29 15:40:10
146
原创 vue源码4(生命周期)
这里的Mixin可以理解为将Vue原始的options和传入的子对象进行合并。其中callHook为,可以执行生命周期里的函数。首先在new Vue之前就要初始化生命周期。
2023-08-21 13:41:11
117
原创 vue3源码(将render函数变成vnode再转成真实dom)
现在已经获得了render函数后,需要把render函数变成vnode,之后将vnode生成真实dom。这块依旧是对对象进行解析,并递归,利用对dom的操作,生成一些dom节点。增加_update的功能,传入旧的真实dom,和生成的虚拟dom。再通过_update将虚拟dom变成真实dom放到页面上去。之后将生成的dom放在原始dom后面,再将原始dom删除。接下来就是将虚拟dom变成真实的dom渲染至页面。首先对vnode进行操作,生成真实的dom。首先给vm实例添加一个属性,为旧的dom。
2023-08-18 15:22:57
409
原创 vue源码1(vm初始化和data的数据监测)
首先,一开始学习写页面的时候,都是使用的html,css,js,如果需要绑定js里的数据,那么则需要通过js操作dom。
2023-08-14 15:29:45
144
原创 pytorch实现线性回归
import randomfrom torch import nnimport torchfrom torch.utils import datadef synthetic_data(w,b,num): feature=torch.normal(0,0.1,(num,len(w))) label=torch.matmul(feature,w)+b label+=torch.normal(0,0.1,label.shape) return feature,labeld
2022-03-13 14:26:45
2189
1
原创 李沐线性回归1import random import torch from d2l import torch as d2l #构造数据集 def synthetic_data(w,b,num_exa
import randomimport torchfrom d2l import torch as d2l#构造数据集def synthetic_data(w,b,num_examples): x=torch.normal(0,1,(num_examples,len(w))) y=torch.matmul(x,w)+b y+=torch.normal(0,0.01,y.shape) return x,y.reshape(-1,1)#生成批量def data_it
2022-03-13 13:42:30
2305
转载 李沐深度学习1
import osimport pandas as pdimport torch#添加数据os.makedirs(os.path.join('.','data'),exist_ok=True)data_file=os.path.join('.','data','house.csv')with open(data_file,'w') as f: f.write('NUMROOMS,ALLEY,PRICE\n') f.write('NA,Pave,127500\n') f.w
2022-02-27 13:55:39
116
原创 Dataloader的使用
import torchvisionimport sslfrom torch.utils.data import DataLoaderfrom torch.utils.tensorboard import SummaryWriterssl._create_default_https_context = ssl._create_unverified_contextdataset_transform=torchvision.transforms.ToTensor()train_set=torchvi
2022-02-07 14:37:34
111
原创 torchvision中数据集的使用
import torchvisionimport sslfrom torch.utils.tensorboard import SummaryWriterssl._create_default_https_context = ssl._create_unverified_contextdataset_transform=torchvision.transforms.ToTensor()train_set=torchvision.datasets.CIFAR10(root='E:\\postgrad
2022-02-07 14:06:01
493
原创 pytorch中transforms的常见使用
from PIL import Imagefrom torchvision import transformsfrom torch.utils.tensorboard import SummaryWriterimport osimg_path='3.jpg'img=Image.open(img_path)root_dir='data/animaldata/train/ants_image'img_path_list=os.listdir(root_dir)#1.totensor的使用ten
2022-02-07 13:20:03
969
原创 Pytorch Tensorboard的使用
writer.add_scalar(label,y,x)from torch.utils.tensorboard import SummaryWriterwriter=SummaryWriter('logs')#pathfor i in range(20): writer.add_scalar('y=2x',2i,i)writer.close()运行:在终端内输入tensorboard--logdir=logs --port=6007writer.add_image(label
2022-02-06 20:10:11
2243
原创 pytorch使用Dataset读取数据
数据集from torch.utils.data import Datasetfrom PIL import Imageimport osclass Mydata(Dataset): def __init__(self,root_dir,label_dir): self.root_dir=root_dir self.label_dir=label_dir self.path=os.path.join(self.root_dir,self.la
2022-02-06 17:05:00
1285
原创 音频预加重Python
def wav_preemphasis(wave_data,a): lens=len(wave_data[0]) wave_data1=np.zeros((2,lens)) wave_data1[0,0]=wave_data[0,0] wave_data1[1, 0] = wave_data[1, 0] for i in range(1,lens,1): wave_data1[0][i]=wave_data[0][i]-a*wave_data[0][i
2021-10-14 10:19:14
909
原创 音频傅里叶变换python
def plot_frequencydomain(wav_data): fft_y1=fft(wav_data[0]) abs_y1=np.abs(fft_y1) ang_y1=np.angle(fft_y1) fft_y2=fft(wav_data[1]) N=500 frequency=np.arange(N) pylab.subplot(211) pylab.plot(frequency,abs_y1[0:500]) pylab.
2021-10-14 08:38:45
1375
原创 读取音频并画出时域图python
import pyaudioimport wavefrom scipy.fftpack import fft,ifftimport numpy as np#np.set_printoptions(threshold=np.inf)import pylabdef get_wavedata(wavfile):#获取处理好的wave数据 #打开wav文件 wav=wave.open(wavfile,"rb") #创建pyaudio对象 pwav=pyaudio.PyAu
2021-10-14 08:25:46
1115
原创 安装pyaudio时的一点小问题
一开始是由于没有安装pyaudio所以报错但pip install pyaudio之后依旧报错按照网上教程从官网下载了whl文件后,显示其实是pyaudio的版本下载错了在终端输入python查看版本再下载对应的pyaudio即可https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio...
2021-10-13 21:44:23
121
原创 吴恩达 机器学习 ex2练习 python
1.1 Visualizing the data数据文件中有三列,前两列为两门考试的成绩,第三列为是否被录取,1表示被录取,0表示没被录取。第一个题目是将数据进行可视化。遇到的最大的困难就是将数据按照第三列进行分类,想过使用删除,但是计算不好循环的次数。想过使用for循环添加矩阵的行,但是查阅资料显示python会不断地创建一个新的矩阵内存,这样会非常低效,最终使用创建零矩阵,使用for循环将数据分类。import numpy as npimport matplotlib.pyplot as plt
2021-08-25 15:46:01
202
原创 吴恩达 机器学习 ex1练习 python
1 输出一个5*5的单位矩阵import numpy as npa=np.eye(5)print(a)结果:[[1. 0. 0. 0. 0.] [0. 1. 0. 0. 0.] [0. 0. 1. 0. 0.] [0. 0. 0. 1. 0.] [0. 0. 0. 0. 1.]]2 单变量的线性回归整个2的部分需要根据城市人口数量,预测开小吃店的利润数据在ex1data1.txt里,第一列是城市人口数量,第二列是该城市小吃店利润。2.1画出数据import matplotl
2021-07-22 19:11:54
556
原创 输入三个整数x,y,z,请把这三个数由小到大输出。
num=[]for i in range(0,3): a=int(input("请输入第%d个整数"%(i+1))) num.append(a)for i in range(0,3): for j in range(i,3): if num[j]<num[i]: p=num[i] num[i]=num[j] num[j]=pprint(num)
2021-07-18 20:46:49
202
原创 输入某年某月某日,判断这一天是这一年的第几天?
输入某年某月某日,判断这一天是这一年的第几天?year=int(input("请输入年"))month=int(input("请输入月"))day=int(input("请输入日"))a=0all=0month1=[31,28,31,30,31,30,31,31,30,31,30,31]month2=[31,29,31,30,31,30,31,31,30,31,30,31]if year%100!=0: if year%4==0: a=2 else:
2021-07-18 20:06:45
95
原创 一个整数,它加上100和加上268后都是一个完全平方数,请问该数是多少?
一个整数,它加上100和加上268后都是一个完全平方数,请问该数是多少?设定的范围为0到10000x=0while(x<=10000): if (x+100)**0.5%1==0 and (x+268)**0.5%1==0: print(x) x=x+1
2021-07-18 19:44:01
918
原创 企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,
企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?方法一:这个方法太笨了l=int(input("请输入所售利润"))if
2021-07-18 19:34:42
1455
原创 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?num=0for i in range(1,5): a=i for j in range(1,5): b=j for k in range (1,5): c=k if a!=b and b!=c and c!= a: num=num+1print(num)验证答案后的优化:for a in range
2021-07-18 15:11:45
327
原创 python读取txt文件中间有不确定空格(小白)
strip()strip():删除开头或是结尾的字符split()split() 通过指定分隔符对字符串进行切片初衷是想练习把图片中的txt文件送到列表,但一开始使用了split(" “),于是列表第二列都是 [” "]。doc=open("one.txt","r")doc1=doc.readlines()num1=[]for content in doc1: content=content.strip().split(" ") num1.append(conten
2021-04-11 14:57:14
1319
原创 机器学习——梯度下降的浅理解
梯度下降的公式θi=θi-α*∂f/∂θi一直无法直观的理解这个公式,不知道怎么在图中标画出来。现在的理解:根据选择的点θi,如果它的导数为正,则向左偏移一点,如果导数为负,则向右偏移一点。所以其实其中的∂f/∂θi只是起到了一个方向的作用,具体的值只起到了一个控制下降速度的作用,其大小无需在图中量化。...
2021-04-11 12:39:33
65
原创 python列表
列表定义1.能保存任意数量任意类型的Python 对象2.列表元素用中括号 [ ]包裹,元素用逗号分隔3.元素的个数及元素的值可以改变4.切片运算符[ i : j]得到从下标i到下标j-1的子集5.第一个元素索引为 0,最后一个元素索引为-1列表函数len©:返回集合C的长度,即元素的数量min©:返回集合C中的最小元素max©:返回集合C中的最大元素sum©:返回列表C中所有元素总和,元素必须为数字range(a, b):创建参数范围内的整数列表sorted©:对任意集合类型进行
2021-04-10 12:14:18
115
原创 TypeError: unsupported operand type(s) for &: ‘int‘ and ‘str‘
练习python时遇到的小问题TypeError: unsupported operand type(s) for &: ‘int’ and 'str’原代码为:people=["a","b","c","e"]a=input("请输入你要查的人")for i in range(0,len(people)): if a==people[i]: print("有这个人") break if i==(len(people)-1) & a!=
2021-04-10 11:56:50
2466
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人