
开发问题
pstrunner
超越自我,没有做不到,只有想不到。
展开
-
使用C11特性,实现对象自动释放(RAll)的方式(ScopeGuard )
参考:https://www.cnblogs.com/chenny7/p/11990105.htmlRAII的本质内容是用对象代表资源,把管理资源的任务转化为管理对象的任务,将资源的获取和释放与对象的构造和析构对应起来,从而确保在对象的生存期内资源始终有效,对象销毁时资源必被释放。换句话说,拥有对象就等于拥有资源,对象存在则资源必定存在。由此可见,RAII惯用法是进行资源管理的有力武器。ScopeGuardScopeGuard 最大的用处也是释放资源。比如分配内存,做某些操作,...转载 2020-10-30 11:22:45 · 1019 阅读 · 0 评论 -
TCP连接与断开详解(socket通信)
一、TCP数据报结构以及三次握手TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接。客户端在收发数据前要使用 connect() 函数和服务器建立连接。建立连接的目的是保证IP地址、端口、物理链路等正确无误,为数据的传输开辟通道。TCP建立连接时要传输三个数据包,俗称三次握手(Three-way Handshaking)。可以形象的比喻为下面的对话:[Shake 1]转载 2020-09-24 10:36:35 · 2995 阅读 · 0 评论 -
一次对server服务大量积压异常TCP ESTABLISHED链接的排查笔记
背景我们都知道,基于Kubernetes的微服务,大行其道,传统部署模式一直都在跟着变化,但其实,在原有业务向服务化方向过度过程中,有些场景可能会变得复杂。比如说:将Kubernetes的模式应用到开发环节上,这个环节需要频繁的变更代码,微服务的方式,可能就需要不断的:改代码->构建镜像->镜像推送->部署->拉去镜像->生成容器尤其是PHP的业务,不需要构建二进制,仅需要发布代码,因此,如果按照上面的部署方式,就需要频繁改代码,走构建镜像这个流程,最后再做转载 2020-09-22 13:38:58 · 1474 阅读 · 0 评论 -
CString转换到string:无法从“wchar_t *”转换为“std::basic_stri
CString转换到string:无法从“wchar_t *”转换为“std::basic_string<_Elem,_Traits,_Ax>”对于你的应用来说ANSI和UNICODE的区别就是ANSI编码CString默认是窄字节的UNICODE默认是宽字节的std::string总是窄字节的所以UNICODE下你要做宽窄字节转换比如可以这样USES_CONVERSION;CString str;std::string str1 = W2A(str.Getbuffer()转载 2020-08-21 09:37:57 · 1540 阅读 · 1 评论 -
端口号被占用而实际未被占用问题
写程序时一直报错端口号被占用,而实际查看,以及重启电脑均还是报错为端口号被占用然后找到方法打开dos ,要用管理员身份打开 ; 输入 netsh winsock reset ; 重启电脑,就可以了参考:https://blog.youkuaiyun.com/weixin_42470710/article/details/101427175?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-转载 2020-08-19 11:37:26 · 1031 阅读 · 0 评论 -
禁用指定编译警告教程
vc编译器">MSVC编译器#ifdef _MSC_VER#pragma warning(push)#pragma warning(disable:4100)#endif //some code... #ifdef _MSC_VER#pragma warning(pop)#endifGCC编译器#ifdef __GNUC__#pragma GCC diag...转载 2019-10-28 13:38:33 · 553 阅读 · 0 评论 -
发布QT(5.2.0)编译的Exe在Windows独立运行的依赖dll
开发中,遇到下面的问题:参考:http://blog.sina.com.cn/s/blog_7d668e960102x1ac.html一、问题描述:在 windows下使用 Qt5 qtcreator发布 Release 版程序,双击程序的exe文件运行出现如下错误:二、解决方法:1、在qtcreator安装目录下找到platforms文件夹,将该文件夹拷贝到程序 e...原创 2019-10-18 16:11:57 · 468 阅读 · 0 评论 -
使用VS2012编译7zip源代码
引言7zip的压缩比是非常高的,在实际项目中也会经常用到,当然如果能够对源代码进行编译,并进行一些定制化的开发,当然就更好了。本文简要说明了如何下载、编译以及定制的开发方法。下载官网:https://www.7-zip.org/sdk.html下载的文档中有一些说明如何在VS上进行编译,但是还是遇到各种问题,本人经过查找相关资料,终于实现了在VS2012上的编译。工程结构说明...原创 2019-05-14 15:49:47 · 1311 阅读 · 0 评论 -
Entity Framework优缺点及使用方法总结
Entity Framework是MS提供的一个ORM框架,它旨在为小型应用程序中数据层的快速开发提供便利。nuget上185W多的下载量,说明.Net开发人员还是比较喜欢用EF的。但是EF在提供了便利性的同时也有许多缺点,以下就是我认为不应该应用EF的场景:非SQL Server数据库且无该数据库的DataProvider 高性能要求。在进行一些复杂查询的情况下,EF的性能表现不太好,...转载 2019-05-14 10:35:09 · 3159 阅读 · 0 评论 -
ActiveX工程创建与开发详解
前言当有些网页应用出于性能、保密等考虑,需要额外开发插件,不同的浏览器支持的插件是不一样的,下面以IE的插件开发进行详细说明。插件的IDE工具是VS2012.创建ActiveX工程打开VS2012,创建新工程,选择如下工程类型:点击确定后,按照默认设置,点击完成,自动生成如下文件。其中,UUID是插件的ID,它用于网页的调用:在网页中调用如下代码所示:...原创 2019-04-02 15:55:07 · 716 阅读 · 0 评论 -
如何在VisualStudio工程中编译汇编文件
前言在项目中,大部分代码是C++,但是部分模块使用了汇编代码,那么如何配置工程让VS编译自己指定的汇编编译器呢?步骤例如,下图有一个汇编文件,需要NASM编译器:右击对应汇编文件,安装下图配置自定义的编译设置即可。注意:为了保证编译通过,还需要把NASM加入到系统环境变量path里才可以。...原创 2019-03-28 17:28:15 · 2280 阅读 · 0 评论 -
MFC的CEdit和CSpinControl组合实现数字上下滚动详解
引言查找了一些有关这方面的资料,都不很全面;有的说要重载CEdit等控件,甚至有直接说在MFC上无法实现,感觉微软应该没有这么烂吧。后来终于在国外网站找到了(https://www.tutorialspoint.com/mfc/mfc_spin_button.htm)。现在把这块知识整理完整,以方便大家借鉴。第一步:设置Resource在Resource里建立一个Dialog,拖入CE...原创 2019-06-08 15:02:04 · 591 阅读 · 0 评论 -
如何在VisualStudio上创建开发64位工程详解
前言安装VisualStudio时,默认是不勾选x64开发套件的,所以安装时需要手动勾选上;或者在安装之后再次运行镜像文件勾选x64的开发套件。步骤以VS2012为例,创建工程后,打开配置管理器,如下图:打开配置管理器,添加x64平台,属性拷贝win32,点击确定即可。此时配置管理器页面有x64平台可供选择,直接选中即可。...原创 2019-03-28 17:18:15 · 3724 阅读 · 0 评论 -
MySQL删除表:Cannot delete or update a parent row: a foreign key constraint fails。
现象与原因MySQL库中有俩表,table1和table2,相互关联,在删除表的时候出错:Cannot delete or update a parent row: a foreign key constraint fails。很明显这是表关联生成的强制约束问题,在删除的时候回检查表之间的关联关系,从而导致无法删除。SET foreign_key_checks = 0; // ...原创 2019-05-13 16:25:52 · 445 阅读 · 0 评论 -
Jsp登录逻辑流程
引言对于Jsp的登录逻辑做一个简要概述,方便以后回忆。以下代码基于Spring框架。逻辑流程登录页面的login.jsp主要代码,关键是在form中引入action去调用后端的接口<form id="kvm_login_form" class="form-signin" action="loginCheck.do" method="post" onsubmit="re...原创 2019-05-24 11:20:45 · 913 阅读 · 0 评论 -
MFC 初始化 GDI+
1. 在stdafx.h文件中在#include <afxext.h>后面加#include <gdiplus.h> //将GDI+头文件加入到工程中#pragma comment(lib, "gdiplus.lib") //将GDI+的lib文件加入到工程中using namespace Gdiplus; //使用GD...转载 2019-06-02 21:15:31 · 258 阅读 · 0 评论 -
定时任务之-Quartz
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或 EJBs。CronTrigger配置格式:格式: [秒] [分] [小时] [日] [月] [周] [年]序号...原创 2019-08-01 09:50:21 · 365 阅读 · 0 评论 -
ubuntu18+Qt5.13搭建
官网分别下载ubuntu和Qt最新版本,并安装wmware,安装默认设置创建虚拟机【开始查询了一些资料,进行了一些自定义设置,但是行不通】。在ubuntu联网的问题,出现两天的耽搁,主要是我的主机是通过代理上网的,并且ubuntu的网络设置为NAT模式,并且尝试了cntlm代理工具、ubuntu的系统代理;结果是网页可以打开,但是控制台ping百度就是不行,并且执行update也不报告网络错误...原创 2019-09-18 17:08:00 · 1834 阅读 · 0 评论 -
Qt开发: VS2012使用Qt5搭建开发环境
1 需要的软件工具VS2012 :链接:http://pan.baidu.com/s/1hrZ0m1Y 密码:y7m9【可以百度自己搜索】Qt5.2.0 : http://mirrors.ustc.edu.cn/qtproject/archive/qt/5.2/5.2.0/qt-windows-opensource-5.2.0-msv...转载 2019-09-30 17:17:22 · 360 阅读 · 0 评论 -
五子棋游戏
<br />#include <iomanip><br />#include <iostream><br />#include <vector><br />#include <string><br />#include <utility><br />#include <algorithm><br />//#include "main.h"<br />using namespace std;<br />class chess_board;<br />class check_not_numeric<br />{原创 2010-12-31 10:56:00 · 548 阅读 · 0 评论 -
Android Studio安装与App开发步骤详解
环境准备使用的软硬件具体如下:Windows 7 Android Studio 3.3.2【简称:AS,从官网可以下载,或者使用低版本升级:help->check for update】 JDK1.8.0_131 HuaWei Pad/SamSung PadJDK/SDK/SDK_Manager更新与配置在D盘分别建立【android_sdk】目录,用于存放s...原创 2019-03-22 16:03:45 · 2508 阅读 · 0 评论 -
Java【WebService的简单实】
前言Web Service对于大家应该经常听说,特别当下“微服务”架构很流行。各种软件公开一套标准的服务,应用方集成非常方便。Java的Web Service不管工程类型都可以实现,特别在Jdk6+版本上实现起来更加方便。这里介绍一个简单的实现步骤。创建WebService的Java应用选择Java Project输入工程名称:TestWebService直接点“Fin...原创 2019-03-06 16:35:17 · 427 阅读 · 0 评论 -
UML类图几种关系的总结
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1. 泛化(Generalization) 【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特转载 2015-03-19 19:22:54 · 385 阅读 · 0 评论 -
关于提高UDP发送效率的方法
通过修改注册表达到发送UDP效率最大化的方法。原创 2015-03-19 19:08:09 · 11917 阅读 · 0 评论 -
利用manifest提升程序为VISTA/WIN7管理员权限
建立文本文件, 命名为”可执行文件名.exe.manifest”,并加入以下代码:Description of your application运行级别有3种,这里使用 requireAdministrator 表示以管理员权限运行,如果写为 aslnvoker,那么就是以普通权限运行。将该文件存放运行文件目录下在VS中加载程序EXE转载 2013-11-18 19:39:21 · 897 阅读 · 0 评论 -
代码跟踪调试方法
在开发应用软件时,有时候需要考虑怎样代码跟踪调试比较方便,我总结了以下方法:1.采用信息提示框,提示不方便,并且无法实时滚动,有阻塞。2.采用消息+DbgView,优点是提示信息方便,缺点是需要第三方工具配合。3.采用日志文件的形式,可以保存很长时间的运行信息,但是不适用于打印所有信息,因为磁盘容量毕竟有限,只能保存比较重要的运行信息,例如出错信息。4.采用控制台信息打印,优点提示原创 2013-11-18 19:57:56 · 2757 阅读 · 0 评论 -
C 定时器
#include #include #include char user[40]; //alarm 捕捉函数 void catch_alarm ( int sig_num) { printf ("Sorry,time limit reached. /n"); //清除定时器 alarm (0); exit (0); } int m转载 2009-06-30 10:58:00 · 1560 阅读 · 0 评论 -
用VC实现PDF文件的显示
1 PDF介绍 PDF是“Portable Document Format 可移植文档格式”的缩写,它是Adobe公司开发的一种电子文档格式,已经成为国际通用的电子文档交换事实标准。PDF文件可以在各种平台下阅读、编辑、发布。该文件格式支持字体、图像、甚至任何附件的嵌入。 Adobe公司提供了两种软件用于处理PDF文档,分别是Acrobat及Acrobat Reader:前转载 2009-06-23 17:02:00 · 9447 阅读 · 2 评论 -
C语言中的运算符 详细说明
无论是加减乘除还是大于小于,都需要用到运算符,在C语言中的运算符和我们平时用的基本上都差不多。运算符包括赋值运算符、算术运算符、逻辑运算符、位逻辑运算符、位移运算符、关系运算符、自增自减运算符。大多数运算符都是二目运算符,即运算符位于两个表达式之间。单目运算符的意思是运算符作用于单个表达式。(具体什么是表达式下一节再说)一、赋值运算符赋值语句的作用是把某个常量或变量或表达式的值赋值给另一个变量。符转载 2009-06-10 10:43:00 · 1140 阅读 · 0 评论 -
MFC的程序执行顺序
很多刚学MFC的人都会被MFC给弄的晕头转向。以前传统的C语言中的main()不见了,window sdk api 中的WinMain()函数也不见了,到底用MFC编写的程序是如何开始运行的呢?到底MFC有没有遵从最基本的C++的标准呢?到底MFC的代码运行的顺序又是怎么样的呢?那么多个文件,那么多函数,到底哪一个先运行,哪一个后运行,哪一个调用哪一个,哪一个又被哪一个调用(你看晕了吧?那么多“哪转载 2009-06-09 17:30:00 · 796 阅读 · 0 评论 -
MT,MTd,MD,MDd详解解决 MSVCRTD.LIB和LIBCMTD.LIB冲突
转自:https://blog.youkuaiyun.com/rankun1/article/details/51026117项目开发过程中遇到MSVCRTD.LIB和LIBCMTD.LIB的冲突,后来找到原因是代码编译时选择c/c++的运行库版本不一样。于是搞明白了MT,MTd,MD,MDd的区别,问题出现的根源算是明白了。(libc.lib找不到也可以在这里找到答案)先用简单的方式概括一下原因:...转载 2018-08-30 15:02:52 · 273 阅读 · 0 评论 -
代码重构实践之背景
从事代码重构已经很多年,特别是目前手头维护的几个软件,在开始接手时,面临着没有交接、代码基本没有注释、代码风格各种各样,接手该软件的人员也是已经换了2,3波了。总体来看,代码是没有开发经验的人员写的,虽然是用C++编写的代码,但是风格还是C风格。基本没有Class,更加没有面向对象的思想在具体代码中的应用。整个代码逻辑是面向过程的,99%都是结构体的数据结构。维护的人员,可能没有弄懂代码逻辑,...原创 2019-01-26 13:54:19 · 471 阅读 · 0 评论 -
C++【如何避免内存泄露】
前言C++语言以它编程高度灵活性著称,特别是指针。俗话说“指针在手,天下我有”。可是任何事情都不是完美的,有利则有弊。C++把指针交给使用者,则使用者必须时刻注意内存泄露、野指针造成的崩溃等问题。本文在多年的编程经验基础上对如何避免内存泄露进行了总结,希望对大家有所帮助。共享堆对于一些需要分配比较大块的内存,并且大小基本固定的应用,建议软件启动时在创建一块固定大小的“共享堆”;在软件退出...原创 2019-02-28 14:21:26 · 567 阅读 · 0 评论 -
使用InstallShield打包Tomcat+MySql+Jdk的Web运行环境详解
准备下面模块的版本,是实际使用的版本,可以不局限下面的具体版本,主要了解打包的过程。 InstallShield2009 apache-tomcat-6.0.41 mysql-5.7.19-winx64以上软件模块,都可以搜索到,具体地址就不提供了。创建安装批处理文件各个模块的目录结构如下:对于Tomcat,它提供了【bin\service.bat】批处理,执行它可以创建To...原创 2019-02-19 10:09:05 · 2076 阅读 · 4 评论 -
关于通过jdbc导入Mysql表结构后,不重新连接Mysql会出现表级联(cascade)无效不工作的问题
今天发现在Mysql(版本:V5.7.19)上,发现当通过批处理导入新的表结构后,单删除主表时,关联的子表项目没有删除。网上没有查询到相关资料,后来只能在导入新的表结构后,重新实例化一个jdbc。public static DvcsJdbcDao recreateInstance() { ApplicationContext ctx = new ClassPathXm...原创 2019-02-18 15:05:06 · 233 阅读 · 0 评论 -
关于如何清理Tomcat应用的Jsp缓存问题
Tomcat部署应用是非常简单的,只需要把开发好的应用,通过Eclipse的Export出War包后,直接拷贝到webapps的默认目录下后,启动Tomcat即可。但是实际开发中,有时修改了前端的Jsp文件,例如修改了Jsp内的url地址。此时即使重刷浏览器页面也不行,原来Tomcat对应用的Jsp文件编译为class文件,并保存在临时目录“work”下面。此时只有删除该目录下的应用子目录的所...原创 2019-02-18 10:51:18 · 2168 阅读 · 0 评论 -
在已部署Tomcat+MySql+Jdk后,如何打包部署应用
前言前一篇介绍了如何使用InstallShield打包自动部署JavaWeb的运行环境,如果有不了解的,请参考:使用InstallShield打包Tomcat+MySql+Jdk的Web运行环境详解本文主要介绍如何使用InstallShield打包自动部署应用。具体应用是多种多样的,但是打包的思路基本一样的。拷贝文件,系统注册等操作,InstallShield都会替你做了,我们只需要在Ins...原创 2019-02-22 11:39:38 · 774 阅读 · 0 评论 -
Bug?!
作为程序员,遇到Bug是很稀松平常的:)Bug千奇百怪,分很多种,有平台相关的、有第三方工具相关的、有其它人开发的相关模块,当然也有自己的:)在遇到Bug时,不同的人解决办法也是千差万别的。有的人马上感觉很紧张,特别是在接收别人的代码进行维护时,出现了莫名其妙的错误,马上头大。当面临着时间压力时,更加慌不择路。经过几天的调查,例会上,也无法说明Bug的原因,此时人的心态就会发生变化。有的会...原创 2019-01-29 15:09:11 · 168 阅读 · 0 评论 -
代码重构实践之分层重要性
对于大型软件(有效代码量在10万以上)分层很重要。很多人也知道在软件开发中需要分层,但是因为每个人见识不同,差异很大。软件分层,到底依据什么进行分层最合适呢?根据业务逻辑?还是根据软件的功能点?还是根据对接外部的或者提供给外部的接口进行分层?其实这些都不是重点,我觉得最重要的是首先根据需求。如果一个软件离开了具体的需求,具体的应用场景,可能都是空谈,都是海市蜃楼。每种软件都会有其特定的应用场景...原创 2019-01-28 15:03:33 · 843 阅读 · 0 评论 -
代码重构实践之复用改造
怎样识别哪些地方需要重构代码?个人觉得应该有两个层次。第一个层次是直观感觉。例如当你看到很多相似的代码时,肯定是代码的复用没有做好,应该从加强代码复用;当你看到很多全局变量,应该是数据的隐蔽性没有做好,应该需要加强数据隐蔽性;当你看到没有使用类,而是结构体,应该需要加强类的使用频率,因为这样才会对于继承、数据保护、多态、设计模式等高阶的应用开发思想进行更大力度的重构。第二个层次是主观分析。...原创 2019-01-27 12:39:40 · 426 阅读 · 1 评论