路由

Django之路由分配系统

十年热恋 提交于 2020-01-02 01:02:52
前言: Django大致工作流程 1、客户端发送请求(get/post)经过web服务器、Django中间件、 到达路由分配系统 2、路由分配系统根据提取 request中携带的的url路径(path)与视图函数映射关系列表中,匹配到1个视图函数, foo (request) 执行; 3、视图函数 使用原生SQL或者ORM去数据库拿到数据,在服务端进行渲染(模板+数据渲染) 4、视图函数return一个 response对象 返回客户端 Django路由分配系统简介 Django project目录中的urls.py文件中, 以Python [ ( ) ]的数据类型记录了可以访问到该站点的url 和 视图函数一一对应关系表,当request请求到达路由系统,Django通过request中携带的path 遍历这个关系表,匹配到对应的视图函数,break; (所以1个 url 只能从路由关系表中自上而下匹配到1个视图函数) def routers(): from day52.urls import URlpattern return URlpattern def application(environ,start_response): start_response('200 OK', [('Content-Type', 'text/html')]) path=environ.get(

Django路由系统---django重点之url映射分发

一曲冷凌霜 提交于 2020-01-02 01:02:34
django重点之url映射分发 在全局项目的urls.py中进行子项目的映射,然后在子项目中创建一个urls.py去处理自己项目中的请求,同时也实现了代码的解耦 添加路由分发的原则[全局urls.py中有写] Including another URLconf 1. Import the include() function: from django.urls import include, path 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) settigs.py 'DIRS': [os.path.join(BASE_DIR, 'templates')], # 设置templates的路径为Django以前版本 # 'DIRS': [], # 注释掉该行,此为Django 2.0.1最新版本 # 'django.middleware.csrf.CsrfViewMiddleware', ...省略默认配置 STATIC_URL = '/static/' TEMPLATE_DIRS = (os.path.join(BASE_DIR, 'templates'),) # 原配置 # 静态资源文件 STATICFILES_DIRS = (os.path.join(BASE_DIR, "statics")

消息中间件(RabbitMQ)04

有些话、适合烂在心里 提交于 2020-01-01 15:16:31
一、rabbitmq实现了AMQP协议 AMQP是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。目标是实现一种在全行业广泛使用的标准消息中间件技术,以便降低企业和系统集成的开销,并且向大众提供工业级的集成服务。主要实现有 RabbitMQ。 二、AMQP包含的要素 生产者 :消息的创建者,发送到rabbitmq; 消费者 :连接到rabbitmq,订阅到队列上,消费消息,持续订阅(basicConsumer)和单条订阅(basicGet). 消息: 包含有效载荷和标签,有效载荷指要传输的数据,,标签描述了有效载荷,并且rabbitmq用它来决定谁获得消息,消费者只能拿到有效载荷,并不知道生产者是谁。 信道 ,概念:信道是生产消费者与rabbit通信的渠道,生产者publish或是消费者subscribe一个队列都是通过信道来通信的。信道是建立在TCP连接上的虚拟连接,什么意思呢?就是说rabbitmq在一条TCP上建立成百上千个信道来达到多个线程处理,这个TCP被多个线程共享,每个线程对应一个信道,信道在rabbit都有唯一的ID ,保证了信道私有性,对应上唯一的线程使用 (为什么不建立多个TCP连接呢?原因是rabbit保证性能,系统为每个线程开辟一个TCP是非常消耗性能

Coursera: Internet History, Technology, and Security

北城余情 提交于 2020-01-01 14:31:51
课程网址:https://www.coursera.org/learn/internet-history 学习笔记: Week 1: History - Dawn of Early Computing (1940 - 1960) War Time Computing and Conmmunication — High Stakes Research in Computing, and Communication 二战刺激了政府对各种科技的研究投入,由此促进了计算机技术的发展,其中就包括电子计算机的诞生。 为了解密德国的无线电情报,英国布莱切利园( Bletchley Park )内以艾伦·图灵( Alan Turing )为代表的跨学科( cross-disciplinary )团队为电子通信和计算( electronic communication and computation )技术打下了基础。 — Alan Turing and Bletchley Park 在二战期间,布莱切利园是英国政府进行密码解读的主要场所,各行各业的上万名人员在此处工作,轴心国的密码与密码文件,都会送到那里进行解码。布莱切利园是最早的跨学科合作部门。 Bombe 是一台英国机械计算机,致敬波兰密码破译机 Bomba ,对破译德国 Enigma 密码机起到了重要作用,一个 Bombe 可以模拟36个

在OpenWrt中安装Wiwiz实现portal认证

霸气de小男生 提交于 2020-01-01 14:27:51
1.系统需求 硬件 已安装了OpenWrt固件的无线路由器(典型的有Linksys WRT54G系列) 软件 Wifidog 你可以尝试执行以下命令安装Wifidog: opkg update # Optional opkg install wifidog 复制代码 将无线路由器接入Internet。 设置并启用无线网络,即,使用无线路由器创建一个可用的Access Point。 2.在Web控制面板中创建热点 登录到Web控制面板,访问 http://cp.wiwiz.com/as/s/menu 。 点击“我的热点”,在接下来的页面中点击“创建热点”。根据页面的提示完成各项设置,点击保存。 你将会看到你刚创建热点的Hotspot ID。记下它,接下来的步骤将会用到它。 3.安装与设置HotSpot Builder Utility组件 将一台PC机连接至你的无线路由器,用SSH方式连接到无线路由器。执行以下命令: cd; wget http://dl.wiwiz.com/hsbuilder-util-latest-OpenWrt.tar.gz cd /; tar -zxf /root/hsbuilder-util-latest-OpenWrt.tar.gz /usr/local/hsbuilder/hsbuilder_setup4openwrt.sh setup 复制代码

网络通讯

◇◆丶佛笑我妖孽 提交于 2020-01-01 13:01:43
  TCP/IP网络中,主机和路由器在网络层用IP地址来识别,在数据链路层用物理地址,也就是MAC地址来识别。两台主机在通讯过程中,假设已知道了对方的IP地址,但是网络层数据在经过链路层时还要知道对方的MAC地址。通过IP地址找到MAC地址的过程就是正向地址解析,地址解析协议就是干这事的。   通常地址解析会有将静态影射和动态映射结合。静态映射就是在本机存储一张ARP表,用来存储一部分的IP地址和MAC地址映射。当不知道对方的MAC地址,也就是表中没有存某一个IP的MAC地址的时候,就要用动态映射,也就是通过ARP协议来找相应的MAC地址。ARP协议是只用于同一子网下,只为同一子网下的主机和路由器解析IP为MAC.   假设A要发送IP数据到B,但是A中的ARP表没有B的MAC地址,就会先启用ARP协议,以获得B的MAC地址。   首先, A构造一个ARP查询分组,分组中插入源IP和源MAC,以及目的IP和目的MAC,但是目的MAC事先不知道,要通过查询才知道,所以会在目的MAC字段插入FF-FF-FF-FF-FF-FF, 指示网卡以广播的形式广播到整个子网。这个全1的MAC地址就是MAC广播地址。子网中的机器收到这个广播的帧,检查源IP是否是子的IP,不是就丢掉帧,是则单独给发送查询帧的主机发送一个ARP响应分组,其中就包括了要查询的IP对应的MAC地址

路由交换02-----ARP协议

走远了吗. 提交于 2020-01-01 12:51:12
路由交换协议-----ARP ARP协议 ARP(Address Resolution Protocol),是根据IP地址获取MAC地址的一个 TCP/IP 协议,即将IP地址对应到物理地址,从而实现数据链路层的可达性。 ARP 的数据包是这样的: 硬件类型:发送方需要知道的硬件地址类型,一般为以太网(值为1)。 协议类型:发送方提供的三层协议地址类型,一般为IP。 硬件地址长度和协议长度:硬件地址和协议地址的长度。 操作类型:用来表示这个报文的类型。 1 表示ARP请求 2 表示ARP响应 3 表示RARP请求 4 表示RARP响应 RARP(Reverse Address Resolution Protocol):反向地址转换协议,即将MAC地址对应到IP地址,与ARP相反。 发送方的硬件地址:发送ARP报文设备的MAC地址。 源IP地址:发送方的IP地址。 目标硬件地址:接收方的MAC地址。 目标IP地址:接收方的IP地址。 抓个包看一下: 目的MAC地址为 00:00:00:00:00:00 ,是因为这是一个广播包。 ARP工作原理 一般网络设备都有一个ARP缓存,用来存放IP地址和MAC地址的关联信息。发送数据之前,首先查找ARP缓存,如果缓存中有IP地址对应的物理地址,那么用此MAC地址封装以太帧发送,如果没有则会广播ARP报文

hcnp-ospf

こ雲淡風輕ζ 提交于 2020-01-01 12:24:09
阅读目录 一 ospf的基本属性 二 LSA以及特殊区域 三 ospf协议特性 四 配置以及实现 五 练习 一 ospf的基本概念   ospf(open shortest path first,开放式最短路径优先)是一种典型的链路状态路由协议,是目前业内使用最广泛的IGP(内部网关协议)之一。ospf支持VLSM(可变长子网掩码),路由汇总。ospf目前主要有两个版本:ospfv2,该版本主要针对IPv4;ospfv3主要针对IPv6。 Router-ID ospf router-id(路由器标识符) 是一个32bit长度的数值,通常使用点分十进制形式表示(与IPv4地址格式一样),用于在ospf域中唯一标识一台ospf路由器,每台ospf路由器的router-id必须全域唯一。router-id可以手工指定。如果没有手工指定,系统会自动选择设备上的一个IP地址作为router-id。强烈建议手工指定。 #为设备创建一个loopback接口,并指定接口的IP地址 [Router]int LoopBack 0 [Router-LoopBack0]ip add 1.1.1.1 32 [Router-LoopBack0]quit #创建一个ospf进程,该ospf进程的Process-ID为1,并指定该设备的router-id为1.1.1.1(loopback0接口的地址)

[Angularjs]视图和路由(二)

倖福魔咒の 提交于 2020-01-01 05:04:53
写在前面 上篇文章主要介绍了路由中when方法的第二个参数,常见的几个属性,以及作用。本篇文章,将介绍和路由相关的几个常见的服务。 系列文章 [Angularjs]ng-select和ng-options [Angularjs]ng-show和ng-hide [Angularjs]视图和路由(一) [Angularjs]视图和路由(二) $routeParams 有这样一种情况,在设计路由的时候,我们希望在路由上面传递参数,但是当跳转到指定的路由的时候,我们该如何接收呢?这就用到$routeParams这个指令。传递的参数,angularjs会将它解析出来并传递给$routeParams。 一个例子 $routeProvider .when('/user/:name',{ controller:'UserController', templateUrl:'views/user.html' }); 这个例子的大概意思就是,根据name查询用户信息。 当访问这样的路由是#/user/wolfy,angularjs会在$routeParams中添加一个名为name的键,它的值会被设置为加载进来的Url中的值。比如这里,$routeParams对象看起来回事这样的: {name:'wolfy'} 需要注意,如果想要在控制器中访问这些变量,需要把$routeParams注入到控制器: app

DRF的路由生成类的使用

安稳与你 提交于 2020-01-01 05:04:39
DRF路由生成类的使用 对于视图集ViewSet,我们除了可以自己手动指明请求方式与动作action之间的对应关系外,还可以使用Routers来帮助我们快速实现路由信息。 REST framework提供了两个router SimpleRouter DefaultRouter 使用方法 : 1) 创建router对象,并注册视图集,例如 from rest_framework import routers router = routers.SimpleRouter() router.register(r'books', BookInfoViewSet, base_name='book') register(prefix, viewset, base_name) prefix 该视图集的路由前缀 viewset 视图集 base_name 路由名称的前缀 如上述代码会形成的路由如下: ^books/$ name: book-list ^books/{pk}/$ name: book-detail 2)添加路由数据 可以有两种方式: urlpatterns = [ ... ] urlpatterns += router.urls 或 urlpatterns = [ ... url(r'^', include(router.urls)) ] 在views.py中操作完视图函数后