Jiahonzheng's Blog

Jiahonzheng's Blog

You're the best mistake I've ever made.

趣说名菜“麻辣粉”
A:Hi,B 你知道吗?就在前两天,央妈宣布要创设 TMLF 啦! B:这是啥?Emmm,好像是特麻辣粉,这粉好吃吗? A:。。。 这是一篇讲解名菜“麻辣粉”的水文。 要对这碗“麻辣粉”进行美食鉴赏,我们需要了解一个概念,叫抵押贷款。 抵押贷款 银行可以将一些好资产抵押至央妈,从而得到一笔钞票用来放贷 商业银行放贷给大众的是钞票,而银行的许多资产如商业票据、有价证券等都不是钞票,是不能用来放贷的。那么问题来了,当银行手上的钞票不够放贷时,银行该怎么办呢? 碰见这种情况,银行可以把它的一些信用评级高的资产,抵押在央妈那里,进而得到可用于放贷的钞票。 上述这个过程,即被称为抵押贷款。 ...
OpenWrt h3c 客户端编译
由于 oh3c 客户端在路由器经常出现连接不稳定的情况(可能由于路由器体质不好,不能很好支撑 Python 的运行),因此决定采用由 C 语言开发的 sysuh3c 客户端。 路由器:OpenWrt 15.05 / ar71xx 坐标:中山大学东校区 环境搭建由于路由器存储空间不足以安装 gcc ,因此选择了交叉编译的方式构建客户端。为保证依赖不对宿主机造成影响,这里选择了 Docker 构建编译环境。 注意:本文使用 SDK 工具版本号为 OpenWrt 15.05。理论上来说,本篇教程适用各种版本的 SDK 和各种的路由器硬件。 Dockerfile为了构建编译镜像,我们需要编写 D...
记录黑苹果的各种问题及其解决方法
由于硬件兼容性的限制,导致我们在使用黑苹果主机时,难免会遇见各种各样的使用问题。本文记录笔者在使用过过程中所遇见的问题,及其解决方法,希望对需要的读者有所帮助。 动画卡顿在使用搭载 Navida 显卡的黑苹果主机时,可能会出现动画卡顿的问题,我们可以通过 navida-update 更新显卡驱动。 1bash <(curl -s https://raw.githubusercontent.com/Benjamin-Dobell/nvidia-update/master/nvidia-update.sh) 键盘迟缓调整 System Preferences - Keyboard 下的...
Golang 方法、接口与匿名组合
我们知道 Golang 是一门面向对象的语言,通过在 struct 和 interface 上使用组合和多态来实现继承关系,而使用组合和多态的方式包括了方法、接口与匿名组合。 方法在方法调用上,我们需要遵循以下规则。 类型 T 的可调用方法集:接收者为 T 和 *T 的方法 类型 *T 的可调用方法集:接收者为 T 和 *T 的方法 当方法的接收者为 T 时,即便是通过类型 *T 调用,该方法也操作的是对应接收者的副本, 当我们使用一个可寻址的类型 T 的值调用接收者为 *T 的方法时,Golang 将自动获取这个值的地址(指针),这也从另一个方面证实了规则一。 对于不可寻址的类型 ...
Golang 简易 RPC 框架
本文旨在讲述 RPC 框架设计中的几个核心问题及其解决方法,并基于 Golang 反射技术,构建了一个简易的 RPC 框架。 项目地址:Tiny-RPC RPCRPC(Remote Procedure Call),即远程过程调用,可以理解成,服务 A 想调用不在同一内存空间的服务 B 的函数,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。 服务端RPC 服务端需要解决 2 个问题: 由于客户端传送的是 RPC 函数名,服务端如何维护 函数名 与 函数实体 之间的映射 服务端如何根据 函数名 实现对应的 函数实体 的调用 核心流程 维护函数名到函数的...
Golang slice 知识点记录
slice 是 Go 中一种基本的数据结构,我们可以通过这种结构来管理数据集合,在开发中不定长度表示的数组全部都是 slice 。 结构定义我们可以在 Golang 的运行库实现中查看 slice 结构定义。 12345type slice struct { array unsafe.Pointer len int cap int} 按照上述的定义,我们可以通过以下的代码解析出 array 、len 和 cap。 代码地址:https://play.golang.org/p/zIJv2h4RPBa 123456789101112131415161718pac...
JavaScript new 操作符
new 原理我们可以在 ES5 官方文档中看到其对 new 创建对象过程的定义与约束: 13.2.2 [[Construct]] When the [[Construct]] internal method for a Function object F is called with a possibly empty list of arguments, the following steps are taken: Let obj be a newly created native ECMAScript object. Set all the internal methods of ...
NAT 网络地址转换
介绍我们知道 IPv4 协议提供的 IP 地址是有限的,为了解决 IP 地址不足的问题,于是就有了 NAT 网络地址转换技术,它的思想就是给一个局域网络分配一个 IP 地址就够了,对于这个网络内的主机,则分配私有地址,这些私有地址对外是不可见的,他们对外的通信都要借助那个唯一分配的 IP 地址。 实现方式Static NAT静态转换是指将内部网络的私有 IP 地址转换为公有 IP 地址,映射关系为一对一关系,是一成不变的,某个私有 IP 地址只转换为某个公有 IP 地址。借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问。 Dynamic NAT动态转换是指将内部...
容器化部署 Jupyter
Jupyter 介绍Jupyter Notebook 是基于网页的用于交互计算的应用程序,其可被应用于全过程计算:开发、文档编写、运行代码和展示结果。 我们知道 Docker 是一种软件容器平台,是部署应用的利器。在本篇文章中,我们通过 Jupyter Docker Stacks 快速搭建机器学习的学习环境。 Docker 部署文件目录我们打算将容器的存储卷与本地的 Jupyter/ 挂载,从而实现容器数据的持久化存储。 1mkdir Jupyter 为避免在使用容器的过程中,出现权限问题,我们可以更改文件夹的使用权限。 1sudo chmod -R 777 Jupyter/ 在完成以...
Virtualenv 的安装与配置
Virtualenv 介绍有时我们在开发多个 Python 应用程序时,可能会出现以下情形: A 应用需要运行在 Python 3.6 解释器上,需要版本号为 0.10.1 的 C 包,而 B 应用需要运行在 Python 2.7 解释器上,需要版本号为 0.12.1 的 C 包。 在这种情形下,为避免出现安装包管理混乱,我们需要给每个应用创造独立、隔离的 Python 运行环境。而 Virtualenv 就是用来为一个应用创建一套“隔离”的 Python 运行环境。 安装使用 Virtualenv我们可以通过以下命令安装 Virtualenv 。 1pip install virtua...
Jiahonzheng
Mr.Tseng