
ningto.com
ningto.com
个人站点:https://ningto.com
展开
-
类模板之栈
//myStack.h#ifndef _TEMP_STACK_H_#define _TEMP_STACK_H_template class CMyStack{public: CMyStack(short num); ~CMyStack(); void MyPush(T value); T MyPop(); bool IsEmpty(); bool HasEle原创 2011-01-19 22:02:00 · 896 阅读 · 0 评论 -
可变参数
那天无意中发现这个帖子,感觉写的不错,那到这里来,给大家共享一下(非常抱歉原地址忘记了)! 某些情况下希望函数的参数个数可以根据需要确定。典型的例子有大家熟悉的函数printf()、scanf()和系统调用execl()等。那么它们是怎样实现的呢?C编译器通常提供了一系列处理这种情况的宏,以屏蔽不同的硬件平台造成的差异,增加程序的可移植性。这些宏包括va_start、va_转载 2011-01-18 09:31:00 · 695 阅读 · 0 评论 -
依赖 关联 聚合 组合 泛化
世界是普遍联系的,因此程序世界中的类,也不可能是孤立的。 UML 为我们定义了它们之间的关系,就是:依赖、关联、聚合、组合还有泛化。 泛化关系比较好理解,就是表示类之间的继承关系。容易混淆的是依赖、关联、聚合和组合的关系。这里做一些甄别:原创 2011-01-17 10:32:00 · 1157 阅读 · 0 评论 -
scanf、sscanf中的正则表达式
1、定制自己的扫描集 %[abc]、%[a-z]、%[^abc]、%[^a-z],比isdigit()、isalpha()更加灵活。[]内是匹配的字符,^表示求反集。int i;char str[80], str2[80];// scanf("%d%[abc]%s", &i, str, str2); // printf("%d %s %s/n",i,str,str2);// scanf(转载 2011-01-14 18:09:00 · 18839 阅读 · 1 评论 -
分离WinMain中传进来的字符串
我们知道WinMain函数是可以接受外部字符串的, 但是它获取的是整个字符串,如果要获取多个字符串, 就必须把源字符串分离开, 下面是MSDN里介绍的方法:#include #include #include int __cdecl main(){ LPWSTR *szArglist; int nArgs; int i; szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs); if( NUL原创 2011-01-14 10:25:00 · 900 阅读 · 0 评论 -
WTL自画按钮与文件对话框
//////////////WTL自画按钮/////////////////class CBmpEixtBtn : public CBitmapButtonImpl{public: DECLARE_WND_SUPERCLASS(_T("WTL_BmpBtn"), GetWndClassName()) // added border style (auto3d_single) CBmpEixtBtn(DWORD dwExtendedStyle = BMPBTN_AUTOSIZE /*|原创 2011-01-14 10:11:00 · 1840 阅读 · 0 评论 -
Win32 API笔记
1>创建一个非模式对话框:HWND hDlg;hDlg = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), hwnd, AboutDlgProc);//IDD_DIALOG1为资源文件中的对话框IDShowWindow(hDlg, SW_SHOW); 2>创建一个静态文本控件:HWND hStaticLabel;h原创 2011-01-12 10:43:00 · 1867 阅读 · 1 评论 -
gtk改变button的字体大小
pango可以改变gtk中label的字体(我安装gtk后里面就包含了pango), 但是对于GtkButton上显示的字体却不能直接改变的。我自己想出来的一种方法是:取出GtkButton里面的label, 再来更改这个label就可以了, 代码如下:GtkWidget *labelChild;PangoFontDescription *font;wshort fontSize = 25;font = pango_font_description_from_string("原创 2011-01-09 20:33:00 · 4902 阅读 · 2 评论 -
const用法
const允许你指定一个语义约束(也就是指定一个“不该被改动”的对象),而编译器会强制实施这项约束。它允许你告诉编译器和其他程序员某值应该保持不变。编程时如果需要保持某个值不变, 你就应该用const, 这样编译器就会确保这条约束不被违反。void func(int * const val)//地址不能变(*(val++)); //错误, 地址改变了*val = 100; //正确, 值改变了void func(const int * val)//所指的值不能变void func(i原创 2011-01-04 23:08:00 · 921 阅读 · 1 评论 -
gtk窗口拖动
1.实现按下鼠标左键拖动窗口1>加入事件:gtk_widget_add_events(window, GDK_BUTTON_PRESS_MASK);2>关联信号与button按下的事件:g_signal_connect(G_OBJECT(window), "button-press-event", G_CALLBACK(window_drag), NULL);3>窗口拖动事件的实现:gboolean window_drag(GtkWidget *widget, GdkEventButton *event原创 2010-12-31 11:00:00 · 3217 阅读 · 2 评论 -
拷贝构造与赋值操作(string实例)
拷贝构造和赋值这两个操作总是被成对地声明并且兼容,为什么要自定义这两个操作呢?看下面的例子。// MyString.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include class MyString{原创 2010-12-28 19:03:00 · 2010 阅读 · 0 评论 -
宽字符函数与普通C函数
字符分类:宽字符函数普通C函数描述iswalnum()isalnum()测试字符是否为数字或字母iswalpha()isalpha()测试字符是否是字母iswcntrl()iscntrl()测试字符是否是控制符iswdigit()isdigit()测试字符是否为数字iswgraph()isgraph()测试字符是否是可见字符iswlower()islower()测试字符是否是小写字符iswprint()isprint()测试字符是否是可打印字符iswpunct()ispunct()测试字符是否是标点符号is转载 2010-12-28 16:42:00 · 1302 阅读 · 0 评论 -
const_cast、static_cast、reinterpret_cast、dynamic_cast
1.const_cast:const Person *getEmployee() { ... }Person *anEmployee = const_cast(getEmployee());使用const_cast来剥除getEmployee返回类型中的const修饰符。2.static_cast:Shape *sp = new Circle;//子类转换为父类不需要说明Circle *cp = static_cast(sp);//父类转换为子类要进行显示说明可以这样说:圆是形状中的一种, 但是形状原创 2010-12-27 21:03:00 · 967 阅读 · 0 评论 -
今天开始决定写博客
其实很早就想写博客了,可是由于种种原因和人天生的惰性最终都没有写成。 参加工作已经半年了, 今天开始决定写博客记录下今后的工作学习历程, 希望几年甚至若干年后再看到这些文章时能会回想起当初的心情和状况, 现在用我喜欢的一位诗人(汪国真)的诗与大家一起共勉。《热爱生命》 ——汪国真我不去想是否能够成功 既然选择了远方 便只顾风雨兼程 我不去想能否赢得爱情 既然钟情于玫瑰 就勇敢地吐露真诚 我不去想身后会不会袭来寒风冷雨 既然目标是地平线 留给世原创 2010-12-26 13:49:00 · 728 阅读 · 0 评论 -
fetch跨域post,后端express
使用fetch中的post方法进行跨域请求,前提是后端是我们自己写的,比如用的框架是express。首先在express中设置支持跨域,然后使用fetch的时候注意参数的填写。这里我们向后端post json数据。fetch post写法如下export function postData(url, json) { return fetch(url, { method: 'POST',原创 2017-08-23 20:29:48 · 1759 阅读 · 0 评论 -
js库支持CommonJs和浏览器的标准写法
现在github上的很多开源js库都同时支持CommonJs和浏览器,简单的介绍一下写法。如有两个库A.js和B.js,B.js引用了A.js,如果我们要使用B.js库,那应该怎么写呢?A.js源码(function(global, factory) { /* CommonJS */ if (typeof require === 'function' && typeof module ===原创 2017-08-23 20:29:27 · 3480 阅读 · 0 评论 -
react判断滚动到底部以及保持原来的滚动位置
这里解决两个问题: * 判断某个组件是否滚动到底部 * 页面切换出去再切换回来后怎样保持之前的滚动位置 要保证这个组件就是那个滚动的组件,overflowY为scroll 判断某个组件是否滚动到底部组件代码如下,通过ref获取真实的dom节点<div ref={ node => this.contentNode = node }>在组件加载完成后增加监听scroll事件,组件将要卸原创 2017-08-23 20:29:05 · 21230 阅读 · 2 评论 -
使用flex固定头部和底部中间滚动
使用flex固定头部和底部中间滚动关键点: * root纵向布局高度充满整个浏览器界面并且隐藏滚动条 * content设置滚动,flex设置1,否则当所有item的高度太小时footer会离开底部 * item设置高度后,必须设置flexShrink为0,否则当所有item高度超过content高度时item会被压缩掉 ‘100vh’浏览器视口高度的百分比,这里是100%; fle原创 2017-08-23 20:28:39 · 4942 阅读 · 0 评论 -
nodejs根据url下载图片存储到当前目录
nodejs根据url下载图片存储到当前目录 开发的过程中有时候需要一些图片资源,但是在浏览器上输入url一个一个的去下载太慢了 使用nodejs很简单就可以把它们下载到本地目录并且保存原始的名字 。模块安装: npm install request –savevar request = require('request')var fs = require('fs')const imag原创 2017-08-23 20:28:12 · 8820 阅读 · 0 评论 -
javascript原型和继承
原文链接对象和类javascript到处都是对象,一个对象是由方法和属性(值)组成的实体(这里我们叫实例)。例如:javascript中的数组就是一个具有值的对象,同时也包括了push,reverse和pop等方法。var aArray = [1, 2, 3];aArray.push(3);aArray.reverse();aArray.pop();var length = aArray.l原创 2017-07-02 11:38:53 · 442 阅读 · 0 评论 -
qDebug日志写入本地文件
原文链接在Qt中使用qDebug打印日志信息是非常方便的,它可以直接打印Qt提供的复杂数据结构,如:QStringList,QVariantMap等。不做处理的话它只能在编辑器中打印调试信息,下面介绍将日志信息写入文件的实现方法。static struct LogWrap { LogWrap::LogWrap() { reset(); } LogWrap::~LogWrap() {原创 2017-07-02 11:38:13 · 3122 阅读 · 0 评论 -
javascript怎么实现类似如C++函数中使用静态数据
原文链接静态数据是一些不变的数据可以多次使用而不用频繁创建,C++中通常把他们放在cpp文件的include下面,或者如果其他地方不会用到的话可以直接写在要用到的函数里面。如果是javascript的话把它直接写在函数外面就是全局变量了这个肯定是不好的,放在函数里面每次运行函数的时候都会构建这个对象对运行时是有损耗的,那应该放到哪里呢?先看C++的通常做法:// xxx.cppstatic std原创 2017-07-02 11:37:07 · 423 阅读 · 0 评论 -
网页聊天气泡效果实现
原文链接模板收发消息模板(使用ejs),可以认为发消息在右边显示,收消息在左边显示。 每条消息有三部分组成:头像、名字、聊天内容。 头像和名字垂直布局,尖角和消息水平布局,消息整体水平布局,左边消息左对齐,右边消息右对齐,最后是调整各元素之间的间距。<script id="left-message-template" type="text/template"> <div class="l原创 2017-07-02 11:35:17 · 2598 阅读 · 0 评论 -
Robomongo连接远程MongoDB数据库
修改远程服务器上mongodb配置打开/etc/mongodb.conf配置文件将bind_ip注释起来,如:#bind_ip = 127.0.0.1创建管理员用户mongouse admindb.createUser({user:"admin",pwd:"admin",roles:[{"role":"userAdminAnyDatabase","db":"admin"}]})// 重启服务原创 2017-06-02 09:05:15 · 12770 阅读 · 1 评论 -
bootstrap 有省略点才显示tooltip
让太长的文本显示省略点如果table中的td内容太长了可以使用省略点,给td标签增加如下类:.autocut { max-width:180px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; -o-text-overflow:ellipsis; -icab-text-over原创 2017-06-02 09:03:46 · 4193 阅读 · 0 评论 -
CHROME开发者工具的小技巧
转载自:酷 壳 – CoolShellChrome的开发者工具是个很强大的东西,相信程序员们都不会陌生,不过有些小功能可能并不为大众所知,所以,写下这篇文章罗列一下可能你所不知道的功能,有的功能可能会比较实用,有的则不一定,也欢迎大家补充交流。 话不多话,我们开始。代码格式化有很多css/js的代码都会被 minify 掉,你可以点击代码窗口左下角的那个 { } 标签,chrome会帮你给格式化转载 2017-06-02 09:03:13 · 500 阅读 · 0 评论 -
css中position属性(absolute|relative|static|fixed)详解
转载自:脚本之家我们先来看看CSS3 Api中对position属性的相关定义static:无特殊定位,对象遵循正常文档流。top,right,bottom,left等属性不会被应用relative:对象遵循正常文档流,但将依据top,right,bottom,left等属性在正常文档流中偏移位置。而其层叠通过z-index属性定义。absolute:对象脱离正常文档流,使用top,right原创 2017-06-02 09:02:24 · 543 阅读 · 0 评论 -
无法定位程序输入点strnlen于动态链接库msvcrt.dll上(Qt XP)
Qt应用程序在XP(sp3)系统上出现上述错误使用的Qt版本是5.6.2,我的应用程序中包含D3Dcompiler_47.dll和opengl32sw.dll解决方法1:移除D3Dcompiler_47.dll文件只使用opengl32sw.dll是可以的解决方法2:毕竟xp现在用的人比较少,方法1为了适应xp而移除文件总感觉有些隐患(这些依赖库是通过windeployqt.exe工具打包来的)。原创 2017-06-02 09:01:28 · 6844 阅读 · 0 评论 -
QWebEngineView支持XP
Qt应用程序中如果用到了QWebEngineView组件,在XP上是有问题的。现象是网页内容显示不出来,直接运行QtWebEngineProcess.exe发现是起不来的,解决办法是下载Qt源码自己编译这个文件。 好在编译QtWebEngineProcess.exe比起编译整个Qt源码简单多了下载Qt源码我用的Qt版本是5.6.2,地址是:http://download.qt.io/offic原创 2017-06-02 09:00:49 · 3208 阅读 · 9 评论 -
Material-UI FontIcon组件使用
material-ui是一款优秀的react组件库,目前在github上Star数已经达到了25759个。其中FontIcon组件包含了900多个系统图标,但是在使用的过程中你会发现图标显示不出来,解决方法如下:到这个地址https://fonts.gstatic.com/s/materialicons/v22/2fcrYFNaTjcS6g4U3t-Y5ZjZjT5FdEJ140U2DJYC3mY原创 2017-06-02 08:59:26 · 3312 阅读 · 0 评论 -
QtCharts源码编译安装
Qt Charts module provides a set of easy to use chart components. It uses the Qt Graphics View Framework, therefore charts can be easily integrated to modern user interfaces. Qt Charts can be used as QW原创 2017-04-14 21:46:17 · 5282 阅读 · 2 评论 -
nginx配置nodejs服务二级域名
目前有一个域名sanjiadian.net在它的基础上增加几个二级域名,通过二级域名访问新的nodejs服务。增加二级域名在阿里云中的域名服务中找到sanjiadian.net域名点击后面的解析,添加解析,tools,api,chat就是二级域名 nginx配置主域名指向端口为3000的nodejs服务,在nginx/conf.d下增加文件sanjiadian.conf(一定要使用conf后缀名)原创 2017-04-14 21:45:11 · 3966 阅读 · 0 评论 -
浏览器同源政策及其规避方法
浏览器同源政策及其规避方法浏览器安全的基石是”同源政策”(same-origin policy)。很多开发者都知道这一点,但了解得不全面。 本文详细介绍”同源政策”的各个方面,以及如何规避它。概述含义1995年,同源政策由 Netscape 公司引入浏览器。目前,所有浏览器都实行这个政策。 最初,它的含义是指,A网页设置的 Cookie,B网页不能打开,除非这两个网页”同源”。所谓”同源”指的是转载 2017-04-14 21:44:05 · 342 阅读 · 0 评论 -
简单实现网页登录框中的“记住我”
登录框中通常有一个“记住我”的checkbox按钮,它是用来记住当前用户输入的用户名和密码,下次用户再次登录的时候就不用重新输入直接点击登录就可以了(现在很多浏览器自身就带有这样的功能)。在公用电脑上勾选“记住我”是很危险的,在个人电脑上可以给用户提供很多方便。简单的实现使用Cookie就可以了。简单介绍一下Cookie和Session,详细参考:Cookie/Session机制详解Cookie机制原创 2017-04-14 21:43:02 · 12134 阅读 · 1 评论 -
QWidget QLabel没有响应keyEvent键盘事件
在Qt中我们经常通过重写下面两种虚函数来实现按键事件virtual void keyPressEvent(QKeyEvent *event);bool eventFilter(QObject* watched, QEvent* event);但是有时候会遇到无法触发的情况(特别是QWidget,QLabel),这个时候我们会考虑是不是被父窗口给截获了没有传递给子窗口。如果依旧没有解决问题,那可能是这个widget没有焦点的缘故,通常可以通过鼠标点击和tab键可以获取焦点,但是像QWidget、QL原创 2021-01-12 07:55:18 · 2070 阅读 · 0 评论 -
golang 控制goroutine调度顺序
使用go关键字就可以很容易的启动一个goroutine,启动后他们的执行顺序是不能保证的。如果有多个goroutine,怎样按照我想要的顺序来执行呢?如:a1在b1和c1后面执行(b1和c1都执行完a1才能执行)d1在a1后面执行(d1执行完才能执行a1)e1在b1或者c1后面执行(b1或者c1有一个执行完就可以执行e1)下面代码演示了怎样解决上面问题:event/event.gopackage eventimport ( "reflect" "sync" "sync/atomi原创 2021-01-12 07:54:03 · 1011 阅读 · 0 评论 -
多线程锁key处理
目的是要保证多个线程处理同一个key的消息时是线程安全的,同时是顺序的。收到网络过来的消息,将消息缓存到total msg cache里解析业务消息找到每条数据的key(可能一条或多条)存储在set中将所有key进行hash,对最大线程数进行取余,获取所有线程索引std::set indexList如果消息没有index即没有key,就轮询分发给otherThread处理有index的消息,根据index分发给线程,如果一个消息有多个index,对应的一个消息会分发给多个线程(keyThread原创 2021-01-12 07:52:29 · 438 阅读 · 1 评论 -
log4cxx OutputDebugString DebugView dbgview
log4cxx常用appender有ConsoleAppender输出到控制台,RollingFileAppender输出到文件。在GUI程序中使用log4cxx时,要想能实时看到输出日志一般用windows函数OutputDebugString,log4cxx console appender是显示不出来的。所以如果log4cxx的日志能向OutputDebugString一样输出就好了,没想到还真有这样一个appender,如下配置就能实现了,这样就可以用vs输出窗口或者DebugView工具实时看原创 2021-01-12 07:51:10 · 284 阅读 · 0 评论 -
sqlite3 安装、开发
SQLite is a C-language library that implements a small, fast, self-contained, high-reliability, full-featured, SQL database engine. SQLite is the most used database engine in the world. SQLite is built into all mobile phones and most computers and comes bu原创 2021-01-12 07:50:22 · 348 阅读 · 0 评论 -
qt.network.ssl: QSslSocket Qt支持SSL https
Qt使用QNetworkAccessManager类时默认是不支持https协议的,需要增加openssl动态库。我发现新版本的Qt和老版本的Qt所需要的openssl库的名字竟然不一样。老的是:libeay32.dll、ssleay32.dll新的是:libcrypto-1_1.dll、libssl-1_1.dll具体的文件可以在QtCreator包里面去找。...原创 2021-01-12 07:48:54 · 410 阅读 · 0 评论