程序员文章
zb872676223
pc软件开发
展开
-
使用FlexPaper实现PDF文件在线预览
一、文档在线阅读思路 1.用OpenOffice把PPT、Word、Excel、Text转换为pdf 2.用SWFTool将生成的pdf转换成swf,然后利用FlexPlayer实现在线预览播放二、准备工作 1.安装OpenOffice,官网下载地址:http://www.openoffice.org/download/index.html,最新版为3.4.1,我使用的版本...转载 2019-11-02 14:47:29 · 543 阅读 · 0 评论 -
swfTools+FlexPaper文档在线预览及问题解决(FlexPaper加载一直转圈)
具体需求是:针对上传的各种office文件(包括.excel,.doc,.docx等)可以下载亦可以在线预览;写博客的时候有时无暇顾及一些小细节,给读者带来疑问也很正常,所以在看一些博客的时候,多琢磨,不要着急;实现涉及技术:利用openOffice把word、excel、txt等类型的文档转换成pdf;再借助swftools将pdf转换成swf;然后利用FlexPape...转载 2019-11-02 14:44:33 · 688 阅读 · 0 评论 -
opensips
***************************************************************************************************************************作者:EasyWave 时间:2014转载 2015-09-02 14:00:20 · 672 阅读 · 0 评论 -
什么样的项目最适合于敏捷开发
我最近被问到关于什么样的项目才是最适合于敏捷方法,在此关于这方面进行一个探讨。在我看来,最适合敏捷方法的项目是那些有着激进的时间期限限制,那些有着高度的复杂程度,以及那些有着高度新颖性(独特性)的项目。当我们在做一些新的事情,到少是对于开发团队是新的事情,的时候我们会比较愿意使用敏捷方法。如果这是一件团队以前曾经重复做过很多次的事情,他们很可能就不需要用敏捷的方法来做了。对我来转载 2015-03-23 23:31:10 · 7538 阅读 · 0 评论 -
C++拷贝构造函数详解
一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:[c-sharp] view plaincopyint a = 100; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。转载 2014-10-13 10:10:10 · 520 阅读 · 0 评论 -
c++模板类
理解编译器的编译模板过程如何组织编写模板程序前言常遇到询问使用模板到底是否容易的问题,我的回答是:“模板的使用是容易的,但组织编写却不容易”。看看我们几乎每天都能遇到的模板类吧,如STL, ATL, WTL, 以及Boost的模板类,都能体会到这样的滋味:接口简单,操作复杂。我在5年前开始使用模板,那时我看到了MFC的容器类。直到去年我还没有必要自己编写模板类。可是在我转载 2014-10-11 11:16:19 · 511 阅读 · 0 评论 -
拷贝构造函数的参数为什么必须使用引用类型
转自:http://blog.csdn.net/tunsanty/article/details/4264738 在C++中, 构造函数,拷贝构造函数,析构函数和赋值函数(赋值运算符重载)是最基本不过的需要掌握的知识。 但是如果我问你“拷贝构造函数的参数为什么必须使用引用类型?”这个问题, 你会怎么回答? 或许你会回答为了减少一次内存拷贝? 很惭愧的是,我的第一感觉也是这么回答。不好还好,转载 2014-10-11 13:15:22 · 426 阅读 · 0 评论 -
__attribute__使用的一些总结
(ZT)GNU C 的 __attribute__ 机制2011-11-10 19:02---------------------------------------------------------------- 原作者: 初次发布时间:2006-06-17 修改者:---------------------------------------转载 2014-10-09 13:31:47 · 3476 阅读 · 0 评论 -
如何学好C++语言(转载,收藏)
前段时间写了一篇如何学好C语言,就有人回复问我如何学好C++,所以,我把我个人的一些学习经验写在这里,希望对大家有用。首先,因为如何学好C语言中谈到了算法和系统,所以这里就只谈C++语言。C++是最难的语言。这个世界上最难的编程语言可能非C++莫属了。你千万不要以为几天就可以学好C++,C++的学习曲线是相当BT的,你可以看看这篇文章。C++是一门很自由的语言,自由到了有点BT和恐怖的地步转载 2014-10-08 15:05:53 · 529 阅读 · 0 评论 -
c++头文件包含注意要点(收藏)
C++ 中类的声明和类的定义分开几乎成了一个不成文的规定。这样做的好处是使得类的声明和实现分开,清晰明了,同时便于库函数发布。但是在实际编程中由此也常常 引起了一些由于头文件的包含顺序问题而产生的符号未定义的编译错误,不明白其中原理有时会让人很头疼。要消除符号未定义的错误的编译错误,最基本的一个做 法就是在引用一个符号(包括变量,函数,结构,类等)之前确保它已经声明或者已经定义。转载 2014-10-08 15:18:54 · 470 阅读 · 0 评论 -
volatile
就像大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。目录1作用2几个例子3使用地方4代码5正确使用转载 2014-10-08 15:28:33 · 600 阅读 · 0 评论 -
概要设计说明书
概要设计说明书又可称系统设计说明书,这里所说的系统是指程序系统。编制的目的是说明对程序 系统的设计考虑,包括程序系统的基本处理流程、程序系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为程序的详细设计提供基础。目录1目录及涵盖内容2概要设计说明书的编写概要▪ 引言及设计背景▪ 设计结构及流程处转载 2015-09-08 15:35:24 · 1565 阅读 · 1 评论 -
软件开发文档
软件开发文档是软件开发使用和维护过程中的必备资料。它能提高软件开发的效率,保证软件的质量,而且在软件的使用过程中有指导,帮助,解惑的作用,尤其在维护工作中,文档是不可或缺的资料。目录1简介2分类▪ 开发文档▪ 产品文档▪ 软件开发文档1简介编辑软件开发文档是软件开发使用和维护过程中的必备资料转载 2015-09-08 15:36:12 · 641 阅读 · 0 评论 -
web提示问题
1.针对ie可在注册表:HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\ProtocolExecute下新建项“xxx”并增加一个名称为“WarnOnOpen”的DWORD类型键值,值为0不会有提示;值为1有提示;2.对于chrorme内核浏览器,误点击“记住我对所有此类应用的选择”,当需要重新调出时候,可用技术本打开\AppDat原创 2015-10-10 18:11:34 · 883 阅读 · 0 评论 -
window下使用SetUnhandledExceptionFilter捕获让程序的崩溃
简单使用SetUnhandledExceptionFilter()函数让程序优雅崩溃虽然是大公司的产品,QQ它还是会在我们的折腾下崩溃的,但是它总是崩溃的很优雅,还要弹出自己的对话框来结束。并且发送报告,去掉了系统默认的发送报告的对话框。所以一拍脑袋,想让自己的程序崩溃的体面一点。自己想了大概的思路,觉得可以用一个进程来监控目标程序。的确也可以拿到了目标程序崩溃的信息,知道它什么时候崩...转载 2019-02-27 20:04:21 · 1997 阅读 · 0 评论 -
regSvr32 脚本注册避开“以管理员身份运行”权限注册失败的解决方法
最近,帮公司做了一个硬件设备的管理系统,系统不复杂,但是要跟硬件打交道,少不了各种脚本处理,异常处理,还有就是各种系统的兼容性。项目都要接近尾声的时候,发现web控件,怎么都注册不了报错。可是一直都没有问题的啊。 原来,问题出在了win7 “以管理员身份运行” 的权限上了。我们的控件,因为用到了第三方的dll和一些文件,公司管硬件的开发小伙,直接做成了自解压的安装文件。但是...转载 2018-10-17 17:38:49 · 2926 阅读 · 0 评论 -
随机等概率的输出m个不重复的数
今天看到一段代码,可以从0.....n-1中随机等概率的输出m个不重复的数(n远远大于m)。遂记录下来。首先,产生随机数,不免要用到srand,rand函数。先简单介绍下两个函数。1,void srand(unsigned int seed); 初始化随机数生成器,对于每一个不同的seed,每一次调用rand()将会产生不同的随机数序列。 特别的,当seed == 1时,生成...转载 2018-07-18 10:53:29 · 370 阅读 · 0 评论 -
记录程序崩溃时的调用堆栈
最近有个用户遇到程序Crash问题,但我们的机器都不能重现,于是在网上搜了一把,发现有个MSJExceptionHandler类还比较好用,故整理了一下供大家参考。这个类的使用方法很简单,只要把这个类加入到你的工程(不管是MFC,com,dll都可以)中一起编译就可以了,由于在这个类的实现文件中把定义了一个全局的类对象,所以不用加入任何代码,连#include都不需要。一、VS2008创建一个基于...转载 2018-06-22 21:07:38 · 2040 阅读 · 0 评论 -
四人过河用时最短的编程实现
某夜,有个团伙要过桥,该桥每次只能通行2个人,只有一个手电筒,过桥必须持有手电筒。这些人单独过桥的时间从小到大分别为t1、t2、t3、t4、t5 ………请写程序计算出这伙人过桥需要的最短时间。(提示:假设是四人,如果t1=1,t2=2,t3=5,t4=10,最短用时为17)昨天公司领导出了上面逻辑题,看着挺有意思,自己初略思索了下,琢磨最短用时应该19才是,后面某一同事提了个方案: t1t2一起过...原创 2018-05-05 15:51:41 · 1951 阅读 · 2 评论 -
vs2015 openssl-1.0.2j编译
1 openssl编译基本信息1.1 openssl版本信息openssl 官网:https://www.openssl.org/ 稳定版本LTS版本:https://www.openssl.org/source/openssl-1.0.2j.tar.gz官网上说1.0.2版本是支持到2019-12-31的长期支持版本。 官网版本说明:https://www.openssl.org/policie...转载 2018-04-04 17:17:04 · 1592 阅读 · 0 评论 -
chrome CEF3 IE设置影响网页速度的问题
chrome CEF3 IE设置影响网页速度chrome局域网mfcie我现在正在学习CEF3,想请教大神们一个问题:在CEF3嵌入MFC后,如果IE的局域网设置为“自动检测设置”后,嵌入的网页加载速度很慢。不知道怎么用CEF3来解决,请大神们指点一下!谢谢!同问0|浏览665|收藏0|分享1个回答按赞数排序转载 2016-10-09 18:06:24 · 2377 阅读 · 1 评论 -
实现应用的增量更新\升级
转载请注明出处:http://blog.csdn.net/yyh352091626/article/details/50579859增量升级的背景虽然很多App的版本更新并不频繁,但是一个App基本上也有几兆到几十兆不等,在没有Wifi的条件下,更新App是非常耗流量的。说到这个就必须得吐槽一下三大网络运营商,4G网络是变快了,但是流量确没有多,流量仍然不够用,治标不治本,并没什么转载 2016-06-28 19:08:54 · 3428 阅读 · 0 评论 -
使用缓存的9大误区
如果说要对一个站点或者应用程序经常优化,可以说缓存的使用是最快也是效果最明显的方式。一般而言,我们会把一些常用的,或者需要花费大量的资源或时间而产生的数据缓存起来,使得后续的使用更加快速。 如果真要细说缓存的好处,还真是不少,但是在实际的应用中,很多时候使用缓存的时候,总是那么的不尽人意。换句话说,假设本来采用缓存,可以使得性能提升为100(这里的数字只是一个计量符号而已,只是为了给大家转载 2016-01-30 11:45:14 · 471 阅读 · 0 评论 -
Linux设置全局环境变量的三种方法
1、修改/etc/profile 1.1 :首先在此文件中设置环境变量; 1.2:export 设置好的环境变量. #vim /etc/profile2、修改.bashrc# vim /root/.bashrcexport PATH="变量路径"3、直接在shell下用export命令修改 #export PATH="$var_P转载 2014-10-23 11:09:51 · 23485 阅读 · 0 评论 -
http://www.cnblogs.com/emouse/archive/2013/01/29/2881721.html
http://www.cnblogs.com/emouse/archive/2013/01/29/2881721.htmlQt Creator的配置和开发初步测试关于编译与安装的内容请参考:Linux 下编译、安装、配置 QT交叉编译QT 4.8.3本篇博客主要记录3方面的内容1、Linux下Qt Creator的配置,这部分是以前面两篇文章的工作为转载 2014-09-28 14:55:07 · 1142 阅读 · 0 评论 -
面向对象基础
我想在这个园子里面的新人,还是"掌门人",都对"面向对象"这几字非常的耳熟了或者有一定的了解。 但当一个初学都在学习面向对象的时候,会遇到一些瓶颈和麻烦,认为面向对象非常的难以理解。 那么本章节主要是让大家了解面向对象,并系统地掌握面向对象编程的技能点,消除初学者的疑惑. 1、 如何去学习面向对象的编程? 2、 需要掌握的有哪些技能点?转载 2014-07-28 09:43:50 · 472 阅读 · 0 评论 -
C++ ofstream和ifstream详细用法
http://soft.chinabyte.com/database/460/11433960.shtmlofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符: 1、插入器(转载 2014-07-28 10:36:39 · 403 阅读 · 0 评论 -
C++常见错误大全
0. XXXX "is not a class or namespace"错误 最诡异的错误,提示意思很明显,说你写的名字既不是一个类也不是一个命名空间,虽然我C++水平不是很高,但再愚笨也不至于连类的格式class MyClass{....};也写不明白吧,报此错误原因显然跟它没关系,那又是怎么回事呢? 答案是:#include "stdafx.h"没放在代码最开头!!!转载 2014-07-25 10:36:18 · 1053 阅读 · 0 评论 -
进程通讯的几种方式
# 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。# 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。# 信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共转载 2014-07-25 10:28:07 · 461 阅读 · 0 评论 -
vector内存释放机制
2011-10-17 15:02vector 中的内建有内存管理,当 vector 离开它的生存期的时候,它的析构函数会把 vector 中的元素销毁,并释放它们所占用的空间,所以用 vector 一般不用显式释放 —— 不过,如果你 vector 中存放的是指针,那么当 vector 销毁时,那些指针指向的对象不会被销毁,那些内存不会被转载 2014-07-25 10:30:08 · 555 阅读 · 0 评论 -
vector 浅拷贝
浅拷贝和深拷贝,以及push_back()的奥秘[原创]2008-09-29 10:38下列代码有哪些错误?#include using namespace std;class CDemo{public: CDemo():str(NULL){}; ~CDemo(){转载 2014-07-25 10:38:26 · 3371 阅读 · 0 评论 -
代码重构方向原则指导
重构是一种对软件进行修改的行为,但它并不改变软件的功能特征,而是通过让软件程序更清晰,更简洁和更条理来改进软件的质量。代码重构之于软件,相当于结构修改之于散文。每次人们对如何对代码进行重构的讨论就像是讨论如果对一篇文学作品进行修订一样无休无止。所有人都知道应该根据项目的自身情况来对代码进行重构,而重构是无止境的。莫扎特从来不不对他的作品进行修订,特罗洛普对自己作品修订的恰到好处,大多数作家认为他们转载 2014-07-25 10:10:17 · 1905 阅读 · 0 评论 -
软件看门狗程序
一.概述一些重要的程序,必须让它一直跑着;而且还要时时关心它的状态——不能让它出现死锁现象。当然,如果一个主程序会出现死锁,肯定是设计或者编程上的失误。我们首要做的事是,把这个Bug揪出来。但如果时间紧迫,这个Bug又“飘忽不定”,那么,我们还是先写一个“看门狗”,暂时应一下急吧。“看门狗”的需求描述:“看门狗”的运行不出现界面窗口,具有一定的隐蔽性;定时判断目标进程是否运行在当前系统转载 2014-07-25 14:34:33 · 22138 阅读 · 0 评论 -
给应用程序加装“看门狗”
相信大多数的程序员或用户,在Windows中见到类似于下面的亲切而又温馨的提示信息,都不会感到陌生:“XXX执行了非法操作,将被关闭。要终止程序,请单击;要调试程序,请单击。”或者,“是否向Microsoft发送错误报告?,。”如果这个程序运行在无人值守、需要保持连续工作状态的场合,而其中的bug又一时难以排除,就需要采取应急措施,消除或减少程序出错造成的影响。本文讨论解决这个问题转载 2014-07-25 14:30:49 · 2228 阅读 · 0 评论 -
C++ Bridge 设计模式
C++ Bridge 设计模式 Bridge模式是应用最广泛也是我个人比较喜欢的一个C++设计模式之一。Bridge模式意图:降低抽象和实现之间的耦合。面向对象系统设计和分析中最重要的一点就是:高内聚,低耦合。Bridge模式使得抽象和实现能够相对独立。 Bridge模式结构图:转载 2014-07-24 14:48:10 · 688 阅读 · 0 评论 -
__declspec,__cdecl,__stdcall,__declspec
_cdecl 是C Declaration的缩写,表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数不需要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误。 _stdcall 是Standard Call的缩写,是C++的标准调用方式:所有参数从右到左依次入栈,如果是调用类成员的话,最后一个转载 2014-08-07 15:23:28 · 423 阅读 · 0 评论 -
简单的定位到程序崩溃地点的方法
http://blog.csdn.net/guo_wei/article/details/1805978事例程序2k以上的操作系统,微软提供了一种新的功能Online Crash Analysis,简称OCA,就是当程序崩溃的时候我们看到的的那个对话框,问你是否把崩溃的一些信息发送到微软,各个软件厂商可以从微软那里根据收集到的程序版本和出错的地址等信息来完善自己的程序。转载 2014-09-19 13:03:32 · 3096 阅读 · 0 评论 -
一个容易出现死锁的场景
前不久在工作中遇到一个死锁的问题,特记录下。假设有这样的一个场景, 你调用某个接口, 这个接口调用的过程中,会上两个读写锁,上锁的顺序是先A后B。然后在底层网络io回调的时候,也会使用到这两个锁,上锁的顺序是先B后A。 那么就存在这样一种情况。假如线程T1调用接口,刚上完A锁,还没有上B锁。底层回调线程T2刚上完B锁,还没有上A锁。这个时候,线程T1要申请上B锁,但是B锁已经被线程转载 2014-08-15 16:52:09 · 2891 阅读 · 0 评论 -
利用bochs 调试内核(转载)
利用bochs调试内核(主要是在windows下调试)Bochs具有非常强大的操作系统内核调试功能。这也是本文选择Bochs作为首选实验环境的主要原因之一。有关Bochs调试功能的说明参见前面14.2节,这里基于Linux 0.11内核来说明Windows环境下Bochs系统调试操作的基本方法。14.8.1 运行Bochs调试程序我们假设Bochs系统已被安装在目录“C:\Pr转载 2014-08-16 17:55:19 · 1889 阅读 · 0 评论 -
明星软件工程师的10种特质(转)
如今,每家公司都似乎成了科技公司。从软件创业公司到投机性投资公司、制药巨头和媒体巨头,它们都越来越多地加入到软件业务行列。代码质量不仅成为了一个必需品,更成为了一个竞争优势。因为众多公司围绕软件而竞争,开发软件的人——软件工程师正显得越发重要。但是,你该如何发现那种百里挑一的程序员呢?在本文中,我们简明扼要地列出了明星开发人员的10种特质。1. 热爱编程2. 完成事转载 2014-08-16 17:27:25 · 499 阅读 · 0 评论