Nginx location、proxy_pass 后有 / 与没 / 的区别
分4种情况讨论:
请求的网站为:192.168.1.1:80/static/a.html
整体配置文件如下:
1234567891011121314151617181920server { port 80, server name 192.168.1.1 location /static { proxy_pass 192.168.2.1:81 } location /static { proxy_pass 192.168.2.1:81/ } location /static/ { proxy_pass 192.168.2.1:81 } location /static/ { proxy_pass 192.168.2.1:81/ }}
第一种:location后无/,转发网站无/12345678# 192.168.1.1 -> server name# :80 ---------> port# /statc -- ...
JavaScript之用Promise实现限制异步操作并发
使用Promise实现:限制异步操作的并发个数,并尽可能快的完成全部
题目有8个图片资源的url,已经存储在数组urls中。
urls类似于[‘https://image1.png', ‘https://image2.png', ….]
而且已经有一个函数function loadImg,输入一个url链接,返回一个Promise,该Promise在图片下载完成的时候resolve,下载失败则reject。
但有一个要求,任何时刻同时下载的链接数量不可以超过3个。
请写一段代码实现这个需求,要求尽可能快速地将所有图片下载完成。
12345678910111213141516171819202122232425var urls = [ "https://byr.vercel.app/static/img/page14/1.jpg", "https://byr.vercel.app/static/img/page14/1.jpg", "https://byr.vercel.app/static/img/pag ...
好想要一只冰墩墩
相信大家最近都在为怎么买到一只顶流明星冰墩墩而发愁
既然买不到,那就自己动手画一个吧,过程很简单
Python绘画Turtle库Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。
代码详解1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411 ...
初识Django之验证码Pillow
为了防止机器人频繁登录网站或者破坏分子恶意登录,很多用户登录和注册系统都提供了图形验证码功能。
在Django中实现图片验证码功能非常简单,有现成的第三方库可以使用,我们不必自己开发,比如其中一个库Pillow。
安装Pillow执行命令pip install pillow
Pillow
Image画布主要负责尺寸,颜色,模式
ImageDraw画笔属于哪个画布,主要负责文字,点,线,弧
ImageFont字体画布的辅助工具,负责字体和样式
绘制流程
background = (10, 20, 30) RGB颜色
初始化画布image = Image.new(‘RGB’, (100, 50), background)
获取画布中画笔对象
draw = ImageDraw.Draw(image)
绘制验证码,随机四个
font = ImageFont.truetype(‘path’, size)
Fontcolor = (20, 40, 60)
Draw.text((x, y), ‘R’, font, fontcolor)
内存流
内存流BytesIO()
将图片存 ...
初识Django之分页器Paginator
为什么要分页分页功能是几乎所有的网站上都需要提供的功能,当你要展示的条目比较多时,必须进行分页,不但能减小数据库读取数据压力,也有利于用户浏览。
原生方法分页
在urls.py里urlpatterns中添加path('getstudents/', views.get_students, name='get_students'),
views.py中添加get_students函数获取学生数量12345678def get_students(request): page = int(request.GET.get("page", 1)) per_page = int(request.GET.get("per_page", 10)) students = Student.objects.all()[per_page*(page-1): page*per_page] data = { "students": students } return render ...
2022开年行大运
2022 新的一年,好运连连。
虽然才过了一个月,已经是不可阻挡了,感觉2022年真的会是幸运爆棚的一年!!!✌️
疫苗在上海打第三针获取的参与奖品
电动牙刷哒哒老师昨晚送的礼物(昨天中午还提到说从没用过想买个体验一番)
年会中奖参加年会没抱希望最后关头中了一等奖
买到了回家的火车票庆幸可以回去,好多同事留在上海回不去了= =
总的来说,一月份是一个好多开端,希望整年都可以顺顺利利!!
冲鸭🌈
JavaScript之Function替代eval
起因对于数组传入到数据库中,会以字符串的形式返回,那样前端组件在利用值的时候会匹配不上,需要将其转回数组。
例如: let a = "['a', b, c, 1, 2]"
转换: eval('(' + a + ')') 则可将a转换成数组
eval到底做了什么?
evaleval() 函数会将传入的字符串当做 JavaScript 代码进行执行。
返回字符串中代码的返回值。如果返回值为空,则返回 undefined。
永远不要使用 eval!eval() 是一个危险的函数, 它使用与调用者相同的权限执行代码。如果你用 eval() 运行的字符串代码被恶意方(不怀好意的人)修改,您最终可能会在您的网页/扩展程序的权限下,在用户计算机上运行恶意代码。更重要的是,第三方代码可以看到某一个 eval() 被调用时的作用域,这也有可能导致一些不同方式的攻击。
eval替代方法
使用eval的糟糕代码:
123456function looseJsonParse(obj){ return eval("( ...
初识Django之中间件Middle
什么是Django中间件中间件是 Django 请求/响应处理的钩子框架。它是一个轻量级的、低级的“插件”系统,用于全局改变 Django 的输入或输出。每个中间件组件负责做一些特定的功能。
自定义一个Django中间件12345678910111213141516171819202122232425262728293031323334353637from django.utils.deprecation import MiddlewareMixinfrom django.http import HttpResponsefrom django.core.cache import cacheimport timeimport randomclass HelloMiddle(MiddlewareMixin): def process_request(self, request): print(request.META.get("REMOTE_ADDR")) ip = request.META.get("REMOTE_ADDR") ...
初识Django之DjangoCache
什么是缓存Cache缓存是一类可以更快的读取数据的介质统称,也指其它可以加快数据读取的存储方式。一般用来存储临时数据,常用介质的是读取速度很快的内存。一般来说从数据库多次把所需要的数据提取出来,要比从内存或者硬盘等一次读出来付出的成本大很多。对于中大型网站而言,使用缓存减少对数据库的访问次数是提升网站性能的关键之一。
为什么要使用缓存Cache在Django中,当用户请求到达视图后,视图会先从数据库提取数据放到模板中进行动态渲染,渲染后的结果就是用户看到的网页。如果用户每次请求都从数据库提取数据并渲染,将极大降低性能,不仅服务器压力大,而且客户端也无法即时获得响应。如果能将渲染后的结果放到速度更快的缓存中,每次有请求过来,先检查缓存中是否有对应的资源,如果有,直接从缓存中取出来返回响应,节省取数据和渲染的时间,不仅能大大提高系统性能,还能提高用户体验。
Django内置缓存框架
基于Memcached缓存(基本弃用)
使用数据库进行缓存
使用文件系统进行缓存
使用本地内存进行缓存
提供缓存扩展接口
Django如何使用Cache
在视图View中使用cache12345f ...
2021年终总结
年终总结
前言
每年都是看着别人的年终总结唏嘘,发出他们怎么这么厉害的感叹,亦或是对相同事情的认同。
2021对我来说是特殊的一年,也是重要的一年。
想着借此书写一篇,记录下这一年的点点滴滴,开始自己的第一份正式年终总结!
工作
修补BUG和日常工作
2.0旧产品的缝缝补补扩展衍生到新的各个项目。
其他新产品的创建开发迭代,自己就是一块砖,哪里需要往哪里搬。
接触新技术
利用Elixir写了一小段功能,接触了一门新语言,体验了一波底层开发。
更多的了解服务器,对Ubuntu和Centos有更加直接的实际体验。
使用Jenkins和Docker在各个服务器上部署项目。
安全思维
对应用安全有了更深的认识。
其他
团队内气氛组成员
学习
基于Angular8的网易云App实战,并没有写完,完整的太多了= =。
Django框架入门,虽然我Python实际写的机会并不多,也不是很熟悉。
在Leetcode和牛客网都偶尔刷过算法题,本来想着一天至少一道,目前来看是没达成。
基于Hexo框架,搭建了自己的第一个博客,随心所欲的记录生活和学习,也算实现了一直以来的梦想。
当然 ...