- 博客(34)
- 资源 (7)
- 收藏
- 关注

原创 基于Go语言实现对Redis Stream消息队列客户端的封装
1、概述早期,基于Redis实现轻量化的消息队列有3种实现方式,分别是基于List的LPUSH+BRPOP (BRPOPLPUSH)的实现、PUB/SUB发布订阅模式以及基于Sorted-Set实现方式。这三种模式分别有其相应的缺点基于List的实现做消费者确认ACK比较麻烦,不能保证消费者消费消息后是否成功处理的问题,通常需要维护一个额外的列表,且不支持重复消费和分组消费。基于PUB/SUB的实现若客户端不在线时发布消息会丢失,且消费者客户端出现消息积压,到一定程度,会被强制断开,导致消息意外丢失,可
2021-06-03 10:10:24
4210
8

原创 MYSQL 是如何实现MVCC的?
1、ACID四要素原子性(Atomicity):每个事物都是一个不可分割的最小单元,事务一旦开始,事务中的所有操作要么全部发生,要么全部不发生(回滚)。 一致性(Consistency):事务发生的前后,数据的完整性必须保持一致。 隔离性(Isolation):当多客户端并发的访问数据库的时候,数据库为每一个客户端都开启一个事务,每个客户端之间的操作互不干扰,相互隔离。 持久性(Durability):一旦事务完成之后, 期间对数据库中所有数据的操作都会持久化到物理硬盘上。但凡接触过数据库的人,
2020-12-06 14:11:02
434

原创 Java实现12306登录和查票
前言: 之前一直打算写一个模拟12306的工具,一直拖到现在,实在忍不了了,最近艰难的一步一步开始。由于想重新学习一下Java相关的知识,所以使用Java来进行开发,目前总算是有了一点进展,已经实现了登录和查票功能,先记录一下。下单以及其他抢票设置还在开发中。。。界面: 本文主要是关注功能的实现,另外就是javaswing的排版也不是很擅长,所以界面比较丑陋,将就看一下就行,目前主要是主...
2019-08-15 17:57:14
5868
6
原创 Android Binder通信机制学习(四)
新人阿彡的Android多媒体学习之路🚄🚄🚄 第一章 Android Binder通信机制学习之Binder基本原理🚄🚄🚄 第二章 Android Binder通信机制学习之Binder基本架构🚄🚄🚄 第三章 Android Binder通信机制学习之ServiceManager流程分析🚄🚄🚄 第四章 Android Binder通信机制学习之服务注册和获取流程本章目录新人阿彡的Android多媒体学习之路0、前言1、addService服务注册流程2、getService服务获取流程3、参考资料
2022-06-01 20:07:14
1669
原创 Android Binder通信机制学习(三)
新人阿彡的Android多媒体学习之路🚄🚄🚄 第一章 Android Binder通信机制学习之Binder基本原理🚄🚄🚄 第二章 Android Binder通信机制学习之Binder基本架构🚄🚄🚄 第二章 Android Binder通信机制学习之ServiceManager启动流程本章目录新人阿彡的Android多媒体学习之路0、前言1、Binder整体架构、参考资料0、前言主要参考:https://wenku.baidu.com/view/e63bd6dd0a75f46527d3240c
2022-05-30 09:31:55
1247
原创 Android Binder通信机制学习(二)
新人阿彡的Android多媒体学习之路🚄🚄🚄 第一章 Android Binder通信机制学习之Binder基本原理🚄🚄🚄 第二章 Android Binder通信机制学习之Binder基本架构本章目录新人阿彡的Android多媒体学习之路0、前言1、Binder整体架构2、Binder相关类继承关系3、IBinder类4、IInterface类0、前言主要参考:https://paul.pub/android-binder-driver/作为一名新步入Android领域的职场老鸟,奈何最近环境
2022-05-28 11:40:19
1327
1
原创 Android Binder通信机制学习(一)
新人阿三的Android多媒体学习之路第一章 Android Binder通信机制学习之Binder基本原理第二章 Android Binder通信机制学习之Binder基本架构第二章 Android Binder通信机制学习之Binder基本流程本章目录新人阿三的Android多媒体学习之路0、前言1、Android为什么选择Binder通信2、Linux下进程间通信原理回顾3、Binder跨进程通信原理4、Binder通信基本模型5、参考0、前言作为一名新步入Android领域的职场老鸟,奈
2022-05-27 15:42:24
1037
1
转载 epoll原理详解及epoll反应堆模型
文章目录一、epoll原理详解 二、epoll的两种触发模式 三、epoll反应堆模型设想一个场景:有100万用户同时与一个进程保持着TCP连接,而每一时刻只有几十个或几百个TCP连接是活跃的(接收TCP包),也就是说在每一时刻进程只需要处理这100万连接中的一小部分连接。那么,如何才能高效的处理这种场景呢?进程是否在每次询问操作系统收集有事件发生的TCP连接时,把这100万个连接告诉操作系统,然后由操作系统找出其中有事件发生的几百个连接呢?实际上,在Linux2.4版本以前,那时的select或
2020-12-06 16:05:46
278
原创 简述HTTP发展史
1、HTTP/0.90.9版本的HTTP协议极其简单,只有一个GET命令,并且改版协议规定只能返回HTML格式的字符串,不能返回别的格式的数据。请求:GET /index.html响应:<html><body>Hello HTTP/0.9</body></html>流程:客户端和服务端建立TCP连接。 客户端发送GET请求到服务端,请求index.html页面的数据。 服务端发送完响应,关闭TCP连接。特点:简单,一个请求需要一个连接
2020-12-06 14:45:42
711
原创 一文看懂HTTPS的实现原理
1、为什么需要HTTPS?在此之前,我们先来总结一下在HTTP协议中会存在的一些问题。通信使用明文(不加密)的方式,内容可能会被窃听由于HTTP协议本身是不具备加密功能的,所以也无法做到对通信整体(使用HTTP协议通信的请求和响应的内容)进行加密。也就是说HTTP报文使用明文(指未经过加密的报文)的方式发送。HTTP明文协议的缺陷是导致数据泄密、数据篡改、流量劫持、钓鱼攻击等安全问题的重要原因。HTTP协议无法对数据进行加密,所有的通信双方的数据都在网络中明文“裸奔”。通过网络的嗅探设备以及一
2020-12-06 14:43:43
569
原创 10分钟搞定分布式锁的三种实现方式
1、为什么需要分布式锁目前,几乎所有的大型网站以及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们,“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足其中的两项”。所以,很多系统在设计之初就需要考虑这三者之间的取舍。在互联网领域的绝大多数场景中,都需要牺牲强一致性来换取系统的高可用性,系统往往只需要保证“最终一致性”,只要这个最
2020-12-06 14:36:38
1641
原创 二叉搜索树的前序、中序、层次、后序遍历
一、二叉树的前序遍历Leetcode-144:二叉树的前序遍历struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {}};递归大法:vector<int> res;vector<int> preorderTraversal(TreeNode* root) { if(root == NULL
2020-05-26 18:56:46
534
原创 KMP算法初始化模式串的next数组
在使用KMP算法处理字符串查找问题的过程当中,可以利用模式串本身的对称性,在移动模式串的时候,尽量多的往后移动,减少无用的查找过程,而模式串本身的对称性一般是保存在一个next数组里面的,下面来讨论下怎么初始化next数组的值。先来看一下下面这个例子:申明一下:下面说的对称不是中心对称,而是中心字符块对称,比如不是abccba,而是abcabc这种对称。分析:i=0:模式串为m,最长前缀子串和后缀子串都为空,next[0] = 0;i=1:模式串为mb,最长前缀子串为m,最长后缀子串为b,无对称
2020-05-14 17:03:52
2198
转载 shell一文入门通
原文链接:https://blog.youkuaiyun.com/hebtu666/article/details/103049768 简单来...
2019-11-15 14:28:38
198
原创 Linux connect函数非阻塞实现
1、阻塞和非阻塞connect对于面向连接的socket类型(SOCK_STREAM、SOCK_SEQPACKET、SOCK_RDM),在通信双方读写数据之前都需要先建立连接,connect()函数用于完成面向连接的socket的连接建立过程。而connect建立连接的模式可以分为阻塞和非阻塞两种,默认情况是阻塞模式。多数实现中,connect的超时时间在75秒到几分钟之间。有时程序希望在等待...
2019-10-15 20:36:56
1547
原创 TCP学习总结(二):连接的建立与终止
1、建立连接之三次握手TCP是一个面向连接的协议。无论哪一方向另一方发送数据之前,都必须现在双方之间建立一条连接建立一条TCP连接分为三步:请求端(通常称为客户端)发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号(ISN,在这个例子中为1415531521)。这个SYN段为报文段1。服务器发回包含服务器的初始序号的SYN报文段(报文段2)作为应答。同时,将确认序号设置为客户的I...
2019-10-15 16:34:42
396
原创 Linux Connect系统调用
说明:本文的分析基于linux-2.6.0版本1、函数原型man connect可以看到函数原型为:#include <sys/types.h> /* See NOTES */#include <sys/socket.h>int connect(int sockfd, const struct sockaddr *addr,socklen_t a...
2019-10-15 16:32:29
706
原创 go爬虫爬取boss直聘岗位信息
主要是通过goquery三方包发送请求,然后解析返回的数据,再用excelize三方包写入excel文件。说明:1、代码中给定的的查询条件为C++,展示结果也是过滤C++后相关的岗位,请求第一页的url格式为:https://www.zhipin.com/c101280600-p100102/?query=C%2B%2B&page=1&ka=page-1,只需将改动最后的pa...
2019-07-25 14:54:09
906
2
原创 go语言学习总结之数组和切片
数组1、数组在初始化的时候,需要指定大小,若不指定则会进行自动推算,而且数组大小是不可变的。2、数组在作为函数的入参时,需要明确指定数组大小,并且传递方式是值传递。示例://数组声明和初始化a := [...]int{1,2,3}; //这里需要注意,如果这样声明:a := []int{1,2,3};则a为切片不是数组b := [5]int{1,2,3,4,5};//作为函数函数传...
2019-07-11 11:05:30
183
原创 Web Uploader学习总结
WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件。本文主要介绍如何使用该组件实现对图片文件的上传下载和图片回显。本文基于webuploader-0.1.5版本介绍该组件js实现部分。一、官网Demo说明: 解压官网下载下来的压缩包,打开webuploader-0.1.5/examp...
2018-12-14 16:32:01
4211
原创 基于libevent库实现的http server示例
最近在工作当中接触到libevent库,用于http server端功能还是比较强大,特在此记录一笔,以备后面查漏补缺。首先是下载安装,直接去官网下载对应版本的安装包,解压安装即可,整理就不啰嗦了。#tar#./onfigure#make#make install完成安装之后,就可以开始编写自己的示例程序了,先上代码:#include &amp;amp;amp;amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;amp;am
2018-08-31 14:23:26
18603
11
转载 使用 Socket 通信实现 FTP 客户端程序
这两天在研究FTP上传文件的事情,真的是让人很头疼,一直用的是C/C++,所以选用的是ftpputfile(),一直上传不上去,完整折腾了两天,网上的资料都找遍了,而且也不能使用ftpgetfile函数下载,仅仅可以删除,导致我们一直怀疑网络问题(尽管网络也不怎么好,但是当另一个同学传上去文件的时候,我就知道绝对不是网络的事情,而是是时候放弃ftpputfile())。后来我使用最原始的办法,...
2018-08-22 14:42:48
1295
原创 MYSQL导出数据文件到CSV文件,带列名
很多情况下使用mysqldump命令将MYSQL数据文件以SQL语句的形式导出到文本文件不能满足用户的需求,用户不关心SQL语句,只关心数据,这个时候可以采用CSV文件来保存用户的数据,因为LINUX下面无法直接写Excel文件(可借助第三方的库实现Excel文件的读写,后续将会有文章来描述),而CSV文件支持以Excel文件格式来打开。 导出数据表中的数据到CSV文件:sele...
2018-08-22 14:21:33
11066
1
转载 Linux命令发送Http的get或post请求(curl和wget两种方法)
Http请求指的是客户端向服务器的请求消息,Http请求主要分为get或post两种,在Linux系统下可以用curl和wget命令来模拟Http的请求。下面就来介绍一下Linux系统如何模拟Http的get或post请求。一、get请求: 1、使用c...
2018-08-14 16:52:32
4716
原创 Spring框架基本概念,Spring框架模块详解
简单来说的话,Spring就是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。 Spring是基于Java平台的,它为应用程序的开发提供了全面的基础设施支持。正是因为Spring专注于基础设施,这才使得开发者们能够更好的致力于应用开发而不用去关心底层的框架。Spring框架的核心功能适用于任何Java应用。在基于Java企业平台的上的大量Web应用中,积极的扩展和改
2017-05-31 22:03:45
5791
原创 Struts2工作原理详解,从Struts2的角度来理解MVC模型
1、前言 先简单说一下Struts1.x,Struts1是真正意义上的MVC模式,发布后受到广大程序开发人员的认可。性能高效、松耦合、低侵入永远是开发人员追求的理想状态,而Struts1在这些方面又恰恰存在着不足之处。在这种情况下,全新的Struts2框架应运而生,它弥补了Struts1框架中存在的不足和缺陷,并且还提供了更加灵活与强大的功能。 需要注意的是,S
2017-05-30 14:18:05
9191
1
原创 JSP中9大内置对象详解
为了简化Web应用程序的开发,在JSP中定义了一些由JSP容器实现和管理的内置对象,这些对象可以直接在JSP页面中使用,不需要页面编写者对它们进行实例化。 JSP2.0规范中定义了9种内置对象,这9个内置对象都是由Servlet API接口实现的,由JSP规范对他们进行了默认初始化,因此,在JSP中他们已经是对象了,可以直接拿来用。这9中内置对象的名称、相对应的类和作用域如下表所示
2017-05-30 13:35:37
515
原创 Http协议响应的解析
在接受到一个请求后,服务器会返回一个HTTP响应。HTTP响应由三部分构成,即状态行,相应报头和响应正文。 1、状态行 状态行由HTTP版本(HTTP-Version)、状态码(Status-Code)以及解释状态码的简单短语(Reason-phrase)三部分构成,请格式如下: HTTP-Version Status-Code Reason-
2017-05-30 11:38:09
826
原创 Http协议请求的解析
HTTP协议的请求主要由三部分组成:请求行、请求报文和请求体。其中某些请求报文和请求体的内容是可选的,请求报文和请求体之间需要用空行隔开。 1、请求行 请求行只包含三个内容:方法(Method)、请求资源的URI(Request-URI1)和HTTP版本(HTTP-Version),其格式可以表示为: Method Request-URI HT
2017-05-30 10:28:53
539
原创 一次性删除Mysql数据库中所有表的数据,保留表结构
通过sql命令的方式生成所有的truncate语句并写入到.sql脚本文件中,然后执行脚本即可完成删除操作,并且保留了表结构。
2017-05-22 10:00:02
47518
2
原创 MySql数据库备份和恢复
MySql数据库常用的备份方式是通过mysqldump命令来进行到处.sql脚本,然后通过source来执行脚本恢复数据
2017-05-21 21:24:25
380
【Win】Arnold(C4DtoA) 3.3.5 for C4DR20~24 2.zip
2021-08-22
RedisStreamMqDemo.zip
2021-06-03
Affinity Designer for Mac v1.9.1.979[TNT].7z
2021-02-27
Java实现12306登录和查票功能
2019-08-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人