自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (2)
  • 收藏
  • 关注

原创 SAML 流程讲解

SAML(Security Assert Mark Language)常用来实现SSO。本文主要梳理一下SAML的代码逻辑术语讲解: IDP: Identity provider 在单点登陆中是指统一身份认证平台。 SP:Service Provider 在单点登陆中是指需要被认证的服务方。 Assert: 断言,是指IDP 认证用户后,发送认证结果给SP的一种形式...

2019-04-18 20:51:47 9475 5

原创 ICMP报文如何通过NAT来地址转换

在搭建NSX环境的过程,起先没有在Edge路由器上设置NAT,导致VM无法访问外网。经查阅资料后发现,需要配置NAT,配置完SNAT后,比较疑惑的是没有配置DNAT,响应包是怎么把数据包中目的地址修改为VM的地址呢????抱着这个疑惑,查阅了各种资料后,大致了解其原理,下面将举例子进行介绍例如:局域网内的A:192.168.0.2/24   B:192.168.0.3/24路由器两块网...

2018-07-17 22:41:23 10091 6

原创 Keytool工具生成SSL证书以及在Java中实现SSL

1.Keytool工具生成SSL证书 keytool即JDK中自带的证书生成工具,常见的还有openssl工具。 1.生成一个自签名的CA证书,为了给Client和Server的证书签名。 命令:keytool -genkeypair (-keyalg RSA) -alias TEST_ROOT -keystore test_root.jks 解释...

2018-07-15 23:05:38 10421 2

原创 Mybatis plugin

在阅读Mybatis源码的时候,对Plugin这边进行了一部分梳理,接下来使用一个例子来说明Mybatis中Plugin的原理./* 一个电影的Service,只有一个方法是watchMovie*/public interface MovieService { void watchMovie();}public class MovieServiceImpl implements MovieService { @Override public void watchMov

2021-07-31 01:05:12 282

原创 获取symbol

1. symbol_get(kallsyms_on_each_symbol)2. symbol_get(kallsyms_lookup_name)3. cat /proc/kallsyms4. cat /boot/System.map-<uname -r>

2021-07-16 22:17:52 313

原创 【Poll】Linux Poll源码

上一篇博客大致分析了select的源码,其实poll和select的实现基本上是相同,只是poll改进了一些select的缺点 1. select可以监听的描述符是有限的,默认是1024个,因为select使用fd_set这个数据结构来保存要监听的描述符,其实fd_set就是一个unsigned long数组,这个数组默认是16,也就是16*8*8=1024。具体可以参考我上一篇博客Linux Select源码。2. 每次select返回后,response fd_set都被重置了,所以用户态的程.

2021-02-08 17:26:52 293

原创 【Select】Linux Select源码

在网络编程中,经常用到selec系统调用来判断套接字上是否存在数据可读,或者能否向一个套接字写入数据。其原型为:int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);Note: select,poll和epoll监听的fd一定是需要实现poll函数,例如ext3,xfs这些文件系统都没有实现poll函数,所以这些文件系统中被打开的文件是不能使用selec

2021-02-07 11:21:04 675

原创 Nahanni(1) KVM环境的搭建

1. 安装CentOS 7的一台虚拟机,前提是要打开硬件虚拟化,然后建议安装Server With GUI,这样方便后面使用Virt-manager工具来安装虚拟机。2.安装完毕后,使用lsmod | grep kvm 来检查kvm模块和kvm_intel(kvm_amd)模块是否已经加载,如果没有加载,使用modporbe kvm来加载相对应的模块,同时检查一下qemu-kvm, qemu-kvm-common ,qemu-img 这三个rpm包是否安装。使用rpm –qa | grep q...

2020-12-18 13:01:27 367

原创 Epoll的水平触发和边缘触发

Epoll水平触发和边缘触发的区别 (网上截图的,觉得写的挺好的)水平触发的例子 Client端写HelloWorld给server,但是Server每次只读取5字节,所以当Client写10字节的内容给Server,第一次读取后,Server依然会有EPOLLIN的事件,然后读取剩下的5字节。 代码没有将已连接的connection保存在数组中或链表中,只是一个demo。//server code#include <stdio.h>#include...

2020-10-21 09:57:13 511

原创 线程,进程与信号

当一个进程有多个线程的时候,通过kill 命令来给某个进程发送信号的时候,那到底是谁来响应这个信号呢?一定是主线程么?同时,还要知道信号是可以打断一些阻塞函数的(accept,read ...)实验: 首先我们使用sigaction函数来注册一个信号处理函数,来响应SIGTERM信号,然后我们创建一个线程,创建线程完毕后,我们在主线程中,使用pthread_sigmask函数来屏蔽SIGTERM信号。当程序跑起来后,我们使用kill 命令来向进程发一个SIGTERM信号,查看是否是子线程来..

2020-10-16 13:19:14 275

原创 Linux signal 中断 waitpid 系统调用

代码文件test.c#include <stdio.h>#include <sys/types.h>#include <unistd.h>#include <errno.h>#include <sys/wait.h>#include <signal.h>void handler(int signo){ printf("i receive a sig,sig number is %d\n",signo);}in

2020-10-14 17:42:16 368

原创 pthread_cond 为什么要和mutex一起用

一般使用pthread_cond的方式 ThreadA: (消费者)pthread_mutex_lock (&count_lock); while(count==0) pthread_cond_wait( &count_nonzero, &count_lock); count=count -1;pthread_mutex_unlock (&count_lock);ThreadB: ...

2020-09-20 20:03:11 272

原创 docker swarm] Routing Mesh 网络原理

Routing Mesh(路由网格) 个人理解,我们在常见服务的时候,使用-p 来映射端口,当创建完成后,我们可以使用任何一台docker swarm 节点的ip+port来访问对应的服务。如下图(图片是网络资源,如有侵权,请告知,立马删除)以上的图片也说明了一个问题,就是我们还要一个负载均衡器来均衡流量到不同的主机,如果没有这个负载均衡器,如果某台主机挂到了,那么访问这个主机+port的流量一样是挂掉的。所以还需要上层一个负载均衡器来负载流量到不同主机,然后主机上ingress网络..

2020-07-26 17:36:27 799

原创 [Docker Swarm] 搭建docker Swarm

搭建前准备: manager node: Centos 7 worker node: Centos 7由于比较熟悉iptables,这里决定先将firewalld关闭,然后安装iptables来使用,分别在manager node 和worker node中运行以下命令 Systemctl stop firewalld Systemctl disable firewalld yum install iptables-services -y systemctl...

2020-07-26 16:31:20 175

原创 【Docker Network 2】 Docker Swarm overlay

在docker 1.12 之后,可以直接使用Swarm,无需再进行安装。从上一节中看到 docker network ls 命令只会显示3种网络模式。先简单介绍Swarm 的命令swarm init 在管理节点上创建一个节点swarm join 加入一个新的节点到已有集群 docker swarm join-token worker 查看加入一个worker到集群的命令 docker swarm join-token manager 查看一个加入manager到集群...

2020-07-19 20:00:14 357

原创 【Docker network 1】 docker 网络模式详解

Docker 网络模式 在刚安装docker后,docker默认是拥有三种docker网络模式 1. Bridge(在安装docker后,宿主机会多出一个网络设备docker0。默认情况下容器的网络模式为bridge,即所有的container都连接在docker0上,实现二层互通。当然取决enable-icc的值。docker0的enable-icc 为true) --net=bridge 2. none (创建container后,网络配置没有指定,需要手动配置,...

2020-07-19 17:28:20 2150

原创 sk_buff 常用的方法总结

1. alloc_skb()作用: 1. 创建sk_buff变量,并为该变量分配内存 2. 创建一个数据缓冲区,用来存放数据包。源码:static inline struct sk_buff *alloc_skb(unsigned int size, gfp_t priority){ return __alloc_skb(size, priority, 0, -1...

2019-09-19 19:32:33 543

原创 JAVA中利用JNA调用dll或so

JNA中使用不同的接口来映射C中的结构体,指针,函数指针等概念。所以下面列举一个很经典的例子。调用DLL1. 在VS中创建一个DLL项目。 选择创建Win32 Console Application,然后选择DLL 2. 编写Demo#include "stdafx.h"#include <stdlib.h>#include <iost...

2019-08-31 00:00:19 777

原创 初探命名管道

突然间接了一个python的任务,本人由于没有学习过python,所以表示很慌张,但是Python代码看起来还是很容易,但是在任务将要结束的时候,发现了一个问题,让我周末两天都在搞这个问题。我们的项目是两个进程通过namepipe 来进行通信,其中一个进程是Client ,另一个进程是server。server端调用dll来完成一些任务,然后server会把任务完成的进度通过namepipe显...

2019-08-12 20:15:45 241

原创 Linux Bridge

1. 如何创建Bridge brctl addbr br0 创建bridge brctl addif br0 eth0 将eth0物理网卡附加到Bridge ifconfig eth0 0.0.0.0 取消eth0的ip地址 ifconfig br0 192.168.100.2 netmask 255.255.252.0 up 给br0...

2019-08-06 20:20:38 420

原创 JAVA中线程小谈

首先要介绍的是Object类的三个方法wait(long timeout)notify()notifyAll()这三个方法必须要在同步块中才能调用,即首先获取对象的monitor,常用的方式如下 synchronize(obj){ obj.wait() ...}当对象调用wait方法的时候,就意味着放弃了该资源(monitor)...

2019-05-23 21:39:01 200

原创 网络单向通信

目前很多软件都是基于一个C/S或B/S架构的,像公司的产品就是杀毒产品,在每个pc上都要安装客户端,然后有一个统一的Server端,用来下发策略以及查看各个终端的事件。但是在企业级用户中,会经常发现,企业更喜欢是将所有的PC终端都放在内网中,而Server放在可以连接外网的网络中,而且只有Agent可以访问Server,Server不能主动连接Agent。这就需要一个单向通信的原理了。之前本人...

2019-05-13 22:52:55 5102

原创 C++中普通函数,虚函数和纯虚函数的不同

本人对java可能比较熟悉,现在在学习C++的过程,会与Java进行对比的学习,在学习到多态的时候,对虚函数,纯虚函数和普通函数的概念不是很清楚,在查阅资料后,进行一个梳理首先是Java中,比如类A继承自类B,类B中的方法只要不是Final修饰的,类A都可以对其进行重写,而且在调用的时候,对执行类A中重写后的方法。而C++就有所不同了。在C++中,比如类A继承自类B,类B中的方...

2019-04-29 20:35:55 546

原创 XSS - simple java code

XSS- Cross Site Script,为了与CSS样式表区分。使用XSS来简写。中文名臣为跨站脚本攻击。这里记住一句,就是有输入的地方就存在XSS攻击的可能。我们了解过XSS的人,可能都会说通过转义编码就可以预防一个XSS攻击。这句话说的没错,但是,这里必须考虑到输入的数据会被放置到哪里? 1.HTML的常规标签中。例如<p></p> 、 <...

2019-04-25 21:03:44 124

原创 Http重定向

HTTP1.0在介绍302时说,如果客户端发出POST请求后,收到服务端的302状态码,那么不能自动的向新的URI发送重复请求,必须跟用户确认是否该重发,因为第二次POST时,环境可能已经发生变化(嗯,POST方法不是幂等的),POST操作会不符合用户预期。但是,很多浏览器(user agent我描述为浏览器以方便介绍)在这种情况下都会把POST请求变为GET请求。HTTP1.1在介绍302时...

2019-04-11 23:03:58 359

原创 SSL通信证书详解

在Https通信中,客户端需要验证服务器提供的数字证书。数字证书中包含了公钥以及其他一些信息。那么数字证书中的参数是什么意思呢? 这里列举一个证书(自签名证书) 生成证书的方式:https://blog.csdn.net/sinat_33822516/article/details/81057646 1.版本 这个很好理解,就是证书的版...

2019-04-11 19:23:03 2937

原创 HTTP (一)

HTTP Request报文结构Http request报文分为4部分 1. 请求行 请求行主要包括了请求方法,请求的URI 以及 Http协议的版本。 2.请求头 请求头是以<key,value>的形式出现,例如cookie,referer都是在请求头中,每一个<key,value>占一行。...

2019-04-09 20:30:43 237

原创 Tomcat 如何开启Https

1.首先创建一个自签名的证书,步骤见Keytool工具生成SSL证书以及在Java中实现SSL https://mp.csdn.net/postedit/810576462.打开tomcat的配置文件server.xml (<tomcatInstallLocation>/conf/) 在文件中添加如下配置 <Connect...

2019-03-29 18:37:50 815

SimpleJWT.java

SimpleJWT.java

2021-09-30

寒江独钓,网络安全的开发基础

寒江独钓,网络安全的开发基础,本书的后几章节,对协议驱动和NDIS进行了详解。很好的学习windows驱动书籍

2019-01-29

空空如也

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

TA关注的人

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