背景:装个电脑Wifi的驱动,发现提示TP-LINK无线网卡老提示找不到imagstr.dll.dll,客户端无法打开。
解决办法:Thunder Network ,迅雷看看播放器,都容易引发问题,用Everything工具批量搜索: thunder找到所有目录并结合Wholockme强制删干净。重启电脑。
官方说装D盘,我直接重装安装到: E:/Program Files/下得了,就装它得了。
工具/原料
电脑
方法/步骤
这个imagstr.dll.dll文件网上不太好找。

解决方法其实很简单,卸载驱动后重新安装,不要选择Autorun

据说找不到这个dll文件是迅雷软件作怪。

建议选择TL-WN725N文件夹里面的Setup手动安装到非迅雷盘

TP-LINK无线网卡提示找不到imagstr.dll.dll?

最后的界面是这样的。选择TP-LINK客户端应用程序即可


来自:https://jingyan.baidu.com/article/73c3ce281d10e2e50343d988.html
https://service.tp-link.com.cn/detail_article_3225.html
注册Dll:
先从网站下载下来imagstr.dll.文件之后,先将其解压(一般都是rar压缩包), 然后根据您系统的情况选择X86/X64,X86为32位电脑,X64为64位电脑。默认都是支持32位系统的。
3)Windows XP/WIN7系统,将此文件复制到c:\Windows\System32目录。
4)如果您的系统是64位的请将文件复制到C:\Windows\SysWOW64目录
2.然后打开"开始-运行-输入regsvr32 imagstr.dll.",回车即可解决错误提示
https://zhidao.baidu.com/question/1707740617078138540.html?qbl=relate_question_3&word=imagstr.dll.dll
/var/lib/docker/devicemapper/devicemapper/data
scp /var/lib/docker/devicemapper/devicemapper/data root@10.71.165.136:/var/lib/docker/devicemapper/devicemapper/data  #这个方法不行,看有2G,一拷贝有20G
步骤1)挂载盘:
rm -rf /var/lib/docker/
mkdir -p /var/lib/docker/devicemapper/
mkdir -p  /data/docker/devicemapper/devicemapper    
ln -sf /data/docker/devicemapper/devicemapper /var/lib/docker/devicemapper/devicemapper
ll /var/lib/docker/devicemapper/devicemapper
lrwxrwxrwx 1 root root 38 Dec  5 22:35 /var/lib/docker/devicemapper/devicemapper -> /data/docker/devicemapper/devicemapper

步骤2)卸载重装Docker:
yum remove docker-ce
yum install docker-ce
systemctl start docker
docker images
cd /lib/systemd/system
mv docker.service docker.service.init0
mv docker.service.proxy.ok docker.service
systemctl daemon-reload
systemctl restart docker


步骤3)检查是否给把原来的大的挂载磁盘给软链接进来了:

#du -sh /var/lib/docker/devicemapper/devicemapper/data
11M     /var/lib/docker/devicemapper/devicemapper/data

[root@docker_build_bj_sjs_10_71_159_11:~]
#ls -lart /var/lib/docker/devicemapper/devicemapper
lrwxrwxrwx 1 root root 38 Dec  5 22:35 /var/lib/docker/devicemapper/devicemapper -> /data/docker/devicemapper/devicemapper

附录:docker.service




5.1G    /var/lib/docker/devicemapper/devicemapper/data  #这个可能38G,太大,40G盘存不下来。

都有可能。得按方法二,来处:https://blog.csdn.net/CHENYUFENG1991/article/details/79839497

解决方案2:成功
停止docker!!!这一步很关键,否则下面的设置会失败。
编辑以下文件:
vim /lib/systemd/system/docker.service

原内容如下:
ExecStart=/usr/bin/dockerd-current \
          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
          --default-runtime=docker-runc \
          --exec-opt native.cgroupdriver=systemd \
          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
          $OPTIONS \
          $DOCKER_STORAGE_OPTIONS \
          $DOCKER_NETWORK_OPTIONS \
          $ADD_REGISTRY \
          $BLOCK_REGISTRY \
          $INSECURE_REGISTRY\
          $REGISTRIES


然后修改为以下:
ExecStart=/usr/bin/dockerd-current \
          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
          --default-runtime=docker-runc \
          --exec-opt native.cgroupdriver=systemd \
          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
          --storage-opt dm.loopdatasize=8G \
          --storage-opt dm.loopmetadatasize=4G \
          --storage-opt dm.basesize=8G \
          $OPTIONS \
          $DOCKER_STORAGE_OPTIONS \
          $DOCKER_NETWORK_OPTIONS \
          $ADD_REGISTRY \
          $BLOCK_REGISTRY \
          $INSECURE_REGISTRY\
          $REGISTRIES


也就是多加以下3行:
          --storage-opt dm.loopdatasize=8G \
          --storage-opt dm.loopmetadatasize=4G \
          --storage-opt dm.basesize=8G \

设置devicemapper的data为8G,metadata为4G,镜像的大小不能大于8G。

删除原有docker,并使用dd命令进行空间分配
rm -rf /var/lib/docker
mkdir -p /var/lib/docker/devicemapper/devicemapper/
dd if=/dev/zero of=/var/lib/docker/devicemapper/devicemapper/data bs=1M count=0 seek=8192
dd if=/dev/zero of=/var/lib/docker/devicemapper/devicemapper/metadata bs=1M count=0 seek=4096

完成上述步骤后
systemctl daemon-reload
systemctl start docker
docker info

项目和团队背景
首先给大家说明一下项目背景,以便各位对此项目有更清晰的了解:
1.该项目是一个二次开发项目,第一个基础版本(打印申报系统)也由我带领开发。
2.系统是需要和国家系统对接,有三条主流程。
3.需求频繁变化,由于系统需要对接国家系统,需求方对需求也不甚了解。曾在5月份一个月内需求变更超过8次,都是主流程变更。
4.项目大小按照最初需求估算,约在100人天左右。
5.项目两条主流程无法测试,依赖于外部U盾,但开发过程中并没有U盾。
6.客户现场使用U盾调试和开发时间约为20天左右。
7.我当时同时负责大大小小4个项目,没有进入开发,仅管控进度。
8.团队成员共3名,其中两名是当时开发基础版本的项目成员,他们对此项目较为熟悉。
9.项目推进过程中,需要多次去现场调试测试,由团队中的两名工程师共同前去。阅读全文
背景: 有时偶尔会用到从文本里转成Html在浏览器里看,这个Editplus直接Ctrl+b就能看,现在Mac上没有这个Editplus怎么办呢?看文章中一步一步用VSCode替代Editplus即可。
vscode怎么浏览器打开html预览?这里大家可以通过安装open in browser插件解决。
注意:这个得保存为Html后缀才行,否则,鼠标右键不会有Open in Default Browsers


来自:https://www.cnblogs.com/echolun/p/9527319.html
背景:今天突然发现刚买的Mac原装鼠标在有时候出现了MacBook上的鼠标指针没了,一会又好了。查了下原因。

主要是下面的原因造成的:
一、驱动兼容性不好或者系统不稳定。
1、安装驱动精灵,选择一键更新所有驱动,这样兼容性好一些。
2、更换鼠标USB接口,或者重新启动电脑。
二、如果是无线鼠标还可能是电力不足,导致连接不稳定。更换鼠标电池。

摘自:http://ask.zol.com.cn/x/1196882.html
MAC下截屏命令是Command+Shift+3,部分截屏命令是Command+Shift+4。
---------
按下Command+Shift+4并按下空格键。 交叉十字图标将变为小照相机图标。
你可以再次按下空格键转换为交叉十字图标。
移动光标到你希望进行截图的窗口上。
当照相机图标移过不同窗口上时,窗口将程高亮蓝色显示。 ...
点击所需窗口。 和其他截图方法一样,所选窗口的截图将默认保存在桌面上。


MAC下退出VIrtualBox全屏命令是Command+C,鼠标退出来的命令是command.
实践来自:https://mp.weixin.qq.com/s/TFRv2wfaNpje_5rrELBEgA

定义
==============================================================================================
502,Bad Gateway,网关错误,它往往表示网关从上游服务器中接收到的响应是无效的,主要是PHP执行时间大于PHP超时,于是给Nginx返回为空引起的。
502并不是指网关本身出了问题,而是
1)从上游接收响应出了问题,比如由于上游服务自身超时导致不能产生响应数据,
2)或者上游不按照协议约定来返回数据导致网关不能正常解析。


情况1:关掉PHP-FPM进程:
"123.115.119.90" "up.levoo.com" "-" "[30/Nov/2018:22:51:52 +0800]" "GET /hello.php HTTP/1.1" "502" "552" "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36" "0.000" "0.000"
2018/11/30 22:51:52 [crit] 29084#0: *124 connect() to unix:/dev/shm/php-fcgi.sock failed (2: No such file or directory) while connecting to upstream, client: 123.115.119.90, server: up.levoo.com, request: "GET /hello.php HTTP/1.1", upstream: "fastcgi://unix:/dev/shm/php-fcgi.sock:", host: "up.levoo.com"

情况2:

php-fpm.conf配置:

request_terminate_timeout=5
nginx配置:
fastcgi_read_timeout 10;

php-fpm.conf设置的最大执行时间是5s,但是php脚本需要的执行时间大于7s,所以php-fpm进程执行5s时就回退出,此时php脚本没有正常执行完,返回给网关Nginx的数据为空,于是导致502。
502日志:
"123.115.119.90" "up.levoo.com" "-" "[30/Nov/2018:22:53:14 +0800]" "GET /hello.php HTTP/1.1" "502" "552" "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36" "5.287" "5.288"
2018/11/30 22:53:14 [error] 29084#0: *188 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 123.115.119.90, server: up.levoo.com, request: "GET /hello.php HTTP/1.1", upstream: "fastcgi://unix:/dev/shm/php-fcgi.sock:", host: "up.levoo.com"

在实际的实践中发现当在EasySwoole里传大于设置的图片也会出现 Nginx的代理机上出现104: Connection reset by peer的情况。

==============================================================================================

504:nginx则以为上游php-fpm没有按照设置时间超过Nginx的等待时间,返回响应数据就会返回504。
504,Gateway Timeout,网关超时。

它表示网关没有从上游及时获取响应数据。注意它和502在超时场景下的区别,502是指上游php-fpm因为超过自身允许的执行时间而不能正常生成响应数据,而504是指在php-fpm还未执行完成的某一时刻,由于超过了nginx自身的超时时间,nginx则以为上游php-fpm没有按照设置时间返回响应数据就会返回504, 此时对于php-fpm而言还会继续执行下去,直到执行完成。

<?php

sleep(7);

echo 'hello world';

error_log("hello", 3, "/tmp/hello.log");

?>

vi php-fpm.d/www.conf
request_terminate_timeout = 30s

vi nginx.conf
fastcgi_read_timeout         5s;


504 Gateway Time-out
nginx

"123.115.119.90" "up.levoo.com" "-" "[30/Nov/2018:23:52:04 +0800]" "GET /hello.php HTTP/1.1" "504" "562" "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36" "5.005" "5.005"
2018/11/30 23:52:0


==============================================================================================
499, Client Closed Request, 客户端主动断开连接。
是指一次http请求在客户端指定的时间内没有返回响应,此时,客户端会主动断开连接,此时表象为客户端无响应返回,而nginx的日志中会status code 为499。

此状态码在浏览器请求时几乎不可见,因为浏览器默认的超时时间会很长。多见于服务之间的调用,在业务架构中常常会分层设计,拆分为不同的子系统或者微服务,这样系统之间就会常常通过http方式来请求,并且会设置每次请求的超时时间,当请求在请求时间内所调用的上游服务无返回,则会主动关闭连接,上游服务日志中会记录一条499。

php代码

<?php

sleep(7);

echo 'hello world';

error_log("hello", 3, "/tmp/hello.log");

?>
php-fpm.conf配置:

request_terminate_timeout=30
nginx配置:

fastcgi_read_timeout 5;
我们在linux终端使用curl命令来请求,-m 表示超时时间,单位为秒

curl -i -m 3 http://127.0.0.1/hello.php
返回为:

curl: (28) Operation timed out after 3004 milliseconds with 0 bytes received
nginx的access日志的code为499,如下:

"HEAD /hello.php HTTP/1.1" 499 0


#curl -I -m 3 http://up.levoo.com/hello.php
curl: (28) Operation timed out after 3022 milliseconds with 0 bytes received
Nginx日志:
"47.94.88.237" "up.levoo.com" "-" "[30/Nov/2018:23:55:38 +0800]" "GET /hello.php HTTP/1.1" "499" "0" "-" "curl/7.55.1" "2.888" "-"

==============================================================================================
500
500, Internal Server Error , 服务器内部错误,服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。

日常开发中500错误几乎都是由于php脚本语法出现错误导致php-fpm无法正常执行。

复现路径
php代码:

<?php
echo 'hello '
echo ' world';
?>
由于php代码语法错误,php-fpm执行失败,然后告诉nginx这一结果,nginx则返回500。
该网页无法正常运作 up.levoo.com 目前无法处理此请求。
HTTP ERROR 500

Nginx错误日志:
"123.115.119.90" "up.levoo.com" "-" "[30/Nov/2018:23:57:42 +0800]" "GET /hello.php HTTP/1.1" "500" "5" "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36" "0.022" "0.022"

php错误日志:
hello.php on line 3

vim ~/.zshrc
# export PATH=$HOME/bin:/usr/local/bin:$PATH
export PATH=$HOME/bin:/usr/local/bin:$PATH
export PATH=$HOME/.irdcops/shell/local.tools.jackxiang.com:$PATH

Mac终端被自己玩“坏”了,登陆默认是-bash-3.2$,一些命令无法使用,现在记录恢复初始化    [username(你的账户名)@主机名 ~] $   解决的办法。
工具/原料
Mac
终端
方法/步骤1
终端输入以下命令:

export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin

之后输入

cd ~/

3、先输入

touch .bash_profile

之后输入

open .bash_profile

打开文件之后,在文件的最后一行添加

export PS1='[\u@\h \w]\$'



之后按住保存该文件关闭

输入下列命令,刷新终端,ok~

source .bash_profile

补充:关于更改主机名和共享名

主机名

sudo scutil --set HostName rainbird-desk

共享名

sudo scutil --set ComputerName newName


来自:https://jingyan.baidu.com/article/c74d6000c277e80f6a595d8c.html



二)MAC 设置环境变量PATH 和 查看PATH
理论篇
Mac系统的环境变量,加载顺序为:
/etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc

#中间用冒号隔开
export PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N>

实践主要是:ckubectlcmd    ckubectlishow 两个快捷命令,如下:
$cat /Users/jackXiang/.bashrc |grep kube


$cat /Users/jackXiang/.bash_profile

参考自:https://www.jianshu.com/p/acb1f062a925
法一)直接PKG安装:
#pkg install git
Updating FreeBSD repository catalogue...
Fetching meta.txz: 100%    944 B   0.9kB/s    00:01    
Fetching packagesite.txz: 100%    6 MiB 118.7kB/s    00:57    
Processing entries: 100%
FreeBSD repository update completed. 32579 packages processed.
All repositories are up to date.
Updating database digests format: 100%
The following 15 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
        git: 2.19.1
        p5-CGI: 4.40
        p5-HTML-Parser: 3.72
        p5-HTML-Tagset: 3.20_1
        perl5.24: 5.24.4
        p5-IO-Socket-SSL: 2.059

法二)Ports源码安装:

cd /usr/ports/devel/git
sudo make install clean BATCH="yes"

https://www.digitalocean.com/community/tutorials/how-to-install-git-on-freebsd-11-0
问题: sh: zip: not found

Port安装:
cd /usr/ports/archivers/zip/ && make install clean

安装后位置: /usr/local/bin/zip
#systemctl stop slapd
Error getting authority: Error initializing authority: Could not connect: Connection refused (g-io-error-quark, 39)
解决这个问题:
第一步)主要是重装  polkit,然后重启。
#rpm -qa|grep polkit
polkit-0.112-14.el7.x86_64
polkit-pkla-compat-0.1-4.el7.x86_64
来自:https://blog.csdn.net/wuyezhiyu/article/details/82905661

弟二步)#systemctl start dbus.service
Error getting authority: Error initializing authority: Could not connect: Connection refused (g-io-error-quark, 39)

#ps -ef|grep dbus
root     31670     1  0 09:38 ?        00:00:00 [dbus-daemon] <defunct>

#systemctl list-unit-files|grep dbus.service        #查看systemd管理的所有单元
dbus.service                 static  
systemctl enable dubs.service        

access("/etc/systemd/system/dubs.service", F_OK) = -1 ENOENT (No such file or directory)
access("/run/systemd/system/dubs.service", F_OK) = -1 ENOENT (No such file or directory)
access("/usr/local/lib/systemd/system/dubs.service", F_OK) = -1 ENOENT (No such file or directory)
access("/usr/lib/systemd/system/dubs.service", F_OK) = -1 ENOENT (No such file or directory)
access("/etc/rc.d/init.d/dubs", F_OK)   = -1 ENOENT (No such file or directory)
"static"  尚未被启用,并且单元文件的 "[Install]" 小节中没有可用于 enable 命令的选项
"disabled"  尚未被启用,但是单元文件的 "[Install]" 小节中存在可用于 enable 命令的选项
"enabled"  已经通过 /etc/systemd/system/ 目录下的 Alias= 别名、 .wants/ 或 .requires/ 软连接被永久启用

来自:https://mellowhost.com/billing/index.php?rp=/knowledgebase/71/Error-getting-authority-Error-initializing-authority-Could-not-connect-Connection-refused-g-io-error-quark-39.html


Error getting authority: Error initializing authority: Could not connect: Connection refused (g-io-error-quark, 39)
systemctl stop slapd
Error getting authority: Error initializing authority: Could not connect: Connection refused (g-io-error-quark, 39)

在使用centos7.4 安装服务的时候报错:

Error getting authority: Error initializing authority: Error calling StartServiceByName for org.freedesktop.PolicyKit1: Timeout was reached (g-io-error-quark, 24)
解决方案:


ps -ef |grep polkit

再安装:
pyum reinstall polkit

再重启
reboot

就可以解决

来自:http://www.cnblogs.com/flyfish2012/p/9527810.html
背景:在Docker打包PHP时发现这个命令,于是查了一下。
strip命令用于脱掉文件的衣服, 文件会变小, 其中的符号信息会失去。 那这个strip有什么

用呢? 很有用的! 原来的a.out比较大, 可以执行。 在strip之后, 文件变小了, 也是可以执行, 这就节省了很多空间.

      其实, strip不仅仅可以针对可执行文件, 还能针对目标文件和动态库等. 在实际的开发中, 经常需要对动态库.so进行strip操作, 减少占地空间。 而在调试的时候(比如用addr2line), 就需要符号了。 因此, 通常的做法是: strip前的库用来调试, strip后的库用来实际发布, 他们两者有对应关系。 一旦发布的strip后的库出了问题, 就可以找对应的未strip的库来定位。

      例如某个动态库strip前是50M左右, strip后是20M左右, 可见, 脱脱衣服还是有明显好处的。

      我们在调试过程中, 经常涉及到上传库, 库太大时, 很耗费传输时间, 所以还是先用strip来处理一下比较好。
---------------------
/data/codesdev/testdemo/c/strip]
#tree -l
.
├── strip
└── strip.c

#cat strip.c
#include <stdio.h>  

void main()  
{  
    printf("strip\n");
}

#make strip
cc     strip.c   -o strip

#ls -l strip
-rwxr-xr-x 1 root root 8440 11月  1 17:26 strip

#/usr/bin/file strip
strip: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=ec884c4b45d605867f9319a6d5b3acaea1866798, not stripped

#nm strip
000000000060102c B __bss_start
000000000060102c b completed.6355
0000000000601028 D __data_start
0000000000601028 W data_start
0000000000400460 t deregister_tm_clones

#strip strip

#ls -l strip  #File Size变小
-rwxr-xr-x 1 root root 6296 11月  1 17:28 strip

#file strip
strip: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=ec884c4b45d605867f9319a6d5b3acaea1866798, stripped

#nm strip
nm: strip:无符号


来自:https://blog.csdn.net/qq_37858386/article/details/78559490
实践Ok,如下:

Autofill插件下载:
https://jingyan.baidu.com/article/e73e26c0992c4524adb6a701.html

Chrome浏览器如何自动填写表单提高工作效率?
https://pan.baidu.com/s/1bp2J1pX?errno=0&errmsg=Auth%20Login%20Sucess&&bduss=&ssnerror=0&traceid=
背景:过滤从前端textarea里传过来的字符串里有空行。
如:
1212
2121

1222
测试了一下发现写入文件是:
#cat input.txt
1212
2121

1222
出现多了两个竖线的原因是上面这个空行:
grep -Erin "1212|2121||1222"

那么,想去掉这个串里的空的行,怎么办?



来自:https://zhidao.baidu.com/question/808190628151611092.html

想要的结果是,而不是多一个||,如下:
grep -Erin "1212|2121||1222"
想要:
grep -Erin "1212|2121|1222"





PHP实现ASCII码与字符串相互转换的方法,主要想看换行里是\n还是\r\n,当然也可以在PHP写入文件后sz下来用FlexHEX编辑器看:
31 32 31 32 0A 32 31 32 31 0A 0A 31 32 32 32  <===1212
2121

1222

上面的0A就是10,也就是\n,如下:
php > echo ord(1);
49
php > echo ord(2);
50
php > echo ord(\n);
PHP Fatal error:  Undefined constant 'n' in php shell code on line 1
php > echo ord("\n");
10
用PHP看:

php /tmp/ascii.php
<xmp>&#49;&#50;&#49;&#50;&#10;&#50;&#49;&#50;&#49;&#10;&#10;&#49;&#50;&#50;&#50;</xmp>1212
2121

1222

所以,结论是这个\r其实是没有必要的,下面这一行就行,当然平台可能是\r\n于是得加上:
//$leftContents = preg_replace('/[\r\n]+/', "\n", $leftContents);
$leftContents = preg_replace('/[\n]+/', "\n", $leftContents);    

正则的意思是无论是\r\n\r\n还是\n\n都能被替换为一个斜杠n ,\n:
php > $contents = preg_replace('/\n\n/', "\r\n\r\n", $contents);  
php > echo $contents;
1212
2121

1222
php > $str = preg_replace('/[\r\n]+/', "\n", $contents);
php > echo $str;
1212
2121
1222

一个Window的\r\n和一个unix的\n,这个正则一样能替换,反之一样:
php > $contents = preg_replace('/\n\n/', "\r\n\n", $contents);    
php > echo $contents;
1212
2121

1222
php > $str = preg_replace('/[\r\n]+/', "\n", $contents);
php > echo $str;
1212
2121
1222

反之亦然:
php > $contents=file_get_contents("/tmp/input.txt");
php > echo $contents;
1212
2121

1222
php > $contents = preg_replace('/\n\n/', "\n\r\n", $contents);  
php > echo $contents;
1212
2121

1222
php > $str = preg_replace('/[\r\n]+/', "\n", $contents);
php > echo $str;
1212
2121
1222

对于这个+号,查了一下正则:
man awk
/Regular Expressions

. 任意字符
问家兴:(问加星)
?   0或1次
+  1次或多次    #man awk  Regular Expressions , r+         matches one or more r's.
*   0次或N次

也就是一次或多次,对于\r\n就像[a-z0-9]一个道理,\r和\n分别表示一个字符,可一块,总之一次或多次,于是:
\r\n\r\n  ,\n\n,\r\n\n,\n\r\n都能匹配,长时间不写PHP快忘光了,嗨。

同时,网上还有法二先用换行去转成数组,再用数组里去掉空元素array_filter:
// 该函数把输入数组中的每个键值传给回调函数。如果回调函数返回true,则把输入数组中的当前键值返回结果数组中。数组键名保持不变。若无回调函数,则将TRUE的值返回,即可以使用它来过滤空元素
$arr = array(0, 1, 4, '',null, '0', 23);
$arr = array_filter($arr);// array(1=>1, 2=>4, '6'=>23) 下标不改变,使用array_values(),改变下标
1.去除空行



来自:https://www.cnblogs.com/chenqionghe/p/4293852.html


freebsd-update -r 11.2-RELEASE upgrade
/usr/sbin/freebsd-update install
中间有几次NTP的配置文件确认。
/usr/sbin/freebsd-update install
reboot


FreeBSD 11.2-RELEASE-p4 (GENERIC) #0: Thu Sep 27 08:16:24 UTC 2018
Welcome to jackxiang's Compute Service !

参考:https://blog.csdn.net/joyous/article/details/81990019


升级遇到的问题,出现openssl的动态链接库版本对不上。
最后一次构建FreeBSD镜像::
1)无法再次升级,原因是相关SSHD和Mysqld的动态链接libssl会有问题。

2)FreeBSD升级到11.3还会出sockstat -4l会报错。

3)即使到FreeBSD12.0后Mysql编译好的启动可能也有问题,由于旧的库可能还是涉及到libssl还是有问题。

最终,无法升级,做了一些域名应用快捷方面的优化以及完善了PHP扩展,得出这个版本是一个最后的ISO版本FreeBSD11.2。

pkg info -r security/openssl
openssl-1.0.2l,1:
        libarchive-3.3.1,1
        mysql80-client-8.0.0_3
        bind-tools-9.11.1P3
pkg auto remove
pkg upgrade -y
rm -rf /var/db/freebsd-update/files  #记得删掉。


一些其它命令:
> pkg-add -r openssh-portable
> cd /usr/ports / security / openssh&& make install clean


> portupgrade security / openssh-portable
> makeworld / buildworld过程的一部分
> freebsd-upgrade
cat a.txt
jack 1
tianjin 2
old5 3




sh read.sh
jack 1
tianjin 2
old5 3


加上模拟输出:
insert into t set name='xxx', id=N;

sh read.sh  
insert into t set name='jack',id=1;
insert into t set name='tianjin',id=2;
insert into t set name='old5',id=3;

行内有空格换行的原因:
如果输入文本每行中没有空格,则line在输入文本中按换行符分隔符循环取值.
如果输入文本中包括空格或制表符,则不是换行读取,line在输入文本中按空格分隔符或制表符或换行符特环取值.
可以通过把IFS设置为换行符来达到逐行读取的功能.
demo:
假设现需要读取如下的文件rollback_config.txt:
ROLLBACK_SERVICES:upserv  checkserv
ROLLBACK_VERSION:v1.1
使用   for line in `cat rollback_config.txt`; do echo "${line}"; done  读取的结果会是:
ROLLBACK_SERVICES:upserv
checkserv
ROLLBACK_VERSION:v1.1
显然不是我们想要的。

解决方法:
IFS_old=$IFS
IFS=$'\n'
for line in  `cat  rollback_config`;do
echo "$line"
done;
IFS=$IFS_old
这样一来就可以了!



IFS的默认值为:空白(包括:空格,制表符,换行符).

---------------------

本文来自 潼潼水势向江东 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/zhongjling/article/details/52859055?utm_source=copy

二)用AWK就很方便处理,如下,注意下单引号是三个单引号,中间那个被转义,才输出一个单引号     '\''  :

insert into t set name='jack',id=1;
insert into t set name='tianjin',id=2;
insert into t set name='old5',id=3;
对于变量可以把整个变量用花括号括起来,也可括一部分,如:
整个:{$name}
把$放外面:${name}
-----------------------------------------------------------------------------------
php 使用phpize 安装扩展readline , 安装后可以进入命令行交互模式:


Shell也一样:
分页: 8/334 第一页 上页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 下页 最后页 [ 显示模式: 摘要 | 列表 ]