- 博客(20)
- 收藏
- 关注
原创 Pthread线程同步总结——APUE学习笔记
扩展一下,如果本来不止AB两个线程在阻塞,而是多个线程在阻塞,那么因为使用if,所有的线程可能都被唤醒,接着不管条件x是否满足,全都往下执行,则发生了“惊群效应”。首次判断时x==1,此时进入if块内,执行wait函数,当前线程阻塞。以上,不管是为了防止虚假唤醒或是惊群效应,本质都是由于线程被唤醒是一回事、条件满足是另一回事,被唤醒不代表条件一定被满足,因此唤醒后需要再检查一遍条件,只有使用while才能在循环中再判断一次,而if不能,所以pthread_cond_wait函数常与while搭配使用。
2023-06-29 18:25:02 142 1
原创 迭代(非递归)遍历二叉树
详解在代码注释,后序遍历比较复杂,主要因为在将某一点加入结果集时,需要判定它的左右子节点是否被访问过(已加入结果集),因此将访问过的节点值设为999,以便压栈时检查。// 迭代先序vector<int> preorderTraversal(TreeNode* root) { vector<int> ret; stack<TreeNode*> stk; // 辅助栈 while (root || !stk.empty()) {
2022-03-24 10:06:09 608
原创 Linux IO多路复用(多路转接)
IO多路复用(多路转接)在没有IO多路复用技术前,进程在同一时间只能监控一个IO状态(一个文件描述符的状态),例如A和B两个文件在操作,定的顺序是A前B后,那么在A阻塞过程中、B在后面也是不能被操作的,这样会造成资源浪费、响应缓慢。IO多路复用:同时监控多个IO文件描述符状态,如果没有准备好的描述符、则进程始终处于睡眠状态;如果有准备好的描述符、则告诉进程,进程开始处理就绪的描述符。///////////////////////////////////////////////////////////
2021-03-17 15:48:56 296
原创 Mysql导出表、导入表相关操作
导出数据1、备份全部数据库的数据和表结构mysqldump -uroot -ppassword -A >all.sql2、只备份表结构,不备份数据mysqldump -uroot -ppassword -A -d > database.sql3、只备份数据库,不备份表结构mysqldump -uroot -ppassword -A -t > data.sql4、备份单个数据库的数据和表结构(只备份数据或者表结构可以用-t或者-d)mysqldump -uro
2020-12-16 09:01:38 257 1
原创 Mysql查询慢sql
# 查询慢sql语句:show variables like 'slow_query_log'; -- 查询是否开启记录慢sql语句结果如下:+----------------+-------+| Variable_name | Value |+----------------+-------+| slow_query_log | ON |+----------------+-------+如果是OFF,则执行以下语句:set global slow_query_log='...
2020-10-30 10:37:08 309
转载 签名验签原理(转载)
一、公钥加密假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥。我有一个文件,不能让别人看,我就用1加密了。别人找到了这个文件,但是他不知道2就是解密的私钥啊,所以他解不开,只有我可以用 数字2,就是我的私钥,来解密。这样我就可以保护数据了。我的好朋友x用我的公钥1加密了字符a,加密后成了b,放在网上。别人偷到了这个文件,但是别人解不开,因为别人不知道2就是我的私钥, 只有我才能解密,解密后就得到a。这样,我们就可以传送加
2020-05-13 13:50:47 7813 1
原创 理解 hashCode 和 equals 方法的概念与联系
来源:hashCode和equals方法都是 Object类所带的方法,所以在日常工作中,要么我们不会动这两个方法,要么就是Override(重载)这两个方法。默认值: (1)hashCode方法返回值是用Object对象的存储地址; (2)equals方法也是以Object对象的存储地址作为比较,判定结果为true/false;理解概念: (1)hashCode方法...
2020-05-05 19:30:53 256
原创 Docker基本知识
Docker常用命令镜像:docker search [镜像名] # 示例: docker search redis # 搜索redis的镜像docker pull [镜像名]:[版本号] # 示例: docker pull redis:3.2 # 下载redis3.2版本的镜像,如果版本号没写,则默认latest,也就是最新版本docker images ...
2020-02-20 11:11:25 231
转载 Golang项目结构
出自 https://www.cnblogs.com/ghgyj/p/4051768.html其实golang的工程管理还是挺简单的,完全使用目录结构还有package名来推导工程结构和构建顺序。当然,首先要说的是环境变量GOPATH,项目构建全靠它。这么说吧,想要构建一个项目,就要将这个项目添加到GOPATH,项目构建全靠它。这么说吧,想要构建一个项目,就要将这个项目添加到GOPAT...
2019-06-22 19:50:03 1177
转载 ubuntu上传代码github
一、Ubuntu下安装GitUbuntu12.04 LTS默认是已经安装Git的,可以使用 git --version 测试是否安装。如果没有安装,使用命令: sudo apt-get install git git-core 安装git二、ssh认证在Ubuntu下使用ssh命令连接github.com的SSH服务,登录名为[email protected](所有Git
2016-04-11 16:38:55 492
转载 Tmux快捷键
类似各种平铺式窗口管理器,tmux使用键盘操作,常用快捷键包括:Ctrl+b激活控制台;此时以下按键生效系统操作?列出所有快捷键;按q返回d脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话D选择要脱离的会话;在同时
2015-07-01 17:26:17 376
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人