自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 spring cloud 架构调优

项目中使用到spring cloud,前端使用vuex框架,PC网页版。在测试环境中发现,每个post或者get的请求之前都有同一样一个Preflight的请求。查看了Preflight请求的request method是option。Preflight request就要需要解释一下了,当一个资源从与该资源本身所在的服务器不同的域或端口请求一个资源时,资源会发起一个跨域 HTTP 请求。出于安全原因,浏览器限制从脚本内发起的跨源HTTP请求。 例如,XMLHttpRequest和Fe.

2021-08-12 17:04:09 261

原创 基于tendermint开发区块链

Tendermint介绍Tendermint包括两大组件,tendermint core和ABCI两大组件,开发者只要实现ABCI的接口即可定制开发自己的区块链逻辑。开发自己的代码安装tendermint corego get github.com/tendermint/tendermint/cmd/tendermintgo install ./cmd/...go get g...

2020-01-03 15:34:59 674 2

原创 产业区块链,技术赋能产业

产业产业是指由利益相互联系的、具有不同分工的、由各个相关行业所组成的业态总称,尽管它们的经营方式、经营形态、企业模式和流通环节有所不同,但是,它们的经营对象和经营范围是围绕着共同产品而展开的,并且可以在构成业态的各个行业内部完成各自的循环。产业是社会分工和生产力不断发展的产物。产业是社会分工的产物,它随着社会分工的产生而产生,并随着社会分工的发展而发展。产业互联网产业互联网是...

2019-11-20 14:43:56 562

原创 乌镇世界区块链大会回顾:从Defi到MOV

11月8-9日,由巴比特主办的第二届世界区块链大会•乌镇顺利召开。在2天48小时里,来自全球的区块链从业者、爱好者齐聚乌镇,他们围绕区块链的应用落地、技术前沿、行业趋势和热点问题进行了深入探讨。Libra、央行数字货币、国产公链、5G、Defi……丰富的热点议题让很多人看到了区块链时代最核心的趋势。Defi是热点议题中的重点,众多知名大咖在各分会场的讨论中都有提及。下面来跟着大咖来...

2019-11-14 16:31:37 668

原创 从源代码分析以太坊replacement transaction underpriced异常

项目中有使用到以太坊转账功能,在有一天以态坊网络堵塞,转帐报了replacement transaction underpriced异常,根据这个异常关键词搜索以态坊源码,发现是这里报错的。func (pool *TxPool) add(tx *types.Transaction, local bool) (replaced bool, err error) {//---------省去前...

2019-08-26 14:39:32 6521 1

原创 基于比原链开发Dapp(一)-架构设计

## 简介​ 研究比原链已经一年了,用比原链做了几个dapp,而且最近还做了一个基于他们插件钱包的dapp,总结了一些遇到的坑,还有一些技术细节,接下来我会分成三章,从dapp设计架构上,到深入到源码分析去帮各位介绍一下比原链的dapp,还有分析比原官方最近发布的dapp的架构。##### Dapp架构设计这个是所有工作的基础,从看完比原链源码使用过比原的钱包后,我们就在思...

2019-08-24 10:18:21 559

原创 基于比原链开发Dapp(二)-开发流程

参考资料:比原链DAPP开发流程储蓄分红合约Demo访问地址储蓄分红合约后端bufferserver源码储蓄分红合约前端源代码储蓄分红合约详细说明equity智能合约学习文档插件钱包API简介​ 这章的内容详细分析一下涉及智能合约Dapp的整个开发流程,注意是涉及只能合约,如果你只要一些基本转BTM功能没有太大意义,本内容补充一下官方提供的比原链DAPP开...

2019-08-24 10:03:23 429

原创 基于比原链开发Dapp(三)-Dapp-demo前端源码分析

# 简介​ 本章内容会针对比原官方提供的dapp-demo,分析里面的前端源码,分析清楚整个demo的流程,然后针对里面开发过程遇到的坑,添加一下个人的见解还有解决的方案。### 储蓄分红合约简述为了方便理解,这里简单说说储蓄分红合约的内容,具体可以查看[储蓄分红合约详细说明](https://github.com/oysheng/bufferserver/blob/master...

2019-08-24 09:55:50 784

原创 基于比原链开发Dapp(四)-bufferserver源码分析

##简介​ 本章内容主要直接分析bufferserver源码,也就是比原链官方Dapp-demo的后端接口,里面包含了UTXO的托管逻辑、账单逻辑等,还会介绍一些改进的源码内容。[储蓄分红合约后端bufferserver源码](https://github.com/oysheng/bufferserver)本次源码分析主要根据bufferserver,2019年5月13号的版本,...

2019-08-24 09:42:45 216

原创 书上得来终觉浅,绝知此事要躬行-以太坊平台实战篇

网上和书上的教程大多是在私有链单机CPU挖矿的情况,遗漏了实战环境中遇到的问题。接下来一步步的阐述实战经验,并结合理论分析。 有些概念先介绍下 transactionHash:交易的流水号,转账和执行合约方法都是交易。 blockHash:根据区块内容计算的唯一哈希值 blockNumber:区块号,按数字加1累加。...

2018-05-08 11:33:28 2117 1

原创 以太坊Truffle框架搭建一气呵成无坑版教程

Truffle框架搭建的教程网上也有好多,但是随着truffle版本的更新,truffle.js改名truffle-config.js、truffle命令升级、truffle与testrpc端口不一致、浏览器钱包插件等问题,导致原有的教程不再适用,在踩过一个又一个的坑后,打算写一篇无坑版本,让广大初学者可以一气呵成搭建完环境。一、安装Node.js在https://nodejs....

2018-03-31 15:17:44 12926 21

原创 手机端和wap端页面的自适应技术方案

网站aaa.xxx.com是有wap和pc两种页面,同一个url请求,nginx根据客户端的user-agent返回不同的适配页面,如下图:但是遇到一种情况,某m.xxx.com里有个入口跳转到我们的网站aaa.xxx.com首页,m.xxx.com无论是pc访问还是手机访问都是显示wap页样式,这就要求在m.xxx.com上跳到aaa.xxx.com首页也要显示wap页样式(如下图1),aaa....

2018-03-07 17:33:39 5331 1

原创 传统IT行业开发者如何敲开互联网公司的大门

传统IT软件的开发人员,由于提供的系统只在企业内部使用,并发量和数据量不大,最欠缺高并发量的架构经验,经验是在实战中积累的,如无实战经验,可以上网搜索以下知识点。有些面试官虽然觉得面试者无实战经验,但是好学熟悉原理的人也是会得到青睐,最终拿到offer。1、扎实的java基础知识,比如jvm的堆栈、hashmap、queue、线程基础知识2、负载均衡知识,nginx,apache各种负载均衡策略及...

2018-02-24 10:22:21 1750

原创 也来谈谈自己做为面试官的面试流程

1、请对方做个简短的自我介绍主要考察面试者的表达能力,同时也为自己争取点时间看下简历2、对简历中的疑问点提问进一步求证,获取到准确信息,同时也考察简历的真实性。比如有些简历中毕业五年,但只写了三年的项目经验,发现是前面两年不是做IT方面的工作,面试者没有补充上来,因此IT行业经验只能算三年。3、请面试者介绍一个体现自己能力的项目考察面试者的项目经验和技术水平,同时提出高可用性、高并发的设计问题,开...

2018-02-23 16:14:23 13297 1

原创 前后端配合干活的姿势

根据以往的工作经验,先总结出前端在项目中的角色和职责,大体分为两类:一.设计HTML页面前端根据UI设计师交付的设计图,转化成静态的html页面,后端开发拿到html页面,转化成动态的后台模板(jsp,velocity,freemark等等),并且加上ajax代码进行异步处理。在我任职过的其中一家公司就是用这种模式,背景是前后端人员比例1:8,前端无法腾出更多的精力参与更多工作。一个项目的工作量不...

2018-02-23 12:13:01 1680

原创 抄底dubbo底层的数据包格式

 先来看看一段dubbo调用代码:  ProviderdemoService= (Provider) context.getBean("demoService1");              Test t=new  Test();  t.s="hello world";  t.n=1111;  t.l=2222222222l;  String message = demoService.buil...

2018-02-22 16:44:13 2608

原创 MYSQL AUTO_INCREMENT奇技淫巧

产品提了新需求,被删除掉的回贴不显示,删除后,每个帖子的楼层数保持不变,帖子A是第二个回贴,帖子B是第三个回贴,删除掉A后,A不出现在回帖列表,但是B的楼层数还是显示3。于是需要记录下每个回贴的楼层数,在回帖表里增加字段记录楼层。原来的表结构是CREATE TABLE `comment` ( `id` bigint(20) NOT NULL,      评论的帖子ID `artic

2018-01-29 17:45:59 2175 1

原创 接入层高性能缓存技术nginx+redis利器

一. OpenRestyOpenResty是一个基于 Nginx与 Lua的高性能 Web平台,其内部集成了大量精良的 Lua库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态Web 应用、Web 服务和动态网关。接入层缓存技术就是使用OpenResty的技术用Lua语言进行二次开发。二.Nginx +redis 下图左边是常用的

2018-01-24 18:46:44 15903 10

原创 堆外内存DirectByteBuffer剖析

操作系统中除了jvm申请的内存外,还有一块jvm以外的内存,这块内存空间一船是连续的,DirectByteBuffer对象是在jvm申请和创建的,内容是在堆外内存存放的的,DirectByteBuffer保存申请堆外内存时的起始偏移地址和堆外内存申请的容量。java.nio.DirectByteBuffer源码包含了这些类:Bits:记录申请堆外内存的大小及创建Unsafe对象Un

2017-04-06 12:29:02 2977 1

原创 jvm堆外直接内存实现高性能接入层

接入层接受app的请求,解包数据重新封装数据包,把app数据包做为包体,同时再加上接入层的包头数据,根据app数据包头的协议号转发到后端业务服务器。所有app端的请求都先经过接入层,因此接入层的性能是至关重要。       为了性能上的保证,使用到netty的PooledDirectByteBuf,顾名思义就是池化的堆外直接内存,堆外直接内存就是jvm堆以外申请的内存,这里为什么考虑用

2017-04-04 11:44:12 3838 1

原创 通过redis选主进程

选主进程的方式有很多,完善点的方案就是zookeeper来做。这里介绍的是一种基于redis选主的方案,快速开发,快速实现。Springside4里有个MasterElector类,细读代码后整理出自己的总结如下。1.      业务进程启动时生成hostId,hostId的规则是“主机名-随机数”,一台主机部署多个进程实例的情况,也可以改为“主机名-端口”。2.      业务进程调

2017-02-23 17:15:56 3955

原创 基于springside4 的app token登录鉴权

很多公司app客户端和服务端通讯是基于socket自定义私有协议,但对于创业型公司和需要快速搭建app原型的公司,http通讯是比较好的选择,开发效率高,http协议会比socket协议通信慢,且容易被刷协议和截取数据包。那么基于http协议的通信,登录和鉴权是比较重要的环节。最近在研究springside4,shiro,基于这些框架搭建了一套app http登录和鉴权。下图先介绍整个逻辑流程

2017-02-22 17:41:23 4483

原创 websocket之旅

一次偶然的机会在群里有人提问到这样的问题,一台socket通信服务器,用其他客户端联接正常,用websocket就不行。于是自己写了个程序验证一下,也就开始了websocket 的hello word之旅。先了解下websocket的通信原理。 这里简单说明一下WebSocket握手的过程。当Web应用程序调用new WebSocket(url)接口时,Browser就开始

2017-02-08 14:11:11 1278

原创 故障定位及性能调优

接到某服务端团队的报障,他们的A服务调用我们负责的B服务在12点左右出现较多的超时情况,A服务设置的超时时间为3秒,当B服务处理时长超过3秒时,A服务就视为超时。经查看B服务的处理时长统计图如下,在12点左右出现较多的超过3000毫秒的情况。观察机器的性能图,在11点55分负载比较高。一分钟内的load average达到27.82,已经大于cpu的核数24.L

2017-02-06 18:16:46 1047 1

原创 ExecutorService的OOM坑

Executors创建的ExecutorService并不能设置控制消息队列的长列,默认长度是2^31,当线程处理速度较慢且并发任务太多时,任务队列的任务将不断堆积,就可能引起OOM。因此建议直接

2016-12-26 14:41:04 3521

原创 云中取物--app端的日志采集系统

手机app用户报障通常有几个渠道:1、通过手机app上的问题反馈,填写相关问题。2、是在渠道市场评论3、公司同事报障或者用户通过同事反馈。 问题定位的姿势如下:1.     在界面还原用户操作,试图重现2.     根据用户uid号分析后台日志或者查询数据3.     分析客户端日志 本文重点阐述第3点,要分析客户端日志,就得先收集日志,需要在用户反馈界面提

2016-12-21 11:27:38 4977 2

原创 敏捷灰度--select 代替 update、delete的灰度策略

本文讲述的是一种灰度策略,在讲灰度策略之前,先说一下线上数据库的delete,update操作。程序员删除线上数据时运行以下示例语句:        delete from table where id=xxx and name=’xxx’;        如果忘记加where条件或者where条件少了一个and或者or,将会删除很多数据。        稍微有经验的程序员,会分两

2016-12-19 11:23:29 1884 1

原创 敏捷开发之松散结队编程

结对编程是指两位程序员坐在同一工作台前开发软件。与两位程序员各自独立工作相比,结对编程能编写出质量更高的代码。但是在中国IT企业中不太可能用这种方式,理由是占用了两个人力在同时做一个事情。         我采用的方式自称为“松散结队编程”。让两个程序员各自开发功能,但又对彼此的程序逻辑清楚。         举个例子,在基于微服务的架构开发中,通常情况是一个程序员负责同一个微服务的增

2016-12-15 18:33:29 931

原创 秒杀后台系统设计

网上有很多介绍秒杀系统架构文章,写得不错,包括前后端的实现,这里只从后台服务系统架构阐述。打开页面时查询商品数量和点击抢购按钮提交校验时都是从本地web进程内缓存读取,这里没有使用redis,是考虑到redis号称单机qps最大10w/s,用户端可能会使用些作弊器产生的qps大于10w/s,所以通过web进程内缓存实现,web进程可以通过nginx做平行扩容。单个web应用可支持的

2016-10-20 18:07:39 4193

原创 微服务异步化架构

微服务中的逻辑复杂处理时间长的情况,在高并发量下,导致服务线程消耗尽,不能再创建线程处理请求。对这种情况的优化,除了在程序上不断调优(数据库调优,算法调优,缓存等等),可以考虑在架构上做些调整,先返回结果给客户端,让用户可以继续使用客户端的其他操作,再把服务端的复杂逻辑处理模块做异步化处理。这种异步化处理的方式适合于客户端对处理结果不敏感不要求实时的情况,比如群发邮件、群发消息等。下面介绍三种

2016-10-19 18:17:17 3367 1

原创 7+3 or 5+5(论团队组建)

如果新组建的团队中要配备两名android开发,需要招聘人员,人员招聘有两种方案:第一种:         1个七年工作经验,年薪要求是24万,再加1个三年工作经验,年薪要求是16万第二种:         两个五年工作经验的,年薪各要求各20万 24+16=20+20,人力成本一样,大家会选择哪种方案?我个人偏向第一个方案,3年工作经验有冲劲,且有一定的经验,可以带动

2016-10-19 15:53:22 764

原创 要把直播系统做好有多复杂?

CSDN有个直播知识库,有个网址http://lib.csdn.net/base/liveplay/structure详细介绍了直播的知识点,由于原图像蜘蛛网,不易查看,对原图进行分类截图,如下:

2016-10-14 11:37:34 1091

原创 微服务性能优化-日志调优

A进程是提供接口给手机客户端调用,B进程是刚上的服务,A进程调用B进程的超时时间设置为3秒,超过3秒就报错,上报到监控系统。上线后收到短信告警,超时的请求量较多。查看监控图如下纵座标的顶部是3秒,每隔一小时就有一个高峰达到3秒。刚开始怀疑B进程有定时任务在跑,查看代码后发现没有,最后查到运维人员在系统中跑定时任务,每小时检查log目录下的文件是否大于500M,是的话就切割文件压缩。文件

2016-10-13 17:24:45 4406

原创 直播平台录播系统架构

很多直播平台,会录制一些大主播的内容或者精彩内容,提供回放给用户观看。音视频的录制是在云端合成录制成个文件,有比较成熟的技术支持。技术的复杂性在于录制弹幕,礼物特效,进出场人数等流水。在直播时,弹幕、礼物特效、观看人数的变化都是通过广播消息包推送到客户端,流水录制服务器以摸拟客户端的方式接收广播消息包存放在数据库,数据库中需要保存消息的时间戳和广播包的内容。流水录制服务器同时也去拉取直播时的礼

2016-10-12 11:41:26 3940

原创 视频直播技术的基本概念入门

本文章只介绍视频转码,上图也省略音频部分,主播用手机开播,通过摄像头采集数据,编码上传到服务端,服务端解码还原数据,再进行转码成各样视频流,再编码给观看端。这里介绍几个概念:编码:指通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式,由于原始视频数据比较大,经过压缩后更快在网络传输。解码:解压经过压缩的数据,还原成原始的视频数据转码:将已经压缩编码的视频码流转换

2016-10-11 17:09:17 1639

原创 图解DDos

分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,用分布在网络的大量机器同时向服务器发起攻击,具体的攻击手段有下面四种:1.      SYN Flood攻击先解释tcp三次握手的过程Linux或者unix系统会对“未完成连接队列”和“已完成连接队列”有个总量限制,如果大量客户端同时发起连接,超过队列容量的会

2016-09-28 15:40:35 541

原创 敏捷开发之上线检查表

最近负责一个项目,工期较长,涉及方也较多,项目开发测试完后,就到上线阶段,为了控制整个上线过程,整理了一份上线检查表,如下:由于项目负责人不是代码编写人,程序逻辑肯定没有研发人员清楚,因此,这份表必须是与开发人员开会沟通达成一致输出的结果。在上线过程中不断检查完成点。

2016-08-01 11:55:37 6235

原创 煮酒论测试用例评审

测试用例评审这个流程,在很多公司都是忽略掉的,有些公司也只是测试写完用例,然后邮件出来,让相关研发确认,这就取决于研发的自觉性。对于简单的小需求,是可以按上面方法实行,但是对于涉及多端多方的复杂项目,仍需组织开发、测试、产品开会评审。编写测试用例最好的时机是在需求评审后,启动开发前。一份好的需求用例等同于需求的详细设计文档,是对需求文档的细化。 测试用例评审会的参与人员:产品经

2016-07-29 12:52:22 1481

原创 可靠性99.999%互联网微服务的架构设计

这个微服务是某大型app一个重要的微服务,并发量峰值是5000/秒,微服务的信息需要调用外部业务服务器获取信息,且要调用四个外部业务器的接口四次才能返回完整的信息。 第一个版本:由于业务服务器不是我们负责的,对方的研发人员基于一些原因,不愿意提供一个完整信息的接口给我们,因此需要通过四次远程调用接口才能获取到完整信息,可靠性和性能大大打拍。 为了提供可靠性和性能,增

2016-07-28 16:31:33 3035

转载 微信、陌陌等著名IM软件设计架构详解

对微信、陌陌等进行了分析,发出来分享一下(时间有些久了)电量:对于移动设备最大的瓶颈就是电量了。因为用户不可能随时携带电源,充电宝。所以必须考虑到电量问题。那就要检查我们工程是不是有后台运行,心跳包发送时间是不是合理。流量:对于好多国内大部分屌丝用户来说可能还是包月30M,那么我们必须站在广大用户角度来考虑问题了。一个包可以解决的就一个包。网络:这个也是

2016-07-19 13:02:54 8264

空空如也

空空如也

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

TA关注的人

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