当前位置: 首页 > news >正文

Django的生命周期流程图(补充)、路由层urls.py文件、无名分组和有名分组、反向解析(无名反向解析、有名反向解析)、路由分发、伪静态

一、orm的增删改查方法(补充)

1. 查询res=models.表名(类名).objects.all()[0]res=models.表名(类名).objects.filter(username=username, password=password).all()res = models.表名(类名).objects.first()  # 判断,判断数据是否有# res如果查询出来的是一条,直接就是对象# res它查询来的是多条,结果就是queryset对象 [对象,对象,对象]# 如果你使用的all查询的,就算查询一条数据,结果也是queryset对象 [对象,对象,对象]# 我们直接可以对queryset对象进行循环
2. 增加# 第一种方式:res=models.表名(类名).objects.create(username='', password='')'''增加数据的时候也有返回结果:就是当前插入成功的数据对象''' # 可不是影响的行数res.usernameres.password# 第二种方式:obj = models.表名(类名)(username='', password='') obj.save()
3. 更新res=models.表名(类名).objects.update(username='', password='') # 全表更新res=models.表名(类名).objects.filter().update(username='', password='')  '''返回的结果才是影响的行数'''# 第二种方式:# 先查询user_obj = models.表名(类名).objects.first()user_obj.username = usernameuser_obj.save()
4. 删除models.表名(类名).objects.filter().delete() # 直接就删除了"""删除的方式有两种类型"""1. 物理删除:直接把数据从磁盘中删除,.delete()方式就是直接物理删除2. 软删除: 软删除的意思是,不直接从硬盘中删数据,而是在表中在增加一个字段,一般叫is_delete它的用法就是,正常的数据这个字段的值为0,如果你要删除这条记录,is_Delete=1# 每次删除的时候,只需要更新这个字段就可以了id   username   password  age  gender is_delete1		1		1		1		1		01		1		1		1		1		11		1		1		1		1		01		1		1		1		1		01		1		1		1		1		01		1		1		1		1		1# 查询的时候怎么区分是正常数据还是已经被删除的数据?models.表名(类名).objects.filter(is_delete=0).all()

二、ORM创建表关系(补充)

"""三种关系:一对一:一个作者能不能有多个作者详情信息,一个作者详情不能有多个作者。一对多:一本图书能不能有多个出版社,而多个出版社可以出版多本图书多对多:一个作者能写多本图书,一本图书能有多个作者来写。
"""
# 当你在创建表的时候,先创建基础字段,然后在考虑关系字段,外键字段一对多:models.ForeignKey(to='被关联的表名', to_field='') # 默认是跟这个表的主键字段关联
多对多:models.ManytoManyField(to='被关联的表名', to_field='') # 默认是跟这个表的主键字段关联
一对一:models.OneToOneField(to='被关联的表名', to_field='') # 默认是跟这个表的主键字段关联

查询API

<1> all():                  查询所有结果
<2> filter(**kwargs):       它包含了与所给筛选条件相匹配的对象 
<3> get(**kwargs):          返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。<4> exclude(**kwargs):      它包含了与所给筛选条件不匹配的对象
<5> order_by(*field):       对查询结果排序('-id')
<6> reverse():              对且只对order_by排序的结果进行翻转
<8> count():                返回数据库中匹配查询(QuerySet)的对象数量。
<9> first():                返回QuerySet集中的第一个对象   
<10> last():                返回QuerySet集中的最后一个对象 
<11> exists():              如果QuerySet包含数据,就返回True,否则返回False
<12> values(*field):        返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列   <13> values_list(*field):   它与values()非常相似,但返回的是一个元组序列
<14> distinct():            从返回结果中剔除重复纪录

三、Django的生命周期流程图(补充)

1. 用户先从浏览器发起HTTP请求
2. 请求就来到了web服务器(web服务网关接口)socktet部分wsgiref模块实现的socket服务端"""1. 请求来的时候,把HTTP格式的数据封装打包成一个字典2. 响应走的时候,把数据封装成符合HTTP格式的数据返回给浏览器"""# 后面还给它改成uwsgi服务器# wsgiref、uwsgi他们两个也都会遵循一个协议:WSGI协议https://www.yuque.com/liyangqit/cbndkh/evyps8
3. Django应用
4. 中间件
5. 路由层
6. 视图层
7. 模板层
8. DB
"""混合项目:前端页面和Python代码都写在一个项目里面,前后端分离,前端是一个项目,后端是一个项目,中间通过json格式的数据进行数据传输"""

1.CGI

1、通用网关接口(Common Gateway Interface/CGI)是一种重要的互联网技术,可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数据。CGI描述了服务器和请求处理程序之间传输数据的一种标准。
2、CGI程序可以用任何脚本语言或者是完全独立编程语言实现,只要这个语言可以在这个系统上运行。
3、用来规范web服务器传输到php解释器中的数据类型以及数据格式,包括URL、查询字符串、POST数据、HTTP header等,也就是为了保证web server传递过来的数据是标准格式的
4、一句话总结: 一个标准,定义了客户端服务器之间如何传数据

2.FastCGI

1、快速通用网关接口(Fast Common Gateway Interface/FastCGI)是一种让交互程序与Web服务器通信的协议。FastCGI是早期通用网关接口(CGI)的增强版本。
2、FastCGI致力于减少网页服务器与CGI程序之间互动的开销,从而使服务器可以同时处理更多的网页请求。
3、使用FastCGI的服务器:Apache HTTP Server (部分)Cherokee HTTP ServerHiawatha WebserverLighttpdNginxLiteSpeed Web ServerMicrosoft IIS
4、一句话总结: CGI的升级版

在这里插入图片描述

3.WSGI

1、Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。自从WSGI被开发出来以后,许多其它语言中也出现了类似接口。
2、wsgi server (比如uWSGI) 要和 wsgi application(比如django )交互,uwsgi需要将过来的请求转给django 处理,那么uWSGI 和 django的交互和调用就需要一个统一的规范,这个规范就是WSGI WSGI(Web Server Gateway Interface)
3、WSGI,全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接口。自从 WSGI 被开发出来以后,许多其它语言中也出现了类似接口。
4、WSGI 的官方定义是,the Python Web Server Gateway Interface。从名字就可以看出来,这东西是一个Gateway,也就是网关。网关的作用就是在协议之间进行转换。
5、WSGI 是作为 Web 服务器与 Web 应用程序或应用框架之间的一种低级别的接口,以提升可移植 Web 应用开发的共同点。WSGI 是基于现存的 CGI 标准而设计的
6、一句话总结: 为Python定义的web服务器和web框架之间的接口标准

4.uWSGI

wsgiref,werkzeug(一个是符合wsgi协议的web服务器+工具包(封装了一些东西))
uWSGI 用c语言写的,性能比较高
gunicorn:python写的
tornado:也可以部署django项目
1、它是一个Web服务器(类似的有wsgiref,gunicorn),它实现了WSGI协议、uwsgi、http等协议。用于接收前端服务器转发的动态请求并处理后发给 web 应用程序。
2、Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换
3、一句话总结: 一个Web Server,即一个实现了WSGI的服务器,大体和Apache是一个类型的东西,处理发来的请求。 

在这里插入图片描述

5.uwsgi


location / {#方式一#include uwsgi_params; # 导入一个Nginx模块他是用来和uWSGI进行通讯的#uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间#uwsgi_pass 101.133.225.166:8080;#方式二#include uwsgi_params; # 导入一个Nginx模块他是用来和uWSGI进行通讯的#uwsgi_pass unix:///var/www/script/uwsgi.sock; # 指定uwsgi的sock文件所有动态请求#方式三proxy_pass http://101.133.225.166:8088
}它是uWSGI服务器实现的独有的协议,用于定义传输信息的类型,是用于前端服务器与 uwsgi 的通信规范。
一句话总结: uWSGI自有的一个协议
uWSGI:web服务器,等同于wsgiref
uwsgi:uWSGI自有的协议

在这里插入图片描述
在这里插入图片描述

四、路由层urls.py文件

  • url函数的使用(支持正则表达式)
  • 无名分组
  • 有名分组
  • 反向解析
    • 无名分组反向解析
    • 有名分组反向解析
  • 路由分发
  • 伪静态的概念
  • 虚拟环境(纯净版的解释器)
  • 视图层
    • 每个视图函数都要返回HttpResponse对象、render、redirect
    • 序列化(JsonResponse对象、drf中会有专门的序列化文件)
    • form表单如何上传文件
    • CBV(class based view)和FBV(function based view)
    • CBV的源码分析
    • 面试题:你看过Django的哪些源码?
    • 频率、权限、认证等的源码

五、url函数的使用(支持正则表达式)

# django1中使用的是urlurl(r'^admin/', admin.site.urls),  # 默认的路由地址,它是django自带的后台管理系统url('test', views.test),
url函数的第一个参数是支持正则表达式的
如果匹配到一个路由,就不再往下匹配,直接执行路由对应的视图函数# http://127.0.0.1:8000/test/
是django默认设置的,django会先拿着test去匹配,如果匹配不到,它会自动加一个斜杠再次去匹配# 缓存:redis数据库缓存
APPEND_SLASH = False  # 不加斜杠匹配, 默认的是 APPEND_SLASH = True# django2中使用的是path
path('test/', admin.site.urls), # path是不支持正则的,它是精准匹配,输入的内容和路由地址必须是完全匹配
re_path('^test/$', admin.site.urls) # django1中的url是完全一样的

六、无名分组

分组:在正则表达式中使用小括号括起来的内容就是分组单独的分组其实是没有意义的,它不影响我们的正常匹配re模块中的分组优先原则 re.match()先把分组的内容显示出来url('^test/(\d+)/(\d+)$', views.test),
def test(request, xx, yy):print(xx, yy) # 123return HttpResponse("test")注意:无名分组就是把路由地址匹配的的数据以位置参数的形式传递给视图函数

七、有名分组

分组:在正则表达式中使用小括号括起来的内容然后给它起个名字就是有名分组
url('^testadd/(?P<year>\d+)/(?P<month>\d+)$', views.testadd)注意:有名分组就是把路由地址匹配的的数据以关键字参数的形式传递给视图函数# 这种形式也是第二种传参方式
http://127.0.0.1:8000/testadd/123/11
http://127.0.0.1:8000/testadd/?a=1&b=2注意:1.有名分组和无名分组能否一起使用?不要一起使用2.但是无名或者有名单独的可以使用多次
url('^testadd/(?P<year>\d+)/(?P<month>\d+)/(?P<month>\d+)/(?P<month>\d+)$', views.testadd)def testadd(request, year, month):print('testadd')print(year)print(year)return HttpResponse('testadd')url('^test/(\d+)/(\d+)/(\d+)/(\d+)/(\d+)/(\d+)/(\d+)$', views.test),django2中的用法:用法和django1一样
re_path('^test/(\d+)/(\d+)/(\d+)/(\d+)/(\d+)/(\d+)/(\d+)$', views.test),
re_path('^testadd/(?P<year>\d+)/(?P<month>\d+)/(?P<month>\d+)/(?P<month>\d+)$', views.testadd)

八、反向解析


1.反向解析:  意思是可以给路由起一个名字,然后通过一个方法可以解析出这个名字对应的路由地址url('^testadd/(?P<year>\d+)/(?P<month>\d+)$', views.testadd, name='testadd') # name路由名字2.后端解析
后端反向解析
print(reverse('test'))  # /test/  /test/v1/  /test/v1/v23.前端解析 {% url '待匹配的名字' %}
<a href="{% url 'test' %}">点我</a>

九、无名分组反向解析

1.前端解析
<a href="{% url 'test' 111 %}">点我</a>2.后端解析
print(reverse('test', args=(123, )))  # /test/1  /test/123问题:这个参数到底指定几或者说指定给谁?
reverse('test', args=(123, ))

十、有名分组反向解析

1.前端解析
<a href="{% url 'testadd' 2023 12 %}">点我</a>2.后端解析
print(reverse('testadd',kwargs={'year':2023, 'month':12}))  # /testadd/2023  /testadd/2023/12

十一、django2中的path函数支持的5种转换器

path('test/', admin.site.urls)
Django默认支持以下5个转化器:● str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
● int,匹配正整数,包含0。
● slug,匹配字母、数字以及横杠、下划线组成的字符串。
● uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
● path,匹配任何非空字符串,包含了路径分隔符(/)(不能用?)urlpatterns = [  path('articles/2003/', views.special_case_2003),  path('articles/<int:year>/', views.year_archive),  path('articles/<int:year>/<int:month>/', views.month_archive),  path('articles/<int:year>/<int:month>/<slug>/', views.article_detail),  # path才支持,re_path不支持path('order/<int:year>',views.order),
]

十二、路由分发

# 目前一个django项目只有一个总路由文件urls.py
# 但是当我们的路由比较多的时候,这个文件就会产生很多的路由地址,产生的问题就是理由比较臃肿,不太容易管理,也不太容易排查错误我们针对每一个应用也可以有自己的路由文件,每一个应用下的路由我们称之为是子路由
但是你会发现每一个应用下面没有urls.py这个文件
我们需要自己手动创建出来一个文件'''这个时候产生了很多的路由文件,匹配的时候先匹配总路由,然后有总路由进行分发到每个子路由'''
# 这个时候总路由的作用就是分发了,总路由就不再执行具体的视图函数,而是交给子路由1.第一种方式:
url('^app01/', include(app01_urls)),
url('^app02/', include(app02_urls)),2.第二种方式
url('^app01/', include('app01.urls')),
url('^app02/', include('app02.urls')),"""总路由中的路由分发地址后面一定不能加$
"""

十三、伪静态的概念

# 静态文件 .html
index.htmlhttp://127.0.0.1:8000/app01/index
https://www.cnblogs.com/fanshaoO/p/17592993.html # 其实就是伪静态之后的地址
原本这个地址是动态的,数据是从数据库中查询出来的,而不是在html页面中写死的为什么要伪静态呢?
"""作用就是让搜索引擎增大seo的查询力度,言外之意就是让我们的页面能够更加容易的被搜索引擎搜索出来
"""
# 比如你在百度中搜索一个关键词,百度的搜索引擎就会去全网搜索数据
# 其实搜索引擎(百度、谷歌、bing、等)就是一个巨大的爬虫程序因为静态的页面更加容易被搜索引擎抓到,这个称之为是seo
seo就是优化你们的产品能够被更容易的搜多到SEO---------------------->一般是通过技术手段等实现
SEM---------------------->它是需要收费的,其实就是广告

十四、虚拟环境

# 一般我们开发项目是一个单独的项目使用一个单独的解释器环境
举例:
开发一个CRM系统:3.6
开发一个OA系统:3.7
开发一个商城系统:3.6难道我们每一个项目都使用一个解释器吗? 肯定不是
每个项目单独使用一个解释器版本,这个解释器中只安装这个项目使用到的模块注意1:每开发一个项目我就下载一个解释器,当然能够解决问题,都是这样做吗?我们会使用虚拟环境来解决这个问题虚拟环境其实就是一个纯净版本的解释器,不用每次都下载和安装它就是一个文件夹形式存在的解释器注意2:虚拟环境尽量不要创建,创建出来够你的项目使用就行了注意3:虚拟环境还可以通过命令创建

相关文章:

Django的生命周期流程图(补充)、路由层urls.py文件、无名分组和有名分组、反向解析(无名反向解析、有名反向解析)、路由分发、伪静态

一、orm的增删改查方法&#xff08;补充&#xff09; 1. 查询resmodels.表名(类名).objects.all()[0]resmodels.表名(类名).objects.filter(usernameusername, passwordpassword).all()res models.表名(类名).objects.first() # 判断&#xff0c;判断数据是否有# res如果查询…...

selenium交互代码

一&#xff1a;selenium交互 用selenium打开网页后&#xff0c;也可以做一系列真人的操作&#xff0c;也就是利用selenium和浏览器进行交互&#xff0c;可利用以下几个函数进行操作&#xff1a; input.send_keys() 传递输入内容给某输入框button.click() 点击某按钮browser.e…...

下载远程服务器文件

业务需求:下载某云盘的视频文件存储到本地 测试代码 RequestMapping("testVideo")public String test() {try {SimpleDateFormat DATE_FORMAT new SimpleDateFormat("yyyy/MM/dd/");//组装本地保存地址StringBuilder filePath new StringBuilder(StoreP…...

[SQL挖掘机] - 索引

介绍: 当你在数据库中进行查询时&#xff0c;索引是一种用于提高查询性能的重要工具。索引是对表中的一列或多列进行排序的数据结构&#xff0c;它可以快速定位到满足特定条件的记录&#xff0c;从而减少了查询所需的时间和资源。 在数据库中使用索引的主要好处包括&#xff…...

C++STL库中的list

文章目录 list的介绍及使用 list的常用接口 list的模拟实现 list与vector的对比 一、list的介绍及使用 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 2. list的底层是双向带头循环链表结构&#xff0c;双向带头循…...

【LeetCode 75】第十七题(1493)删掉一个元素以后全为1的最长子数组

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码运行结果&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 给一个数组&#xff0c;求删除一个元素以后能得到的连续的最长的全是1的子数组。 我们可以先单独统计出连续为1的子数组分别长度…...

配置IPv6 over IPv4 GRE隧道示例

组网需求 如图1&#xff0c;两个IPv6网络分别通过SwitchA和SwitchC与IPv4公网中的SwitchB连接&#xff0c;客户希望两个IPv6网络中的PC1和PC2实现互通。 其中PC1和PC2上分别指定SwitchA和SwitchC为自己的缺省网关。 图1 配置IPv6 over IPv4 GRE隧道组网图 配置思路 要实现I…...

Google Earth Engine谷歌地球引擎提取多波段长期反射率数据后绘制折线图并导出为Excel

本文介绍在谷歌地球引擎GEE中&#xff0c;提取多年遥感影像多个不同波段的反射率数据&#xff0c;在GEE内绘制各波段的长时间序列走势曲线图&#xff0c;并将各波段的反射率数据与其对应的成像日期一起导出为.csv文件的方法。 本文是谷歌地球引擎&#xff08;Google Earth Engi…...

第三大的数

414、第三大的数 class Solution {public int thirdMax(int[] nums) {Arrays.sort(nums);int tempnums[0];int ansnums[0];int count 0;// if(nums.length<3){// return nums[nums.length-1];// }// else {for(int inums.length-1;i>0;i--){if (nums[i]>nums[i…...

正则表达式中的方括号[]有什么用?

在正则表达式中&#xff0c;方括号 [] 是用于定义字符集合的元字符。它在正则表达式中有以下作用&#xff1a; 匹配字符集合中的任意一个字符&#xff1a;方括号中列出的字符&#xff0c;表示在这个位置可以匹配这些字符中的任意一个。例如&#xff0c;[abc] 将匹配任意一个字符…...

SQL编写规范

文章目录 1.命名规范&#xff1a;2.库表设计&#xff1a;3.查询数据&#xff1a;4.修改数据&#xff1a;5.索引创建&#xff1a; 1.命名规范&#xff1a; 1.库名、表名、字段名&#xff0c;必须使用小写字母或数字&#xff0c;不得超过30个字符。 2.库名、表名、字段名&#…...

Azure pipeline自动化打包发布

pipeline自动化&#xff0c;提交代码后&#xff0c;就自动打包&#xff0c;打包成功后自动发布 第一步 pipeline提交代码后&#xff0c;自动打包。 1 在Repos,分支里选择要触发的分支&#xff0c;这里选择cn_china,对该分支设置分支策略 2 在生产验证中增加新的策略 3 在分支安…...

【算法提高:动态规划】1.4 状态机模型 TODO

文章目录 例题列表1049. 大盗阿福&#xff08;其实就是打家劫舍&#xff09;1057. 股票买卖 IV&#xff08;k笔交易&#xff09;1058. 股票买卖 V&#xff08;冷冻期&#xff09;1052. 设计密码⭐⭐⭐&#x1f6b9;&#x1f6b9;&#x1f6b9;&#xff08;TODO&#xff09;1053…...

ip link add 命令

ip link add veth0 type veth peer name veth1 这条命令主要用于在 Linux 操作系统中创建一个新的 veth(虚拟以太网) 对&#xff0c;这是一种虚拟网络设备&#xff0c;用于在 Linux 命名空间&#xff08;namespaces&#xff09;之间创建网络连接。此命令将创建两个设备&#xf…...

unity事件处理

方法调用 //发送事件 【发送事件码&#xff0c;发送消息内容】 EventCenterUtil.Broadcast(EventCenterUtil.EventType.Joystick, ui);//监听无参事件 EventCenterUtil.AddListener(EventCenterUtil.EventType.Joystick, show); public void show(){}//发送事件 有参事件 Eve…...

《ChatGPT原理最佳解释,从根上理解ChatGPT》

【热点】 2022年11月30日&#xff0c;OpenAI发布ChatGPT&#xff08;全名&#xff1a;Chat Generative Pre-trained Transformer&#xff09;&#xff0c; 即聊天机器人程序 &#xff0c;开启AIGC的研究热潮。 ChatGPT是人工智能技术驱动的自然语言处理工具&#xff0c;它能够…...

大数据Flink(五十):流式计算简介

文章目录 流式计算简介 一、数据的时效性 二、流式计算和批量计算...

13-4_Qt 5.9 C++开发指南_基于QWaitCondition 的线程同步_Wait

在多线程的程序中&#xff0c;多个线程之间的同步实际上就是它们之间的协调问题。例如上一小节讲到的3个线程的例子中&#xff0c;假设 threadDAQ 写满一个缓冲区之后&#xff0c;threadShow 和 threadSaveFile 才能对缓冲区进行读操作。前面采用的互斥量和基于 OReadWriteLock…...

STM32(HAL)多串口进行重定向(printf函数发送数据)

目录 1、简介 2.1 基础配置 2.1.1 SYS配置 2.1.2 RCC配置 2.2 串口外设配置 2.3 项目生成 3、KEIL端程序整合 4、效果测试 1、简介 在HAL库中&#xff0c;常用的printf函数是无法使用的。本文通过重映射实现在HAL库多个串口可进行类似printf函数的操作。 2.1 基础配置 2.…...

29_互联网(The Internet)(IP数据包;UDP;TCP;DNS;OSI)

上篇介绍了计算机网络的基础知识&#xff0c;也提到互联网&#xff08;The Internet&#xff09;&#xff0c;本篇将会详细介绍互联网&#xff08;The Internet&#xff09;。 文章目录 1. 互联网&#xff08;The Internet&#xff09;组成及数据包传输过程2. IP 数据包的不足3…...

xShell常用命令

xShell常用命令 一、文件夹目录1、cd-更改目录2、mkdir-建立目录3、rm-删除目录4、pwd-查看当前路径5、rmdir-删除空目录 二、文件操作1、cat-显示文件内容2、diff-比较文件内容3、查看文件的名字和后缀4、ls-列出文件5、cp-复制文件6、mv-移动和重命名文件找不同&#xff1a;选…...

React性能优化之Memo、useMemo

文章目录 React.memo两种方式参数应用场景 拓展useMemouseMemo(calculateValue, dependencies) 参考资料 React.memo React 的渲染机制&#xff0c;组件内部的 state 或者 props 一旦发生修改&#xff0c;整个组件树都会被重新渲染一次&#xff0c;即时子组件的参数没有被修改&…...

IDEA开启并配置services窗口

前言&#xff1a; 一般一个spring cloud项目中大大小小存在几个十几个module编写具体的微服务项目。此时&#xff0c;如果要调试测需要依次启动各个项目比较麻烦。 方法一&#xff1a; 默认第一次打开项目的时候&#xff0c;idea会提示是否增加这个选项卡&#xff0c;如果你没…...

vue2企业级项目(三)

vue2企业级项目&#xff08;三&#xff09; 引入mockjs&#xff0c;i18n 1、mockjs 项目下载依赖 npm install --save-dev mock根目录创建mock文件夹&#xff0c;并创建mock/index.js import Mock from "mockjs";// 设置全局延时 没有延时的话有时候会检测不到数据…...

QT 在label上透明绘图

一、新建TransparentDemo工程 二、在界面上添加label&#xff0c;修改样式表&#xff0c;将底色置为红色&#xff0c;作为北京 三、新建一个TransparentLabel类&#xff0c;继承自QLabel 此时&#xff0c;工程包括文件 五、在transparentlabel.h中添加 头文件 #include …...

SAM(Segment Anything)大模型论文汇总

A Comprehensive Survey on Segment Anything Model for Vision and Beyond 论文&#xff1a;https://arxiv.org/abs/2305.08196 25页综述&#xff0c;198篇参考文献&#xff01;52个开源项目&#xff01;本文第一个全面回顾了分割一切模型(SAM)的研究和应用进展&#xff0c;…...

金融翻译难吗,如何做好金融翻译?

我们知道&#xff0c;金融翻译涉及企业经济这块的&#xff0c;是影响各公司发展很重要的一方面&#xff0c;翻译做得好&#xff0c;可以促进公司内外的交流&#xff0c;及时掌握各种信息&#xff0c;做好应对。那么&#xff0c;金融翻译难吗&#xff0c;如何做好金融翻译&#…...

Java面试题(Tomcat与Nginx)

Tomcat 什么是Tomcat&#xff1f; 简单来说是一个运行Java的网络服务器&#xff0c;也是jsp和serlvet的一个容器 Tomcat的缺省端口是多少&#xff0c;怎么修改? conf文件夹下修改server.xml文件 <Connector connectionTimeout"20000" port"8080" p…...

React-使用mobx

React 中使用 mobx 配置开发环境 安装mobx和中间件工具 mobx-react-lite 只能函数组件中使用 yarn add mobx mobx-react-lite初始化 mobx 定义数据状态 state在构造器中实现数据响应式处理 makeAutoObservble定义修改数据的函数 action实例化 store 并导出 import { compute…...

LeetCode ACM模式——哈希表篇(一)

刷题顺序及部分思路来源于代码随想录&#xff0c;网站地址&#xff1a;https://programmercarl.com 部分思路来源于力扣官方题解&#xff0c;作者主页&#xff1a;https://leetcode.cn/u/leetcode-solution/ 242. 有效的字母异位词 给定两个字符串 s 和 t &#xff0c;编写一个…...