自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (9)
  • 收藏
  • 关注

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

问题给出任意单向链表,找出并返回该链表的中间节点。奇数长度的链表,例如:1->2->3->4->5返回节点 3偶长度的链表,例如:1->2->3->4->5->6返回节点 4解题思路与链表中环的检测一样,这题同样可以使用快慢指针来解决。定义两个指针fast和slow。slow一次遍历一个节点,fast一次遍历两个节点,由于fas...

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

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

问题给出一个单向链表,删除该链表倒数第n个节点,并返回头节点。例如:给出链表 1->2->3->4->5,n=2返回链表 1->2->3->5解题思路最容易想到的算法:先遍历一次链表,记下链表的长度,然后计算倒数第n个节点的下标m,然后再遍历一次链表,移除第m个节点。这种算法的时间复杂度是O(n^2 )。有没有时间复杂度

2018-10-20 21:24:38 927

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

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

2018-10-20 21:22:38 1221

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

问题如何检测一个单链表中是否有环,例如下图的例子。解决思路1:快慢指针法这是最常见的方法。思路就是有两个指针P1和P2,同时从头结点开始往下遍历链表中的所有节点。P1是慢指针,一次遍历一个节点。P2是快指针,一次遍历两个节点。如果链表中没有环,P2和P1会先后遍历完所有的节点。如果链表中有环,P2和P1则会先后进入环中,一直循环,并一定会在在某一次遍历中相遇。因此,只要发现P2和...

2018-10-14 17:10:16 6665 4

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

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

2018-10-07 22:21:07 466

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

每一个服务都存在服务的提供方与消费方,服务发现就是消费方发现并且调用服务方提供的服务。在微服务架构下,存在众多的消费方与服务方,而且服务运行在不同的进程之中,消费方如果想要调用某一个服务,必须通过远程调用的方式,此时就会遇到下面几个问题:消费方如何知道服务方的调用地址?以集群方式部署的服务方,如何保证负载均衡?当服务方发生变动,例如IP变更、服务下线等,如何通知到消费方?服务发...

2018-09-04 23:08:19 1175

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

前一篇介绍了微服务的技术架构,这一篇再来介绍微服务的组织架构, 之所以要聊组织架构,是由于著名的康威法则。 设计系统的组织,其产生的架构设计等价于组织间的沟通结构。康威法则讲的是系统架构需要与开发系统的组织架构相匹配,如果不匹配就会造成沟通成本过高的问题。例如开发一个单体应用,当参与开发的人员很少时,大家都隶属于一个团队,没有太大的问题。但是一旦应用的规模很大,需要多个团队...

2018-08-07 13:48:14 5899

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

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

2018-07-28 18:25:38 4415 1

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

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

2018-07-21 09:33:18 761

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

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

2018-07-14 15:51:37 1633

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

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

2018-07-10 18:54:58 379

原创 兩步验证的原理

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

2018-07-10 18:53:25 2746

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

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

2018-07-10 18:47:21 12435 3

原创 集中式缓存

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

2018-07-07 21:34:17 2282

原创 本地缓存

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

2018-07-07 21:32:21 4568

原创 分布式系统

这篇文章我们继续聊聊《深入分布式缓存:从原理到实践》这本书。本书的核心是介绍在分布式系统中如何使用缓存,在深入了解缓存的使用之前,我们先来了解缓存的使用方:分布式系统。遗憾的是,书里虽然介绍了一些分布式系统的概念、理论和实践,却没有解释究竟什么样的系统是分布式系统,以及使用分布式系统的原因,所以这篇文章,我会结合自己的工作经验,谈一谈自己对于这两个问题的理解。最通俗的解释一听到“分...

2018-07-07 21:30:45 254

原创 缓存为王

计算机技术经过几十年的发展,无论是规模、性能还是容量都已经与往日大不相同,尤其是近年来互联网的不断普及,对以互联网为基础的系统架构提出了更多挑战。而互联网架构系统与传统IT系统最大的区别就是对于缓存的使用。合理使用缓存可以提高系统的响应速度,扩大容量,减少成本,可以毫不夸张的讲,缓存是互联网架构中最关键的环节,是每一个互联网公司必须面对和攻克的一个难题。今天,我来为大家介绍一本17年1...

2018-07-07 21:29:12 445

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

我们系统在一次升级之后,生产环境大量出现Internal server error 500错误,具体场景:在APP上使用拍照功能后,APP通过Http协议上传压缩后的照片到服务端,但是上传过程中大量出现Internal server error 500错误,很多照片都传不上去。经过一番排查之后,我们最终成功解决了这个问题,最后的原因有些出乎意料,这里卖个关子先不说出来。下面是我们解决问题的...

2018-07-07 17:53:10 234892 6

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

什么是智能合约智能合约的概念早在上世纪90年代就已经被提出来,自从以太坊将其发扬光大以后,智能合约在各个区块链项目,尤其是公链中得到了广泛应用,EOS也不例外。用一句话描述智能合约: 智能合约(Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。例如小张和小王掷骰子,约...

2018-07-01 20:46:46 2156

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

本文将会介绍如何使用CLion查看EOS源码。EOS的智能合约基于C++开发,官方在github上提供了很多合约样例,地址: https://github.com/EOSIO/eos/tree/master/contracts直接查看这些样例的源码无疑是学习合约开发最快速的方法,这时我们需要一个合适的IDE工具,尤其是IDE的代码追查功能,能够大大提高阅读源码的效率,在这推荐大家使用CL...

2018-07-01 20:45:46 1882

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

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

2018-07-01 20:44:49 1408

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

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

2018-07-01 20:43:51 1227

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

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

2018-07-01 20:42:55 2522

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

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

2018-07-01 20:39:32 1768

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

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

2018-06-28 18:08:46 1560

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

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

2018-06-28 18:06:23 1077

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

前言一直想学习EOS开发,但是不知道怎么入门。最近从GitHub上下载了源码,发现官方已经提供了完整的EOSIO开发入门教程,既然如此赶紧开始行动。今天是系列文章的第一篇,介绍如何使用Docker搭建本地环境。选择构建方式官方支持两种方式搭建本地环境使用源码使用Docker我个人首选Docker,因为可以将与EOSIO相关的软件、环境都封装在一个镜像中,不管是出了问题...

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

DEV下载地址

DEV的下载地址

2016-04-29

ExtJS+Web应用程序开发指南

ExtJS+Web应用程序开发指南(第二版),相比于第一版,增加了很多对ExtJS 4.0新特性的介绍。 虽然不是高清晰的,但不影响阅读,最重要的,这个是完整版,绝对不会像某些不负责任的人一样,发些封面或者部分章节出来忽悠人!

2013-08-22

CXF拦截器(Interceptor)的使用

讲解了cxf实现拦截器的原因、核心API及使用方法

2013-05-28

unitils-单元测试整合之王

构建在DbUnit与EasyMock项目上并与JUnit和TestNG相结合。 易于把spring管理的bean注入到单元测试中。 易于测试dao层、service层

2013-05-28

jdk1.6中文文档

jdk1.6中文文档,jdk1.6各种类的使用方法和定义

2013-05-28

JAVA 设计模式

用诙谐、幽默、通俗易懂的语言介绍java的23种设计模式 (有几个模式没有写,有兴趣的同学可以搜索 设计模式之禅)

2011-12-26

JAVA混淆设计算法

有5个文件,都是关于JAVA混淆算法的研究

2009-05-17

Java混淆器的设计与实现

Java混淆器的设计与实现,介绍了JAVA混淆器的设计方法

2009-05-17

Java虚拟机规范中文版

Java虚拟机规范中文版,描述了Java虚拟机规范的相关信息

2009-05-17

空空如也

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

TA关注的人

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