Midk9t's Blog

如何使用gin-jwt实现用户登录模块

Jwt简介 Jwt就是Json Web Token,它是RFC 7519定义的一种令牌结构,一般用于服务端在客户端认证成功后返回给客户端保存,假如客户端后续在http请求头带上这个令牌,那么就可以证明它的身份,实现免登录。

记录一次家庭网络异常排查与解决

一次突然的网络异常 在气温骤降到9度的晚上,我正就着百威吃烧鸡,不亦乐乎地看新出的三体电视剧(不得不说剧版高度忠于原著,比动画版不知道高到哪里去了,后者真正让我明白什么叫改编就是胡编,简直是无语透了)。而视频却突然卡在汪淼与丁仪对话的画面一动不动,仿佛是想让我多回忆一下小说里面的丁仪是不是这副艺术家模样。此时我只好脱下塑料手套点击鼠标重新加载网站。然后就看到了这个画面: 我网断了? 抱着疑问打开b站测试网络可达性,然后看到这个画面: 嗯?b站证书无效? 打开证书看看: 嗯??怎么b站证书变成了miwifi的证书?

Django migration原理简述

前阵子面试的时候突然被问到Django的migration原理,还让我有多仔细讲多仔细,面试官明显吃透了这个机制要考考我,当时就跪了。。。抛开半年没有碰django项目不谈,本身对migration背后的原理确实了解不深。当时还有点嗤之以鼻,觉得用的时候或者碰到问题的时候再查就好了,然而抛开不懂知识点面试就得跪不说,在认真了解一下django migration原理后,我发现它实际上是一个十分值得学习的数据库表同步的实现,今天在这里做下记录。

如何在Python中动态地创建Class

在Python中,类也是一个对象,比如说,我们可以实现一个返回类的函数: def createClass(inner_attr): class NewClass(object): attr = inner_attr return NewClass 这与静态语言有很大的不同,可以看见NewClass这个类是在运行时创建的,而静态语言实现起来十分麻烦。能够动态创建类的能力在某些时候可以优雅地实现一些功能(见下文)。而要实现动态地创建自定义类,则需要了解Python类创建的原理。

浅谈为什么进程阻塞时不占用CPU

内核接收数据流程 讨论这个问题,我们需要先大致回顾一下内核接收数据时的过程: 网卡接收数据后,通过DMA写入内核的ring buffer,然后通过软中断和硬中断通知内核有数据到达。 内核派出一个专门线程ksoftirqd 从ring buffer中获取数据帧,用sk_buff表示,然后传入网络协议栈进行处理。 协议栈按照MAC→IP→TCP/UDP的顺序逐层校验sk_buff的报文头,判断是否是发给本机用户程序的数据。 内核按照源目端口和源目IP四元组找到对应的Socket,把数据写入Socket的接收缓冲区。 用户进程对应的系统调用把内核Socket缓冲区的数据拷贝到应用层的缓冲区,然后唤醒用户进程。 Linux的进程调度 在Linux中,进程大致有7种状态: