
编程技巧
分享编程技巧,共同进步
程序员阿广
一名程序猿,热爱技术,热爱分享
做一名匠人,匠人的世界没有“小事”,要时刻存一颗工匠般的心,去做事,去生活
展开
-
Redis 使用技巧
Redis 现在非常受欢迎,似乎已经成为内存数据存储行业的标准。本人结合平时使用Redis经验,也同时查找了一些网上别人的总结经验,总结以下几条Redis使用技巧。1. 停止使用 KEYS众所周知,key指令可以很方便的读取数据,但是随着redis中key数量的增多,当key数量越大,keys 命令执行越慢,关键是这会阻塞服务器,对单线程的redis来说,简直是就是灾难。用替代命令scan代替:for key in'keys *': doAllTheThings()但是当你有1300万个key原创 2020-10-24 21:17:22 · 267 阅读 · 0 评论 -
Electron、QT和JAVA PC桌面开发技术比较
近几年PC桌面开发越来越多的被Electron,QT和Java技术占领。下面简单比较一下它们的优劣。Electron,势是开发用时快,社区轮子多,整合一下就能用。缺点是打包大,js计算弱。Java,优点就是java本身语言oo特性比较好,适合堆功能特别多的复杂项目,资源比较丰富,但是界面表现能力稍差,对硬件要求不太高,对一些非x86廉价硬件支持较差,与C/C++结合也会稍微麻烦一些,容易踩坑。QT,硬件要求较低一些,可以在更廉价的各种硬件上运行,不过开发成本高一些,本身原生C/C++,比较容易扩展,原创 2020-10-23 22:13:40 · 9068 阅读 · 1 评论 -
STL库(C++11)提供的异步执行方法的方式
在进行并发编程的时候难免会遇到异步执行时候,现代C++标准库提供了几种异步执行的方式,本文收集整理了一下,以备将来翻阅。Thread方式Thread 是STL提供的一种快捷创建线程的方式,极大方便了大家创建异步编程,废话少说直接看一个例子#include <iostream>#include <thread>#include <cmath>#include <functional>#include <future>#include原创 2020-09-13 09:54:52 · 1045 阅读 · 1 评论 -
后端开发之libcurl库编译与安装
curl 是以URL语法来传输输出的一个命令行工具。libcurl 是对对其功能的封装,实现了命令行工具的所有功能。curl 支持HTTP、HTTPS、FTP、FTPS、DICT、TELNET、LDAP、FILE,和GOPHER协议。libcurl 使用C语言编写。本文介绍在Linux,Windows的下的编译方法。这其中会用到cmake,gcc,visual c++ 2017(windows 下msvc方式编译)。下载libcurl源码从GitHub或者Gitee都有镜像可以下载。 git原创 2020-08-30 22:56:26 · 509 阅读 · 0 评论 -
十大经典排序算法
算法概述算法分类十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。算法复杂度排序方法时间复杂度(平均)时间复杂度(最好)时间复杂度(最坏)空间复杂度稳定性插入排序O(n2)O(n^2) O(n2)O(n)O(n) O(n)O(n转载 2020-08-18 21:27:57 · 214 阅读 · 0 评论 -
派生类参数初始化列表和基类构造函数顺序
今天被问到了一个问题,随便回了一句,父类还没有构建,怎么能初始化父类的成员。派生类构造函数的参数初始化列表,为什么不能初始化基类的成员? 例如下面的是不可以的class Rectangle : public Shape { public: Rectangle () : id(1234), name("Rectangle") { // id: 父类Shape成员, name 子类Rectangle成员 } }; 本着严谨的负责态度,说出去的要保证是原创 2020-08-15 16:16:55 · 1731 阅读 · 1 评论 -
经典笔试上机考题-表达式求值
相信参加过笔试面试同学应当见到过表达式求值这道题,下面列举的一道经典的考题,本文将同大家一起细细探讨一下表达式求值这一类问题的求法,希望抛砖引玉,其中有不妥的地方也请大家多多批评指正。/* 功能:四则运算 * 输入:strExpression:字符串格式的算术表达式,如: "3+2*{1+2*[-4/(8-6)+7]}" * 返回:算术表达式的计算结果 */public static int calculate(String strExpression){ /*原创 2020-08-12 11:59:14 · 473 阅读 · 0 评论 -
基类的析构函数为什么要设置成virtual
今天在一场面试过程中碰到这个问题,当时一时片刻没有反应过来,一头雾水。只记得自己回到说,是会造成内存泄露,但面试穷追猛打,一直追问为什么造成内存泄露,还给举例说明,一般情况下是不会造成内存泄露的,搞得场面很尴尬。回来后,心有不甘,上机看看到底存在不存在这个问题。#include <iostream>using namespace std;class Base{ public: Base(){ cout<<"Base::Base"<<原创 2020-08-06 00:06:54 · 285 阅读 · 0 评论 -
计算一年中第几周
一年中多少周初始这个问题,计算方法很简单,罗列如下:w = days/7 + 1就这么简单,剩下的就是怎么求天数了C++在C++标准里面struct tm 规定tm_yday就是一年中多少天数int NumOfWeek(){ time_t t = time(0); tm* lt = localtime(&t); return (lt->tm_yday +1) / 7 + 1;}Java使用Calendar类直接可以得到这个值Calend原创 2020-08-03 16:15:59 · 1953 阅读 · 1 评论 -
360浏览器极速模式和兼容模式
360浏览器极速模式和兼容模式今天再新系统上线后,客户反馈360浏览器问题,查阅了一下资料,特意记录下来,以备后用1、极速模式使用的是Webkit内核,Webkit内核是全球最快速的浏览器内核,同时支持了诸多的网页新标准,但由于Webkit内核较新,国内一些网站尚未较好地支持此内核。2、兼容模式使用的是IE浏览器所使用的 Trident 内核,是国内网页制作时主要兼容的浏览器内核,兼容性问题较少。3、IE9/IE10模式使用的是IE9/IE10浏览器所使用的新内核,加入了硬件加速、全新的脚原创 2020-08-03 16:07:27 · 1026 阅读 · 0 评论 -
让我们一起认识一下Nodejs
NodejsNodejs是一个运行在chrome Javascript运行环境下(俗称GoogleV8引擎)的开发平台,用来方便快捷的创建服务器端网络应用程序。可以把它理解为一个轻量级的JSP或PHP环境,但用来开发Web应用的话,有时要便捷很多。nodejs 有两个优点:处理并行访问发挥JS脚本语言在动态编程上优势,可以在服务器与浏览器端建立直接的动态程序Node.js 使用事件驱动,非阻塞IO模型而得以轻量和高效,非常适合于部署在分布式设备上实时应用。闲话少说,来点实际的,就拿大家学习原创 2020-08-03 15:16:02 · 152 阅读 · 0 评论 -
Visual Studio 中文显示乱码问题
今天在码云上Fork了一个开源工程,编译环境是Visual Studio C++, 由于自己本地平台主要是进行Linux开发,平时文档编码格式都是utf-8的,编译没问题,但运行起来就是乱码,就像下图一样。碰到这个问题,根据经验很确定就是文件编码问题,于是使用工具,将工程文件批量进行转码,由GB2312变换到utf-8。设置完成后标题栏中文正常显示了,但是里面输入文字,例如:AfxMessageBox(_T("加载Duilib属性文件失败!"));显示仍然是乱码,于是乎想到了翻阅MSDN, 终于查原创 2020-08-03 11:44:35 · 5400 阅读 · 1 评论