自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

超级码力

超级码力

  • 博客(128)
  • 资源 (1)
  • 收藏
  • 关注

原创 解决mac pro 连接4k显示器严重发烫、卡顿问题

点击控制台上的温度图标,会展开显示传感器页面,然后会提示下载风扇控制模块,输入密码立即安装完成。再点击那个【❄️】按钮,风扇速度就拉满了。也可以切换【自动】【手动】来调节风扇速度。介绍个不用花钱的方法。其实mac自带的风扇散热能力还可以的,但是默认比较懒散,可以用一个软件来控制下,激发下它的潜能。这个拉满后,温度下降还是很明显的,我外接4k显示器都不会烫,卡顿也好很多。打开传感器开关,以及同步控制风扇开关。可以下个stats软件。

2023-09-28 16:12:01 3345

原创 MySQL的ACID

数据库的ACID属性耳熟能详,但是却又很容易混淆。比如MySQL哪些功能是为了实现一致性?本文笔者就带大家一起看看这个问题。

2022-11-24 15:02:11 626 1

原创 vscode-vim常用快捷键

vscode vim 插件快捷键速览

2021-12-22 13:50:44 1217 1

原创 vscode 连接远程docker容器

以下以amazon 的镜像作为例子(基于yum,对于debian系列也会给出建议)一、在服务器容器中配置ssh1. 通过一个其他的端口进入容器,这里使用6789端口docker run -it -d -p 5678:22 amazon2. 下载opensshcentos/fedorayum install openssh-server -ydebian/ubuntuapt-get install openssh-server3.设置root密码passwd如果容器内没有这个模块,

2021-11-09 19:22:30 2409

原创 python multiprocessing pool:pool objects cannot be passed between processes or pickled

在类中把进程池设为成员变量,同时把self作为参数传给线程池中的函数的时候会报错:pool objects cannot be passed between processes or pickled两种方法解决:第一种class Test(object): def run(self): self.pool=Pool(2) self.pool.starmap(func, [(xx,yy), (xx, yy)]) def __getstate__

2021-10-28 01:32:12 1140

原创 TPCH 工具 dbgen的安装与使用

下载工具包在http://www.tpc.org/tpch/ 这个网站下载TCPH的zip包,需要填信息,这里最好用科技网,不然会莫名报错。编译 dbgen下载后解压,然后修改 dbgen/makefile.suite,设置以下变量CC=gccDATABASE=ORACLEMACHINE=LINUXWORKLOAD=TPCH然后 makemake -f makefile.suitegcc -g -DDBNAME=“dss” -DMAC -DINFORMIX -DTPCH -DRNG

2021-10-12 21:54:03 2916 5

原创 【Python】函数参数是值传递还是引用传递

结论:python函数的参数传递是引用传递。在Python中一切都是对象,变量总是存放对象引用。当没有变量指向对象时,这个对象便进入了垃圾收集过程。Python的“动态类型”机制,负责检查变量的对象引用适用操作。如果该对象不适用该操作,则会直接报错。一句话”变量无类型,对象有类型 “。直接上例子:def func(d): d['a'] = 10 d['b'] = 20 d = {'a': 1, 'b': 2}dic = {}

2021-10-10 14:16:09 1165

转载 condition_variable为什么需要mutex

condition_variable简介在头文件< condition_variable >中,顾名思义是一个条件变量,主要功能是阻塞线程直到另一个线程把你唤醒。条件两个字看起来似乎是指,在另一个线程中满足了条件,才把你唤醒;然而如果仅仅如此的话信号量就能满足要求了。所以条件二字更体现在你需要满足更具体的”条件”才能被唤醒。来看一个简单的例子:#include #include #include #include <condition_variable>std::

2021-10-01 11:20:36 678

原创 常见限流算法总结

2021-09-25 13:40:42 107

原创 Python 使用zfec 纠删码示例

源码地址:https://github.com/tahoe-lafs/zfec安装zfecpython -m pip install zfec示例例如我们有k个数据块,我们希望生成m个数据块(m>=k),从而可以使用m个数据块中的任意k个恢复出原来的数据块。这里,我们取k=2,m=3,原始数据是二进制字符串b'abcde' 。需要注意的是,为了保证原始数据能被k整除,该工具会对数据添加padding,padding为b'\x00'。编码时,会得到一个数组,每个元素是一个二进制字符串(数据

2021-09-20 12:06:51 659

原创 ARTS挑战第二十一周

Algorithm【字符串解码】压缩算法类似字符串解码394. 字符串解码 只不过解码方式不同。【单调栈】逛街 Q在周末的时候和他的小伙伴来到大城市逛街,一条步行街上有很多高楼,共有n座高楼排成一行。小Q从第一栋一直走到了最后一栋,小Q从来都没有见到这么多的楼,所以他想知道他在每栋楼的位置处能看到多少栋楼呢?(当前面的楼的高度大于等于后面的楼时,后面的楼将被挡住)首先向左看,使用单调递减栈从左往右入栈,当nums[i]入栈时,res[i+1]+=stk.size();然后向右看,使用单调递减栈

2021-09-17 09:56:17 122

转载 c++实现内存池

这个内存池只是一个demo版实现,主要以下四个核心要素:每个内存对象大小固定使用链表来维护空闲节点,线程池维护一个head指针使用链表的头插法实现将空闲节点插入到head实现free重载使用线程池类的void * operator new(size_t)和void free(void*p)函数这个实现存在的问题:内存池的空间释放需要为每个类定义一个线程池对象多线程安全问题#include <iostream>using namespace std;template

2021-09-10 20:29:59 476

原创 ARTS挑战第二十周

Algorithm143. 重排链表快慢指针法找到链表中间节点 2) 将后半部分链表进行反转 3) 合并两个链表781. 森林中的兔子mp[i] 表示answer为i的兔子的个数,则最多有 i+1个兔子是相同的颜色,因此报出这个答案的兔子有 (mp[i]+i)/(i+1) * (i+1)个兔子。例如 mp[1] = 5, 则至少有 6 个兔子,至少有三个颜色【动态规划】剑指 Offer 42. 连续子数组的最大和​ dp[i] 表示以nums[i-1] 为结尾的最大子数组和,dp[i] =

2021-09-06 00:16:54 180

原创 c++ 内存对齐方式

对齐规则1)对齐关键字 #pragma pack(N) 设置了对齐字节数2)设m为class A的最大成员变量的字节数,n = min{N,m}3)class A的整体字节数应该是n的倍数4)class A成员的对齐值的计算方式:其首地址应该是min{n,j}的倍数,其中j为 该成员所占的字节数举例说明例1 :默认对齐方式// m= 8// 此处没有设置#pragma pack, n = m = 8class A{ int a; // 起始地址0,占用[0-3] double b;

2021-09-05 16:30:12 627 2

原创 ARTS挑战第十九周

Algorithm【大根堆+小根堆】295. 数据流的中位数实现的思路是使用两个优先级队列,一个是大根堆,一个是小根堆。要求满足以下条件:大根堆所有的元素小于等于 小根堆所有元素,即大根堆堆顶元素小于小根堆堆顶元素如果大根堆元素和小根堆元素个数相等,则插入时,优先插入大根堆;否则插入小根堆。如果所有元素满足以上两个条件,那么中位数(findMedian函数逻辑)就是:如果大根堆元素多,就大根堆堆顶,否则就是两个堆顶元素取平均值。为了保证以上两个条件,在插入元素(addNum函数逻辑)时,需要

2021-08-29 22:17:15 156

原创 归并排序递归与迭代实现c++

递归实现就是树的后序遍历void mergeSort_recursive(vector<int> &arr, int start, int end){ // 闭区间[start, end] if (start >= end) { return; } int mid = start + ((end - start) >> 1); // 注意(end+start)/2 当end=start+1时,mid=s

2021-08-26 16:47:43 222

原创 快速排序的递归和迭代两种实现,简单易懂

快速排序法的递归和迭代两种实现。迭代实现基本复用了递归实现的代码,在递归基础上小小的改动即可。递归版#include <bits/stdc++.h>using namespace std;/*快速排序递归法与迭代法实现*/void quick_sort_recursive(vector<int> &arr, int start, int end){ // 这里采用闭区间,下文迭代法也统一使用闭区间 if (start >= end)

2021-08-26 14:17:51 982

转载 如何找到两个有序数组合并后的第k个元素

//在两个有序数组中找到第k个元素(例如找第一个元素,k=1,即nums[0]) //思路是比较两个数组的k/2位置的元素,每次淘汰k/2个元素 //i: nums1的起始位置 j: nums2的起始位置(i,j都是从0开始) int findKth(vector<int>& nums1, int i, vector<int>& nums2, int j, int k) { //若nums1为空(或是说其中数字...

2021-08-24 23:35:33 368

原创 295. 数据流的中位数

295. 数据流的中位数中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间两个数的平均值。例如,[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。double findMedian() - 返回目前所有元素的中位数。这题难就难在,如何在较低的时间复杂度里面实现findMedian。如果把所有数据存入数组,那么每次插入.

2021-08-21 23:08:35 136

原创 ARTS挑战第十八周

Algorithm【三指针】88. 合并两个有序数组​ 解法一:直接拼接再排序,然后放入结果中。时间复杂度O((m+n)long(m+n)), 空间复杂度O(m+n);​ 解法二:使用三指针,从头到尾合并到新的数组中。时间复杂度O(m+n), 空间复杂度O(m+n);​ 解法三:使用逆向三指针,从尾到头合并到nums1数组中,不会覆盖不该覆盖的元素。【动态规划】887. 鸡蛋掉落dp[i][j]表示剩余i枚鸡蛋,共有j层楼的最坏情况下的最小操作次数​ base case: d

2021-08-21 15:42:07 109

原创 895. 最大频率栈

问题描述最大频率栈 实现 FreqStack,模拟类似栈的数据结构的操作的一个类。FreqStack 有两个函数:push(int x),将整数 x 推入栈中。 pop(),它移除并返回栈中出现最频繁的元素。如果最频繁的元素不只一个,则移除并返回最接近栈顶的元素。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-frequency-stack解题思路这题依然主要是按照频率和按照时间排序,和之前写的LFU 算法c++的

2021-08-21 15:36:39 504

原创 TCP SYN cookie的作用、原理、缺陷

SYN Flood 攻击SYN cookie使用来抵御SYN 攻击的。SYN 攻击就是发很多的SYN给服务器,服务器收到SYN会为每个SYN创建一个TCB(Transmission Control Block),并将其放到半连接队列中。然而系统的半连接队列大小是有限制的(默认1024),如果半连接队列满了,服务器只能丢弃新来的请求了,从而正常的请求无法完成。SYN Cookie概念syn cookie究竟存在哪?它的实体就是服务器返回给客户端的ACK+SYN中的seq number。这个序列号本身也是

2021-08-19 19:19:55 3430

原创 【动态规划】鸡蛋掉落

887. 鸡蛋掉落给你 k 枚相同的鸡蛋,并可以使用一栋从第 1 层到第 n 层共有 n 层楼的建筑。已知存在楼层 f ,满足 0 <= f <= n ,任何从 高于 f 的楼层落下的鸡蛋都会碎,从 f 楼层或比它低的楼层落下的鸡蛋都不会破。每次操作,你可以取一枚没有碎的鸡蛋并把它从任一楼层 x 扔下(满足 1 <= x <= n)。如果鸡蛋碎了,你就不能再次使用它。如果某枚鸡蛋扔下后没有摔碎,则可以在之后的操作中 重复使用 这枚鸡蛋。请你计算并返回要确定 f 确切的值 的.

2021-08-16 11:47:31 343

原创 ARTS挑战第十七周

Algorithm【前序遍历,备忘录】96. 不同的二叉搜索树使用helper(left,right)进行递归计算。构造二叉树为前序遍历过程.​ 先选定root节点,确定root节点后,总的树的数量就是左子树的种类 x 右子树的种类​ |–如果left >= right 返回1(乘法)​ |–枚举【left,right】闭区间的所有元素作为根节点i​ |–sum+=helper(left,i-1)*helper(i+1,right)​

2021-08-15 22:51:54 105

原创 最长公共子序列与最长公共子串区别

最长公共子序列与最长公共子串区别假设s1=“abaaca”, s2=“acaaba”。最长公共子序列是s1和s2的不连续的最大公共子集。例如,s1和s2的最长公共子序列是[‘a’,’a’,’a’,’a’]最长公共子串是s1和s2中连续的最长公共子串。例如,s1和s2的最长公共子串是“aca”和“aba”最长公共子序列c++实现两个实现差不多,这里均使用动态规划实现。实现一是最普通的动态规划,实现二则进行了状态压缩。实现一:无状态压缩int lcs_normal(string s1, str

2021-08-15 22:49:52 291

原创 贝尔曼福特和迪杰斯特拉算法区别

贝尔曼福特和迪杰斯特拉算法区别https://zh.wikipedia.org/wiki/%E8%B4%9D%E5%B0%94%E6%9B%BC-%E7%A6%8F%E7%89%B9%E7%AE%97%E6%B3%95贝尔曼福特时间复杂度:O(|V| |E|)算法伪代码procedure BellmanFord(list vertices, list edges, vertex source) // 讀入邊和節點的列表並對distance和predecessor寫入最短路徑 // 初始

2021-08-15 22:11:02 793

原创 ARTS挑战第十六周

Algorithm【回溯法】剑指 Offer 34. 二叉树中和为某一值的路径选择列表:对于当前节点来说,选择左右两个节点是其选择列表路径:根节点一定在路径中,因此需要事先加入trace中;结束条件:当前节点是叶子节点【后序遍历】 124. 二叉树中的最大路径和helper 函数返回以root为终点的单边最大路径和:|-- 先计算分别以左右子节点为终点的最大路径和分别为left,right|-- helper 函数根据left、right的正负以及大小,返回最大单边路径和|-- 顺便记录以

2021-08-07 23:55:41 93

原创 jupyter lab 插件安装

我的操作系统是win10,基于anaconda的jupyter lab,jupyter lab 版本 3.1.4,anaconda默认的版本可能比较老,我一开始是1.2.1,这时候可以在anaconda navigator中先卸载然后再安装这个插件。以下是安装插件的步骤,不是那么简单一键安装就完事了,所以把过程记录以下,方便以后环境迁移翻着看看。步骤一,启用extension manager首先在jupyter lab 中将 extension manager显示出来,参考这篇文章然后我安装了以下三

2021-08-06 22:27:09 4268

原创 git clone push pull 免密钥两种方式

git clone 主要两种,一种是基于ssh,另一种基于https。基于 ssh对于ssh的,在云上的环境就不是很适合,因为实例总是不断申请释放,每次都需要重新生成id_rsa.pub 文件,然后在对应的 git网站上将这个文件内容拷贝到对应git服务器网站的 ssh keys 中,想要自动化似乎有点麻烦。但是这里还是先说以下操作步骤:在host主机上输入以下命令 ssh-keygen,然后不断回车,会在~/.ssh文件夹下生成id_rsa.pub文件在git网站上(如github)的设置里

2021-08-06 16:28:02 3832

原创 Linux shell 多线程控制并发数

Linux shell 多线程控制并发数,程序模板。并发500个产生文件的程序,直接给整蹦了。所以必须控制并发数。#!/bin/bash# Step1 创建有名管道[ -e ./fd1 ] || mkfifo ./fd1# 创建文件描述符,以可读(<)可写(>)的方式关联管道文件,这时候文件描述符3就有了有名管道文件的所有特性exec 3<> ./fd1 # 关联后的文件描述符拥有管道文件的所有特性,所以这时候管道文件可以删除,我们留下文件描述符来用就可以了r

2021-07-29 17:11:07 383

原创 ARTS挑战第十五周

AlgorithmO(1) 时间插入、删除和获取随机元素](https://leetcode-cn.com/problems/insert-delete-getrandom-o1/) insert函数在数组尾部插入元素,使用hash表实现O(1)查找,remove函数使用hash查找,并交换与尾部元素交换后删除。710. 黑名单中的随机数 sz表示除blacklist之外的元素个数,则需要把blacklist中在[0,sz) 区间的数,映射到[sz,N) 之间、且不是blacklist中的数,

2021-07-24 14:23:49 131 1

原创 Docker 常用命令

Docker常用的命令记录,方便自己查镜像管理拉取远程镜像docker pull imagename查看所有本地镜像docker images输出REPOSITORY TAG IMAGE ID CREATED SIZEamazonlinux latest 7443854fbdb0 12 days ago 163MBhello-world latest d1165f221234 4 months ago

2021-07-08 16:10:06 134 2

原创 ARTS挑战第十四周

Algorithm374. 猜数字大小 经典二分搜索435. 无重叠区间 使用求解最大不重叠区间的算法求出最大不重叠区间,然后使用区间数量减去这个最大不重叠区间的数量,即为需要移除的最小的数量。求解最大不重叠区间:1)先对区间按照结束的位置进行升序排序 2)初始化上一个区间的结束位置为最小的start 3)找到当前结束最早的区间,保证其开始的位置>= 上一个区间的结束位置,并加入不重叠区间集合452. 用最少数量的箭引爆气球 思路:找到最大的不重叠区间的数量,这里定义不重叠是端点也不能重叠,因

2021-07-08 10:01:03 101

原创 ARTS挑战第十三周

Algorithm518. 零钱兑换 II 完全背包问题, 假设dp[i][j]表示前i个硬币凑成总金额为j的硬币组合数. base case: dp[0][j] =0 表示不可能, dp[i][0]=1; 状态转移方程:dp[i][j] = dp[i][j-coins[i-1]]+dp[i-1][j] ; 状态压缩:dp[j] = dp[j]+dp[j-coins[i-1]]278. 第一个错误的版本 使用二分查找,寻找左边界的问题。假设当前下标位i,当前区间为[a,b]则 isBadVersion(

2021-06-13 19:56:58 118 2

原创 常用无损压缩算法原理简析

无损压缩算法原理压缩一般分为两个步骤,建模和编码。一个完美的模型可以描述数据流是如何产生的,相当于一个python类里面的generator。只需要这个generator就可以产生所有数据,从而大大降低需要传输的数据。例如 如果需要传输的数据序列是1 1 2 3 5 … 6765 ,那么可以用一个“斐波那契数”来精准表达这个传输的序列。在实际应用中,很难得到这样的精准模型,因此一般都是近似的为数据构建一个数学模型。例如英文文章可以认为是一个字典模型,我们只要有字典以及对应的编号,就能还原出信息;在编码

2021-06-13 19:55:08 4841

原创 ARTS挑战第十二周

Algorithm712. 两个字符串的最小ASCII删除和 这题是回顾了下之前做的题,并且发现自己的一种思路是错误的,具体看这篇博客两个字符串的最小ASCII删除和,错误解法与正确解法ReviewLambda quotas - AWS Lambda (amazon.com) lambda的一些限制资源限制内存分配范围128 MB to 10,240 MB, in 1-MB increments.临时磁盘容量(“/tmp”空间)512MB文件描述符数1024

2021-06-06 15:16:29 123

原创 两个字符串的最小ASCII删除和,错误解法与正确解法

712. 两个字符串的最小ASCII删除和两种解法:1)首先求出lcs(最长公共子序列),然后将两个字符串的ASCII和减去两倍lcs的ASCII和。2)直接使用动态规划解法一(错误解法)总的思路分为三步:使用动态规划求出最长公共子序列的长度使用dp数组构造最长公共子序列lcs分别求出三个字符串的ascii和,然后求解最终答案对于求出最长公共子序列的长度,这个问题是经典的动态规划问题。假设有两个字符串s1,s2.dp[i][j] 表示s1前i个字符与s2前j个字符的最长公共子序列的长度。

2021-06-06 15:13:02 168

原创 ARTS挑战第十一周

Algorithm1787. 使所有区间的异或结果为零 这题太难了,比普通动态规难多了,干了两三个小时,干不出来,最终cv了。不想浪费太多时间,产出效率太低。ReviewWhat is AWS Lambda? - AWS Lambda (amazon.com) lambda是aws提供的无服务计算,我们只需要提交自己的代码,操作系统、扩容缩容、日志、监控等都交给lambda即可,目前已经达到按毫秒计费的粒度,是目前真正的pay-as-you-go的云计算服务。但目前想要开发应用,需要购买aws全家桶,

2021-05-31 20:10:18 111 2

原创 Mysql-explain执行计划

关于Mysql的执行计划这块,主要有两个地方可以看:explain 和 optimization trace,这篇博客就讲一讲explain的用法吧Explain示例数据首先涉及的两个表是来自tpcc的表,tpcc使用的是github上的oltpbench。关于如何使用oltpbench,有时间再写个教程。这两个表的schema信息如下:customer表mysql> desc CUSTOMER;+----------------+---------------+------+-----

2021-05-22 13:52:38 1427 7

原创 ARTS挑战第十周

Algorithm1310. 子数组异或查询 类似前缀和数组的思路,假设 accumulateXor[i] 表示arr[0…i]的accumulateXor值,那么accumulateXor[i+1] = accumulateXor[i] ^ arr[i+1],queries[i,j] = accumulateXor[j] ^ accumulateXor[i-1](i>0) || accumulateXor[j]ReviewBarr, Kenneth C., and Krste Asanov

2021-05-15 23:37:03 100

【数字图像处理】MFC实现均衡算法

用MFC实现图像均衡算法,带详细注释;运行环境VS2017,删掉了DEBUG文件夹,用VS2017打开编译以下可直接运行

2017-11-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除