自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

BruceWoo的专栏

新浪微博:蔷薇理想人生(http://weibo.com/freshairbrucewoo);目前主要学习和研究分布式软件系统、云计算、云存储、分布式数据通信框架和linux内核

  • 博客(113)
  • 资源 (10)
  • 收藏
  • 关注

原创 简易数字式电阻、电容和电感测量仪设计报告

写在前面:这是这次参加电子设计大赛我写的设计报告,但是我本人现在对硬件不是很熟悉,所以很对原理叙述不是很到位啊,不过整个作品用到知识点和原理都基本说清楚了。简易数字式电阻、电容和电感测量仪设计报告摘要:本系统利用TI公司的16位超低功耗单片机MSP430F149和ICL8038精密函数发生器实现对电阻、电容和电感参数的测量。本系统以自制电源作为LRC数字电桥和各个主要控制芯片

2010-07-24 16:18:00 18691 75

原创 透彻解析云原生在数字化转型中的应用实践,PaaS功不可没

2022年2月24日,中建电子商务技术总监技巅(花名)在CSDN 2022云原生超级英雄会直播中表示:PaaS平台是云原生时代下建筑行业数字化转型的助推剂。云原生下的系统设计理念指向对于云原生系统的设计理念,技巅提出了自己的想法: 面向分布式:容器、微服务、API驱动的开发 面向配置:一个镜像多个配置环境 面向韧性:故障容忍和治愈 面向弹性:弹性扩展和对环境变化(负载)做出响应 面向交互设计:自动拉起,缩短交付时间 面向...

2022-03-15 11:54:18 1208 1

原创 Redis第一个版本源码分析-启动过程分析1

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Helvetica; color: #000000; -webkit-text-stroke: #000000}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #000000; -webkit-text-st

2016-11-21 23:00:19 2085 3

原创 毕业工作五年的总结和感悟(中)-公有PAAS平台

上一篇文章介绍到云存储项目,下一个做的项目就是统一日志。这一个项目前前后后做了一年多,版本迭代更新了很多版本,架构升级都做了3次以上。做这一个项目是收获最大的,我在这一个项目中锻炼了大型分布式系统的架构设计能力,也从0开始完全自主研发和设计的一个分布式系统。里面涉及到了很多技术,例如日志实时抓取和采集技术、数据实时传输、数据压缩、软负载均衡、zookeeper等。统一日志项目从最开始的3个人到最多

2016-11-05 23:36:48 3418 1

原创 毕业工作五年的总结和感悟(中)

今天终于又能抽出一点时间来写文章了,接着前一篇继续写。前一篇文章有博友就评论说写了很多废话,其实本身就是一些工作中的点点滴滴,自己想到什么就写什么,没有太多的构思文章的内容和结构,就算自己回顾自己工作的这五年吧。 上篇博客提到自己主要支持各个团队使用scribe归集日志,这也包括归集日志到hadoop系统里面。所以这时的自己开始接触hadoop生态系统了,

2016-07-10 19:21:59 5691 1

原创 Jvm(jdk8)源码分析1-java命令启动流程详解

1.概述 现在大多数互联网公司都是使用java技术体系搭建自己的系统,所以对java开发工程师以及java系统架构师的需求非常的多,虽然普遍的要求都是需要熟悉各种java开发框架(如目前比较流行ssi或者ssh框架),但是对于java语言本身的理解才是本质。如果你熟悉jvm原理以及jdk本身的实现,我相信对于其他开发框架的学习和深入理解应该不是很困难,因为很多灵活和高大山的框架都使用了jdk最核心

2016-07-02 11:11:54 11281 3

原创 毕业工作五年的总结和感悟(上)

时间过得太快,马上就要大学本科毕业五年了,从实习就开始加入现在的公司,所以算起来加入现在公司的时间已经超过五年了。五年的时间很长,而且这五年也是人生中事业(说事业感觉有点高大上,说职业可能更合适,不过我喜欢把什么事情都当做一份事业来干)最关键的时间。上次写工作总结的时候还是4年前了吧,刚毕业那个时候由于时间全部用于工作和研究技术了,所以可以抽出很多时间来写东西。 其实写文章或者博客是很花时间的,

2016-04-04 20:32:07 20877 11

原创 传统企业打造互联网技术团队

最近传统企业向互联网转型的话题越来越热,对于处于不同行业的人对这个肯定有不同的看法。我作为一个一直在互联网从事技术研发工作的人也简单来谈谈自己的感受。    最近也和一些传统企业的相关人员做了交流,首先肯定主要是在技术层面上。其实现在很多传统企业进行转型主要有两个方面,一个是电子商务,另一个就是云计算。做云计算的目的是为了改善现有的IT基础设施,能够更加适合企业在各个业务上的增长。当然就目前的情况

2015-02-09 10:07:10 2310

原创 docker解决数据存储问题的方案

现在docker在云计算领域发展的势头很猛,各个公司不论大小都开始研究这个开源工具和技术,围绕docker的开源项目和创业公司也多如牛毛,就是一个简单管理container的web ui都有很多开源项目。不过还是一个人说的好,docker必须要是集群才好玩,而且越大越好玩。当然这是从玩技术的人眼中看待的问题,如果要真正用于生产还是有很多问题需要解决,很多方案需要设计,很多容错需要处理。今天看资料学

2014-10-21 20:07:33 5145

原创 高性能可伸缩的分布式消息中间件设计

消息中间件基本上是每一个大型互联网公司的标准基础技术组件配置,虽然有很多的开源消息中间件,功能也很强大,但是今天我还是想介绍一下怎样自主架构与设计并实现一套完整的分布式消息中间件。开源的消息中间件或多或少存在一些所谓“坑”,没有遇到大家用得都很happy,遇到的同学就只有加班查资料、google搜索或者直接review开源代码寻找问题原因了。还有就是基本上开源的消息中间件一般都是大而全的功能,一般

2014-10-15 17:57:22 11896 1

原创 PAAS平台构建7×24小时高可用应用的方案设计

本博客迁移到部署在jae上的独立博客系统wordpress,博客地址:http://it_blog.jd-app.com。欢迎大家一起来讨论IT技术。这篇博客的地址是:http://it_blog.jd-app.com/?p=74

2014-08-31 16:03:12 4397

原创 PAAS平台的web应用性能测试与分析

引言为什么我会写这一篇博客,因为最近很多京东云擎jae的用户反应一个问题就是他们部署在jae上面的应用访问很慢,有极少数应用甚至经常出现504超时现象,当然大家首先想到的是jae性能太差,这也是人之常情,往往出现什么错误的时候首先想到是别人的不好,工作中很多同事也是这样,如果软件系统出现一个bug首先怀疑的肯定不是自己写的代码。今天花时间写这一篇博客主要就是告诉大家怎样确定我们部署在PAAS平

2014-04-22 14:13:41 4547

原创 玩转开源系统总概述

开源系统现在是无处不在,大大小小的公司都会使用很多开源系统来搭建自己的IT系统,但是每一个公司对于开源系统的需求又是不一样的,有的只需要简单的可以使用就满足要求了,有的需要进行优化,在上一层的就需要做定制的二次开发,在高一层就是研究开源系统的架构,借鉴优秀的设计然后架构自己的系统,最后一种完全自主设计架构和开发的基本上很少了,至少在开源系统发展到目前这个阶段。上面5种层次的需求也对应了我们IT从业

2014-03-22 21:07:05 2916 1

原创 nginx之配置文件分析与开源软件配置文件结构设计

在开始设计自己开源软件的配置文件结构和解析方案之前先研究了一下nginx的配置文件结构和解析方法,当然我也是通过google查找资料和结合nginx的源码进行分析。在查找资料的过程中发现一些比较好的资料,就参照着读源码了,自己也没有发时间在去写一篇博客专门分享nginx的配置文件了,下面先简单介绍一下两篇比较好的资料博客:1.介绍了nginx配置文件中具体某一项的具体意义,而且很详细,看懂了这

2013-11-26 23:09:08 2675

原创 开源软件实践之使用有限状态机解析http协议

先简单介绍一下目前这个http服务器的开发进度,首先说明一下代码都还很粗糙,因为没有做过多的错误处理和逻辑封装,不过这也还原一个真实的开发过程,不像很多开源软件可能都是已经比较成熟了才开始发布和开源。(1)目前采用半同步/半异步的衍生模式半同步半反应堆实现了主体功能框架,后面打算改成改进的高效的半同步/半异步的模式;(2)实现了日志功能;(3)能够解析http协议,响应get请求;

2013-11-21 23:21:21 6349

原创 开源软件实践之linux高性能服务器编程框架和选型(续)

接着昨天的Proactor模式介绍。     proactor模式将所有IO操作交给主线程和linux内核来处理,工作线程负责业务逻辑。异步IO实现这种模式的工作流程如下:1)主线程使用aio_read函数注册socket读完成事件,提供用户接收数据的缓冲区地址以及读操作完成时如何通知应用程序(有信号等手段);2)主线程继续处理其他逻辑;3)当socket数据读入缓冲区后,

2013-11-20 23:25:18 3535 2

原创 开源软件实践之linux高性能服务器编程框架和选型

很多人学习编程技术一般都通过一本编程语言的入门书籍,然后尝试做一些例子和小项目。但是这些都不能让我们深入的学习很多的编程技巧和高深技术,当然这个时候很多有经验的学习人员就会告诉大家,找一个好的开源软件理解它的设计与实现原理,阅读开源项目的源代码,都知道源码之前了无秘密。我也承认读源码能够快速提高我们的编程能力和编程思维,我也经常研究很多项目的源代码,有些是工作需要,有些是兴趣。但是我今天想说的都不

2013-11-20 00:11:57 6544 9

原创 linux内核崩溃问题排查过程总结

1.概述某年某月某日某项目的线上分布式文件系统服务器多台linux系统kernel崩溃,严重影响了某项目对外提供服务的能力,在公司造成了不小影响。通过排查线上问题基本确定了是由于linux内核panic造成的原因,通过两个阶段的问题排查,基本上确定了linux内核panic的原因。排查问题的主要手段就是网上查找资料和根据内核错误日志分析并且构造条件重现。本文档就是对自己在整个问题排查过程中

2013-11-05 14:01:28 10566 1

原创 解决ubuntu升级软件scons的错误

首先看看遇到的什么错误,这是在从13.04升级到13.10的过程中遇到的,如下:Traceback (most recent call last):  File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main    "__main__", fname, loader, pkg_name)  File "

2013-11-05 11:21:10 3494

原创 ceph主要数据结构解析3-Ceph_fs.h文件

(1)集群内部子版本协议类型宏定义:与公共协议保持独立性,以便消息类型和协议升级受影响#define CEPH_OSDC_PROTOCOL   24 /* server/client */OSD服务器集群与客户端协议版本#define CEPH_MDSC_PROTOCOL   32 /* server/client */MDS与客户端#define CEPH_MONC_PROTOC

2013-08-15 23:26:09 3576 2

原创 ceph主要数据结构解析2-Rados.h文件

(1)文件系统id结构:16个字符组成struct ceph_fsid { unsigned char fsid[16];};以及对应的比较函数:static inline int ceph_fsid_compare(const struct ceph_fsid *a, const struct ceph_fsid *b){ return memcmp(a, b

2013-08-15 23:20:56 3524

原创 ceph主要数据结构解析1

1.Msgr.h文件:定义消息传输层的数据类型,以供ceph使用(1)默认的监控端口:#define CEPH_MON_PORT    6789(2)客户端处理端口范围定义:#define CEPH_PORT_FIRST  6789//监控#define CEPH_PORT_START  6800  //开始#define CEPH_PORT_LAST   6900//结束

2013-08-14 00:01:44 4106 1

原创 thrift之TServer类体系原理及源码详细解析之服务器基类TServer

这一部分主要实现了底层IO通信,还涉及到通信服务器的堵塞、非堵塞、单线程、多线程等运行模式,所以实现比较复杂。这一部分涉及到的类的关系图如下:由上面的类关系图可以看出,这一部分的类关系比较复杂,复杂的不是继承关系,而是相互之间的依赖关系。因为服务器需要处理很多的任务,也需要处理多个客户端的连接,这就涉及到多线程编程以及多线程之间通信及并发的情况。这一部分涉及到的并发编程的类容将在后

2013-08-13 23:42:34 4040 2

原创 thrift之TTransport层的内存缓存传输类TMemoryBuffer

内存缓存是简单的在内存进行读写操作的一种传输,任何时候想在上面写入数据都是放入缓存中,任何时候读操作数据也是来至于缓存。内存缓存的分配使用c语言的malloc类函数,分配的长度是需要长度的两倍,需要考虑这些内存缓存的使用范围。同样这个类继承至缓存基类TBufferBase,默认的缓存大小是1024(static const uint32_t defaultSize = 1024;),所有的构造

2013-08-01 09:05:14 4947 2

原创 thrift之TTransport层的分帧传输类TFramedTransport

帧传输类就是按照一帧的固定大小来传输数据,所有的写操作首先都是在内存中完成的直到调用了flush操作,然后传输节点在flush操作之后将所有数据根据数据的有效载荷写入数据的长度的二进制块发送出去,允许在接收的另一端按照固定的长度来读取。  帧传输类同样还是从缓存基类TBufferBase继承而来,实现的接口当然也基本相同,只是实现的方式不同而已,下面就来看看具体的实现过程和原理。  这个类

2013-07-31 00:12:09 8167 3

原创 thrift之TTransport层的缓存传输类TBufferedTransport和缓冲基类TBufferBase

本节主要介绍缓冲相关的传输类,缓存的作用就是为了提高读写的效率。Thrift在实现缓存传输的时候首先建立一个缓存的基类,然后需要实现缓存功能的类都可以直接从这个基类继承。下面就详细分析这个基类以及一个具体的实现类。  缓存基类TBufferBase  缓存基类就是让传输类所有的读写函数都提供缓存来提高性能。它在通常情况下采用memcpy来设计和实现快路径的读写访问操作,这些操作函数通常都是小、非

2013-07-26 00:39:26 6886 2

原创 thrift之TTransport层的堵塞的套接字I/O传输类TSocket

本节将介绍第一个实现具体传输功能的类TSocket,这个类是基于TCP socket实现TTransport的接口。下面具体介绍这个类的相关函数功能实现。  1.构造函数  分析一个类的功能首先看它的定义和构造函数实现,先看看它的定义:  class TSocket : public TVirtualTransport { ......}  由定义可以看书TSocket继承至虚拟传

2013-07-25 22:51:25 12192

原创 thrift之默认传输类TTransportDefaults和虚拟传输类TVirtualTransport

默认传输类TTransportDefaults提供了抽象类TTransport的默认实现,实现了非虚拟的方法(*_virt) read(), readAll(), write(),borrow() and consume()。基类TTransport总是调用对应的虚拟函数,而默认传输类按照默认的方式实现而不去自己在覆盖哪些对应的虚拟函数了。  其实这个默认传输类的主要作用是作为虚拟传输类TVi

2013-07-25 22:49:05 2879 1

原创 thrift之TTransport类体系原理及源码详细解析1-类结构和抽象基类

本章主要介绍Thrift的传输层功能的实现,传输的方式多种多样,可以采用压缩、分帧等,而这些功能的实现都是相互独立,和上一章介绍的协议类实现方式比较雷同,还是先看看这部分的类关系图,如下:  由上面的类关系图可以看出,这部分的功能是相当的强大,所以类比较多且关系错综复杂。但是如果理解清楚了这些类直接的关系就很容易掌握这部分的实现技术和这部分实现的功能。我们把这个类关系图分为三部分来看,

2013-07-25 00:03:34 4006

原创 linux内核bug问题排查过程详细报告

Linux Kernel BUG:soft lockup CPU#1 stuck分析1.线上内核bug日志kernel: Deltaway too big! 18428729675200069867 ts=18446743954022816244 write stamp =18014278822746377 kernel:------------[ cut here ]--------

2012-12-16 17:48:30 31517 9

原创 Thrift之TProtocol类体系原理及源码详细解析之其他协议类和总结

我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。第六节 其他协议类主要的协议类基本上已经介绍完毕了,当然如果你有更好的实现和思路也可以实现自己的协议类,只要按照我前面介绍的类层次结构继承就可以了。除了前面几节介绍的协议类,Thrift还实现了一些自己内部使用的协议类,例如TDebugProtocol类,采用开

2012-07-09 23:36:28 2758 1

原创 Thrift之TProtocol类体系原理及源码详细解析之稠密协议类TDenseProtocol

我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。这个协议类不建议投入到实际的生产环境(除非自己做了很强的压力和全面的测试)。这个密集协议的最大作用就是尽可能使用小的空间,密集协议类有两种类型的实例对象,一种是独立的,它不被使用在rpc通信中,而只是用于编码和解码;另一种是非独立的实例类型,它可以用于rpc通信,不过现在还

2012-07-03 21:55:52 2206

原创 Thrift之TProtocol类体系原理及源码详细解析之JSon协议类TJSONProtocol

我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。JSON (JavaScript Object Notation)是一种数据交换格式,是以JavaScript为基础的数据表示语言,是在以下两种数据结构的基础上来定义基本的数据描述格式的:1) 含有名称/值对的集合;2) 一个有序的列表。对于 JSON,其部分数据结

2012-06-13 00:10:23 2586

原创 Thrift之TProtocol类体系原理及源码详细解析之紧凑协议类TCompactProtocolT(TCompactProtocol)

我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。这个协议类采用了zigzag 编码,这种编码是基于Variable-length quantity编码提出来的,因为Variable-length quantity编码对于负数的编码都需要很长的字节数,而zigzag 编码对于绝对值小的数字,无论正负都可以采用较少的

2012-06-11 23:39:13 3254 3

原创 Thrift之TProtocol类体系原理及源码详细解析之二进制协议类TBinaryProtocolT(TBinaryProtocol)

我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。这个协议是Thrift支持的默认二进制协议,它以二进制的格式写所有的数据,基本上直接发送原始数据。因为它直接从TVirtualProtocol类继承,而且是一个模板类。它的模板参数就是一个封装具体传输发送的类,这个类才是真正实现数据传输的。这个类的定义上一节举例已经

2012-06-05 23:02:29 5949 2

原创 Thrift之TProtocol类体系原理及源码详细解析之类继承架构分析

我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。这部分相关的类主要实现与协议相关的内容,这里说的协议是指对数据传输格式封装的协议,实现不同的协议来适合不同场景下的数据传输,因为在不同的场景下不同协议对于数据传输来说效率有很大的差别。下面是这个部分相关类的类关系图:由以上类图可以发现所有的协议类都从

2012-06-04 23:52:07 2913

原创 Thrift之TProcess类体系原理及源码详细解析

我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。之前对Thrift自动生成代码的实现细节做了详细的分析,下面进行处理层的实现做详细分析了!会利用到自动代码生成的知识。这部分是协议层和用户提供的服务实现之间的纽带,定义了调用服务实现的接口框架,真正实现某种服务接口是通过上一章介绍的代码生成工具生成的代码。本章将介绍

2012-06-03 15:27:32 3659

原创 Glusterfs之rpc模块源码分析(下)之RDMA over TCP的协议栈工作过程浅析

我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。声明:本文转至IT168:因为GlusterFS实现了IB网络(RDMA协议,专用硬件网卡支持),当时就在想普通的网卡能不能实现,就找到一篇这样的文章介绍,基于TCP协议来实现。!附件 RDMA over TCP的协议栈工作过程浅析第一节 RDMA概述随

2012-05-14 22:51:55 4288 1

原创 Glusterfs之rpc模块源码分析(中)之Glusterfs的rpc模块实现(3)

我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。第三节、rpc通信过程分析前面两个小节分别对rpc服务端和客户端的建立流程做了详细的分析,也就是说rpc客户端和服务器端已经能够进行正常的通信了(rpc客户端已经通过connect链接上rpc服务器了),那么这一小节主要根据一个实际的例子来分析一个完整的rpc通信过

2012-05-14 22:36:25 3151

原创 Glusterfs之rpc模块源码分析(中)之Glusterfs的rpc模块实现(2)

我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。第二节、rpc客户端实现原理及代码分析rpc客户端主要发起一个rpc请求,执行完rpc请求以后就退出rpc,下面分析客户端rpc请求建立的整个过程。Rpc客户端请求建立的第一步是执行cli_rpc_init函数,主要实现代码如下:        th

2012-05-14 22:33:40 2811

ArcGIS+Engine基础开发教程(C#)

1.创建第一个ArcGIS Engine桌面应用程序 2.学习几何对象与空间参考 3.学习地图和地图布局 4.学习图层符号化 5. 学习地图查询 6.学习空间分析 7. 学习地图输出

2011-11-23

ArcGIS+Engine+C#实例开发教程

读者对象: ArcGIS Engine(以下简称AE)开发初学者, 了解AE基本体系,了解C#基本语法,了解VS2005的基本使用方法。 预期学习效果: 进一步理解AE的体系结构与开发方法,掌握基本的GIS桌面应用程序的开发。 教程目录: 第一讲 桌面GIS应用程序框架的建立 第二讲 菜单的添加及其实现 第三讲 MapControl与PageLayoutControl同步 第四讲 状态栏信息的添加与实现 第五讲 鹰眼的实现 第六讲 右键菜单添加与实现 第七讲 图层符号选择器的实现 第八讲 属性数据表的查询显示 教程Bug及优化方案

2011-11-22

Office2007界面风格库的使用视频教程

Office2007界面风格库的使用视频教程,根据这个视频教程可以开发出和office2007通用效果和风格的界面,非常漂亮!

2011-11-19

Office2007界面风格的DLL库文件

Office2007界面风格的DLL库文件,配合我上传的对应视频教程就能开发出类型office2007的界面风格的程序!

2011-11-19

Office2007界面风格的界面库文件

Office2007界面风格的界面库文件,配合以前上传的视频就可以打造良好的界面,花哨的界面。

2011-11-19

office风格界面库的视频教程

这个是我博客《基于ArcGIS10.0和Oracle10g的空间数据管理平台三(C#开发)》中提到的界面开发库使用的视频教程,非常详细,只要照着视频教程做就可以设计出类似Office2007的界面风格,还有多种界面皮肤和支持多标签页面,是我们优化C#CS编程界面的很好的方案。

2011-11-19

简易数字式电阻、电容和电感测量仪设计报告

由于本人博客上的这篇文章图片总是不出来并且有很多人需要,所以就上传该文档了,记得评价资源的时候打上星星等级就全部退还分数并加1分哈。本文档是电子设计大赛的参赛文档,由于具体的东西很多没有实现,所以在学校只得了一个二等奖。

2010-09-05

嵌入式.ARM.Soc.architecture_c中文版

很好的介绍arm体系结构的书籍,希望大家看后有所收获

2009-08-11

windows网络编程技术

学网络编程必备的入门书籍,保证是一本好书,如果认真看完你就有感触这本书确实不错的

2009-08-11

c嵌入式基础

学习嵌入式的可以看一下

2007-07-29

空空如也

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

TA关注的人

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