锁:并发操作中,解决数据同步的四种方法

目录非预期结果的全局变量原子操作 拿下单体变量中断控制 搞定复杂变量自旋锁 协调多核心CPU信号量 CPU时间管理大师非预期结果的全局变量int a = 0;/* 中断处理程序 */void interrupt_handle() { a++;}/* 线程处理函数 */void thread_func() { a++;}对于一个a++(即a = a + 1)操作,CPU一般是这么做的把a从内存中加载到某个寄存器(mov eax, ebx)这个寄存器加一(inc eax)把这个寄
分类: 其他 发布时间: 11-18 08:13 阅读次数: 0

LeetCode 370.区间加法

目录题目思路c++代码题目假设你有一个长度为 n 的数组,初始情况下所有的数字均为 0,你将会被给出 k​​​​​​​ 个更新的操作。其中,每个操作会被表示为一个三元组:[startIndex, endIndex, inc],你需要将子数组 A[startIndex … endIndex](包括 startIndex 和 endIndex)增加 inc。请你返回 k 次操作后的数组。示例输入: length = 5, updates = [[1,3,2],[2,4,3],[0,2,-2]]输出
分类: 其他 发布时间: 11-18 08:13 阅读次数: 0

支持区间修改的数据结构:线段树

区间求和的方法可以使用前缀和或者前缀和差分,但是并不支持修改,因此可以使用第二种方法,线段树。时间复杂度建树:O(nlogn)查询:O(logn)区间修改:O(logn)#include <stdio.h>#include <stdlib.h>/* 线段树节点* l:节点左区间* r:节点右区间* cnt:节点的长度* sum:区间和* lazy:懒标记*/struct node { int l, r, cnt; long long su
分类: 其他 发布时间: 11-18 08:12 阅读次数: 0

LeetCode 300.最长递增子序列

目录题目思路c++代码题目给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例1输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。示例2输入:nums = [0,1,0,3,2,3]输出:4示例3输入:nums = [7,7
分类: 其他 发布时间: 11-18 08:12 阅读次数: 0

Vue2学习之路(1):Vue基础知识和组件化

vue.js前言(稍稍记录一下):其实学习Vue是冒着很大的担子的,这段时间有许多的事情要做,项目,OS,考研……而且我是个做服务器端或者后端的,搞这玩意纯属浪费时间,但是吧,不学一套完整的前端框架的话,感觉又有点不太充实。换句话来说,就是对前端要加深理解,才能更好的写后端和服务器端代码!之前看过很好的一句话,“我们说的全栈,不是说什么都会懂要做,而是在懂的基础上能更好的和前后端进行沟通,增强开发的进度,增加前后端的沟通性”,vue作为前端的一个大的较好框架,我便选择他作为我的前端框架了,后期也打算配合
分类: 其他 发布时间: 11-18 08:12 阅读次数: 0

Vue2学习之路(2):组件通信&&代理配置&&Vuex

上一篇:Vue2学习之路(1):Vue基础知识和组件化vue主要是父子组件通信(祖孙组件通信必须利用父组件进行props间接配置,或者使用v-model)<!-- MyList.vue --><template> <ul> <!-- 此处:todop='p'相当于指定了子组件的对象 --> <MyItem v-for='p in arr' :key='p.id' :todop='p'/> </ul></te
分类: 其他 发布时间: 11-18 08:12 阅读次数: 0

Vue2学习之路(3):路由

vue路由安装插件npm -i vue-router// main.jsimport VueRouter from 'vue-router'import router from './router'Vue.use(VueRouter)cd ./srcmkdir routertouch index.js// 该文件用于创建整个应用的路由器import VueRouter from 'vue-router'import About from '../components/A
分类: 其他 发布时间: 11-18 08:11 阅读次数: 0

高并发下的Nginx性能优化总结

目录安装和命令配置文件代理模式和配置反向代理动静分离日志管理日志格式日志切割高并发架构分析限制连接流限制请求流(限速)后台服务限制安全配置Nginx优化Nginx同Apache一样都是一种WEB服务器。基于REST架构风格,以统一资源描述符(UniformResources ldentifier)URl或者统一资源定位符(Uniform Resources Locator)URL作为沟通依据,通过HTTP协议提供各种网络服务。Apache的发展时期很长,而且是毫无争议的世界第一大服务器。它有着很多优点:
分类: 其他 发布时间: 11-18 08:11 阅读次数: 0

uwsgi的http和socket选项的区别

uwsgi配置文件中的http和socket的区别配置HTTP一般我们在配置python flask应用时都是使用http,让Nginx直接使用proxy_pass就把它从本地代理到前端服务器当uwsgi配置http=127.0.0.1:5000时,我们可以如下设置Nginx进行代理server{ listen 80; location / { proxy_pass http://127.0.0.1:5000/ // 必须加http:// }}此设定会将所有访问/的url映射到htt
分类: 其他 发布时间: 11-18 08:11 阅读次数: 0

Git基础知识整合及其使用

目录版本控制系统Git工作流程安装GitGit常用命令远程仓库分支Branch版本控制系统简介Version Control System,简称为VCS,版本控制系统是一种记录一个或多个文件的内容变化,以便将来查阅特定版本的内容变化情况的系统。简单来说,就是用来保存文件内容变更记录的系统,可以将文件回退到过去某个时间点的状态。作用查阅文件的修改记录,如∶修改者、修改时间、修改的文件内容等·对比不同版本中文件的变化细节将文件回溯到之前的某个状态版本控制系统的种类︰本地版本控制系统
分类: 其他 发布时间: 11-18 08:11 阅读次数: 0

x86从实际模式到保护模式(1):8086汇编语言程序与设计总结

x86从实模式到保护模式认识8086处理器8086的通用寄存器8086的内存访问和字节序8086内存访问如何执行编译好的程序跳转指令硬盘的构造和工作原理主引导扇区在屏幕上显示文本显卡和显存字符的编码和显示属性在汇编程序中使用标号段间直接绝对跳转指令寄存器的绝对间接近跳转使用相对偏移量的短跳转和近跳转在屏幕上显示数字显示数字的基本原理无符号数除法指令div异或指令xor加法指令add使用标号访问内存数据段超越前缀的使用循环、批量传送和条件转移跳过非指令的数据区逻辑段的地址的重新设定串传送指令和标志寄存器NAS
分类: 其他 发布时间: 11-18 08:10 阅读次数: 0

x86从实际模式到保护模式(2):外围设备、用户程序和保护模式初探

上一节x86从实际模式到保护模式(1):汇编语言程序与设计总结硬盘和显卡的访问和控制给汇编程序分段;数据段section data1 align=16;表示段以16B对齐,如果编译过程中缺失则填充0;数据段section data2;代码段section code;栈段section stack段的最大长度是64KBsection data1 align=16 vstart=0;段内汇编地址都为相对于本段的偏移地址加载器和用户程序头部段section header v.
分类: 其他 发布时间: 11-18 08:10 阅读次数: 0

x86从实际模式到保护模式(3):强大的分页机制

immediately
分类: 其他 发布时间: 11-18 08:10 阅读次数: 0

libevent网络库基础知识总结和代码实例(1)

目录libevent接口分析事件Event处理libevent是一款事件驱动的网络开发包,由于采用c语言开发体积小巧,跨平台,速度极快。大量开源项目使用了libevent比如谷歌浏览器和分布式的高速缓存系统Memcached。ibevent支持kqueue、select.poll epoll、iocp。内部事件机制完全独立于公开的事件APl,Libevent支持跨平台可以在Linux、*BSD、Mac OS x、Solaris、Windows等平台上编译。下载地址libevent.net安装环境(环境有
分类: 其他 发布时间: 11-18 08:10 阅读次数: 0

libevent网络库基础知识总结和代码实例(2)

目录bufferevent filterzlib压缩实战案例libevent线程池(C++)FTP服务器bufferevent filter相当于是一个数据传输中间件创建过滤器bufferevent *bev_filter = bufferevent_filter_new( bev, filter_in, // 输入过滤函数 filter_out, // 输出过滤函数 BEV_OPT_CLOSE_ON_FREE,// 关闭filter是同时关闭bufferevent 0, // 清理
分类: 其他 发布时间: 11-18 08:09 阅读次数: 0

高并发之索引、事物与锁机制、主从复制和读写分离

目录索引事物与锁机制主从复制读写分离索引先略事物与锁机制事物的四个特性如果某个数据库声称支持事务,那么该数据库必须具备ACID四个特性,即Atomicity(原子性)、Consistency (一致性)、Isolation(隔离性)和Durability(持久性)。事物并发带来的问题脏读:事务A可以读取到事务B未提交的执行结果,即读取未提交的数据。幻读:事务A读取不到事务B未提交、已提交的执行结果。这会产生一个新的问题,即事务B插入一条数据并提交,事务A查询不到事务B提交的数据,也无法插
分类: 其他 发布时间: 11-18 08:09 阅读次数: 0

MySQL基础知识笔记

目录MySQLSQL语言及其分类约束存储引擎事务索引视图DBA数据库范式MySQLSQL语言及其分类SQL:结构化查询语言,SQL是一套标准MySQL常用命令# 退出exit;# 展示所有数据库show databases;# 使用某个数据库use dataBaseName;# 创建数据库create database dataBaseName;数据库中最基本的单元是表(table),任何一张表都有行和列行(row):被称为数据/记录列(col):被称为字段SQL语句有
分类: 其他 发布时间: 11-18 08:09 阅读次数: 0

Redis应用学习笔记

目录Redis前置知识数据类型Redis事务监控Redis.conf持久化RDBAOFRedis订阅发布主从复制哨兵模式缓存穿透和雪崩缓存穿透缓存击穿缓存雪崩以我来看,这篇文章略显粗糙,毕竟所花时间不多,作为自己的一个入门吧,也可能门都没入?Redis是一个非常强大的数据库,我曾经看过他的源码,惊叹于他底层的单调而上层却能那么变化多端,这是应了那句“道生一,一生二,二生三,三生万物”(当然还是比不上我最热爱的 操作系统的,大喊一句“Linux yyds!”)。如标题所示,本篇博文主要是偏于应用的,当然
分类: 其他 发布时间: 11-18 08:09 阅读次数: 0

C/C++学习笔记(2020.11---2021.5)

CPP旅途C/C++语言的诞生CCPlusPlus非标准库程序运行过程GNU编译器集合和LLVM项目gcc和g++标准库在计算机位置Linux/UNIXWindows命名空间定义命名空间using指令using关键字的其他作用不连续的命名空间嵌套的命名空间C预处理器define在define中使用参数##运算符变参宏#undef指令条件编译#ifdef、#else、#endif指令#ifndef指令#if和#elif指令#error#line#pragma基本数据类型和表达式基本数据类型输出数据大小整形无符
分类: 其他 发布时间: 11-18 08:08 阅读次数: 0

我的2020到2021---对计算机世界的明朗

这一年半,未免过的有些太快了,不知不觉,已经大三了,回首过往的自己,真是沧海桑田啊。现在去看那些大一的小孩,玩闹,嬉戏,就怀念过去的自己,刚入学时的懵懂、青涩。我也不知道我何时掉入这个深渊,但是我也不后悔,这个世界的繁华和精彩是我在其他地方找不到的,我愿称之为唯一。犹记得大一学的爬虫入门,那一晚因为有道翻译的JSON解析而困惑不已,幸得友人午夜电话解缘,是的,若不是那晚的帮助,我可能刚入门就退出了。就是这个小小的demo,让我第一次认识到我有了掌控的能力,给了我的继续学习的毅力。爬虫是很吸引我的,因为
分类: 其他 发布时间: 11-18 08:08 阅读次数: 0