技术总结和分享
文章平均质量分 76
一个老男人的IT梦
这个作者很懒,什么都没留下…
展开
-
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 · 4877 阅读 · 0 评论 -
UML类图(泛化、实现、依赖、关联、聚合、组合)
1. 泛化(Generalization)泛化表示一般和特殊的关系。在UML中,使用空心的三角形表示。上面类图中,动物和小鸟是一般和特殊关系。2. 实现(Realization)实现表示类和接口的关系。在UML中,实现关系使用带虚线的空心三角形表示。上面Eraser接口和Pencil类是一种实现关系。Java中实现某个接口,说明该类具有了该接口中的所有能力。3. 依赖(Dependency)依赖表示使用关系,比如说吃饭需要用筷子,写字需要用笔。在UML中,依赖关系使用带虚线的箭头表示。原创 2021-07-20 18:05:45 · 2498 阅读 · 0 评论 -
跨语言的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 · 896 阅读 · 0 评论 -
Guava cache使用总结
Guava cache是google公司提供了一个好用的本地缓存工具。该工具提供了缓存的过期策略,缓存对象回收,缓存监控的一系列功能。用户只需要通过它提供的方法进行设置即可,大大简化了开发人员的工作。项目地址:https://github.com/google/guava引入依赖:<dependency> <groupId>com.google.guava</groupId> <artifactId>guava<原创 2021-01-29 18:22:11 · 596 阅读 · 0 评论 -
以太坊众筹DAPP实战(五)
一、在我参与的众筹界面显示所有申请(1)定义状态变量state = { supportorFundingDetail : [], currentFundingDetail : '', requests : [],}(2)定义onCardClick和onRequestDetailClick函数。import {..., showRequests} fro...原创 2019-05-17 18:42:36 · 1172 阅读 · 1 评论 -
以太坊众筹DAPP实战(一)
一、业务分析(1)角色分配管理员:发起众筹。参与者:参与众筹。(2)业务介绍由管理员发起众筹 。所有人都可以参与众筹。如果在指定时间内筹到目标金额,则众筹结束,参与人获得超值产品。如果没有在指定时间内筹到目标金额,平台自动把筹到的资金退还给所有参与者。(3)项目意义区块链众筹平台能够保证资金安全性,防止众筹方跑路或不作为。项目方筹到的钱不会被拿走,而是一直放...原创 2019-05-13 18:30:31 · 3351 阅读 · 8 评论 -
IPFS技术(一)
IPFS介绍IPFS(InterPlanetary File System,翻译为“星际文件系统”)是一个面向全球的、点对点的分布式文件系统。其目标是为了补充(甚至是取代)目前统治互联网的超文本传输协议(HTTP),将所有具有相同文件系统的计算设备连接在一起,使数据的访问速度更快、更安全、更健壮、更持久。该开源项目由Juan Benet在2014年5月份发起。IPFS网络特点:1)互联网信息...原创 2019-05-23 19:24:36 · 4218 阅读 · 2 评论 -
我对Java反射的理解
一、反射介绍对于Java初学者来说,反射是一个非常不好理解的概念。如果没有一定的编程经验的积累,是很难对Java反射有一个很好的理解。在一般开发中,很少会使用反射。但是,如果您要开发框架,或者写一些工具的时候,就很有可能需要使用到反射。举个例子,现在我有一个文件,文件内容如下所示:className=com.xjy.demo.Personname=lilyage=20上面内...原创 2019-05-18 11:16:04 · 307 阅读 · 0 评论 -
以太坊众筹DAPP实战(四)
一、发起众筹(1)在display目录下创建CreateFundingForm.js文件。该页面定义了发起众筹的表单。import React, {Component} from 'react';import {Dimmer, Form, Label, Loader, Segment} from 'semantic-ui-react'import {createFunding} fr...原创 2019-05-16 20:03:46 · 755 阅读 · 4 评论 -
以太坊彩票DAPP实战(三)
一、在页面上获取合约信息(1)在App.js中导入合约实例。// 导入合约实例let contractInstance = require('./eth/lottery')(2)定义一个App类,继承Component,并提供componentWillMount()和render函数。import React, {Component} from 'react';// 导入...原创 2019-05-13 01:50:12 · 652 阅读 · 1 评论 -
Java面向对象设计原则
在软件设计领域中,普遍认为一个好的软件设计,应该具有以下特性:1)可扩展性; 2)灵活性; 3)可插入性。因此,针对上面三个特性,我们在进行Java程序设计的时候,应该遵守以下七个设计原则:单一性原则、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、组合聚合复用原则、迪米特原则。单一性原则一个类只负责一项职责。这样可以降低类的复杂度,提高类的可读性,提高系统的可维护性。如果单...原创 2019-05-21 17:02:57 · 354 阅读 · 0 评论 -
IPFS技术(二)
一、IPFS APIIPFS提供了支持多种语言的 API版本,具体x可以在github上搜索ipfs查看相关介绍。这里我们主要介绍NodeJs上如何使用IPFS的API。(1)准备环境第一步:创建一个truffle-react项目;第二步:在命令行上进入client目录,然后执行npm命令安装ipfs-api的包。>> npm i --save ipfs-api(2)使用...原创 2019-05-24 15:08:11 · 721 阅读 · 0 评论 -
以太坊彩票DAPP实战(二)
一、项目介绍彩票项目使用React技术来进行开发。该项目需要部署到一个Web服务器上运行。后台通过Web3与以太网区块链上读取数据。(1)项目模块划分项目核心模块主要分为:web3(负责提供引入web3的公共代码)、合约相关(提供了操作合约的方法)、界面相关。(2)模块交互图示App.js作为控制器,负责不同模块之间的调度。二、环境准备(1)下载creat...原创 2019-05-11 01:35:39 · 935 阅读 · 0 评论 -
Web3部署智能合约
一、web3介绍web3是一个专门与以太坊交互的node.js库。我们先回顾一下使用remix部署合约的步骤:第一步:编写合约。第二步:编译合约(之前我们设置了自动编译)。第三步:部署合约,部署成功后返回合约地址。第四步:调用合约。remix底层就是使用了web3实现了编译、部署、调用合约的功能。那么web3是如何实现这些功能呢?看完这篇文章就一清二楚了!!!二、web...原创 2019-05-07 19:40:28 · 5269 阅读 · 5 评论 -
Truffle开发入门
一、Truffle框架入门Truffle是一个功能强大的Dapp开发框架。使用Truffle在以太坊上开发应用程序变得更加简单。Truffle官网:www.truffleframework.com(1)安装Truffle>> npm install -g truffle安装结束后,可以执行如下命令测试是否安装成功。>> truffle versi...原创 2019-05-21 12:21:47 · 905 阅读 · 0 评论 -
Docker的网络管理(一)
一、端口映射默认情况下,宿主机的网络与容器是隔离的。所以,在宿主机无法直接访问启动了的容器服务。但是可以通过端口映射的方式,将容器中的端口映射到宿主机的某个端口上,这样就可以在宿主机上访问容器服务。实现端口映射非常简单,只需要在启动容器时候指定-p参数。$ docker run -d -P [--name 容器名称] 镜像名称$ docker run -d -p [宿主机IP]:[宿主机端...原创 2019-05-30 09:09:01 · 371 阅读 · 0 评论 -
Geth搭建以太坊私有网络
一、Geth介绍Geth是目前主流的以太坊客户端。它提供了部署Dapp应用的私有网络。而且,Geth也提供了一个交互式命令的控制台,可以很方便地使用一些命令去执行创建节点、访问节点等操作。下载地址:https://ethfans.org/wikis/Ethereum-Geth-Mirror二、搭建私有网络本文重点介绍如何使用Geth搭建私有网络。1. 搭建私有网络的步骤首先,准备创世文...原创 2019-05-23 12:24:00 · 883 阅读 · 0 评论 -
SpringMVC框架(三)
一、异步请求1.1 概述(1)同步请求当浏览器请求服务器的时候,必须要先等待服务器的响应。在服务器响应之前,用户会一直处于等待状态,而且在浏览器上是看不到任何东西的。但是这样有个问题,如果服务器处理的时间很长,那么对于用户的体验就非常不好。(2)异步请求页面的加载和数据的获取是不同步的。例如:用户在页面上填写数据,然后把数据提交给服务器。如果是使用异步请求方式提交数据,那么在提交数据的...原创 2019-08-18 01:18:59 · 564 阅读 · 0 评论 -
Spring框架详解(一)
一、 概述1.1 Spring介绍Spring框架是目前最流行的JavaEE开源框架之一。它的核心功能是IoC(Inverse Of Control:控制反转)和AOP(Aspect Oriented Programming:面向切面编程)。除此以外,Spring还提供了Spring MVC、Spring JDBC,以及业务层事务管理等众多出色的企业级应用技术,它还能整合开源世界众多著名的第三...原创 2019-08-13 07:36:07 · 763 阅读 · 0 评论 -
Dockerfile构建Go环境
一、手工部署go环境第一步:基于ubuntu镜像创建容器,并进入容器;$ docker run -itd --name ubuntu-go ubuntu$ docker exec -it ubuntu-go /bin/bash第二步:配置国内源;root@xxx:~# sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/ap...原创 2019-06-11 15:58:26 · 5563 阅读 · 0 评论 -
DockerFile介绍
一、什么是DockerFile?DockerFile类似于Linux中的bash脚本文件,它里面是由许多的Docker命令所组成。使用DockerFile可以快速地构建我们需要的Docker镜像。二、DockerFile的组成1)where:镜像从哪里来2)who:维护者是谁3)what:要做什么例如:# 构建一个基于ubuntu的docker定制镜像# 基础镜像FROM ubu...原创 2019-06-03 15:51:46 · 203 阅读 · 0 评论 -
数据库设计的一般步骤
经过几天给韶关某个高校进行数据库设计的实训,对数据库设计的过程有了更加深刻的理解。数据库的设计按照以下步骤:(1)了解功能需求在设计数据库之前,设计人员必须要先了解系统的功能需求。这里可以通过阅读产品需求规格说明书,与项目相关人员(比如项目经理、客户等)进行充分沟通。(2)定义实体了解系统功能需求之后,设计人员通过分析系统功能定义出系统有哪些实体。比如:到酒店开房。这里应该至少包含两个实...原创 2019-06-13 20:03:58 · 57160 阅读 · 2 评论 -
我对微服务架构的一些看法和理解
最近去面试几家公司,都被问到微服务的问题,可见微服务在企业应用中是多么流行。无论是大企业还是小企业的面试官,好像都把微服务作为衡量Java培训讲师水平的标准。虽然之前对微服务架构也有一定的了解,但是面试的时候总是不能够把微服务架构很好的回答出来。基于这个原因,所以才想把微服务架构总结一下。(1)微服务架构与传统架构的区别传统项目架构使用单体架构,就是一个项目集成了所有的功能模块。...原创 2019-06-13 19:18:11 · 1249 阅读 · 0 评论 -
Docker的数据管理
一、数据卷管理数据卷的作用是将宿主机的某个磁盘目录映射到容器的某个目录,从而实现宿主机和容器之间的数据共享。命令格式:$ docker run -itd --name [容器名称] -v [宿主机目录]:[容器目录] [镜像名称] [命令(可选)]下面实现一个使用数据卷实现文件共享的案例。具体需求如下:第一步:在宿主机的用户根路径下创建一个目录zhong-test。$ cd ~$ ...原创 2019-05-28 13:31:48 · 800 阅读 · 0 评论 -
Docker的网络管理(二)
一、Host模型Host模型是使用宿主机网络对外提供服务,它本身并没有固定的IP地址。它的IP地址与宿主机的IP相同。从上图可以看到,Host网络没有IP相关的配置信息。命令格式:$ docker run --net=host -itd --name [容器名称] [镜像名称]例如:$ docker run --net=host -itd --name nginx-test ngi...原创 2019-05-31 01:00:48 · 317 阅读 · 0 评论 -
Docker的镜像和容器管理
一、Docker的镜像管理Docker镜像是一个Docker的可执行文件,其中包含了运行应用程序所需要的代码、依赖库、环境变量、配置文件等等。(1)搜索镜像$ docker search [镜像名称]例如:搜索nginx镜像。$ docker search nginx界面输入如下:zhongliwen@zhongliwen-virtual-machine:~$ docker se...原创 2019-05-28 11:08:10 · 3085 阅读 · 0 评论 -
Docker快速入门
一、Docker安装和启动(1)环境要求Docker分为社区版和企业版,这里我们安装的是社区版。在Ubuntu下安装Docker需要有一定的环境要求,可以执行以下命令查看主机环境:$ uname -a$ ls -l /sys/class/misc/device-mapper(2)部署Docker第一步:安装基本软件。$ sudo apt-get update$ sudo a...原创 2019-05-27 23:08:03 · 326 阅读 · 0 评论 -
npm命令
一、npm介绍npm是Nodejs自带的包管理器,当你安装Node的时候就自动安装了npm。当使用一个功能的时候,而Node本身并没有提供该功能的模块,那么我们可以从npm上去搜索并下载该模块。npm提供了许多模块,使得程序员开发复杂的NodeJs的程序变得更为简单。二、npm命令(1)查看版本>> npm -v(2)初始化package.json文件,该文件记录...原创 2019-05-07 13:11:31 · 187 阅读 · 0 评论 -
Goland工具开发NodeJs
一、Node环境配置(1)加载Node模块第一步:打开setting -> Language & Frameworks -> JavaScript -> Libraries,界面如下所示:第二步:点击Download,下载node模块。下载完成后界面如下图所示:第三步:修改JavaScript版本为ECMAScript6。配置完成后,重启一...原创 2019-05-07 00:43:03 · 2223 阅读 · 0 评论 -
区块链相关知识(二)
一、比特币相关技术1. 加密技术在比特币系统中使用加密技术保证交易的安全性。加密技术分为对称加密和非对称加密。(1)对称加密对称加密就是加密和解密使用相同的密钥。例如:DES、3DES、AES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。特点:效率高,算法公开,安全性取决于密钥大小。密钥越长,安全性就越高,但是效率也越慢。除此以外,密钥分发...原创 2019-04-28 11:45:43 · 420 阅读 · 0 评论 -
区块链相关知识(一)
一、区块链相关概念1、钱包比特币钱包中保存了地址和密钥。地址相当于现实钱包中的银行卡,密钥相当于银行卡的密码。每一个地址都对应这一个密钥。钱包地址都保存在本地的wallet.dat文件中。wallet.dat文件负责维护钱包的地址和私钥,所以必须要保存好该文件。Bitcoin Core是官方发布的用于管理比特币私钥的客户端。官方下载地址:https://bitcoin....原创 2019-04-28 10:53:19 · 1155 阅读 · 0 评论 -
Java语言实现区块链(五)
一、集成WebSocket,实现P2P网络通信WebSocket官方文档:https://github.com/TooTallNate/Java-WebSocket(1)引入坐标。compile "org.java-websocket:Java-WebSocket:1.3.8"(2)在websocket包创建两个类,一个代表websocket客户端,一个代表websocket服务端...原创 2019-05-02 15:17:10 · 897 阅读 · 1 评论 -
Go语言实现的并发聊天室(四)
1. 监听客户端退出2. 超出自动退出第一步:在HandleConnect函数中定义两个变量。isQuit := make(chan bool)hasData := make(chan bool)第二步:如果客户端关闭,向isQuit通道写入数据。第三步:在go func(){}默认添加以下代码。第四步:修改for循环,从isQuit、hasData和time定...原创 2019-03-25 20:37:59 · 176 阅读 · 0 评论 -
Go语言实现的并发聊天室(三)
1. 查看当前在线用户2. 修改当前用户的名字3. 发送私聊消息func HandleConnect(conn net.Conn) { defer conn.Close() //保存登录用户到map中 addr := conn.RemoteAddr().String() //获取IP地址 client := Client{make(chan string), addr, a...原创 2019-03-25 20:29:05 · 200 阅读 · 0 评论 -
Go语言实现的并发聊天室(二)
搭建程序主体(二)1. 定义变量// 定义一个结构体,保存客户端信息type Client struct { C chan string Name string Addr string}// 定义message管道,负责传递用户消息var message = make(chan string)// 定义一个map,保存客户端IP和客户端var onlineMap ...原创 2019-03-25 20:17:01 · 239 阅读 · 0 评论 -
Go语言实现的并发聊天室(一)
Go语言实现的并发聊天室(一)主协程:负责监听、接收用户连接请求,建立通信关系。HandleConnect协程:负责处理用户连接。Manager协程:负责监听Message通道中数据变化。Message通道:负责传递用户消息。Client结构体:保存客户端的信息。map集合:键代表客户端IP,值为该客户端的数据通道,用来针对该客户端的消息传递。WriteMsg...原创 2019-03-25 19:48:13 · 486 阅读 · 0 评论 -
Thymeleaf模版详解
于Thymeleaf官方介绍,Thymeleaf是一种现代的基于服务器端的Java模版引擎技术,它可以在web环境下使用,也可以在独立的、非Web环境下使用。对于目前流行的HTML5,Thymeleaf也是一种理想的选择。在SpringBoot中使用Thymeleafff非常简单,因为SpringBoot默认就是使用Thymeleaf作为视图层技术。所以,在SpringBoot中已经提供了Thym...原创 2019-03-01 19:44:46 · 1840 阅读 · 0 评论 -
Java多线程的安全问题(02)
使用多线程模拟卖票功能:要求:在电影院有三个窗口同时卖电影票(50张)。启动3条线程,每1条线程代表一个售票窗口。1)定义卖票的线程。class SaleTicketThread extends Thread { static int num = 50; //多个线程共享着这些电影票 public SaleTicketThread(String name) { super...原创 2018-09-01 22:06:56 · 268 阅读 · 0 评论 -
Java多线程介绍(01)
什么是进程、线程和多线程?进程是指运行中的程序,它负责了程序运行时候内存的分配。线程是一个程序代码的执行路径,它负责了任务代码的执行。例如:360安全卫士。为什么360安全卫士可以同时进行电脑体检、木马查杀、垃圾清理等工作呢?当运行360安全卫士的时候,如果我们点击垃圾清理,那么360安全卫士就会启用一个线程来执行垃圾清理的代码。如果点击了木马查杀,那么360就会启用一个线程来...原创 2018-09-01 11:33:01 · 377 阅读 · 0 评论 -
SpringBoot整合MyBatis(04)
这部分内容要求读者有一定的MyBatis基础知识。1)准备运行环境:第一步:准备数据库(MySQL数据库)。#客户表CREATE TABLE `cst_customer` ( `cust_id` int(11) NOT NULL AUTO_INCREMENT, `cust_address` varchar(255) DEFAULT NULL, `cust_name` v...原创 2018-08-31 23:17:40 · 264 阅读 · 0 评论