自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(192)
  • 资源 (5)
  • 收藏
  • 关注

原创 MinIO 源码分析

文章目录Bucket日志审计概要设计说明书参考1. MinIO 事件通知模块的源码剖析1. 事件通知模块 `NotificationSys`2. `target.Target`3. `target.RedisTarget`4. `target.MySQLTarget`5. `target.KafkaTarget`6. `target.Store`7. 事件类型 `event.Name`8. 事件 `event.Event`9. 事件日志 event.Log2. MinIO 网关源码剖析1. minio 启动

2021-04-15 10:02:37 4461

原创 Chang the PATH

Change the PATHroot@ld-pc:/home/ld# echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/jdk1.8.0_131/binroot@ld-pc:/home/ld# vim /etc/environmentr

2017-08-31 22:58:34 441

原创 su: Authentication failure

ld@ld-pc:~$ suPassword: su: Authentication failureld@ld-pc:~$ sudo passwd root[sudo] password for ld: Enter new UNIX password: Retype new UNIX password: passwd: password updated successfullyld@l

2017-08-31 22:49:21 432

转载 OpenCV第一次尝试

1. opencv在ubuntu上的配置和测试http://blog.csdn.net/a1429331875/article/details/315391292. OpenCV 3.0 程序编译链接错误问题描述 error: main.o: undefined reference to symbol ‘_ZN2cv6imreadERKNS_6StringEi’ /usr/local/Op

2017-04-06 21:18:45 2226

原创 2. MySQL数据类型

选择正确的数据类型对于获得高性能至关重要。选择原则: 1. 更小的通常更好; 2. 简单就好; 3. 尽量避免NULL;1. 整数类型TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT, 分别使用8,16,24,32,64位存储空间。可以存储的值的范围从-2(N-1)到2(N-1)-1,其中N是存储空间的位数。 整数类型有可选的UNSIGNED属性,表示不允许

2016-12-29 11:52:50 450

原创 1. MySQL架构

1. MySQL逻辑架构 MySQL服务器逻辑架构图: 1. 最上层,大多数基于网络的客户端/服务器的工具或服务都有类似架构,比如连接处理、授权认证、安全等。 2. 第二层,大多数MySQL的核心服务功能都在这一层,包括查询解析、分析、优化、缓存以及所有的内置函数,所有跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等。 3. 第三层,存储引擎负责MySQL中数据的存储和提取。服务器通

2016-12-29 10:31:41 405

原创 graphviz-绘图神器

1. graphviz 介绍维基百科 https://zh.wikipedia.org/wiki/Graphviz Graphviz (英文:Graph Visualization Software的缩写)是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形。它也提供了供其它软件使用的库。Graphviz是一个自由软件,其授权为Eclipse Public License。

2016-12-21 15:27:30 846

原创 代理模式(Proxy Pattern)

1. 代理模式定义意图 代理模式:为其他对象提供一种代理以控制对这个对象的访问。 类图: 适用性 在需要用比较通用和复杂的对象指针代替简单的指针的时候,使用Proxy模式。下面是一 些可以使用Proxy模式常见情况: 远程代理(Remote Proxy)为一个对象在不同的地址空间提供局部代表。 虚代理(Virtual Proxy)根据需要创建开销很大的对象。 保护代理(Protecti

2016-11-28 16:18:49 385

原创 状态模式(State Pattern)

意图 状态模式: 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 适用性 一个对象的行为取决于它的状态, 并且它必须在运行时刻根据状态改变它的行为。 一个操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态。这个状态通常用一个或多个枚举常量表示。通常, 有多个操作包含这一相同的条件结构。State模式将每一个条件分支放入一个独立的类中。这使得你可以根据对象

2016-11-28 15:44:39 315

原创 迭代器模式(Iterator Pattern)

1. 迭代器模式定义提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。适用性: 访问一个聚合对象的内容而无需暴露它的内部表示。 支持对聚合对象的多种遍历。 为遍历不同的聚合结构提供一个统一的接口(即, 支持多态迭代)。类图:2. 实例//测试public class IteratorPatternTest { public static void main(

2016-11-28 14:24:08 357

原创 设计模式六大原则及综述

1. 设计模式博客设计模式C++实现 http://blog.csdn.net/wuzhekai1985/article/category/859763Java开发中的23种设计模式详解 http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html2. 设计模式的六大原则1、开闭原则(Open Close Principle

2016-11-28 11:34:04 314

原创 模板方法模式(Template Method Pattern)

1. 模板方法模式定义模板方法模式: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。类图:适用性:一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。 这是Opdyke和Johnson所描述过的“重分解以一般化”

2016-11-25 16:26:40 241

原创 外观模式(Pacade Pattern)

1. 外观模式定义外观模式:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。类图: 2. 实例//测试public class FacadePatternTest { public static void main(String[] args){ Computer computer=new Computer

2016-11-25 15:44:25 406

原创 适配器模式(Adapter Pattern)

1. 适配器模式定义适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。类图:2. 三类适配器模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。总结一下三种适配器模式的应用场景:类的适配器模式:当希望将一个类转换成满足另一个新接口的类时,可以使用类的适配器模式,创建一个新类,继承原有的类,实现新的接口即可。对象的适配器模式

2016-11-24 11:31:00 272

原创 命令模式(Command Pattern)

1. 命令模式定义命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。命令模式的目的,就是达到命令的发出者和执行者之间解耦,实现请求和执行分开。 熟悉Struts的同学应该知道,Struts其实就是一种将请求和呈现分离的技术,其中必然涉及命令模式的思想!类图(class diagram):2. 实例//测试public c

2016-11-21 16:52:58 339

原创 策略模式(Strategy Pattern)

1. 策略模式定义策略模式:定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(可有可无,属于辅助类),提供辅助函数。策略模式的决定权在用户,系统本身提供不同算法的实现,新增或者删除算法,对各种算法做封装。因此,策略模式多用在算法决策系统中,外部用户只需要决定用哪个算法

2016-11-21 16:25:52 256

原创 抽象工厂模式(Abstract Factory Pattern)

1. 抽象工厂模式定义提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。工厂方法模式有一个问题就是,类的创建依赖工厂类。 也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则。 所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式:创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。好处就是,如果你现在想增加一个

2016-11-21 15:51:08 283

原创 工厂方法模式(Factory Method Pattern)

1. 工厂方法模式工厂模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。总体来说,工厂模式适合:凡是出现了大量的产品需要创建,并且具有共同的接口时,可以通过工厂方法模式进行创建。 在以下的三种模式中:第一种如果传入的字符串有误,不能正确创建对象,第三种相对于第二种,不需要实例化工厂类。所以,大多数情况下,我们会选用第三种—

2016-11-18 11:22:34 272

原创 观察者模式(Observer)

1. 定义观察者模式很好理解,类似于邮件订阅和RSS订阅,当我们浏览一些博客或wiki时,经常会看到RSS图标,就这的意思是,当你订阅了该文章,如果后续有更新,会及时通知你。其实,简单来讲就一句话:当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化!对象之间是一对多的关系。2. the class diagram3. 实例import java.util.*;public class

2016-11-17 15:11:35 321

原创 装饰模式(Decorator)

The Decorator Pattern :attaches additional responsibilities to an object dynamically.Decorators provide a flexible alternative to subclassing for extending functionality.装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求

2016-11-17 14:38:34 282

原创 第一行代码-第7章 内容提供器

1. 内容提供器简介内容提供器(Content Provider):主要用于不同的应用程序之间实现数据共享的功能。 它提供了一套完整的机制,允许一个程序访问另一个程序的数据,同时还能保证被访数据的安全性。 目前,使用内容提供器是android实现跨程序共享数据的标准方式。内容提供器有两种用法:使用现有的内容提供器来读取和操作应用程序的数据;创建自己的内容提供器给我们程序的数据提供外部访问接口

2016-11-16 14:00:08 506

原创 第一行代码-第5章 广播机制

1. 广播机制简介android中每个应用程序都可以对自己感兴趣的广播进行注册,这样程序只接受自己所关心的广播内容。 广播内容来自:①来自系统的;②来自其他应用程序的。 android提供一套完整的API,允许应用程序自由的发送和接收广播。 发送广播的方法:借助Intent; 接收广播的方法:使用广播接收器(Broadcast Receiver)。广播类型:标准广播(Normal broa

2016-11-15 14:52:04 370

原创 第一行代码-第6章 数据存储方案,持久化技术

1. 文件存储文件存储是android中最基本的一种数据存储方式。package com.example.liu.filepersistencetest;import android.content.Context;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.wi

2016-11-14 16:34:27 356

原创 第一行代码-andriod简介

1. andriod系统架构android大致分为四层架构,五块区域:Linux内核层:android系统是基于Linux2.6内核,为android设备的各种硬件提供底层的驱动。如显示驱动,音频驱动,照相机驱动,蓝牙驱动,wifi驱动,电源管理等。系统运行库层:通过C/C++库来为android系统提供主要的特性支持。如SQLite库提供了数据库的支持,OpenGL|ES库提供了3D绘图的支持

2016-11-14 14:54:56 539

原创 Git 版本控制工具

1. Git安装1.1 windows下安装Git下载git安装包:https://git-scm.com/downloads1.2 linux下安装Gitsudo apt-get install git-core2. 配置身份Windows系统,使用Git Bash 配置git config --global user.name "yvhqbat"git config --global user

2016-11-14 14:37:37 275

原创 代码整洁之道-边界

外来代码:购买的第三方程序包;开源代码;公司其他团队打造组件或子系统。不管哪种情况,我们都得将外来代码干净利落地整合进自己的代码中。即保持软件边界整洁的实践手段和技巧。8.1 使用第三方代码接口提供者和使用者之间的关系:第三方程序包和框架提供者追求普适性;使用者则想要集中满足特定需求的接口。

2016-11-13 16:55:45 381

原创 代码整洁之道-第7章 错误处理

错误处理只不过是编程时必须要做的事之一。输入可能出现异常,设备可能失效。简言之,可能会出现错误,当错误发生时,程序员就有责任确保代码照常工作。编写既整洁又强固的代码—雅致的处理错误代码的技巧和思路。1. 使用异常而非返回码以前,没有异常处理机制时:(这类手段的问题在于,他们搞乱了调用者代码。调用者必须在调用之后即刻检查错误,不幸的是,这个步骤很容易被遗忘。)设置一个错误标识;返回给调用者检查的错

2016-11-13 12:34:00 1061

转载 JDBC

参考: http://www.cnblogs.com/wuyuegb2312/p/3872607.html1. 什么是JDBCJava 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。 JDBC也是Sun Microsystems的商标。它JDBC是面向关系

2016-11-08 11:13:58 309

转载 网络通信

本文来自:曹胜欢博客专栏。 转载请注明出处:http://blog.csdn.NET/csh624366188 详见:http://blog.csdn.net/csh624366188/article/details/73317161. 一个基础的网络类——InetAddress类该类的功能是代表一个IP地址,并且将IP地址和域名相关的操作方法包含在该类的内部。 关于该类的使用,下面通过一个基

2016-11-03 14:08:20 240

原创 继承

1. 继承Java与C++定义继承类的方式十分相似。Java用关键字extends代替了C++中的冒号(:)。在Java中,所有的继承都是公有继承,而没有C++中的私有继承和保护继承。class Manager extends Employee{ //添加方法和域}在Java中使用超类和子类来表示基类和派生类。2. super关键字在Java中使用关键字super调用超类的方法,而在C++中

2016-10-20 22:05:42 354

原创

包(package):可以方便的组织自己的代码,并将自己的代码与别人提供的代码库分开管理。 使用包的主要原因是确保类名的唯一性。标准的Java类库分布在多个包中,包括java.lang, java.util和java.net等。标准的java包具有一个层次结构,所有标准的Java包都处于java和javax包层次中。 嵌套的包之间没有任何关系,例如,java.util和java.util.jar

2016-10-20 20:45:13 240

原创 对象与类

1. 类类构造对象的过程称为创建类的实例。 封装:将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式。 实例域:对象中的数据。 方法(method):操纵数据的过程。 状态(state):实例域值的集合。 继承:扩展一个类来建立另外一个类的过程。2. 对象对象的三个主要特性: 1. 行为(behavior):可以对对象施加哪些方法。 2. 状态(state):当施加那些方

2016-10-19 22:06:10 431

原创 String 类,输入输出

在Java中将字符串作为对象来处理,通过java.lang包中的String类来创建字符串对象。1. String APIjava.lang.string 1.0char charAt(int index);int indexOf(String str);int lastIndexOf(String str);boolean equals(Object other);boolean equ

2016-10-19 17:23:14 610

原创 Java基础

1. JDKJava Development Kit(JDK)是针对Java开发人员发布的免费软件开发工具包(SDK,Software development kit)。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。作为Java语言的SDK,普通用户并不需要安装JDK来运行Java程序,而只需要安装JRE(Java Runtime Environment)。而程序开发者必须安装J

2016-10-18 15:18:15 258

原创 类图

类图描述各个类、它们的结构以及它们之间的静态关系。1. 类一个类表示为一个线框; 在顶部以粗体写着类名; 其下是主要的操作; 再下是实例变量; 类型信息是可选的,我们使用 C + +的书写习惯,将类型名置于操作名(强调返回类型)、变量名或参数之前; 斜体表示该类或操作是抽象的。2. 类间的几种关系类继承,表示为一个从子类(图中的Line Shape)到父类(图中的 Shape)的三角形连线; 部

2016-10-02 18:56:09 375

原创 单例模式

1. 单例模式意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点。动机 对一些类来说,只有一个实例是很重要的。虽然系统中可以有许多打印机,但却只应该有一个打印假脱机( printer spooler),只应该有一个文件系统和一个窗口管理器。单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处

2016-10-02 18:28:10 194

原创 MVC模型

透过 MVC 来看设计模式将帮助我们理解“模式”这一术语的含义。类的模型/视图/控制器( Model / View / Controller)三元组( MVC )被用来构建用户界面。MVC包括三类对象:模型 Model 是应用对象;视图 View 是它在屏幕上的表示;控制器 Controller 定义用户界面对用户输入的响应方式。不使用 MVC,用户界面设计往往将这些对象混在一起,而MVC则

2016-10-02 18:02:55 616

原创 Linux高性能服务器编程:服务器程序框架

参考:《Linux高性能服务器编程》服务器程序框架服务器通常需要处理三类事件: 1. I/O事件 2. 信号事件 3. 定时事件同步I/O模型通常用于实现Reactor模式 异步I/O模型则用于实现Proactor模式1. 两种高效的事件处理模式同步I/O模型通常用于实现Reactor模式 异步I/O模型则用于实现Proactor模式1.1 Reactor模式1.2 Proactor模式P

2016-08-01 10:59:46 2436 1

原创 Qt之OpenGL

参考:《C++ GUI Programming With Qt 4, Second Edition》1. 头文件#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QGLWidget>#include <QPoint>#include <QMouseEvent>class Tetrahedron:public QGLWidge

2016-08-01 10:55:18 455

转载 信号和槽机制

转自(稍作修改):http://devbean.blog.51cto.com/448512/193918信号/槽机制信号槽机制是Qt编程的基础。通过信号槽,能够使Qt各组件在不知道对方的情形下能够相互通讯。这就将类之间的关系做了最大程度的解耦。 槽函数和普通的C++成员函数没有很大的区别。如果要说区别,那就是,槽函数可以和一个信号相连接,当这个信号发生时,它可以被自动调用。connect语句con

2016-07-28 10:29:47 382

Visual_Assist_X

该助手适用于VS2013和VS2012等最新vs编译器,方便使用,破解版。

2016-01-15

Head First Design Patterns

《Head First设计模式》(中文版)共有14章,每章都介绍了几个设计模式,完整地涵盖了四人组版本全部23个设计模式。前言先介绍这本书的用法;第1章到第11章陆续介绍的设计模式为Strategy、Observer、Decorator、Abstract Factory、Factory Method、Singleton,Command、Adapter、Facade、TemplateMethod、Iterator、Composite、State、Proxy。最后三章比较特别。第12章介绍如何将两个以上的设计模式结合起来成为新的设计模式(例如著名的MVC模式),作者称其为复合设计模式(这是作者自创的名称,并非四人组的标准名词),第13章介绍如何进一步学习设计模式,如何发觉新的设计模式等主题,至于第14章则很快地浏览尚未介绍的设计模式,包括Bridge、Builder、Chain of Responsibility、Flyweight、Interpreter、Mediator、Memento、Prototype,Visitor。第1章还介绍了四个○○基本概念(抽象、封装、继承、多态),而第1章到第9章也陆续介绍了九个○○原则(Principle)。千万不要轻视这些○○原则,因为每个设计模式背后都包含了几个○○原则的概念。很多时候,在设计时有两难的情况,这时候我们必须回归到○○原则,以方便判断取舍。可以这么说:○○原则是我们的目标,而设计模式是我们的做法。

2015-11-13

深度探索C++对象模型

这本书探索“对象导向程序所支持的C++对象模型”下的程序行为。对于“对象导向性质之基础实现技术”以及“各种性质背后的隐含利益交换”提供一个清楚的认识。检验由程序变形所带来的效率冲击。提供丰富的程序范例、图片,以及对象导向观念和底层对象模型之间的效率测量。

2015-11-13

STL源码剖析

这本书所呈现的源码,使读者看到vector的实现、list的实现、heap的实现、deque的实现、Red Black tree的实现、hash table的实现、set/map的实现;看到各种算法(排序、查找、排列组合、数据移动与复制技术)的实现;甚至还能够看到底层的memory pool和高阶抽象的traits机制的实现。

2015-09-23

空空如也

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

TA关注的人

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