自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

KnightOnHorse的博客

追求技术的道路永无止境

  • 博客(269)
  • 收藏
  • 关注

原创 操作系统PageIn、PageOut所用到的LRU策略(原理+实现)

一、什么是LRU缓存策略 LRU(Least Recently Used)近期最少使用算法。它的原理就是,缓存一定量的数据,当缓存数量超过设置的阈值时就删除一部分旧的数据。 那么我们怎样判定旧数据呢???根据局部性原理,距离当前最久没有被访问过的数据应该被淘汰。二、LRU缓存策略实现原理 1、使用双向链表记录数据的被使用的时间 因为我们要删除最久没有被访问的数据,为了...

2018-04-27 12:14:56 1755

原创 STL.set并集,交集,差集和对称差集

STL一共提供了四种set相关的算法,分别是并集(union),交集(intersection),差集(difference),和对称差集(symmetric difference)。 STL的这四个算法所接受的set必须是有序区间,元素可以重复出现。即他们只能接受set/multiset容器作为输入区间。 1、set_unoin(求并集) 算法set_union可构造两个S1,S2这两个...

2018-04-27 12:03:48 2402

原创 生产者消费者问题(Producer:1、Consumer:2、Buffer:4)

现在将消费者改成2个,缓冲池改成拥有4个缓冲区的大缓冲池。    如何来思考了这个问题了?首先根据上面分析的二点,可以知道生产者和消费者由一个变成多个的影响不大,唯一要注意的是缓冲池变大了,回顾一下之前提到的信号量,不难得出用二个信号量就可以解决这种缓冲池有多个缓冲区的情况——用一个信号量A来记录为空的缓冲区个数,另一个信号量B记录非空的缓冲区个数,然后生产者等待信号量A,消费者等待信号量B就可以...

2018-04-25 12:48:21 791

原创 生产者消费者问题(Producer:1、Consumer:1、Buffer:1)

生产者消费者问题是一个著名的线程同步问题,该问题描述如下:有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者能并发执行,在两者之间设置一个具有多个缓冲区的缓冲池,生产者将它生产的产品放入一个缓冲区中,消费者可以从缓冲区中取走产品进行消费,显然生产者和消费者之间必须保持同步,即不允许消费者到一个空的缓冲区中取产品,也不允许生产者向一个已经放入产品的缓冲区中再次投放产品。...

2018-04-25 12:42:23 547

原创 Behavior.State状态模式:不同状态平行不可替换,有规律地相互切换

状态模式(State Pattern)的定义(1)定义:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。  ①状态和行为,它们的关系可以描述为“状态决定行为”  ②因状态是在运行期被改变,行为也会在运行期根据状态的改变而改变。看起来,同一个对象,在不同的运行时刻,行为是不一样的,就像是类被修改了一样。(2)状态模式的结构和说明   ①Context:环境,也称上下文,通常用...

2018-04-20 12:53:24 351

原创 职责链模式的应用之模拟JavaWeb的双向过滤器(混合了组合模式)

思考职责链模式  ①职责链的本质:分离职责,动态组合。分离职责是前提,动态组合才是职责链模式的精华所在,因为这意味着可以很方便地修改和添加新的处理对象,从而让系统更加灵活和具有更好的扩展性。  ②职责链的动机:在软件构建过程中,一个请求可能被多个对象处理,但是每个请求在运行时需要有接受者,如果显式指定,将必不可少地带来请求发送者与接受者之间的紧耦合。而职责链模式可以将这两者解耦,使得发送者不必知道...

2018-04-19 13:00:51 259

原创 使用内存新主张CopyOnWrite(写时拷贝)

一、什么是写时拷贝技术?写时拷贝技术可以理解为“写的时候才去分配空间”,这实际上是一种拖延战术。举个栗子:二、写时拷贝技术原理:  写时拷贝技术是通过"引用计数"实现的,在分配空间的时候多分配4个字节,用来记录有多少个指针指向块空间,当有新的指针指向这块空间时,引用计数加一,当要释放这块空间时,引用计数减一(假装释放),直到引用计数减为0时才真的释放掉这块空间。当有的指针要改变这块空间的值时,再为...

2018-04-19 12:48:45 325

原创 享元模式的应用之权限管理系统(混合了组合模式)

使用场景(1)系统中存在大量的相似对象(2)细粒度的对象都具有较接近的外部状态,而且内部状态与环境无关,也就是说对明没有特定的身份。(3)需要缓冲池的场景(4)如果不考虑对象的外部状态,可以用相对较少的共享对象取代很多组合对象,可以使用享元模式来共享对象,然后组合对象来使用这些共享对象。【编程实验】权限管理系统//声明文件//***********************************...

2018-04-19 12:27:39 717

原创 Google Protocol Buffer的配置和使用(Linux&&Windows)

最近自己的服务器做到序列化这一步了,在网上看了下,序列化的工具有boost 和google的protocol buffer,protocol buffer的效率和使用程度更高效一些,就自己琢磨下把他加到自己的服务器里。所以这里我先弄一个小的demo去测试如何使用和配置protocol buffer首先是windows 平台windows下protocol buffer 配置:1...

2018-09-12 11:12:47 385

原创 Bidirectional Connections

Use Cases for Bidirectional ConnectionsAn Ice connection normally allows requests to flow in only one direction. If an application's design requires the server to make callbacks to a client, the ser...

2018-08-19 15:19:41 451

原创 客户端SQLyog的安装

MySQL数据库客户端SQLyog的安装和注册:注册文件内容如下:SQLyog-11.2.7-0.x86.regWindows Registry Editor Version 5.00[HKEY_CURRENT_USER\Software\{906D6D9F-AB51-429F-8816-8D33284204FF}]"InE"=hex:c6,c6,c4,cc,c6,62,66,ca,5a,c...

2018-07-14 14:19:22 515

原创 数据库MySQL的安装

1、下载MySQL5.5.34_x86-32绿色版2、将MySQL解压到D盘,拷贝D:\MySQL\my.ini到c:\windows下3、安装服务:mysqld –install MySQL –define-file=D:\MySQL\my.ini,以管理身份运行以免权限不足4、启动服务:net start MySQL,显示成功后可见服务中该MySQL服务的状态为已启动5、进入数据库:mysql...

2018-07-14 14:18:58 205

原创 std::string类型的值不正确的初始化导致异常

std::string sTst(0);定义的时候因为不正确的初始化导致程序异常!原因:构造函数std::string::string(char* lpszBuff)中可能进行了字符串拷贝操作,因为构造的时候传入了0【NULL】导致程序停止运行!!...

2018-07-05 22:11:32 1308

原创 无法解析的外部符号

问题分析:这个错误说明:编译阶段是通过的,但是链接阶段没通过!即:函数声明是有的,但是该函数没有实现!可是lib&dll,甚至cpp文件都有啊!怎么可能没有实现这个函数呢?解决方案:1、如果有函数的源文件,把改文件添加到解决方案的指定项目下,那么该文件就会参与编译和链接;2、如果该函数是在一个动态库中实现的,那么在头文件中添加#pragma comment (lib, "xxx.lib")...

2018-07-03 10:24:28 383

原创 交付安全虚拟应用程序和桌面VDI

为员工提供安全远程访问,同时削减 IT 成本只有 Citrix 能提供可满足您的所有业务需求的完整虚拟应用与桌面解决方案。 让员工自由地从任何地方工作,同时降低 IT 成本。 从任何云(公共云、内部部署或混合云)交付 Windows、Linux、网络和 SaaS 应用或完整的虚拟桌面。虚拟桌面基础设施 (VDI) 为 IT 人员提供了许多关键优势,包括增强安全性和集中化桌面管理,但在如今组织中安全...

2018-07-02 21:24:48 338

原创 Google Protocol Buffer 的使用和原理

简介什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍:Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。Protocol Buffer...

2018-06-30 12:00:19 99

原创 ICE基础概念深入解析

关于ICE的介绍,网上的资料有很多,但是从应用的角度上去评述的并不多,在技术革新的今天我们可能更多的是去关注应用领域而非研究领域,因此根据 我个人的使用经验,想对ICE技术做一些总结和介绍。什么是ICE(Internet Communications Engine)呢,它是由Zeroc公司开 发的一套开源中间件系统,与DCOM,CORBA,WEB SERVICEDcom类似,支持RPC(Remot...

2018-06-27 15:45:13 2641 1

原创 linux下打补丁和生成补丁

之前在公司做项目的时候用到了在linux打补丁的技术(呵呵,其实也不是什么技术说大了就是一条命令),感觉这个还是挺有用的,因为很多原厂都是给出源码基础或是他们修改基础上的补丁包都我们,让我们自己打上去来更新一些代码的功能的。一、打补丁最需要注意有以下两点:1、要打补丁的文件必须是未做任何修改的(这个可以打开补丁文件看一下删除的文件的日期是否和我们要打补丁的文件一样就可以了)。我之前就是因为修改了厂...

2018-06-16 17:49:02 3804

原创 生成单个/多个补丁,打补丁用法

通过diff工具生成补丁, patch工具打上补丁.在使用diff之前, 你需要保留一份未修改过的源码, 然后在其它地方修改源码的一份拷贝. diff对比这两份源码生成patch. 修改过的源码必须保留原来的文件名, 例如, 如果你修改源码中的a.c文件, 那么, 修改后的文件还是名为a.c, 在修改之前你可以复制a.c为a.orig.c进行备份.1.为单个文件生成补丁$ diff -up lin...

2018-06-16 17:47:00 1475 1

原创 Dispatch Interceptors

Dispatch Interceptor APInamespace Ice { class DispatchInterceptor : public virtual Object { public: virtual DispatchStatus dispatch(Request&) = 0; }; typedef IceInternal::...

2018-06-13 12:41:29 236

原创 Servant Locators

The ServantLocator Interfacemodule Ice { local interface ServantLocator { ["UserException"] Object locate(Current curr, out LocalObject cookie); ["UserException"] ...

2018-06-13 10:24:40 239

原创 Object Adapters

Creating an Object Adaptermodule Ice { local interface ObjectAdapter { string getName(); Communicator getCommunicator(); // ... }; local interface Communicator {...

2018-06-13 10:11:30 341

原创 Obtaining Proxies

Obtaining a Proxy from a StringIce::ObjectPrx p = communicator->stringToProxy("ident:tcp -p 5000");Obtaining a Proxy from PropertiesMyApp.Proxy=ident:tcp -p 5000Obtaining a Proxy by Invoking Operat...

2018-06-13 09:43:07 295

原创 Communicator and other Core Local Features

Communicatorsmodule Ice { local interface Communicator { string proxyToString(Object* obj); Object* stringToProxy(string str); PropertyDict proxyToProperty(Object* proxy, s...

2018-06-13 09:38:56 165

原创 联合编译器

联合编译器IncrediBuild在编译的过程中报以下错误:无法创建临时 il 文件;清除临时目录中的旧 il 文件 造成这种错误的原因是:在同一的局域网中帮你编译的其它主机配置有问题导致编译不过。解决方案:1、根据红色的进度条【编译有问题的部分】找到参与这部分编译的主机IP;2、使用工具Proxifier根据步骤一中确定下来的IP,将其拦截[不让它参与编译]就OK了;...

2018-06-12 15:13:03 888 2

原创 IceSSL插件配置

1. IceSSL简介        Ice版本:Ice-3.1.1        操作系统:Windows XP SP2        JDK版本:JDK 1.6        安全性对于许多分布式应用程序来说是一个重要的考虑因素,无论是在企业内部网还是在不可信的网络,如Internet。保护敏感的信息,确保其完整性,并验证通信双方的身份的能力,这些能力对于开发安全的应用程序来说是必不可少的。考...

2018-06-10 19:19:26 437

原创 IceGrid注册器复制

        本文参考Ice官方手册中的描述,对Ice注册器复制作了一个简单的讲解。并使用一个简单的实例,配置Ice注册器的双机热备,实现服务端的高可用性要求。        IceGrid注册器或注册主机的失败会带来严重的后果。客户端可以继续使用一个现有的连接,连接到服务器,期间不需要中断,但是需要与注册器相互作用的任何活动都是易受到单点故障的影响。因此,IceGrid注册支持复制使用主-从配...

2018-06-10 19:14:16 354

原创 ICE通信之IceGrid多节点部署

一、 简介Ice版本:3.1.1使用iceGrid服务实现一个简单的打印系统,主要说明iceGrid的使用方法,系统部署在4台主机上,注册器和打印服务器安装在同一台主机上,如下图所示:下图显示了一个客户端通过间接代理的初始调用,来激活目标服务器。在这个架构当中不需要花时间手动启动服务。客户端的寻址请求提示注册器去查询节点的服务器状态并且根据需要启动它。一旦这个服务启动成功,这个寻址请求完成,并且随...

2018-06-10 14:59:43 1405

原创 Adding Nodes to the Ripper Application

Descriptor Changes<icegrid> <application name="Ripper"> <node name="Node1"> <server id="EncoderServer1" exe="MusicServer" activation="on-d

2018-06-08 13:49:50 112

原创 Using IceGrid Deployment

Ripper Architecture using Deployment Ripper Deployment Descriptors<icegrid> <application name="Ripper"> <node name="Node1"> <server id="EncoderServer"

2018-06-08 12:46:16 153

原创 Getting Started with IceGrid

The Ripper ApplicationRipper.ice#include <Ice/BuiltinSequences.ice>module Ripper {exception EncodingFailedException { string reason;};sequence<short> Samples;interface Mp3Encode...

2018-06-08 12:30:34 150

原创 IceGrid Architecture

Architecture of a Simple IceGrid Application As an example, this illustration shows a very simple IceGrid application running on a network of three computers. The IceGrid registry is the only process...

2018-06-08 12:10:57 177

原创 利用IceGrid部署的一个Demo

这里将简单介绍一个样例应用来帮助我们了解IceGrid的功能。我们的应用是从CD光盘上面rips音轨,然后把它们压缩成为MP3文件,就像图35.3里面演示的那样。The Ripper Applicationrip整张CD通常需要几分钟的时间,因为MP3压缩需要消耗大量的CPU资源。我们的分布式ripper应用要通过利用远程Ice服务器上的CPU资源来加快这个过程,让我们同时压缩多个歌曲成为可能。M...

2018-06-06 21:04:11 1032

原创 IceBox使用一个共享的通讯器

使用一个共享的通讯器:# File: server.cfgIceBox.Service.Hello=... --Ice.Config=hello.cfg --Hello.Debug=1IceBox.Service.Printer=... --Ice.Config=printer.cfgIceBox.UseSharedCommunicator.Hello=1IceBox.UseSharedC...

2018-06-06 20:48:51 233

原创 IceGrid基本概念

1.总括2.概念描述nodeicebox

2018-06-05 20:27:53 1932

原创 ICE集群环境搭建

本文将介绍ice搭建高可用集群环境的详细操作步骤,实现 register 的主从备份、双服务器节点负载均衡等功能 1、下载:     到官网 http://www.zeroc.com/ 下载最新的Ice-x.x.x.msi (windows)版本 2、安装:     双击下载下来的安装文件,安装到自己喜欢的目录下(例:D:\Program Files\ZeroC) 3、环境配置:      设置I...

2018-06-05 20:25:10 820

原创 C++的Dll来实现IceBox的服务

1、服务器端代码:#include <Ice/Ice.h>#include <IceBox/IceBox.h>#include "Hello.h"#include <iostream>using namespace std;#if defined(_WIN32)#define HELLO_API __declspec(dllexport)#...

2018-06-05 20:21:54 508

原创 调用ShellExecute给定参数调用exe或bat

函数原型:HINSTANCE ShellExecute( _In_opt_ HWND hwnd,//父窗口句柄或出错时显示错误父窗口的句柄,可以为 NULL _In_opt_ LPCTSTR lpOperation,//操作 _In_ LPCTSTR lpFile,//要打开的文件名、执行的程序名、浏览的文件夹等。 _In_opt_ LPCTSTR lpParamet...

2018-06-05 20:10:16 2239

原创 IceGrid 服务初次搭建【Java】

1.编写ice接口 module Demo { interface Printer { void printString(string s); }; }; 2.实现接口类 package Demo; import org.apache.log4j.Logger...

2018-06-04 19:07:35 783

原创 IceGrid 服务初次搭建【C++】

1.编写ice接口#ifndef SIMPLE_ICE#define SIMPLE_ICEmodule DiyModule{ interface CAbsPrinter{ void DispStr(string s); int Calc(int num); };};#endif2.编写服务器,实现接口类#include <Ice/Ice.h>#include ...

2018-06-04 18:44:38 971

空空如也

空空如也

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

TA关注的人

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