抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

前言

众所周知,开发低耦合系统是软件开发的终极目标之一。低耦合的系统更加容易扩展,低耦合的模块更加容易复用,更易于维护和管理。我们知道,消息队列的主要功能就是收发消息,但是它的作用不仅仅只是解决应用之间的通信问题这么简单。消息队列作为常用的中间件,经常被用来对系统解耦,对模块解耦。增强系统的可扩展性和模块的可复用性。

除了对用于对系统、模块解耦,消息队列还有以下几种通途:

  • 服务异步处理
  • 流量控制
  • 作为发布 / 订阅系统实现一个微服务级系统间的观察者模式
  • 连接流计算任务和数据
  • 用于将消息广播给大量接收者

事物的存在总会有对立的一面,引入消息队列可能会带来延迟问题、产生数据不一致的问题、增加系统复杂度的问题等等。

前言

最近面试发现自己不懂的东西还是很多的,写一波文章来巩固和挖掘欠缺的知识点以及加深对已有知识点原理的理解。

无知.jpg

前言

完残!😂,最近看之前写的 Python 代码老得琢磨这比变量的类型是啥(Python 无类型系统xxx),不愧是我写的!

看段之前写的实现迭代器模式的代码:

前言

洞悉技术的本质,可以让我们在层出不穷的框架面前仍能泰然处之。用了那么久的 Git,不懂点内部原理,那可不行!懂点原理可以让我们遇到问题的时候能够更好更快的理清解决问题的思路。

要真正读懂本文可能需要以下基础:

  • 有 Git 使用经验
  • 对 Git 的三个分区有所了解
  • 熟悉常用的 Linux 命令
  • 对经典哈希算法有一定的了解,比如SHA-1、SHA-256、MD5等

在开始之前,让我们先抛出几个问题,然后一一解决、回答它们

  • .git版本库里的文件/目录是干什么的?
  • Git是如何存储文件信息的?
  • 当我们执行git add、git commit时,Git背后做了什么?
  • Git分支的本质是什么?

前言

新的一年,开始水第一篇技术文。碰巧最近React玩得多,撸一篇文章纪念一下开发环境的搭建。🤔

  • 开篇两问:
    • 什么是React?:React,用于构建用户界面的 JavaScript 库(官网复制粘贴,真香,不用怎么写template了,舒服
    • 什么是Flask?:一个使用Python编写的轻量级Web应用框架。用来写云原生应用很香!

先看下最终的项目结构,如下:《项目源码》

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
├── 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

banner

序列化与反序列化

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(解封)

听说函数式编程很⑥,咱也不知道,咱也不晓得,还没实际用过。emmm。。。。,先mark下Python中和函数式编程有关的部分功能先,又开始水了,立个flag🚩:慢慢完善

map

先看下Python官方文档的说法

map(function, iterable, …),返回一个将 function 应用于 iterable 中每一项并输出其结果的迭代器。 如果传入了额外的 iterable 参数,function 必须接受相同个数的实参并被应用于从所有可迭代对象中并行获取的项。

见识一下

1
2
3
4
5
6
7
8
9
10
11
12
>>> 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']