bind

【极客思考】计算机网络:Wireshark抓包分析TCP中的三次握手与四次挥手

廉价感情. 提交于 2020-10-24 11:40:38
【 摘要 】 本文重点分析计算机网络中TCP协议中的握手和挥手的过程。 【前提说明】 前段时间突然看到了一篇关于TCP/IP模型的文章,心想这段时间在家里也用wireshark抓了点包,那么想着想着就觉得需要复习一下网络知识,于是就有这篇博文的诞生。当然网上关于TCP相关的知识点也是芸芸,闲着无事也可以多google深入理解一下,本文重点在分析TCP协议中的握手和挥手的过程。 【抓包前准备】 既然要抓包,我的装备是个人电脑,操作系统是Mac OS。抓包工具是wireshark,至于怎么安装和一些基本的操作, 可以点击参考这篇文章。 用本地电脑模拟server和client,都是localhost的地址,但是我选择的是不同的端口进行标识。server的端口号:12345;client的端口号:50784。因为是用的本机做的实验,所以wireshark监听的不是网卡而是Loopback:lo0,如图所示: 以下是我模拟client和server的代码: 1)server端 -Python 代码 01 #! /usr/bin/python 02 # -*- coding: utf-8 -*- 03 04 import socket 05 06 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 07 08 server

Netty之旅三:Netty服务端启动源码分析,一梭子带走!

被刻印的时光 ゝ 提交于 2020-10-24 09:30:09
Netty之旅三:Netty服务端启动源码分析,一梭子带走! Netty服务端启动流程源码分析 前记 哈喽,自从上篇《Netty之旅二:口口相传的高性能Netty到底是什么?》后,迟迟两周才开启今天的 Netty 源码系列。源码分析的第一篇文章,下一篇我会分享客户端的启动过程源码分析。通过源码的阅读,我们将会知道, Netty 服务端启动的调用链是非常长的,同时肯定也会发现一些新的问题,随着我们源码阅读的不断深入,相信这些问题我们也会一一攻破。 废话不多说,直接上号! 一、从EchoServer示例入手 示例从哪里来?任何开源框架都会有自己的示例代码,Netty源码也不例外,如模块 netty-example 中就包括了最常见的 EchoServer 示例,下面通过这个示例进入服务端启动流程篇章。 public final class EchoServer { static final boolean SSL = System.getProperty("ssl") != null; static final int PORT = Integer.parseInt(System.getProperty("port", "8007")); public static void main(String[] args) throws Exception { // Configure SSL

SpringBoot整合Spring Security和OAuth2

↘锁芯ラ 提交于 2020-10-24 06:31:41
OAuth2介绍 OAuth协议为用户资源的授权提供了一个安全的、开放而又简易的标准。OAuth不需要用户提供用户名、密码等信息,就可以实现多个系统之间的资源共享。 OAuth2的四中授权模式 授权码模式 简易模式 密码模式 客户端模式 测试环境 openjdk11 springboot 2.3.1 spring security spring cloud oauth2 项目地址 https://gitee.com/randomObject/springboot_security_oauth 测试项目结构 因为spring OAuth2封装好了常用的认证授权操作,所有需要使用OAuth2提供的表结构。项目中有提供。 父工程pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>

OpenLDAP 2.4.44 安装部署避坑指南

时光总嘲笑我的痴心妄想 提交于 2020-10-24 04:43:10
写在前面: 有关openLDAP的部署文档在网上随意能找到很多,但是最近用到才发现网上的教程多数是旧版的用法,例如"/etc/openldap/slapd.conf “早已弃用,更有甚者直接修改/etc/openldap/slapd.d/下的文件,打开的时候上面明确写着不能修改此文件,那是多大的勇气能写成文档出来分享呢? 通过参考官方文档并且借鉴了两位前辈的文档,我整理出来如下步骤,并经过验证 一、环境准备 1. 操作系统: CentOS 7.x 2. 关闭防火墙、selinux 3. yum源(略) 忘了用不用依赖epel-release 自己试试 二、OpenLDAP服务安装 1. 服务安装 yum install -y openldap openldap-servers openldap-clients openldap-devel 2. 生成OpenLDAP管理密码 [root@localhost ~]# slappasswd New password: //此处输入密码 Re-enter new password: //再次密码 {SSHA}CrdqT5EAh8H2y2SorEUbuxP3R5eOggjb 记录好生成的密码,后面用得到 3. 配置OpenLDAP OpenLDAP 2.3之后的版本取消了/etc/openldap/slapd.conf的配置方式

Mybatis系列第十讲 动态SQL,这么多种你都会?

谁都会走 提交于 2020-10-24 04:08:52
Mybatis系列第十讲 案例sql脚本 if元素 choose/when/otherwise元素 where元素 set元素 trim元素 foreach元素 案例:in多值查询 案例:批量插入 sql/include元素 bind元素 #和$ 案例sql脚本 DROP DATABASE IF EXISTS `javacode2018` ; CREATE DATABASE `javacode2018` ; USE `javacode2018` ; DROP TABLE IF EXISTS t_user ; CREATE TABLE t_user ( id int AUTO_INCREMENT PRIMARY KEY COMMENT '用户id' , name VARCHAR ( 32 ) NOT NULL DEFAULT '' COMMENT '用户名' , age SMALLINT NOT NULL DEFAULT 1 COMMENT '年龄' ) COMMENT '用户表' ; INSERT INTO t_user VALUES ( 1 , '路人甲Java' , 30 ) , ( 2 , '张学友' , 50 ) , ( 3 , '刘德华' , 50 ) ; if元素 相当于java中的if判断,语法: < if test = "判断条件" > 需要追加的sql < /

js中call,apply,bind之间的区别

戏子无情 提交于 2020-10-23 18:40:31
简单来说相同点:都是用来改变this的指向,第一个参数都是this要指向的对象。都可以利用后续参数传参。 区别: call(函数名,“参数1”,“参数2”)//后面的参数是对象类型 apply(函数名,[“参数1”,“参数2”]//后面的参数是数组类型 bind(函数名,“参数1”,“参数2”)() //后面的参数是对象类型,但是要加上括号,因为不加括号他返回的是个函数,所以要再次调用 那么他们的区别在哪里的,先看一个例子。 var xw = { name : "小王", gender : "男", age : 24, say : function() { alert(this.name + " , " + this.gender + " ,今年" + this.age); } } var xh = { name : "小红", gender : "女", age : 18 } xw.say(); 复制代码 本身没什么好说的,显示的肯定是小王 , 男 , 今年24。 那么如何用xw的say方法来显示xh的数据呢。 对于call可以这样: xw.say.call(xh); 复制代码 对于apply可以这样: xw.say.apply(xh); 复制代码 而对于bind来说需要这样: xw.say.bind(xh)(); 复制代码 如果直接写xw.say.bind(xh

【asp.net core 系列】13 Identity 身份验证入门

落爺英雄遲暮 提交于 2020-10-23 08:14:05
0. 前言 通过前两篇我们实现了如何在Service层如何访问数据,以及如何运用简单的加密算法对数据加密。这一篇我们将探索如何实现asp.net core的身份验证。 1. 身份验证 asp.net core的身份验证有 JwtBearer和Cookie两种常见的模式,在这一篇我们将启用Cookie作为身份信息的保存。那么,我们如何启用呢? 在Startup.cs 的ConfigureServices(IServiceCollection services) 方法里添加如下: services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options => { Configuration.Bind("CookieSettings",options); }); 此时可以启动一个权限验证,当用户访问需要验证的页面或接口时,如果没有登录,则会自动跳转到: https://localhost:5001/Account/Login?ReturnUrl=XXXX 其中ReturnUrl指向来源页。 1.1 设置验证 当我们在Startup类里设置启用了身份验证后

JavaScript进阶教程(4)-函数内this指向解惑call(),apply(),bind()的区别

旧时模样 提交于 2020-10-22 13:05:55
目录 1 函数的定义方式 1.1 函数声明 1.2 函数表达式 1.3 函数声明与函数表达式的区别 1.4 构造函数Function(了解即可,一般不用) 2 函数的调用方式 3 函数内 this 的指向 4 call、apply、bind 4.1 call,apply 4.1.1 新的函数调用方式apply和call方法 4.1.2 apply和call可以改变this的指向 4.2 call,apply使用 4.3 bind 4.4 总结 5 函数的其它成员(了解) 6 高阶函数 6.1 作为参数 6.2 作为返回值 7 总结 1 函数的定义方式 定义函数的方式有三种: 函数声明 函数表达式 new Function (一般不用) 1.1 函数声明 // 函数的声明 function fn() { console.log("我是JS中的一等公民-函数!!!哈哈"); } fn(); 1.2 函数表达式 函数表达式就是将一个匿名函数赋值给一个变量。函数表达式必须先声明,再调用。 // 函数表达式 var fn = function() { console.log("我是JS中的一等公民-函数!!!哈哈"); }; fn(); 1.3 函数声明与函数表达式的区别 函数声明必须有名字。 函数声明会函数提升,在预解析阶段就已创建,声明前后都可以调用。 函数表达式类似于变量赋值。

消息中间件—SpringBoot下RabbitMQ实战

断了今生、忘了曾经 提交于 2020-10-21 02:03:33
消息中间件简介 MQ全称(Message Queue)`又名消息队列,是一种异步通讯的中间件。 可以将它理解成邮局,发送者将消息传递到邮局,然后由邮局帮我们发送给具体的消息接收者(消费者),具体发送过程与时间我们无需关心,它也不会干扰我进行其它事情。常见的MQ有 kafka 、 activemq 、 rocketMQ 、 rabbitmq 等等** 消息中间件的应用场景 跨系统数据传递、高并发流量削峰、数据异步处理。。。。 消息中间件对比 综上,各种对比之后,有如下建议: 一般的业务系统要引入 MQ,最早大家都用 ActiveMQ,但是现在确实大家用的不多了,没经过大规模吞吐量场景的验证,社区也不是很活跃,所以大家还是算了吧,我个人不推荐用这个了; 后来大家开始用 RabbitMQ,但是确实 erlang 语言阻止了大量的 Java 工程师去深入研究和掌控它,对公司而言,几乎处于不可控的状态,但是确实人家是开源的,比较稳定的支持,活跃度也高; 不过现在确实越来越多的公司会去用 RocketMQ,确实很不错,毕竟是阿里出品,但社区可能有突然黄掉的风险(目前 RocketMQ 已捐给 Apache ,但 GitHub 上的活跃度其实不算高)对自己公司技术实力有绝对自信的,推荐用 RocketMQ,否则回去老老实实用 RabbitMQ 吧,人家有活跃的开源社区,绝对不会黄。 所以

Module API

坚强是说给别人听的谎言 提交于 2020-10-18 22:24:42
module或简写为mod,提供一个用于执行Symbol算的中高级接口,可理解为module是执行 Symbol定义好的程序 的机器。 module.Module接受Symbol作为输入: data = mx.sym.Variable( ' data ' ) fc1 = mx.sym.FullyConnected(data, name= ' fc1 ' , num_hidden=128 ) act1 = mx.sym.Activation(fc1, name= ' relu1 ' , act_type= " relu " ) fc2 = mx.sym.FullyConnected(act1, name= ' fc2 ' , num_hidden=10 ) out = mx.sym.SoftmaxOutput(fc2, name = ' softmax ' ) mod = mx.mod.Module(out) # create a module by given a Symbol 根据symbol建立module 关于module的一套 训练流程见这里 。本节的目的是选择一些常用module API,包括一些重要的属性和方法做个分析。 module包提供了以下几个module:最主要的还是第二个。 显然BaseModule是其他所有module的基类, 基类提供以下方法 : 1.