JavaScript函数、对象和事件
1. 函数
JavaScript 函数通过 function 关键词进行定义,其后是函数名和括号 ()。
函数名可包含字母、数字、下划线和美元符号(规则与变量名相同)。
圆括号可包括由逗号分隔的参数,由函数执行的代码被放置在花括号 {} 中:
123function name(参数 1, 参数 2, 参数 3) { 要执行的代码}
当 JavaScript 到达 return 语句,函数将停止执行。
不使用 () 访问函数将返回函数声明而不是函数结果。name 引用的是函数对象,而 name() 引用的是函数结果。可以将函数对象赋值给变量(变量的值是函数定义)。
1234function toCelsius(fahrenheit) { return (5/9) * (fahrenheit-32);} var x = toCelsius; // function toCelsius(fahrenheit) { return (5/9) * (fahrenheit-32); }
2. 对象
Java ...
JavaScript字符串
1. 概述
JavaScript 字符串是引号(单引号或双引号)中的零个或多个字符,用于存储和操作文本。
对于特殊字符:'、"、\ 使用时需要前置转义字符 \ 来使用。
123\'\"\\
在字符串中换行,通过一个反斜杠即可。
【注】\ 方法并不是 ECMAScript (JavaScript) 标准,某些浏览器也不允许 \ 字符之后的空格,对长字符串换行的最安全做法(但是有点慢)是使用字符串加法。
字符串可以是对象,但最好不要把字符串创建为对象,它会拖慢执行速度。
12var firstName = "Bill" // 字面方式var firstName = new String("Bill") // 对象方式
当使用 == 相等运算符时,相等字符串是相等的。
当使用 === 运算符时,相等字符串是不相等的,因为 === 运算符需要类型和值同时相等。
更糟的是两个对象是无法比较的。
2. 属性
length :内建属性 length 可返回字符串的长度,您不能通过反 ...
JavaScript数值
1. 概述
JavaScript 只有一种数值类型,书写数值时带不带小数点均可。超大或超小的数可通过科学计数法来写。
JavaScript 数值始终是 64 位的浮点数。此格式用 64 位存储数值,其中 0 到 51 存储数字(片段),52 到 62 存储指数,63 位存储符号:
值
指数
符号
52 bits(0 - 51)
11 bits (52 - 62)
1 bit (63)
精度:整数(不使用指数或科学计数法)会被精确到 15 位。
NaN(非数值):NaN 属于 JavaScript 保留词,指示某个数不是合法数。尝试用一个非数字字符串进行除法会得到 NaN(Not a Number)。
可使用全局 JavaScript 函数 isNaN() 来确定某个值是否是数。
如果您在数学运算中使用了 NaN,则结果也将是 NaN。
NaN 是数,typeof NaN 返回 number。
Infinity :Infinity (或 -Infinity)是 JavaScript 在计算数时超出最大可能数范围时返回的值。
除以 0(零 ...
JavaScript数组
1. 概述
数组是一种特殊类型的对象。在 JavaScript 中对数组使用 typeof 运算符会返回 “object”。
数组元素可以通过下表访问(非键值对数组),也可以通过键访问(键值对数组)。
JavaScript 变量可以是对象。数组是特殊类型的对象。可以在相同数组中存放不同类型的变量:对象、函数、数组等……
1.1 创建数组
语法:
12var array-name = [item1, item2, ...];var cars = new Array("Saab", "Volvo", "BMW");
1.2 访问数组元素
通过引用索引号(下标号)来引用某个数组元素。
1.3 添加数组元素
向数组添加新元素的最佳方法是使用 push() 方法。
也可以使用下标直接向数组添加新元素(若添加索引高出数组当前长度范围,则会在数组中未赋值的下标位置创建未定义的“洞”):
12var fruits = ["Banana", "Orange", "Apple&qu ...
卡迈克尔函数
1. 定义
卡迈克尔函数定义为:当 nnn 为 1、2、4、奇质数的次幂、奇质数的次幂的两倍时为欧拉函数,当 nnn 为 2、4 以外的 2 的次幂时为欧拉函数的一半。
λ(n)={ϕ(n) n=1,2,3,4,5,6,7,9,10,⋯12ϕ(n) n=8,16,32,64,128,256,⋯\begin{array}{c}
\lambda(n) = \left\{
\begin{aligned}
\phi(n) \,\, & \,\, n = 1,2,3,4,5,6,7,9,10,\cdots \\
{1 \over 2}\phi(n) \,\, & \,\, n = 8,16,32,64,128,256,\cdots
\end{aligned}
\right.
\end{array}
λ(n)=⎩⎨⎧ϕ(n)21ϕ(n)n=1,2,3,4,5,6,7,9,10,⋯n=8,16,32,64,128,256,⋯
2. 性质
对于任意整数 nnn,由算数基本定理(整数唯一分解定理):n=p1a1p2a ...
费马小定理
1. 定义
假如 a{\displaystyle a}a 是一个整数,p{\displaystyle p}p是一个质数,那么 ap−a{\displaystyle a^{p}-a}ap−a 是 ppp 的倍数,可以表示为
ap≡a (mod p)\begin{array}{c}
a^p \equiv a \,\, (mod \,\, p)
\end{array}
ap≡a(modp)
如果 aaa 不是 ppp 的倍数,这个定理也可以写成
ap−1≡1 (mod p)\begin{array}{c}
a^{p-1} \equiv 1 \,\, (mod \,\, p)
\end{array}
ap−1≡1(modp)
2. 证明
对于 a=0a = 0a=0 的情况,定义中的第一个等式显然成立。
对于 a≠0a \ne 0a=0 的情况,则 (a,p)=1(a,p) = 1(a,p)=1。此时模 ppp 的所有非零的余数,在同于意义下对乘法构成一个群,此群的阶是 p−1p-1p−1。根据群论中的拉格朗日定理,对于该群中的 ∀x\forall x∀x,都有 xxx 的阶必 ...
HTML标签参考手册
HTML Basic Document
12345678<html> <head> <title>Document name goes here</title> </head> <body> Visible text goes here </body></html>
Text Elements
1234<p>This is a paragraph</p><br> (line break)<hr> (horizontal rule)<pre>This text is preformatted</pre>
Logical Styles
123<em>This text is emphasized</em><strong>This text is strong</strong><code>This is some c ...
Mint19.1配置TeXLive+TeXStudio的LaTeX环境
1. 安装
执行以下代码,安装 TeXLive+TeXStudio 环境,使用 XeTeX 作为 LaTeX 的编译引擎:
123sudo apt install texlive-fullsudo apt install texlive-xetexsudo apt install texstudio
由于这里使用 XeTeX 作为 LaTeX 的编译引擎,故安装好 TeXStudio 后,需要将默认编译器配置成 XeLaTeX:【选项(options)】-> 【配置TeXStudio(configure TeXStudio)】
然后就可以使用 TeXStudio 开启 LaTeX 的排版之旅了~ :smile:
2. 管理
TeXLive 提供了 TeX 宏包管理器 tlmgr,可以用来安装、删除、更新宏包,具体使用参见:
1tlmgr --help
3. 文档
【注】使用LaTeX写作过程中,若想查看某一宏包(XXX)的官方手册,可以在终端使用 texdoc 命令:
1texdoc XXX
面向服务的架构和WebService
1. 面向服务的架构 SOA
1.1 简介
SOA 是从架构方面,整体支持面向服务泛型的基本概念性架构模型
SOA 是一种业务-IT结合的方法。其中,应用依赖于现有的服务来实现业务过程。
实现 SOA 主要包括:
面向服务的企业
采用服务开发应用
采用服务对应用进行封装,以便今后复用
⋯\cdots⋯
1.2 模型
传统服务架构模型
传统服务架构模型中,服务请求者和服务调用者之间是紧密耦合的关系。
SOA 三角操作模型
SOA 模型最大程度解耦合服务请求者和服务提供者。
服务提供者将服务发布到服务注册者那里
服务请求者到服务注册者那里查询所需服务
服务注册者找到最适合服务请求者的服务返回给服务请求者,服务请求者根据返回信息去进行服务的调用
1.3 SOA 的优点
从 IT 角度出发
松耦合,消除假依赖(复用)
语言、平台和厂商中立
消除时间依赖
消除访问地址依赖
消除访问协议依赖
服务间接寻址(灵活)
从业务角度出发
保护企业投资,提升现有 IT 资源的作用,促进 IT 资源的复用
提高企业灵敏度
支持企业外包管理模式
...
Manjaro20.0无法使用深度截屏问题
1. 问题
Deepin 的截屏工具目前是我在 Linux 见到过最好用的截屏工具,所以上手 Manjaro 20.0 后就安装了深度的截屏工具 deepin-screenshot(目前深度截屏工具已经合并到深度录屏软件 deepin-screen-recorder 中,原有 deepin-screenshot 已不再维护)。但装完 deepin-scrennshot 和 deepin-screen-recorder,截屏后粘贴到 WPS 里竟然没有图片,只有一串上次复制的文字内容。
2. 解决
仔细一查,发现是因为 Manjaro 20.0 下默认的剪贴板工具 klipper 造成的,需要进入 klipper 配置中将「忽略图像」选项去掉,否则默认忽略剪贴板内的图像内容。
或者可以安装 gpaste 工具。gpaste 是一款基于 gnome-shell 原生的剪贴板管理系统工具(功能类似 klipper),默认图像支持,能够跟踪你正在复制和粘贴的内容,从而能够访问以前复制的项目。
1sudo pacman -S gpaste
操作系统级防护方法
1. 操作系统安全问题
1.1 计算机感染恶意软件或被入侵
运行了恶意代码(email 附件, 下载并执行了 trojan 木马, 运行了受感染的硬盘)
运行了有 bug 的 daemon 程序(ftpd, httpd)
运行了有 bug 的客户端程序(web 浏览器, mail 客户端)
读取了有病毒和 bug 的文件
配置错误(弱口令,guest 帐户,DEBUG options,不正确的访问控制配置,etc)
1.2 原因
软件有漏洞(内存错误:缓冲区溢出、栈溢出、……)
漏洞会被利用
尽管有多层防御机制,但也会遭到破坏(没有一个安全机制是坚不可摧的)
安全问题的发生多是因为访问控制不当
1.3 UNIX 访问控制的一些问题
设计系统时仅考虑单机上的用户共享系统, 未考虑网络攻击和软件 bug
粗粒度:访问控制时取决于 user id;但该一个 user 可能运行多个程序(一些程序是不可信的),这些程序以同样的权限运行,如果每个程序拥有各自有限的权限会提高安全性
root 功能太强大
1.4 解决方法
虚拟化限制
限制进程在有限空间内,不影响其它进程
三种虚拟 ...
Manjaro20.0下Deepin-WeChat无法启动原因
1. 问题
最近在 Manjaro 20.0 上安装了 Deepin-WeChat:
1yay -S deepin-wine-wechat
刚开始启动的时候会要求配置安装路径,成功安装完后直接扫码可以启动,但一旦退出之后就无法再次启动,直接双击菜单下的 WeChat 项或运行 /opt/deepinwine/apps/Deepin-WeChat/run.sh 都无法启动。
2. 解决
通过在 /opt/deepinwine/apps/Deepin-WeChat/run.sh 中添加调试信息,然后运行,最终找到问题所在:在 /opt/deepinwine/apps/Deepin-WeChat/run.sh 文件中的 CallApp() 函数内,环境变量 WINEPREFIX 环境变量有问题:
1env WINEPREFIX="$WINEPREFIX" WINEDEBUG=-msvcrt $WINE_CMD "c:\\Program Files\\Tencent\\WeChat\\WeChat.exe"
这里的 "c:\\Program F ...