- 博客(56)
- 资源 (5)
- 问答 (1)
- 收藏
- 关注
原创 C++打印内存数据
参照gdb的风格, 逐字节打印,同时打印10进制无符号和16进制,一行打印8字节其中int vscnprintf(char *buf, size_t size, const char *fmt, va_list args)int scnprintf(char *buf, size_t size, const char *fmt, ...)两个函数是从Linux内核源码复制的直接上完整代码:#include <cstdio>#include <cstdarg&
2021-01-17 00:26:08
2137
原创 MySQL删除所有表
1.使用CONCAT函数连接组成删除语句MariaDB [wiki_db]> select concat('drop table if exists ',table_name,';') from information_schema.tables where table_schema='wiki_db';+--------------------------------------------------+| concat('drop table if exists ',table_name
2020-12-05 14:23:37
372
原创 求两有序数组的中位数
给定两个大小为 m 和 n 的正序(从小到大)数组nums1和nums2找出并返回这两个正序数组的中位数时间复杂度O(log(m+n))解法:二分法查找public class Main { public static void main(String[] args) { Solution solution = new Solution(); int[] nums1 = {1,3,7,9}; int[] nums2 = {4,6,7}; System.out.pri...
2020-10-23 22:54:24
241
原创 C++和Java性能比较, GCC和clang性能比较
下面的图表是对1万个整数进行排序的耗时比较,C++和Java算法代码几乎完全一致,C++编译器使用了GCC,clang和VC++14.25(VS2019)。比较的算法有:冒泡排序,鸡尾酒排序,插入排序,二分插入排序,希尔排序,快速排序。最后一个堆排序未实现,所以是0注:C++使用的是C++11标准, Java使用的是JDK11注:不同的表之间硬件不同,不具有可比性。注:C++使用了...
2020-05-01 00:30:23
2229
原创 Linux和Windows都可用的串口调试助手
前段时间在玩单片机,用的是Windows和Linux两个系统开发,当时在网上找了很久都没找到一个好用的串口调试工具,特别是Linux系统下完全没有这类工具,于是花了两个晚上的业余时间自己写了一个。功能如下:1、使用Qt开发,使用了C++112、支持数据收发和文件发送,不支持文件接收,觉得没必要3、支持定时发送,定时器精度是秒,范围1-30秒4、可以自由设置显示字体和前景背景颜色...
2019-11-29 00:00:39
1012
原创 减法溢出翻转导致的死循环
下面的代码有没有问题?#include <cstdio>int main(){ unsigned int a = 10; int b = 10; /* loop 1 */ while(a>0) { a -= 3; printf("a=%u\n", a); } /* loop 2 */ while(b>0) { b -=3; pr...
2019-03-26 00:43:17
1075
原创 arm-linux-gnueabihf、aarch64-linux-gnu等ARM交叉编译GCC的区别
在下载gcc for arm的时候,往往会有很多个版本:这些版本的区别是什么?我该下载哪个版本?区别无外乎几个:大端 or 小端、ARMv7 or ARMv8、32位 or 64位、裸机 or 嵌入式Linux multiarch name syscall ABI instruction set endian...
2019-03-10 15:47:39
17571
3
原创 vivado安装System Generator不支持新版Matlab怎么办?
按照Xilinx的作风,Vivado只支持最近两年3个版本的Matlab,当前最新版vivado 2018.3只支持2017a,2017b,2018a,连matlab 2018b都不支持System Generator需要的新特性,matlab2016可能不支持,matlab2018b肯定是都支持的,所以没必要卸载matlab2018b安装matlab2018a,Mathworks已经给出...
2019-03-02 17:39:14
11110
12
原创 CentOS7开机Failed to start Crash recovery kernel arming
I'm having CentOS 7 64 installed on my NUC. After compiling and upgrading the kernel to version 4.14, I am getting below error while booting the CentOS 7:Failed to start Crash recovery kernel armin...
2019-02-14 22:25:38
11971
3
原创 firewalld允许nginx\apache\mysql通过
1、查看当前运行的service#firewall-cmd --list-services2、列出支持所有的服务名称#firewall-cmd --get-services由于输出结果太多,最好搭配grep xxx使用3、允许服务通过#firewall-cmd --add-service=mysql 本次有效,重启失效#firewall-cmd --permane...
2019-01-05 23:09:04
1487
原创 解决SELinux导致的nginx 403
只需两个命令chcon -R -u system_u /webdir/chcon -R -t usr_t /webdir//webdir/为nginx web目录
2019-01-05 22:53:05
865
原创 CentOS7编译内核安装与卸载
一、编译安装1、下载内核源码从https://www.kernel.org/下载longterm 4.14源码mainline: 4.20 2018-12-23 [tarball] [pgp] [patch] [view diff] [browse] stable: 4.19.13 2018-12-29 ...
2018-12-31 22:28:59
2547
原创 php-fpm与nginx通信connect() to unix:/tmp/php-fpm.sock failed (13: Permission denied) 的解决方法
nginx返回404,log文件错误信息如下2018/12/30 06:32:32 [crit] 9418#9418: *5 connect() to unix:/tmp/php-fpm.sock failed (13: Permission denied) while connecting to upstream, client: xxx.xxx.xxx.xxx, server: local...
2018-12-30 20:27:42
9513
1
原创 为CentOS7编译升级GCC
CentOS7默认的GCC版本是4.8,不支持C++14,对C++11支持也不完善,编译时需要加上-std=c++11才能勉强支持C++11,所以对GCC来个升级。因为3.10的内核实在太老,加之GCC4.8和最新的GCC8.2代差太大,直接用GCC4.8编译安装GCC7或8是不能成功的,我选择了GCC6.5,6.5对C++11支持很完美,还支持C++14. 1、下载和解压源码 这里...
2018-12-30 20:25:27
6260
3
原创 sizeof(char [])和sizeof(char *)等于多少?
下面的代码执行结果是多少? 1 #include <stdio.h> 2 3 int main(void) 4 { 5 char ca[] = {"123456"}; 6 char *pca = "123456"; 7 8 printf("sizeof(ca)=%d,sizeof(pca)=%d,sizeof(*pca)=...
2018-12-28 00:31:29
29140
1
原创 -1L和0U比较大小,32为系统和64位系统有何不同?
下文所有说法仅针对linux等long类型在32位和64位程序中,长度不一样的系统成立,因为WIndows系统long不论是32位还是64位,都是4字节。下面的程序在32位和64位下,会输出什么结果? 1 #include <stdio.h> 2 3 int main() 4 { 5 long la = -1l; 6 unsigned ...
2018-12-27 23:21:54
1927
原创 const在C与C++中的区别
下面的代码在C和C++下编译,输出会是什么?1 void main(void)2 {3 const int a = 0x00;4 int *pi;56 pi = (int *)&a;7 *pi = 0xFF;89 printf("*pi=%d,a=%d\n", *pi, a);10 return 0;11 }注意,上面的代码第6行必须写为p...
2018-12-27 22:36:54
258
原创 整数转罗马数字
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1...
2018-12-27 21:53:00
286
原创 scnprintf()和snprintf()、vscnprintf()和vsnprintf()
写过Linux驱动或者内核态程序的人应该都知道,编译时会有这样一个警告:use scnprintf() instead of snprintf()为什么在编译驱动或者内核态程序的时候会有这个警告呢?据说因为snprintf()有很大内存越界的风险?在内核态,内存越界往往是灾难性的后果下面是从Linux内核源码中复制的一段snprintf()和scnprintf()的实现(内核版本:...
2018-12-24 22:59:20
8634
原创 linux下使用strlcpy和strlcat
strlcpy和strlcat是BSD的C库函数,glibc维护者一直拒绝将其加入,所以需要安装额外的包。函数原型:size_t strlcpy(char *dst, const char *src, size_t size);size_t strlcat(char *dst, const char *src, size_t size);描述:The strlcpy() fun...
2018-12-20 20:51:21
6210
原创 gcc编译-m32、-mx32有什么区别
先来看看gcc官方手册吧These ‘-m’ switches are supported in addition to the above on x86-64 processors in 64-bitenvironments.-m32-m64-mx32-m16-miamcu Generate code for a 16-bit, 32-bit or 64-bit enviro...
2018-12-19 23:09:49
9002
原创 链表反转、链表是否有环
1、链表反转template<class ElementType> void inline slist<ElementType>::invert(){ if (head->next != nullptr) { node *p, *q, *r; p = head->next; q = p->next; p->next = n...
2018-12-18 23:34:41
495
原创 CentOS编译opencv
在没安装图形界面的linux系统中编译安装opencv下载解压源码创建build目录第3步别忘了最后的两个点mkdir buildcd buildcmake -D CMAKE_BUILD_TYPE=Release -D BUILD_EXAMPLES=OFF -D BUILD_DOCS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=O...
2018-11-28 22:55:05
623
原创 php获取本机IP
1、首先获取主机名:string gethostname ( void )gethostname() 可以获取本地机器的标准主机名。成功时返回主机名称字符串,失败时返回 FALSE。$server_hostname=gethostname();2、根据hostname获取IP:string gethostbyname ( string $hostname )返回主机名 ...
2018-11-26 01:07:26
7728
1
原创 Qt5.9.7 for ARM的编译安装(32位和64位)
Qt5.9.7 for ARM的编译安装 下载源码前往http://download.qt.io/official_releases/qt/5.9/5.9.7/single/下载最新版的源码(我这里下载的是当时最新的5.9.7)qt-everywhere-opensource-src-5.9.7.tar.xz,然后解压到某个文件夹为你的Linux安装常用的开发环境,比如gcc,mak...
2018-11-10 13:48:35
11843
3
原创 arm下堆和栈的增长方向
通过gdb调试下面的程序,观察运行于ARM的Linux系统中,heap和stack的区别#include <cstdio>#include <cstring>struct MyStr{ unsigned char ch[128]; MyStr() { memset(ch,0x01,128); }};int main(){ MyStr *p...
2018-10-14 21:53:04
3081
原创 kqueue示例
kqueu的两个例子:1、完全以IO复用的方式读入标准输入流数据,输出到标准输出流中#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <fcntl.h>#include <sys/event.h>#include <errno.h&g...
2018-10-12 20:59:32
1024
原创 kqueue的用法
The NetBSD Project”Of course it runs NetBSD” 本文翻译自:http://wiki.netbsd.org/tutorials/kqueue_tutorial/ NetBSD Wiki/tutorials/kqueue tutorial目录I、简介II、kqueue APIkevent 数据结构pair flags ...
2018-10-12 20:53:04
4648
原创 Shell统计词频
写一个 bash 脚本以统计一个文本文件 words.txt 中每个单词出现的频率。为了简单起见,你可以假设:words.txt只包括小写字母和 ' ' 。 每个单词只由小写字母组成。 单词间由一个或多个空格字符分隔。示例:假设 words.txt 内容如下:the day is sunny the thethe sunny is is你的脚本应当输出(以词频降序排...
2018-10-11 22:26:53
1508
原创 父进程退出之后,子进程会发生什么?
在linux中,所有进程都有一个共同的父进程systemd,如果父进程退出了,子进程还没运行结束,子进程会被systemd(老版本的linux是initd)收养下面用一个小程序来验证一下:#include <cstdio>#include <sys/types.h>#include <unistd.h>#include <errno.h&g...
2018-10-03 15:27:37
11107
原创 epoll的用法
示例如下:#include <pthread.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <sys/types.h>#include <sys/epoll.h>#incl
2018-10-01 22:58:31
267
原创 C++虚函数表在虚继承和继承中的差别
下面的代码在gcc和VC中的结果#include <cstdio>class A{public: virtual void funcaa() { printf("class A %s\n",__func__); }};class AA:virtual public A{public: virtual void funcaa() { printf...
2018-09-30 21:32:41
249
原创 Windows编译boost
下载boost压缩包解压,找到bootstrap.bat文件1、运行bootstrap.bat2、编译&安装在步骤1之后,会生成一个b2.exe文件如果选择VS编译下面的“toolset=msvc”,要求编译器支持c++11,所以尽量使用VS2013及以上版本,推荐VS2015(VC14.0)如果选择mingw64编译下面的“toolset=gcc”其中-j4表示使用...
2018-09-16 00:14:43
717
原创 牛客网-调整数组顺序使奇数位于偶数前面
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。class Solution {public: void reOrderArray(vector<int> &array) { int position = 0; ...
2018-09-01 23:26:53
204
原创 树莓派检测ip脚本
在树莓派上运行web服务器,但有时候开机完网络没有启动成功,需要重启networking服务,所以写了一个脚本来检测IP是否为192.168.x.x,如果不是则重启networking#!/bin/bashwhile truedo IP="$(ip addr show eth0|grep "inet\b"|awk '{print $2}')" VAL_C...
2018-08-06 23:50:15
492
原创 为树莓派3b+移植64位debian
系统我已经移植好了,百度云:链接:https://pan.baidu.com/s/1-lZK54ogBH9zhBG2pJb2Kg 密码:4ca7主要信息:1、内核版本:Linux debian 4.17.11-v8+ #1 SMP PREEMPT Sat Aug 4 11:50:39 CST 2018 aarch64 GNU/Linux2、debian版本:Debian GNU/Lin...
2018-08-05 14:24:11
2127
原创 为树莓派3b+编译64位内核
1、从github上下载内核源码github地址https://github.com/raspberrypi/linux$git clone --depth=1 -b VERSION https://github.com/raspberrypi/linux.git其中VERSION替换为对应的版本号,比如rpi-4.14.y2、configure$make ARCH=arm64...
2018-08-05 14:22:29
3136
3
原创 设计模式之单例模式
例模式可以保证系统中只有一个类只有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。单例模式的要点有三个:1. 单例类只能有一个实例2. 它必须自行创建这个实例3. 它必须自行向整个系统提供提供这个实例。单线程的工厂模式:饿汉模式singleton.h#ifndef _SINGLETON_H_#define _SINGLETON_H_#inc...
2018-07-20 21:54:09
234
原创 查找第二大的元素
给定一个数组,找出第二大的元素 #include <iostream>#include <set>using namespace std;int find_sec_max(int a[],int n);int main(){ int aa[]={9,4,6,7,56,76,57,65,47,95,41,85,462,365,984,58,48,465...
2018-07-18 14:42:38
698
Linux版FTDI USB转串口驱动,FT232
2017-11-19
OpenCV计算机视觉编程攻略(第2版)源码
2017-07-29
Apache2权限问题403Forbidden
2017-01-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人