Javascript 数组操作

一 数组转换为字符串

var w = ['a', 'b', 'c'];
w.toString(); // "a,b,c"
w.join(''); // "abc"
w.join('-'); // "a-b-c"

二 数组添加元素

var w = ['a'];
w.push('b'); // w: ["a", "b"]
w.unshift('c'); // w: ["c", "a", "b"]

三 数组删除元素

var w = ['a', 'b', 'c'];
w.pop(); // c
// w: ['a', 'b'];
w.shift(); // a
// w: ['b'];
delete w[0]

四 合并数组

var w1 = ['a'];
var w2 = ['b'];
var w = w1.concat(w2); // ["a", "b"]

五 查找数组元素

var w = ['a', 'b', 'c'];
w.indexOf('b'); // 1
w.includes('c'); // true
w.find(function(v, i, a) {
    if (v === 'b') {
    // do something
    }
}); // 'b'
w.findIndex(function(v, i, a) {
    if (v === 'b') {
    // do something
    }
}); // 1
w.forEach(function(v, i) { 
    if (v === 'b') { 
    // do something
    }
});

六 反转数组元素

var w = ['a', 'b', 'c'];
w.reverse(); // ["c", "b", "a"]

七 数组切片

var w = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
w.slice(2, 4); // ["c", "d"]

八 数组元素排序

var w = [4, 'e', 'z', 2, 'a', 'q', 9];
w.sort(); // [2, 4, 9, "a", "e", "q", "z"]
var w = [4, 7, 3, 2, 5, 8, 9];
w.sort(function(a, b) {
    return a - b;
}); // [2, 3, 4, 5, 7, 8, 9]

九 数组筛选

var w = [4, 'e', 'z', 2, 'a', 'q', 9];
var _w = w.filter(function(i) { return i > 0; }); // [4, 2, 9]

Javascript 字符串操作

一 字符串转换

// int to string
var n = 1; 
n.toString();
String(n);
'' + n
// string to int
var s = '123a';
Number(s);
parseInt(s); // 123 十进制
parseInt(s, 16); // 4666 十六进制
parseFloat(s); // 123
s = '123'; s - 0;

二 字符串分割

var s = 'abcdef-123456';
s.split('-'); // ['abcdef', '123456']
s.split('-', 1); // ['abcdef']

三 字符串查找

var s = 'abcdef';
s.indexOf('e'); // 4
s.lastIndexOf('e'); // 4
s.charAt(4); // e

四 字符串替换

var s = 'abcabc';
s.replace('a', '1'); // "1bcabc"
s.replace(/a/g, '1'); // "1bc1bc"

五 字符串匹配

var s = 'abcdef-123456';
s.match('ef'); // ["ef", index: 4, input: "abcdef-123456", ...]
s.match(/\w+/); // ["abcdef", index: 0, input: "abcdef-123456", ...]
s.match(/\w+/g); // ["abcdef", "123456"]
s.search(/\d+/); // 7

var reg = /\w+/;
reg.exec(s); // ["abcdef", index: 0, input: "abcdef-123456", ...]

六 字符串切割

var s = 'abcdef-123456';
s.substr(1, 4); // "bcde"
s.substring(1, 4); // "bcd"
s.slice(-3, -1); // "45"

七 大小写转换

var s = 'abcDEF-123456';
s.toLowerCase(); // "abcdef-123456"
s.toUpperCase(); // "ABCDEF-123456"

八 去除空格

var s = '  abc  ';
s.trim(); // "abc"

九 附录:字符串对象的所有方法

length
anchor()
big()
blink()
bold()
charAt()
charCodeAt()
concat()
constructor()
endsWith()
fixed()
fontcolor()
fontsize()
includes()
indexOf()
italics()
lastIndexOf()
link()
match()
matchAll()
normalize()
padEnd()
padStart()
repeat()
replace()
search()
slice()
small()
split()
startsWith()
strike()
sub()
substr()
substring()
sup()
toLocaleLowerCase()
toLocaleUpperCase()
toLowerCase()
toString()
toUpperCase()
trim()
trimEnd()
trimLeft()
trimRight()
trimStart()
valueOf()
hasOwnProperty()
isPrototypeOf()

安装electron开发环境

第一步:安装 cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org

第二步:安装 electron 模块

cnpm install -g electron

第三步:安装

cnpm install -g electron-packager

第四步:打包

electron-packager . appName --platform=win32 --arch=x64 --electron-version=2.0.7

 

krpano解密tour.xml文件

krpano是一个很出名的全景图展示框架,他的配置文件 tour.xml 可被加密,加密后的文件是 `<encrypted><![CDATA[KENCPUZR****]]></encrypted>` 格式的,下面的方法可以解密这种加密文件

第一步:打断点

1. 用谷歌浏览器打开360全景页面
2. 按下 F12 打开开发者工具
3. 切换到 Sources 标签页,按下 F5 刷新页面
4. 在左边栏用鼠标点击 tour.js 然后点击右边窗口底部的一对大括号图标(Pretty print)显示格式化后的源代码
5. 在右边窗口内点击,按下 Ctrl + F 打开搜索框,搜索 eval
6. 找到 eval (437行附近)点击行号添加断点
7. 搜索 return d 添加断点
8. 按下 F5 刷新页面

第二步:获取解密后的源码

1. 点击执行断点按钮(Resume script execution)一次
2. 按下 F11 三次
3. 点击 Pretty print 格式化代码
4. 搜索 KENC (2228行附近)添加断点
5. 在 KENC 所在的函数结尾 } 的上一行添加断点(return n 所在的行)
6. 在右边工具栏 Watch 处添加监控变量 n
7. 点击执行断点按钮一次,在 Watch 处看到 n 的值变成了 “<krpano version” 开头
8. 切换到 control 标签页,输入命令 console.log(n)
9. 点击代码最后的 Copy 按钮,就可以得到解密后的源代码了

谷歌浏览器以应用模式启动

start "" "chrome.exe" --kiosk --app="http://localhost/" --user-data-dir=C:\temp --disable-pinch --disable-translate --incognito --check-for-update-interval 86400000

参数说明:

–kiosk 以kiosk模式启动

–incognito 无痕模式

–check-for-update-interval 86400000  更新间隔时间修改为1000天

–disable-background-networking  禁止后台联网

–allow-outdated-plugins  允许过期的插件

搭建NFS服务器

搭建NFS服务器

一、安装

yum install -y nfs-utils rpcbind

二、启动

service rpcbind start
service nfs start

三、配置文件

echo '/www/temp 192.168.1.*(rw,sync)' > /etc/exports
exportfs -rv

四、客户端挂载

yum -y install nfs-utils
mount -t nfs 192.168.1.10:/www /www

C语言字符串操作

C语言字符串操作

一、字符串初始化

[c]
# include <stdio.h>
# include <string.h>

main(){
	char str1[4] = "abc";
	char str2[4] = {'a', 'b', 'c', '\0'};
	printf("%s\n%s\n", str1, str2);
}
[/c]

二、字符串赋值

[c]
# include <stdio.h>
# include <string.h>

main(){
	char str[4];
	strcpy(str, "abc");
	printf("%s\n", str);
}
[/c]

三、字符指针赋值

[c]
# include <stdio.h>
# include <string.h>

main(){
	char *str;
	str = "abc";
	printf("%s\n", str);
}
[/c]

四、连接字符串

[c]
#include <stdio.h>
#include <string.h>

int main ()
{
	// strcpy 覆盖原字符串头部
	// strcat 往字符串空白部分添加
    char str[80];
    strcpy(str, "these ");
    strcpy(str, "strings ");
    strcat(str, "are ");
    strcat(str, "concatenated.");
    printf("%s\n", str);
    return 0;
}
[/c]

五、分割字符串

[c]
#include <stdio.h>
#include <string.h>

main(){
	// strtok 第一个参数先是待分割字符串,然后是 NULL
    char s[] = "ab-cd : ef;gh :i-jkl;mnop;qrs-tu: vwx-y;z";
    char *delim = ":";
    char *p;
    printf("%s ", strtok(s, delim));
    while((p = strtok(NULL, delim)))
        printf("%s\n", p);
}
[/c]

六、字符串首次出现位置

[c]
#include<stdio.h>
#include<string.h>

int main(){
    char *str = "http://see.xidian.edu.cn/cpp/u/xitong/";
    char *substr = "see";
    char *s = strstr(str, substr);
    printf("%s\n", s);
    return 0;
}
[/c]

C语言守护进程


#include <stdlib.h>

void daemon_init(){
    int pid, i;

    if(pid = fork())
        exit(0);
    else if(pid < 0)
        exit(1);
    else
        setsid();

    if(pid = fork())
        exit(0);
    else if(pid < 0)
        exit(1);
    else
        chdir("/tmp");
        umask(0);

    for(i = 0; i < 64; i++){
        close(i);
    }

}

main(){
    daemon_init();
}

C语言分隔字符串

C语言分隔字符串

# include <stdio.h>
# include <string.h>

main(){

    char str[] = "now # is the time";
    char delims[] = " ";
    char *result = NULL;
    result = strtok( str, delims );
    while( result != NULL ) {
        printf( "result is \"%s\"\n", result );
        result = strtok( NULL, delims );
    }

}

C语言基本语法

C语言基本语法

1. 最简单的c语言程序


# include <stdio.h>

main(){
    printf("Hello world\n");
}

2. 变量

变量名:第一个字符必须是字母,之后只能是字母、数字或者下划线

类型:int float char short long double

变量使用之前需要先定义:(类型 变量名)

int low, ip, step;

3. 常量

#define STEP  10

const int STEP 10;

4. 算数运算符

包括:+ – * / %

5. 关系运算符和逻辑运算符

包括:> >= < <= == !=

6. 条件表达式

[c]
if(a > b)
    z = a;
else
    z = b;

z = (a > b) ? a : b;
[/c]

7. switch

[c]
switch(a){

case 1:
    z = 1;
    break;
case 2:
    z = 2;
    break;
default:
    z = 0;
    break;

}
[/c]

8. while

[c]while(表达式){语句;}[/c]

9. for

[c]for(i = 0; i > n; i++){  }[/c]

10. 函数

[c]
int sum(int a, int b){
    s = a + b;
    return (int) s;
}
[/c]

11. 数组

[c]

int a[10];     /* 说明整型数组a,有10个元素 */

char ch[20];    /* 说明字符数组ch,有20个元素 */

[/c]

12. 指针

取一个对象的地址

p = & c;

int *ip;    /* ip是指向int类型的指针 */

13. 指针和数组

[c]

int a[10];

int *pa;

pa = &a[0];

[/c]