ICode9

精准搜索请尝试: 精确搜索
  • 高阶函数2022-02-19 22:00:35

    定义 一个函数的参数是函数,那么这个函数就是高阶函数。数组的遍历方法就是高阶函数,如:forEach、map等等。 细节 保持纯函数,减少函数副作用; 回调函数要使用 call 或 apply 绑定 this ; 手写数组函数 forEach function myForEach(arr, cb) { for (let i = 0; i < arr.length; i++)

  • 【JavaScript】call()、apply()、bind()的用法和区别2022-02-16 18:34:47

    这三个方法都是预定义的JavaScript方法,通过指定对象方法的上下文(this),从而使别的对象也能使用自己定义的对象方法: let person = { getOccup: function() { console.log(this.occupation); } }; let student = {occupation:"student"} let teacher = {occupation:"t

  • call apply bind的区别2022-02-16 16:33:25

    ------------恢复内容开始------------ 三者的相似: 1.都可以改变this指向 2.第一个参数都是要改变的this指向 3.都可以利用后续参数传参 例子: var xw = { name : "小王", gender : "男", age : 24

  • 第63篇-解释器与编译器适配(二)2022-02-16 09:01:29

    这一篇详细介绍相关适配器的代码片段。 1、解释执行切换到编译执行的例程 调用SharedRuntime::gen_i2c_adapter()函数生成解释执行切换到编译执行的例程,如下: 注意生成的汇编代码会以函数传入的实参的不同而不同,例如传入的实参是2时的汇编如下: 0x00007fffe110a1a0: mov (%rsp),

  • ContextAttribute与ContextBoundObject应用的探究2022-02-11 09:31:31

    这两天因开发的需要,需要分析和构建针对ContextAttribute极其ContextBoundContext相关的拦截器的内容,所以今天一上班就开发分析ContextAttribute与ContextBoundContext之间的应用关系,在查看了相关网友的资源后开始了我的分析之路。   首先:我建立了一个ContextAttribute的子类和一

  • Linux 查看运行中进程的 umask2022-02-10 17:34:46

    线上某台虚机因为故障重装了系统(基线 CentOS 6.9 内核 2.6.x),重新部署了应用。这个应用会生成一个文件,到NFS挂载目录。 而这个 NFS 挂载目录是一个 FTP 服务器的目录。另一台虚机登陆 FTP 服务下载该文件时,提示没有权限。 重装的系统由于等保三级的要求,umask=0077。这会导致应用生

  • CodeQL分析python代码6-分析python代码的数据流2022-02-10 15:02:35

    前言 我们已经学习了QL的基础语法,已经可以对问题进行简单的查询了。但对于某一种特定的语言,以我们现在的基础还是不能对其项目代码进行清晰描述。 比如,我们想要获取python编写的flaskweb应用中可能存在SSTI漏洞的点 from flask import Flask from flask import request from flask

  • rop emporium call me (x64)2022-02-10 12:31:01

    这道题惊喜点在于.so文件也可以拖到ida里逆向,服! 下面是题解过程: 左边发现奇怪的callme-one,two,three. 但是人家动态链接了,不知道内容是什么就无法利用,使用ida,把so文件拽里面 告诉我们,按这个参数就correctly了。 下面反倒过程平平无奇了 使用ROPgadget  找到三个参数的pop rdi

  • 如何自己实现bind方法2022-02-08 09:34:45

    由于在低版本浏览器没有js原生bind方法,所以要兼容低版本浏览器的话就要手动实现 了解bind函数 bind 强制将函数的执行环境绑定到目标作用域中去 与 call 和 apply 其实有点类似,但是不同点在于,bind 方法不会立即执行 “bind()方法创建一个新的函数,在bind()被调用时,这个新函数的th

  • call()、apply()、bind()2022-02-07 10:35:34

    call()、apply()、bind() var name='HJJ'; var obj = { name:"HHH", age:18, myFun:function(){ console.log(this) console.log(this.name+'年龄'+this.age); } } obj.myFun(); //HHH年龄18 ===>对象方法调用,this是该对象

  • bind和apply以及call函数使用2022-02-05 11:34:03

    这三个函数都是定义在函数原型对象上的方法,其主要的用途是改变this的指向,并且调用函数,但是bind会返回一个改变bind后的函数。下面我们将详细聊一下三个函数的作用,以及其内部实现。 一、call和apply (1)、传入参数不同 call函数可以传入的参数没有限制,第一个参数为this指向的

  • NASM 汇编学习62022-02-01 23:03:00

    slen: push ebx mov ebx, eax nextchar: cmp byte[eax], 0 jz finished inc eax jmp nextchar finished: sub eax,ebx pop ebx ret ;--------------------- ; void sprint(String message) ; String printing function sprint: push edx push ecx

  • java基础巩固-宇宙第一AiYWM:为了维持生计,多高(多线程与高并发)_Part3~整起(线程篇之唠唠启动线程的三种基本方式)2022-01-30 21:04:26

    首先,有比这三种方法更好的启动或者调用线程的方式。你想呀,如果每个打手各自为战,可能就会出现下面几个缺点: 首先,哪个消费者需要打手来看家护院帮自己闯关练级时,倘如每个人都得自己培养一个打手出来,给打手起名字,给买武器…麻烦成啥了 如果有个打手集团,咱们想要叫啥名字的、

  • vim中使用鼠标如何粘贴2022-01-29 20:34:50

    在vim中,一旦用 set mouse=a 后,会和xshell中右键粘贴命令冲突。 因此,使用快捷键 F11来进行 “set mouse=a” 和 "set mouse="的切换。 为了区分什么时候可粘贴,还设置了“set numbe”。一旦没有行号的时候,代表可粘贴 if has('mouse')

  • 使用gprof2dot和graphivz生成程序运行调用图2022-01-29 18:33:20

    使用gprof2dot和graphivz生成程序运行调用图 gprof2dot是一个将gprof生成的输出转换为dot脚本的工具。通过给定一个gprof的输出文件,将其转换为生成程序调用图的dot脚本。dot脚本可以生成图像来进行查看。 1、下载gprof2dot工具# gprof2dot工具由JoséFronseca维护,并托管在Google代

  • OkHttp4.9.3源码详解2022-01-28 19:03:24

    一.Dispatcher工作流程 1)OkHttp的基本使用 我们先从okHttp最基础的使用开始 private fun httpRequestWithManyRequests() { // 创建了一个okHttpClient对象 val okHttpClient = OkHttpClient.Builder().build() // 创建了一个请求 val request = Request.Builder

  • 15 Python 3 - Functions2022-01-27 20:33:23

      A function is a block of organized, reusable code that is used to perform a single, related action. Functions provide better modularity for your application and a high degree of code reusing. As you already know, Python gives you many built-in functions

  • 分布式锁之Redis实现2022-01-27 10:32:23

    一、分布式锁 分布式锁,是一种思想,它的实现方式有很多。比如,我们将沙滩当做分布式锁的组件,那么它看起来应该是这样的: 加锁 在沙滩上踩一脚,留下自己的脚印,就对应了加锁操作。其他进程或者线程,看到沙滩上已经有脚印,证明锁已被别人持有,则等待。 解锁 把脚印从沙滩上抹去,就是解锁的过

  • call-apply-bind2022-01-25 21:05:09

    Function.prototype.myCall = function(ctx){ if(typeof this !== 'function'){ throw new TypeError('myCall只能由函数调用') } ctx = ctx || window let args = [...arguments].slice(1) let rst = null ctx.fn = this

  • js 实现call2022-01-25 13:02:29

    手写call /** * 实现call * @param {*} context * fn.call(target,...args) * 让fn中的this指向target * 思路是函数默认指向调用者,在目标对象上挂载fn,执行的时候fn中的this默认指向目标对象, 执行完拿到结果并删除这个挂载属性即可 */ Function.prototype._call = function

  • uniapp与原生交互2022-01-21 15:34:52

    1.项目中引入 DSBridge.js 文件 var bridge = { default: this, call: function(b, a, c) { var e = ""; "function" == typeof a && (c = a, a = {}); a = { data: void 0 === a ? null : a };

  • Retrofit源码解析2022-01-21 14:00:56

    本文分析的源码基于retrofit:2.9.0。 前言 Retrofit基于OkHttp,网络请求的工作本质上是 OkHttp 完成,而 Retrofit 仅负责 网络请求接口的封装,它们的关系示意图如下: 基本使用 首先添加依赖 // Retrofit implementation 'com.squareup.retrofit2:retrofit:2.9.0' // Re

  • MySql根据联合唯一索引保存或更新(replace into)2022-01-21 01:01:10

    MySql根据联合唯一索引保存或更新(replace into) sql语句 联合唯一索引 sale_id, day UNIQUE --根据联合唯一索引保存或更新REPLACE INTO sale_call_stat_log (sale_id,day,call_length,call_size) VALUES (#{item.saleId},#{item.day},#{item.callLength},#{item.callSize}) ps.

  • 【Redisson】二.可重入锁-lua脚本加锁逻辑源码2022-01-20 18:01:36

    前言   主要介绍Redisson可重入锁,通过lua脚本加锁的逻辑源码 目标代码 //通过getLock获取RLock对象,进行加锁 RLock lock = redissonClient.getLock("serviceKey"); lock.lock(); //getLock源码 @Override public RLock getLock(String name) {   return new RedissonLock(con

  • Camunda 调用外部子流程(Call Activity)示例2022-01-19 10:03:06

    Camunda子流程有两种实现方式:嵌套子流程(Embedded Subprocess)和外部子流程(Call Activity)。以下介绍Camunda外部子流程(Call Activity)的实现方式,通过示例介绍主流程如何发起子流程,主子流程间变量如何传递。 一、什么是调用子流程 BPMN 2.0区分了嵌入式子流程(Embedded Subprocess)和

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有