进阶代码 ***************************** Buffer ================================= .. tabs:: .. tab:: NodeJs .. code-block:: javascript // 1. alloc let buf = Buffer.alloc(10); console.log(buf); // 2. alloucUnsafe let buf_2 = Buffer.allocUnsafe(10000); console.log(buf_2); // 3. from let buf_3 = Buffer.from('hello'); // 转二进制 console.log(buf[0].toString(2)); console.log(buf_3); let buf_4 = Buffer.from([105, 108, 111, 118, 101, 121, 111, 117]); console.log(buf_4); // buffer与字符串的转换 console.log(buf_4.toString()); 文件的读取操作 ================================= 文件编码概念 编码技术即: 翻译的规则,记录了如何将内容翻译成二进制,以及如何将二进制翻译回可识别的内容。 计算机中可用编码: * UTF-8 * GBK * Big5 * 等 不同的编码,将内容翻译成二进制也是不同的。 UTF-8是目前全球通用的编码格式 除非由特殊需求,否则,一律以UTF-8格式进行文件编码即可。 .. tabs:: .. tab:: Python .. literalinclude:: /../../advancedCode/io/main.py .. tab:: Nodejs .. literalinclude:: /../../Js/nodejs/docs/P16_fs模块_写入文件/1-文件写入.js :language: javascript .. include:: json.rst 高阶函数和可调用对象上的操作 ========================================= 缓存树形(cached_property) -------------------------------- https://docs.python.org/zh-cn/3.10/library/functools.html#functools.cached_property 使用案例: v4.2.X django.core.cache.backends.redis.RedisCache 懒加载redis连接 .. code-block:: python class RedisCache(BaseCache): def __init__(self, server, params): super().__init__(params) if isinstance(server, str): self._servers = re.split("[;,]", server) else: self._servers = server self._class = RedisCacheClient self._options = params.get("OPTIONS", {}) @cached_property def _cache(self): # 在第一次使用时才实例化redis对象,且缓存下来 return self._class(self._servers, **self._options) 多线程 ======================= todo socket ==================== todo 正则表达式 =================== todo 递归 ================= todo