====================
== Hi, I'm Vimiix ==
====================
Practice makes perfect (ง •̀_•́)ง

《算法图解》读书笔记1-二分和大O

algorithms Linux

算法是一组完成任务的指令

为什么要学习算法

这次是我第二次读《算法图解》,当我第一次看这本书的时候,我更兴奋于书中有什么内容,迫不及待的去过内容,学习那些算法概念。但当我第二次准备开始读这本书的时候,我脑海中出现的了一个问题:“为什么要学习算法?”,这个问题也许会有人和我一样,之前根本没有好好的去思考,只是知道,作为一个程序员我应该学习算法。当然,能够有这个觉悟,说明我们还算是个合格的程序员。

但是,不妨认真思考一下,为什么要学习算法?算法应该怎么学?

Read more...

TLPI笔记—深入文件I/O模型

tlpi Linux note I/O

原子操作和竞争操作

所有的系统调用都是以原子操作方式执行的。之所以这么说,是指内核保证了某系统调用中的所有步骤会作为地理操作而一次性加以执行,期间不会被其他进程或线程中断。原子性规避了竞争状态(race condition),竞争状态指:操作共享资源的两个进程(或线程)其结果取决于一个无法预期的顺序,即这些进程或线程获得 CPU 使用权的先后相对顺序。

Read more...

TLPI笔记—通用文件I/O模型

tlpi Linux note I/O

文件描述符

所有执行 I/O 操作的系统调用都是以文件描述符,一个非负整数来指代打开的文件。文件描述符用以表示所有类型的已打开的文件,包括管道(pipe)、FIFO、socket、终端、设备和普通文件。每个进程都各自独立维护着一张文件描述符表。

标准文件描述符

文件描述符用途POSIX 名称stdio 流
0标准输入STDIN_FILENOstdin
1标准输出STDOUT_FILENOstdout
2标准错误STDERR_FILENOstderr
Read more...

TPLI笔记—linux/unix标准和历史

tlpi Linux note POSIX

前言

最近开始阅读《Linux/Unix 系统编程手册》 这本书,重新系统的学习一下 linux 系统编程方面的知识。

在阅读完第一章《历史和标准》以后,对于很多标准名词都见过,但是对于他们之间的发展历程很是模糊,通读这部分内容后豁然开朗,尤其本章最后总结部分,对于前面的概况的既简练还没有遗漏。不禁在书上用笔写下:“牛 B 总结,一气呵成”

方便以后不去翻书回顾,特花点时间摘录至此。

Read more...

[python]记录关于websocket的原理和使用

Python websocket note django

什么是 websocket

WebSocket 是一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

Websocket 是一个持久化的协议,相对于 HTTP 这种非持久的协议来说的。

举个例子:

HTTP 的生命周期通过 Request 来界定,也就是发送一次 Request,收到一次 Response ,那么在 HTTP1.0 中,这次 HTTP 请求就结束了

在 HTTP1.1 中进行了改进,使得有一个 keep-alive,也就是说,在一个 HTTP 连接中,可以发送多个 Request,接收多个 Response。但是请记住 Request = Response , 在 HTTP 中永远是这样,也就是说一个 request 只能有一个 response。而且这个 response 也是被动的,不能主动发起。

而对于 websocket 来说,在 HTTP 的握手基础上建立起链接,服务器端可以主动的向客户端发送数据。

Read more...

[笔记]git push卡主不动问题记录:Git push hangs on POST git-receive-pack

git note solution

问题

昨天完成了《一个完整的 Django 入门指南》 - 第 6 部分的翻译工作,本地在翻译的过程中,存储了十几张原文中的 png 格式的插图。

git push 提交 github 仓库的时候,终端显示写成功 100%, 但是一直卡在了下面这里没有推送成功:

Counting objects: 21, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (21/21), done.
Writing objects: 100% (21/21), 1018.52 KiB | 17.87 MiB/s, done.
Total 21 (delta 7), reused 0 (delta 0)
# 卡在这里
Read more...

[Python]使用pipenv管理python虚拟环境

pipenv autoenv Python virtualenv

前言

近期的项目中,我开始尝试着从 virtualenv 管理 python 虚拟环境,切换到用 pipenv 来管理。

经过一段时间的使用,着实觉得 pipenv 使用的更加顺手,更加的便捷。这当然也延续了 Kenneth 大神一贯的项目作风– For Humans

再配合上 autoenv(自动激活虚拟环境的工具),更加的 Perfect!

Read more...

[Python]Uvicorn初体验

uvicorn web Python asyncio

uvicorn 简介

uvicorn是一个基于asyncio开发的一个轻量级高效的 web 服务器框架。

官网:http://www.uvicorn.org

uvicorn 设计的初衷是想要实现两个目标:

它目前支持httpwebsocketsPub/Sub 广播,并且可以扩展到其他协议和消息类型。

Read more...

[算法笔记]动态规划之最长公共子串和最长公共子序列

动态规划 algorithms Python

本文是《算法图解》笔记

应用场景

一切脱离实际应用场景的算法都是耍流氓!

  • 生物学家根据最长公共序列来确定 DNA 链的相似性,进而判断两种动物或疾病有多相似。最长公共序列还被用来寻找多发性硬化症治疗方案。
  • 源代码管理中,git diff指令,可以查找出编辑前后文件的差异,这是基于动态规划实现的。
  • 编辑距离(levenshtein distance),判断字符串的相似程度,也是基于动态规划计算。可以通过这个技术从拼写检查到判断用户上传的资料是否是盗版。(这样看来,我猜想大学论文查重应该也是基于动态规划算法:P
  • Microsoft Word 等软件中具有断字功能,使用动态规划可以确定什么地方断字以确保行长一致。
Read more...

[Jenkins]Error:403 No valid crumb was included in the request

CI ERROR jenkins csrf

错误备忘

配置 jenkins 的时候,一直报这个错,是因为 jenkins 默认安全设置里面开启了 防止款站点请求伪造

Read more...
上一页 4 of 8 下一页