文章列表

3.4k3 分钟

# C 语言多线程简单运算不加锁实现 因为 c 语言本事并没有提供原子性操作的函数,而使用多线程库当中的锁机制又会大大影响效率,在经过多方查找,以及 redis 源码当中实现计数器的实现了解到了编译器自带的十二个内置原子性操作函数 # 原子性操作函数: // 返回更新前的值type __sync_fetch_and_add (type *ptr, type value, ...) // 自加type __sync_fetch_and_sub (type *ptr, type value, ...) // 自减type __sync
2.5k2 分钟

# 堆排序 (最大小堆) 堆排序:堆排序是指利用堆这种数据结构所设计的一种排序算法。堆积是一颗近似完全二叉树,并且满足子节点的值总是小于 (大于) 他的父节点 ** 完全二叉树:** 最下层子节点集中在从左边开始;如果最下层左节点为空,右节点不为空,那么久不是完全二叉树 如图,可以将这颗二叉树分为三个小堆,每一个小堆堆父节点与两个子节点进行比较,选择最大的一个替换父节点 如 A,B,C 三个节点替换之后为 A (10),B (5),C (3) 由此可以写出替换算法 void HeapSort(int tree[],int end,int start){ int dad&#x
1.7k2 分钟

# 链表 翻转链表方法 #include <iostream> #include <algorithm> using namespace std; struct List{ List *next; int val; }; void Creat(List* head,int n){ List *p=head; for(int i=1;i<=n;i++){ List *tmp=new List; tmp->val
2.6k2 分钟

# SQL 注入 # 分类 SQL 注入根据不同的标准,有不同的分类,从数据类型分类的话,SQL 注入分为数字型和字符型。 根据注入手法分类,可以分为: 可联合查询注入 ----- 联合查询 使用 order by 1 order by 2 … 判断数据库有多少列数 再使用 [?id=3 union select 1,2,3,…] 报错型注入 ------ 报错查询 # 布尔型注入 ------ 布尔盲注 思路:布尔逻辑注入的思路是闭合 sql 语句,构造 or 和 and 逻辑语句,注释多余的代码。 原始语句: select fir ,las from user where use