自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zekdot的博客

A computer and a cat are all I need.

  • 博客(72)
  • 收藏
  • 关注

原创 SpringSecurity解决路径中含有%2F的问题

近期有个需求要求Controller可以处理URL中有%2F请求URL可以是:http://localhost:8080/hello/name/test%2F123原始的Spring也是不支持路径中有%2F的情况的,直接请求页面会直接报错,但是这种情况已经能搜到很多处理方式了,我亲测最简单且有效的方法就是在Spring启动类中,增加如下语句允许SLASH出现。解决Spring的问题之后,如果路径中还是有%2F。

2024-03-17 01:58:53 975 1

原创 面试八股-分布式

分布式相关的面试八股

2022-12-22 16:41:15 1086 1

原创 面试八股-Java框架

Java框架相关八股

2022-12-22 16:39:43 685

原创 面试八股-各种中间件

各种中间件相关的面试八股

2022-12-22 16:31:26 622

原创 面试八股-计算机网络

计网相关的面试八股

2022-12-16 12:45:26 457

原创 面试八股-操作系统

操作系统相关的面试八股

2022-12-16 12:44:32 443

原创 Ubuntu20.04下notify-send和cron结合使用

在Ubuntu20.04下解决notify-send无法在cron中使用的问题

2022-12-14 00:47:42 430

原创 面试八股-redis

redis相关的面试八股

2022-12-14 00:18:57 633

原创 面试八股-数据库

数据库相关的面试八股

2022-12-14 00:17:15 507

原创 面试八股-JVM

面试的八股,JVM相关内容

2022-12-12 23:20:15 223

原创 面试八股-Java并发

面试八股,Java并发相关内容

2022-12-12 23:19:25 1034

原创 面试八股-Java基础

面试八股的Java基础部分,整理各种材料所得。

2022-12-12 23:17:35 172

原创 Ubuntu多节点Sawtooth环境搭建

Sawtooth版本:1.2Docker版本:19.03.11单节点Sawtooth可以满足测试交易族功能等的需求,但是在测试性能或者搭建真正的生产环境时,就需要使用到多节点环境了。如果以Ubuntu为节点容器的话,每个节点就是一个操作系统为Ubuntu的计算设备,如电脑或者服务器虚拟机等,而且每一个节点都是一个单节点环境的克隆,如下图。每个节点拥有Validator、REST API、Consensus Engine等组件,并且很重要的一点,每个节点都需要运行完全相同的交易族集合。在多节点环境下,交易仍然

2022-06-06 23:14:29 565

原创 sawtooth调用出现Tried to set unauthorized address异常

今天在调试sawtooth交易族和客户端时,提交交易时返回了如下的内容:worker.go:85: [WARN] (0cd18b24-aed9-4f71-a928-f932ebf5f4c3) Authorization exception: Tried to set unauthorized address: [8aafadc680580c71c56c36a85363679786ea1447620ef829c1cea6de3be27debd2e705]怀疑过是密钥没有配置对或者是地址计算有问题,最终在

2022-02-27 23:26:24 142

原创 Ubuntu环境go语言下的sawtooth完整项目搭建

之前的博客使用Docker来简单搭建了Sawtooth环境并实验了官方的井字棋项目,然后根据开发文档使用Python简单的对主要开发过程进行了介绍,但是很明显只有这些内容不太能够实战,而最近我们在开发一个Fabric到Sawtooth的跨链插件,而插件的原理和应用是相同的,因此我也借此机会实现了一个简单但是完整的Sawtooth交易族及其对应的应用,今天来把整个过程重新梳理并进行一下记录。相比上一篇博客sawtooth,井字棋演示和交易族开发流程介绍,这里有两处明显的不同:不再使用Docker环境,使

2021-12-10 00:30:05 1058 14

原创 sawtooth,井字棋演示和交易族开发流程介绍

1.实例演示这里以官网的XO交易族为例演示,该交易族是一个井字棋游戏,在开始之前,我们需要搭建起来一个单节点的sawtooth环境,详情可以查看上一篇博客:Sawtooth,使用docker启动单节点在确认链接之类的都正常之后,我们可以链接到shell容器中进行游戏:docker exec -it sawtooth-shell-default bash该容器中存在sawtooth的相关环境,包括sawtooth命令,以及交易族相关的客户端xo命令等。1.1.创建玩家井字棋需要两名用户,因此需

2021-11-09 20:41:49 3261 2

翻译 Sawtooth,启动测试网络

上一篇博客中我尝试搭建了单节点的sawtooth网络,但是对于单节点网络是不存在共识的,而共识是区块链保证安全性的重要机制,因此这一篇博客将会使用docker来搭建拥有5个节点的sawtooth环境,每个节点都是一系列Docker容器的集合,在其中运行验证者和相关的sawtooth组件,虽说是5个节点,但搭建过程和1个节点差不多,大部分工作都被封装了。整个实验过程包括如下内容;下载Sawtooth docker-compose文件使用docker-compose启动sawtooth网络检查处理状态

2021-10-28 18:16:23 366 3

翻译 Sawtooth,使用docker启动单节点

本文参考sawtooth官网的教程:https://sawtooth.hyperledger.org/docs/core/releases/latest/app_developers_guide/docker.html本文在Ubuntu 20.04环境下进行安装,docker版本为19.03.11,docker-compose版本为1.29.0,docker和docker-compose都是需要事先安装好的,在之后会用到,sawtooth版本为v1.2.6。该实验完成了如下目标:检查Sawtooth

2021-10-24 15:07:46 751 3

原创 Fabric 2.0,go链码单元测试

之前一直是完成链码的逻辑,然后打包部署在fabric网络之后,才知道链码写的正不正确,但是这样返工一方面浪费时间,另一方面,在开发时心底也是虚的。比较理想的开发方法是首先为接口写好自动化测试,运行,出错,然后再去开发代码,来通过测试用例之后才算完成开发,这也是一种测试驱动开发的思想,好处就是之后即使修改代码也可以很方便的完成回归测试,再配合git,就可以更大胆的进行开发了。在fabric环境下进行测试的话一个难点在于上下文环境的模拟,但是关于这点,事实上官方给出了一个测试编写的样例,如果是最2.3.0的

2021-10-17 16:50:27 15543 5

原创 Fabric 2.0,编写应用(Java版)

本文参考了fabric官网的nodejs版本:https://hyperledger-fabric.readthedocs.io/en/latest/write_first_app.html使用应用时,网络中必须要有CA,因为我们需要用CA来注册管理员和app用户,然后再以他们的身份去调用智能合约,如以test-network为例,启动时必须使用如下命令:./network.sh up createChannel -c mychannel -ca链码这里仍然使用上篇博客所编写的atcc,在编写应用之

2021-09-22 21:18:42 2156

原创 Fabric 2.0,编写及使用链码

代码及说明参考网址:https://hyperledger-fabric.readthedocs.io/en/latest/chaincode4ade.html每个链码调用函数都会传递进去一个交易上下文对象"ctx",该对象通过GetStub()获取stub对象可以进一步去访问账本。下列的案例实现一个资产管理链码,包含对资产账本的创建、初始化、读、更新、删除,检查一个资产是否存在,把资产从一个拥有者转给另一个拥有者。1.创建代码首先进入我们的工作根目录,这个根目录最好不要有其他文件,因为稍候我们会在

2021-09-21 01:03:17 3042 7

原创 vue-cli4下创建前端项目(二)

上接vue-cli4下创建前端项目(路由、vuex与axios应用),本篇解决了一些编码过程中遇到的问题。1.设置全局模板全局模板的作用是为了让所有的页面都按照某种布局来进行展示,比如两边固定是广告或者操作表盘等,只有中间是实际展示的内容,这里我用bootstrap来实现布局。1.1.引用bootstrap在index.html中直接引用CDN的css和js文件,这样应该可以作用在全局上。<!DOCTYPE html><html lang=""> <head&g

2021-09-18 18:43:20 175

原创 vue-cli4下创建前端项目(路由、vuex与axios应用)

之前写前端项目基本上都是一个html,然后<script>引入一堆js这样开发,显得非常乱而且也不好维护,于是最近拿之前暑期实训的前端部分同学的代码结合相关官网学习了一下,不过当时的版本是vue-cli3,而我学的时候用的是vue-cli4,导致有些地方踩到了坑,通过阅读文档等解决了问题之后我把几个重要的配置项进行了一下总结,搭建了一个框架,之后就可以按照这个框架去填充具体业务了。但其实目前还有很多不足,比如在路由上并没有鉴权等,也没有规划静态资源的位置等,但是已经可以进行简单的开发了,之后我也

2021-09-16 00:02:37 314

原创 Ubuntu下查看https协议的APP请求

学校要求每天必须在APP上进行一个健康打卡,其实整个暑假我基本没有打过,因为一直在校,不需要满足14天打卡再申请入校这个条件,然而这两天开始不打卡就发短信提醒了,为了不收到短信,也避免之后被亲自传唤打卡,我决定写一个自动打卡的程序。其实这里唯一的难点在于打卡的不是一个网页而是一个APP,如果是网页的话直接F12什么都知道了,但是APP就没有这么简单的开发者工具了。不过APP大多数都是基于HTTP协议,甚至使用Hybrid开发模式的本身很多APP页面它就是一个网页,所以其实理论上我们还是可以通过拦截报文的方式

2021-09-11 21:25:20 712

原创 Fabric 2.0,不使用脚本的情况下启动test-network

之前使用过脚本的方式启动了fabric的测试网络,但是这个脚本封装的实在太好了,一行命令之后啥都看不出来,对于我这样的初学者来说感觉帮助不是特别大,所以我决定把这个脚本串行化的分析一遍,来真正看出整个网络的启动过程。本文假设当前所在目录为test-network,使用fabric版本为2.3.0,并且和network.sh脚本默认情况下一样不使用预先定义的CA证书。1.创建加密证书材料创建org1、org2和org3所需的ca证书,这里会用到organizations/cryptogen下的yaml文

2021-08-28 22:21:34 9008 12

翻译 fabric2.0 概念,链码和私有数据

1.智能合约和链码管理员将相关智能合约组织起来用于部署–链码。智能合约中存储各方交易的业务模型,定义了术语、处理流程等。利用区块链可以将智能合约转换为可执行程序。应用通过调用智能合约来产生交易与在账本进行记录。使用智能合约可以实现自动化,比如定时交易等,而且也会比人工的手动操作效率更高。如上图中ORG1和ORG2定义了一个可以查询、转移、更新汽车的智能合约,这些组织的应用可以通过调用这个智能合约来实现将一辆汽车从一个组织转移到另一个组织上。链码包含多个智能合约,之后再部署到区块链上。当一个链码部署

2021-08-23 21:13:43 1325 1

原创 docker swarm集群---SpringCloud基础设施及业务篇

本文的主节点IP为A,A可以是公网或者内网地址。配置好集群以及仓库管理等的基础设施之后,下一步就是使用他们了,我们的项目目前主要是使用Java作为主要技术栈,使用springcloud来进行微服务的架构,涉及多个仓库,所以本篇文章我会记录下我们项目部署相关的细节。首先,我把所有的Java仓库分为四类,在gitosis.conf中,前三类各属于一个文件夹。第四类可能有多个文件夹,每个文件夹包含一个消费者仓库consumer和一个生产者仓库client,以下我们以一个新闻业务为例进行说明。配置与注册中心

2021-08-07 21:01:34 344

翻译 fabric2.0 概念, peer、账本和排序服务

1.PeersPeers是网络的基本元素,持有账本和智能合约(链码),代表信息及其对应的处理方式。如图所示,P1、P2、P3每个Peer都保存一份账本的副本和智能合约的副本,这样提供了一种冗余机制,避免了单点失效,事实上,每个Peer可以持有多个账本和链码。而应用和管理员等想要访问某些资源,必须通过peer来实现,所以其是非常基本且重要的。一个链码可以有1个或者1个以上的账本,每个账本可以有对应的0个或0个以上个链码,图中账本L1对应链码S1,L2对应S1与S2,虽然一个账本没有对应的链码是完全可

2021-08-07 00:15:44 1949

原创 docker swarm集群---仓库及流水线篇

以下各节点操作系统仍然均为Ubuntu 18.04。本文假设有两个节点,主节点IP为A,从节点IP为B,以下的方案都搭建在主节点A上,此外还会用到一台个人电脑C,可以为Linux或者Windows系统。1.docker registryregistry主要用于对docker镜像进行收纳,作为一个docker私有仓库。如果没有自建的docker仓库的话,就需要使用公有仓库,因为在主节点打包的镜像不能在从节点上直接拉取,必须要先放到仓库中才能做到。在我搭建的实验环境是内网,所以当时镜像拉取速度很快,但是目

2021-08-06 01:16:29 791

原创 docker swarm集群---基础设施篇

前端时间一直在研究docker相关技术,想把他用在我最近的项目上,最开始想使用的kubernates,但是不知道为什么一直下载不下来相关镜像,科学上网都没用,于是转战docker swarm,并且在学校的四个免费的2C4G服务器上搭建了一个实验性质的集群,最近打算把这个实验性质的集群转移到生产环境中,并将其中的一些过程记录下来。简单说下我目前用这种方式之后的好处吧第一是简化了部署,再不需要打包、选择可用节点上传,最后运行这种方式了,现在都是一键然后集群根据目前的负载情况自行选择服务部署节点。第二是简

2021-07-31 22:44:18 231

翻译 fabric2.0 概念, 身份、MSP和策略

1.身份(Identity)区块链网络中的不同参与者,包括peers、orderers、管理员等,都有一个封装在X.509电子证书中的身份。这个身份非常重要,因为他决定了区块链网络中的参与者对资源和信息的访问权限。电子身份还会衍生出其主体(principal),类似id,但是更加灵活,因为它可以包含参与者身份的其他属性,如组织、角色、甚至参与者特有的身份,当讨论主体的时候,实际上是在讨论他所拥有的权限。为了让身份可验证,它必须来源于一个可行的权威机构。一个MSP(membership service

2021-07-24 00:00:19 1356

翻译 fabric2.0 概念,fabric网络的形成

读研后被分去了做区块链方向,前段时间一直非常无聊,大概是因为我之前基本上不怎么熟悉区块链,也从来没编写过相关的程序,而区块链里面概念又十分繁多,因此一直在摸鱼去搞docker swarm相关的技术,最近觉得如果再这么混下去,可能研究生毕不了业了,所以决定重新钻研一下区块链相关的技术,在实验室内以联盟链为主要研究目标,最典型的就是fabric了,因此先从概念入手,理清楚重要的概念,然后再看看能不能搞个实战项目,做下来应该会对fabric有更深的了解了。本文基本上是翻译fabric官方文档,当然不是照着全抄,

2021-07-22 01:25:09 1058

原创 Ubuntu服务端客户端配置NFS

首先需要明确,服务端和客户端应该是不同的主机,客户端可以有多个,而服务端只配置一个,这里服务端ip假设为192.168.1.204,两台机器系统均为Ubuntu 18.041.服务端配置1.1.安装nfssudo apt-get install nfs-kernel-server1.2.设置共享目录showmount -e # 查看已经共享出去的目录新建目录mkdir share配置文件/etc/exports/home/zekdot/share *(rw,sync,no_subtr

2021-06-27 00:07:57 500

原创 Ubuntu导出QQ收藏中的arm格式语音到mp3

QQ收藏中的语音不能转发或者直接保存到本地,但是有些语音很有纪念意义或者需要发送给其他人,这时就不得不想办法把他们转成mp3或者wav格式了,在windows下似乎有某些软件可以实现这一需求,但是一方面目前主要工作环境是Linux,另一方面他提供的是可视化界面而不是命令行交互方式,而我有很多语音需要转换,一条一条来实在是太麻烦了,因此需要找到一种命令行的解决方案。首先需要将收藏夹中的语音找出来,这里直接照百度经验的把那些amr文件拿出来就好了。qq收藏的语音在哪里当然,从这里拿出来的语音不能直接播放,

2020-11-28 19:26:37 447

翻译 fabric2.0 demo,部署智能合约

环境配置等问题可以参考上一篇博客Fabric2.0,使用test-network以test-network的fabcar的chaincode为例,他需要如下的步骤才能部署到channel中第一步:打包智能合约第二步:安装chaincode包第三步:许可chaincode定义第四步:提交chaincode定义到channel中在进行如下步骤之前,首先需要关闭网络,然后再重启网络,同时创建channel,即如下两条命令。./network.sh down./network.sh up cr

2020-06-27 14:57:53 2592 3

翻译 Fabric2.0 demo,使用test-network

测试系统 Ubuntu 16.04 64位本文参考了fabric官方文档,基本上是按照原文来的,并且排了一些安装上的坑,如果文章中有什么理解的问题欢迎指正,原文链接如下。Using the Fabric test network1.安装相关软件1.1.docker安装直接参考下面这篇文档安装好docker-ce即可Ubuntu 16.04安装docker详细步骤按照下面这篇文章的3.2节安装好docker-compose即可ubuntu16.04 安装docker-ce,docker-com

2020-06-27 01:31:37 5508 15

原创 Python requests爬取时request header中有冒号

今天帮别人写一个爬虫,爬豆瓣中的剧照,爬虫的部分并不难写,我通过解析拿到了最终的图片URL,当我用谷歌浏览器去分析他的请求头的时候,发现了这样的情况:有两个坑吧,第一个是这个图片的格式是webp,如果直接右键存储或者直接用代码存储的话,这张图片就只能从浏览器中打开了,不过这个问题比较好解决,只需要利用PIL.Image重新导出成jpg就可以了: # 下载图片 res = requests.get(url,headers = picHead); # 打开文件 f = io.

2020-06-04 20:33:21 6632 4

原创 使用uni-app生成微信小程序踩的坑

毕设要求写一个浏览器端,一个APP端,一个微信端,刚开始以为要学三个技术然后写三个客户端,后来知道了uni-app这个神器,一次编写就可以编译生成APP、H5以及各种小程序版本的客户端。然而我比较熟悉的是web的前端开发,而且浏览器用于测试也是唾手可得,所以整个开发过程中用浏览器测试的基本上都很顺利,展现的效果也很好,然而在编译小程序端的时候出了很大的问题,整个页面都扭曲了,经过这两天的查资料与修复,终于得到了浏览器中的效果,正好也记录一下这些坑。1.不允许id选择器这个问题是最容易发现的,在h5页面中

2020-05-26 20:39:45 10479

原创 Java利用反射机制实现山寨SpringMVC

还是接着上一篇博客的话题,dao层基本上是搞定了,service层业务逻辑不太好抽象,所以现在就是action层的问题了,之前用Servlet写Action层的时候,还是用了一点视图模型分离的思想,用这样的方式来向jsp传递数据:@WebServlet("/dish/list")public class DishListServlet extends javax.servlet.http.Ht...

2020-02-27 12:44:07 182

原创 Java利用反射机制实现简单ORM框架

最近帮一个朋友整他的课设,要求使用jsp和servlet以及mysql实现一个系统,Dao层的部分如果不借助Hibernate或者mybatis框架的话,就需要写很多的原生SQL,而且还需要处理ResultSet,最主要的是,每一个功能都需要写一个Dao文件,里面有很多需求相似的语句,可能会重复很多遍差不多的SELECT、UPDATE、DELETE语句,作为完成任务这样写肯定没问题,但是略枯燥,正...

2020-02-27 00:18:15 569

空空如也

空空如也

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

TA关注的人

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