自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 常见链表操作-求链表的中间节点(JAVA实现)

问题 给出任意单向链表,找出并返回该链表的中间节点。 奇数长度的链表,例如:1->2->3->4->5 返回节点 3 偶长度的链表,例如:1->2->3->4->5->6 ...

2018-10-20 21:25:27 1668 1

原创 常见链表操作-删除链表倒数第n个节点(JAVA实现)

问题 给出一个单向链表,删除该链表倒数第n个节点,并返回头节点。 例如: 给出链表 1->2->3->4->5,n=2 返回链表 1->2->3-&a...

2018-10-20 21:24:38 162 0

原创 常见链表操作-两个有序表的合并(JAVA实现)

问题 将两个有序单链表A和B,合并成C,如下图。 解决思路 同时从两个链表的头节点开始遍历,比较当前节点大小,将小的节点添加到C链表中,然后遍历。 非递归写法 /** * 链表ADT * * @author wangtao * @param <T&...

2018-10-20 21:22:38 513 0

原创 常见链表操作-链表中环的检测(JAVA实现)

问题 如何检测一个单链表中是否有环,例如下图的例子。 解决思路1:快慢指针法 这是最常见的方法。思路就是有两个指针P1和P2,同时从头结点开始往下遍历链表中的所有节点。 P1是慢指针,一次遍历一个节点。 P2是快指针,一次遍历两个节点。 如果链表中没有环,P2和P1会先后遍历完所有...

2018-10-14 17:10:16 3710 3

原创 常见链表操作-单链表反转(JAVA实现)

在技术面试的环,单链表的操作经常会被问到,比如一些常见的问题: 单链表反转 链表中环的检测 两个有序俩表的合并 删除链表倒数第n个节点 求链表的中间节点 接下来的文章,我对这些操作的实现算法做了一些总结,具体实现的编程语言是Java。 今天第一篇,先讲讲如何实现单链表反转。 ...

2018-10-07 22:21:07 280 0

原创 微服务架构核心(五)- 服务发现

每一个服务都存在服务的提供方与消费方,服务发现就是消费方发现并且调用服务方提供的服务。 在微服务架构下,存在众多的消费方与服务方,而且服务运行在不同的进程之中,消费方如果想要调用某一个服务,必须通过远程调用的方式,此时就会遇到下面几个问题: 消费方如何知道服务方的调用地址? 以集...

2018-09-04 23:08:19 320 0

原创 微服务架构核心(四)- 微服务组织架构

前一篇介绍了微服务的技术架构,这一篇再来介绍微服务的组织架构, 之所以要聊组织架构,是由于著名的康威法则。 设计系统的组织,其产生的架构设计等价于组织间的沟通结构。 康威法则讲的是系统架构需要与开发系统的组织架构相匹配,如果不匹配就会造成沟通成本过高的问题。 例如开发一个单体应用,...

2018-08-07 13:48:14 4562 0

原创 微服务架构核心(三)- 微服务技术架构体系

微服务架构的名字里虽然有个”微”,但它涉及的整体架构体系可一点也不”微”,微服务架构除了业务代码的开发以外,还需要很多的支撑服务。 每个公司都有自己的微服务架构体系,虽然在细节上有很多不同,但是整体的思路是类似的,下图展示了一个比较成熟的微服务架构体系。 这个体系按照请求接入,由外到内...

2018-07-28 18:25:38 1926 0

原创 微服务架构核心(二)- 微服务的利与弊

不知道你有没有这样的感受,新系统在前期调研架构的时候,大家都希望优先选择微服务架构,好像一个系统不是微服务架构就OUT了一样。 但是真正的架构设计,并不是哪个架构流行就选哪个,那是要遵循简单、合适、扩展的原则。 所以在选择微服务架构之前,我们应该仔细衡量它的利与弊,分析微服务架构究竟能为系统带...

2018-07-21 09:33:18 530 0

原创 微服务架构核心(一)- 什么是微服务

微服务是目前互联网公司最常用的架构,与传统单体架构相比,微服务架构更加适应互联网快速、灵活的特点,接下来的系列文章我会逐一介绍微服务架构的核心知识点。 第一篇我们先来了解什么是微服务。 微服务的特点 微服务最经典的定义是Martinfowler老爷子在2014年的一篇文章中介绍的,原文如...

2018-07-14 15:51:37 940 0

原创 分布式系统设计-CAP定理

CAP的定义 CAP定理(CAP theorem)又被称作布鲁尔定理(Brewer’s theorem),是分布式系统设计中最基础、最重要的理论,它的意思是对于一个分布式计算系统来说,不可能同时满足以下三点条件: 一致性(Consistency):每次读取要么获得最近写入的数据,要么获得一个...

2018-07-10 18:54:58 166 0

原创 兩步验证的原理

被盗号 “您的账号密码有误,请重新输入” 小卢盯着电脑屏幕看了5分钟,心里纳闷,昨天还能登录,怎么今天就密码错误了,难不成我被盗号了?想到这里,小卢赶紧给自己的程序员好友小王打电话。 小卢:“小王,我在XX网站的账号被盗了!” 小王:“确定被盗了?赶紧把密码找回来。还有,你在其它网站的账号...

2018-07-10 18:53:25 1241 0

原创 计算机原理-浮点数存储

1、精度丢失 作为程序员大家应该都遇到过下面这种情况,用浮点数做运算,发现结果与预期有偏差,比如下面的JAVA代码 public static void main( String[] args ) { int i = 3; float j = 0...

2018-07-10 18:47:21 6309 2

原创 集中式缓存

这篇文章我们继续聊聊《深入分布式缓存:从原理到实践》中关于集中式缓存的部分。 集中式缓存的基本概念,我在前面的文章 本地缓存 中已经有过介绍,相对于本地缓存,集中式缓存主要有以下几个优点: 保证缓存数据的一致性。集中式缓存的数据是集中管理的,这样就能保证所有应用服务器取到的数据时一致的。 更...

2018-07-07 21:34:17 1240 0

原创 本地缓存

经过前面两篇文章的介绍,我们知道了缓存的重要性以及分布式系统的基础概念,接下来我们就要开始正式学习一些主流的缓存系统。 首先来简单了解缓存系统的分类,缓存系统按照缓存数据的存储方式可以分为本地缓存和集中式缓存两种。 本地缓存:缓存数据保存在单个应用服务器中,各个应用服务器之间的缓存数...

2018-07-07 21:32:21 1351 0

原创 分布式系统

这篇文章我们继续聊聊《深入分布式缓存:从原理到实践》这本书。本书的核心是介绍在分布式系统中如何使用缓存,在深入了解缓存的使用之前,我们先来了解缓存的使用方:分布式系统。 遗憾的是,书里虽然介绍了一些分布式系统的概念、理论和实践,却没有解释究竟什么样的系统是分布式系统,以及使用分布式系统的原因,所...

2018-07-07 21:30:45 110 0

原创 缓存为王

计算机技术经过几十年的发展,无论是规模、性能还是容量都已经与往日大不相同,尤其是近年来互联网的不断普及,对以互联网为基础的系统架构提出了更多挑战。 而互联网架构系统与传统IT系统最大的区别就是对于缓存的使用。合理使用缓存可以提高系统的响应速度,扩大容量,减少成本,可以毫不夸张的讲,缓存是互联...

2018-07-07 21:29:12 201 0

原创 Internal server error 500 问题解决思路

我们系统在一次升级之后,生产环境大量出现Internal server error 500错误,具体场景: 在APP上使用拍照功能后,APP通过Http协议上传压缩后的照片到服务端,但是上传过程中大量出现Internal server error 500错误,很多照片都传不上去。 经过一番排查...

2018-07-07 17:53:10 46917 0

原创 EOSIO开发(八)- 智能合约基础概念

什么是智能合约 智能合约的概念早在上世纪90年代就已经被提出来,自从以太坊将其发扬光大以后,智能合约在各个区块链项目,尤其是公链中得到了广泛应用,EOS也不例外。 用一句话描述智能合约: 智能合约(Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。...

2018-07-01 20:46:46 1573 0

原创 EOSIO开发(七)- 使用CLion查看EOS代码

本文将会介绍如何使用CLion查看EOS源码。 EOS的智能合约基于C++开发,官方在github上提供了很多合约样例,地址: https://github.com/EOSIO/eos/tree/master/contracts 直接查看这些样例的源码无疑是学习合约开发最快速的方法,这时我们...

2018-07-01 20:45:46 1342 0

原创 EOSIO开发(六)- 账户之实战篇

本文将介绍如何创建账户,以及定义账户权限。 涉及的操作有: 创建账户 修改账户权限 修改账户权限 目标是创建一个myaccount账户,同时将账户权限定义为下面的形式: myaccount account authorities ![屏幕快照 2018-05-05 下午12.44.1...

2018-07-01 20:44:49 1084 0

原创 EOSIO开发(五)- 钱包之实战篇

通过这篇文章,我们将学习如何通过cleos命令管理钱包。 环境准备 Docker环境: docker pull eosio/eos # 下载镜像 docker run --name keosd -t eosio/eos /opt/eosio/bin/keosd arg1 arg2 # 启...

2018-07-01 20:43:51 989 0

原创 EOSIO开发(四)- nodeos、keosd与cleos

前一篇文章介绍了EOSIO中钱包、账户与账户权限的概念,这一篇文章继续学习EOSIO系统的主要组件,包括nodeos、keosd以及cleos。 本文执行的命令都是基于Docker环境,请先下载Docker镜像 docker pull eosio/eos nodeos、keosd与cl...

2018-07-01 20:42:55 2084 0

原创 EOSIO开发(三)钱包、账户与账户权限之概念篇

这篇文章为大家介绍钱包(Wallet)、账户(Accounts)、账户权限(Account authorities)的概念。 钱包 Wallet 钱包是一个本地客户端软件,有下面两个作用: 保存私钥。私钥可以和一个或多个账户关联,私钥保存在钱包中,私钥对应的公钥保存在账户中。 对交易签名。...

2018-07-01 20:39:32 1268 0

原创 Jekyll建站之搜索引擎收录小技巧

访问我的个人博客 https://www.taowong.com,阅读更多文章。 当你用Jekyll辛辛苦苦搭建好了个人博客网站,兴奋的想要在谷歌上搜索自己的博客信息时,却突然发现完全没有任何记录?不止谷歌,其它搜索引擎,例如百度、雅虎等等也是一片空白,此时你是否会心生疑虑,为什么我...

2018-06-28 18:08:46 1043 0

原创 EOSIO开发(二)运行合约样例

访问我的个人博客 https://www.taowong.com,阅读更多文章。 本文将介绍如何使用EOSIO自带的合约”Currency”,实现创建钱包-创建账户-执行合约 的完整流程 前言 前一篇文章介绍了如何使用Docker搭建并运行EOSIO本地节点,本文将继续介绍如何在...

2018-06-28 18:06:23 848 0

原创 EOSIO开发(一)使用Docker构建本地环境

前言 一直想学习EOS开发,但是不知道怎么入门。最近从GitHub上下载了源码,发现官方已经提供了完整的EOSIO开发入门教程,既然如此赶紧开始行动。今天是系列文章的第一篇,介绍如何使用Docker搭建本地环境。 选择构建方式 官方支持两种方式搭建本地环境 使用源码 使用Docker...

2018-06-17 00:59:10 4168 2

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