
服务器
文章平均质量分 73
咚伢
linux C
展开
-
docker常用命令和简单示例
这就意味着⼀些诸如包含运⾏进程ID之类的⽂件可能会残留在⽂件系统中。根据应该⽤程序管理状态的能⼒,如果再次启动容器,这可能会也可能不会造成问题。这个信号表示程序应该被终⽌,但是不要强迫程序终⽌。当这个信号被处理时,⼤多数程序将执⾏某种清理⼯作,但是该程序也可以执⾏其他操作,包括忽略该信号。docker diff命令会列出 3 种容器内⽂件状态变化(A - Add, D - Delete, C - Change )的列表清单。docker kill 的⾏为和标准的kill 命令⾏程序并不相同。原创 2023-12-13 14:58:24 · 1151 阅读 · 0 评论 -
docker核心原理——unionfs、namespace、cgroup
docker的核心原理其实就是cgroup+namespace+unionfs 组合实现的隔离机制,资源控制等。隔离机制。原创 2023-12-13 09:54:26 · 1427 阅读 · 2 评论 -
golang Gin 框架简单入门
golang Gin框架和middleware简单入门原创 2022-07-10 17:09:35 · 382 阅读 · 0 评论 -
ubuntu21源替换
vi /etc/apt/source.list内容替换如下清华源deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ hirsute main restricted universe multiversedeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ hirsute-updates main restricted universe multiversedeb https://mirrors.tuna.t原创 2022-03-25 08:22:15 · 1445 阅读 · 1 评论 -
Redis学习笔记——模块拓展(Redis Bloom、Hyperloglog、漏斗限流)
Redis Bloom、hll、漏斗限流布隆过滤器Redis Bloom使用git clone https://github.com/RedisBloom/RedisBloom.git cd RedisBloom make cp redisbloom.so /path/to vi redis.conf # loadmodules /path/to/redisbloom.so相关接口# 为 key 所对应的布隆过滤器分配内存,参数是误差率以及预期元素,根据运算得出需要多少hash函数 以原创 2022-02-21 07:44:53 · 447 阅读 · 0 评论 -
Redis学习笔记——基础命令(list、hash、set、zset)
Redis基础命令(list、hash、set、zset)以及使用案例原创 2022-02-21 07:40:25 · 273 阅读 · 0 评论 -
nginx惊群问题解决原理和负载均衡实现
nginx学习笔记——惊群问题和负载均衡实现原创 2022-01-09 17:31:31 · 1359 阅读 · 0 评论 -
ubuntu20 源码安装nginx以及常用命令
ubuntu20下源码安装Nginx以及常用命令原创 2022-01-02 15:40:15 · 2502 阅读 · 1 评论 -
ubuntu16.04 FastDFS+nginx 环境搭建
ubuntu16.04 FastDFS 环境搭建机器:root,ubuntu16.04gcc,g++编译器apt-get install gcc apt-get install g++ apt-get install build-essential apt-get install libtoolNginx安装和配置准备工作PCRE库安装wget https://sourceforge.net/projects/pcre/files/pcre/8.44/pcre-8. 44.tar.gz原创 2021-09-26 14:13:18 · 386 阅读 · 1 评论 -
FastDFS入门0——架构分析,上传下载原理
FastDFS架构分析FastDFS是由国⼈余庆所开发,其项⽬地址:https://github.com/happyfish100FastDFS主要的功能包括:⽂件存储,同步和访问,设计基于⾼可⽤和负载均衡。FastDFS⾮常适⽤于基于⽂件服务的站点。FastDFS由跟踪服务器(tracker server)、存储服务器(storage server)和客户端(client)三个部分组成,主要解决海量数据存储问题,特别适合以中⼩⽂件(建议范围:4KB < file_size < 500原创 2021-09-26 12:23:27 · 166 阅读 · 0 评论 -
MySQL基础11——官方集群和第三方集群简介
官方集群(自带的集群性能都很差)MySQL Replication如前一篇主从复制的原理MySQL Fabirc这是在MySQL Replication的基础上,增加了故障检测与转移,自动数据分片功能。依然是一主多从的架构,虽然只有一个主节点,当主节点宕机,会从从库中选举一个来当主节点;这个方案用来实现高可用,但是节点故障恢复时间长达30秒或更长;MySQL ClusterMySQL Cluster是多主多从结构;最大不足在于只支持 NDB;优点:高可用性,自动切分数据,数据在不同原创 2021-09-24 23:14:21 · 267 阅读 · 0 评论 -
MySQL基础10——初识集群管理
change bufferinnodb存储引擎对非唯一辅助索引的 DML 操作进行缓冲;包含 insert buffer,delete buffer,purge buffer;change buffer 是一颗B+树,所有的非唯一辅助索引的 change buffer 存储在一棵B+树上,存储在共享存储表空间;对于非唯一辅助索引的 DML 操作不是每一次直接插入到索引页,先判断插入的非唯一辅助索引页是否在缓冲区中,如果在,直接插入;如果不在,则先放到一个 change buffer 对象中,然后原创 2021-09-24 23:11:32 · 281 阅读 · 0 评论 -
MySQL基础9——SQL优化,慢日志查询
SQL优化可查看文档:MySQL :: MySQL 5.7 Reference Manual :: 8 OptimizationEXPLAIN用来查看SQL语句的具体执行过程。原理:模拟优化器执行SQL查询语句,从而知道mysql是如何处理sql语句的。执行计划ColumnMeaningidThe SELECT identifier (查询id)select_typeThe SELECT type (查询类型)tableThe table for the o原创 2021-09-22 11:05:25 · 169 阅读 · 0 评论 -
MySQL基础8——MVCC,redo,undo
多版本并发控制;用来实现一致性的非锁定读;非锁定读是指不需要等待访问的行上X锁的释放;在 read committed 和 repeatable read下,innodb使用MVCC;然后对于快照数据的定义不同;在 read committed 隔离级别下,对于快照数据总是读取被锁定行的最新一份快照数据;而在repeatable read 隔离级别下,对于快照数据总是读取事务开始时的行数据版本;为什么读取快照数据不需要上锁?因为没有事务需要对历史的数据进行修改操作;redoredo 日志用来原创 2021-09-21 12:54:58 · 199 阅读 · 0 评论 -
MySQL基础7——隔离级别,锁
隔离级别ISO和ANIS SQL标准制定了四种事务隔离级别的标准,各数据库厂商在正确性和性能之间做了妥协,并没有严格遵循这些标准;MySQL innodb默认支持的隔离级别是 REPEATABLE READ;READD UNCOMMITTED读未提交;该级别下读不加锁,写加排他锁,写锁在事务提交或回滚后释放锁;READ COMMITTED读已提交;从该级别后支持 MVCC (多版本并发控制),也就是提供一致性非锁定读;此时读取操作读取历史快照数据;该隔离级别下读取历史版本的最新数据,所以读取的原创 2021-09-21 12:53:44 · 200 阅读 · 0 评论 -
MySQL基础6——事务,ACID,并发异常
MySQL事务原理事务目的事务将数据库从一种一致性状态转换为另一种一致性状态;组成事务可由一条非常简单的SQL语句组成,也可以由一组复杂的SQL语句组成;特征在数据库提交事务时,可以确保要么所有修改都已经保存,要么所有修改都不保存;事务是访问并更新数据库各种数据项的一个程序执行单元。在 MySQL innodb 下,每一条语句都是事务;可以通过 set autocommit = 0; 设置当前会话手动提交;事务控制语句-- 显示开启事务 START TRANSACTION | BE原创 2021-09-21 12:46:39 · 109 阅读 · 0 评论 -
MySQL基础5——权限管理,root如何远程链接
权限管理创建用户CREATE USER username@host IDENTIFIED BY password;host 指定该用户在哪个主机上可以登陆,如果是本地用户可用 localhost ,如果想让该用户可以从任意远程主机登陆,可以使用通配符 % ;授权GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;privileges :用户的操作权限,如 SELECT , INS原创 2021-09-20 12:10:11 · 145 阅读 · 0 评论 -
MySQL基础4——触发器,存储过程,游标
存储过程定义SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和控制结构组成。当想要在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟,它允许控制数据的访问方式。特点能完成较复杂原创 2021-09-20 12:09:25 · 256 阅读 · 0 评论 -
MySQL基础2——CRUD(执行过程,一系列增删改查)
执行过程创建数据库CREATE DATABASE `数据库名` DEFAULT CHARACTER SET utf8;删除数据库DROP DATABASE `数据库名`;选择数据库USE `数据库名`;创建表CREATE TABLE `table_name` (column_name column_type); CREATE TABLE IF NOT EXISTS `test_tbl` ( `id` INT UNSIGNED AUTO_INCREMENT COMMENT原创 2021-09-20 12:05:54 · 243 阅读 · 0 评论 -
MySQL基础1——SQL,体系结构
SQL定义结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。SQL是关系数据库系统的标准语言。关系型数据库包括:MySQL, SQL Server, Oracle, Sybase, postgreSQL 以及 MS Access等;SQL命令包括:DQL、DML、DDL、DCL以及TCL;DQLData Query Language - 数据查询语言;se原创 2021-09-20 12:01:46 · 319 阅读 · 0 评论 -
MySQL基础6——索引(类型,约束,实现,原则)
mysql索引索引主键索引非空唯一索引,一个表只有一个主键索引;在 innodb 中,主键索引的B+树包含表数据信息;PRIMARY KEY(key)唯一索引不可以出现相同的值,可以有NULL值;UNIQUE(key)普通索引允许出现相同的索引内容INDEX(key)-- ORKEY(key[,...])组合索引对表上的多个列进行索引INDEX idx(key1,key2[,...]);UNIQUE(key1,key2[,...]);PRIMARY KEY(key1,原创 2021-09-18 11:28:04 · 256 阅读 · 0 评论 -
协程的实现思路与原理
协程的实现思路与原理为什么要有协程以同步的方式实现异步的效率,同步的效率低综合同步和异步的优势异步方式发数据socketconnect 服务器设置协议sendfd ADD epoll接数据epoll_wait()read fd解析对应数据上面两个流程是异步的。那么如何使用同步的方式实现异步的效率? 我们引入yield 和 resume原语。yield 为让出,resume为恢复那么流程就变成如下:发数据socketconnect 服务器设置协议sen原创 2021-08-16 22:40:28 · 414 阅读 · 0 评论 -
无锁CAS及无锁队列实现
CAS⽐较并交换(compare and swap, CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据 交换操作,从⽽避免多线程同时改写某⼀数据时由于执⾏顺序不确定性以及中断的不可预知性产⽣的数据 不⼀致问题。 该操作通过将内存中的值与指定数据进⾏⽐较,当数值⼀样时将内存中的数据替换为新的值。bool CAS( int * pAddr, int nExpected, int nNew )atomically { if ( *pAddr == nExpected ) {原创 2021-07-13 02:00:10 · 466 阅读 · 0 评论 -
常见锁使用(互斥,读写,自选,原子操作)以及CAS原理简介
锁 posix api为什么需要锁?数据竞争,不加锁数据修改的结果不一定为理想结果。(原子操作执行顺序可能会不同)例子#include <stdio.h>#include <pthread.h>#include <unistd.h>#define THREAD_SIZE 10int count = 0;void *func(void *arg) { int *pcount = (int *)arg; int i = 0;原创 2021-07-11 13:37:18 · 319 阅读 · 0 评论 -
定时器设计以及最小堆定时器方案实现
定时器概述定时器在服务端的应用对于服务端来说,驱动服务端逻辑的事件主要有两个,⼀个是⽹络事件,另⼀个是时间事件;在不同框架中,这两种事件有不同的实现⽅式;第⼀种,⽹络事件和时间事件在⼀个线程当中配合使⽤;例如nginx、redis;// 第⼀种 伪代码while (!quit) { int now = get_now_time();// 单位:ms int timeout = get_nearest_timer() - now; if (timeout < 0) timeout原创 2021-07-11 11:10:13 · 562 阅读 · 0 评论