自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 Golang中的interface和interface{}

总结通过考虑数据类型之间的相同功能来创建抽象,而不是相同字段interface{} 的值不是任意类型,而是 interface{} 类型接口包含两个字的大小,类似于 (type, value)函数可以接受 interface{} 作为参数,但最好不要返回 interface{}指针类型可以调用其所指向的值的方法,反过来不可以函数中的参数甚至接受者都是通过值传递一个接口的值就是就是接口而已,跟指针没什么关系如果你想在方法中修改指针所指向的值,使用 * 操作符Golang中的interfa

2022-01-14 16:15:16 836

原创 加密-笔记

CBC - 密码块链模式 --最常用特点:密文没有规律需要一个初始化向量,是一个数组,该长度与明文分组长度相等。加密解密所使用的初始化向量值必须相同。CFB密码反馈模式特点:密文没有规律需要一个初始化向量,是一个数组,该长度与明文分组长度相等。不需要填充OFB 输出反馈模式不需要填充需要一个初始化向量,是一个数组,该长度与明文分组长度相等。CTR模式 -常用密文没有规律不需要初始化向量,不需要填充...

2022-01-12 15:58:06 2106

原创 mysql -锁

mysql锁机制分为 表锁、行锁。表锁:行锁:共享锁、排它锁mysql InnoDB引擎默认的修改数据语句,update,delete,insert都会自动给涉及到的数据加上排他锁select语句默认不会加任何锁类型,如果加排他锁可以使用select …for update语句,加共享锁可以使用select … lock in share mode语句点击进入...

2021-12-13 22:19:27 844

原创 tcpdump抓包规则命令大全

下面的例子全是以抓取eth0接口为例,如果不加-i eth0是表示抓取所有的接口包括lo。 1、抓取包含10.10.10.122的数据包 # tcpdump -i eth0 -vnn host 10.10.10.122 2、抓取包含10.10.10.0/24网段的数据包下面的例子全是以抓取eth0接口为例,如果不加”-i eth0”是表示抓取所有的接口包括lo。1、抓取包含10.10.10.122的数据包tcpdump -i eth0 -vnn host 10.10.10.1222、抓取包含10.1

2021-11-26 18:35:50 12415

原创 TCP报文-选项字段

CP头部的最后一个选项字段(options)是可变长的可选信息。这部分最多包含40字节,因为TCP头部最长是60字节(其中还包含前面讨论的20字节的固定部分)。典型的TCP头部选项结构如图所示。选项的第一个字段kind说明选项的类型。有的TCP选项没有后面两个字段,仅包含1字节的kind字段第二个字段length(如果有的话)指定该选项的总长度该长度包括kind字段和length字段占据的2字节第三个字段info(如果有的话)是选项的具体信息常见的TCP选项有7种如图图1、kind

2021-11-26 18:24:02 2445

原创 tomcat 部署方式

方法一:直接将 web 项目文件(一般是复制生成的war包)复制到tomcat的webapps目录中。方法二:(推荐使用)在本地tomcat的conf目录中,新建Catalina/localhost目录(这里要注意文件名的大小写),然后在该目录下新建一个xml文件,名字不可以随意取,要和path后 的名字一致,我这里就应该是jstore.xml文件,它的具体内容为:<Context docBase="C:\work\jstore\web" path="/jstore" reloadab

2021-04-12 12:33:53 62

原创 etcd-操作

title: DemoThis series of examples shows the basic procedures for working with an etcd cluster.Set up a clusterOn each etcd node, specify the cluster members:TOKEN=token-01CLUSTER_STATE=newNAME_1=machine-1NAME_2=machine-2NAME_3=machine-3HOST_1=1.

2021-04-08 17:45:28 134

原创 etcd-初识

一致性-etcd采用 Raft算法raft算法大致原理leader:对客户端通信的入口,对内数据同步的发起者,一个集群通常只有一个leader节点follower:非leader的节点,被动的接受来自leader的数据请求candidate: 一种临时的角色,只存在于leader的选举阶段,某个节点想要变成leader,那么就发起投票请求,同时自己变成candidate。如果选举成功,则变为candidate,否则退回为follower选举过程注意:term作为逻辑时钟而存在。每个节

2021-04-08 17:45:06 115

原创 Java

继承中构造方法的特点每个子类构造方法的第一条语句都是 super()因为子类会继承父类的数据,初始化之前,一定会调用父类的初始化.哪怕子类初始化的时候调用的是有参构造final修饰子类方法,子类不能重写final修饰成员变量, 相当于常量,不能再次赋值.finial修饰类 不能被继承内部类内部类可以直接访问外部类的成员,包括私有public class Outer { private int num; //内部类 public class Inner {

2021-04-08 17:42:52 59

原创 c 本地socket

socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket。虽然网络socket也可用于同一台主机的进程间通讯(通过loopback地址127.0.0.1),但是UNIX Domain Socket用于IPC更有效率:不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程。这是因为,IPC机制本质上是可靠的通讯,而网络协议是为不可靠的通讯设计的。UNIX Domain .

2021-02-09 14:52:16 203

原创 c UDP-实现广播/组播

IP:192.168.42.255(广播) --32位 255 255.255.255.255IP:192.168.42.1(网关)int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen); //默认无权限,需要给sockfd开放广播权限。server.c#include <stdio.h>#include <unistd.h>#inclu.

2021-02-09 13:36:44 1359

原创 c 网络通信-UDP

由于UDP无需创建连接,所以UDP开销较小,数据传输速度快,实时性较强。多用于对实时性要求较高的通信场合,如视频会议、电话会议等。但随之也伴随着数据传输不可靠,传输数据的正确率、传输顺序和流量都得不到控制和保证。所以,通常情况下,使用UDP协议进行数据传输,为保证数据的正确性,我们需要在应用层添加辅助校验协议来弥补UDP的不足,以达到数据可靠传输的目的。与TCP类似的,UDP也有可能出现缓冲区被填满后,再接收数据时丢包的现象。由于它没有TCP滑动窗口的机制,通常采用如下两种方法解决:服务器应用层.

2021-02-08 16:54:49 366

原创 c 线程池

threadpool.h#ifndef __THREADPOOL_H_#define __THREADPOOL_H_typedef struct threadpool_t threadpool_t;/** * @function threadpool_create * @descCreates a threadpool_t object. * @param thr_num thread num * @param max_thr_num max thread size * @para

2021-02-08 14:14:53 151

原创 c- io多路复用 epoll

epoll不仅仅可以监听socket, 管道符,文件都可以监听.epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它会复用文件描述符集合来传递结果而不用迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。目前epell是linux大规模并发网络程序中的热门

2021-02-08 14:13:10 191

原创 c- io多路复用 poll

参数说明:点击进入server.c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <netinet/in.h>#include <arpa/inet.h>#include <poll.h>#include <errno.h>#include <ctype.h>#include "wrap.h"#defin

2021-02-07 14:27:44 119

原创 c- io多路复用 select

select能监听的文件描述符个数受限于FD_SETSIZE,一般为1024,单纯改变进程打开的文件描述符个数并不能改变select监听文件个数解决1024以下客户端时使用select是很合适的,但如果链接客户端过多,select采用的是轮询模型,会大大降低服务器响应效率,不应在select上投入更多精力声明#include <sys/select.h>/* According to earlier standards */#include <sys/time...

2021-02-07 10:50:26 169

原创 c TCP 通讯

3. MTU、mss、半关闭以太网帧最大字节限制为1500个字节,所以一次性发送超出限制的会多次发送4. 错误处理read返回值:返回值大于0, 实际读取到的字节数返回值等于0 数据读完(读到文件、管道、socket 末尾–对端关闭)返回值-1 异常出现的情况,可能是因为系统慢速调用,进程被信号中断了.异常情况1: errno == EINTR 被信号中断 重启/quit异常情况2: errno == EAGAIN (EWOULDBLOCK) 非阻塞方式读,并且没有数据异常情况

2021-02-05 13:49:48 435

原创 c tcp-多线程

server.c#include <stdio.h>#include <string.h>#include <arpa/inet.h>#include <pthread.h>#include <ctype.h>#include <unistd.h>#include <fcntl.h>#include "wrap.h"#define MAXLINE 8192#define SERV_PORT 8000

2021-02-05 13:34:25 153

原创 c tcp -多进程

wap.h#ifndef __WRAP_H_#define __WRAP_H_void perr_exit(const char *s);int Accept(int fd, struct sockaddr *sa, socklen_t *salenptr);int Bind(int fd, const struct sockaddr *sa, socklen_t salen);int Connect(int fd, const struct sockaddr *sa, socklen_t s

2021-02-05 11:27:54 97

原创 c 封装的tcp

wrap.h#ifndef __WRAP_H_#define __WRAP_H_void perr_exit(const char *s);int Accept(int fd, struct sockaddr *sa, socklen_t *salenptr);int Bind(int fd, const struct sockaddr *sa, socklen_t salen);int Connect(int fd, const struct sockaddr *sa, socklen_t

2021-02-04 16:33:47 179

原创 c- 套接字socket

socket 记录了 本机IP和port,是Linux文件的一种类型(伪文件)socket创建以后,也会有个文件描述符, 但是有两个缓冲区. ,一个缓冲区用于写入, 一个缓冲区用于读出.socket是全双工的 既能写入,也能读出.ip地址:在网络环境中唯一标示一台主机端口号:标示一台进程socket:IP+port 网络环境中唯一标示一台进程管道:而......

2021-02-03 11:11:01 205

原创 c-互斥锁 读写锁 信号量

互斥锁pthread_mutext_t mutext;# include <stdio.h># include <pthread.h> pthread_mutex_t mute;int value = 0;void *fun(void *arg){ //上锁,函数是阻塞的 pthread_mutex_lock(&mute); printf("now is %d and old value is %d \n",*((int *)arg)

2021-01-29 17:38:59 428

原创 c 线程

创建线程以后,地址空间没有变化,进程退化成线程. 创建的子线程和主线程公用一份地址空间.主线程和子线程共享的部分.text.bass.data堆 动态库加载区 环境变量 命令行参数可以通过 全局变量 或 堆进行通信不共享的部分栈...

2021-01-20 14:59:15 1403 3

转载 c创建守护进程

创建守护进程以及为什么fork两次

2021-01-20 11:53:21 120

转载 c语言-信号2

未决信号集,阻塞信号集,自定义信号集https://blog.csdn.net/u013511885/article/details/102935537

2021-01-19 18:42:19 71

原创 c语言-信号

特点简单携带的信息量少使用在某个特定场景中信号的状态产生未决状态- 没有被处理递达状态- 信号被处理了通过man函数查找信号man 7 signal概念:阻塞信号集/未决信号集在 pcb 中,不能够直接操作阻塞信号集 - 要屏蔽的信号未决信号集 - 没有被处理的信号的集合...

2021-01-19 16:40:29 772 1

原创 c语言-mmap创建内存映射区

创建有名内存映射区#include<stdlib.h>#include<string.h>#include<sys/types.h>#include<sys/stat.h>#include<unistd.h>#include<fcntl.h>#include<sys/mman.h>#include<stdio.h>int main(){ int fd=-1; int ret=-1;

2021-01-18 18:00:03 418

原创 c语言-管道-有名管道

有名管道特点:在磁盘上有这么一个文件, 当ls -l查看该文件时, 他的类型为p是一个伪文件,占用磁盘大小永远为0.数据存储在内核里.有一个对应的缓冲区.fifo文件可以用io函数进行操作open/close read/write 但不能用lseek进程间通信:两个不相干的进程可以通信使用场景:没有血缘关系的进程间通信创建方式:命令方式创建: mkfifo 管道名函数方式创建: mkfifo函数代码如下:在这里插入代码片......

2021-01-13 13:57:42 906

原创 c语言-fork- 子进程

#include<stdio.h>#include<sys/types.h>#include<sys/stat.h>#include<unistd.h>int main(){ int i = 0; pid_t pid; for(i = 0; i<3; i++) { pid = fork(); //这里给break掉 是为了子进程重复创建子进程 if(pid == 0){ break; } } //第一个子进程

2021-01-12 14:01:36 501

原创 c语言-管道-创建匿名管道

创建匿名管道#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h>#include <sys/types.h>#include <sys/

2021-01-12 13:56:57 824 1

原创 go 编译过程-day01

1 编译过程将高级语言编译成机器可以执行的语言的过程go语言编译方式:go build 源代码.gogo run 源代码.go//交叉编译CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.goCGO_ENABLED 是否使用cgo编译,0为不使用,1为使用GOOS 指定编译的操作系统GOARCH 指定操作系统的位数编译流程:源代码(source code) → 预处理器(preprocessor) → 编译器 (comp

2020-12-04 16:57:08 235

原创 Mysql 自带工具的使用

这里写自定义目录标题mysqladminmysqldumpmysqlimportmysqlbinlogmysqladminmysqldump一般做一些管理相关的工作还可以做一些 start slave, stop slave,kill 掉某个连接线程等/usr/local/mysql/bin/mysqladmin -uroot -p000000. -h 127.0.0.1 pingmys...

2019-08-09 14:23:17 157

翻译 mysql redo undo日志

数据库存放数据的文件,本文称其为data file。数据库的内容在内存里是有缓存的,这里命名为db buffer。当有数据写入,先存入db buffer中,如果db buffer已满,则写入 data file。日志在内存里也是有缓存的,这里将其叫做log buffer。磁盘上的日志文件称为log file。log file一般是追加内容,可以认为是顺序写,顺序写的磁盘IO开销要小于随机写。...

2019-08-09 11:25:40 124

原创 mysql-binlog的使用方法

binary log,是二进制日志文件,有两个作用,一个是增量备份,另一个是主从复制,即主节点维护一个binlog日志文件,从节点从binlog中同步数据,也可以通过binlog日志来恢复数据。查看开启状态show variables like '%log_bin%';开启binlog打开/etc/my.cnf 找到[mysqld]模块下追加server-id=1log...

2019-08-08 17:57:06 852

空空如也

空空如也

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

TA关注的人

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