-
优秀的代码都是如何分层的?
1、背景 说起应用分层,大部分人都会认为这个不是很简单嘛 就controller,service, mapper三层。看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,controller做的逻辑比service还多,service往往当成透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也能用,至于放哪无所谓呗。这样往往造成后面代码无法复用,层级关系混乱,对后续代码的维护非常麻烦。 的确在这些人眼中分层只是一个形式,前辈们的代码这么写的,其他项目代码这么写的,那么我也这么跟着…
-
分享一款懒人必备的Python爬虫神器
前言 今天把最近的一个应用做好了,测试了一下运行没有问题,剩下的就是检验一下结果如何.从光谱到Lab值通常使用matlab中的roo2lab(),不过经过我最近的测试发现转换的结果并不理想,而且这个转化的代码也不是我写的所以另寻他法,找到了下面这个网页。 动手 有了这个网页,很简单就想到去解析.然后很快找到了这个api,可以看到用post提交表单请求就可以返回结果 于是一番操作,修改form表单,构造传入的spectrum,但是最终请求得到的却是一个页面,并不是想要的json.然后许久没写爬虫的…
-
常用 Shell 分析服务器日志命令,运维快收藏!
自己的小网站跑在阿里云的 ECS 上面, 偶尔也去分析分析自己网站服务器日志,看看网站的访问量。看看有没有黑阔搞破坏!于是收集,整理一些服务器日志分析命令,大家可以试试! 1、查看有多少个IP访问: awk '{print $1}' log_file|sort|uniq|wc -l 2、查看某一个页面被访问的次数: grep "/index.php" log_file | wc -l 3、查看每一个IP访问了多少个页面: awk '{++S[$1]} END {for (a in S) prin…
-
几个必不可少的Linux运维脚本!
一、根据PID过滤进程所有信息 #! /bin/bash # Function: 根据用户输入的PID,过滤出该PID所有的信息 read -p "请输入要查询的PID: " P n=`ps -aux| awk '$2~/^'$P'$/{print $11}'|wc -l` if [ $n -eq 0 ];then echo "该PID不存在!!" exit fi echo "--------------------------------" echo "进程PID: $P" echo "进…
-
Linux 性能分析工具汇总
出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章。本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面。如果没有完善的计算机系统知识,网络知识和操作系统知识,文档中的工具,是不可能完全掌握的,另外对系统性能分析和优化是一个长期的系列。 本文档主要是结合Linux 大牛,Netflix 高级性能架构师 Brendan Gregg 更新 Linux 性能调优工具的博文,搜集Linux系统性能优化相关文章整理后的一篇综合性文章,主要是结合博文对涉及到的原理和性…
-
SSRF漏洞原理攻击与防御(超详细总结)
提示:以下是本篇文章正文内容,下面案例可供参考 一、SSRF是什么? SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。 一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统) 二、SSRF漏洞原理 SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。 比如,黑客操作服务端从指…
-
详述 Golang 的符号表
ℹ️ 本文基于 Go 1.13。 符号表是由编译器生成和维护的,保存了与程序相关的信息,如函数和全局变量。理解符号表能帮助我们更好地与之交互和利用它。 符号表 Go 编译的所有二进制文件默认内嵌了符号表。我们来举一个例子并研究它。下面是代码: var AppVersion string func main() { fmt.Println(`Version: `+AppVersion) } 可以通过命令 nm 来展示符号表;下面是从 OSX 的结果中提取的部分信息: 00000000011772…
-
可落地的 8 种架构模式!
什么是架构 我想这个问题,十个人回答得有十一个答案,因为另外的那一个是大家妥协的结果。哈哈,我理解,架构就是骨架,如下图所示: 人类的身体的支撑是主要由骨架来承担的,然后是其上的肌肉、神经、皮肤。架构对于软件的重要性不亚于骨架对人类身体的重要性。 什么是设计模式 这个问题我问过的面试者不下于数十次,回答五花八门,在我看来,模式就是经验,设计模式就是设计经验,有了这些经验,我们就能在特定情况下使用特定的设计、组合设计,这样可以大大节省我们的设计时间,提高工作效率。作为一个工作10年以上的老码农,经…
-
我放弃月薪2万,0基础学运维,结果很意外......
越界对于很多人来说,是一件艰难而又纠结的事情,或许缺乏勇气,或许缺乏魄力,或许内心深处不愿打破平衡。可对于另一些人来说,越界是一件不可不为的事情,因为那意味着新的希望。 特别声明:本文素材由Linux云计算SRE网络班N65期柳同学提供。 今天为大家带来一篇95后男孩放弃月薪2W的工作,从0学习运维的故事,希望他的经历能对你有所启发。以下是柳同学的经历: 01 我为什么要放弃月薪2W的工作? 曾经在知乎上看到这样一条提问:成年人的世界,没钱和没命哪个更要命?很多人评论:没钱。 确实如此!在这个…
-
来个查漏补缺!关于 Redis 都在这一篇里了
Redis简介 Redis 是 C 语言开发的一个开源高性能键值对的内存数据库,可以用来做数据库、缓存、消息中间件等场景,是一种 NoSQL(not-only sql,非关系型数据库)的数据库。 Redis特点 优秀的性能,数据是存储在内存中,读写速度非常快,可支持并发10W QPS。 单线程但进程,是线程安全的,采用IO 多路复用制 可作为分布式锁 支持五种数据类型 支持数据持久化到磁盘 可以作为消息中间件使用,支持消息发布及订阅。 数据类型 下表是我列举的五种数据类型的特性及其使用场景 缓存…