num

搭建自己的博客(十四):简单的为博客添加阅读量

强颜欢笑 提交于 2020-03-01 09:31:16
1、变化的部分 2、上代码 ul.blog-types,ul.blog-dates { list-style-type: none; } div.blog:not(:last-child) { margin-bottom: 2em; padding-bottom: 1em; border-bottom: 1px solid #eee; } div.blog h3 { margin-top: 0.5em; } div.blog-info p { margin-bottom: 0; } div.blog-info p span{ margin-right: 10px; } div.blog-info-description { list-style-type: none; margin-bottom: 1em; } ul.blog-info-description li { display: inline-block; margin-right: 1em; } div.paginator { text-align: center; } div.container { max-width: 80%; } blog.css {# 引用模板 #} {% extends 'base.html' %} {% load staticfiles %} {% block header_extends

搭建自己的博客(十六):封装优化阅读量代码

空扰寡人 提交于 2020-03-01 09:29:11
1、将阅读量的代码封装在一个app中,增加扩展性 新建app: python manage.py startapp read_statistics 2、变化的部分 3、上代码 from django.contrib import admin from .models import BlogType, Blog # Register your models here. @admin.register(BlogType) class BlogTypeAdmin(admin.ModelAdmin): list_display = ('id', 'type_name') # 需要显示的列表 @admin.register(Blog) class BlogAdmin(admin.ModelAdmin): list_display = ('title', 'blog_type', 'author', 'get_read_num', 'created_time', 'last_updated_time') blog下的admin.py from django.db import models from django.contrib.auth.models import User from ckeditor_uploader.fields import RichTextUploadingField

关于JS==和===的区别(JavaScript全等与非全等的区别)

本秂侑毒 提交于 2020-03-01 04:00:50
简单概括:==是比较相同,===是严格比较相同。 举例: let num=123;let str='123';let num2=123; num==str \true num===str \false num===num2 \true 比较过程: 双等于号==:比较的是数值是否一致 ,相等定义非常宽松,允许类型转换 而三等于号===:用来检测两个操作数是否严格相等,必须数值类型一样,并且值也一样才能得到true 总结: 双等号: 如果两个数值相同,那么得到的是true。 +例如:一个是null,一个是undefined,那么相等。 +如果一个是字符串,一个是数值,那么一定是false。 三等号: 如果两个数值相同,并且类型也相同,那么相等 +例如:一个是null,一个是undefined,那么一定不相等 +如果两个值都是null,或者undefined,那么相等 来源: CSDN 作者: HCJ_TJ 链接: https://blog.csdn.net/HCJ_TJ/article/details/104578612

Java线程synchronized

一曲冷凌霜 提交于 2020-03-01 03:18:16
假设一台5个人同时要上网 每个人上时间1~5分钟不等 加锁同步情况:排队上网,每个人都在自己的上网时间完毕后出来。 静态方法同步代码 class Person extends Thread{ private Random r = new Random(); private int Num; public Person(int Num){ this.Num = Num; } public void run() { toileting(Num, r.nextInt(4) + 1); } public static synchronized void toileting(int tNo2, int time){ for (int i = 0; i < time; i++) { System.out.println("第" + tNo2 + "位, 上了" + i + "分钟"); } } } public class SetTest01 { public static void main(String[] args) { //五个人 for (int i = 0; i < 4; i++) { new Person(i).start(); } } } View Code 代码块同步代码 class Person extends Thread{ private Random r = new

瓶盖换酒问题

两盒软妹~` 提交于 2020-03-01 03:14:09
def wine ( x , y , m , n ) : """ :param x: 总钱 :param y: 酒单价 :param m: 换酒的空瓶数 :param n: 换酒的瓶盖数 :return: 到的瓶数,可兑换到的瓶数,向商家赊酒的次数,总共获得的瓶数 """ num = int ( x // y ) # 总钱可以买到的酒的数量 count = 0 # 兑换的酒 的数量 lend = 0 # 向商家赊酒的次数 num_1 = num # 拥有的瓶的数量 num_2 = num # 拥有的盖的数量 while True : a = num_1 // m # 商 瓶兑换的 酒的数量 a_1 = num_1 % m # 余数 剩余的瓶 的数量 b = num_2 // n # 商 盖兑换的 酒的数量 b_1 = num_2 % n # 余数 剩余的盖 的数量 value1 = ( a == 0 and b == 0 ) value2 = ( a_1 == m - 1 or b_1 == n - 1 ) value3 = ( a_1 == m - 1 and b_1 == n - 1 ) if value1 and ( a_1 != m - 1 and b_1 != n - 1 ) : print ( "此时不能再兑换!\n" ) break count = count + (

最短管道距离--这样做最简单-。-

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-01 02:25:48
题目描述: 在一张2D地图上有N座城市,坐标依次是(X1, Y1), (X2, Y2), ... (XN, YN)。 现在H国要修建一条平行于X轴的天然气主管道。这条管道非常长,可以认为是一条平行于X轴的直线。 小Ho想知道如何修建这条管道,可以使N座城市到管道的垂直距离之和最小。请你求出这个最小的距离之和。 Input: 第一行包含一个整数N。 以下N行每行包含两个整数Xi, Yi。 1 <= N <= 100000 0 <= Xi, Yi <= 1000000 Output: 一个整数,代表最小的距离之和。 Sample Input: 4 0 0 0 100 100 0 100 100 Sample Output 200 题解:这题与x坐标无关,只考虑y坐标就行,将所有的y坐标存放到一个数组中,然后排序,然后逐个求与中间数差的绝对值之和,即最小距离。 代码: #include<iostream> #include<stdio.h>a #include<string.h> #include<queue> #include<vector> #include<map> #include<stack> #include<set> #include<algorithm> #include<math.h> using namespace std; typedef long long ll;

编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法

纵然是瞬间 提交于 2020-03-01 01:47:40
这篇文章主要介绍了编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法,用到了Python的urllib和urllib2模块,需要的朋友可以参考下 抓取豆瓣电影TOP100 一、分析豆瓣top页面,构建程序结构 1.首先打开网页http://movie.douban.com/top250?start,也就是top页面 然后试着点击到top100的页面,注意带top100的链接依次为 http://movie.douban.com/top250?start=0 http://movie.douban.com/top250?start=25 http://movie.douban.com/top250?start=50 http://movie.douban.com/top250?start=75 2.然后通过查看源码,发现电影名的代码如下: 肖申克的救赎 / The Shawshank Redemption 如图,因为有一些英文名等描述,通过正则抓取有些干扰,可能还需要后续过滤。 根据以上信息,此程序主要分以下3个步骤: 二、构建url地址池 抓取top100电影名称 依次打印输出 依次写出代码 1.构建url地址池。代码如下: mport urllib2 import re # ----------确定url地址池------------ pre_url = 'http:/

5种PHP生成图片验证码实例

懵懂的女人 提交于 2020-02-29 22:15:58
5种PHP生成图片验证码实例,包括数字验证码、数字+字母验证码、中文验证码、仿google验证码和算术验证码,PHP生成验证码的原理:通过GD库,生成一张带验证码的图片,并将验证码保存在Session中。 js验证 $(function() { $("#getcode_num").click(function() { //数字验证 $(this).attr("src", 'code_num.php?' + Math.random()); }); $("#chk_num").click(function() { var code_num = $("#code_num").val(); $.post("chk_code.php?act=num", { code: code_num }, function(msg) { if (msg == 1) { alert("验证码正确!"); } else { alert("验证码错误!"); } }); }); //数字+字母验证 $("#getcode_char").click(function() { $(this).attr("src", 'code_char.php?' + Math.random()); }); $("#chk_char").click(function() { var code_char = $("#code

分页器组件与form组件

旧街凉风 提交于 2020-02-29 22:11:06
目录 1. 批量插入数据 2. 自定义分页器 2.1 简易版手写分页器 2.2 自定义分页器的使用 3. 创建多对多表关系的三种方式 4. form校验组件 4.1 form组件的使用 4.2 校验数据 4.3 渲染页面 6. forms组件钩子函数 1. 批量插入数据 def index(request): # 1.往书籍表中插入数据 1000 for i in range(1000): # 这种插入方式 效率极低 models.Book.objects.create(title=f'第{i}本书') book_list = [] for i in range(1000): book_list.append(models.Book(title=f'第{i}本书')) models.Book.objects.bulk_create(book_list) # 2.将刚刚插入的数据查询出来展示到前端 book_queryset = models.Book.objects.all() return render(request,'index.html',locals()) 2. 自定义分页器 2.1 简易版手写分页器 from app01 import models def index(request): # 1.获取用户想要访问的页码数 current_page = request

二叉搜索树的创建(插入)、查找、删除、遍历(中序非递归)

久未见 提交于 2020-02-29 21:52:10
最近在学数据结构,前段时间学了二叉搜索树和平衡二叉树,但当时眼高手低就看了网课啥也没敲。。现在优点愧疚,就补上了。 二叉搜索树: 使用二分查找的思路构树(平衡二叉树完全就是,不过二叉搜索树有些遗憾)。特点:任一节点的权值都大于其左子树上所有点的权值,小于其右子树上所有点的权值。 平衡二叉树: 简介:也是搜索树,不过它改进了:二叉搜索树由于插入顺序的不同,最坏查找次数也不同,运气不好就是O(n). 官方解释: 任一节点的平衡因子的绝对值都不大于1(平衡因子:左子树的高度-右子树的高度。) 这样子由于二叉树的性质查找的时间复杂度就为log(n)了。 今天先展示二叉搜索树的常规操作:创建(也可以当作插入)、查找、删除。 我的代码(有BUG,根节点删除的情况当时没考虑到,所以不要删根节点,不然会段错误)。遍历我是使用的中序非递归(第二次遇到的时候打印) 代码:(有bug多谢指出) //二叉搜索树的创建(插入)/查找/删除 //二叉搜索树的创建(插入)/查找/删除 # include <stdio.h> # include <stdlib.h> typedef struct tree { int val ; struct tree * left , * right ; } tree ; int count = 0 ; tree * searchmax ( tree * p ) { /