mysql> USE xmodulo_DB;
mysql> INSERT INTO posts_tbl (content, author_FirstName, author_Las tName)
VALUES ('Hi! This is some dummy text.', 'Gabriel', 'Canepa');
var keySize = 1024; //加密强度
var crypt = new JSEncrypt({default_key_size: keySize}); //RSA 操作对象
//方法1 (async)
crypt.getKey(function () {
crypt.getPrivateKey();
crypt.getPublicKey();
});
//方法2:
crypt.getKey();
crypt.getPrivateKey();
crypt.getPublicKey();
客户端加密场景:
var crypt1 = new JSEncrypt(); //新建rsa对象
var publickey = '
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3N8LJFqlsa6loCgFpgZVMr/Sx
DMQY7pr0euNQfh2g+UVPbB0MGhoc7nWL0FQhCgDedbjQw/nGFStFx7W1+0o1oRTY
u5ebNVivZSobraUv7LJvwT8O66Zs8cxbKLqQ/nE/WwJvXomSIckH6R8iOUO8/QT9
kv6/L0Uma3qA07pmDQIDAQAB
-----END PUBLIC KEY-----
';
crypt1.setPublicKey(publickey );//添加来自服务端的publickey
crypt1.encrypt('abc'); //返回值为加密后的结果
sdata =[
{
"_id": "542f9ac2359c7d881bc0298e",
"index": 0,
"guid": "db1dacc1-b870-4e3c-bc1a-80dfd9506610",
"isActive": false,
"balance": "$1,570.15",
"picture": "http://placehold.it/32x32",
"age": 36,
"eyeColor": "blue",
"name": "Effie Barr",
"gender": "female",
"company": "ZORK",
"email": "effiebarr@zork.com",
"phone": "+1 (802) 574-3379",
"address": "951 Cortelyou Road, Wikieup, Colorado, 4694",
"about": "Sunt reprehenderit do laboris velit qui elit duis velit qui. Nostrud sit eiusmod cillum exercitation veniam ad sint irure cupidatat sunt consectetur magna. Amet nisi velit laboris amet officia et velit nisi nostrud ipsum. Cupidatat et fugiat esse minim occaecat cillum enim exercitation laboris velit nisi est enim aute. Enim do pariaturrn",
"registered": "2014-05-08T15:26:35 -08:00",
"latitude": 48.576424,
"longitude": 146.634137,
"tags": [
"esse",
"proident",
"quis",
"consectetur",
"magna",
"tempor",
"anim"
],
"friends": [
{
"id": 0,
"name": "Trisha Cannon"
},
{
"id": 1,
"name": "Todd Bullock"
},
{
"id": 2,
"name": "Eileen Drake"
},
{
"id": 3,
"name": "Ferrell Kelly"
},
{
"id": 4,
"name": "Fischer Blankenship"
},
{
"id": 5,
"name": "Morales Mann"
},
{
"id": 6,
"name": "Brandie Pittman"
},
{
"id": 7,
"name": "Virgie Kerr"
}
],
"greeting": "Hello, Effie Barr! You have 1 unread messages.",
"favoriteFruit": "apple"
},
{
"_id": "542f9ac21c260d03e763a4f2",
"index": 1,
"guid": "9e3a3d8a-26f8-46b7-aca0-336a194808b1",
"isActive": true,
"balance": "$3,617.89",
"picture": "http://placehold.it/32x32",
"age": 31,
"eyeColor": "brown",
"name": "Butler Best",
"gender": "male",
"company": "SPORTAN",
"email": "butlerbest@sportan.com",
"phone": "+1 (905) 428-3046",
"address": "798 Joval Court, Wanship, Delaware, 8974",
"about": "Nostrud occaecat id sunt pariatur ad nisi do veniam sit officia non consequat amet fugiat. Est eiusmod labore ut cillum qui eu elit ut eiusmod exercitation. Ut anim nostrud eiusmod voluptate tempor proident id do pariatur. In Lorem ullamco ea irure adipisicing. Quis est dolor ex commodo aliqua nisi elit sit elit anim fugiat sunt amet. Enim consequat ipsum occaecat ipsum tempor deserunt dolor veniam nostrud. Anim cillum ullamco cupidatat aute velit fugiat sit enim in amet anim mollit dolor eiusmod.rn",
"registered": "2014-08-02T06:15:44 -08:00",
"latitude": -20.529765,
"longitude": 2.396578,
"tags": [
"consequat",
"enim",
"magna",
"sunt",
"Lorem",
"quis",
"commodo"
],
"friends": [
{
"id": 0,
"name": "Kenya Rice"
},
{
"id": 1,
"name": "Hale Knowles"
},
{
"id": 2,
"name": "Michael Stephens"
},
{
"id": 3,
"name": "Holder Bailey"
},
{
"id": 4,
"name": "Garner Luna"
},
{
"id": 5,
"name": "Alyce Sawyer"
},
{
"id": 6,
"name": "Rivas Owens"
},
{
"id": 7,
"name": "Jan Petersen"
}
],
"greeting": "Hello, Butler Best! You have 8 unread messages.",
"favoriteFruit": "banana"
}
]
表单json能达到这么长已经是很极端的情况了。因此这种方法绝对是够用的。
长表单内容加解密方法:
function encrypt_data(publickey,data)
{
if(data.length> 2691){return;} // length limit
var crypt = new JSEncrypt();
crypt.setPublicKey(publickey);
crypt_res = "";
for(var index=0; index < (data.length - data.length%117)/117+1 ; index++)
{
var subdata = data.substr(index * 117,117);
crypt_res += crypt.encrypt(subdata);
}
return crypt_res;
}
function decrypt_data(privatekey,data)
{
var crypt = new JSEncrypt();
crypt.setPrivateKey(privatekey);
datas=data.split('=');
var decrypt_res="";
datas.forEach(function(item)
{
if(item!=""){de_res += crypt.decrypt(item);}
});
return decrypt_res;
}
##########NextPage[title=]##########
PHP的RSA加密
php加密解密类
首先要检查phpinfo里面有没有openssl支持
class mycrypt {
public $pubkey;
public $privkey;
function __construct() {
$this->pubkey = file_get_contents('./public.key');
$this->privkey = file_get_contents('./private.key');
}
public function encrypt($data) {
if (openssl_public_encrypt($data, $encrypted, $this->pubkey))
$data = base64_encode($encrypted);
else
throw new Exception('Unable to encrypt data. Perhaps it is bigger than the key size?');
return $data;
}
public function decrypt($data) {
if (openssl_private_decrypt(base64_decode($data), $decrypted, $this->privkey))
$data = $decrypted;
else
$data = '';
return $data;
}
}
Krita 默认使用了暗色主题。我不太喜欢暗色主题,但幸运的是 Krita 还有其他很赞的主题,你可以在任何时候通过菜单里的“设置 > 主题”进行更改。
Krita 使用了窗口停靠样式的工具条。如果左右两侧面板的 Dock 工具条没有显示,检查一下“设置 > 显示工具条”选项,你也可以在“设置 > 工具条”中对工具条按你的偏好进行调整。不过隐藏的工具条也许会让你感到一些小小的不快,它们只会在一个狭小的压扁区域展开,你看不见其中的任何东西。你可以拖动它们至顶端或者 Krita 窗口的一侧,放大或者缩小它们,甚至你可以把它们拖到 Krita 外,放在你显示屏的任意位置。如果你把其中一个工具条拖到了另一个工具条上,它们会自动合并成一个工具条。
bup index /path/to/file
bup save -n nameofbackup /path/to/file
#Example
[techarena51@vps ~]$ bup index /var/www/html
Indexing: 7973, done (4398 paths/s).
bup: merging indexes (7980/7980), done.
[techarena51@vps ~]$ bup save -n techarena51 /var/www/html
Reading index: 28, done.
Saving: 100.00% (4/4k, 28/28 files), done.
bloom: adding 1 file (7 objects).
Receiving index from server: 1268/1268, done.
bloom: adding 1 file (7 objects).
“BUP save” 会把所有内容分块, 然后把它们作为对象储存. “-n” 选项指定备份名.
你可以查看备份列表和已备份文件.
[techarena51@vps ~]$ bup ls
local-etc techarena51 test
#Check for a list of backups available for my site
[techarena51@vps ~]$ bup ls techarena51
2014-09-24-064416 2014-09-24-071814 latest
#Check for the files available in these backups
[techarena51@vps ~]$ bup ls techarena51/2014-09-24-064416/var/www/html
apc.php techarena51.com wp-config-sample.php wp-load.php
[techarena51@vps ~]$bup restore -C ./backup techarena51/latest
#Restore an older version of the entire working dir elsewhere
[techarena51@vps ~]$bup restore -C /tmp/bup-out /testrepo/2013-09-29-195827
#Restore one individual file from an old backup
[techarena51@vps ~]$bup restore -C /tmp/bup-out /testrepo/2013-09-29-201328/root/testbup/binfile1.bin
唯一的缺点是你不能把文件恢复到另一个服务器, 你必须通过 SCP 或者 rsync 手动复制文件.
通过集成的 web 服务器查看备份.
bup web
#specific port
bup web :8181
你可以使用 shell 脚本来运行 bup, 并建立一个每日运行的定时任务.
#!/bin/bash
bup index /var/www/html
bup save -r user@remote-vps.com: -n techarena51 /var/www/html
无论何时要安装一款新的 Linux 发行系统,一般的建议都是让您通过有线连接来接到互联网的。这主要的原因有两条:第一,您的无线网卡也许安装的驱动不正确而不能用;第二,如果您是从命令行中来安装系统的,管理 WiFi 就非常可怕。我总是试图避免在命令行中处理 WiFi 。但 Linux 的世界,应具有无所畏惧的精神。如果您不知道怎样操作,您需要继续往下来学习之,这就是写这篇文章的唯一原因。所以我迫使自己学习如何在命令行中管理 WiFi 连接。
通过命令行来设置连接到 WiFi 当然有很多种方法,但在这篇文章里,同时也是一个建议,我使用最基本的方法:那就是使用在任何发布版本中都有的包含在“默认包”里的程序和工具。或者说我偏向于使用这一种方法。使用此方法显而易见的好处是这个操作过程能在任意有 Linux 系统的机器上复用。不好的一点是它相对来说比较复杂。
作为一名开发者,你不应该把时间花费在考虑如何去找你所要编辑的代码上。在我转移到完全使用 VIM 的过程中,感到最痛苦的就是它处理文件的方式。从之前主要使用 Eclipse 和 Sublime Text 过渡到 VIM,它没有捆绑一个常驻的文件系统查看器对我造成了不少阻碍,而其内建的打开和切换文件的方式总是让我泪流满面。
如果你想vim像Sublime Text 或者Atom一样,我就让你认清一下,这里有很好的机会让你看清一些难懂,可怕和低效的事情。例如大家会发出”当Sublime有了模糊查找功能,为什么我一定要输入全路径才能够打开文件” “没有侧边栏显示目录树我怎样查看项目结构” 等等。但vim有了解决方案。这些方案不需要破坏vim的核心。我只需要经常修改vim配置与添加一些最新的插件,这里有3个有用的插件可以让你像Sublime管理文件
CtrlP 是一个跟Sublime的”Go to Anything”栏一样模糊查找文件.它快如闪电并且非常可配置性。我使用它主要用来打开文件。我只需知道部分的文件名字不需要记住整个项目结构就可以查找了。
The NERDTree 这个一个文件管理夹插件,它重复了很多编辑器都有的侧边文件管理夹功能。我实际上很少用它,对于我而言模糊查找会更加快。对于你接手一个项目,尝试学习项目结构与了解什么可以用是非常方便的,NERDTree是可以自己定制配置,安装它能够代替vim内置的目录工具。
Ack.vim 是一个专为vim的代码搜索插件,它允许你跨项目搜索文本。它封装了Ack 或 Ag 这两个极其好用的搜索工具,允许你在任何时候在你项目之间快速搜索跳转。
[root@tecmint ~]# vmstat -a
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free inact active si so bi bo in cs us sy id wa st
1 0 0 810420 97380 70628 0 0 115 4 89 79 1 6 90 3 0
[tecmint@tecmint ~]$ vmstat -t 1 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ ---timestamp---
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 632028 24992 192244 0 0 70 5 55 78 1 3 95 1 0 2012-09-02 14:57:18 IST
1 0 0 632028 24992 192244 0 0 0 0 171 514 1 5 94 0 0 2012-09-02 14:57:19 IST
1 0 0 631904 24992 192244 0 0 0 0 195 600 0 5 95 0 0 2012-09-02 14:57:20 IST
0 0 0 631780 24992 192244 0 0 0 0 156 524 0 5 95 0 0 2012-09-02 14:57:21 IST
1 0 0 631656 24992 192244 0 0 0 0 189 592 0 5 95 0 0 2012-09-02 14:57:22 IST
4. 统计各种计数器
vmstat命令的-s参数,将输出各种事件计数器和内存的统计信息。
[tecmint@tecmint ~]$ vmstat -s
1030800 total memory
524656 used memory
277784 active memory
185920 inactive memory
506144 free memory
26864 buffer memory
310104 swap cache
2064376 total swap
0 used swap
2064376 free swap
4539 non-nice user cpu ticks
0 nice user cpu ticks
11569 system cpu ticks
329608 idle cpu ticks
5012 IO-wait cpu ticks
79 IRQ cpu ticks
74 softirq cpu ticks
0 stolen cpu ticks
336038 pages paged in
67945 pages paged out
0 pages swapped in
0 pages swapped out
258526 interrupts
392439 CPU context switches
1346574857 boot time
2309 forks
/dev/shm/是一个设备文件,它使用就是tmpfs文件系统(注意:在Centos和Redhat下,/dev/shm目录是一个链接,指向/run/shm目录,在Ubuntu系统下tmpfs文件系统对应的是/run/shm目录,可以使用df命令查看),因为 /dev/shm/这个目录不在硬盘上,而是在内存里,它就所谓的tmpfs。在Redhat/CentOS等linux发行版中默认大小为物理内存的一半。 比如我的的Red Hat Enterprise Linux Server 5.4 64(单核,512内存)分配内存为512M,所以/dev/shm为250M左右,查看/dev/shm如下: