如何写好一篇计算机技术博客?
这个答案由四部分组成:
博客的四种类型
不同文章类型的写作要点
如何写博客
如何收集写作的灵感
博客的四种类型首先,我将技术博客分为下面几种类型:
技术细节型(Handbook)。频率: 每周多次,15~30分钟可以写完。
干货型(Article)。频率: 每月几次,1~2小时可以搞定。
实践总结型(Tutorial)。频率: 每周1~2次,2+小时以上的时间。
杂谈与鸡汤型(Essay)。频率: 每季度几次,少则几小时,动则上月。
博客的用户来源图:
前三者可以带来很多的流量,后者可以带来大量的评论啦。
前三者可以让你在Google上有一个好位置~~,后者可以让你在用户心中有个好位置。
通过社交媒体可以让第四种类型的文章,有大量的评论和转载。
干货型和实践总结型的文章通过聚合网站来传播的效果最好。
不同文章类型的写作要点接着, 让我们再看看上面的几种类型:
技术细节型(Handbook)这种类型主要来自于日常工作,但是好像写这一类的人不多。每天我们都会遇到不同的技术问题——如某个第三库更新,某个浏览器bug,如何使用某个技术。因此,我们就会用这样的关键字和词去搜索,反正大部 ...
HTTPs证书验证 代码级过程
1. 浏览器出厂时预装了“根公钥池”
Windows:注册表 HKLM\SOFTWARE\Microsoft\SystemCertificates\ROOT\Certificates\
macOS:钥匙串 “System Roots”
Firefox:自己维护 cert9.db 每条记录里最重要的两个字段:
复制
1234Subject : CN=DigiCert Global Root G3 Subject Public Key Info : Algorithm=RSA (1.2.840.113549.1.1.1) Modulus = 0x9E...(2048-bit 整数)
浏览器就是把这段 modulus 当作“官方公钥”来用,攻击者无法篡改。
2. 服务器发来的证书链(以 TLS 1.2/1.3 为例)抓包可以看到三条证书:
复制
123Certificate[0] : 服务器叶子证书(*.example.com) Certificate[1] : 中间 CA “DigiCert TLS Hybrid ECC SHA384 2 ...
索引 深度全解
索引是什么
[!tip] 小结口诀:无索引一条线扫到底,有索引三层抽屉跳 log;主键树挂整行,二级树回表再取;联合列要像邮编,最左前缀别跳级
简单理解,索引,就是一个“表”,是一个有序排列的键值对集合,键是建索引时选取的field,值是field value对应的数据行。
索引是为了加速对表中数据行的检索而创建的一种分散存储的数据结构。其工作机制如下图:上图中,如果现在有一条sql语句 select * from user where id = 40,如果没有索引的条件下,我们要找到这条记录,我们就需要在数据中进行全表扫描,匹配id = 13的数据。
如果有了索引,我们就可以通过索引进行快速查找,如上图中,可以先在索引中通过id = 40进行二分查找,再根据定位到的地址取出对应的行数据。
索引为什么用B+树实现按列表全部读取为什么不可行既然索引是目录,那为什么不可以直接把目录当作一个有序的列表,全额读取进内存,再按顺序查找关键字对应的数据呢?一是因为全额读取数据量大;而是因为顺序查找速度较慢;
二叉查找树为什么不可行对数据的加速检索,首先想到的就是二叉树,二叉树 ...
HTTPs 深度全解
1、HTTPS是什么?HTTPS就是经过加密解密后的HTTP。HTTPS 也是一个应用层协议,是在 HTTP 协议的基础上引入了一个加密层。
那HTTP协议为什么要加密呢?因为HTTP本身很不安全!HTTP 协议内容都是按照文本的方式明文传输的. 这就导致在传输过程中出现一些被篡改的情况。
2、概念准备2.1.什么是加密、解密、密钥
加密:就是把明文 (要传输的信息)进行一系列变换, 生成密文
解密:就是把密文再进行一系列变换, 还原成明文 .
密钥:在这个加密和解密的过程中, 往往需要一个或者多个中间的数据, 辅助进行这个过程, 这样的数据称为密钥
2.2.为什么要加密案例,臭名昭著的 “运营商劫持“:
下载一个 天天动听,未被劫持的效果:点击下载按钮, 就会弹出天天动听的下载链接.
已被劫持的效果, 点击下载按钮, 就会弹出 QQ 浏览器的下载链接
客户端与服务端进行通信不是直接进行通信的,而是通过第三方的运营商进行信息的中转。作为中间人的运营商就能够看到客户端和服务端通信的信息是是什么,这样势必会造成用户隐私的泄漏!
在互联网上, 明文传输是比较危险的事情!!!HTTPS 就 ...
Python面向对象
Python 面向对象
一切皆对象:所有的数据类型都是对象
对象的主要属性
identity(ID)
对象在堆中的内存地址
用id(obj)获取
type
对象的类型
用type(obj)获取
value
对象的值
用print(obj)获取
对象的存储结构
变量
Python中变量是指针
存于栈中
储存堆中对象的地址
对象
本质是一个内存块
存于堆中
对象类型
可变对象
列表
字典
集合
不可变对象
元组
字符串
数值
对象方法
静态方法 @staticmethod
类方法 @classmethod
最少也要包含cls参数绑定类本身
类实例方法 \普通的方法
最少也要包含self参数绑定调用自己的对象
常见方法
super()
在子类中调用父类的方法
多继承:super(E, self).funxx()
new(cls)
分配空间,创建一个空对象,相当于java中的new
init(self)
对象创建后,对其进行初始化的方法,相当于构造方法
_call(self)
让对象可以加括号()调用,a = A()
会先_ ...
Python基础
Python基础
特性
面向对象 – 一切皆对象
解释型语言 – 无需编译
跨平台性
本身解释运行速度较慢
基础功能
Python 面向对象
判断
is 判断地址
== 判断值
赋值
赋值
浅拷贝
深拷贝
语法糖
装饰器 @
迭代器 iterator
一种机制,实现迭代协议的两个方法的类对象可以使用
__iter__方法
__next__方法
生成器 generator
本质是迭代器通过函数实现
yield关键字类似return
只从头到尾迭代一次,若找不到下一个yield会报StopIteration异常
需先执行得到生成器然后赋值给变量,用next()执行
匿名函数 lambda
函数
参数
位置参数
*args 元组
关键字参数
**kwargs 字典
参数传递
在 Python 中,本质都是拷贝对象的引用(指针)传递
字符串处理
列表处理
切片[start:end:step]
包含start不包含end
默认[0:length:1]
负数索引表示倒数第几个元素
负数步长表示从尾向头
Python面向对象
Python高级
装饰器语法
解包语法
a, b, c = list
列表推导式语法
[expression for item1, item2 in list if condition]
lambda匿名函数
向函数传入函数或让函数返回函数最终实现代码的解耦合
单例模式
让一个类只能创建出唯一的实例
保证一致,状态共享
项目中使用的数据库连接池对象和配置对象通常都是单例
元类 Metaclass
用来创建类的类
将元类指定为类的metaclass关键字参数
仅在必要时使用元类。元类是高级编程工具,通常不需要在日常编程中使用。
线程安全,进程安全
垃圾回收
去重
Python不同的解释器的特性
Cpython
性能优化
把频繁使用的整数对象区间[-5, 256]用一个叫 small_ints 的对象池缓存起来,一直使用
同一个代码块中已经存在一个值与其相同的整数对象,则直接引用该对象,否则才建新对象
PyPy
hexo史上最全搭建使用教程
hexo史上最全搭建使用教程背景
花了几天搭建了个网站,先上链接,欢迎来访:Quasar的个人博客
现在市面上的博客很多,如CSDN,博客园,简书等平台,可以直接在上面发表,用户交互做的好,写的文章百度也能搜索的到。缺点是比较不自由,会受到平台的各种限制和恶心的广告。
而自己购买域名和服务器,搭建博客的成本实在是太高了,不光是说这些购买成本,单单是花力气去自己搭这么一个网站,还要定期的维护它,对于我们大多数人来说,实在是没有这样的精力和时间。
那么就有第三种选择,直接在github page平台上托管我们的博客。这样就可以安心的来写作,又不需要定期维护,而且hexo作为一个快速简洁的博客框架,用它来搭建博客真的非常容易。
Hexo简介Hexo是一款基于Node.js的静态博客框架,依赖少易于安装使用,可以方便的生成静态网页托管在GitHub和Coding上,是搭建博客的首选框架。大家可以进入hexo官网进行详细查看,因为Hexo的创建者是台湾人,对中文的支持很友好,可以选择中文进行查看。
教程分三个部分,
第一部分:hexo的初级搭建还有部署到github page上,以及个人域名的绑 ...
k8s初体验-minikube突破隔断访问限制(以nginx为例)
minikube部署对外访问配置我们现在大家都知道了 minikube集群相当于k8s的一个虚拟机。
同时pod每次消亡重建之后都会分配一个虚拟的ip,这个ip可供集群内部访问,但是如果要对外访问呢?
我们可以给他暴露ip出来,但是如果pod宕机后重建ip就发生了变化,所以不能对pod进行ip的暴露。
那应该对什么进行暴露呢?
我们首先需要了解service,简而言之,为了解决pod动态变化的虚拟ip,因此service 相当于某组pod的外部访问接口。因此我们对service为单位进行ip的暴露即可。这同时也解决了在minikube中一开始学习的时候必须要进入minikube之后才可以访问pod的问题。
1234567891011121314151617181920212223242526272829303132333435lucky@thinkcentre:/work/k8s$ kubectl expose deploy nginx --name=svc-nginx1 --type=ClusterIP --port=80 --target-port=80 -n devservi ...
k8s初体验---nginx(pod)部署并访问
k8s初学习—基于k8s部署nginx创建命名空间dev
1kubectl create ns dev
运行nginx
1kubectl run nginx --image=nginx:1.17.1 --port=80 --namespace=dev
查看某个命名空间下的pod的信息 根据pod-name
1kubectl get pod nginx -n dev
试试访问pod
1curl 172.17.0.5:80
很尴尬 不能访问 果然教程不帮你踩坑。
问了chatgpt,给出几种方案。我试了第一种
首先 我用minikube ssh指令之后 进入minikube内部,再访问居然成功了。
接下来我继续问chatGPT这是为什么 ?
但是实际上我测试了一下都是正常的 chatgpt并没有帮我解决?
接下来就问了师兄,师兄一语中的,师兄总是那么神。
所以chatGPT其实有的时候也并不是那么神啦!!!
到此结束!






