自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 两种语言实现设计模式(C++和Java)(十九:访问者模式)

在现实生活中,有些集合对象中存在多种不同的元素,且每种元素也存在多种不同的访问者和处理方式。例如,公园中存在多个景点,也存在多个游客,不同的游客对同一个景点的评价可能不同;医院医生开的处方单中包含多种药元素,査看它的划价员和药房工作人员对它的处理方式也不同,划价员根据处方单上面的药品名和数量进行划价,药房工作人员根据处方单的内容进行抓药。UML:Visitor Patt...

2019-08-21 22:17:00 122

转载 两种语言实现设计模式(C++和Java)(十八:中介者模式)

中介者(Mediator)模式的定义:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。中介者模式是一种对象行为型模式,其主要优点如下。降低了对象之间的耦合性,使得对象易于独立地被复用。将对象间的一对多关联转变为一对一的关联,提高系统的灵活性,使得系统易于维护和扩展。...

2019-08-14 21:55:00 141

转载 两种语言实现设计模式(C++和Java)(十七:观察者模式)

观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。观察者模式是一种对象行为型模式,其主要优点如下。降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。目标与观察者之间建立了一套触发机制。它的主要缺点...

2019-08-12 20:35:00 321

转载 两种语言实现设计模式(C++和Java)(十六:状态模式)

状态模式对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。状态模式是一种对象行为型模式,其主要优点如下。状态模式将与特定状态相关的行为局部化到一个状态中,并且将不同状态的行为分割开来,满足“单一职责原则”。减少对象间的相互依赖。将不同的状态引入独立的对象中会使得状态转换变得更加明确,且减少对象间的相互依赖。有利于...

2019-08-10 19:49:00 98

转载 Python对象与xml文件的转换和输出

需求:Python编程中,常常需要将object进行xml文件的输出,当需要实现object包含列表和数组的情况下时,下面提供方法:1.通过dict将object输出为xml:用内置方法__dict__可以将对象转换为字典,对于对象中包含对象的情况,可以使用递归实现同样转换为字典2.转换为dict后,用dicttoxml库实现将dict转换为xml格式string...

2019-08-06 20:52:00 386

转载 两种语言实现设计模式(C++和Java)(十五:解释器模式)

在软件开发中,会遇到有些问题多次重复出现,而且有一定的相似性和规律性。如果将它们归纳成一种简单的语言,那么这些问题实例将是该语言的一些句子,这样就可以用“编译原理”中的解释器模式来实现了。解释器(Interpreter)模式的定义:给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。也就是说,用编译语言的方式来分析应用中的实例。这种模式实现了文法表达式...

2019-08-04 20:25:00 109

转载 两种语言实现设计模式(C++和Java)(十四:责任链模式)

责任链模式实现为请求创建了一个接收者对象的链。当请求的直接执行者无法实现请求时,会将请求传递给链的上一级进行处理。这种传递往往可以通过让接收者包含另一个接收者的引用的方式实现。责任链模式是一种对象行为型模式,其主要优点如下。降低了对象之间的耦合度。该模式使得一个对象无须知道到底是哪一个对象处理其请求以及链的结构,发送者和接收者也无须拥有对方的明确信息。增...

2019-07-31 21:27:00 91

转载 两种语言实现设计模式(C++和Java)(十三:命令模式)

命令模式将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。实际上,命令模式就是实现请求和执行者之间的解耦。图中Invoker实现接受和管理各种命令,然后统一向Receiver发起请求,所有类型的请求封装在Command中。例如在餐厅点菜,只需要和Waiter说,而不用和做菜的人说。...

2019-07-29 21:47:00 88

转载 两种语言实现设计模式(C++和Java)(十二:组合模式)

组合模式,将对象组合成属性结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。其UML图如下: 主要解决:它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。如何解决:树枝和树叶实现统一接口,树枝内部组合该接口。关键代码:树枝内部组合该接口,并且含有内...

2019-07-14 22:33:00 142

转载 两种语言实现设计模式(C++和Java)(十一:享元模式)

享元模式指通过共享的技术来支持大量细粒度对象的复用,它通过共享已经存在的又橡来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。例如围棋和五子棋中的黑白棋子,图像中的坐标点或颜色,局域网中的路由器、交换机和集线器,教室里的桌子和凳子等。这些对象有很多相似的地方,如果能把它们相同的部分提取出来共享,则能节省大量的系统资源,这就是享元模式的产生背景。如何解决:...

2019-07-12 23:40:00 104

转载 两种语言实现设计模式(C++和Java)(十:外观模式)

外观模式:为子系统中的一组接口定义一个一致的界面,外观模式提供了一个高层接口,这个接口使得这一子系统更加容易被使用;对于复杂的系统,系统为客户提供一个简单的接口,把复杂的实现过程封装起来,客户不需要了解系统内部的细节。 主要解决:客户不需要了解系统内部复杂的细节,只需要一个接口;系统入口。 如何解决:客户不直接与系统耦合,而是通过外观类与系统耦合。 关键代码:客...

2019-07-09 20:26:00 113

转载 两种语言实现设计模式(C++和Java)(九:桥接模式)

当设计的class具有多个维度的属性,用单继承的方式进行设计会造成设计出的子类很多,分类困难。桥接模式将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。桥接模式的的特点:1.扩展能力强,实现和继承分离。2.其实现细节对客户透明。考虑装操作系统,有多种配置的计算机,同样也有多款操作系统。如何运用桥接模式呢...

2019-06-27 12:24:00 94

转载 两种语言实现设计模式(C++和Java)(八:建造者模式)

参考:http://c.biancheng.net/view/1354.html建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。建造者模式主要包括...

2019-05-14 20:43:00 155

转载 两种语言实现设计模式(C++和Java)(七:原型模式)

参考:https://www.cnblogs.com/carsonzhu/p/5774616.html尽管和工厂模式相类似是创建型设计模式的一种,原型模式本身与工程设计模式本身并没有什么关系,该模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。原型模式的应用场景:1.当我们的对象类型不是开始就能确定的,而这个类型是在运行期确定的话,那么我们通...

2019-05-07 20:51:00 106

转载 [转] Linux SVN命令大全

转载自:https://www.cnblogs.com/jaspersong/p/9277720.html本文全部来自转载1、svn checkout pathpath 是服务器上的目录。svn checkout path例如:svn checkout svn://192.168.1.1/pro/domain简写:svn co1.1 svn checkout...

2019-05-06 17:38:00 69

转载 两种语言实现设计模式(C++和Java)(六:装饰者模式)

装饰者模式的作用在于动态地为某一个类添加额外的功能,通过使用不同的具体装饰类以及这些装饰类的排列组合,可以创造出很多不同行为的组合。适用场景:1.需要扩展一个类的功能,或给一个类添加附加职责。2.需要动态的给一个对象添加功能,这些功能可以再动态的撤销。3.需要增加由一些基本功能的排列组合而产生的非常大量的功能。4.当不能采用生成子类的方法进行扩充时。一种情况是,可...

2019-05-05 20:34:00 74

转载 两种语言实现设计模式(C++和Java)(五:代理模式)

参考:https://blog.csdn.net/lh844386434/article/details/18045671代理模式指为其他对象提供一种代理以控制对这个对象的访问。这样实现了业务和核心功能分离。Subject: 抽象角色。声明真实对象和代理对象的共同接口。Proxy: 代理角色。代理对象与真实对象实现相同的接口,所以它能够在任何时刻都能够代理真实对象。代理角色内...

2019-04-30 19:37:00 68

转载 两种语言实现设计模式(C++和Java)(四:适配器模式)

参考:http://blog.jobbole.com/109381/将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。系统的数据和行为都正确,但接口不符时,我们应该考虑使用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。...

2019-04-26 17:08:00 159

转载 两种语言实现设计模式(C++和Java)(三:策略模式)

策略模式是指定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。也就是说这些算法所完成的功能一样,对外的接口一样,只是各自实现上存在差异。用策略模式来封装算法,效果比较好。本文以自己实际项目中策略模式的实际应用为例:实现无人驾驶车辆的定位有两种方式:GNSS(带差分信号的GPS)和SLAM,实现两种方法的定位可以视为采用两种不同的策...

2019-04-24 20:40:00 111

转载 两种语言实现设计模式(C++和Java)(二:单例模式)

本篇介绍单例模式,可以说是使用场景最频繁的设计模式了。可以根据实例的生成时间,分为饿汉模式和懒汉模式饿汉模式:饿了肯定要饥不择食。所以在单例类定义的时候就进行实例化。懒汉模式:故名思义,不到万不得已就不会去实例化类,也就是说在第一次用到类实例的时候才会去实例化一.饿汉模式1.c++线程安全,不会内存泄漏的写法: 1 class Singleton 2...

2019-04-22 20:44:00 91

转载 两种语言实现设计模式(C++和Java)(一:工厂模式)

本篇开始记录实现设计模式在工作中的两种常见语言上的实现。本篇介绍最简单的工厂模式。工厂模式有一种非常形象的描述,建立对象的类就如一个工厂,而需要被建立的对象就是一个个产品;在工厂中加工产品,使用产品的人,不用在乎产品是如何生产出来的。从软件开发的角度来说,这样就有效的降低了模块之间的耦合。使用情景:在不确定会有多少个处理操作时应该考虑使用简单工厂模式,如针对同样的接...

2019-04-19 19:42:00 145

转载 [转] CMake

转载地址:https://www.cnblogs.com/lidabo/p/7359422.htmlcmake 简介 CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。CMake 使用方法...

2019-04-19 19:14:00 54

转载 Springboot中的事件Event

事件Event作为一种常用的线程通讯工具,在Springboot中可以方便地提供开发者进行线程交互。1.事件定义 1 import org.springframework.context.ApplicationEvent; 2 3 /** 4 * WebSocket触发事件定义 5 * @author : Asp1rant 6 * @date ...

2019-04-08 20:21:00 160

转载 [转] Springboot的数据库操作

转载自:https://www.cnblogs.com/juncaoit/p/7789034.htmlspringBoot的数据库操作一:操作数据库起步1.Spring-Data-Jpa  JPA定义了对象持久化的标准。  目前实现了有Hibernate,TopLink2.pom添加依赖1 <dependency>2 <gr...

2019-03-30 12:28:00 50

转载 ROS使用FLIR品牌的相机

本文介绍如何将FLIR品牌的相机应用于ROS系统,将相机实时的数据以rostopic实时广播:系统平台:Ubuntu16.04 LTS ROS Kinetic依赖:OpenCV(本例中所用版本为2.9), cv_bridge硬件:FLIR Grasshopper GS3-PGE-23S6C-C1.首先安装相机在Ubuntu16.04下的驱动:本例直接安装于买...

2019-03-21 20:35:00 905

转载 IceGrid 用于Python服务器和客户端通信——参数传递

本篇介绍如何用IceGrid建立python多机通信,传递比较复杂的参数Ice代码:Demo.ice#ifndef TOS_ICE_COMMON#define TOS_ICE_COMMONmodule demo{ class EventArgs { string source; string occurT...

2019-03-14 21:28:00 160

转载 Ubuntu16.04下ZeroC ICE的安装与使用示例(Qt C++ 和 Java)

项目需求:在Ubuntu16.04系统下安装并使用ICEgrid 3.7进行c++和Java Springboot开发环境的通信,下面逐一介绍各个步骤的详解:一:Ice Lib的安装参考官网地址:https://doc.zeroc.com/ice/latest/release-notes/using-the-linux-binary-distributions#id-.Using...

2019-02-19 17:19:00 343

转载 Ubuntu16.04 用Nomachine进行远程控制的配置

本文介绍如何在Ubuntu16.04环境下运用Nomachine进行远程控制。一. NoMachine介绍NoMachine是一款基于NX技术进行远程控制的软件,最大的优势是跨平台,简单,可以实现Linux对Windows,Windows对Linux的远程控制,一键安装,简单流畅。Windows下的安装可以参考:https://blog.csdn.net/chenjambo/...

2019-01-23 19:40:00 1408

转载 Java连接数据库的driver和url写法

oracle driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@localhost:1521:数据库名"sqlserver driver="com.microsoft.jdbc.sqlserver.SQLServerDriver" url="jdbc:microsoft:sqlser...

2019-01-21 10:27:00 92

转载 Ubuntu16.04 安装 MySQL

本篇介绍如何在Ubuntu系统上安装MySQL数据库,以及介绍数据库的基本命令。一.下载和安装MySQL可以通过apt-get下载并安装sudo apt-get install mysql-serverapt-get isntall mysql-clientsudo apt-get install libmysqlclient-dev安装过程中会通知建立用...

2019-01-08 17:04:00 67

转载 ubuntu16.04 配置双网卡机器

本文介绍一台具有双有线网卡的机器在Linux下如何配置双网卡系统平台:Ubuntu16.041:查看机器网卡信息,是否双网卡都能正确被机器pci识别可以通过以下命令查看设备网卡,若果看到两条网卡信息,则说明带有两个网卡(笔记本正常具有两个信息,其中一个是有线网卡,一个是无线网卡)1 lspci | grep net2:通过ifconfig -a,获取网络名...

2018-11-20 13:40:00 538

转载 [转] C++ 和 python之间的互相调用

转载自:https://www.cnblogs.com/apexchu/p/5015961.html一、Python调用C/C++1、Python调用C动态链接库 Python调用C库比较简单,不经过任何封装打包成so,再使用python的ctypes调用即可。(1)C语言文件:pycall.c1 /***gcc -o libpycall.so -...

2018-10-31 16:45:00 84

转载 Ros Kinetic 配置 OpenCV2和CV_bridge (Python, C++)

本篇介绍如何在Ros-kinetic环境下运用opencv2进行开发的配置,系统平台为64位Ubuntu16.04。需要系统环境:1.Ros kinetic版本,一般自带cv_bridge, 若没有可以通过apt下载sudo apt-get install ros-kinetic-cv-bridge2.OpenCV 2.4.9版本,一般来说cv_bridge依赖的...

2018-10-24 10:55:00 455

转载 Ubuntu 远程使用ssh 开启服务器终端的方法

首先,加载服务器环境变量$DISPLAY,需要先从服务器获取值echo $DISPLAY假如返回值为1001,本地通过sshpass启动终端,假设服务器用户名server,密码passwd, ip192.168.1.1, shell脚本如下:(目前仅测试通过运用xterm开启终端,如何通过gnome-terminal暂未成功)#!/bin/bashso...

2018-10-23 17:22:00 214

转载 [转] Ubuntu16.04完美安装Sublime text3

转载自:https://www.cnblogs.com/hupeng1234/p/6957623.html1.安装方法1)使用ppa安装sudo add-apt-repository ppa:webupd8team/sublime-text-3sudo apt-get updatesudo apt-get install sublime-text-install...

2018-10-22 13:43:00 90

转载 [转] ROS2源码编译和安装

机器人开源操作系统软件ROS在10年后, 终于推出全新架构的ROS2,代号“ardent”。中文意思为“热心的美洲鳖”,看来ROS2要从ROS1的“海龟”变成“土鳖”系列了。与此同时,ROS2的编译系统也换成全新的ament。之前熟悉ROS的知道,ROS最初使用rosbuild,后来换成catkin,换成catkin可以理解,比较比起rosbuild在很多方面要先进很多的,比如支持外部构...

2018-10-16 16:00:00 644

转载 本地sh脚本创建以及利用ssh server远程运行sh脚本

想要同时运行多个非本地的sh脚本,用来实现运行同一网段下多机程序的集成,可以通过在每台机器上写sh脚本,再在本机上运行一个启动远程机器sh的脚本首先需要在所有机器上安装openssh-serversudo apt-get install openssh-server为了省去安装密钥的环节,需要在本机安装sshpasssudo apt-get install s...

2018-10-12 12:30:00 278

空空如也

空空如也

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

TA关注的人

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