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

csrf跨站请求的相关装饰器、Auth模块(模块的使用、相关方法、退出系统、修改密码功能、注册功能)、扩展默认的auth_user表

一、csrf跨站请求的相关装饰器

'''
django.middleware.csrf.CsrfViewMiddlewareDjango中有一个中间件对csrf跨站做了验证,我只要把csrf的这个中间件打开,
那就意味着所有的方法都要被验证
'''在所有的视图函数中:只有几个视图函数做验证只有几个函数不做验证csrf_protect: 哪个视图函数加了这个装饰器,这个函数就会做验证
csrf_exempt:哪个视图函数加了这个装饰器,这个函数就不会做验证
-------------------------------------------------------------------------------
注意:加入装饰器验证csrf,先导入下面这行代码:
from django.views.decorators.csrf import csrf_exempt,csrf_protect一、FBV模式下:
情境11.先在settings.py配置文件中注释下面这行代码:# 'django.middleware.csrf.CsrfViewMiddleware',2.然后在需要验证的视图函数上面加上 @csrf_protect 则说明这个视图函数需要经过验证.@csrf_protectdef index(request):return render(request, 'index.html')def func(request):return render(request, 'func.html')3. 上述两个视图函数中,由于index函数加了装饰器csrf_protect所以需要经过csrf验证,而func函数不需要情境21.先打开settings.py配置文件中下面这行代码:即不用注释'django.middleware.csrf.CsrfViewMiddleware',2.然后在不需要验证的视图函数上面加上 @csrf_exempt 则说明这个视图函数不需要经过验证,而没有加任何装饰的视图函数必须经过csrf验证@csrf_exemptdef index(request):return render(request, 'index.html')def func(request):return render(request, 'func.html')return render(request, 'func.html')3. 上述两个视图函数中,在'django.middleware.csrf.CsrfViewMiddleware',没有被注释的情况下:由于index函数加了装饰器csrf_exempt,所以不需要经过csrf验证,而func函数需要csrf验证。情境31.在打开settings.py配置文件中下面这行代码的情况下:'django.middleware.csrf.CsrfViewMiddleware',2.然后在不需要验证的视图函数上面加上 @csrf_exempt 则说明这个视图函数不需要经过验证,而另一个加了装饰器 csrf_protect 的视图函数也必须经过csrf验证@csrf_exemptdef index(request):return render(request, 'index.html')@csrf_protectdef func(request):return render(request, 'func.html')3. 上述两个视图函数中,由于index函数加了装饰器csrf_exempt所以不需要经过csrf验证,而func函数加了装饰器csrf_protect需要csrf验证。二、CBV模式下:
注意:加入装饰器,先导入下面代码:
from django.views.decorators.csrf import csrf_exempt,csrf_protect
from django.views import View
from django.utils.decorators import method_decorator方式1:在post函数上,加入csrf_exempt无效,还是报错:Forbidden (403)1.先打开settings.py配置文件中下面这行代码:即不用注释'django.middleware.csrf.CsrfViewMiddleware',2.然后在不需要验证的视图函数上面加上 @csrf_exempt 则说明这个视图函数不需要经过验证,但是结果是还需要验证,说明此方式无效。class Login(View):# 不让post方法做验证@method_decorator(csrf_exempt)def post(self, request):print('post')return HttpResponse('post')方式2:在类的投诉,加入csrf_exempt无效,还是报错:Forbidden (403)1.先打开settings.py配置文件中下面这行代码:即不用注释'django.middleware.csrf.CsrfViewMiddleware',2.在类的头上加了装饰器,但是还是无效@method_decorator(csrf_exempt, name='post')class Login(View):# 不让post方法做验证def post(self, request):print('post')return HttpResponse('post')方式3:CBV的验证只有在dispatch函数上加装饰器,需要验证的函数才能通过验证class Login(View):@method_decorator(csrf_exempt)def dispatch(self, request, *args, **kwargs):return super(Login, self).dispatch(request, *args, **kwargs)# 不让post方法做验证def post(self, request):print('post')return HttpResponse('post')注意:在settings.py配置文件中注释下面这行代码:#'django.middleware.csrf.CsrfViewMiddleware',然后,对三种方式进行验证csrf_protect,都可以CBV针对于csrf_exempt:只有第三张方式才生效,其余两种方式不行
CBV针对于csrf_protect:三种方式都可以# @method_decorator(csrf_protect,name='post') # 第二种方式也行
class Login(View):@method_decorator(csrf_protect)  # 第三种方式可以def dispatch(self, request, *args, **kwargs):return super().dispatch(request, *args, **kwargs)# 不让post方法做验证# @method_decorator(csrf_protect)  # 第一种方式行def post(self, request):print("post")return HttpResponse("post")

二、Auth模块的使用

Auth模块是什么?Auth模块是Django自带的用户认证模块:我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能,这还真是个麻烦的事情呢。Django作为一个完美主义者的终极框架,当然也会想到用户的这些痛点。它内置了强大的用户认证系统–auth,它默认使用 auth_user 表来存储用户数据。注意事项:在执行数据库迁移命令的时候,会自动生成一个默认的表,其中有auth_开头的很多表auth_user表的作用:djagno自带的后台管理系统所依赖的数据就在这张表中默认情况下,auth_user表是空表,没有用户名和密码,因此我们需要自己创建用户数据需要创建一个超级管理员账号才能登录'''
创建超级管理员命令:python manage.py createsuperuser在配置文件settings.py中修改语言为中文和时区:
# 语言
LANGUAGE_CODE = 'zh-hans'
# 时区
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False'''

三、Auth模块的相关方法

登录功能、注册功能、修改密码、退出系统、认证功能等学习如何使用# http://127.0.0.1:8000/accounts/login/?next=/order/
# @login_required # :http://127.0.0.1:8000/accounts/login/?next=/order/
'''当局部和全局都存在的时候,按局部的如果局部没有,按照全局的
'''
@login_required(login_url='/order/login/')  # 局部设置
def order(request):pass###################配置文件中全局配置LOGIN_URL = '/login/' # 全局配置'''
如果没有登录则 跳转到 http://127.0.0.1:8000/accounts/login/?next=/order/
但是若加了装饰器,则跳转到指定的路由页面在settings.py配置文件中全局配置,
LOGIN_URL = '/login/'当局部和全局都在的时候,按局部的,若局部没有,则按全局的
'''
@login_required(login_url='/login/')  # 局部设置登录
def order(request):# 验证用户是否已经登录认证print(request.user.is_authenticated)  # True# 若加了@login_required装饰器,则下面的判断不需要# if request.user.is_authenticated:#     # 处理登录之后的逻辑#     pass# else:#     # 没有登录,跳转登录页面#     passreturn HttpResponse('order')def order1(request):return HttpResponse('order')---------------------------------------------------------------------------------------auth模块的后端登录代码:
from django.contrib import authdef login(request):if request.method == 'POST':# 1.接收前端传过来的数据username = request.POST.get('username')password = request.POST.get('password')# 2.验证用户名和密码是否正确# 2.1 去哪个表中查询数据# 2.2 使用这张表中的哪个字段来比较'''这里的登录,我们使用auth模块,登录的时候所使用的表是auth_user表'''# def authenticate(request=None, **credentials):return user 需要关键字传参user_obj = auth.authenticate(request, username=username, password=password)  # request.session['username'] = user_obj.usernane'''返回值是登录成功之后的用户对象'''print(user_obj)  # lindaprint(user_obj.username)  # lindaprint(user_obj.password)  # pbkdf2_sha256$150000$auQyjuifJ0ie$I8uTuxyATU6FubswdMCTiL2+Hg+5sqzkvZruPmPdlZ0='''注意事项1:传递参数的时候,用户名和密码必须同时传入'''# if user_obj:#     # 保存用户的状态:cookie  session#     request.session['username'] = user_obj.username#     request.session['id'] = user_obj.id'''注意事项2:由于上面使用了auth模块,在此不建议这样写,auth模块都提供有相应的方法要么全部使用auth模块的方法,要么全部自己写,不建议混合使用'''# 3.使用auth模块提供的方法auth.login(request, user_obj)'''只要写了auth.login,那么就可以在全局有任何request的地方使用request.user拿到用户对象'''return redirect('/home/')return render(request, 'login.html')

登录页面前端代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>body {{#background: url('https://pic2.zhimg.com/3ae866e7992a94069c7e0c417aac807d_r.jpg') no-repeat;#}background: url('https://img0.baidu.com/it/u=741268616,1401664941&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1691859600&t=5c5bee3052ecec363c1ecc2eea9ac3f7') no-repeat;background-size: 100% 130%;}#login_box {width: 20%;height: 400px;background-color: #00000060;margin: auto;margin-top: 10%;text-align: center;border-radius: 10px;padding: 50px 50px;}h2 {color: #ffffff90;margin-top: 5%;}#input-box {margin-top: 5%;}span {color: #fff;}input {border: 0;width: 60%;font-size: 15px;color: #fff;background: transparent;border-bottom: 2px solid #fff;padding: 5px 10px;outline: none;margin-top: 10px;}button {margin-top: 50px;width: 60%;height: 30px;border-radius: 10px;border: 0;color: #fff;text-align: center;line-height: 30px;font-size: 15px;background-image: linear-gradient(to right, #30cfd0, #330867);}#sign_up {margin-top: 45%;margin-left: 60%;}a {color: #b94648;}</style>
</head><body>
<div id="login_box"><h2>登录页面</h2><form action="" method="post"><div id="input_box"><input type="text" placeholder="请输入用户名" name="username"></div><div class="input_box"><input type="password" placeholder="请输入密码" name="password"></div><button>提交</button>
{#        <input type="submit" value="提交">#}<br></form>
</div>
</body>
</html>

四、Auth模块之退出系统

def logout(request):# 清除cookie或者sessionauth.logout(request)return redirect('/home/')

六、Auth模块之修改密码功能

1.验证老密码是否正确
is_right = request.user.check_password(old_password)2.修改密码
request.user.set_password(new_password) # 这种写法没有真正的操作数据库
request.user.save()  # 但是执行了save()之后就操作数据库了案例代码:
@login_required
def set_password(request):if request.method == 'POST':old_password = request.POST.get('old_password')new_password = request.POST.get('new_password')re_password = request.POST.get('re_password')# 先验证两次密码是否输入一致if new_password == re_password:# 验证老密码是否正确is_right = request.user.check_password(old_password)if is_right:# 修改密码# 方式1:这种写法没有真正的操作数据库request.user.set_password(new_password)# 方式1需要保存一下才能修改成功到数据库request.user.save()return redirect('/home/')return render(request, 'set_password.html', locals())前端代码:
<div id="login_box"><h2>修改密码</h2><form action="" method="post">{% csrf_token %}<div id="input_box">用户名:<input type="text" name="username" readonly value="{{ request.user.username }}"></div><div class="input_box">旧密码:<input type="password" placeholder="请输入旧密码" name="old_password"></div><div class="input_box">新密码:<input type="password" placeholder="请输入新密码" name="new_password"></div><div class="input_box">请确认:<input type="password" placeholder="确认新密码" name="re_password"></div><button>提交</button>
{#        <input type="submit" value="提交">#}<br></form>
</div>

七、Auth模块之注册功能

'''
入库的三种方式:方式1:自动入库到auth_user表,但是密码是明文密码,登录的时候是经过加密处理的,则登录不上User.objects.create(username=username, password=password)方式2:密码是密文入库User.objects.create_user(username=username, password=password)方式3:创建超级用户,并且密码是密文存入,但是必须指定邮箱,否则报错User.objects.create_superuser(username=username, password=password, email='123@qq.com')
'''from django.contrib.auth.models import Userdef register(request):if request.method == 'POST':username = request.POST.get('username')password = request.POST.get('password')# 入库# 方式1:自动入库到auth_user表,但是密码是明文密码,登录的时候是经过加密处理的,则登录不上# User.objects.create(username=username, password=password)# 方式2:创建普通用户,密码是密文入库# User.objects.create_user(username=username, password=password)# 方式3:创建超级用户,并且密码是密文存入,但是必须指定邮箱,否则报错User.objects.create_superuser(username=username, password=password, email='123@qq.com')return redirect('/login/')return render(request, 'register.html')

八、扩展默认的auth_user表

默认情况下使用的就是auth_user的默认字段
扩展我们自己的字段前提是:所有的模型类都继承
from django.contrib.auth.models import AbstractUser现在是要在auth_user表的基础上扩展字段,不要继承了models.Model**************************************************************************
注意:扩展之后需要在配置文件(settings.py)中加一句话AUTH_USER_MODEL = '应用名.表名'eg:AUTH_USER_MODEL = 'app01.UserInfo'-------------------------------------------------------------------------------------注意:"""在扩展表之前数据库不能够迁移,扩展这个表需要在迁移数据库之前做"""问:如果你迁移了,还想扩展怎么办?1. 换库2. 需要删除很多个应用的migrations文件夹
注意:迁移报错的时候,有可能会用到下面这句代码:python manage.py migrate myapp --fake---------------重点:扩展表之后发生的变化-------------------
"""扩展表之后发生的变化:1. 原来的auth_user表不存在了,换成你自己新建的表名了2. 原来的auth_user表中的字段还都在,然后多了自己扩展的字段3. 继承的类要发生改变AbstractUser4. 在配置文件中加入下面一句话:AUTH_USER_MODEL = 'app01.UserInfo'AUTH_USER_MODEL = '应用名.类名'5. 扩展之后还是按照原来的auth_user表使用6. auth模块中的数据还是你扩展的表7. 扩展之前别迁移.
"""--------------------------------------------------------------------
案例:
因为之前迁移过了,所以我选择换库:从sqlite3---->mysql1.在settings.py配置文件中把数据库换成MySQL:
'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'db22','HOST': '127.0.0.1','PORT': 3306,'USER': 'root','PASSWORD': 'root','CHARSET': 'utf8'},
2.扩展表的字段:先导入AbstractUser,让扩展表继承AbstractUser
from django.contrib.auth.models import AbstractUser
class UserInfo(AbstractUser):phone = models.CharField(max_length=64)# 头像avatar = models.CharField(max_length=64)
3.迁移
python manage.py makemigrations
python manage.py migrate

相关文章:

csrf跨站请求的相关装饰器、Auth模块(模块的使用、相关方法、退出系统、修改密码功能、注册功能)、扩展默认的auth_user表

一、csrf跨站请求的相关装饰器 django.middleware.csrf.CsrfViewMiddlewareDjango中有一个中间件对csrf跨站做了验证&#xff0c;我只要把csrf的这个中间件打开&#xff0c; 那就意味着所有的方法都要被验证 在所有的视图函数中&#xff1a;只有几个视图函数做验证只有几个函数…...

(WWW2023)论文阅读-Detecting Social Media Manipulation in Low-ResourceLanguages

论文链接&#xff1a;https://arxiv.org/pdf/2011.05367.pdf 摘要 社交媒体被故意用于恶意目的&#xff0c;包括政治操纵和虚假信息。大多数研究都集中在高资源语言上。然而&#xff0c;恶意行为者会跨国家/地区和语言共享内容&#xff0c;包括资源匮乏的语言。 在这里&#xf…...

centos-stream-9 centos9 配置国内yum源 阿里云源

源配置 tips: yum配置文件路径 /etc/yum.repos.d/centos.repo 1.备份源配置 [Very Important!]mv /etc/yum.repos.d/centos.repo /etc/yum.repos.d/centos.repo.backup2.Clean Cache: yum clean all3.Backup the Old CentOS-Base.repo If exist this file.cd /etc/yum.repos.…...

查看单元测试用例覆盖率新姿势:IDEA 集成 JaCoCo

1、什么是 IDEA IDEA 全称 IntelliJ IDEA&#xff0c;是 Java 编程语言开发的集成环境。IntelliJ 在业界被公认为最好的 Java 开发工具&#xff0c;尤其在智能代码助手、代码自动提示、重构、JavaEE 支持、各类版本工具(git、SVN 等)、JUnit、CVS 整合、代码分析、 创新的 GUI…...

js和nodejs如何将文件切片和合并

nodejs进行文件切片合并 使用nodejs读取文件流&#xff0c;并对流进行切片合并等操作&#xff0c;就需要用到Buffer对象&#xff0c;可对文件流进行切片&#xff0c;并合并。 const fs require(fs)// 读取一个文件&#xff0c;使用fs读取文件获取一个Buffer类型数据 const b…...

Java内存模型

Java内存模型全称JMM&#xff08;Java Memory Model&#xff09; 内存主要有堆和栈组成 下面来一段demo代码详细讲解堆栈的作用&#xff0c;以及流程 public class Employee {private String name;private Integer age;private Department department;public Employee(){}pub…...

[国产MCU]-BL602开发实例-看门狗定时器(WDG)

看门狗定时器(WDG) 文章目录 看门狗定时器(WDG)1、看门狗定时器(WDG)介绍2、看门狗定时器驱动API介绍3、看门狗定时器使用实例看门狗(Watchdog),又叫看门狗定时器(Watchdog Timer),是一种硬件的计时设备,当系统的主程序发生某些错误时,导致未及时清除看门狗计时器…...

28 | Boss直聘数据分析

针对boss直聘网的招聘信息,然后分析互联网发展排名前十的城市在互联网方面职位的薪水,学历要求,经验要求,等等信息。 准备从以下几个方面进行分析: (1)各个城市的平均工资 (2)各个学历的平均工资 (3)各个岗位的平均工资 (4)不同工作经验要求的工资 (5)各个经验…...

Hash 缓存

Hash 缓存 输出文件名&#xff08;Hash&#xff09; 静态资源缓存是前端性能优化的一个点&#xff0c;所以在前端开发过程中&#xff0c;一般会最大限度的利用缓存&#xff08;这里主要是强缓存&#xff09;。如果设置了强缓存后&#xff0c;每次当我们部署了新的项目文件到线…...

腾讯云CVM服务器标准型S5性能CPU处理器测试

腾讯云服务器CVM标准型S5实例是次新一代的标准型实例&#xff0c;CPU采用主频2.5GHzIntel Xeon Cascade Lake或者Intel Xeon Cooper Lake处理器&#xff0c;睿频3.1GHz&#xff0c;云服务器S5基于全新优化虚拟化平台&#xff0c;提供了平衡、稳定的计算、内存和网络资源&#x…...

【左神算法刷题班】第16节:累加和为k的数组、逆序对问题、约瑟夫环问题

题目1 给定一个有正、有负、有0的数组arr&#xff0c; 给定一个整数k&#xff0c; 返回arr的子集是否能累加出k 1&#xff09;正常怎么做&#xff1f; 2&#xff09;如果arr中的数值很大&#xff0c;但是arr的长度不大&#xff0c;怎么做&#xff1f; 问题 1&#xff09;…...

【React | 前端】在React的前端页面中,判断某个变量值是否被定义?根据是否定义显示不同的内容?

问题描述 在React的前端页面中&#xff0c;判断某个变量值是否被定义&#xff1f;根据是否定义显示不同的内容&#xff1f; 问题场景 假如&#xff0c;现在有一个需求是设计一个新功能&#xff0c;新功能中要求新增一个之前没有的变量&#xff0c;假设是计算某一个数组的长度…...

机器学习深度学习——seq2seq实现机器翻译(数据集处理)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——从编码器-解码器架构到seq2seq&#xff08;机器翻译&#xff09; &#x1f4da;订阅专栏&#xff1a;机…...

锁定Mac的内置键盘,防止外接键盘时的误触

场景&#xff1a;把你的外接键盘放在mac上&#xff0c;然后打字时&#xff0c;发现外接键盘误触mac键盘&#xff0c;导致使用体验极差 解决方案&#xff1a;下载Karabiner-Elements这款软件&#xff0c;并给它开启相关权限。 地址&#xff1a;https://github.com/pqrs-org/Ka…...

由于找不到d3dx9_42.dll,无法继续执行代码。重新安装程序可能会解决此问题

d3dx9_42.dll是一个动态链接库文件&#xff0c;它是Microsoft DirectX 9的一部分。这个文件包含了DirectX 9的一些函数和资源&#xff0c;用于支持计算机上运行基于DirectX 9的应用程序和游戏。它通常用于提供图形、音频和输入设备的支持&#xff0c;以及其他与图形和游戏相关的…...

解决Vue+Element UI使用el-dropdown(下拉菜单)国际化时菜单label信息没有刷新的情况

说明&#xff1a;该篇博客是博主一字一码编写的&#xff0c;实属不易&#xff0c;请尊重原创&#xff0c;谢谢大家&#xff01; 问题描述 在默认中文时&#xff0c;点击布局大小下拉菜单正常显示中文&#xff0c;此时切换至英文时&#xff0c;再次点击下拉菜单&#xff0c;还…...

Prometheus技术文档-概念

Prometheus是一个开源的项目连接如下&#xff1a; Prometheus首页、文档和下载 - 服务监控系统 - OSCHINA - 中文开源技术交流社区 基本概念&#xff1a; Prometheus是一个开源的系统监控和告警系统&#xff0c;由Google的BorgMon监控系统发展而来。它主要用于监控和度量各种…...

JQuery判断radio(单选框)是否选中和获取选中值方法总结

使用checked属性判断选中、jquery获取radio单选按钮的值、获取一组radio被选中项的值、设置单选按钮被选中等&#xff0c;详细如下&#xff1a; 一、利用获取选中值判断选中 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.…...

Effective Python 读书笔记

文章目录 前言第1章&#xff1a;用Pythonic方式来思考 1. 用Pythonic方式来思考 2. 遵循PEP8风格3. 了解bytes, str, unicode区别4. 用辅助函数取代复杂表达式5. 了解切割序列的方法6. 单次切片操作内&#xff0c;不要同时指定start, end, stride 7. 用列表推导取代map, filter…...

Monge矩阵

Monge矩阵 对一个m*n的实数矩阵A&#xff0c;如果对所有i&#xff0c;j&#xff0c;k和l&#xff0c;1≤ i<k ≤ m和1≤ j<l ≤ n&#xff0c;有 A[i,j]A[k,l] ≤ A[i,l]A[k,j] 那么&#xff0c;此矩阵A为Monge矩阵。 换句话说&#xff0c;每当我们从矩阵中挑…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]

报错信息&#xff1a;libc.so.6: cannot open shared object file: No such file or directory&#xff1a; #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...

【深度学习新浪潮】什么是credit assignment problem?

Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...

高抗扰度汽车光耦合器的特性

晶台光电推出的125℃光耦合器系列产品&#xff08;包括KL357NU、KL3H7U和KL817U&#xff09;&#xff0c;专为高温环境下的汽车应用设计&#xff0c;具备以下核心优势和技术特点&#xff1a; 一、技术特性分析 高温稳定性 采用先进的LED技术和优化的IC设计&#xff0c;确保在…...

「Java基本语法」变量的使用

变量定义 变量是程序中存储数据的容器&#xff0c;用于保存可变的数据值。在Java中&#xff0c;变量必须先声明后使用&#xff0c;声明时需指定变量的数据类型和变量名。 语法 数据类型 变量名 [ 初始值]; 示例&#xff1a;声明与初始化 public class VariableDemo {publi…...