- 博客(69)
- 收藏
- 关注
原创 必须了解的mysql三大日志-binlog、redo log和undo log
最简单的做法是在每次事务提交的时候,将该事务涉及修改的数据页全部刷新到磁盘中。但是设置一个大一些的值可以提升数据库性能,因此实际情况下也可以将值适当调大,牺牲一定的一致性来获取更好的性能。的刷盘过程,且数据页的刷盘进度超过了日志页的刷盘进度,此时会出现数据页中记录的。,这时超出日志进度的部分将不会重做,因为这本身就表示已经做过的事情,无需再重做。文件的大小,当文件大小达到给定值之后,会生成新的文件来保存日志。记录的是数据页的物理变化,因此恢复的时候速度比逻辑日志(如。向前移动,空出位置再记录新的日志。
2024-02-05 16:20:36
793
1
转载 正确甄别API & REST API & RESTful API & Web Service之间的差异与联系
如万维网联盟(W3C)所述,Web Service提供了在各种平台和/或框架上运行的不同软件应用程序之间可以进行互操作的标准方法。Web Service的特点是具有良好的互操作性和可扩展性,以及由于使用XML而可以对程序处理过程进行描述。它们可以以松散耦合的方式组合不同的服务以实现复杂的操作。提供简单服务的程序可以通过相互交互,以提供复杂的增值服务。
2023-12-05 08:50:39
1384
原创 ECDHE_RSA验证
这里可以看到有两个certificate,一个1947长度,一个1176长度,从证书信息可以看出,1176长度的证书是CA的根证书,是用来验证1974的证书的,这个就是证书链,熟悉公钥证书体系的应该知道。熟悉pkcs1的人对这个格式肯定不陌生,这里需要补充一点,计算hash之后再计算签名之前一般是需要对数据按照预定义好的格式进行填充的,这里就使用了pkcs1。我们需要用到的公钥就在1947的证书中,其中subjectPublicKey就是我们需要的,这里有两个参数,一个是RSA的n,一个是公钥e。
2023-09-21 17:16:34
311
转载 RS485协议详解RS485与RS232优缺点比较
RS485也是UART协议,他是双向、半双工的通讯协议,双向代表可接收可发送,半双工代表同一时刻只能进行数据的接收或者数据的发送,而RS232是双向、全双工,也就是能同时收发数据。并且485采用差分的传输方式,与差分对应的是单端传输方式,并且允许多个驱动器和接收器挂在总线上,其中每个驱动器都能脱离总线!
2023-09-19 10:11:52
1459
转载 glibc库的版本兼容问题
根据报错信息可以看出so库中memcpy函数使用了高版本的实现,而运行机器上的glibc库中没有相应版本实现,因此需要提供链接低版本glibc库的so库。从截图可以看到同时用到了2.2.5和2.14版本的memcpy,说明确实只对一个文件起效。可以看出libsmscrypt.so中调用了GLIBC_2.14中的memcpy实现。5、重新编译生成libsmscrypt.so,查看memcpy使用的版本是否改变。1、查看libsmscrypt.so中memcpy用的是哪个版本实现。将test1.c中的。
2023-08-22 10:36:32
983
转载 MongoDB索引
使用索引的查询,通过索引找到文档,使用索引能够极大的提升查询效率。通过对规划器隐藏索引,用户可以在不实际删除索引的情况下评估删除索引的潜在影响。MongoDB 的文档模式是动态变化的,而通配符索引可以建立在一些不可预知的字段上,以此实现查询的加速。TTL索引需要声明在一个日期类型的字段中,TTL 索引是特殊的单字段索引,MongoDB 可以使用它在一定时间或特定时钟时间后自动从集合中删除文档。索引的稀疏属性确保索引只包含具有索引字段的文档的条目,索引将跳过没有索引字段的文档。
2023-08-15 10:51:40
77
转载 SSL / TLS 协议运行机制详解
pre master的存在在于SSL协议不信任每个主机都能产生完全随机的随机数,如果随机数不随机,那么pre master secret就有可能被猜出来,那么仅适用pre master secret作为密钥就不合适了,因此必须引入新的随机因素,那么客户端和服务器加上pre master secret三个随机数一同生成的密钥就不容易被猜出了,一个伪随机可能完全不随机,可是是三个伪随机就十分接近随机了,每增加一个自由度,随机性增加的可不是一。这里需要注意的是,客户端发送的信息之中不包括服务器的域名。
2023-04-11 14:35:02
361
转载 Linux修改ELF解决glibc兼容性问题
相信有不少 Linux 用户都碰到过运行第三方(非系统自带软件源)发布的程序时的 glibc 兼容性问题,这一般是由于当前 Linux 系统上的 GNU C 库(glibc)版本比较老导致的,例如我在 CentOS 6 64 位系统上运行某第三方闭源软件时会报:1234567891011CentOS 6 自带的 glibc 还是很老的 2.12 版本,而下载的第三方程序依赖 glibc 2.17 版本,这种情况要么自己重新编译程序,要么只能升级系统的 glibc 版本。由于我使用的程序是第三方编写并且是闭源
2022-11-28 09:35:09
1646
原创 MQTT安装部署手册
1 MQTT的协议说明详细请参考: [MQTT协议中文文档](https://mcxiaoke.gitbooks.io/mqtt-cn/content/)MQTT是一个客户端服务端架构的发布/订阅模式的<font color=red>消息传输协议</font>。它的设计思想是轻巧、开放、简单、规范,易于实现。这些特点使得它对很多场景来说都是很好的选择,特别是对于受限的环境如机器与机器的通信(M2M)以及物联网环境(IoT)。本协议运行在TCP/IP,或其它提供了有序、可靠
2022-03-30 11:11:37
3326
转载 Linux IO模式及 select、poll、epoll详解
同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。本文讨论的背景是Linux环境下的network IO。一 概念说明在进行解释之前,首先要说明几个概念:- 用户空间和内核空间- 进程切换- 进程的阻塞- 文件描述符- 缓存 I/O用户空间与内核空间现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于
2021-09-14 15:12:07
253
转载 从linux源码看epoll
从linux源码看epoll前言在linux的高性能网络编程中,绕不开的就是epoll。和select、poll等系统调用相比,epoll在需要监视大量文件描述符并且其中只有少数活跃的时候,表现出无可比拟的优势。epoll能让内核记住所关注的描述符,并在对应的描述符事件就绪的时候,在epoll的就绪链表中添加这些就绪元素,并唤醒对应的epoll等待进程。本文就是笔者在探究epoll源码过程中,对kernel将就绪描述符添加到epoll并唤醒对应进程的一次源码分析(基于linux-2.6.32内核版
2021-08-30 09:48:39
163
原创 Qt与MSVC中文乱码问题的解决方案
一、问题是什么?在学习Qt编程的过程中,大多数人都遇到过中文乱码的问题。总结起来有三类:1.QtCreator中显示的汉字变为乱码,编辑器上方有“Couldnotdecode"..."with"UTF-8"-encoding.Editingnotpossible.”的错误提示。此时,出现乱码的文档是不可编辑的。如下图所示,“你好中文!”这5个中文字符变成了乱码:...
2019-08-30 19:07:25
571
转载 SM2国密算法证书解析
SM2国密算法证书解析一、数字证书的组成1)证书数据结构数字证书使用ASN.1编码,证书文件以二进制或Base64格式存放,数据格式使用TLV(Tag Length Value)形式,T代表类型标识符,L是长度值标识符,V代表值编码。数字证书中的每一项都有个对应的类型T。一个数字证书就是一个大的...
2019-05-14 15:19:50
13122
1
转载 Netty实现SSL双向验证
Netty实现SSL双向验证一、证书准备 要使用ssl双向验证,就必须先要生成服务端和客户端的证书,并相互添加信任,具体流程如下(本人调试这个用例的时候,花了很多时间来验证证书是否正确,以及握手失败的原因,这里证书生成过程只要按流程走,本人能保证绝对没有问题)现在打开cmd,在哪个目...
2019-05-14 14:29:31
1297
原创 Git在Eclipse中的使用
Git在Eclipse中的使用前言:1)Git于SVN的不同 Git是分布式数据库,本地创建仓库,即可在本地完成版本控制(等价于SVN在本地安装服务器和客户端,SVN服务器如果在远程,断网情况将无法完成提交及版本维护)。 Git协作开发,大家可以互相克隆版本库(相当于SVN下载项目),进行开发,每人都有完整...
2019-03-22 14:18:11
900
转载 MySQL系统存储
MySQL系统存储1.MySQL数据库性能优化(1)2.MySQL数据库性能优化(2)3.MySQL数据库性能优化(3)4.MySQL数据库性能优化(4)5.MySQL数据库性能优化(5)6.MySQL简单主从方案及暴露的问题7.MySQL主从方案业务连接透明化(上)8.MySQL主从...
2019-03-04 17:31:12
251
转载 Redis基本概念和安装使用
Redis基本概念和安装使用1.Redis基本概念和安装使用2.Redis事件订阅和持久化存储3.Redis集群方案:高可用4.Redis集群方案:高性能Redis源码剖析和注释1.链表结构...
2019-03-04 17:31:01
192
原创 系统间通信
MQ:消息协议MQ:消息协议(上)MQ:消息协议(下)ActiveMQ的安装与使用1.ActiveMQ的安装与使用2.提高ActiveMQ工作性能(上)3.提高ActiveMQ工作性能(中)4.提高ActiveMQ工作性能(下)5.ActiveMQ集群方案(上)6.ActiveMQ集群方案(下)...
2019-03-04 17:30:48
328
原创 CentOS6和CentOS7进入单用户模式
CentOS6和CentOS7进入单用户模式CentOS6下进入单用户模式按e进入编辑第一项:然后移动到第二项kernel...接着按e进入编辑去掉rhgb quiet字样按回车保存回到选择项按b启动它就能看到启动过程了注意查看启动过程中卡在哪里?可以按f5键进度条/命令行界面方式切换,确认...
2019-01-21 14:41:52
2546
原创 linux动态库和静态库
gcc编译工具生成动态库和静态库之一----介绍gcc/g++ 静态动态库 混链接.静态库调用动态库Linux下静态库_库的基本概念;如何生成静态库动态库;nm查看库中包含那些函数、ar生成静态库,查看库中包含那些.o文件、ldd查看程序依赖的.so文件;gcc/g++与库相关的参数-L,-l,-flinux gcc 把静态链接库.a链接到动态链接库.so里linux动态库so...
2018-10-24 21:09:56
208
转载 Linux 查看进程消耗内存情况总结
在Linux中,有很多命令或工具查看内存使用情况,今天我们来看看如何查看进程消耗、占用的内存情况,Linux的内存管理和相关概念要比Windows复杂一些。在此之前,我们需要了解一下Linux系统下面有关内存的专用名词和专业术语概念: 物理内存和虚拟内存 物理内存:就是系统硬件提供的内存大小,是真正的内存,一般叫做内存条。也叫随机存取存储器(random access memory,RAM...
2018-09-29 13:52:24
86565
转载 Linux静态库和动态库
一、基本概念1.1、什么是库 在 windows 平台和 linux 平台下都大量存在着库。 本质上来说库是一种可执行的二进制代码(但不可以独立执行),可以被操作系统载入内存执行。 由于 windows 和 linux 的平台不同(主要是编译器、汇编器和连接器 的不同),因此二者库的二进制是不兼容的。 本文仅限于介绍 lin...
2018-09-05 14:05:37
968
转载 ActiveMQ的持久消息存储方案
ActiveMQ的持久消息存储方案当ActiveMQ接收到PERSISTENT Message消息后就需要借助持久化方案来完成PERSISTENT Message的存储。这个介质可以是磁盘文件系统、可以是ActiveMQ的内置数据库,还可以是某种外部提供的关系型数据库。本节笔者将向读者讲解三种ActiveMQ推荐的存储方案的配置使用。 如上图2.1的步骤所示,所有PE...
2018-05-17 13:53:06
4000
原创 CentOS 6.5下升级GCC编译器到4.9.1版本的方法、步骤
CentOS 6.5下升级GCC编译器到4.9.1版本的方法、步骤默认情况下,CentOS 6.5系统GCC版本为4.4,为了能够支持C++11,需要将GCC升级到4.8及以上版本。现在以4.9.1版本为例,介绍升级步骤及方法。1.下载gcc最新的源码包wget http://gcc.skazkaforyou.com/releases/gcc-4.9.1...
2017-10-19 10:09:37
4244
转载 在VS2010中使用Git【图文】
在VS2010中使用Git【图文】准备 安装Git命令行,下载地址:http://code.google.com/p/msysgit/downloads/list,其实如果没有安装Git命令行,在安装Git Extensions时会有两个勾选项,其中一个就是Git命令行(msysGit ) 安装Git Extensions,下载地址:http://sourceforge.net...
2017-09-27 09:02:48
4905
转载 Qt Creator 搭配Git 版本控制
Qt Creator 搭配Git 版本控制再次介绍一下Git的使用,这次是在Coding.net上部署项目的。这个是写给大作业合作的小伙伴们(我和我的A奶朋友们和某A的男朋友)看的。安装Git首先安装Git(msysGit) 下载地址 http://git-scm.com/downloads一路下一步完成安装。打开Git Bash,可以看到命令行界面。ssh登录为了提交
2017-09-26 17:56:34
2107
转载 Linux x86_64平台下程序链接错误和-fPIC
Linux x86_64平台下程序链接错误和-fPIC 地址无关代码,在64位下编译动态库的时候,经常会遇到下面的错误:/usr/bin/ld: /tmp/ccQ1dkqh.o: relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile w
2017-09-21 17:25:02
1899
原创 学习教程网站
易百教程:http://www.yiibai.com/菜鸟教程:http://www.runoob.com/Git起步:https://git-scm.com/book/zh/v1/%E8%B5%B7%E6%AD%A5Linux命令大全 :http://man.linuxde.net/C语言中文网:http://c.biancheng.net/cpp/hCoder:http://www.hcode...
2017-08-25 15:04:06
384
转载 超强、超详细Redis数据库入门教程
【redis是什么】redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。redis的官网地址,非常好记,是redis.io。(特意查了一下,域名后缀io属于国家域名,是british Indian Ocean territory,即英属印度洋领地)【学会安装redis】从redis.io下载最新版re
2017-07-04 09:07:27
373
原创 Protobuf3语言指南
Protobuf3语言指南1. 什么是protocol buffer protocolBuffer是用于结构化数据串行化的灵活、高效、自动的方法,有如XML,不过它更小、更快、也更简单。你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。你甚至可以在无需重新部署程序的情况下更新数据结构。2. 为什么要用protocol buffer 在实际开发中经常会...
2017-06-02 16:51:12
4087
转载 QString中文乱码
处理方法: 1. QString str = QString::fromLocal8Bit("中文"); // 源码是 GBK 编码(记事本中的 ANSI 编码)2. QString str = QString::fromUtf8("中文"); // 源码是 UTF-8 编码在QT程序中, 如果直接用QString保存中文字符串,则会出现乱码,比如下面的...
2017-06-01 16:01:32
18408
转载 dll的概念、dll导出类
1、 DLL的概念DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数、变量或类。这些可以直接拿来使用。静态链接库与动态链接库的区别: (1)静态链接库与动态链接库都是共享代码的方式。静态链接库把最后的指令都包含在最终生成的EXE文件中了;动态链接库不必被包含在最终EXE文件中,EXE文件执行时可以“动态”地引用和卸
2017-06-01 14:49:07
462
转载 LD_LIBRARY_PATH环境变量的设置
LD_LIBRARY_PATH环境变量的设置在linux下的编程,毫无疑问的迟早都要用到LD_LIBRARY_PATH这个环境变量,不过这个环境变量是基于shell的,也就是说只有在当前设置了的shell里才会有作用,因此每次打开新的shell运行程序不停地设置LD_LIBRARY_PATH,是一件非常麻烦的事情,所以我们就会想有不有什么一劳永逸地方法,使得设置之后就不用再去设置了
2017-05-18 10:04:13
7903
转载 Linux crontab定时执行任务 命令格式与详细例子
Linux crontab定时执行任务 命令格式与详细例子基本格式 : * * * * * command 分 时 日 月 周 命令 第1列表示分钟1~59 每分钟用*或者 */1表示 第2列表示小时1~23(0表示0点) 第3列表示日期1~31 第4列表示月份1~12 第5列标识号星期0~6(0表示星期天) 第6列要运行的命令 cront
2017-05-09 09:36:37
484
原创 CENTOS6 下编译安装 MYSQL 5.6.26
CENTOS6 下编译安装 MYSQL 5.6.26CentOS6下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.26。一:卸载旧版本使用下面的命令检查是否安装有MySQL Serverrpm -qa | grep mysql有的话通过下面的命令来卸载掉rpm -e mysql // 普通删除模式rp
2017-04-24 18:09:23
546
原创 CentOS6.5安装Qt4.8.6+QtCreator2.6.1
1、下载需要的包Qt4.8.6:http://download.qt.io/archive/qt/4.8/4.8.6/QtCreator2.6.1:http://download.qt-project.org/official_releases/qtcreator/2.6/2.6.1/注意:我的系统是64位的,所以下载的是64位的。按照自己的系统下载。2、安装QtCr...
2017-04-19 11:48:30
3180
2
原创 Qt注意事项
1.Qt中用到Sleep函数windows下:#include<windows.h>Sleep(DWORDdwMilliseconds)//毫秒S大写Linux下:#include<unistd.h>sleep(unsignedintseconds) //秒s小写如果想要将主线程等待10...
2017-04-19 09:37:07
737
原创 CentOS安装Git,并上传、下载
Git一.安装Git$ yum install git二. 生成SSH密钥$ ssh-keygen -t rsa -C “your email address”连续按3个回车(密码默认为空),得到 id_rsa 和 id_rsa.pub 文件,说明生成成功三.添加密钥到Github打开Github,登录自己的账号后点击自己的
2017-04-18 10:35:48
21441
1
转载 MySQL 中隔离级别 RC 与 RR 的区别
MySQL 中隔离级别 RC 与 RR 的区别1. 数据库事务ACID特性数据库事务的4个特性:原子性(Atomic): 事务中的多个操作,不可分割,要么都成功,要么都失败; All or Nothing.一致性(Consistency): 事务操作之后, 数据库所处的状态和业务规则是一致的; 比如a,b账户相互转账之后,总金额不变;隔离性(Isolation):
2017-04-01 09:48:28
2192
转载 MySQL C语言接口-预处理语句
对于多次执行的语句,预处理执行比直接执行快,主要原因在于,仅对查询执行一次解析操作。在直接执行的情况下,每次执行语句时,均将进行查询。此外,由于每次执行预处理语句时仅需发送参数的数据,从而减少了网络通信量 A:select * from tablenameB:select * from tablename服务器一般处理方式: A--->S--->A B--->
2017-03-09 10:27:27
783
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人