自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

destiny的专栏

业精于勤,荒于嬉 ;行成于思,毁于随

  • 博客(266)
  • 资源 (18)
  • 收藏
  • 关注

原创 环境配置

基础知识:1、配置由于国内无法安装gopls等插件,需要配置一下环境:go env -w GO111MODULE=ongo env -w GOPROXY=https://goproxy.cn,direct重新执行以下命令,即可成功:go get -v golang.org/x/tools/gopls

2021-05-03 21:30:03 236

原创 python脚本案例

1、使用mysql查询,并保存成csv文件github:https://github.com/gooddestiny/test_script/blob/master/mysql_query_as_csv.py码云:https://gitee.com/gooddestiny/script/blob/master/mysql_query_as_csv.py...

2020-04-21 20:57:49 474

原创 webbench 压力测试软件

1、安装wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gztar -xzvf webbench-1.5.tar.gzcd webbench-1.5make && make install 3、参数只支持get请求,可设定head参数常用参数:-c 并发用户数 -t 压测时...

2020-04-20 22:27:15 387

原创 Thrift框架(一):安装与编写c++ demo

1、Thrift基础1.1 数据类型基本类型:bool:布尔值,true 或 false,对应 C++ 的 bool byte:8 位有符号整数,对应 C++ 的 byte i16:16 位有符号整数,对应 C++ 的 short i32:32 位有符号整数,对应 C++ 的 int i64:64 位有符号整数,对应 C++ 的 long double:64 位浮点数,对应 ...

2020-04-15 19:10:14 2558

原创 git使用总结

1、安装后,配置用户名和邮箱$ git config --global user.name "Your Name"$ git config --global user.email "[email protected]"注意:git config --global 参数,有了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然你也可以对某个仓库指定的不同的用户名和邮箱。...

2020-04-13 21:08:52 256

原创 一个简单的线程池设计方案

一个简单的线程池本质上是生产者-消费者模型,一般是线程池负责消费任务,任务分配线程负责生产任务,任务可以由队列、链表或全局变量等数据结构承担。如果生产和消费速度差不多,可以采用环形队列结构;如果任务有优先级别,也可采用多个队列分别存放不同优先级别的任务。线程池的同步一般采用互斥锁和条件变量模式。如果为了追求效率,也可使用无锁队列结构。实例代码如下:TaskPool.h#i...

2020-03-20 21:05:11 396

原创 Linux中锁的总结

目录1 前言2 注意事项2.1 明确锁的范围2.2 减少锁的粒度3 避免死锁的建议1 前言 实际开发过程中,使用锁会带来一定性能的损失,但如果使用锁也能满足性能要求,对于锁的使用就无妨。使用锁可能带来如下性能损失:加锁和解锁操作,本身有一定的开销; 临界区的代码不能并发执行; 进入临界区的次数过于频繁,线程之间对临界区的争夺太过激烈,若线程竞争互斥...

2020-03-20 17:36:14 356

原创 高性能定时器

1 时间轮 轮中的实线指针指向轮子上的一个槽(slot),它以恒定的速度顺时针转动,每转动一步就指向下一个槽,每次转动称为一个滴答(tick)。一个滴答的时间称为是间轮的槽间隔si(slot interval),它实际上就是心跳时间。该轮共有N个槽,因此它运转一周的时间是N×si 。每个槽指向一条定时器链表,每条链表上的定时器具有相同的特性:它们的定时时间相差N×si的整数倍。...

2020-03-19 14:42:45 271

转载 常见六大Web安全攻防解析

0 前言 在互联网时代,数据安全与个人隐私受到了前所未有的挑战,各种新奇的攻击技术层出不穷。如何才能更好地保护我们的数据?本文主要侧重于分析几种常见的攻击的类型以及防御的方法。2 XSS XSS (Cross-Site Scripting),跨站脚本攻击,因为缩写和 CSS重叠,所以只能叫 XSS。跨站脚本攻击是指通过存在安全漏洞的Web网站注册用户的浏览...

2020-03-18 17:21:22 623

原创 cookie、session和token原理

目录1 背景 2 cookie2.1cookie原理2.2cookie面临的问题3 sesssion3.1sesssion原理3.2sesssion面临的问题4 token4.1token原理4.2token优势1 背景 用户数量的增多,传统的服务端存储session的方式,面对负载均衡多服务器的部署方式,不好解决...

2020-03-18 00:06:39 327

原创 MySQL问题总结

1、修改root密码在mysql中执行下面语句修改密码:use mysql;update user set authentication_string=PASSWORD("自定义密码") where user='root';update user set plugin="mysql_native_password";flush privileges;quit;2、无法远程到m...

2020-03-17 21:32:25 116

原创 单例模式 - 双锁机制

目录1 饿汉模式2懒汉模式3多线程安全的懒汉单例模式3.1 普通加锁方式3.2 双锁机制1 饿汉模式在程序启动或单件模式类被加载的时候,单件模式实例就已经被创建。主要注意如下四个部分:构造函数私有化或者保护化 .禁止拷贝和赋值 静态的共有接口 初始化静态数据成员2懒汉模式当程序第一次访问单件模式实例时才进行创建。 懒汉模...

2020-03-17 10:08:25 1742

转载 红黑树原理

1 R-B Tree简介 R-B Tree一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。红黑树的特性:(1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。(3)每个叶子节点(NIL)是黑色。[注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!](4)如果一个节点是红色的,则它的子节点必须是黑色的。...

2020-03-14 17:14:06 176

原创 ZooKeeper:介绍和原理

目录1ZooKeeper简介2ZooKeeper基本概念2.1 文件系统2.2通知机制3 分布式系统的问题3.1服务的动态注册和发现3.2Job协调问题4Zookeeper作用与特性4.1 作用4.2 特性1ZooKeeper简介 Zookeeper: 是一个分布式的、开源的程序协调服。他提供的主要功 能包括:配置管理、名字...

2020-03-13 22:52:54 208

原创 分布式系统唯一ID设计

目录1 概述2 分布式唯一ID特点3分布式唯一ID传统方案3.1 UUID3.2数据库生成3.3Redis生成ID3.4利用zookeeper生成唯一ID3.5snowflake(雪花算法)方案1 概述 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在金融、电商、支付、等产品的系统中,数据日渐增长,对数据分库分表后需要有一...

2020-03-13 20:39:57 847

原创 Linux之操作系统杂谈

1标准库函数和系统调用的区别系统调用:通向操作系统本身的接口,是面向底层硬件的。通过系统调用,可以使得用户态运行的进程与硬件设备(如CPU、磁盘、打印机等)进行交互,是操作系统留给应用程序的一个接口。标准库函数:库函数调用则是面向应用开发的,库函数可分为两类,一类是C语言标准规定的库函数,一类是编译器特定的库函数。主要的差别如下:库函数是语言或应用程序的一部分,而系统调用是内核提...

2020-03-12 23:02:50 152

原创 Linux 守护进程的原理与实现

1 守护进程 守护进程:也称为精灵进程,守护进程是一个在后台运行并且不受任何终端控制的进程。守护进程脱离于终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程也不会被任何终端所产生的终端信息所打断。2 创建守护进程流程(1)创建子进程,退出父进程:为了脱离控制终端需要退出父进程,之后的工作都由子进程完成。在Linux中父进程先于子进程退出会造成子进程成为孤儿进程,而每...

2020-03-12 22:48:18 252

转载 MySQL之 事务日志: redo和undo

目录1 概述2 redo日志2.1redo log和二进制日志的区别2.2 redo日志的基本概念2.3 日志块(log block)2.4redo log的格式2.5日志刷盘的规则2.6数据页刷盘的规则及checkpoint2.7innodb的恢复行为2.8 redo log相关变量2 undo日志2.1 基本概念2.2undo日...

2020-03-11 22:50:02 257

转载 TCP拥塞控制机制

目录1 概述2 拥塞控制状态机2.1 Open状态2.2Disorder状态2.3CWR状态2.4Recovery状态2.5Loss状态3 四大算法3.1慢热启动算法 – Slow Start3.2拥塞避免算法 – Congestion Avoidance3.3拥塞状态时的算法3.4快速恢复算法 – Fast Recovery1...

2020-03-11 18:04:33 1814 1

转载 MySQL之 分库分表

目录1 数据库的瓶颈1.1 IO瓶颈1.2 CPU瓶颈2 分库分表2.1 水平分库2.2 水平分表2.3 垂直分库2.4 垂直分表3 分库分表步骤4 分库分表问题5 扩容问题(水平分库分表,拆分策略为常用的hash法)6 分库分表总结1 数据库的瓶颈 数据库的瓶颈主要在IO和CPU领域,随着数据库的活跃连接数增加,进而逼近甚至...

2020-03-10 20:56:12 175

转载 MySQL之 索引

1、聚簇索引和非聚簇索引的区别?聚簇索引:将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据 非聚簇索引:将数据与索引分开存储,索引结构的叶子节点指向了数据对应的位置 在innodb中,在聚簇索引之上创建的索引称之为辅助索引,非聚簇索引都是辅助索引,像复合索引、前缀索引、唯一索引。辅助索引叶子节点存储的不再是行的物理位置,而是主键值,辅助索引访问数据总是需要二次查找。...

2020-03-10 16:34:09 105

原创 829. Consecutive Numbers Sum

Given a positive integerN, how many ways can we write it as a sum ofconsecutive positive integers?Example 1:Input: 5Output: 2Explanation: 5 = 5 = 2 + 3Example 2:Input: 9Output: 3Explan...

2020-03-06 21:54:57 114

原创 负载均衡算法 : 加权轮询

1 加权轮询算法背景 轮询算法没有考虑每台服务器的处理能力,实际情况是每台服务器的配置、安装的业务应用等不同,其处理能力会不一样。所以,加权轮询算法的原理就是:根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能接受相应权值数的服务请求。首先看一个简单的Nginx负载均衡配置。http { upstream cluster { server a w...

2020-03-06 20:25:27 738

原创 微服务的隔离和熔断机制

1、微服务故障背景 假设Tomcat线程池有100个线程, 每次有新的用户请求过来,Tomcat就会从中找出一个空闲的线程去执行, 抛开那些琐碎的小细节,这些请求其实非常简单, 无非就是这么几件事:根据用户ID调用用户服务, 获取用户对象。 获取该用户的推荐商品 获取该用户的积分。 把这些信息组合起来,返回给浏览器。 有意思的是前三件事情全是HTTP调用,需要...

2020-03-06 16:40:48 1364

原创 网络协议收发数据问题

1 如何收取数据? 对于收数据,当接受连接成功得到 clientfd 后,我们会将该 clientfd 绑定到相应的 IO 复用函数上并监听其可读事件。当可读事件触发后,调用 recv 函数从 clientfd 上收取数据(这里不考虑出错的情况),根据不同的网络模式我们可能会收取部分或一次性收完。收取到的数据我们会放入接收缓冲区内,然后做解包操作。对于使用 epoll 的 LT 模...

2020-03-05 23:04:09 321

原创 网络粘包解包问题杂谈

1、如何解决粘包问题? 在设计网络协议时,可能会存在粘包、丢包或者包乱序问题,但TCP协议时可靠性协议,大多数情况不存在丢包和乱序问题,但UDP协议如果不能接受少量丢包,就必须自己设计有序和可靠性传输机制(比如:RTP协议、RUDP协议,)。因此,只存在如何解决粘包的问题。 TCP 协议是流式数据格式。解决问题的思路还是想办法从收到的数据中把包与包的边界给区分出来。...

2020-03-05 22:24:42 287

原创 Linux 信号(signal)

目录1 信号的本质2 信号列表3 信号发送时机3.1 内核自动给进程发送信号3.2 进程给进程发送信号4信号处理时机1 信号的本质 软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。在软件层次上是对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是进程间通信机制中唯一的异步通信...

2020-03-04 22:51:09 375

原创 [HTTP协议] 基础知识

1、什么是Http协议无状态协议?怎么解决Http协议无状态协议?无状态协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息 无状态协议解决办法: 通过1、Cookie ; 2、通过Session会话保存。2、cookies机制和session机制的区别cookies数据保存在客户端,session数据保存在服务器端; cookies可以减轻服务器压力,但是不安全,...

2020-03-04 20:56:00 168

原创 Linux IO原理和零拷贝机制

目录1 概述2Linux I/O读写方式2.1I/O中断原理2.2. DMA传输原理2.3传统I/O方式3零拷贝方式3.1用户态直接I/O3.2 mmap + write3.2sendfile3.4sendfile + DMA gather copy3.5splice3.6 写时复制3.7Linux零拷贝对比1 概述...

2020-03-01 23:04:08 619

原创 负载均衡的原理和架构

1 为什么需要负载均衡? 从单机网站到分布式网站,很重要的区别是业务拆分和分布式部署,将应用拆分后,部署到不同的机器上,实现大规模分布式系统。分布式和业务拆分解决了,但不同的机器面临的业务压力不尽相同,为了使各机器均匀的分担业务处理压力,需要在集群前面增加负载均衡设备,实现业务被平均分发到各业务处理单元。图1 负载均衡架构2 负载均衡原理系统的扩展可分为纵向(...

2020-02-29 22:40:24 2412

原创 分布式事务解决方案

1 简述 分布式事务指事务的操作位于不同的节点上,需要保证事务的 AICD 特性。例如在下单场景下,库存和订单如果不在同一个节点上,就涉及分布式事务。 分布式系统涉及CAP理论:主要包括如下三个特性:一致性(C):在分布式系统中的所有数据备份,同一时刻是否相同值。(等同于所有节点访问同一份最新的数据副本) 可用性(A):在集群中一部分节点故障后,集群整体是否还...

2020-02-29 16:43:32 315

原创 并发编程(1): volatile、原子变量、自旋锁和互斥锁

并发编程三条特性:原子性 原子性是指一个操作是不可中断的,要么全部执行成功要么全部执行失败。 可见性 可见性是指当一个线程修改了共享变量后,其他线程能够立即看见这个修改。 有序性 有序性是指程序指令按照预期的顺序执行而非乱序执行,乱序又分为编译器乱序和CPU执行乱序。1volatile变量 volatile 变量不保证线程安全和不具备原子性的原因:在执行内存屏障之前,...

2020-02-28 22:20:24 905

原创 高并发中的惊群问题

1 惊群效应是什么? 惊群效应(thundering herd)是指多进程(多线程)在同时阻塞等待同一个事件的时候(休眠状态),如果等待的这个事件发生,那么他就会唤醒等待的所有进程(或者线程),但是最终却只能有一个进程(线程)获得这个时间的“控制权”,对该事件进行处理,而其他进程(线程)获取“控制权”失败,只能重新进入休眠状态,这种现象和性能浪费就叫做惊群效应。2惊群效应消耗...

2020-02-26 22:11:04 671

原创 Redis教程:事件、客户端和服务器

1 事件Redis服务器是一个事件驱动程序,服务器需要处理以下两类事情:文件事件(file event):Redis服务器通过套接字与客户端(或者其他Redis服务器)进行连接,而文件事件就是服务器对套接字操作的抽象。服务器与客户端(或者其他服务器)的通信会产生相应的文件事件,而服务器则通过监听并处理这些事件来完成一系列网络通信操作 时间事件(time event):Redis服务器中的...

2020-02-23 22:17:34 237

原创 Redis教程:数据持久化

目录1 RDB持久化1.1 RDB文件的创建和载入1.2 自动间隔性保存1.3 RDB文件结构2 AOF持久化2.1AOF持久化的实现2.2AOF文件的载入与数据还原1 RDB持久化 Redis提供了RDB持久化功能,可以将Redis内存中的数据库状态保存到磁盘中,避免数据意外丢失。1.1 RDB文件的创建和载入 有两个Red...

2020-02-23 20:38:27 168

原创 Redis教程:数据库

1 服务器中的数据库 Redis服务器将所有数据库都保存在服务器状态redis.h/redisServer结构体的db数组中,db数组的每个项都是一个redis.h/redisDb结构体,每个redisDb结构体代表一个数据库redis.hstruct redisServer { …… //一个数组,保存着服务器中所有数据库 redisDb *db...

2020-02-23 12:06:45 279

原创 Redis教程:主从复制

目录1 主从配置方法2 主从复制的作用3 主从复制的机制3.1全量数据同步(full resyncchrozation)3.2 增量同步4 主从复制的实现4.1主从关系的建立1 主从配置方法配置文件: 在从服务器的配置文件中加入:slaveof ip port 启动命令: redis-server启动命令后加入 --slaveof ip p...

2020-02-22 22:35:00 276

原创 Redis教程:数据对象分析(二)

目录1 类型检查与命令多态2 内存回收3 对象共享4 对象的时转时长1 类型检查与命令多态 Redis中用于操作键的命令基本上可以分为两种类型:其中一种命令可以对任何类型的键执行,比如DEL命令、EXPIRE命令、RENAME命令、TYPE命令、OBJECT命令等。举个栗子,DEL命令可以用来删除三种不同类型的键:# 字符串键127.0.0.1:6379...

2020-02-21 21:39:03 208

原创 Redis教程:数据对象分析(一)

1、 五种基本数据对象图1 redis数据对象2、 数据结构对象分析 Redis中的每个对象都由一个redisObject结构表示,该结构中保存数据相关的三个属性分别是:type、encoding、ptr。redis.htypedef struct redisObject { //类型 unsigned type:4; unsigned n...

2020-02-21 16:51:19 265

转载 消息队列(MQ):ZeroMQ 中间件设计【译文】

ØMQ是一种消息传递系统,或者乐意的话可以称它为“面向消息的中间件”。它在金融服务,游戏开发,嵌入式系统,学术研究和航空航天等多种环境中被使用。 消息传递系统基本上像应用程序的即时消息一样工作。应用程序决定将事件传送到另一个应用程序(或多个应用程序),它组装要发送的数据,点击“发送”按钮,消息传递系统负责其余的事情。然而,与即时消息传递不同,消息传递系统没有GUI,...

2020-02-14 22:53:51 688

配置文件读取demo.zip

c/c++读取配置文件,格式如下: listenip=0.0.0.0 listenport=20001 filecachedir=./filecache/ logfiledir=logs/ logfilename=fileserver

2019-09-16

银行业务系统C++

该系统采用c++实现,具有注册、登录、存钱、取钱、查询、修改密码等基本功能。

2018-10-01

模式识别 第三版(高清版)

模式识别:清华大学出版社张学工(第三版) 《模式识别(第3版)》可以作为高等院校自动化、计算机等相关专业高年级本科生和研究生学习模式识别的教材,也可以供计算机信息处理、生物信息学、数据挖掘、统计等各领域中从事模式识别相关工作的广大科技人员和高校师生参考。

2018-03-06

stm32f4 标准库 flash模拟eeprom

将官方固件库的flash模拟eeprom。移植到标准库上,并改正官方transfer的错误,优化了部分细节,并增加了多自己写入和多字节读取接口。

2017-07-26

stm32 DMA硬件输出正弦波

stm32硬件输出正弦波

2017-07-08

stm32 DAC硬件输出三角波

stm32 硬件输出三角波

2017-07-06

hex转bin工具

bin工具

2017-06-03

mips交叉编译器 win平台

win平台的mips交叉编译器

2017-06-02

ad7606+stm32f103

8路ad采集

2016-11-22

stm32f407和adc7606采集

采用stm32f407,spi总线采集8路16位精度的adc

2016-11-22

qt5之学生管理系统

采用qt5的学生成绩管理系统,包含学生成绩管理和老师成绩管理两个主要部分,

2016-10-27

qt5之摄像头调用

采用qt调用电脑的摄像头

2016-10-20

智能家居系统设计

本程序包括以stm32为核心的网关程序,网络模块采用enc28j60,协议采用lwip,家电终端采用cc2530,通信采用zigbee,包含所需的所有程序

2016-07-25

stm32矩阵键盘程序

最简单的矩阵键盘程序代码,扫描只有九行代码,通俗易懂,方便移植,

2016-07-25

智能家居网关程序

本软件采用stm32f407.网络模块采用enc28j60.服务器采用开源测试平台-未来之家,通过网关实现对终端控制。

2016-06-11

ember-stack-z5.4.02-em35x

ember最新协议栈,更少的bug,为你提高开发效率

2015-03-31

飞思卡尔电磁组决赛程序

本程序经历了华南赛区决赛的检验,通过此程序助我们顺利冲进国赛。

2014-11-05

STM32F10XX使用手册

全面介绍stm32F10XX的使用方法,其中包括各外设的介绍,是你了解stm32的好选择

2014-08-06

空空如也

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

TA关注的人

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