技术文章

浅谈JavaScript闭包、this指针、作用域(一)

大城市里の小女人 提交于 2021-02-18 12:31:52
认识闭包: 闭包,是指 有权限访问到其他函数作用域的变量的函数 给一个例子: function outer () { var name = ' HelloTF ' ; return function () { console.log (name); } } var getName = outer(); getName(); // HelloTF 函数outer执行后返回一个内部的匿名函数,并把返回的结果赋值给全局变量result,在全局环境中在此执行result,得到了outer函数内部的变量name。 仅从闭包的定义来看并没有什么感觉,不妨从中摘出几个关键词,结合JavaScript的原理: 作用域,作用链,活动对象,变量对象 作用域 在ES6之前,JavaScript没有块级作用域,经常会遇到变量提升了或者使用闭包的时候出错的问题。ES6为了解决这些问题,添加了块级作用域,此处稍后再谈。ES5中它的作用域只有两个—— 全局作用域和函数作用域。 全局作用域,是在全局都可以访问的,对前端开发者而言,一般指window; 函数作用域,即仅在函数{}内的代码区域,在函数内部声明的变量,在函数外是不可访问的。 这样就可以保证函数和变量的有序访问。在上述例子中,函数内部的name变量在函数体外无法直接访问,若我们必须要访问name,就得使用闭包,即返回一个匿名函数,输出name。

Java并发编程:Lock

风流意气都作罢 提交于 2021-02-18 12:31:33
Java并发编程:Lock   在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。   也许有朋友会问,既然都可以通过synchronized来实现同步访问了,那么为什么还需要提供Lock?这个问题将在下面进行阐述。本文先从synchronized的缺陷讲起,然后再讲述java.util.concurrent.locks包下常用的有哪些类和接口,最后讨论以下一些关于锁的概念方面的东西   以下是本文目录大纲:   一.synchronized的缺陷   二.java.util.concurrent.locks包下常用的类   三.锁的相关概念介绍   若有不正之处请多多谅解,并欢迎批评指正。   请尊重作者劳动成果,转载请标明原文链接:   http://www.cnblogs.com/dolphin0520/p/3923167.html 一.synchronized的缺陷   synchronized是java中的一个关键字,也就是说是Java语言内置的特性。那么为什么会出现Lock呢?   在上面一篇文章中,我们了解到如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁

CDH 大数据平台搭建

我与影子孤独终老i 提交于 2021-02-18 12:31:12
一、概述 Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称“CDH”),基于Web的用户界面,支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop,简化了大数据平台的安装、使用难度。 二、安装部署 | 序号 | IP地址 | 主机名 |系统版本| | -------- | -------- | -------- | | 1 | 172.20.2.222 | cm-server |centos7.3 | 2 | 172.20.2.203 | hadoop-1 |centos7.3 | 3 | 172.20.2.204 | hadoop-2 |centos7.3 | 4 | 172.20.2.205 | hadoop-3 |centos7.3 2.2.1 基础环境部署 a.修改主机名配置hosts systemctl stop firewalld hostnamectl set-hostname cm-server #更改个主机名 sed -i 's/SELINUX=enforcing/SELINUX=disable/g' /etc/selinux/config setenforce 0 cat >>/etc/hosts<<EOF

QT编译错误:Project ERROR: This example requires Qt to be configured with -opengl desktop

有些话、适合烂在心里 提交于 2021-02-18 12:30:48
学习QT场景视图,对一个Boxes的例子比较感兴趣,于是去编译学习,结果编译不能通过(使用的是QT5.12): Project ERROR: This example requires Qt to be configured with -opengl desktop 我尝试在*.pro文件中加入 -opengl desktop,不管用! 在知乎上 查到 : “-opengl desktop”只是一个configure的选项,编译Qt库时设置的。 或者你说像5.4预编译的qt-opensource-windows-x86-msvc2013_opengl-5.4.2.exe?5.5中默认使用了“-opengl dynamic”了。 看来只能重新编译一遍QT的源代码来获得了~(对此我后来进行了尝试: https://www.cnblogs.com/MakeView660/p/10416924.html ) 编译QT源码配置关于OpenGL的支持选项说明如下(QT5.12版本 configure -h截图):Linux环境默认是支持 -opengl desktop的 回到家,我又重新安装了QT4.8.6以及QT Creater4.2.2,这下就可以查看Boxes例子了,直接编译成功! 来源: oschina 链接: https://my.oschina.net/u/4277132/blog

Vulkan(1)用apispec生成Vulkan库

假装没事ソ 提交于 2021-02-18 12:30:12
Vulkan(1)用apispec生成Vulkan库 我的Vulkan.net库已在( https://github.com/bitzhuwei/Vulkan.net )开源,欢迎交流。 apispec.html 在Vulkan SDK的安装文件夹里,有一个Documentation\ apispec.html 文件。这是一个由代码 生成 的对Vulkan API的说明。它包含了Vulkan API的枚举类型、结构体、函数声明以及这一切的详细 注释 。 由于它是自动生成的,所以其格式非常规则。只需将少数几处<br>改为<br />,几处<col .. >改为<col .. />,就可以直接用 XElement 来加载和解析它。 由于它包含了每个枚举类型及其成员的注释,包含了每个结构体及其成员的注释,包含了每个函数声明及其参数的注释,我就想,如果我能将它转换为C#代码,那会是多么美妙的一个Vulkan库啊! 我在网上找到的几个Vulkan库,基本上都没有什么注释,这让我使用起来很不方便,严重妨碍了学习速度。很多结构体的成员类型都是粗糙的 IntPtr ,而不是具体类型的指针,这也使得用起来很麻烦。 那么就动手做自己的Vulkan库吧! 分类 首先,要将巨大的apispec.html文件里的内容分为几个类别,即C宏定义、Command(函数声明)、Enum、Extension、Flag

[Python]小甲鱼Python视频第034课(with else)课后题及参考解答

非 Y 不嫁゛ 提交于 2021-02-18 12:29:47
# -*- coding: utf-8 -*- """ Created on Sun Feb 24 13:36:33 2019 @author: fengs """ """ 0. 在 Python 中,else 语句能跟哪些语句进行搭配? if while with except """ """ 1. 请问以下例子中,循环中的 break 语句会跳过 else 语句吗? def showMaxFactor(num): count = num // 2 while count > 1: if num % count == 0: print('%d最大的约数是%d' % (num, count)) break count -= 1 else: print('%d是素数!' % num) num = int(input('请输入一个数:')) showMaxFactor(num) 会跳过 """ """ 2. 请目测以下代码会打印什么内容? try: print('ABC') except: print('DEF') else: print('GHI') finally: print('JKL') ABC GHI JKL """ """ 3. 使用什么语句可以使你不比再担心文件打开后却忘了关闭的尴尬? with open as f: .... #f.close(); #不要写

【bzoj2121】字符串游戏 区间dp

元气小坏坏 提交于 2021-02-18 12:29:37
题目描述 给你一个字符串L和一个字符串集合S,如果S的某个子串在S集合中,那么可以将其删去,剩余的部分拼到一起成为新的L串。问:最后剩下的串长度的最小值。 输入 输入的第一行包含一个字符串,表示L。 第二行包含一个数字n,表示集合S中元素个数。 以下n行,每行一个字符串,表示S中的一个元素。 输入字符串都只包含小写字母。 输出 输出一个整数,表示L的最短长度。 样例输入 aaabccd 3 ac abc aaa 样例输出 2 题解 我们考虑:每次删除连续的一段,对应到原串上即:删除 $[l,r]$ 中所有未被删除的字符。其中 $l,r$ 都未被删除。 这样就相当于选择若干区间来删除。 注意到选择的任意两个区间要么包含要么不相交(相离),对于相邻的相离的也可以看作是包含(右区间左端点看作是左区间左端点,即一个空位置),因此只有包含关系。 那么如下图: 先选择 $[b,c]$ 的串 $S$ ,再选择 $[a,d]$ 的串 $T$ ,可以看作是处理出 $[a,b)$ 能够匹配到 $T$ 的中间位置,$[b,c]$ 能够匹配到 $S$ 的结束位置(即删除掉),进而推知 $[a,c]$ 能够匹配到 $T$ 的中间位置,再向右匹配得知 $[a,d]$ 能够匹配到 $T$ 的结束位置。 考虑区间dp。设 $f[l][r]$ 表示 $[l,r]$ 是否可以全部删掉,再设 $g[l][r][i][j

Spring Boot与Spring Session集成

本小妞迷上赌 提交于 2021-02-18 12:29:28
1. 参考资料 https://docs.spring.io/spring-session/docs/current/reference/html5/guides/boot-redis.html https://docs.spring.io/spring-boot/docs/2.0.2.RELEASE/reference/htmlsingle/#boot-features-session 2. 环境 Java: jdk1.8.0_144 Spring Boot: 2.0.1.RELEASE 3. 配置 本文前提是已使用Spring Boot搭建了一个Web应用,在此基础上集成Spring Session以使用Redis管理该应用的session 引入依赖包 <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency> Spring Session配置 spring.session.store-type=redis

Unity编辑器的扩展:IMGUI

僤鯓⒐⒋嵵緔 提交于 2021-02-18 12:29:04
IMGUI 介绍 所有关于 Editor 的相关 UI,包括 Inspector、Hierarchy、Window、Game 视图上动态创建的那些半透明 UI、还有 Scene 视图上可添加的辅助显示 UI,叫做 IMGUI,全称 Immediate Mode GUI 。该名字来源于两类型的 UI 系统: immediate 和 retained 。 retained:当你设置好各种组件如 Text、Button 等的信息,或修改它们的相关属性后,这些组件的相关信息和改动就被保存(retained)下来了,系统会根据这些新的信息来绘制响应事件等,你可以随时去查询如 Text 文本内容或颜色等信息。UGUI 即是典型的 retained mode GUI。 immediate:跟上面的相反,系统不会自动保存 UI 控件上的各种信息,不会用上次的状态继续工作,而是反复的询问你这些控件应当是处于什么位置什么文本等状态信息。因此任何的用户交互结果是立即呈现返回给用户,而不是当用户需要的时候自行查询。如: 1 bool selected = false ; 2 void OnGUI() 3 { 4 selected = GUILayout.Toggle(selected, " A Toggle text " ); 5 if (selected) 6 { 7 DoSomething() 8 }

如何在CentOS 7上修改主机名

江枫思渺然 提交于 2021-02-18 12:22:05
在CentOS中,有三种定义的主机名:静态的(static),瞬态的(transient),和灵活的(pretty)。“静态”主机名也称为内核主 机名,是系统在启动时从/etc/hostname自动初始化的主机名。“瞬态”主机名是在系统运行时临时分配的主机名,例如,通过DHCP或mDNS服 务器分配。静态主机名和瞬态主机名都遵从作为互联网域名同样的字符限制规则。而另一方面,“灵活”主机名则允许使用自由形式(包括特殊/空白字符)的主机 名,以展示给终端用户(如Linuxidc)。 在CentOS 7中,有个叫hostnamectl的命令行工具,它允许你查看或修改与主机名相关的配置。 1.要查看主机名相关的设置: # hostnamectl Static hostname: localhost.localdomain Icon name: computer Chassis: n/a Machine ID: 80a4fa4970614cf6be9597ecd6f097a9 Boot ID: 28420e272e1847a583718262758bd0f7 Virtualization: vmware Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10