day37】的更多相关文章

s16day37 爬虫2 参考博客:http://www.cnblogs.com/wupeiqi/articles/6229292.html 课堂代码:https://github.com/liyongsan/git_class/tree/master/day37/ 内容回顾: 1. Http协议 Http协议:GET / http1.1/r/n...../r/r/r/na=1 TCP协议:sendall("GET / http1.1/r/n...../r/r/r/na=1") 2.…
day37 阻塞.非阻塞.同步.异步 进程运行的三个状态:运行.就绪.阻塞 执行的角度 阻塞:程序运行时,遇到了IO,程序挂起,CPU被切走 非阻塞:程序没有遇到IO,程序遇到IO但是我通过某种手段,让CPU强行运行我的程序 提交任务的角度 同步:提交一个任务,自任务开始运行直到此任务结束(可能有IO),返回一个返回值之后,我再提交下一个任务 异步:一次提交多个任务,然后直接执行下一行代码,等待任务结果 返回结果如何回收? 案例:给三个老师发布任务: 同步:先告知第一个老师完成写书的任务,我从原…
我一直都觉得自己是个反应没有那么敏锐的人,而不幸的是其实也是,所以,在菜鸟的头衔上,我不得不再背负上一个笨鸟的"光芒".我不苛求一飞冲天的传奇,却也有着不甘寂寞的激昂,我选择先飞,由于我还渴求着,如风一样,飞翔.... 作为一个已婚人士,我不得不面对生活的琐碎.可其实,这繁杂的经历却给了我一份波澜不惊的沉静和一颗喜欢思考的心.我为此开心了非常久. 进入这个行业的第一个项目结束.陪妻子已经疯了一天,明天还要继续,或者说今天还要继续.大幅度抛开代码的两天,却在喧嚣之后的安宁下想了非常多.关…
本节内容 为什么要做监控? 常用监控系统设计讨论 监控需求讨论 如何实现监控服务器的水平扩展? 监控系统架构设计 一.为什么要做监控? 熟悉IT监控系统的设计原理 开发一个简版的类Zabbix监控系统 掌握自动化开发项目的程序设计思路及架构解藕原则 二.常用监控系统设计讨论 成熟的监控 Zabbix Nagios/cacti ganglia openfalcon go 三.监控系统需求讨论 1.可监控常用系统服务.应用.网络设备等 网络层 网络质量 流量,丢包率.带宽 系统层 cpu disk…
一.表结构关系图 二.表结构需求讨论 1.主机表(Host) 1.解决了什么问题? 1.如果我不想让它监控了,就有一个开关的东西给它禁掉2.主机存活状态检测间隔 2.代码 class Host(models.Model): name = models.CharField(max_length=64,unique=True) ip_addr = models.GenericIPAddressField(unique=True) host_groups = models.ManyToManyFiel…
一.注册站点初始化数据库 1.目录结构 2.初始化数据库 python3 manage.py makemigrations python3 manage.py migrate #django2.0之前是makemigrate 3.创建超级用户 python3 manage.py createsuperuser 4.登陆后台:http://127.0.0.1:8000/admin/monitor/ 二.后台建立主机模板服务 1.创建两台主机 2.创建服务列表 3.创建监控指列表 4.创建主机组 5…
一.目录结构 二.引子与代码 1.客户端获取服务列表接口 1.解决了什么问题 客户端要给我获取服务列表的的时候,他肯定要告诉他是谁?他怎么告诉我,客户端必须有一个id号 Saltsack你装一个客户端,客户端配置一个server的ip地址,这样服务器端就知道它是谁了 服务器端生成一个唯一值,告诉你这就是你,你记住以后就告诉我你的ID 2.实现代码 总urls from django.conf.urls import url,include from django.contrib import a…
一.目录结构 二.模块方法调用关系总图 三.入口文件main 1.解决了说明问题 1.客户端就干了一件事情,干什么事情 收集数据汇报给服务端? 但是我这个客户端是插件形式2.首先必须要传一个参数,start干了 什么事情? 启动了一个程序,先去服务器端拿去配置信息, 拿到配置信息,根据不同的服务的执行间隔去执行监控3.这个是个死循环,永远执行,服务器断了,客户端也就断了,等服务器重启启动起来,客户端就好了 2.实现代码 from core import client class command_…
协程与线程套接字通讯基于多线程实现套接字服务端支持并发,服务端 from socket import * from threading import Thread def comunicate(conn):  while True:  # 通信循环   try:    data = conn.recv(1024)    if len(data) == 0: break    conn.send(data.upper())   except ConnectionResetError:    bre…
异步回调 """ 异步任务使用场景 爬虫 1.从目标站点下载网页数据 本质就是HTML格式字符串 2.用re从字符串中提取出你需要的数据 """ import requests,re,os from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor # response = requests.get("https://www.baidu.com")…
昨日内容回顾: # C/S和B/S架构 # osi五层模型 # 应用层 # 自定义协议(struct) _ 解决黏包 # 验证客户端合法性 _ hmac os.urandom # 解决TCP协议的server端并发问题 _socketserver #######socket######### # 传输层 # 端口 在一台机器上唯一标识一个运行中的网络程序 # tcp 三次握手 四次挥手 黏包问题 # udp # 四层交换机 四层路由器 # 网络层 # ip协议 # ip 网关ip 子网掩码 #…
类的加载器:将class文件加载到JVM中执行这个文件. Java中将类加载器分成三类: 引导类加载器:     JAVA_HOME/jre/lib/rt.jar | 扩展类加载器:     JAVA_HOME/jre/lib/ext/*.jar | 应用类加载器:     加载类路径下的所有的class. 这些类加载器如何保证类只会加载一次而且不会重复加载: 类加载器的全盘委托机制:   class A { String s;   } 由应用类加载器得到A.class String,class…
今日内容 1.线程池和进程池 2.利用线程池实现套接字并发通信 3.协程(利用模块gevent模块,实现单线程下套接字并发通信) 1.线程池与进程池 要用线程池与进程池,首先要导入concurrent.futures这个模块,线程池和进程池规定了产生的线程或者进程的个数,保证计算机不会因为产生过多的进程和线程而导致崩溃,因为如果一台计算机他只能开启500个进程,而现在有1000个任务要运行,若我们让原本只能开启500个进程的计算机现在为了提高效率而开启了1000个进程同时执行这1000个任务,那…
3.什么是数据库 用来存储数据的仓库 数据是以文件的形式保存 海峰补充内容   ↓ 4 数据库服务器.数据管理系统.数据库.表与记录的关系(重点理解!!!) 记录:1 刘海龙  324245234 22(多个字段的信息组成一条记录,即文件中的一行内容) 表:student,scholl,class_list(即文件) 数据库:oldboy_stu(即文件夹) 数据库管理系统:如mysql(是一个软件) 数据库服务器:一台计算机(对内存要求比较高) 总结:     数据库服务器-:运行数据库管理软…
什么是进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体:在当代面向线程设计的计算机结构中,进程是线程的容器.程序是指令.数据及其组织形式的描述,进程是程序的实体. 狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed). 广义定义:进程是一个具有一定独立功能…
一.如何存储 二.目录结构 三.代码调用逻辑关系 四.实现代码 1.data_optimization 1.存筛选出来符合条件的数据 def get_data_slice(self,lastest_data_key,optimization_interval): ''' :param optimization_interval: e.g: 600, means get latest 10 mins real data from redis :return: ''' all_real_data =…
一.数据如何存储方案讨论 1.一个服务存所有主机 2.一台主机的所有服务 3.所有的服务一分钟存一次? 数据量大,浏览器会卡住, 4.最终方案如下 二.解决方案存在问题 1.只能存7天如何处理? 超过一个周就10分钟的平均值,存1个月 2.四种数据如何存?你存的是最近7天的数据 1.看追加时间,左边第一个值,每次存数据的同时把第一个值取出来,判断有没有超过7天拆过就删除2.先初始一个值 3.存一个月的数据都是被这10分钟平均了的,这个应该什么时候存? 每新增10个就往里面存一个, 4.我咋知道几…
信号量 from multiprocessing import Process from multiprocessing import Semaphore import time import random def ktv(i,sem): sem.acquire() print('%s走进ktv'%i) time.sleep(random.randint(1,5)) print('%s走出ktv'%i) sem.release() if __name__ == '__main__': sem =…
# HTML# import socket## def main():# sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# sock.bind(('localhost',8080))# sock.listen(5)## while True:# connection, address = sock.accept()# buf = connection.recv(1024)# f = open('test.html','rb')#…
 100天搞定机器学习(Day1-34) 100天搞定机器学习|Day35 深度学习之神经网络的结构 100天搞定机器学习|Day36 深度学习之梯度下降算法 本篇为100天搞定机器学习之第37天,亦为3Blue1Brown<深度学习之反向传播算法>学习笔记. 上集提到我们要找到特定权重和偏置,从而使代价函数最小化,我们需要求得代价函数的负梯度,它告诉我们如何改变连线上的权重偏置,才能让代价下降的最快.反向传播算法是用来求这个复杂到爆的梯度的. 上一集中提到一点,13000维的梯度向量是难以想…
day1   多用户同时刻下载上传程序分析 day2   htlm介绍 觉得收货的季节到了 day3   htlm介绍 day4   htlm介绍 关键字介绍  Toray大仙 Toray大仙 day5   htlm介绍 关键字介绍 day6   htlm介绍 表单介绍 day7   htlm介绍 input介绍 day8   htlm介绍 表单介绍 day9   htlm介绍 table介绍…
1.GIL 定义: GIL:全局解释器锁(Global Interpreter Lock) 全局解释器锁是一种互斥锁,其锁住的代码是全局解释器中的代码 为什么需要全局解释器锁 在我们进行代码编写时,实际上我们只是编写了符合python语法的文本文件,如果我们的代码不交给解释器进行解释,那么我们的代码就是一堆字符串,只有在我们将代码交给解释器进行解释时,解释器把我们的代码进行一行一行的解释,解释成一堆二进制,此时再交给cpu进行执行,执行后电脑就会按照我们的代码执行相应的操作. 在python中,…
转行学开发,代码100天——2018-04-22 昨天学习了JavaScript对table的基本操作,包括表格的创建,表格元素的获取,隔行换色及鼠标动作等.今天主要学习table的搜索查询及排序操作. 一.搜索查询 搜索查询核心即是将要查询的内容与表格内容相匹配. 搜索查询的方式包括:直接查询.模糊查询.多关键字查询等,其处理方式均是对字符串的处理. 直接查询:txt1 == txt2 不区分大小写查询:txt1.toLowerCase() = txt2.toLowerCase();//转化成…
<set name="orders" cascade="delete"> 如果没有在Customer.hbm.xml中配置级联删除,删除客户的时候默认会把订单表的cno字段设置为null,但是客户关联的订单记录还在,并不会删除掉. JS很容易出错,还是得使用谷歌浏览器调试才行.…
<!-- 设置本地Session --> <property name="hibernate.current_session_context_class">thread</property>…
反向工程:先创建表,创建好表之后,就是持久化类和映射文件可以不用你写,而且你的DAO它也可以帮你生成.但是它生成的DAO可能会多很多的方法.你可以不用那么多方法,但是它里面提供了这种的.用hibernate,必须得用myeclipse里面的这种自动生成的工具.其实myeclipse它里面对Struts和Spring都有集成.但是这种集成对三大框架整合的时候会有问题. 用hibernate的时候最好先建一个连接数据库的模板.这个时候它可以帮我们把核心配置文件hibernate.cfg.xml中的参…
查询缓存是比二级缓存功能更强大的缓存.必须把二级缓存配置好之后才能用查询缓存,否则是用不了的.二级缓存主要是对类的缓存/对象缓存.查询缓存针对对象也是可以的(因为功能比二级缓存更强大),而且还可以针对类中的属性. select cname from Customer.这种二级缓存是缓存不了的.二级缓存只能缓存的是整个的对象.而我们查询缓存里面可以缓存对象的属性.这是查询缓存与二级缓存最大的区别. @Test // 查询缓存的测试 public void demo9(){ Session sess…
二级缓存区:类缓存区,集合缓存区,更新时间戳区. 它会记录一个时间T1.其实在我们查询之后它会记录一个时间.假设时间叫做T1.就是你查询完之后的当前时间是T1.当我们自己手动在下面做了一个更新之后,它会在更新时间戳的区域中去记录一个你更新这条记录的时间T2. 另开一个事务,又要去做查询了,从我们二级缓存中去获取数据.一获取数据的时候它就会先比对这个时间戳.如果T2>T1,说明你是先查询后更新.如果是后更新的话,那我的数据就不是最新的了.如果不是最新的它强制地又发送了一个SQL语句查询我们最新的记…
一级缓存的更新会自动同步到二级缓存. @SuppressWarnings("all") @Test // 将内存中的数据写到硬盘 public void demo7(){ Session session = HibernateUtils.getCurrentSession(); Transaction tx = session.beginTransaction(); List<Order> list = session.createQuery("from Orde…
get()和load()方法既可以向一级缓存区放数据,也可以向二级缓存区放数据.这是查询一个的情况.要是查询所有呢?注意, // 查询所有.Query接口的list()方法. // list()方法会向二级缓存中放数据,但是不会使用二级缓存中的数据. //list()方法没有使用二级缓存的数据. 没有发生SQL,证明肯定是从一级缓存或者是二级缓存获取的数据.一级缓存没有,那肯定是从二级缓存获取的.有人说那这list()方法的效率就比较低了.一级缓存经常使用list(),但是有了二级缓存如果你想查…