自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(84)
  • 问答 (1)
  • 收藏
  • 关注

原创 go json解析结构体

最近在做实验时,遇到了数据传输格式问题,节点之间的通信使用Socket,数据使用JSON格式进行传输,但是当数据有多种不同类型时,解析时会很麻烦,无意间看到了官方文档的示例(如果消息类型比较少,可以采用这种方法),因此记录一下解决方法。目前做的实验为共识算法的实验,在实验中,主要有以下两种不同类型的消息,Prepare,Commit,节点发送消息,其它节点接收到消息之后解析,为了避免冗余的代码,可以定义一个结构体IncomingMessage来解析不同类型的消息,由于还需要根据不同的消息类型执行不同的命令

2021-10-03 11:03:23 649

原创 Go语言门限签名示例

笔者不是很懂门限签名的原理,如果想要了解关于门限签名的原理,请搜索其它资源门限签名简介:在(k,n)\left( k,n\right)(k,n)门限签名模型中,所有节点都持有一个公共的 publickeypublickeypublickey ,每一个节点 iii 都有各自的私钥 privatekeyiprivatekey_{i}privatekeyi​.每一个副本 iii 会用自己的 privatekeyiprivatekey_{i}privatekeyi​ 对一个信息(m)贡献部分签名ρi←tsi

2021-08-14 10:46:59 1157 8

原创 Hyperledger Fabric 2.3环境搭建

搭建环境时最常见的问题就是Github仓库代码拉取速度过慢,可以使用Github镜像站进行拉取安装的Fabric为最新版 V2.3.0 (若使用Centos系统 需将apt换成Centos系统安装的命令)命令运行路径/home/username删除旧版本dockersudo apt-get remove docker docker-engine docker.io containerd runc更新aptsudo apt-get updatesudo apt-get install

2021-08-08 10:40:00 488

原创 分布式任务分发

小王做的煎饼很好吃,于是他决定开一家卖煎饼的店。店铺开张时只有他一个人,他既要做煎饼又要在柜台打包煎饼和记账,随着名气越来越大,有越来越多的人慕名而来。但是也有很多人看到排队时间很长而放弃购买。小王决定招聘一个服务员负责打包煎饼和记账,这样小王就能专注于做煎饼,而顾客也不用等那么长时间。几年之后,随着旅游业的发展,有很多外地人也慕名而来尝试小王的煎饼,这时候小王和他的服务员已经忙不过来了,小王决定开几家分店。在开分店时,小王为了避免口碑的下滑,要求每个分店都在早上去小王那里拿走新鲜的原材料。这样,小王既保

2021-04-04 11:07:07 1316

原创 Goroutine学习笔记(二)

Goroutine与锁在进行并发编程时,很多时候都需要涉及到变量的共享,下面这段代码创建了2个Goroutine来访问变量a并对a进行自加操作,a预期结果应为200000goroutine-without-lock.gopackage mainimport ( "fmt" "sync")func main() { a := 0 var n sync.WaitGroup for i := 0; i < 2; i++ { n.Add(1) go func() { d

2021-03-27 17:15:28 137

原创 Goroutine学习笔记(一)

Goroutine在Go语言中,可以通过go func()来创建一个Goroutine,但是该Goroutine并不会立刻执行goroutine-without-wait.gopackage mainimport ( "fmt")func main() { go func() { fmt.Printf("world!\n") }() //创建一个Goroutine fmt.Printf("Hello ")}输出结果为Hellomain()函数执行完毕后,会立刻退出,并

2021-01-04 14:52:59 130

原创 core-js is no longer maintained and not recommended for usage due to the number of issues解决办法

执行npm clean-install在package.json文件中加入"dependencies": { "core-js": "^3.1.4",}执行npm install即可解决

2020-02-02 20:19:46 11541 1

原创 Flask 返回Ajax 调用的成功状态码

Ajax调用API后,一般都会根据返回的API来进行一系列操作$.ajax({ url: "http://xxx/", method: "POST", data: formDataObject, dataType: 'json', xhrFields: { withCredentials: false }, success:function(response) { //d...

2019-09-14 12:02:03 1489

原创 Flask Migrate is not up to date 解决办法

有时候刚修改过modesl.py文件,然后用flask db migrate -m ...迁移数据库时会提示Target database is not up to date.原因是因为指向的heads不一样flask db heads #获取当前可用的headsflask db current #获取当前数据库中的修订版本可以得到两个指向的heads不一样解决办法flask ...

2019-08-30 20:33:01 546

原创 多进程下载小说的爬虫

之前写过一篇文章来下载小说,不过速度堪忧,因为大量的时间都浪费在了文件的写入上,那么有没有办法优化呢?文章目录优化面临的问题解决办法图示队列的建立为不同的进程分配不同的队列进程的任务爬虫的自我修养完整代码如何理解多进程优化面临的问题文章是有序的文件的读写(一般来说当前文件正在读写时是不允许其它程序来访问该文件)解决办法文章是有序的可以使用队列来进行FIFO操作,这样能确保有序...

2019-08-09 14:35:35 322 2

原创 Spring Boot 解决CORS问题

最近在使用AJAX时遇到了CORS问题,搜了一大推,添加了一大推注解还是不行,最后通过添加Response Headers解决了问题 @PostMapping("/comments") @ResponseBody public Comment createComment(Comment comment, HttpServletResponse response) { ...

2019-07-15 22:10:20 325

原创 Flask SQLAlchemy查询结果转换为Json格式

对于查询到的结果,可以利用一个dict={}来进行存储def to_json(inst, cls): d = dict() ''' 获取表里面的列并存到字典里面 ''' for c in cls.__table__.columns: v = getattr(inst, c.name) d[c.name] = v return json.dumps(d)class RFID...

2019-06-30 10:36:47 10324 3

原创 Esp32 与RFID 的连接

文章目录硬件型号固件版本Micropython-Mfrc522的安装Esp32中的代码结构Esp32与RFID的接线硬件型号Esp32 DevKit v1RFID-RC522固件版本MicroPython v1.9.4Micropython-Mfrc522的安装Github地址对于这个项目,我们只需要适当地修改mfrc522.py与read.py并只上传这两个文件给esp32就可以...

2019-05-21 17:57:46 7197 1

原创 通过爬虫来理解Cookie和Session

文章目录前言登录的流程Set_cookieCookie利用爬虫进行模拟登录退出前言Cookie和Session的概念我也接触过很多次,但一直没有机会实践一下,正巧最近想用爬虫模拟登录教务系统,就想到了利用Http的请求头来进行登录操作登录的流程这样做有什么好处?最大的好处就是用户只需要输入一次账号密码,之后再访问网页时,只需要再Headers信息利用Cookie包含Session_id...

2019-04-28 22:43:34 545

原创 模拟手机端来爬取数据

本文以识货进行举例文章目录充分利用谷歌浏览器找到我们想要的API数据观察请求头观察参数结果充分利用谷歌浏览器谷歌浏览器可以模仿手机进行对网页的访问点击上面的图标就可以选择模仿手机对网页的访问,还可以选择具体的型号找到我们想要的API数据我搜索了名为Nike Odyssey React的鞋在网络的请求中可以看到名为getSupplier的请求中包含了我们想要的数据观察请求头...

2019-04-26 22:12:16 3960

原创 如何反转一个链表

最近在刷Leetcode中关于链表的题,发现很多题都涉及到了了链表的反转给出一个链表[1, 2, 3, 4, 5]反转为[5, 4, 3, 2, 1]解决该问题可以用循环解决,而核心思想便是在循环中每次只让第I个元素插入到链表的头部在循环之前链表长这样1-> 2-> 3-> 4-> 5第一次循环2-> 1-> 3-> 4-> 5第...

2019-04-20 10:50:03 11903

原创 Leetcode Merge k Sorted Lists 使用递归解决

一开始,我使用了二分法进行两两合并while (n >= 1) { for (int i=0; i<n/2; i++) { lists[i] = mergeTwoLists(lists[i], lists[n-i-1]); } if (n % 2 == 0 ) { n /= 2; } else { n = n /2 + 1;}不过这样以来是双重循环,复杂度有...

2019-04-07 10:13:21 160

原创 Leetcode Two Sum使用Hash表来解决问题

问题描述:Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].一般来说,直接双重循环就可以解决此问题int* twoSum(int* nums, int numsSize, int target) { int* ret = (char*)mall...

2019-04-07 09:44:54 265

原创 对称加密、非对称加密图文描述

对称加密对称加密就是在第一次通信中传递不相关的内容,却能得到相同的结果,比如说A给B一把蓝色钥匙,B给A一把黄色钥匙,最后通过某种机制可以算出来相同的棕色钥匙A和B现在都有了棕色钥匙,那么在传递信息中A利用棕色钥匙把锁锁起来,再把锁传给B,B再利用棕色钥匙进行解密,这样就完成了加密与解密非对称加密非对称加密与钥匙有关A有两把钥匙,一把是对外公开的钥匙,一把是自己私人的钥匙为了安全起...

2019-01-04 17:00:11 879

原创 Socket Block Non-Block Python描述

本文的图片均非原创,均来源自于: java Selector is asynchronous or non-blocking architecture阻塞模式下1一段话描述阻塞与非阻塞的区别:2假设我们在设计一个浏览器,用它来进行网页服务器的访问,如果设计为阻塞模式,那么当我们浏览一个网页长时间未响应时,按下了关闭按钮,会发生什么呢?关闭不掉!因为我们使用的阻塞模式来进行网页服务器的访问...

2019-01-01 14:44:26 513

原创 Cookie和Session ——Python语言描述

文章目录CookieSession2019年的第一篇博文这篇文章我将会聊聊Cookie和Session,网上有很多关于这两个知识点的描述,可惜的是大部分都没有示例代码,因此本文的重点在于示例代码,如果对以上两个知识点不是很清楚的同学,请先观看其它文章环境Python3.6.0Bottle0.12.15安装bottlepip install bottleCookieHTTP是一种无...

2019-01-01 10:31:27 204

翻译 关系数据库的第一第二第三范式

文章目录第一范式(1NF)第二范式(2NF)第三范式(3NF)第一范式(1NF)第一范式需要满足下面两个条件:1仅包含原子值不能有重复的群组出现原子值意味着不可被拆分,在下表中的颜色一栏中,[红色、绿色]可以拆分为红色和绿色,因此不满足1NF编号颜色价格1红色、绿色15.992黄色23.993绿色17.504黄色、蓝色9.99...

2018-12-24 10:49:46 1104 1

原创 Docker + Hadoop搭建伪集群

目的:利用docker容器构建3台虚拟主机,一台为管理节点两台为数据节点以此来构建hadoop伪集群,三台虚拟主机之间使用SSH进行连接因此整体思路为安装Centos镜像,为镜像安装SSH,Hadoop,Java,根据镜像创建三个容器,这样每个容器其实就相当于一台运行着Centos的主机,选择一个为管理节点配置Hadoop文章很长,请耐心阅读操作系统Centos7,安装时最好选择安装GNO...

2018-12-23 10:00:38 726

原创 SQL Developer连接Mysql

在没有安装第三方功能前并不能连接Mysql

2018-10-07 22:06:27 6076

原创 基于Hyperledger Fabric开发一个食品溯源项目(一)

最近接触了Hyperledger Fabric,官网给的app并没有界面,不过有一个单页版的项目,在此基础上做出了一个简易app github项目地址 功能:发布食品添加配料信息中转食品查询食品信息查询配料信息查询中转信息首页 查询页面 发布信息页面 动态图画 配置项目过程中有任何问题,欢迎提问...

2018-08-25 16:07:37 16706 38

原创 ubuntu 16.04安装govendor小技巧

安装之前的配置export GOPATH=$HOME/goexport PATH=$PATH:$GOPATH/bin安装通常,我们查到的安装方法一般是下面这种go get -u github.com/kardianos/govendor可是这样很容易拉取不了govendor的源码,先执行一次试试看 切换到/home/lalala/go/src/github.co...

2018-07-11 09:58:59 1271

原创 MIT6.828 操作系统课程实验环境搭建

在网上找了很多实验环境搭建教程,发现大部分写的都不详细,到最后还是去MIT 6.828的官网找到了一份实验所需工具安装教程,不过不是图文教程,因此在此撰写一份图文版的实验环境搭建教程(只针对ubuntu版本)Ubuntu系统镜像版本: ubuntu-14.04.5-desktop-i386 .iso 安装完成之后,测试以下编译工具链是否符合要求: 如果输出结果一样,则满足要求 test...

2018-06-10 11:46:59 8779 10

原创 c语言strtod()函数详解

前言网上有很多关于strtod()函数的文章,不过大部分都是用strtod()函数转换一个字符char *str = "111.11";char *target;double ret;ret = strtod(str, &amp;target);很少有转换字符串的这样的用法char *p = "111.11 -2.22 Nan nan(2) inF 0X1.BC70A3D...

2018-06-08 19:40:36 15649

原创 用C++来写一棵决策树

运行环境: window10 dev-c++5.11 决策树的实现除了,关于叶结点的类别赋值作弊了以下,其它基本依照CART生成算法实现 阅读本文之前,最好对决策树有一个认知,下文不会提到具体的步骤,建议先百度一下训练数据集x1,x2,x3,x4,y3.6216,8.6661,-2.8073,-0.44699,04.5459,8.1674,-2.4586,-1.4621,0...

2018-06-07 23:30:49 1750

原创 开源项目leptjson在ubuntu上的环境搭建

MiloYip大神的开源项目&nbsp;leptjson&nbsp;leptjson\ leptjson,第一章提到了搭建编译环境,其中在ubuntu上的搭建步骤如下(个人使用ubuntu版本为14.04):安装cmakesudo apt-get install cmakemkdir jsonclone执行clone操作之前,建议fork一份自己的版本,直接clone原项目...

2018-06-06 09:45:19 331

原创 c语言计算基尼指数

在看这篇文章之前如果知道基尼指数的计算公式,就可以接着往下看,如果不知道基尼指数的计算公式,可以看看我之前写的一篇文章决策树的生成–Python代码实现,只需把用Python代码计算基尼指数这部分看完即可直接上代码吧#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;#include&lt;string.h&gt;float Gini(...

2018-06-02 22:23:19 1157

原创 c语言对二维数组根据某一值划分为两个二维数组

前一篇文章说了如何用c语言读取CSV文件并保存为二维数组前一篇文章说了如何用c语言读取CSV文件并保存为二维数组\displaystyle 前一篇文章说了如何用c语言读取CSV文件并保存为二维数组,这一篇文章将会在将对得到二维数组根据某一个值进行划分操作CSV文件x1,x2,x3,x4,y3.6216,8.6661,-2.8073,-0.44699,04.5459,8.1674,-...

2018-06-02 22:03:54 876

原创 C语言读取CSV文件

读取CSV文件思路很简单,利用fgets()fgets()\displaystyle fgets()函数来逐行读取,对每一行进行字符串拆分操作 并存入相应的二维数组里面即可假设一个csv文件如下所示x1,x2,x3,x4,y3.6216,8.6661,-2.8073,-0.44699,04.5459,8.1674,-2.4586,-1.4621,03.866,-2.6383,1....

2018-06-02 21:11:12 16404 11

原创 决策树的生成--Python代码实现

前言本文思路来源于 How&nbsp;To&nbsp;Implement&nbsp;The&nbsp;Decision&nbsp;Tree&nbsp;Algorithm&nbsp;From&nbsp;Scratch&nbsp;In&nbsp;PythonHow&nbsp;To&nbsp;Implement&nbsp;The&nbsp;Decision&nbsp;Tree&n

2018-05-11 09:58:15 2826

原创 CART算法

2018-05-08 15:49:36 530

原创 决策树

前言本文关于贷款问题以及公式均来自于李航博士的《统计学习方法》,只是在此基础上增加一点个人理解正文 决策树决策树实质上是以特征划分为基础,对于给定的实例xx\displaystyle x来预测其结果yy\displaystyle y 假设对于一个贷款问题,数据如下 问题描述如下: 希望通过所给的训练数据学习一个贷款申请的决策树,用以对未来的贷款申请进行分类,即当新...

2018-05-08 10:52:44 307

翻译 逻辑斯谛回归--Python代码实现

原文出处本文在原文的基础上增加仅一些个人理解前言上一篇文章中,已经说明在逻辑斯谛回归模型中就是利用极大似然估计,来求出参数ωω\displaystyle \omega,然后根据输入的xx\displaystyle x,利用公式来预测yy\displaystyle y在本文中,当求出ωω\displaystyle \omega后,不再利用P(Y=1|x)=exp(wx)1+exp...

2018-05-07 16:25:13 4352

原创 逻辑斯谛回归

本文以Kaggle泰坦尼克号问题中的一个Kernel 以及李航博士的《统计学习方法》为基础来对逻辑斯谛回归进行描述本文绝大大部分算法皆来自李航博士的《统计学习方法》第六章逻辑斯蒂回归模型与最大熵模型,只再此基础上增加了一点个人理解Kaggle入门中一个经典的例子便是–泰坦尼克号问题,很多时候选择的第一个模型便是逻辑斯谛回归模型二项逻辑斯谛回归模型对于Kaggle中的泰坦尼克号问题,...

2018-05-06 14:59:50 604

原创 数据库迁移

什么是数据库迁移?当我们在看关于web开发的教程时,教程在设计数据表时,不是一下子就设计好的,而是先设计一个能用的数据表,然后再慢慢的往里面增加东西。当我们往表里面增加东西时,比如说增加一个字段,那么之前的数据怎么办?这时候就要用到数据库迁移了,在数据表进行更新时,可以利用数据库迁移脚本在当前数据表进行更新,而不是重新创建一个数据表。设计一个用户模型from app import d...

2018-03-31 16:06:33 2659

原创 集体智慧编程-K均值聚类代码理解

K均值聚类,先人工制造几个中心点,根据数据寻找距离每个中心点最近的所有实例点,用所有实例点的均值代替中心点,如此反复,直到所有的实例点都被归类到正确的中心点。例子 对于下面的实例点 人工构造两个中心点,对于每个中心点寻找距离其最近的所有实例点,用距离其最近的所有实例点的均值代替中心点 通过A与B所构造的中心点到C的距离比通过C、D、E所构造的中心点到C的距离近,因此A与B的中

2018-01-05 22:34:10 242

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除