洞悉技术的本质-Git内部原理探索

前言 洞悉技术的本质,可以让我们在层出不穷的框架面前仍能泰然处之。用了那么久的 Git,不懂点内部原理,那可不行!懂点原理可以让我们遇到问题的时候能够更好更快的理清解决问题的思路。 要真正读懂本文可能需要以下基础: 有 Git 使用经验 对 Git 的三个分区有所了解 熟悉常用的 Linux 命令 对经典哈希算法有一定的了解,比如SHA-1、SHA-256、MD5等 在开始之前,让我们先抛出几个问题,然后一一解决、回答它们 .git版本库里的文件/目录是干什么的? Git是如何存储文件信息的? 当我们执行git add、git commit时,Git背后做了什么? Git分支的本质是什么?

Git

React+Flask打造前后端分离项目开发环境

前言 新的一年,开始水第一篇技术文。碰巧最近React玩得多,撸一篇文章纪念一下开发环境的搭建。🤔 开篇两问: 什么是React?:React,用于构建用户界面的 JavaScript 库(官网复制粘贴,真香,不用怎么写template了,舒服 什么是Flask?:一个使用Python编写的轻量级Web应用框架。用来写云原生应用很香! 先看下最终的项目结构,如下:《项目源码》 12345678910111213141516171819├── app.py├── env| ├── Include| ├── Lib| ├── LICENSE.txt| ├── Scripts| └── tcl├── frontend| ├── build| ├── node_modules| ├── package-lock.json| ├── package.json| ├── public| ├── README.md| └── src├── static| └── js└── templates └── index.html

React

2019 年总结

随笔

愿和平永驻人间

memory

❤Thanksgiving❤

随笔

Serialization and Deserialization

序列化与反序列化 Serialization:Data Structure/Object --> Binary String Deserialization:Binary String --> Data Structure/Object Goals:Cross-platform Communication、Persistent Storage and More Python中对象的序列化与反序列化 pickle module pickle 仅可用于 Python,pickle所使用的数据流格式仅可用于 Python pickle 模块可以将复杂对象转换为字节流,也可以将字节流转换为具有相同内部结构的对象。 可被pickling和unpickling的对象:https://docs.python.org/zh-cn/3/library/pickle.html#what-can-be-pickled-and-unpickled pickle提供了优秀的方法方便我们对对象进行pickling(封存)和unpickling(解封)

Python

map-filter-reduce

听说函数式编程很⑥,咱也不知道,咱也不晓得,还没实际用过。emmm。。。。,先mark下Python中和函数式编程有关的部分功能先,又开始水了,立个flag🚩:慢慢完善 map 先看下Python官方文档的说法 map(function, iterable, …),返回一个将 function 应用于 iterable 中每一项并输出其结果的迭代器。 如果传入了额外的 iterable 参数,function 必须接受相同个数的实参并被应用于从所有可迭代对象中并行获取的项。 见识一下 123456789101112>>> def cook(something):... if something == "cow":... return "hamburger"... elif something == "tomato":... return "chips"... elif something == "chicken":... return "ddrumstick"... elif something == "corn":... return "popcorn"...>>> list(map(cook, ["cow", "tomato", "chicken", "corn"]))['hamburger', 'chips', 'ddrumstick', 'popcorn']

函数式编程

git clone后如何checkout到remote branch

what/why 通常情况使用git clone github_repository_address下载下来的仓库使用git branch查看当前所有分支时只能看到master分支,但是想要切换到其他分支进行工作怎么办❓ 其实使用git clone...

Git

使用Microsoft Edge Beta将网页变成应用

今天无聊的我打开了装了很久都没用的Microsoft Edge Beta,一波乱戳,惊讶的发现Microsoft Edge Beta居然有将网页打包为应用的功能😂 B站也有PC"客户端"了,真香😂

随笔

简单感受下Python内置数据类型常用操作的性能

生成一个列表的几种方式的性能对比 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152# -*- coding: utf-8 -*-from timeit import Timerimport matplotlib.pyplot as plt# 列表常用操作性能测试# 迭代 + '+'def test1(): l = [] for i in range(1000): l = l + [i]# 迭代 + appenddef test2(): l = [] for i in range(1000): l.append(i)# 列表生成式def test3(): l = [i for i in range(1000)]# list构造函数 + rangedef test4(): l = list(range(1000))t1 = Timer("test1()", "from __main__ import test1")# print("concat %f seconds" % t1.timeit(number=1000))t2 = Timer("test2()", "from __main__ import test2")# print("concat %f seconds" % t2.timeit(number=1000))t3 = Timer("test3()", "from __main__ import test3")# print("concat %f seconds" % t3.timeit(number=1000))t4 = Timer("test4()", "from __main__ import test4")# print("concat %f seconds" % t4.timeit(number=1000))result = [t1.timeit(1000), t2.timeit(1000), t3.timeit(1000), t4.timeit(1000)]method = ["for+ '+'", "for + append", "list comprehension", "list + range"]plt.bar(method, result, color='rgby')# plt.legend('concat time')# print(zip(method, result))for x,y in zip(method, result): plt.text(x, y, "%fs" % y)plt.show()

Python
167891017