[LeetCode C++实现]1030. Matrix Cells in Distance Order

leetcode 1030

学习c++ sort的基本用法之后,这道题还是比较easy.

Beginners guide to the std::sort() function

解法一:

class Solution {

public:

vector<vector<int>> allCellsDistOrder(int R, int C, int r0, int c0) {

vector<vector<int>> res(R*C,vector<int>(3));

int num=0;

for(int i=0;i<......

c++ 程序设计学习笔记

函数指针

程序运行期间,每个函数都会占用一段连续的内存空间。而函数名就是该函数所占内存区域的起始地址(入口地址)。我们可以将函数的入口地址赋给一个指针变量,使该变量指向该函数。然后通过指针变量就可以调用这个函数。这种指向函数的指针变量称为函数指针。

#include <iostream>

#include <vector>

#include <sys/stat.h>

#include <unistd.h>

#include <string>

#include <fstream>

#include <cstdde......

week-note-190108

touch命令

Linux touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。

注意到touch命令是在youtube上的一个video,对一个存在的文件,使用touch命令将更新文件或者目录的时间属性。

[root@centos-linux-10 workspace]# ll -al

总用量 80

drwxr-xr-x. 3 root root 4096 12月 31 15:05 .

dr-xr-x---. 7 root root 4096 12月 31 15:05 ..

drwxr-xr-x. 2 root root ......

C++ primer 5th学习

由于最近工作中需要使用c++编写一个工具,趁元旦三天假期学习下c++的相关特性,浏览C++ primer 5th一书,这本当时4年前买的大块头的书,看新旧程度应该只看了100页左右😓。

编译c++程序

gcc可以对c/c++代码进行编译,g++可以对c++代码进行编译,gcc和g++在编译c++代码时,在预编译 编译阶段作用相同,在链接阶段g++会自动链接标准c++库,so,而gcc需要手动加上-lstdc++

完整的编译命令如下:

gcc -g -o execute example.cpp -lstdc++

使用gcc编译完整命令:

g++ -o prog1 prog1.......

webbench源码学习

源代码阅读前的相关知识点总结:

命令行参数

命令行参数解析

命令行参数学习

Linux相关知识

ldd

作用:用来查看程式运行所需的共享库,常用来解决程式因缺少某个库文件而不能运行的一些问题。

示例:查看test程序运行所依赖的库:

/opt/app/todeav1/test$ldd test

libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000039a7e00000)

libm.so.6 => /lib64/libm.so.6 (0x0000003996400000)

libgcc_s.so.1 =......

管道和FIFO

管道

管道由pipe函数创建,提供一个单向数据流。pipe函数返回两个文件描述符:fd[0]与fd[1],前者打开来读,后者打开来写。

管道的典型用途是在父子进程之前提供进程间通信手段。首先,由父进程创建一个管道,然后调用fork创建子进程。如果父进程关闭管道的读出端,子进程关闭管道的写入端。在父子进程间就形成了一个单向数据流。

通常我们在shell中输入一个像下面的命令时:

cmd1 | cmd2 | cmd3

将会创建三个进程和其中的两个管道。将每个进程的读出端复制到相应进程的标准输入,把每个管道的写入端复制到相应进程的标准输出。

一个管道的实现例子,来源于UNIX 网络......

七牛云失效

目前博客的写作方式为Makedown+图床方式,图床的话选择了七牛,前几天突然发现图片无法显示,参考如下链接七牛图片失效,将图床从七牛移动到github。

七牛有一点特别坑的是登录后台在后台无法下载图片,必须使用qrsctl命令行工具。而且我查找了邮箱,发现在域名失效前并未发送邮件通知,这真的是一个非常坑的处理问题的方法。参考上文链接中的方法,可以将图片下载到本地然后再上传到github。

脚本:

#!/bin/bash

#修改52coder为你的存储空间名,并将qrsctl与该脚本放在同一目录

imgs=`./qrsctl listprefix 52coder ''`

i......

week-note-181109

学习shell时学习了广为人知的fork炸弹

fork炸弹

GNU parallel官方文档

命令

find /usr/bin -type f -mtime +1 | xargs ls -alh | awk '{print $9}'

假如我们想要删除光标后的内容可以使用:CTRL + K,恢复的话使用CTRL + Y,如果想删除光标前的内容使用CTRL + U,CTRL+W删除光标前的一个单词直到遇到下一个空格。

使用上面的find命令可以测试上述快捷键。

CPU测试工具的使用:

Unixbench

awk入门教程

git官方文档

Linux top命......

GNU parallel

安装GNU parallel报错

因公司项目编译由串行修改为并行,因此学习GNU parallel知识,使用GNU parallel进行并行编译。

在下载了GNU parallel安装包,解压之后执行

./configure

make&&make install

结果提示如下错误:

[root@centos-linux-10 parallel-20171222]# make

CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh /root/parallel-20171222/missing a......

使用addr2line定位程序崩溃位置

dmesg介绍

在介绍addr2line前需要学习下dmesg:

dmesg命令用于打印Linux系统开机启动信息,kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看(print or control the kernel ring buffer)。开机信息亦保存在/var/log/dmesg的文件里。

常用参数

格式:dmesg

查看开机信息。

格式:dmesg -c

清除开机信息,但/var/log/dmesg文件中仍然有这些信息。

实例一

dmesg消息重定向

dmesg >boot.me......