自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(151)
  • 资源 (1)
  • 收藏
  • 关注

原创 Netty实现多人在线游戏后台程序

该案例使用了Netty框架来实现多人在线游戏的后台程序。通过该案例的练习,可以让大家对Netty框架的使用有更深入的了解。

2022-10-29 00:53:16 1783 1

原创 微信小程序与Netty实现的WebSocket聊天程序

基于微信小程序WebSocket功能实现与Netty实现的Websocket聊天室进行消息通信。

2022-10-10 17:41:52 3026 3

原创 Fisco开发第一个区块链应用

本文介绍了Fisco Bcos区块链的搭建,以及完成智能合约的部署和访问。

2022-10-01 01:44:26 2953 1

原创 ingress-nginx-url重写的经验总结

Ingress 配置中关于重写的注解有:注解名描述nginx.ingress.kubernetes.io/app-root访问主域名的时候会自动跳转到app-root注解指定的路径nginx.ingress.kubernetes.io/rewrite-target将匹配到的url重定向到rewrite-target注解指定的路径nginx.ingress.kubernetes.io/server-snippet使用注解可以在server{...}配置块中添加自定义的配

2022-01-05 14:18:40 4622

原创 Kubernetes集群上部署zookeeper和dubbo

一、安装nfsNFS, 网络文件系统,是由SUN公司研制的UNIX表示层协议。通过该协议能够让用户访问网络上的文件。安装步骤:第一步:下载rpcbind和nfs-utils软件;链接:https://pan.baidu.com/s/16zDbfXd_mjSMf1TjMmdcKQ提取码:123z第二步:执行本地安装;yum localinstall nfs-utils-1.3.0-0.68.el7.x86_64.rpm –yrpm -qa nfs-utils rpcbind第三步:

2021-11-30 18:41:24 2297

原创 Kubernetes集群上部署ELK日志系统

一、在k8s部署elk1.1 准备镜像在hub.docker.com网站下载镜像sebp/elk:622,并将下载后的镜像上传到harbor仓库中。官方提供了elkdemo用于测试elk服务,这里也将其下载并上传到本地Harbor仓库中。1.2 部署服务1.2.1 部署elkhostapiVersion: extensions/v1beta1kind: Deploymentmetadata: name: elkhostspec: replicas: 1 template:

2021-11-30 18:29:31 1289

原创 Kubernetes集群上部署Harbor、Dashboard、Ingress

一、部署镜像仓库先下载Docker-compose,解压缩后将docker-compose文件拷贝到/usr/local/bin目录下,并添加执行权限。1.1 部署Harbor第一步:下载和安装goharbor-prepare镜像;第二步:解压缩harbor-offline-installer-v2.3.2.tgz;tar –zxvf harbor-offline-installer-v2.3.2.tgz ../cd /root/harbor第三步:修改配置参数,注释掉https相关配置;

2021-11-29 20:22:56 1263

原创 离线手动搭建K8S集群实践

一、基础环境准备1.1 环境准备操作系统:Linux Centos主机名安装的软件k8s-masterkube-apiserver、kube-controller-manager、kube-schedulerk8s-node-1kubelet、kube-proxy、dockerk8s-node-2kubelet、kube-proxy、docker1.2 安装lszrz第一步:解压缩lrzsz-0.12.20包;tar zxvf lrzsz-0.12.20

2021-11-29 18:42:58 1244 3

原创 UML类图(泛化、实现、依赖、关联、聚合、组合)

1. 泛化(Generalization)泛化表示一般和特殊的关系。在UML中,使用空心的三角形表示。上面类图中,动物和小鸟是一般和特殊关系。2. 实现(Realization)实现表示类和接口的关系。在UML中,实现关系使用带虚线的空心三角形表示。上面Eraser接口和Pencil类是一种实现关系。Java中实现某个接口,说明该类具有了该接口中的所有能力。3. 依赖(Dependency)依赖表示使用关系,比如说吃饭需要用筷子,写字需要用笔。在UML中,依赖关系使用带虚线的箭头表示。

2021-07-20 18:05:45 2198

原创 K8S集群部署经验总结

一、环境准备1.1 安装软件K8S集群的环境配置如下:机器角色所需软件192.168.88.14masterdocker、etcd、kube-apiserver、kube-controller-manager、kube-scheduler192.168.88.15nodedocker、kubelet、kube-proxy1.2 软件配置1.2.1 etcd配置[Unit]Description=Etcd ServerAfter=network.targ

2021-07-16 17:48:21 1050 1

原创 Solidity智能合约开发(应用篇)

下面介绍几个自己参与开发过的合约供大家一起学习。一、众筹合约二、投注合约三、智能评分合约四、拍卖合约五、货物采购合约

2021-07-12 21:59:20 9858 3

原创 Solidity智能合约开发(提高篇)

二、高级语法2.1 编译器介绍2.2 合约元数据2.3 状态变量函数声明:2.4 可见性控制2.5 函数2.6 事件2.7 继承2.8 抽象合约2.9 接口2.10 库合约2.10.1 import2.10.2 using…for

2021-07-05 19:44:38 1729 2

原创 Solidity智能合约开发(入门篇)

一、基础语法1.1 版本声明合约文件开头需要声明编译器的版本号,目的是为了该合约在未来版本的升级中引入了不兼容的编译器,其语法为:pragma solidity 版本号版本号应该遵循“0.x.0”或者“x.0.0”的形式,比如:// 代表不允许低于0.4.17版本的编译器,也不允许使用高于0.5.0版本的编译器pragma solidity ^0.4.17// 代表支持0.4.17以上的版本,但是不能超过0.9.0版本pragma solidity >=0.4.17 < 0.

2021-07-05 19:44:11 2438 1

原创 SpringBoot @Async + Completable实现异步踩到的坑

最近在项目中使用SpringBoot @Async注解 + Java8 Completable实现异步时候不小心踩坑了,所以写下这篇文章总结一下。一、配置类第一步:新建一个配置类,实现AsyncConfigurer接口;第二步:实现getAsyncExecutor方法,该方法返回一个线程池对象;第三步:实现getAsyncUncaughtExceptionHandler方法,该方法返回一个SimpleAsyncUncaughtExceptionHandler对象,该对象用于简单地记录异常信息;第三

2021-06-30 10:44:23 650 2

原创 Openstack学习总结之十(定制网络、节点扩容)

前言这部分我们定制一个“经典网络”,即提供对内和对外的网络模型。对外由provider网络提供,对内由internal网络提供。一、准备工作在VMware的control和compute主机上添加仅主机模型的网卡。添加完成后启动control和compute主机,然后分别在两个主机中配置新网卡eth1。cd /etc/sysconfig/network-scriptscp ifcfg-eth0 ifcfg-eth1vim ifcfg-eth1NAME=eth1DEVICE=eth1I

2021-04-07 13:41:57 705

原创 Openstack学习总结之九(定制镜像文件)

前言在实际应用中,我们会基于已有镜像文件进行个性化的定制,然后制作出满足实际业务需要的镜像文件。这部分我们介绍如何制作一个镜像文件。一、制作镜像文件1. 准备工作安装软件开启libvirtd服务创建链接文件检查网络状态# 安装基本软件yum install -y virt-install libvirt qemu-kvm# 启动libvirtd服务systemctl start libvirtdsystemctl status libvirtdsystemctl enable

2021-04-06 18:25:39 705

原创 Openstack学习总结之八(存储组件应用)

前言这部分介绍如何将块存储设备挂载到虚拟机中。一、块存储操作1. 创建数据卷创建一个大小为1Gb的数据卷。source openstack-demo.shopenstack volume create --size 1 volume-lvm执行cinder list查看创建的数据卷。2. 使用数据卷将volume-lvm数据卷挂载到provider-instance实例下。openstack server add volume provider-instance 8eeae358-a0

2021-04-06 13:41:17 858

原创 Openstack学习总结之七(存储组件部署)

前言存储组件的作用是将虚拟机里面的数据持久化到存储设备中,如果重启虚拟机,或者虚拟机发生迁移,虚拟机设备里面的数据也可以继续使用。OpenStack的存储功能主要包含三大块:对象存储、块存储、文件系统。其中对象存储(swift)和块存储(Cinder)是最成熟的两个组件。在生产环境中,几乎所有的关键业务系统都是通过访问块存储形式来存储数据的,所以,Cinder是使用最广泛的块存储组件。一、Cinder组件介绍Cinder组件是OpenStack存储功能中的块存储,它是在F版从nova中的nova-v

2021-04-06 12:53:23 1049

原创 Openstack学习总结之六(创建VM实例)

前言这部分基于前面部署好服务来创建第一个VM实例。一、创建虚拟网络1. 创建虚拟网络代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarnings('ignore')import sslssl._create_default_https_context = ssl._cre

2021-04-06 12:52:44 1325

原创 Openstack学习总结之五(网络组件部署)

前言这部分内容主要介绍openstack网络组件是如何部署。一、概述1. neutron介绍neutron是Nova提供的一个网络服务组件。它为Openstack服务管理接口设备之间通信提供网络服务的支持。通过插件方式,Neutron可以适应不同的网络设备和软件,从而为Openstack体系结构和开发提供灵活性。2. 网络分类按照提供的功能进行划分:网络类别说明management network管理网络,用于openstack模块之间的交互,连接数据库,连接mq等

2021-04-06 12:51:54 1011

原创 Openstack学习总结之四(计算组件部署)

前言这部分内容主要介绍如何部署nova-compute组件。一、介绍nova-compute是openstack里面一个非常重要的服务,它负责对VM实例生命周期的各个过程进行管理,它作为一组守护进程运行在linux服务器上。nova-compute主要由下面几部分组成:api组件:组件名称功能nova-api过REST API与外部进行交互nova-api-metadatanova-api的子服务,为VM实例的创建提供元信息core组件:组件

2021-04-06 07:09:58 479 1

原创 Openstack学习总结之三(glance组件部署)

前言这部分介绍openstack里面glance组件的部署。一、概述1. glance组件介绍glance是openstack核心组件之一。它的主要作用是用户发现、注册及搜索VM实例映像文件等功能。其中它由三部分组成:glance-api、glance-registry、glance-db。分类作用glance-api1)通过REST API方式提供给外部用户查询VM实例映像的元数据信息;2)将生成的HTTP指令交给glance-registry处理;glance-re

2021-04-06 06:25:37 868

原创 Openstack学习总结之二(认证组件部署)

前言这部分要完成openstack认证组件的环境部署。一、介绍Openstack所有服务都会使用到keystone认证组件。常见的两种认证方式:token和password。token通常用于服务组件内部通信,password可以通过用户名和密码进行登录和认证。认证术语术语说明user负责管理Openstack各种服务role代表用于具有的权限project组件服务的一种资源隔离方式,相当于java的package,一个项目project可以包含多个use

2021-04-03 10:00:04 380

原创 Openstack学习总结之一(环境准备)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、基础软件的最小化安装二、安装基础1.配置网卡2.安装基础软件3. 网络环境配置4. 其他配置三、Openstack环境准备1. 基础软件安装2. 克隆主机3. 配置计算节点四、Openstack支撑服务安装1. 数据库安装2. rabbitmq安装3. memcache安装总结前言Openstack部署前的准备工作。运行环境:VMware® Workstation 18CentOS-7-x86_64一、基础

2021-04-03 07:19:23 1256

原创 跨语言的GRPC调用

这次我们测试go与python之间的grpc调用。go作为grpc的客户端,python作为grpc的服务端。准备工作:第一步:安装go的grpc工具;go get -u github.com/golang/protobuf/protogo get -u github.com/golang/protobuf/protoc-gen-gogo get google.golang.org/grpc第二步:安装python的grpc工具;pip install grpcio-tools实现

2021-03-01 07:02:45 854

原创 Guava cache使用总结

Guava cache是google公司提供了一个好用的本地缓存工具。该工具提供了缓存的过期策略,缓存对象回收,缓存监控的一系列功能。用户只需要通过它提供的方法进行设置即可,大大简化了开发人员的工作。项目地址:https://github.com/google/guava引入依赖:<dependency> <groupId>com.google.guava</groupId> <artifactId>guava<

2021-01-29 18:22:11 545

原创 大数据学习笔记(七)

一、sqoopsqoop是一款开源的数据迁移工具,可以Hive与RDMS之间数据的导入导出操作。也可以实现HDFS和RDMS之间数据的迁移功能。

2020-09-23 12:23:43 186

原创 Lua script attempted to access a non local key in a cluster node 问题解决

一、业务场景最近优化公司需要对不同的业务系统的缓存工具提供一个标准化的解决方案。各个业务系统将缓存数据通过map结构进行存储,然后在缓存系统中将这些map获取出来,然后保存在redis数据库中。技术经理想到的最好解决方案是将map集合直接存储在redis的hash表中。但是要求对hash表中的每个元素设置缓存时间。存在问题:1)如果要往hash表添加数据,可以通过hmset命令,但是该命令无法设置过期时间;2)hash中的每个key-value键值对也无法设置过期时间;我第一时间想到的是,在程

2020-09-23 12:21:03 3624

原创 大数据学习笔记(六)

一、Azkaban介绍1.1 Azkaban是什么Azkaban是由Linkedin开源的一个批量工作流任务调度工具,用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种k/v(properties)格式文件来建立任务之间的依赖关系,并提供一个易于使用的web用户界面来维护和跟踪工作流。1.2 各种任务调度工具比较常见的工作流调度器有Hamake、Oozie, Azkaban,Cascading等,尽管这些工作流调度器能够解决的需求场景基本一致,但在设计理念,目标用户,应

2020-07-14 17:07:47 179

原创 大数据学习笔记(五)

一、Flume1.1 概述Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume支持从各种数据源中(如文件、文件夹、Socket数据包、Kafka等)收集数据;同时,Flume提供对数据进行简单处理,并把处理后的数据写出到HDFS、hbase、hive、kafka等众多外部存储系统。1.2 运行原理Flume里面的几个比较重要的概念:Agent:它是Flume的核心角色,Flume采集系统是由一个个的Agent连接起来。一个Agent里面包含

2020-06-18 10:11:22 298

原创 调用ETC接口时出现PKIX path building failed错误

最近做ETC项目时候,在调用ETC接口出现了javax.net.ssl.SSLHandshakeException异常。完整的异常信息:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find vali

2020-06-15 18:21:28 6038

原创 大数据学习笔记(四)

一、Hive1.1 数据仓库1.1.1 数据库与数据仓库1)数据库是面向事务设计,数据仓库是面向主题设计的;2)数据库一般存储了业务数据,数据仓库一般存储的是历史数据;3)数据库设计应该尽量避免冗余,一般针对某一业务应用进行设计;数据仓库在设计时会有意地引入冗余,依照分析需求、分析维度、分析指标进行设计;4)数据库是为了捕获数据而设计,数据仓库是为了分析数据而设计;数据仓库是在数据库已经大量存在的情况下,为了进一步挖掘数据资源,以供数据用户决策使用而产生的。1.1.2 数据仓库的分层架构

2020-06-15 07:25:35 363

原创 大数据学习笔记(三)

一、MapReduce1.1 MapReduce介绍MapReduce是Hadoop框架的核心之一,它主要负责数据的分布式计算问题。MapReduce的核心思想是“分而治之”。“分”,即把一个复杂的任务分解成若干个简单任务来处理,但前提是这些任务是可以并行计算的。“合”,即对map阶段的结果进行全局汇总。MapReduce将整个并行计算过程划分为两个阶段:Map:对一些独立元素组成的列表中的每个元素并行地执行指定操作;Shuffle:对Map阶段得到的数据进行清洗操作;Reduce:对Shu

2020-05-31 02:33:27 273

原创 大数据学习笔记(二)

一、HDFS1.1 HDFS介绍HDFS(Hadoop Distributed File System,全称为“分布式文件系统”) 是Apache Hadoop下的一个分布式文件系统项目。Hadoop底层就是使用HDFS来存储大型的数据 。HDFS 使用多台计算机存储文件,并且提供统一的访问接口。HDFS对数据文件的访问通过流的方式进行处理,这意味着通过命令和 MapReduce 程序的方式可以直接使用 HDFS。HDFS 提供了高吞吐量的访问,并且降低了对并发控制的要求,简化了数据的聚合性,而吞

2020-05-28 17:40:45 214

原创 大数据学习笔记(一)

一、Hadoop介绍在IT行业中,所谓大数据是指那些无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合。比如说我们要存储一个非常大的文件。对于大数据而言,我们主要考虑两大问题,一个是数据的存储文件,另一个是数据的处理问题。那么在大数据中如何解决这两大问题。1)对于文件存储问题,我们可以把一个大的文件分割成许多小的文件,然后存放在不同的机器上,即分布式存储;2)对于文件数据的计算问题,如果数据量特别大,我们可以将一个大的任务拆分成许多小的任务,然后把这些任务放在集群上的各个主机中运行

2020-05-27 15:55:37 350

原创 项目的持续化集成和部署(二)

一、项目部署到Docker1.1 项目部署流程第一步:将项目上传到服务器上;第二步:创建Docker镜像;第三步:创建容器;第四步:启动容器;1.2 配置插件第一步:配置spring-boot-maven-plugin打包插件。<plugin> <groupId>org.springframework.boot</groupId> ...

2020-05-03 02:22:39 282

原创 项目的持续化集成和部署(一)

一、什么是持续集成持续集成(Continuous integration)简称CI,持续集成的思想是每天要多次将代码合并到主干,并进行集成、测试,这样就可以提早发现错误,进行修正。持续集成的好处有以下几个方面:自动化集成部署,提高项目集成的效率;方便项目测试人员更快地进行测试;更快地交付产品,提高产品交付的质量;二、持续集成的流程持续集成的基本流程:使用git将代码上传到G...

2020-05-03 00:34:07 1736

原创 dev开发者模式调试智能合约

一、使用nodejs编写智能合约第一步:在chaincode目录下新建一个fishcc文件夹,名字自己起;第二步:进入fishcc文件夹,执行npm init命令;第三步:安装fabric-shim;npm install --save fabric-shim第四步:新建app.js文件,文件名称自己指定。第五步:编写合约。const shim = require('fabric-...

2020-03-20 18:08:16 745 1

原创 密码学总结(三)

一、数字签名1.1 数字签名和非对称加密的关系实际上,数字签名和非对称加密有着非常紧密的联系,简而言之,数字签名就是通过将非对称加密 “反过来用” 而实现的。下面我们来将密钥的使用方式总结成一张表:私钥公钥非对称加密接收者解密时使用发送者加密时使用数字签名签名者生成签名时使用验证着验证签名时使用持有者个人持有任何人都可以持有1.2 数字签名...

2020-03-09 17:19:10 1507

原创 密码学总结(二)

一、非对称加密在对称密码中,由于加密和解密都需要使用相同秘钥。假如向接收者配送密钥过程中发生秘钥泄露,就可能导致泄的情况出现。而非对称加密的出现可以很好解决该问题。非对称加密的密钥分为加密密钥和解密密钥两种。发送者用加密密钥对消息进行加密,接收者用解密密钥对密文进行解密。解密密钥从一开始就是由接收者自己保管的,这样就解决了上面秘钥配送过程中可能遇到的泄密问题。非对称加密中,加密密钥一般是公...

2020-03-09 11:24:37 913

jsp论坛程序设计

这是一个jsp的论坛程序,它是基于SSH的J2EE应用程序。我现在把他开源出来,供大家学习与参考,希望对大家有用。 如果大家要部署到应用服务器上运行的话,请先阅读以下readme文件。里面我已经分别说明了如何把该程序部署到服务器上。如果有其他什么问题,可以随时与我交流!

2014-01-09

空空如也

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

TA关注的人

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