小熊的博客

小熊要成长~

Python读取Word(.docx)正文信息

Python读取Word(.docx)正文信息本文介绍用Python简单读取*.docx文件信息,一些python-word库就是对这种方法的扩展。介绍分两部分: Word(*.docx)文件简述 Python提取Word信息 Word(*.docx)文件简述大约在2008年以前,Office产品...

2017-08-05 21:53:59

阅读数 4732

评论数 1

如何批量实现通过MP3标题重命名文件名

如何批量实现通过MP3标题重命名文件名本文介绍对MP3格式进行重命名操作,首先通过文件属性获取MP3文件标题Title,然后用标题对文件名进行重命名。 方法通过C#实现,共分两步: 1通过ShellClass获得文件属性 2以mp3文件的Title属性对其进行重命名

2017-05-18 20:26:31

阅读数 7048

评论数 0

控制反转(IoC)与依赖注入(DI)

1.控制反转(Inversion of Control)与依赖注入(Dependency Injection) 控制反转即IoC (Inversion of Control),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件...

2017-04-07 15:19:35

阅读数 454

评论数 0

C中可变参数函数及log函数运用

C语言中函数可以定义为可变参数的。看printf的定义: int printf(char *fmt, ...); 可变参数的处理需要用到stdarg.h中的一些宏。 C语言标准库中头文件stdarg.h包含了一组能够遍历变长参数列表的宏。主要包含下面几个:...

2017-03-21 15:40:09

阅读数 475

评论数 0

C#事件——对委托的封装

C#中,正如属性是对成员变量的封装,事件是对委托的封装。 完整的事件流程: class Program { static void Main(string[] args) { EventSender sender = ne...

2017-03-13 09:17:24

阅读数 1096

评论数 0

为类写一个自己的堆

为什么要创建自己的堆呢?有多方面原因: 对组件进行保护更有效的内存管理局部访问避免线程同步开销快速释放 在C++中,我们用new操作符来分配类对象,用delete操作符来释放它。 通过对C++类的new和delete操作符进行重载,我们可以非常容易地将堆函数加以运用。 总体来看...

2017-01-21 20:33:30

阅读数 208

评论数 0

用内存映射文件实现进程间通信

使用内存映射文件的一般流程:      由于内存映射文件的一致性,即系统保证在同一文件映射对象的多个视图间保持一致。这可以作为进程通讯的基础,而且在Windows上,同一台机器上共享数据的最底层机制都是内存映射文件。     许多应用程序会在运行过程中创建一些数据,并需要将这些数据传输给其...

2017-01-21 18:05:04

阅读数 1641

评论数 1

用内存映射文件来处理大文件

1.使用内存映射文件来处理文件的内容,我们先打开文件并向系统预订一块虚拟地址空间区域。接着让系统把文件的第一个字节映射到该区域的第一个字节。然后就可以访问这块虚拟内存区域,就好像它实际包含了文件一样。 2.这种方法的最大的优点在于让系统为我们处理所有与缓存有关的操作。我们不必再分配任何内...

2017-01-21 16:40:14

阅读数 520

评论数 0

程序的多个实例间共享数据

程序比较简单,注释也比较详细,不再做过多说明。 #include #include //创建一个共享段Shared,一段变量放在单独的段中, //系统不会再在同一个可执行或DLL的每一个实例中为 //它们创建新的实例了 #pragma data_seg("Shared"...

2017-01-21 11:58:47

阅读数 1048

评论数 0

用命名内核对象判断程序是否有实例正在运行

命名内核对象可以进程之间共享句柄 通过让进程每次运行创建一个命名内核对象,判断创建是否成功 用GetLastError()获得错误代码,即可判断程序是否有实例正在运行 代码页比较简单,不做过多描述,详情参考《windows核心编程》 #include #include int mai...

2017-01-21 10:58:26

阅读数 132

评论数 0

如何通过进程名字关闭系统正在运行的进程

STEP ONE 终止正在运行的进程,我们用TerminateProcess()函数,函数原型: BOOL TerminateProcess( HANDLE hProcess, // handle to the process UINT uExitCode // exit code ...

2017-01-14 09:03:51

阅读数 489

评论数 0

ANSI与UNICODE的相互转换

ANSI与UNICODE的相互转换需要用到可格式化字符串函数: *sprintf 和 *sprintf_S 注意: 1.sprintf和swprintf由于安全性欠佳,已经被sprintf_s和swprintf_s替代。 2.上述代码“%S"中的S为大写,这一般是新手的问题所在。

2017-01-11 16:54:30

阅读数 766

评论数 0

VS2013使用技巧汇总

1. Peek View 在不新建TAB的情况下快速查看、编辑一个函数的代码。 以前要看一个函数的实现,需要在使用的地方点击F12跳转到该函数,实际上这是很浪费时间的。VS2013Peek View便解决了这个问题。在光标移至某个函数下,按下alt+F12。 用法:在光标移至某个...

2017-01-08 20:28:09

阅读数 5102

评论数 0

Linux虚拟地址空间布局以及进程栈和线程栈总结

目录(?)[-] 一Linux虚拟地址空间布局1 内核空间2 栈stack3 内存映射段mmap4 堆heap5 BSS段   6 数据段Data   7 代码段text   8 保留区二Linux 中的各种栈进程栈 线程栈 内核栈 中断栈 Linux 中有几种栈各种栈的内存位置 一进...

2017-01-06 20:41:33

阅读数 1045

评论数 0

进程地址空间的一点认识

在进入正题前先来谈谈操作系统内存管理机制的发展历程,了解这些有利于我们更好了解目前操作系统的内存管理机制。 一 早期的内存分配机制 在早期的计算机中,要运行一个程序,会把这些程序全都装入内存,程序都是直接运行在内存上的,也就是说程序中访问的内存地址都是实际的物理内存地址。当计算机同时运行多个程...

2017-01-06 15:10:46

阅读数 543

评论数 0

VS调试:dump定位

在系统中异常或者崩溃的时候,来生成dump文件,然后用调试器来调试,可以快速精确定位崩溃的代码行。 这样就可以把生产环境中的dmp文件,拷贝到自己的开发机器上,调试就可以找到错误的位置,配合程序调试符号pdb文件,直接可以定位到源代码中位置,真是太神奇了。 1.创建dump文件的三种方...

2017-01-05 11:15:30

阅读数 4655

评论数 0

程序的机器级表示<CSAPP>

1.一个IA32 CPU包含一组8个存储32位值的寄存器。这些寄存器用来存储整数数据和指针。 " style="border:0px; max-width:100%; display:block; margin:1em auto"> 2.操作数指示符...

2016-12-24 10:33:15

阅读数 347

评论数 0

HRESULT的详细说明

1. SUCCEEDED 原型如下: BOOL SUCCEEDED( HRESULT hr ); 对应的定义(具体的实现):#define SUCCEEDED(hr) (((HRESULT)(hr)) >= 0) 2. FAILED 原型如下: BOOL FAILED( ...

2016-12-22 09:38:56

阅读数 445

评论数 0

C++对象内存模型

谈VC++对象模型 (美)简.格雷 程化    译 译者前言 一个C++程序员,想要进一步提升技术水平的话,应该多了解一些语言的语意细 节。对于使用VC++的程序员来说,还应该了解一些VC++对于C++的诠释。 Inside the C++ Object Model虽然是一本好书,...

2016-11-21 14:37:07

阅读数 2748

评论数 2

模式十三:代理模式(Proxy Pattern)——对象的替身

代理模式 为另一个对象提供一个替身或占位符以控制对这个对象的访问。 应用分析 使用代理模式创建代表对象,让代表对象控制某对象的访问,被代理的对象可以是远程的对象、创建开销大的对象或者需要安全控制的对象。 代理模式为另一个对象提供代表,以便控制客户对对象的访问,管理访问的方式有许多种。 远...

2016-10-20 11:03:37

阅读数 177

评论数 0

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