<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Goallegoal的博客]]></title><description><![CDATA[人生有两条路，一条是必须走的，一条是想走的，把必须走的走好，才能走好想走的路。]]></description><link>https://blog.youkuaiyun.com/qq_40644809</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_40644809]]></copyright><item><title><![CDATA[mycat的schema.xml配置文件中checkSQLschema=“false“字段的作用与相关错误信息处理]]></title><link>https://blog.youkuaiyun.com/qq_40644809/article/details/118419589</link><guid>https://blog.youkuaiyun.com/qq_40644809/article/details/118419589</guid><author>qq_40644809</author><pubDate>Fri, 02 Jul 2021 17:26:14 +0800</pubDate><description><![CDATA[mycat的schema.xml配置文件中checkSQLschema="false"字段的作用与相关错误信息处理
schema.xml配置如下：
&lt;mycat:schema xmlns:mycat="http://io.mycat/"&gt;
	&lt;schema name="mydb" checkSQLschema="false" sqlMaxLimit="100"&gt;
		&lt;table name="student" dataNode="dn1" /&gt;
		&lt;table n]]></description><category></category></item><item><title><![CDATA[DataGrip 连接 mycat 错误分析及解决]]></title><link>https://blog.youkuaiyun.com/qq_40644809/article/details/118400127</link><guid>https://blog.youkuaiyun.com/qq_40644809/article/details/118400127</guid><author>qq_40644809</author><pubDate>Thu, 01 Jul 2021 23:21:53 +0800</pubDate><description><![CDATA[DataGrip 连接 mycat 错误分析及解决
手上的工作需要使用mycat提供的分库分表功能，但是在命令行下操作不如图形化界面舒服，想着使用DataGrip 连接 mycat，在连接的过程中遇到了以下错误：

下午9:44	mycat@localhost
Failed to retrieve meta data.
(1 min, 59 sec, 246 ms)

该错误是在DataGrip界面中提示的，出现错误时，能看到左侧数据库列表中已经获取到了mycat中配置的数据库名字，但是加载不出数据库中的表]]></description><category></category></item><item><title><![CDATA[pa_offset = offset & ~(sysconf(_SC_PAGE_SIZE) - 1)计算页偏移]]></title><link>https://blog.youkuaiyun.com/qq_40644809/article/details/115832160</link><guid>https://blog.youkuaiyun.com/qq_40644809/article/details/115832160</guid><author>qq_40644809</author><pubDate>Sun, 18 Apr 2021 15:49:52 +0800</pubDate><description><![CDATA[pa_offset = offset &amp; ~(sysconf(_SC_PAGE_SIZE) - 1)计算页偏移
在mmap的手册中有一段示例代码，其中有一行：
offset = atoi(argv[2]);
pa_offset = offset &amp; ~(sysconf(_SC_PAGE_SIZE) - 1);
/* offset for mmap() must be page aligned */

这一行代码表示的含义是：计算出内存中的页偏移量。具体的计算过程可以例举几个值计算一下，得到的]]></description><category></category></item><item><title><![CDATA[Linux C 编程中的条件变量与互斥锁]]></title><link>https://blog.youkuaiyun.com/qq_40644809/article/details/115786045</link><guid>https://blog.youkuaiyun.com/qq_40644809/article/details/115786045</guid><author>qq_40644809</author><pubDate>Sat, 17 Apr 2021 08:48:23 +0800</pubDate><description><![CDATA[Linux C 编程中的条件变量与互斥锁
条件变量
这里先不引入条件变量的应用场景，我们先来了解什么是条件变量以及条件变量可以实现什么样的功能。
使用man手册查看关于条件变量的信息，如下：

A  condition  (short  for  ``condition variable’’) is a synchronization device that allows threads to suspend execution and relinquish the processors  until  s]]></description><category></category></item><item><title><![CDATA[man手册中没有pthread_cond_init内容的解决方案]]></title><link>https://blog.youkuaiyun.com/qq_40644809/article/details/115747564</link><guid>https://blog.youkuaiyun.com/qq_40644809/article/details/115747564</guid><author>qq_40644809</author><pubDate>Fri, 16 Apr 2021 08:19:39 +0800</pubDate><description><![CDATA[man手册中没有pthread_cond_init内容的解决方案
在多线程编程条件变量部分，遇到需要使用pthread_cond_init，但是
ubuntu@ubuntu:~/Desktop/linux$ man pthread_cond——init
No manual entry for pthread_cond_init

在网上查找解决方案时发现有博主说可以通过安装manpages来解决：
sudo apt-get install manpages-posix-dev

但是安装完之后还是提示找不到]]></description><category></category></item><item><title><![CDATA[非亲缘关系的两个进程以共享内存方式通信时，二者共享内存地址的值是否相同]]></title><link>https://blog.youkuaiyun.com/qq_40644809/article/details/115719326</link><guid>https://blog.youkuaiyun.com/qq_40644809/article/details/115719326</guid><author>qq_40644809</author><pubDate>Thu, 15 Apr 2021 11:13:07 +0800</pubDate><description><![CDATA[非亲缘关系的两个进程以共享内存方式通信时，二者共享内存地址的值是否相同
在终端中运行一次程序，该程序中的父子进程使用同一块共享内存进行通信，由于fork()时子进程继承父进程的数据空间、堆、栈等，所以变量的地址相同，因此在父子进程中分别打印该块共享内存的地址，得到的值是相同的。
如果在进行通信的两个进程是相互独立的，但以共享内存的方式传递信息，那么该块共享内存在两个不同进程中的值是否相同呢？
#include "common.h"

// Usage: ./a.out -t 1|2 -m "message"]]></description><category></category></item><item><title><![CDATA[父进程中getpid()值与子进程中getppid()值不相同的问题及解释]]></title><link>https://blog.youkuaiyun.com/qq_40644809/article/details/115673007</link><guid>https://blog.youkuaiyun.com/qq_40644809/article/details/115673007</guid><author>qq_40644809</author><pubDate>Tue, 13 Apr 2021 17:03:13 +0800</pubDate><description><![CDATA[父进程中getpid()值与子进程中getppid()值不相同的问题及解释
使用fork()创建一个新的子进程，并调用getpid()与getppid()查看父子进程之间的pid的关系。示例代码如下：
#include "common.h"

int main() {
	pid_t pid;
	if ( (pid = fork()) &lt; 0 ) {
		perror("fork()");
		exit(1);
	}
	if ( pid ) {
		printf("parent process &lt;]]></description><category></category></item><item><title><![CDATA[C++模拟实现线程池及多线程原子打印]]></title><link>https://blog.youkuaiyun.com/qq_40644809/article/details/115369854</link><guid>https://blog.youkuaiyun.com/qq_40644809/article/details/115369854</guid><author>qq_40644809</author><pubDate>Thu, 01 Apr 2021 11:18:44 +0800</pubDate><description><![CDATA[C++模拟实现线程池及多线程原子打印
#include &lt;iostream&gt;
#include &lt;thread&gt;
#include &lt;vector&gt;
#include &lt;unordered_map&gt;
#include &lt;mutex&gt;
#include &lt;condition_variable&gt;

using namespace std;

namespace myTest {

class Task {
public:
	template]]></description><category></category></item><item><title><![CDATA[模拟实现function模板类接收不同可调用对象的功能]]></title><link>https://blog.youkuaiyun.com/qq_40644809/article/details/115330896</link><guid>https://blog.youkuaiyun.com/qq_40644809/article/details/115330896</guid><author>qq_40644809</author><pubDate>Tue, 30 Mar 2021 17:17:05 +0800</pubDate><description><![CDATA[模拟实现function模板类接收不同可调用对象的功能
#include &lt;iostream&gt;
#include &lt;functional&gt;

using namespace std;

namespace myTest {

template&lt;typename T, typename ...ARGS&gt;
class base {
public:
	virtual T run(ARGS...) = 0;
	virtual base&lt;T, ARGS...&gt; *get]]></description><category></category></item><item><title><![CDATA[怒刷排列组合，如何解“排列组合”一类的问题]]></title><link>https://blog.youkuaiyun.com/qq_40644809/article/details/112556310</link><guid>https://blog.youkuaiyun.com/qq_40644809/article/details/112556310</guid><author>qq_40644809</author><pubDate>Wed, 13 Jan 2021 11:16:26 +0800</pubDate><description><![CDATA[怒刷排列组合
在刷Leetcode题目时，时常会看到一些大佬提出时间复杂度为O(1)的题解，而我还在O(nm)和O(n)之间如此反复，细细品味，其实有一类题目是经常可以爆出O(1)的解法的，这一类题目背后的数学依据就是排列组合。
顾名思义，排列即排列，组合即组合，排列组合主要是用来解决做一件事情有多少种方法或者某件事发生的概率是多少的问题。例如小明从家到学校可以选择步行、骑车、坐出租车。**问题1：**小明从家到学校有几种出行方式？**问题2：**小明从家到学校再返回家中，有几种出行方式？
针对上述的两个问]]></description><category></category></item><item><title><![CDATA[搞定二分查找，套路深得人心]]></title><link>https://blog.youkuaiyun.com/qq_40644809/article/details/112257366</link><guid>https://blog.youkuaiyun.com/qq_40644809/article/details/112257366</guid><author>qq_40644809</author><pubDate>Wed, 06 Jan 2021 09:09:46 +0800</pubDate><description><![CDATA[在排序与查找算法中，二分查找是一种常用的用来在有序排列中查找指定元素的方法。

二分查找也称折半查找，是一种效率较高的查找方法。但是，折半查找要求线性表必须采用顺序存储结构，而且表中元素按照关键字有序排列。

二分查找的查找思想为：首先将待搜索序列进行排序，既可以按关键字从小到大，也可以从大到小进行排序，将有序序列从中间一分为二，比较中间值与目标值的大小关系，若待搜索序列是按从小到大进行排列的，且此时中间值比目标值小，那么说明目标值一定不在有序序列的左边，接下来重复上述步骤对右边的序列进行进一步二分查找，直]]></description><category></category></item><item><title><![CDATA[求两个三位数相乘得到的最大回文数]]></title><link>https://blog.youkuaiyun.com/qq_40644809/article/details/111874204</link><guid>https://blog.youkuaiyun.com/qq_40644809/article/details/111874204</guid><author>qq_40644809</author><pubDate>Mon, 28 Dec 2020 20:22:47 +0800</pubDate><description><![CDATA[求两个三位数相乘得到的最大回文数
所谓的回文数是指：

一个像14641这样“对称”的数，即：将这个数的数字按相反的顺序重新排列后，所得到的数和原来的数一样。这里，“回文”是指像“妈妈爱我，我爱妈妈”这样的，正读反读都相同的单词或句子。

例如由两个两位数相乘得到的最大回文数为9009，9009 = 91 * 99。这里要求的是两个三位数相乘得到的最大回文数。
下面内容的侧重点是如何提高寻找这样一个回文数的效率，而不再阐述具体每一段代码所表示的含义。
按照正常的枚举法思路，程序要实现的功能为，从100到99]]></description><category></category></item><item><title><![CDATA[并查集的实现与优化]]></title><link>https://blog.youkuaiyun.com/qq_40644809/article/details/111715955</link><guid>https://blog.youkuaiyun.com/qq_40644809/article/details/111715955</guid><author>qq_40644809</author><pubDate>Sat, 26 Dec 2020 10:16:15 +0800</pubDate><description><![CDATA[并查集的实现与优化
LeetCode上有一道名为朋友圈的题目，如下：

班上有 N 名学生。其中有些人是朋友，有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友，B 是 C 的朋友，那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈，是指所有朋友的集合。
给定一个 N * N 的矩阵 M，表示班级中学生之间的朋友关系。如果M[i][j] = 1，表示已知第 i 个和 j 个学生互为朋友关系，否则为不知道。你必须输出所有学生中的已知的朋友圈总数。

读完题目要求，暂时能想到的是，如果要解决该问]]></description><category></category></item><item><title><![CDATA[Linux系统下执行history中的指令]]></title><link>https://blog.youkuaiyun.com/qq_40644809/article/details/111376137</link><guid>https://blog.youkuaiyun.com/qq_40644809/article/details/111376137</guid><author>qq_40644809</author><pubDate>Fri, 18 Dec 2020 16:04:17 +0800</pubDate><description><![CDATA[Linux系统下执行history中的指令
在Linux系统中，使用history指令可以查看最近使用过的指令，例如：
ga@a:~$ history
 1462  rm *.txt
 1463  ls
 1464  history 
 1465  which fc
 1466  tldr fc
 1467  history 
 1468  ls
 1469  history 
 1470  ls
 1471  history 
 1472  ls

这里仅展示了部分曾使用过的指令，当需要重新使用其中的某条]]></description><category></category></item><item><title><![CDATA[shell脚本实现查找素数-暴力、素数筛、线性筛]]></title><link>https://blog.youkuaiyun.com/qq_40644809/article/details/111249813</link><guid>https://blog.youkuaiyun.com/qq_40644809/article/details/111249813</guid><author>qq_40644809</author><pubDate>Wed, 16 Dec 2020 11:12:04 +0800</pubDate><description><![CDATA[shell脚本实现查找素数-暴力、素数筛、线性筛

暴力求解

  1 #!/bin/bash
  2 
  3 if [[ $# -ne 2 ]];then
  4     echo "Usage: $0 start_num end_num"
  5     exit
  6 fi
  7 
  8 START=$1
  9 END=$2
 10 
 11 function isPrime() {
 12     num=$1
 13     local i
 14     for (( i=2; i&l]]></description><category></category></item><item><title><![CDATA[Linux中设置文件的特殊权限-set_uid、set_gid、sticky bit]]></title><link>https://blog.youkuaiyun.com/qq_40644809/article/details/111168380</link><guid>https://blog.youkuaiyun.com/qq_40644809/article/details/111168380</guid><author>qq_40644809</author><pubDate>Mon, 14 Dec 2020 14:26:42 +0800</pubDate><description><![CDATA[Linux中设置文件的特殊权限-set_uid、set_gid、sticky bit

set_uid，占位符s，二进制程序文件（非脚本），用户在执行该程序时获取程序所有者权限

例如对于passwd可执行程序，查看其权限为
-rw-r--r--  1 root root    1732 Dec 14 10:03 passwd

这里可以看到对于普通用户来说，是没有passwd的可执行权限的，但是依然可以调用该命令进行密码的修改，这是因为增加了 set_uid 的权限，当用户执行该程序时获取程序所有者的权限]]></description><category></category></item><item><title><![CDATA[Linux系统中的/etc/fstab文件]]></title><link>https://blog.youkuaiyun.com/qq_40644809/article/details/110994730</link><guid>https://blog.youkuaiyun.com/qq_40644809/article/details/110994730</guid><author>qq_40644809</author><pubDate>Thu, 10 Dec 2020 21:05:36 +0800</pubDate><description><![CDATA[Linux系统中的/etc/fstab文件
/etc/fstab是用来保存静态文件系统信息的。
在系统启动的过程中，会有一个加载虚拟文件系统的步骤，然后将内核加载到虚拟文件系统中启动第一个进程systemd，然后再加载文件系统。
而在/etc/fstab文件中记录着整个机器对应的系统盘信息，系统在启动之初并没有系统盘，在内核、systemd进程相继启动后，才会基于这个/etc/fstab文件中的信息去挂载系统盘。
当然，如果想给系统加一个硬盘却又不想重装系统，就可以在/etc/fstab文件中添加硬盘的信息]]></description><category></category></item><item><title><![CDATA[Linux中的HOME目录和home目录？？？]]></title><link>https://blog.youkuaiyun.com/qq_40644809/article/details/110965797</link><guid>https://blog.youkuaiyun.com/qq_40644809/article/details/110965797</guid><author>qq_40644809</author><pubDate>Thu, 10 Dec 2020 19:36:04 +0800</pubDate><description><![CDATA[Linux中的HOME目录和home目录？？？
在Linux标准文件系统中，/目录是整个文件系统的根目录，其他所有的目录都要依附于根目录而存在，其中就包括常说的家目录。
那所谓的家目录在哪呢？
aaa@bbb:/$ ls
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  lost+found  media  mnt  opt  proc  root  run  sbin  srv  swapfile  sys  tmp  usr  var

可以看到]]></description><category></category></item><item><title><![CDATA[man手册第一行中的数字代表的含义]]></title><link>https://blog.youkuaiyun.com/qq_40644809/article/details/110954476</link><guid>https://blog.youkuaiyun.com/qq_40644809/article/details/110954476</guid><author>qq_40644809</author><pubDate>Thu, 10 Dec 2020 15:40:24 +0800</pubDate><description><![CDATA[man手册第一行中的数字代表的含义

1 表示用户在shell环境下可以操作的命令或可执行文件
2 表示系统内核可调用的函数和工具
3 一些常用的函数与函数库
4 设备文件的说明，通常是/dev下的设备
5 配置文件或某些文件的格式
6 游戏
7 惯例与协议，例如Linux文件系统，网络协议等
8 系统管理员可用的命令
9 跟kernel有关的文件
o 旧文件
n 新文件
l 本地文档


...]]></description><category></category></item><item><title><![CDATA[Linux中的七种文件类型]]></title><link>https://blog.youkuaiyun.com/qq_40644809/article/details/110947076</link><guid>https://blog.youkuaiyun.com/qq_40644809/article/details/110947076</guid><author>qq_40644809</author><pubDate>Thu, 10 Dec 2020 10:53:23 +0800</pubDate><description><![CDATA[Linux中的七种文件类型

-普通文件


包括文本文件、编译好的二进制文件、特殊格式的数据文件。


d目录文件


目录也是文件，允许以操作文件的方式来操作目录。


l链接文件


在Linux系统中链接文件分为硬链接和软连接两种，其中硬链接是指通过索引节点来进行链接，在系统中多个文件各指向同一个索引节点，这种方式可以防止误删重要数据；而软链接也称为符号链接，实际上是一个存储着指向源文件链接的位置信息的文本文件。举一个例子，当源文件删除后，用户通过软链接将无法查看文件的内容，但是通过硬链接文件还可以]]></description><category></category></item></channel></rss>