分类目录归档:技术

整理常用Linux命令

这不仅仅是一篇文章,要时时更新与添加最新的使用方法与技术

找到PHP配置文件的地方:

php -i | grep “Loaded Configuration File”

文件路径/etc/sysconfig/iptables

开关 重启 /etc/init.d/iptables start|stop|restart

查看防火墙信息/etc/init.d/iptables status

20200407更新

“D:\Program Files\Git\usr\bin\split.exe” -b 100000000 nohup.out

花生壳类似软件

ngrok

yum install
yum remove

定时任务

crontab -l
crontab -e

参考

每周六早上5点整更新mp_customer
0 5 * * 6 sh /root/task/mp_customer.sh >> /root/task/logs/mp_customer.log

alias
alias 显示列表
alias mtr=/usr/local/sbin/mtr 关联
unalias mtr 删除关联

unzip dokuwiki.zip -d dokuwiki
ngrok
http://www.racksam.com/2016/12/18/aliyun-centos7-install-ngrok/

/opt/ngrok/bin/ngrokd -tlsKey=/opt/ngrok/server.key -tlsCrt=/opt/ngrok/server.crt -domain=dev.mydomain.com -httpAddr=:80 -httpsAddr=:443 -tunnelAddr=:4443 > /opt/ngrok/ngrok.log &

systemctl –type=service
systemctl enable tomcat.service
systemctl start tomcat.service
systemctl restart tomcat.service

统计目录下文件数
ls -l | grep “^-” | wc -l

停止 php fpm
kill -INT cat /opt/php-5.3.29-2/var/run/php-fpm.pid

zip -r tsinghuaao.zip tsinghuaao 压缩mydata目录
压缩:tar zcvf FileName.tar.gz DirName
解压:tar zxvf FileName.tar.gz

目录操作
更改目录权限:chmod -R 777 www
重命名文件夹:mv 123 abc 123是原名,abc是想要改的名字
内拷贝内容:cp -r demo/. www/
不提示拷贝:\cp -ar Uploads/ ../../demo/Public/

zip 解压
解压到当前目录下
$ unzip text.zip
将压缩文件text.zip在指定目录/tmp下解压缩,如果已有相同的文件存在,要求unzip命令不覆盖原先的文件。
$ unzip -n text.zip -d /tmp
查看压缩文件目录,但不解压。
$ unzip -v text.zip

lampp安装路径:/opt/lampp/lampp

iptables 防火墙
文件路径/etc/sysconfig/iptables
开关 重启 /etc/init.d/iptables start|stop|restart
查看防火墙信息/etc/init.d/iptables status

重要!!开启端口一定要在这句之上

-A RH-Firewall-1-INPUT -j REJECT –reject-with icmp-host-prohibited
命令设置开启端口
/sbin/iptables -I INPUT -p tcp –dport 8080 -j ACCEPT

CentOS安装32位兼容包:yum install glibc*

修改语言
修改后的/etc/sysconfig/i18n 文件为:
LANG=”en_US.UTF-8″

xampp软件地址:http://www.apachefriends.org/zh_cn/xampp-linux.html

scp命令远程拷贝

ssh 10.10.8.151
cd /bea/user_projects/domains/uumsdomain/applications/uums/WEB-INF/jsp/
scp root@10.10.8.27:/root/transfer/initPrinter.jsp ./

系统相关
查看内存大小:free -m
显示当前路径:pwd
查找和定位文件:locate tomcat

linux vi

一般模式:

/word 查找
:1,$s/word1/word2/g[c] 替换
x删除一个字符
dd删除一行,剪切
yy复制一行
p粘贴一行
u重复前一个动作

ctrl+b上一页
ctrl+f下一页
j下一行
k上一行

编辑模式:
i插入
a增加
o新加一行
esc退回一般模式

命令模式:
:w存盘
:q退出
:wq存盘退出
:q!强制退出
v进入可视模式,选择文本

e 由游标所在位置至该字串的最后一个字元。
w 由游标所在位置至下一个字串的第一个字元。
b 由游标所在位置至前一个字串的第一个字元。
$ 由游标所在位置至该行的最后一个字元。
0 由游标所在位置至该行的第一个字元。

怎么使SSH服务开机自动运行
chkconfig sshd on
reboot

切换用户
如何在linux中切换用户
su root ,也可以切换到其它用户,root是默认的,所以只要写su就可以了。
如果是临时切换可以用:
sudo ls ….
sudo文件路径/etc/sudoer

Linux中如何新建用户
adduser joe
passwd joe
[输入用户密码]
[再次输入用户密码确认]

Linux中如何删除新建用户
userdel -r shgaj

linux怎么退出图形界面
Ctr+Alt+BackSpace
linux进入图形界面的方法
安装有图形界面的情况下,启动linux在终端下输入: startx
如何设置自动进入命令界面
/etc/inittab
id:3:initdefault:
将3改为5

常用操作
删除文件命令
rm -rf

设置时间
date 010318242008(月日时分年)

查看磁盘空间
df -lh

查看文件的最后部分
tail -f nohup.out

移动文件
mv

查看目录占用空间
du -s /bea

linux下如何查看cpu型号和主频
key: linux cpu 型号 主频
cat /proc/cpuinfo

开机自启动服务 sftp服务器

systemctl enable httpd.service
systemctl enable squid.service

Java正则类

之前一直研究正则的内容,一直忽略java的类,最近由于需要经常用到,把代码记录下来:

 

String line = “This order was placed( iOS 10.3.1;) for QT3000! OK?”;
String pattern = “iOS ([^;]*);”;

Pattern r = Pattern.compile(pattern);

Matcher m = r.matcher(line);
if (m.find()) {
System.out.println(“Found value: ” + m.group(0));
System.out.println(“Found value: ” + m.group(1));
} else {
System.out.println(“NO MATCH”);
}

内网应用更新方案

现状是:

Was01,Was02,Was03上部署了同样一套代码,其中Was01和Was02只有供前台访问的部署,Was03提供给内网用户管理的部分,如何同时在外网更新01,02,03三台服务器的版本?

看起来穿越两道防火墙,不太可行,其实你只要知道程序是我们开发的,就没有什么不可能。

思路:只要把更新文件放到数据库,每台服务器设置一个定时去检查当前的版本是否与数据库的版本一致,如果不一致就做更新。

需要考虑的问题:

  1. 如果已经更新了,怎样防止无穷更新的问题?
  2. 如果一个版本把更新机制的代码冲掉了怎么办?

SSH生成密钥对,登录服务器

最简单的生成方法:

ssh-keygen

按照提示写文件名就可以了,假设我们生成了xxx.pub和xxx,其中xxx是密钥文件,xxx.pub是公钥文件

配置CentOS的免密码登录:

  1. 用vim打开文件,拷贝里面的内容到需要登录账号的主目录,如/root
  2. 打开vim /root/.ssh/authorized_keys,如果没有这个目录则这样创建
    • mkdir .ssh
    • chmod 700 .ssh
    • cd .ssh
    • touch authorized_keys
    • chmod 644 authorized_keys
  3. 将xxx.pub里面的内容(应该是一行)拷贝到authorized_keys里面(单独占一行)
  4. ssh root@xxx.xxx.xxx.xx,选择xxx密钥文件,就可以不用密码登录了

 

局限性

我总是认为,一些理论的东西没有太大的用处,于是只是在寻找哪些可以具体实施的技术细节。一直认为把开发的框架,开发硬件,中件间的优化一配置,数据库的设计,应用服务器的负载均衡,分布式数据库的使用,内存数据库的使用,缓存技术的应用这些综合起来都是架构的一部分,但一遇到理论的部分,我好像什么也不知道……

在没有弄懂一件事情之前,一定不要对它下结论:这啥用。也许之前的我更关注的是在整个软件过程中的具体技术细节的实现,对于架构的理解也是停留于框架和服务器的设计方面。而架构师却是需求与设计之间的一个角色

那系统分析师应该是偏向需求这个方向的,架构师偏向技术这个方向的。这么讲吧,拿出来一个架构方面的概念我好像听都没听过,我拿了架构师的教程,翻到架构师这一章,所有根据都看不懂,看了里面简略的解释(这本教材虽然厚,但涉及的面太广,根本达不到学习的目的)。其实在听课程之前,我连架构师属于哪个阶段的概念都比较模糊。

当然,我比较精于里面技术的部分,无论是计算机组成还是操作系统或者是计算机网络,有逻辑思考能力的环节起码在考试知识点这块都不那么担心,担心的是软件工程部分,里面理论太多。担心是的开发和数据结构部分,这块考试的时候大部分时候竟然都是考试概念,并不会让我们真的写一段代码。还有就是架构与安全部分,大部分时候考试的也是理论的部分。

说到这,其实现在的关键点是,考试逻辑的部分非常少,只是上午题中的一部分,下午题简答和论文,都需要有清晰的理论概念,然后加上实际的案例来做论述,而之前自身的局限性让我学习这些知识时会无比痛苦。

PV操作

至少有三次机会我可以把它学好,但还是对一些概念模糊

PV操作主要分两类:互斥和同步

简单讲,互斥的PV是同一个信号量,或者讲只有一个信号量。而同步的PV在同一段代码中是不同的信号量。同步一般是两个信号量。

那么信号量是什么?具体的概念书本上有,我这边理解信号量是指示队列的。因为如果简单把信号量定义成资源的个数,同步的时候完全可以只用一个信号量,因为池的大小是固定的,两个信号量就会浪费资源嘛。

这也是我一直不理解的地方,同步的时候为什么一直使用两个信号量。把信号量定义为指示队列的就好理解了。生产者消费者模式里面,生产者如果被阻塞就会形成一个阻塞队列,消费者如果被阻塞,了会形成一个消费者的队列。那么信号量S1就指示的是生产者的队列,如果等于负数就是队列中有进程等待,否则就没有进程等待。S2指示的是消费者的队列,如果为负数就表示队列中有消费者在等待,其绝对值就是等待消费者的个数。

PV里面一个重大的特点是阻塞进队列,唤醒队列中的进程。如P(S1),表示我会无论如何先减1,占用一个资源,如果资源还有,那么我就执行接下来的操作,如果资源没有了,那么我进队列。重点是后半部分的进入队列。如果同步只有一个信号量的话,就不能完成进队列和唤醒的操作。而消费者在消费完一个商品后,会执行V(S1),这个操作里面也有一个判断,如果S1的值是负数,则在执行完之后还要去生产者的队列唤醒一个进程。

其实在想不通为什么他们会这样做的时候,可以先把我们要解决的问题拿出来,看我有没有更好的办法去解决这个问题,一旦发现自己的理论不能解决这个问题的时候,你就会发现书本上提供方法的巧妙之处了。比如我一直觉得,同步模型完全可以使用一个信号量表示缓冲池空余的个数。先不说没办法统一定义PV的操作,光是两个队列都不好表示了,因为一个信号量只能真实反应池中空余的个数,并不能并未已经阻塞了多少生产者和多少消费者。当然有办法,可以再定义一个池的大小,这样也是两个变量,表面上更好理解了,但对PV的统一性造成了破坏。

互斥模型比较好理解,因为在同一做代码中,PV操作使用的是同一个信号量,这个信号量既表示了阻塞的队列,也能表示资源剩余的个数。因为大家都是同样的并行进程,所以大家都进入一个队列。

论文写作规范

有幸参加系统架构师的考试,正好有一个千载难逢的写论文机会,我一定要好好把握,尽管这次是为了应付考试,但谁又能说不是我通向论文的入门之中呢?

​写作的两部分:理论和实践

论文的题目是4选1,每个题目都会有一段描述和三个要求,第一个要求是统一的,就是要联系自己的职位和项目论述问题。第二个是最主要的,里面涉及到架构的方方面面。第三个也是可以部分套用的,就是总结一下自己所谈项目及对第二个问题的回答后,所取得的成就和不足的总结。

那么这篇论文就从上述两个方面展开。在项目方面,需要选择一个比较有典型性的项目,并且这个项目最好能够套用大部分架构的场景。这个项目可以事先准备好,以不变应万变。如果自己的项目比较多的话,要吧多准备两个。

其实我更关注是的理论的部分,实践的部分我们已经在工作中遇到更多,但理论的部分往往是我们忽略的。如软件工程中需要分析的几种方式,架构中的软件性能瓶颈及硬件性能瓶颈。上面两个也是我乱猜的两个,具体的还要看希赛给的论文范例,里面有各个方面所准备的范例。这也是我需要从这些论文中学习的东西:这些范例论文中是如何使用理论知识回答第二个问题的。如果这方面的问题解决了,剩下的问题就都不是问题了。

写作套路总结如下:

摘要  300-400字
项目概要 400-600字
开发项目的概要
开发的体制和“我”担任的工作
项目在系统设计方面的情况
把握用户需求的重要性 100-200字
采用过的手段 1000字-1400字
采取的手段中有效果的手段,效果体现在什么地方 200-300字
采取的手段中无效果的手段,为什么没有效果 200-300字
总结 100-200字

 

苹果禁止热更新及微信的小程序

如果腾讯开发团队同样收到了苹果公司的热更新警告,如果不巧针对的是微信和QQ的话,那么接下来苹果和微信的对决就比较好看了

大背景

最近苹果公司发给了不符合规范要求的开发者一封邮件,明令禁止热更新技术。啥叫热更新呢?从用户角度来讲就是,你在上架的时候App的全部功能已经固定了,不可能在不发布新版本的情况下出现新的功能。

微信的小程序算不算热更新?

从上面的定义可以知道,如果所有的小程序全部打包到微信的更新版本里面了,那就不属于热更新,否则就属于。我们知道小程序是不断在更新的,有更多的小程序加入到微信里面,也有部分小程序从微信中下架,所以不可能是微信把所有的小程序打包到某个版本的微信里面了,所以从严格的定义来看,微信的小程序100%属于热更新。

腾讯会不会向苹果屈服?

如果要在短短几天内修改小程序的框架将是一个非常棘手的事情,几乎是不可能。但腾讯也不太会直接放弃iPhone的市场。那最大的可能是双方坐下来谈判,拿出来一个双方都可以接受的方案。

苹果会不会下架腾讯的全部产品?

6月12号如果收到热更新提醒的开发者不提交新的版本删除相关功能,将会被苹果下回。基于上面的分析,微信肯定存在热更新并且在短时间内肯定改不了,如果苹果严格执行规则的话,就是下架所有腾讯的产品。但这种情况不太可能会出现,因为腾讯的产品对iPhone太重要了,加上腾讯会主动跟苹果联系,提出折中的解决方案,所以双方会出现妥协,妥协的结果可能是给腾讯一定的整改时间,腾讯也不会完全移除所有的热更新,只是象征性的删除一些功能,再发布个更新,给苹果有个台阶下。

以上的分析,都是基于腾讯的开发者团队收到了警告邮件,不排除苹果针对这么大影响力的腾讯会做特殊处理,不直接发邮件给开发者,而是通过另外一种渠道来协商