- 博客(160)
- 资源 (3)
- 收藏
- 关注
原创 go语言开发之路(1)安装
下载最新的安装包: go1.14.2.linux-amd64.tar.gz# tar -xzvf go1.14.2.linux-amd64.tar.gz得到目录 go# mv go /usr/local/修改 /etc/profile 最后面加上export GOPATH=/mnt/win/goexport GOROOT=/usr/local/goexport PATH=$PATH:$GOROOT/bin:$GOPATH/bin值得注意的是:GOPATH 可以..
2020-05-10 23:07:07
396
原创 Linux下C++开发环境搭建,最佳方案
以前,曾经写过用Qt在纯Linux下开发,作为编辑器使用,现在随着vscode逐渐成熟,是时候与时俱进了。截止2020年4月,纯Linux下,写C/C++代码的最佳开发环境就是:vscodevscode方便到什么程度,只需要添加几个插件,就可以完美支持:(1)代码跳转(2)自动补全(3)自动生成代码实现对于任何语言的开发者来说,有以上3点功能的编辑器,就足以了。无...
2020-04-12 21:45:18
4545
原创 C/C++ 尖括号找不到头文件的问题
写代码,编译的问题:fatal error: common/openssl/e_os2.h: No such file or directorycommon是项目公共的头文件目录这个目录内部很多文件,有时候包含目录内的其他头文件,是这样用的#include <common/openssl/e_os2.h>而makefile里面,是这样写的INC = -I ../...
2019-10-27 15:23:25
1560
原创 c++可继承的单例模式
#ifndef _SINGLETON_H#define _SINGLETON_Htemplate<class T>class Singleton{protected: Singleton(){}private: Singleton(const Singleton& s); Singleton& operator = (Singleton&am...
2018-12-11 14:50:59
3110
原创 Shell脚本中的:=是什么意思
Shell脚本中的:=是什么意思前言解读结论前言有时候, 我们使用/阅读 shell 脚本时, 会遇到一种用法 :=例如 newvar=${var:=“hello”}那么, 这个 := 到底是啥意思?解读#!/bin/bashvar=123echo ${var:="999"}unset varecho ${var:="888"}输出结果:123888结论...
2018-12-08 19:31:44
18165
2
原创 c++的函数参数是一个函数的返回值
例如下面的代码:int funx(){ return 99;}int testfunc(int x, int y = funx()){ return x + y;}int main() { int u = testfunc(1); cout << "u = " << u << endl; int x = 0; c...
2018-12-04 22:17:19
645
原创 Win10无法访问Samba共享文件夹【解决方案】
相信不少人,已经被这个问题困住了,解决方案如下:1. 进入“控制面板”,进入“程序和功能“2、选择“启用或关闭Windows功能”3、在功能列表中确保选中“SMB1.0/CIFS文件共享支持”,然后确定安装,重新启动电脑即可生效。 4、然后就可以正常访问NAS里面的共享文件了 通过以上方法,我们就可以让Win10系统重新可以访问Samba共享文件夹...
2018-11-10 21:59:55
75644
7
原创 从面向对象编程转为面向接口编程
大家写过C++或者Java,或者其他语言,基本上都会接触到面向对象这个概念。面向对象,本身是软件编程发展过程中的产物,当然相比于面向过程,是一种突破性的设计。但是,如果只是停留在面向对象编程,而不是继续向前看。那么,无疑是一种固步自封的陷阱。更加先进的编程思想是什么呢?就是面向接口编程。 这里,涉及到一个哲学问题。到底是以类型封装特征,还是以特征成就类型。如果是前者,以类型...
2018-08-19 01:48:07
2506
2
原创 CentOS7 无法启动,enter emergency mode 报错 Failed to mount /sysroot 解决方法
CentOS7 无法启动,进入紧急模式,enter emergency mode根据提示查看日志,发现报错:Failed to mount /sysroot根据,老外的网站提供的线索:执行这个命令# xfs_repair -v -L /dev/dm-0然后,就修复了,再reboot,就OK ...
2018-07-18 11:22:59
23129
12
原创 Android动态申请权限的方法和代码
1.在manifest里面,添加以下内容 <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission an...
2018-06-22 00:56:06
1986
1
转载 Linux下Socket连接超时的一种实现方法
Linux下Socket连接超时的一种实现方法天新网 【转载】 2009年03月24日 18:50目前各平台通用的设置套接字(Socket)连接超时的办法是:创建套接字,将其设置成非阻塞状态。调用connect连接对端主机,如果失败,判断当时的errno是否为EINPROGRESS,也就是说是不是连接正在进行中,如果是,转到步骤3,如果不是,返回错误
2018-02-04 15:09:50
1050
原创 GLIBC_2.17 not found 解决办法
这个答案是来自stackoverflow: https://stackoverflow.com/questions/19471683/lib-libc-so-6-version-glibc-2-17-not-found亲测可用:1. Download 64 bit package from this sitehttps://launchp
2017-12-29 10:20:32
5235
原创 CMake 链接第三方的库 和 添加C++11的支持
这里的例子, 是链接libev , 如下:我的CMake 版本是3.10# CMake 最低版本号要求cmake_minimum_required (VERSION 2.8)# 项目信息project (server)# 查找当前目录下的所有源文件# 并将名称保存到 DIR_SRCS 变量aux_source_directory(. DIR_SRCS)# 添加第三方
2017-12-06 17:17:58
16675
4
原创 最爽的Linux下C++开发环境
在经历了, makefile开发C/C++, 文本编辑器的自我陶醉之后, 还是希望有个VS那样的IDE, 来的痛快啊.今天, 无意中发现了一个最爽的Linux下C++开发环境.Linux环境 + Qt5.9 + CMake使用方法:1.新建CMakeLists.txt2.填写常规的内容,到CMakeLists.txt, 例如这样的内容:# CMake
2017-12-06 15:51:55
25797
原创 Fatal signal 11 (SIGSEGV), code 2, fault addr 0x9ff811c0 in tid 28902
一.前言调试安卓程序的so库,由于库是自己写的,经常性崩溃,我很苦恼,花了好几天时间解决问题。二.解决方案检查每一个malloc和free的配对关系。检查每一个内存的开辟和释放。尤其注意一些容器,例如list的节点创建和释放。
2017-10-30 17:14:43
15381
原创 cannot open shared object file: No such file or directory
一. 前言c语言编程, 希望调用动态链接库, 即 libxxx.so 文件, 编译好之后, 运行失败, 爆出如下错误:# ./test: error while loading shared libraries: libxxx.so: cannot open shared object file: No such file or directory二. 故障原因由于系统找不
2017-10-26 17:04:11
2405
原创 signal 11 (SIGSEGV),code 1,fault addr 0x0 和 Fatal signal 6 (SIGABRT), code -6 in tid 7061
第一个问题 : signal 11 (SIGSEGV),code 1,fault addr 0x0[解决方案]:在自定义view的布局标签加了一句关闭硬件加速的代码:android:layerType="software"第二个问题: Fatal signal 6 (SIGABRT), code -6 in tid 7061[解决方案]:这是一个
2017-10-17 18:05:18
14025
1
原创 安卓开发报错 heap corruption detected by dlfree
1.前言在调试安卓app的过程中,用到了JNI,即使用了C代码生成的so动态库.在运行过程中,报错如下:A/libc: heap corruption detected by dlfreeA/libc: Fatal signal 6 (SIGABRT) at 0x00001a0a (code=-6), thread 7079 (xxxx)2.解决方案根据
2017-09-28 17:25:48
4478
原创 编译JNI的动态库, 遇到的坑
一.前言最近工作中,需要编译JNI的动态库.这个动态库,要被Java调用.JNI的定义,在维基百科[1]中这样介绍:当你遇到一些情况, 不能完全使用Java语言完成开发的时候, JNI允许程序员编写native methods去解决问题. 很多特定的平台特征和标准库都是基于JNI开发的(PS:图像处理领域,很多都是C/C++开发的库,例如opencv). Java程序通过JNI
2017-09-21 20:58:33
8177
5
原创 函数指针,才是一切一切的根基
1. 前言最近工作中,在干一件事情,就是打通从安卓的java代码,到JNI,最后到server端的C代码。当然这个过程,早已有大神们做好了,我只是根据当前的业务需要,定制化的实现这个过程。那这和函数指针,有啥关系呢?请先看程序和内存的关联关系。2. C语言中的内存布局C语言的内存布局[1], 如下图所示:任何一个C语言可执行程
2017-09-06 23:48:17
462
原创 函数指针在结构体中的赋值方法
一、定义了一个结构体struct abc{int (*a)();int (*b)();int (*c)();};要给这些函数指针成员赋值struct abc abcd={.a=fun1,.b=fun2,.c=fun3,};二、#include
2017-08-10 11:23:10
4939
原创 No symbol table is loaded. Use the "file" command 解决方案
一般来说,如果没加 -g,就加上。如果加了,还不行,就是如下原因:makefile 的编译后面加了什么语句, 把刚加的载“符号表文件”给去掉了也有可能. 比如 strip $@ 等。
2017-08-09 20:16:13
3672
原创 经典C语言的makefile
----------------------------------------------------------------TARGET = serverLIBS = CC = gccCFLAGS = -g -Wall.PHONY: default all cleandefault: $(TARGET)all: defaultOBJECT
2017-08-08 17:21:59
400
转载 tcp接收策略
策略:首先,接收一个长度。然后,根据长度再继续接收数据。最近在调程序的时候,发现发送端发送一个119136个char的内存的时候,在接收端不能全部接收,于是,通过调试发现,必须在接收端多次的recv以后,进行拼接:代码如下:char Lenbuf[4]; int iLen; //接收数据
2017-08-03 11:25:09
893
1
原创 redis源码调试方法
最近,一直在看redis源码,还是调试来的直接啊!0. redis版本4.0.1 版本1. 调试工具GDB调试工具2. 调试入口server.c : int main(int argc, char **argv) , 1645行 3. 调试方法(1)gdb调试,已经运行的
2017-07-31 17:57:40
2632
原创 Qt5最快最好的程序发布方法——windeployqt
Qt5 最快最好的发布方法:windeployqt生成的程序运行正常之后,找到项目的生成目录,比如 项目源码路径:C:\QtPros\hellomw\它的项目生成目录是C:\QtPros\build-hellomw-Desktop_Qt_5_4_0_MinGW_32bit-Release\进入这个文件夹,在进入它的子文件夹 release 里面,找到 hello
2017-06-27 12:59:32
3968
1
原创 Qt5中文乱码问题,解决
环境:Win7_x64, MSVC 2012 ,Qt 5.2setCodecForTr在qt5版本以后就不建议使用了,因为qt5以后强制要求其源码为utf8编码,不再需要进行编码转换了的。而且qt本身支持unicode,运行时也是可以正确显示多国语言的。至于你在代码中写入的中文,可以解决:QString a=QStringLiteral("汉语");
2017-06-27 09:21:58
460
转载 Qt中关于undefined reference to `vtable for classname`的问题
转自:http://blog.youkuaiyun.com/qian_f/article/details/8498747在Qt中自定义了类classname,想要使用Qt自带的信号与槽机制,所以必须要将classname继承于QObject。class classname : public QObject{ Q_OBJECTpublic: .......
2017-06-26 16:22:05
420
原创 发现了string的bug,当拼接大量字符串的时候,会自动换行
C++的代码问题最近工作中,要拼接字符串,想一次性入库1000条记录。但是,拼接string之后,入库失败,说是有语法错误。百思不得其解。后来发现,是拼接之后,string居然自动在一些地方换行了,真是无语啊!【解决方案】首先,执行 string.resize() ,申请足够大的内存空间,然后再拼接,这样就不会有换行了。...
2017-06-24 16:19:35
7113
2
原创 Qt遍历目录的所有文件,并过滤后缀名
遍历目录下所有文件,并过滤后缀名,最后打印完整的文件路径直接上代码://判断路径是否存在 QDir dir(path); if(!dir.exists()) { return; } QStringList filters; filters << QString("*.xls"); dir.setF
2017-06-21 13:29:49
11038
原创 Qt读取excel的代码,已经封装好了
直接上代码,直接用就行。记得改文件名即可。QAxObject* excel = new QAxObject("Excel.Application"); excel->setProperty("Visible", false); QAxObject* workbooks = excel->querySubObject("WorkBooks"); workbooks
2017-06-19 16:34:47
11204
2
原创 去百度面试运维开发
今天,去百度,面试运维开发。本来以为,我干过运维,也干过开发,履历应该是很匹配。结果遇到一个装逼的人,拼命装逼,你越是谦虚,他就越是得意,装得忘乎所以。珍爱生命,原理百度!
2017-06-14 00:09:44
1560
原创 最小二乘法的C语言实现
1. 前言最近断断续续看了一些数学书,有高等数学,也有初等数学,有科普的,有微积分的。有时候,觉得数学才是世界上最美的东西,但有时候又觉得数学很高冷,不接地气。不过,前段时间工作中用到了最小二乘法,让我又对数学有了新的理解。理论指导实践的意义,就在于此。2. 最小二乘法根据维基百科的说明:最小二乘法(又称最小平方法)是
2017-06-07 13:07:59
50476
5
原创 QCustomPlot的使用方法
1. 官网下载去官网下载,最新的版本,地址:http://www.qcustomplot.com/目前最新的是2.0.0 Beta版本,使用起来和老版差不多。2. 使用方法(1)将压缩包解压,得到2个文件:qcustomplot.h 和 qcustomplot.cpp,放入项目文件夹。(2)如下图所示,在pro文件里,
2017-05-26 14:15:56
4750
1
原创 Linux下网络编程(3)——进程间通信(IPC),共享内存,传递结构体数据
1. 前言多进程,总有一些交互要做,不可能完成独立。这里是最简单的例子。一个写入,一个读取。一个建立共享内存,写入数据。一个读取共享内存的内容。2. 代码twriter.cpp 代码如下:#include#include#include#include#includeint main(){ int shm_id;
2017-05-25 11:36:22
3560
2
原创 一共有20级楼梯,每次可以上1级或2级,登上第20级一共有多少种上法
1. 分析上第1级: 1种上法上第2级: 2种上法上第3级: 3种上法 3 = 2 + 1上第4级: 5种上法 5 = 3 + 2上第5级: 8种上法 8 = 5 + 3...1,2,3,5,8, ...从第3级楼梯开始,每级楼梯的上法等于之前两级楼梯上法的和。由此构成斐波那契数列,登上第20级台阶种类数即为该数列第二十项的数值,经计算为1
2017-05-23 21:24:35
32748
原创 Linux下网络编程(2)——TCP多连接,1个server,多个client
1. 前言本次使用TCP连接,1个server,多个client。server和多个client之间,可以互相发送消息。2. 代码tcp_sever_fork.cpp 如下:#include #include #include #include #include #include #include #include #include
2017-05-23 15:55:23
15002
6
原创 Linux下网络编程(1)——最简单TCP server/client例子
1. 前言这是最简单的网络编程例子,一个服务端,一个客户端。环境:CentOS 6.7 64位,GCC 4.8.52. 代码2.1 服务端代码——tcpserver.cpp#include #include #include #include #include #include #include #include #include #
2017-05-22 01:33:29
2384
原创 C/C++ 将 字符串 赋给char[]
将 字符串 赋给char[] :/* code not tested */#include int main(void) { char *src = "gkjsdh fkdshfkjsdhfksdjghf ewi7tr weigrfdhf gsdjfsd jfgsdjf gsdjfgwe"; char dst[10]; /* not enough for all o
2017-05-20 14:58:05
4018
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人