fn

go中的关键字-go(下)

妖精的绣舞 提交于 2019-12-05 23:47:30
1. goroutine源码分析 1.1 初始化   go程序的启动流程分为四步 call osinit, 这里就是设置了全局变量ncpu = cpu核心数量 call schedinit make & queue new G (runtime.newproc, go func()也是调用这个函数来创建goroutine) call runtime·mstart   其中,schedinit 就是调度器的初始化,除了schedinit 中对内存分配,垃圾回收等操作,针对调度器的初始化大致就是初始化自身,设置最大的maxmcount, 确定p的数量并初始化这些操作。 schedinit   schedinit这里对当前m进行了初始化,并根据osinit获取到的CPU核数和设置的GOMAXPROCS确定P的数量,并进行初始化。 1 func schedinit() { 2 // 从TLS或者专用寄存器获取当前g的指针类型 3 _g_ := getg() 4 // 设置m最大的数量 5 sched.maxmcount = 10000 6 7 // 初始化栈的复用空间 8 stackinit() 9 // 初始化当前m 10 mcommoninit(_g_.m) 11 12 // osinit的时候会设置 ncpu这个全局变量

差分

倾然丶 夕夏残阳落幕 提交于 2019-12-05 22:05:56
给定一个离散序列: a 0 , a 2 , ⋯ , a n , ⋯ a 0 , a 2 , ⋯ , a n , ⋯ //--> 零阶差分(原序列): Δ 0 h n = a n Δ 0 h n = a n //--> 一阶差分: Δ 1 h n = a n + 1 − a n Δ 1 h n = a n + 1 − a n //--> 二阶差分: Δ 2 h n = Δ 1 h n + 1 − Δ 1 h n = a n + 2 − 2 ⋅ a n + 1 + a n Δ 2 h n = Δ 1 h n + 1 − Δ 1 h n = a n + 2 − 2 ⋅ a n + 1 + a n //--> 三阶差分: Δ 3 h n = Δ 2 h n + 1 − Δ 2 h n = a n + 3 − 3 ⋅ a n + 2 + 3 ⋅ a n + 1 − a n Δ 3 h n = Δ 2 h n + 1 − Δ 2 h n = a n + 3 − 3 ⋅ a n + 2 + 3 ⋅ a n + 1 − a n //--> p p //--> 阶差分: Δ p h n = Δ p − 1 h n + 1 − Δ p − 1 h n Δ p h n = Δ p − 1 h n + 1 − Δ p − 1 h n //--> 观察发现: Δ p h n = ∑ i = 0 p ( −

数组对象

我只是一个虾纸丫 提交于 2019-12-05 18:59:49
数组Array 什么叫数组 一系列数据的集合,每一项可以保存任何类型的数据,称为数组的元素,每个元素之间用逗号隔开 数组格式:[数组元素,数组元素,数组元素] 数组创建方式 //1)字面量(推荐) var arr = [1,2,3]; //2)使用构造函数创建 var arr = new Array();//创建一个空数组 var arr = new Array('laoxie','lemon' ,'tiantian','yy');//创建数组并同时写入数据 数组操作 数组访问与写入 索引(下标):从0开始 var arr = ['html5','css3','javascript']; //访问 arr[0]; //=> 'html5' arr[2]; //=> 'javascript' //写入 arr[3] = 'web前端'; length:表示数组的长度 arr.length; //=> 3 数组遍历 for循环 var arr = ['html5','css3','javascript']; for(var i=0;i<arr.length;i++){ console.log(arr[i]); } 常用数组方法 push(): 往数组尾部添加一个或多个元素,返回数组新的长度 pop():删除数组最后一个元素,返回删除的元素 unshift()

深入解析ES6中的promise

十年热恋 提交于 2019-12-05 18:57:17
作者 | Jeskson 来源 | 达达前端小酒馆 什么是Promise Promise对象是用于表示一个异步操作的最终状态(完成或失败)以及其返回的值。 什么是同步,异步 同步任务会阻塞程序的执行,如alert,for 异步任务不会阻塞程序的执行,如setTimeou 使用Promise,then,catch,finally Promise.all 和 Promise.race Promise.resolve 和 Promise.reject 回调与Promise 回调函数,用于请求数据 function backFunction(fn) { setTimeout(function() { fn && fn(); }, 1000); } // 调用 backFunction(function() { console.log(1); // 1 backFunction(function() { console.log(2); // 2 backFunction(function() { console.log(3); // 3 }); }); }); Promise function d() { return new Promise(resolve = { setTimeout(function() { resolve(); // resolve成功的时候要做的事情 },1000)

js中的this指向

橙三吉。 提交于 2019-12-05 18:14:29
    this 通常指向调用者,即谁调用指向谁。 场景1: var a = 2; function fn() { console.log(this.a); } var obj = { a:123, fn:fn } fn(); // 2 this指向window obj.fn(); // 123 this指向obj 场景2:appy 与call 可改变this 指向(call与apply的第一个参数是this指向) var a = 2; function fn() { console.log(this.a); } var obj = { a:123, fn:fn } fn(); // 2 this指向window fn.call(obj); // 123 this指向obj fn.call(window); // 2 this指向window 场景3:箭头函数可以改变this指向,它的this绑定取决于外层 var a = 2; var fn = () => { console.log(this.a); } var obj = { a:123, fn:fn } fn(); // 2 this指向window obj.fn(); // 2 this指向window 而不是obj 场景4:事件中this指向事件对象元素 var ul = document.getElementById(

小程序里实现 watch 和 computed

陌路散爱 提交于 2019-12-05 15:10:48
小程序里的自定义组件里是有数据监听器的,可以监听对应数据的变化来执行callBack,但是页面Page里没有对应的api就显的很生硬,比如某个数据变了(如切换城市)需要重新刷页面,如果不做监听,每次都要在数据变化的地方手动去调一次函数。 那么如何像vue那样在Page里实现 watch 和 computed 呢 ?如果这时候你脑子里能想到 Obejct.defineProperty 或者 Proxy 那么接下来就慢慢实现吧。 先晒出是这样调用的,请牢记这个调用,后面会反复提到 test2 test3 currentCity: this.$computed(this, { test2: function() { return this.data.currentCity.cityID + '2222222' }, test3: function() { return this.data.currentCity.cityID + '3333333' } }) this.$watch(this, { currentCity(city) { console.log('回调传值',city) if (city.cityID) { this.getHotSpotList() } } }) 第一步,先定义一个函数来检测对应属性的变化,每当setter,getter的时候会触发。 function

斐波那契数列

て烟熏妆下的殇ゞ 提交于 2019-12-05 11:32:35
简单的说就是f[n]=f[n-1]+f[n-2],f[1]=1,f[2]=1的一个数列。 1.根据递推式可以简单得出一个递归求法。 typedef long long ll; ll f(ll x){ if(x==1||x==2)return 1; else return f(x-1)+f(x-2); } int main(){ ll n; scanf("%lld",&n); printf("%lld\n",f(n)); } 2.显然得出这样得一个递归式子出现了大量得重复计算,可以记忆化优化 typedef long long ll; const int maxn=50; ll f[maxn]; int main(){ ll n; f[1]=f[2]=1; scanf("%lld",&n); for(int i=3;i<=n;i++){ f[i]=f[i-1]+f[i-2]; } printf("%lld\n",f[n]); } 3.如果可以构造如图所示的矩阵,那么连续给矩阵乘以n个这样的矩阵就可以得到f n 。 又 因为矩阵满足结合律,所以可以用快速幂 的方式,除去矩阵乘法的时间复杂度,O(logn)就可以得到斐波那契数列的第n项。 对于常系数线性齐次递推得到如下结论: const int N=10,M=10; long long a[10]; long long f[10];

浅谈递归函数

我的未来我决定 提交于 2019-12-05 09:04:17
1.什么是递归函数: 就是在函数体内调用本函数。是一种调用模式,是一种逻辑程序基础的体现 (类似于循环)。 当我们知道了什么是递归函数以后接下来的问题就是: 怎么写递归函数: (1)声明函数(这里的步骤和普通函数的声明一样)。 (2)找使递归函数 停止的条件 (也是递归函数里最重要的一点) (3)找关系(此时假设函数的功能已经实现,要找的关系就是找 f(n)与f(n-1) 的关系) (4)用f(n-1)去实现f(n)的功能。 下面看一个简单的例子: 利用递归求斐波那契数列(1,1,2,3,5,8,13,21,34,55,89...) // 第一步:先声明函数fn; // 第二步:找临界关系:通过观察可以发现第一位和第二位的值都为1,所以临界值为n=1或者n=2时直接返回1,函数终止。 // 第二步:观察数列可以发现从第三位的值=第一位+第二位;第四位的值=第二位+第三位...依次类推 // 可以写成如下方式: // 5 = 3 + 2 // 1+2 + 1+1 // 1+1 //第三步:通过上面的拆分发现上面的式子可以表达为: // fn(5) =fn(4) + fn(3) // fn(2)+fn(3) + fn(2)+fn(1) // fn(2)+fn(1) //第四步:通过看上面的式子已经可以很明显的看出fn(n)与fn(n-1)的关系所以fn(n)=fn(n-1)+fn(n

Tensorflow-DCGAN

大城市里の小女人 提交于 2019-12-05 08:41:40
参考: 1、 https://github.com/awjuliani/TF-Tutorials 2、 https://github.com/AYLIEN/gan-intro/blob/master/gan.py 3、 https://github.com/tflearn/tflearn/tree/master/examples/images 5、 https://github.com/carpedm20/DCGAN-tensorflow 6、 https://github.com/carpedm20/BEGAN-tensorflow 注意生成的图像的shape [n,32,32,1] (图像宽度和高度必须相等且满足2^m),所以原始mnist数据28x28 需转成32x32 #!/usr/bin/python3 # -*- coding:utf-8 -*- from __future__ import absolute_import from __future__ import division from __future__ import print_function """ https://github.com/awjuliani/TF-Tutorials/blob/master/DCGAN.ipynb """ #Import the libraries we will

SCTP 库的简述和代码 (2)

╄→гoц情女王★ 提交于 2019-12-05 08:21:51
本站首发兼远创, 全拼, 写字不易, 程序调试更烦. 所以, 如果转请保持作者信息和此联接, 给我动力 :) 咱写C的, 好多很炫的方法用不上, 只能用土的, 状态表. 既然是闲扯,咱就扯远点, 为什么用状态转移表呢? 首先, 我们有些什么模式可以选呢? 1. switch/case 大哥/大姐, 什么时代了, 写协议软件状态转移用switch/case? 不转昏始作蛹者(别和我说是你)的头, 也搞死维护的兄弟. 但是,但是, 世事无绝对, switch简单啊. 好象,我说好象,无根据,别乱猜, 有一个业界有很很有名的公司是这样写sctp协议栈的,不可说,不可说. 2. 状态转移表 先整个表看看,好不好, bug多多, 多多指正. //---------------SCTP message proc table --------------------------------------------------------------- static fsm_handler_proc sctp_closed_msg_proc[SCTP_MSG_MAX] = { {(fsm_handler_fn)&sctp_send_abort, SCTP_STATE_CLOSED}, /*(0) 8.4, ootb data, abort */ {(fsm_handler_fn)&sctp