- 博客(97)
- 资源 (11)
- 收藏
- 关注
原创 Python:#error architecture not supported
有时安装python相关的依赖包会报如题所示的错误,主要和CPU架构有关,因为不同的CPU架构可能会使用不同的指令集(复杂指令集/精简指令集)。我当时是在MAC电脑上操作的,应该是默认把我的CPU当作了ARM64架构。因此它提示了这个错误。鉴于此,我们需要手动告诉它我们的CPU是什么架构,以此来阻止它自己想入非非,擅自作主。例如我在使用命令‘pip install psycopg2’安装psycopg2时,出现如下报错提示:解决方法:ARCHFLAGS="-arch x86_64" pip in
2021-01-13 17:38:37
2077
4
原创 Centos7下使用CMake
在进行需要提供跨平台服务的项目时,最好有相应的跨平台项目构建工具。本文所述的CMake即其中比较好用的跨平台构建工具之一。下文主要以C++语言为例进行使用演示。安装C++所需的环境:yum install -y gcc gcc-c++ make automake安装wget工具:yum install -y wget下载CMake工具:wget http://www.cma...
2020-03-22 11:52:40
3993
原创 从0实现分布式任务调度系统--etcd基础操作
下载: etcd-v3.3.18-linux-amd64.tar.gz ;解压: tar -zxvf etcd-v3.3.18-linux-amd64.tar.gz解压后的情况如下:其中etcd是服务端程序,etcdctl是客户端程序。 2. 启动etcd服务(后台启动,并监听公网IP,默认只监听localhost):nohup ./etcd --listen-cl...
2020-02-29 20:39:45
1616
原创 获取COM接口CoCreateInstance启动的进程PID
CoCreateInstance是一个让COM变得更加有趣和可用的工具。然而,它并没有让你知道一个非常重要的信息——新启动的进程的id。也没有其他的API可以告诉我们这一点。这就是微软所谓的设计。当我们启动像Excel或者PowerPoint时,问题就出现了。当你需要它们提供服务的时候,他们做得很好。但去尝试让他们退出,你就要开始抓狂了。一些Excel流程是不可能消失的。然后你就会明白为什么你...
2020-02-23 17:57:21
1576
原创 从0实现分布式任务调度系统--实现cron表达式定时任务
在Linux下会经常使用cron表达式完成一些定时任务。下面通过git上的一个项目来达到类似的效果。获取资源:https://github.com/gorhill/cronexpr该包一共支持如下7个时间粒度设置,分别是:秒级,分,小时,日期,月份,星期,年份。各个支持的符号说明如下:“*”字符代表所有可能的值。“-”表示指定范围。“,”表示列出枚举值。“...
2020-01-11 14:42:19
460
原创 从0实现分布式任务调度系统--MongoDB基础操作
系统环境Centos7,下载并解压 mongodb-linux-x86_64-3.0.6.tgz进入解压后的目录,使用mkdir 命令新建一个 data 目录:启动MongoDB服务: nohup bin/mongod --dbpath=./data --bind_ip=0.0.0.0 &使用 bin/mongo命令连接MongoDB进行测试:...
2020-01-07 21:21:13
428
原创 多服务端实现配置文件实时同步 --lsync+rsync
很多企业需要多台服务器提供某个服务已经司空见惯了,当我们需要修改某个配置文件的时候,为了统一所有服务器上的配置,就需要文件同步的功能。不然一个个服务器去拷贝的话,一方面比较麻烦,另一方面也容易产生遗漏等问题。rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。lsync 是lua语言封装...
2019-09-09 15:47:22
1870
原创 libevent+inotify实现配置文件实时读取
有些配置文件需要被频繁使用,但是又需要支持根据“场景”进行模式切换。如果每次都重新读取势必影响服务响应效率,折衷的方式是定时重新读取,比如5分钟。但最好的方式是在真正需要的时候在重新读取,即,文件修改之后。那么如何得知所关注的文件已经被修改?Inotify 是一个Linux特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙...
2019-09-07 19:49:54
672
原创 Json解析 --JsonCpp
1、下载scons http://sourceforge.net/projects/scons/files/scons/2.1.0/scons-2.1.0.tar.gz/download2、解压scons-2.1.0.tar.gztar-zvxf scons-2.1.0.tar.gz 3、进入到解压目录scons-2.1.0下面,执行命令:sudopython setup....
2019-09-07 19:40:14
285
原创 Xml解析 --TinyXML-2
TinyXML-2 是小巧、精简且高效的C++ XML 解析库,可以被方便地应用到其他项目中。github: https://github.com/leethomason/tinyxml2简而言之,tinyxml-2是一个xml解析器,从xml文档构建一个可以读取、修改和保存的文档对象模型(dom)。有多种方法可以访问XML数据并与之交互。TinyXML-2使用的是文档对象模型(DOM...
2019-09-07 19:29:50
988
原创 Ini解析 --iniparser
Iniparser是针对INI文件的解析器。ini文件则是一些系统或者软件的配置文件。Iniparser库的API可以对ini文件(配置文件)进行解析、设置、删除等操作。下载iniparser:Github:https://github.com/ndevilla/iniparser主要代码都在src目录下:其中dictionary.h里面声明了一些直接解析ini file的API...
2019-09-07 19:20:42
3280
原创 Paxos算法(不考虑拜占庭)
前置说明:不论在哪个阶段,客户端在没有成功执行完命令时,“再次尝试”都是进入阶段1而非初始化阶段。逻辑伪码如下:---------------------------------------------------------------------------------------------------------------------------------客户端(提案者...
2019-09-04 17:13:57
1069
原创 Linux内核(linux-5.2.9)--内核对象(对象的引用计数)
一个分配好的内存对象可能会在多种场景中被多次传递并使用,在这种情况下,为了能够正确的使用内存对象,引入了“引用计数”功能。防止内存泄漏:确保已分配的对象最终都会被正确释放; 防止访问已释放的内存:确保不会使用已经被释放的对象。 数据结构 kref 为任何内存数据结构添加引用计数提供了一种简单但有效的方法。Kref相关的定义如下:struct kre...
2019-08-29 14:40:43
3522
原创 Linux内核(linux-5.2.9)--内核对象(类型无关的双循环链表)
前一段时间学习了Linux源码,过程比较艰辛。虽说工作中也不会去开发操作系统,但“他山之石可以攻玉”,其中的设计思想和解决方案还是可以参考的嘛。抽空陆续把所学的模块整理一下,方便后面及时参阅,温故知新。 内核对象是一种统称,驱动、设备、总线类型等都可以看作是内核对象。表示内核对象的结构是kobject,相当于Linux驱动模型的“基类”。kobject的定义如下(...
2019-08-28 14:11:23
1211
原创 解决ssh-copy-id时出现Host key verfication failed错误
部署分布式集群时常常会需要配置免密登录。一开始操作正常,但是后面由于系统故障重装了其中一个节点,再次执行ssh-copy-id分发秘钥就报了“Host key verification failed”错误。解决命令:ssh-keygen -R 目标IP地址ssh-keygen 的参数说明可以参考: https://www.iteye.com/blog/kille...
2019-08-24 10:17:14
5847
1
转载 一张图看懂零维到十维空间
事情是这样的,这周我给学生讲3dmax的课。为了让学生了解三视图我就顺便科普了一下什么是零维、一维、二维、三维空间。讲完不过瘾,感觉一支粉笔一块黑板讲维度是一件很爽的事情,那么.........接下来请同学们打开脑洞,看我用一支笔几张纸来为同学们展开从零维空间到十维空间之旅吧!零维让我们从一个点开始,和我们几何意义上的点一样,它没有大小、没有维度。它只是被想象出来的、作为标志一个位置的点。...
2019-08-24 09:35:22
3443
1
原创 基于消费者驱动的契约测试
JB Rainsberger 曾说过,“集成测试是一个陷阱,它像一个自我扩散的病毒,无情地威胁着代码库、项目和团队。”随着微服务系统复杂度的增加,集成测试所带来的弊端愈发明显。1. 运行效率低由于微服务本身是基于分布式的系统,因此进行集成测试时,每个服务会同运行在其它节点的服务交互,而这类交互通常都是跨网络的。因此,相比进程内的交互或者同一节点内的交互,运行效率低。由其是当服务之间依赖关系复杂时,...
2018-05-06 23:01:11
2021
原创 mongo命令提示“connect failed”
前段时间学习了一些MongoDB的知识,想着动手实践一番,于是用Homebrew安装了一下MongoDB:$ brew update$ brew install mongodb 使用命令前得先安装Homebrew,中途可能会有中断的情况发生,多试几次就好了。 正当我兴高采烈地准备动手实践的时候,mongo命令却提示“connect failed”。 整理了一下思路,应该是...
2018-04-22 16:56:46
11954
2
原创 微服务架构综述——微服务的本质
微服务的诞生是在互联网高速发展,技术日新月异变化以及传统架构无法适应快速变化等多种因素共同推动下的必然产物。 随着越来越多的传统行业开始依赖互联网技术打造其核心竞争优势。如何从系统架构的角度出发,构建灵活、易扩展的系统,快速应对需求的变化;同时,随着用户量的增加,如何保证系统的可伸缩性、高可用性,成为系统架构面临的挑战。 微服务的本质特征体现在如下几个方面(从...
2018-04-10 22:33:39
1769
原创 微服务架构综述——微服务架构的特性
前面说了单块架构的不足,那么微服务又是何方神圣?具有什么样的特性?以下是摘自马丁.福勒先生博客中的描述:微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调、相互配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境...
2018-04-08 22:26:33
856
原创 微服务架构综述——单块架构
出来工作近一年时间了,说实在的,以前在学校并没有真正意义上理解所谓的“架构设计”。给人的感觉好像是挺厉害的,但是比较抽象不好把握。在完成了几十个大大小小的项目需求之后算是有所感悟,究竟什么样的架构设计算是一个好的设计呢?个人觉得最让我们程序员关注的应该是以下几点:1:架构的整体设计是否清晰。 能不能让人较快地把握整体框架的总体流程和设计思路。如果整个架构设计本身就没有理清楚思路那后面进行...
2018-04-07 20:54:00
447
原创 Logistic回归中梯度上升算法的数学原理
logistic回归这部分相信那些实现代码并不难以理解,难以理解的是为什么可以这样来实现这个算法,它背后的数学支撑究竟是怎样的。关于这个问题,我们将在下文中进行探索。Logistic本质上是一个基于条件概率的判别模型(Discriminative Model)。利用了Sigmoid函数值域在[0,1]这个特性。使用Sigmoid进行二分类操作时,当函数值大于0.5,我们将对应的
2017-06-24 15:22:06
1561
转载 最大似然估计
最大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。简单而言,假设我们要统计全国人口的身高,首先假设这个身高服从服从正态分布,但是该分布的均值与方差未知。我们没有人力与物力去统计全国每个人的身高,但是可以通过采样,获取部分人的身高,然后通过最大似然估计来获取上述假设中的正态分布的均值与方差。最大似然估计中采样需满足一个很重要的假设,就是所有的采样都是独立同分布的
2017-06-22 21:33:35
531
原创 机器学习——logistic回归
何为回归?假设有一系列数据点,我们使用一条直线对这些点进行拟合(该线称为最佳拟合直线),这个拟合过程就称为回归。利用Logistic回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,并以此进行分类。训练分类器时的做法就是寻找最佳拟合参数,使用的是最优化算法。Logistic回归的一般过程如下。(1)收集数据(2)准备数据:由于需要进行距离计算,因此要求数据类型为数值型。另
2017-06-22 16:07:24
464
原创 Windows下TypeError numpy.float64 object cannot be interpreted as an index的解决
在进行numpy-1.12.1操作的时候遇到了一个很郁闷的问题,在使用如下代码时,总是会产生一个这样的错误:TypeError numpy.float64 object cannot be interpreted as anindex。尝试了各种类型转换的方法都以无效而告终,我甚至一度怀疑我是不是装了一个假NumPy。出错代码主要部分:weights = ones(n) #m,n是
2017-06-21 20:01:21
9700
原创 机器学习——朴素贝叶斯算法
概率论是许多机器学习算法的基础,朴素贝叶斯就是基于概率来进行分类的方法。18世纪的一位神学家托马斯·贝叶斯率先引入先验知识和逻辑推理来处理不确定命题。贝叶斯准则告诉我们如何较好条件概率中的条件与结果,即如果已知,要求,那么可以使用下面的方法:即有,使用贝叶斯准则,可以通过已知的三个概率来计算未知的概率值。朴素贝叶斯的一般执行过程如下:(1)收集数据(2)准备数据
2017-06-15 11:29:42
581
原创 机器学习——决策树算法
决策树的主要任务就是探寻数据中所蕴含的知识信息。所以决策树可以使用不熟悉的数据集,并从中提取出一系列规则,而这些规则的提炼过程就是机器学习的过程。在构造决策树时必须要面对的问题是:当前我们究竟该选哪个特征来进行数据的分类。为了找到决定性的特征,划分出最好的结果,我们必须评估每个特征。完成测试之后,原始数据集就被划分为几个数据子集。这些数据子集会分布在第一个决策点的所有分支上。如果分支下的数
2017-06-03 20:46:12
448
原创 机器学习——K-近邻算法
简而言之,k-近邻算法采用测量不同特征值之间的距离来进行分类。优点:精度高、对异常值不敏感、无数据输入假定。缺点:计算复杂度高、空间复杂度高。适用数据范围:数值型和标称型(目标变量的结果只在有限目标集中取值)。算法的工作原理:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的关系。输入没有标签的新数据后,将数据的每个特征与
2017-05-29 18:14:12
539
原创 MATLAB中神经网络工具箱的使用
今夕何夕兮,前些天把玩了一下MATLAB中神经网络工具箱的使用,忽有“扪参历井仰胁息”之感。别的倒是没什么,只是神经网络的数据组织结构有些“怪异”,要是不小心就会导致工具箱报错。以下便是神经网络工具箱的正确打开姿势,谨供诸君参考:1.打开MATLAB,在命令行输入nntool,将出现如下界面:图1 神经网络工具箱主界面其中最主要的分为6个部分:第1部分中显示的是系统的输...
2017-03-24 19:20:18
125542
34
原创 MATLAB中模糊神经网络工具箱的使用
前些天小师妹(好吧,我向政府和人民坦白,小师妹是我虚构的)向我请教MATLAB里模糊神经网络工具箱的使用方法,说是没有搜索到好的教程。正所谓‘勿以善小而不为’,‘ 我不入地狱谁爱入谁入’,‘天下兴亡匹夫有责’,正直善良的我自然要双手奉上相关操作经验,又岂敢藏私。首先要做的自然是安装MATLAB,这个步骤我就不过多描述了,请诸君自行参悟。打开后在命令行输入:anfisedit ,然后就会出现如下
2017-03-17 16:09:13
45413
72
转载 程序员成长历程的四个阶段
原文链接:http://blog.52itstyle.com/archives/422/下面是一位前辈总结的程序员成长四个阶段,个人觉得非常有道理,你在哪个阶段?阶段一:不知道自己不知道(Unconscious incompetence)大学期间,我和老师做过一些小项目,自认为自己很牛,当时还去过一些公司面试做兼职,但是就是不知道为什么没有回复。那个时期的我,压
2017-03-14 10:59:37
483
转载 追求稳定会死得很惨
- 1 -趋势和随机13年的时候,公司编程大赛的题目是蚁群算法。灵感源自,科学家对一群蚂蚁做了个实验,在蚁群和食物源之间设置了两条长短不一的通道,没过多久,几乎整个蚁群都发现了最短的路线。为什么呢?蚂蚁在爬行过程中会释放某种信息素,其他蚂蚁会跟踪信息素强的路径走。相同时间内,路短的通道,蚂蚁来回次数更多,释放的信息素就会比路长的强,然后吸引更多的蚂蚁选这条路,越多的
2017-02-27 10:34:31
369
转载 小波分析中的尺度函数与小波函数
如题,我想问问尺度因子a和尺度函数一样吗?如果不一样那他们之间有什么联系呢?非常感谢不一样,尺度因子只是个尺度函数中的系数;尺度函数对应图像二维小波变换中的近似子带、小波函数对应细节子带。如果尺度函数为φ(2^a*x-i),则尺度因子a越大尺度函数生成的矢量空间越大,波形越小。尺度函数与小波函数对于多分辨率而言,尺度函数与小波函数共同构造了信号的分解。这里尺度函数可以由低通滤波器构造,
2017-02-15 15:36:35
24540
1
转载 为什么你有10年经验,但成不了专家?
有很多读者问:为什么你年纪不大,经验并不多,但却能擅长复杂的商业策略和文案写作,是如何做到的?因此,本文就来回答这个问题:如何成为任何一个领域的专家。
2017-01-17 10:42:50
455
原创 操作系统实践之第二章(中断和异常)
说到中断,前面我们在实模式下获取内存信息时刚刚用过int 15H。之所以在实模式下进行,是因为在保护模式下中断机制将会发生很大变化。原来的中断向量表被IDT代替,实模式下能用的BIOS中断在保护模式下已经不能再用。其中IDT(Interrupt Descriptor Table)也是一个描述符表,它里面的描述符可以是中断门描述符、陷阱门描述符、任务门描述符中的任意一种。IDT的作用是将每一个中
2016-12-17 14:02:15
750
原创 操作系统实践之第二章(页目录表切换)
前面我们已经学习了操作系统的分页机制,现在就来体验一下分页的妙处。如果我们有一个自己写的程序,现在复制一份到其它目录下,再对两个程序同时调试,这时候会发现,其中的寄存器和变量地址都是一样的。但是,在这样的情况下,它们的功能并没有因为“一样的”地址而混淆却各司其职,这就是分页机制的功劳,那么我们就来模拟这一效果吧。先执行某个线性地址的模块,然后通过改变cr3来转变地址映射关系,再执行同一个线
2016-12-09 16:01:46
1779
1
原创 操作系统实践之第二章(分页机制)
前面我们已经用代码体验了分段内存的相关操作,现在就来进一步学习分页机制下的内存操作。不管是段还是页,指的都是一块连续的内存空间。一“页”内存在80386中,是固定的4096字节大小,即4KB。在未打开分页机制时,线性地址等同于物理地址,于是可以认为,逻辑地址通过分段机制直接转换成物理地址。但是,当分页开启时,不再是这样的情况了,分段机制将逻辑地址转换成线性地址后,线性地址需在通过分页机制才能最
2016-12-04 15:24:05
1168
1
原创 操作系统实践之第二章(特权级变换*实战篇)
纸上得来终觉浅,绝知此事还是得捣鼓捣鼓才行啊。理论与实践还是要两手抓两手都要硬嘛。从理论上来说,在ret指令执行前,堆栈中应该已经准备好了目标代码段的CS、EIP,以及SS和ESP,另外还可能有参数。需要注意的是,这些既可以使处理器压入栈的,也可以使由我们自己压入栈的。ret指令执行前的堆栈可能如下图示:这样,执行ret后就可以转移到低特权级的代码中 了。我们在前面写过的代码中
2016-11-26 14:45:48
481
原创 操作系统实践之第二章(特权级变换*理论篇)
在IA32的分段机制中,特权级总共有4个特权级别,从高到低分别是0、1、2、3。数字越小表示对应的特权级越大。较为核心的代码和数据,将被放在特权级较高的层级中(0:内核代码;1/2:服务;3:应用程序)。处理器将用这样的机制来避免低特权级的任务在不被允许的情况下访问位于高特权级的段。如果处理器检测到一个访问请求是不合法的,将会产生常规保护错误(#GP)。处理器在判别任务是否拥有对应访问权限
2016-11-24 22:22:08
859
原创 操作系统实践之第二章(LDT的使用)
前面我们已经使用过GDT了,本节主要体验一下LDT的使用。首先LDT也是描述符表,跟GDT的区别主要在于G(Global)和L(Local)上的不同。那么我们如何在代码中使用LDT呢?下面将给出示例。使用LDT的主要代码框架如下:[SECTION .gdt]…LABEL_DESC_LDT: Descriptor 0, LDTLen - 1, DA_L
2016-11-15 20:27:16
1346
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人