如何写出更优雅的代码
导读:编程是一门创造性的工作,是一门艺术。我们每天与代码打交道,为什么普通码农辛苦一年只拿十万,而高级架构师年薪百万。最主要的就是我们敲出来的代码有差别,差别在意大部分码农敲出来坏的代码,而高级架构师能敲出优雅的好的代码。我们每天都会敲代码,但当被问道什么是好的优雅的代码时,大家可能会先愣一下,然后给出的回答要么比较空泛,要么比较散,没办法简单明了地概括出来。显然,这个问题并没有唯一的标准答案,谁都可以谈论自己的理解。要成为合格的架构师最基本的要求是能写好的优雅的代码,所以必须要知道什么是优雅代码。这篇文章我来分享一下阿里系高级架构师对于好的优雅代码的理解。 一句话概括
衡量代码质量的唯一有效标准:WTF/min —— Robert C. Martin
年薪十万与年薪百万程序员写的代码的区别
Martin(Bob大叔)曾在《代码整洁之道》一书中说:当你的代码在做 Code Review 时,审查者要是愤怒地吼道:“What the fuck, is this shit?”、“Dude, What the fuck!”等言辞激烈的词语,那说明你写的代码是 Bad Code ...
好用的chrome插件,方便开发
1 EditCookiechrome链接
点击右上角的按钮,即可修改当前网页的cookie数据。
2 JSON-handlechrome链接
3 OneTabchrome链接
4 WappalyzerWappalyzer 是一个为技术人员准备的插件,它能够识别当前网站所用技术,比如使用的编程语言、数据库、Web服务器、框架和库、甚至WordPress这样的CMS等,都可以识别出来,对于喜欢研究各种工具和技术的人来说是一款非常好用的插件
5 简悦简悦是一款Chrome阅读模式插件,能够让你在阅读文章时一键进入专注模式,屏蔽掉一切不相干的网页元素,只展示正文,适合经常需要阅读网页的人使用
简悦还支持许多定制功能,包括定制阅读器样式、定制快捷键、保存与分享文章、稍后阅读等,集成你需要的工具,让工作更简单
6 Extension ManagerChrome的很多插件非常强大,有些朋友可能就会安装很多插件,让自己上网体验更好,但是插件安装一多,问题也就随着而来了,最明显的一个问题就是插件的管理,过多的插件会导致真正需要时,很难找到自己想用的插件
Extension Manager ...
Linux定时任务教程
1 教程1.1 安装crontabs123yum install contabs #通过yum安装systemctl enable crond #设置开机启动systemctl start crond #启动
1.2 查看crontab服务的状态:1service crond status
1.3 查看crontab的日志信息12tail -f /var/log/cron #crontab的日志信息放在/var/log文件夹中cat /vat/log/cron
在crontab定时执行脚本的过程中,可能会有文件权限的问题,比如:
这个时候,需要给定时任务执行的脚本一个可执行的权限,修改权限的命令如下:
1chmod 777 /home/centos/sh/test.sh #给所有权限
1.4 配置定时任务crontab的定时任务文件放在/etc/crontab文件中,直接使用vim修改即可:
/etc/crontab文件默认内容如下,其中也解释了每个符号代表什么意思:
12345678SHELL=/bin/bashPATH=/sbin:/bin:/usr ...
在centos中安装LNMP开发环境
1 安装nginx1.1 安装步骤nginx的源码下载地址: https://nginx.org/download/nginx-1.20.1.tar.gz
第一步:下载nginx源码包。12wget https://nginx.org/download/nginx-1.20.1.tar.gzyum install make gcc wget pcre-devel openssl openssl-devel -y # 安装前置依赖包
第二步:解压12tar -zxvf nginx-1.20.1.tar.gz # 先解压,然后进入解压后的目录cd nginx-1.20.1 #目录中的内容如下
第三步:安装其中configure是一个可执行文件,执行如下命令,执行:
1234./configure --prefix=/usr/l ## 执行该配置文件make # 执行完成之后,会产生对应的makefile文件make install ## 然后再安装whereis nginx ## 使用该命令测试nginx是否安装成功
第四步:启动nginx使用whereis ...
sublime教程
1 介绍
sublime更新两点:
许可证更改:Sublime Text License 密钥(注册码)不再与独立的主要版本绑定,而是对购买后 3 年内的所有更新均有效,不过使用更新的版本需要升级 License。
支持多 tab 选项卡:方便分割视图,支持通过界面或内置命令行使用。
支持 Apple Silicon 和 Linux ARM64:Sublime Text for Mac 包含对 Apple Silicon 处理器的原生支持,Linux ARM64 builds 在树莓派等设备中可用。
全新的 UI 界面
语境感知自动补全:该版本重写了自动补全引擎,使之能够基于项目中的已有代码提供智能补全。
支持 TypeScript、JSX 和 TSX
语法定义升级:语法高亮引擎全新升级,能够处理非确定性语法、多行语句、lazy embed 和语法继承。此外,内存使用降低,加载速度更快。
GPU 渲染:Sublime Text 4 稳定版在渲染界面时,能够在 Linux、Mac 和 Windows 系统中利用 GPU,从而带来流畅的 UI 界面,分辨率最高可达 8K,且消耗的能源更少 ...
Docker教程
1 安装dockerWindows用户一般通过安装docker-desktop(点击下载),下载完成以后按照提示安装wsl2,然后才可以正常启用Docker,但是使用本镜像会导致出现container exit(139)的错误。在C:\Users\(用户名)中创建.wslconfig以我为例,创建C:\Users\zhangsan\.wslconfig文件中写入下面内容:
12[wsl2]kernelCommandLine = vsyscall=emulate
1.1 Windows10启动docker失败解决办法提示信息:
1234Docker.ApiServices.WSL2.WslKernelUpdateNotInstalledException: 引发类型为“Docker.ApiServices.WSL2.WslKernelUpdateNotInstalledException”的异常。 在 Docker.ApiServices.WSL2.WslShortLivedCommandResult.LogAndThrowIfUnexpectedExitCode(String p ...
select、poll和epoll区别
一、名词解释1.1 用户空间与内核空间现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核(kernel),保证内核的安全,操心系统将虚拟空间划分为两部分,一部分为内核空间,一部分为用户空间。针对linux操作系统而言,将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为内核空间,而将较低的3G字节(从虚拟地址0x00000000到0xBFFFFFFF),供各个进程使用,称为用户空间。
1.2 进程切换为了控制进程的执行,内核必须有能力挂起正在CPU上运行的进程,并恢复以前挂起的某个进程的执行。这种行为被称为进程切换。因此可以说,任何进程都是在操作系统内核的支持下运行的,是与内核紧密相关的。
从一个进程的运行转到另一个进程上运行,这个过程中经过下面这些变化:
保存处理机上下文,包括程序计数器和其他寄存器。
更新 PCB信息。
把进程的 PCB移入相应的队列, ...
Redis 为什么这么快?除了基于内存操作还有其他原因吗?
一、Redis为什么这么快?Redis是一个单线程应用,所说的单线程指的是Redis使用单个线程处理客户端的请求。虽然Redis是单线程的应用,但是即便不通过部署多个Redis实例和集群的方式提升系统吞吐, 从官网给出的数据可以看出,Redis处理速度非常快。
Redis性能非常高的原因主要有以下几点:
内存存储:Redis是使用内存(in-memeroy)存储,没有磁盘IO上的开销
单线程实现:Redis使用单个线程处理请求,避免了多个线程之间线程切换和锁资源争用的开销
非阻塞IO:Redis使用多路复用IO技术,在poll,epool,kqueue选择最优IO实现
优化的数据结构:Redis有诸多可以直接应用的优化数据结构的实现,应用层可以直接使用原生的数据结构提升性能
二、什么是IO多路复用技术首先说一下,什么是IO多路复用技术。
比如,现在我们模拟一个tcp服务器处理30个客户的socket,如何快速的处理掉这30个请求呢?
在不了解原理的情况下,我们类比一个实例:在课堂上让全班30个人同时做作业,做完后老师检查,30个学生的作业都检查完成才能下课。如何在有限的资源下,以最 ...
mysql索引
1 索引MySQL中的索引由MySQL来维护,不需要人为维护,MySQL中的索引分成5类:主键索引、唯一索引、普通索引、全文索引和组合索引。
主键索引:主键是一种唯一索引,但它必须被指定为primary key,每个表只能有一个主键(主键并代表只有一列数据,因为主键也可以有联合主键,即多个列的唯一即可)
唯一索引:索引列的所有值都只能出现一次,即必须唯一,但是值也可以为空,空可以出现多次
普通索引:基本的索引,值可以为空,没有唯一性的限制
组合索引:表中的多个列组成一个索引,专门用于组合搜索
全文索引:全文索引的索引类型为FULLEXT,全文索引可以在varchar、char、text类型的列上创建。
2 MySQL存储引擎MySQL有两种存储引擎,分别是InnoDB和MyISAM,他们的区别如下:
MyISAN
InnoDB
索引类型
非聚簇索引
聚簇索引
支持事务
否
是
支持表锁
是
是
支持行锁
否
是
支持外键
否
是
支持全文索引
是
是(5.6以后支持)
适合操作类型
大量select
大量insert、delete、update ...
修改xshell的配色方案
1 自己配色参考这篇博客->自己配色方案教程
自己配色方案下载
2 其他人的配色方案使用方式:
2.1 https://github.com/netsarang/Xshell-ColorScheme1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681 ...