手写call,apply,bind函数

涉及面试题 call,apply,bind函数内部实现是怎样的? 考虑两点: 第一个参数为undefined或null的时候,那么会转变为window改变了this执行,让新的对象可以执行该函数。 call Function.prototype.myCall = function(context) { if (typeof context === "undefined" || context === null) { context = window } //context=context||window 和上面的代码一样 context.fn = this const args = [...arguments].slice(1) const result = context.fn(...args) delete context.fn return result } 实现分析 首先context为可选参数,如果不传的话默认上下文是window接下来给content创建一个fn属性,并将值设置为需要调用的函数因为call可以传入多个参数作为调用函数的参数,所有需要将参数剥离出来然后调用函数并将对象上的函数删除 apply apply和call实现类似,不同的就是参数的处理 Function.prototype.myApply = function(context) { if (typeof this !== 'function') { throw new TypeError('Error') } context = context || window context.fn = this let result if (arguments[1]) { result = context.

五、Python 函数和代码复用

本文是网课:Python语言程序设计国家精品——(北京理工大学 嵩天 、 黄天羽 、 礼欣)的学习笔记。 目录 5.1 函数的定义与使用 5.2 实例7:七段数码管绘制 5.3 代码复用与函数递归 5.4 模块4:PyInstaller库的使用 5.5 实例8:科赫雪花小包裹 5.1 函数的定义与使用 函数的理解与定义 函数的使用及调用过程函数的参数传递 函数定义时可以为某些参数指定默认值,构成可选参数,在参数列表中可选参数必须定义在非可选参数之后。 可变参数同样放在后面。 函数的返回值 函数没有返回值时,也可以return,只是什么都不返回就是了。 return可以返回0或多个返回值。 列表类型[a,b,c...];元组类型(a,b,c...) 局部变量和全局变量 对比如下两个图: 关于组合数据类型,对比观察如下两图: 组合数据类型在Python中是由指针来实现的。 lambda函数 一种函数的紧凑表达形式。 注意lambda函数中的<表达式>不是<函数体> 对于lambda函数 f = lambda x , y : x + y 它的函数名就是f 5.2 实例7:七段数码管绘制 步骤一 import turtle def drawLine(draw): #绘制单段数码管 turtle.pendown() if draw else turtle.penup() turtle.fd(40) turtle.right(90) def drawDigit(digit): #根据数字绘制七段数码管 drawLine(True) if digit in [2,3,4,5,6,8,9] else drawLine(False) drawLine(True) if digit in [0,1,3,4,5,6,7,8,9] else drawLine(False) drawLine(True) if digit in [0,2,3,5,6,8,9] else drawLine(False) drawLine(True) if digit in [0,2,6,8] else drawLine(False) turtle.

idea一键生成对象set方法

就在昨天失恋了,对方在银行工作,感觉一切都挺好的,前半周过得挺好,后半周说不合适,一周之内经历了人生的大起大落,想了又想,恋爱这事跟做需求差不多,有时候摸不透对方怎么想的。 言归正传,我记得2018年底上班打开idea时候有了一个Tip,意思就是有一个新的快捷键可以把一个新的对象所有set方法打印出来,我这个人很讨厌给对象一个个赋值的,后来这个快捷键忘记了就再没找到。 后来发了个帖子,感谢KevinGH这个哥们推荐这个插件,虽然有些不情愿,试用了一下感觉还行。 http://plugins.jetbrains.com/files/9360/screenshot_16613.png 请移步 http://plugins.jetbrains.com/plugin/9360-generateallsetter 选中对象,Alt+enter就可以执行操作,省了不少时间。

Springboot mybatis查询结果中某些字段为null

使用springboot mybatis 查询时某些字段为null 看到返回结果以后主要分析了一下情况: 实体类的get、set方法确实 mapper.xml文件中的resultMap、resultType等原因导致 数据库中数据存在问题 经过检查与验证发现以上都不存 在问题,包括代码逻辑也经过几次检查。实在不知道问题所在,于是又去问题的根源查看,详细的查看了查询所得的返回结果,发现所有为null的字段都存在一种现象就是字段名都为驼峰命名,然后网上查阅mybatis字段自动转换驼峰命名的配置。如下: #开启驼峰命名转换 mybatis.configuration.map-underscore-to-camel-case=true 将其配置在application.properties文件中,果然奏效! 因为是消耗了1个多小时的坑,遂将其记录,同时也希望能帮到其他和我一样的小菜鸟!

代码雨怎么编写

百度经验:jingyan.baidu.com Windows编程语言技巧。DOS命令编程。如何使用DOS命令编写一个代码雨小程序? 百度经验:jingyan.baidu.com 工具/原料 电脑 记事本 百度经验:jingyan.baidu.com 方法/步骤 1 很多人都觉得黑客帝国里,电脑屏幕上的绿色代码雨非常的炫酷。想要制作一个来炫耀一番。下面,小编来介绍制作方法。 步骤阅读 2 代码雨制作教程第一步:首先,电脑用户在自己的电脑桌面上创建一个文本文件。创建以后打开。 步骤阅读 3 代码雨制作教程第二步:打开以后,在文件中输入代码。代码如下图所示。 步骤阅读 4 代码雨制作教程第三步:完成代码雨的代码编写以后,点击工具栏中的文件。然后在点击另存为。 步骤阅读 5 代码雨制作教程第四步:点击另存为以后,将下方的文件名的后缀改为“.bat”。文件名用户随意定义。修改好以后点击“保存”。 步骤阅读 6 代码雨制作教程第五步:完成文件的编写和保存以后,右击文件点击以管理员身份运行。这样就可以看到一个炫酷的代码雨界面了。 步骤阅读 END 百度经验:jingyan.baidu.com 注意事项 希望对读者有所帮助~~~喜欢的请给小编点个大拇指 经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。 举报 作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。

vue路由学习

<div id="app"> <h1>Hello App!</h1> <p> <!-- 使用 router-link 组件来导航. --> <!-- 通过传入 `to` 属性指定链接. --> <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 --> <router-link to="/foo">Go to Foo</router-link> <router-link to="/bar">Go to Bar</router-link> </p> <!-- 路由出口 --> <!-- 路由匹配到的组件将渲染在这里 --> <router-view></router-view> </div> // 0. 如果使用模块化机制编程,导入Vue和VueRouter,要调用 Vue.use(VueRouter) // 1. 定义 (路由) 组件。 // 可以从其他文件 import 进来 const Foo = { template: '<div>foo</div>' } const Bar = { template: '<div>bar</div>' } // 2. 定义路由 // 每个路由应该映射一个组件。 其中"

brew 切换 go 版本

安装 brew install go 查看所有版本 方式一 brew info go方式二 brew ls --versions | grep go 切换 brew switch go 1.11 清理旧版本 brew cleanup go 参考:https://jpuyy.com/2019/01/brew-切换-go-版本.html

IT资源分享

人工智能: 链接:https://pan.baidu.com/s/1Zj4DdNbt6kAUCOSpOUQdqA 提取码: xf6c Android: 链接: https://pan.baidu.com/s/1nsMRX287sApSOpRJDxi3MA 提取码: p2d3 小程序: 链接: https://pan.baidu.com/s/1SCLJV5P3doggfIhQd0i2zg 提取码: x96c 算法: 链接:https://pan.baidu.com/s/1dAxq1MkMvItpJFECti0KQw 密码:tue3 区块链: 链接: https://pan.baidu.com/s/1KB76XrCLRxpeuqF1ccg8hQ 提取码: m86x 数据库: 链接:https://pan.baidu.com/s/1_v_bXm2g9Khi1CJxTG1P3w 密码:c6h6 后台: 链接:https://pan.baidu.com/s/1Ue-wX84leWqAfNBYMwd1fg 密码:d6de 大数据: 链接: https://pan.baidu.com/s/1NMy6ucLEPPyha-7J3Hnqrg 提取码: hjmc web: 链接:https://pan.baidu.com/s/13sRDm9uq6kUVKkAF5XKs5A 密码:164j reactnative: 链接:https://pan.baidu.com/s/1B-D3QZvODMtatLLD6RD0lg 密码:sm9y python: 链接:https://pan.baidu.com/s/1yLs9c_flX17RR3E7KpvP9w 密码:xt7b php: 链接:https://pan.baidu.com/s/195ZK7L0S8y4CPjgBi7iBfQ 密码:zfqe linux: 链接:https://pan.baidu.com/s/1Y948Mac3BoQinWfKGN1HSA 密码:xypu java: 链接:https://pan.baidu.com/s/1YSWBYyO9EodqoUyJ_ikqSg 密码:4bkj 链接: https://pan.baidu.com/s/1ms5W0bVS3TZV3-Crj0tN_A 提取码: 28ba ios: 链接:http://pan.baidu.com/s/1kUNhvlP 提取:eq7d 有需要的可以学习一下! 以上资源源自微信公众号“菜鸟要飞”,如有侵权,请联系删除!

flutter深入研究之GestureDetector

学习flutter 肯定是快乐的,实际做项目必然是充满挑战。为了迎接未来的挑战,我们需要对flutter有更深入的了解 GestureDetector 类深入研究 GestureDetetor 简介 GestureDetector 是检测手势的widget。如果GestureDetector 的child属性不空,GestureDetector将自己大小设置为child的大小。如果child属性为空,它将自己的大小设置为父组件的大小。(稍后通过代码测试一下). Flutter为了方便出来touch事件创建了InkWell和InkResponse组件(源码在container.dart 186行)。这类组件可以包裹包裹您自己的组件,让您自己的组件可以响应touch事件。简单来说,如果您打算让图片实现按钮的功能,那么就可以使用InkResponse让图片响应点击事件了。 demo 代码 GestureDetector( onTap: () { setState(() { _lights = true; }); }, child: Container( color: Colors.yellow, child: Text('TURN LIGHTS ON'), ), ) 属性介绍 Property/CallbackDescriptiononTapDown OnTapDown is fired everytime the user makes contact with the screen.onTapUpWhen the user stops touching the screen, onTapUp is called.onTapWhen the screen is briefly touched, onTap is triggered.onTapCancelWhen a user touches the screen but does not complete the Tap, this event is fired.

Python爬取51jobs之数据清洗(3)

前面已经用get_webpage方法获取网站,下面说一说如何从网站信息中过滤出我想要的信息(招聘公司,招聘信息,薪水)。 以一个公司招聘网站为例子, ur=‘https://jobs.51job.com/hangzhou-jgq/104504900.html?s=01&t=0’ ’我们要获取这3个地方的文本信息 首先导入requests模块,写上请求头 import requests import re from bs4 import BeautifulSoup def data_cleaning(): user_agent = 'Mozilla/4.0 (compatible;MSIE 5.5; Windows NT)' headers = { 'User-Agent': user_agent } url = "https://jobs.51job.com/hangzhou-jgq/104504900.html?s=01&t=0" r = requests.get(url, headers) soup = BeautifulSoup(r.text, 'html.parser', exclude_encodings="utf-8") 上面都是爬虫基础的,随便百度一下就行,简单来说,soup就是你在网页按F12出来的HTML代码。 接着在利用正则,BS4模块获取目的信息 整理如下: def data_cleaning(): .... # 省略之前写的 # 1,公司名称 sname = soup.find_all(class_='catn')[0]['title'] # 2,职位信息 directory = soup.find_all(class_='bmsg job_msg inbox')[0] # 返回一个<class 'bs4.element.Tag'> # TypeError: 'NoneType' object is not callable job_datas = str(directory).

知识图谱赵军学习笔记(一)--概论

什么是知识图谱 知识的种类 陈述性知识(描述性知识) 描述客观事物的性状等静态信息 分为事物,概念,命题3个层次 事物是特定的事或物 概念是对一类事物本质特性的反映 命题是对事物之间关系的陈述 概括性命题 描述概念之间普遍关系非概括性命题 描述特定事物之间的关系 过程性知识(程序性知识) 描述问题如何求解等动态信息 规则 描述事物的因果关系控制结构 描述问题的求解步骤 图谱将传统基于浅层语义分析的信息服务范式提升到基于深层语义的知识服务 知识和结构化数据 本体 抽象的概念表示数据库 电脑表示和存储计算机应用中的数据的产品框架 数据的描述和定义 上下位知识: 大熊猫是猫科动物 属性之间的关系:子女和父母逆关系 属性的约束:人的父母只有两个 框架和数据构成完整的知识系统 知识是认知,图谱是载体,数据是实现 知识图谱发展历程 人工智能:推理、分析、预测、思考 语义网:推理 知识图谱类型 知识的主客观性 事实性知识:确定性的,不随状态的变化而改变的知识(中国,首都,北京)主观性知识:某个人或群体的情感信息 苹果手机太贵了 知识的变化性质 静态知识:不随时间,空间的变化而变化 出生日期动态知识:随时间、空间的变化而变化 美国总统,上一任是奥巴马,下一任是特朗普事件是动态知识的重要组成部分 按场景分类 领域知识:领域特有的知识,法律,金融百科知识:涵盖各行业、领域的通用知识 ,如人物,机构,地点场景知识:某个特定场景下或者需要完成某个任务市需要的知识 如订机票、盖房子等语言知识:语言层面的知识,如减肥和瘦身是同义词常识知识:大家都认可的知识 如鸟会飞 举例: wordnet:语言知识图谱,由同义词和描述同义词的关系构成 Hownet:语言认知知识图谱,基于词语义原,揭示词语更小的语义单元的含义。 cyc和conceptnet:常识知识图谱 领域知识图谱:电影知识图谱、医学知识图谱 知识图谱生命周期 知识体系构建 资源描述框架(RDF) 资源:能够使用RDF表示的对象称之为资源,包括实体、事件和概念等谓词:描述资源本身的特征和资源之间的关系陈述:RDF三元组<主体、谓词、宾语> 知识获取 结构化数据 表格、数据库 优点是置信度高,数据质量可靠 缺点是规模小,不易获得半结构数据 不能通过固定的模板直接获得的结构化数据 优点:置信度高,规模大 缺点:样式多变,难以用模板获取非结构化文本数据 文本信息抽取 主要任务 实体识别 姚明1981年出生在上海 姚明-》人名 1981-》时间词 上海-》地名 命名实体识别:

ssh问题:Connection closed by foreign host. Disconnected from remote host

放通一个远程ip能够ssh服务器,但是报错: Connection closed by foreign host. Disconnected from remote host。。。 解决办法: firewall防火墙放通ip。 /etc/ssh/sshd_config文件修改,运行root用户密码登,再重启sshd服务。 /etc/hosts.allow和/etc/hosts.deny文件修改,允许相应主机的访问,再重启sshd服务。 客户端连接数过多时也会报错。 a.每次/etc/ssh/sshd_config中,将#MaxStartups 10修改为MaxStartups 10/100,再重启sshd服务 b.每次都exit正常退出ssh,可以释放ssh连接。

微信小程序之文字水平垂直居中

关于小程序文字水平居中有两个方法 一、用line-height和text-align wxml: <view class='aa'> <text class='bb'>水平垂直居中</text> </view> wxss: .aa{ width: 100%; height: 100%; display: flex; flex-direction: column; } .bb{ width: 100%; height: 40px; line-height: 40px; text-align: center; background: red; font-size: 14px; } 出来的最终效果 line-height中的文本可以垂直居中,text-align设置为center可以水平居中 二、用flex布局解决问题 wxml: <view class='aa'> <text class='bb'>水平垂直居中</text> </view> wxss: .aa{ width: 100%; height: 100%; display: flex; flex-direction: column; } .bb{ width: 100%; height: 40px; display: flex; align-items: center; justify-content: center; background: red; font-size: 14px; } 出来的最终效果

mysql之执行计划——explain中的extra详解

之前一直对explain中的extra和type两个类型混淆。其实两者完全不同,type列和覆盖索引毫无关系,它只是表示这个查询访问数据的方式,或者说是MySQL查询行的方式。 我们使用一个例子来讲解这个extra列。下面的例子来自:https://blog.csdn.net/jeffrey11223/article/details/79100761 首先我们创建一个表 CREATE TABLE test_extra ( xxx varchar(20) NOT NULL, yyy varchar(20) NOT NULL, zzz datetime NOT NULL, aaa varchar(10) NOT NULL, PRIMARY KEY (xxx,yyy,zzz) )ENGINE=InnoDB DEFAULT CHARSET=utf8; 通过show index from test_extra;语句来显示刚刚创建的表中的索引情况: 1. 第一种情况 这三个执行计划,extra字段的值是using index,意思是索引覆盖,查询的内容可以直接在索引中拿到。 2. 第二种情况 第一个查询语句的type使用ref,是因为匹配索引的最左前缀。extra为null,是因为什么?????????难道是因为直接使用索引就可以查询出来的原因吗???这里我没搞懂。。。 第二个查询语句的type使用All,是因为不符合最左前缀的理论,从而使用全盘扫描的方式查询数据,而extra的值是using where是因为,使用where来过滤条件。 3. 第三种情况 查询的内容在索引内,where条件符合索引最左前缀,extra是using where using index, 且type是ref,表面用了索引,索引覆盖了查询,using where表示发生了过滤 4. 第四种情况 查询的内容不再索引内,where条件为索引最左前缀,extra为null, type为ref,表明虽然用到了索引,但是没有索引覆盖,产生了回表。???回表问题需要搞一下。。。

判断添加一个字符后字符串是否为回文串

添加等价于删除 即判断删除一个字符后是否为回文串即可 题目: 自从 Applese 学会了字符串之后,精通各种字符串算法,比如……判断一个字符串是不是回文串。 这样的题目未免让它觉得太无聊,于是它想到了一个新的问题。 如何判断一个字符串在任意位置(包括最前面和最后面)插入一个字符后能不能构成一个回文串? 输入描述: 仅一行,为一个由字母和数字组成的字符串 s。 输出描述: 如果在插入一个字符之后可以构成回文串,则输出"Yes", 否则输出"No"。 示例1 输入 applese 输出 No 输入 java 输出 Yes 备注: |s|≤105 #include<bits/stdc++.h> #define ll long long #define MOD 1e9+7 #define N 1000010 using namespace std; char a[N],b[N]; int check(const string &s){//检查不符合回文串的第一个位置 int n=s.length(); for(int i=0;i<n/2;i++) if(s[i]!=s[n-i-1]) return i; return -1; } int main(){ string s; cin>>s; int diff=check(s); if(diff==-1)//是回文串 cout<<"Yes"; else{ string temp=s; string s1=s.erase(diff,1);//从diff位置开始删除一个字符 string s2=temp.

shell批量修改文件名字 重命名 MD5+文件后缀

搞个事情 整理图片 的时候想着批量改个名字,防止重复。 果断写一个脚本 挖槽,赶紧修改修改。 脚本写完,直接刚 $ for file in $(find ./* -iname "*.*");do base=`md5sum $file | awk '{print $1}'` mv ./$file ./${base}.${f##*.} done 为了安全,再搞个非空判断(如下) $ for file in $(find ./* -iname "*.*");do base=`md5sum $file | awk '{print $1}'` if [ ! ${base} ] ;then exit 113 fi mv ./$file ./${base}.${f##*.} done 完成。 错误一 第一次,${a}没有加${},所有文件全部删除了,变成一个文件了。

Batch Normalization原理分析和算法详解笔记

前言 众所周知,现阶段很多模型在反向传播算法的时候都选择的是随机梯度下降法,尽管随机梯度下降法对于训练深度网络简单高效,但是它有个毛病,就是需要我们人为的去选择参数,比如学习率、参数初始化、权重衰减系数、Drop out比例等。这些参数的选择对训练结果至关重要,以至于我们很多时间都浪费在这些的调参上。 而batch normalization(后面简称BN算法)的出现打破了这样的局面——不需要那么刻意的慢慢调整参数。 其优点在于: (1)可以选择比较大的初始学习率,因为它具有很快的收敛性。 (2)可以不用Drop out,有人可能会说这样会不会降低泛化能力,无法防止过拟合的问题,不用担心因为BN具有提高网络泛化能力的特性。,即使不用Drop out也可以达到相当好的效果。 (3)不用使用局部响应归一化的问题了,BN顾名思义就知道自带归一化的效果。归一化的好处我说一下,大家都知道现阶段的神经网络其实就是在学习数据的分布,在函数中找到一个属于自己的对应值,而归一化不仅可以将数据分布集中但又保持相对的距离,而且可以防止在每次增加新数据时迭代会产生巨大的波动所带来的影响,这样就可以增加训练的速度了。 这里补充一下局部响应归一化: BN算法的具体实现原理 BN的想法来源于白化,所谓白化,就是对输入数据分布变换到0均值,单位方差的正态分布,其目的是去除数据的冗余信息,因为一般情况下,所获得的数据都具有相关性,所以通常都要求对数据进行初步的白化或球化处理,因为白化处理可去除各观测信号之间的相关性,从而简化了后续独立分量的提取过程,而且,通常情况下,数据进行白化处理与不对数据进行白化处理相比,算法的收敛性较好。 虽然白化处理的数据效果很好,但是其计算量非常之大,以至于不少人不得不放弃白化预处理。而有人就简化白化的计算,从而得到了现在的BN算法,近似与白化的公式: 要注意,这里的x(k)不是指原始输入,也不是某层每个神经元的输出,而是该层这个神经元的线性激活x=WU+B,这里的U才是上一层神经元的输出。变换的意思是:某个神经元对应的原始的激活x通过减去mini-Batch内m个实例获得的m个激活x求得的均值E(x)并除以求得的方差Var(x)来进行转换。 变换后某个神经元的激活x形成了均值为0,方差为1的正态分布,目的是把值往后续要进行的非线性变换的线性区拉动,增大导数值,增强反向传播信息流动性,加快训练收敛速度。但是这样会破坏网络特征分布,为了防止这一点,增加了变换重构,即每个神经元增加两个调节参数(scale和shift),这两个参数是通过训练来学习到的,用来对变换后的激活反变换,使得网络表达能力增强,即对变换后的激活进行如下的scale和shift操作,这其实是变换的反操作: BN算法公式图为: 具体的推导过程请参考此处,个人感觉该作者写的非常好,过程也很详细。 BN算法运用 根据上面算法的原理,可以知道,BN算法最主要的功能:归一化。 1.可以对输入的样本数据进行BN处理,我朋友在处理三维坐标时,就将数据用BN算法过了一遍,不仅降维了,而且数据的相关性也分离了,效果出奇的好。 2.根据它的归一化,还可以将BN应用于一个神经网络的任何神经元上。即将某神经元输出的特征进行BN(Wx+b),然后再传到下一层,这样可以增加迭代的速度。 现阶段BN算法主要用于这几处,还有其他方向的,希望读者能在评论区告知,我一定及时加入进去。