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

Django操作cookie、Django操作session、Django中的Session配置、CBV添加装饰器、中间件、csrf跨站请求

一、Django操作cookie

cookie的原理cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地;当浏览器再次访问时,浏览器会自动带上Cookie,这样服务器就能通过Cookie的内容来判断这个是“谁”了。1.设置cookierep = HttpResponse(...)rep = render(request, ...)rep.set_cookie(key,value)rep.set_signed_cookie(key,value,salt='加密盐')设置cookie的参数:● key, 键● value=’’, 值● max_age=None, 超时时间 cookie需要延续的时间(以秒为单位)如果参数是\ None`` ,这个cookie会延续到浏览器关闭为止● expires=None, 超时时间(IE requires expires, so set it if hasn’t been already.)● path=/, Cookie生效的路径,/ 表示根路径,特殊的:根路径的cookie可以被任何url的页面访问,浏览器只会把cookie回传给带有该路径的页面,这样可以避免将cookie传给站点中的其他的应用。● domain=None, Cookie生效的域名 你可用这个参数来构造一个跨站cookie。如, domain=.example.com”所构造的cookie对下面这些站点都是可读的:www.example.com 、www2.example.com 和an.other.sub.domain.example.com 。如果该参数设置为 None ,cookie只能由设置它的站点读取● secure=False, 浏览器将通过HTTPS来回传cookie● httponly=False 只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)2.获取cookierequest.COOKIES['key']request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)获取cookie的参数:● default: 默认值● salt: 加密盐● max_age: 后台控制过期时间3.删除cookiedef logout(request):''' 清空cookie的使用场景:退出登录(注销功能) '''rep = redirect("/login/")rep.delete_cookie("user")  # 删除用户浏览器上之前设置的usercookie值return repbaidu.com------------->一级域名-------------->解析出来很多个二级域名
www.baidu.com  www1.baidu.com  www2.baidu.com  ly.baidu.com# 买一个服务器的,有了IP---------->127.0.0.1/index/-------->hello.com----->域名解析
127.0.0.1  hello.com----->DNS解析----->127.0.0.1
secure=False, 浏览器将通过HTTPS来回传cookie
httponly=False 只能http协议传输,无法被JavaScript获取获取cookie和设置cookie也可以通过js实现# 前端如何设置cookie# localstorage
# sessionStorage

1.前端如何设置cookie

在前端,你可以使用 JavaScript 来设置 cookie。
Cookie 是在客户端(浏览器)中存储的小段数据,可以用于存储用户的信息、偏好设置等。
以下是在前端设置 cookie 的基本步骤:1. **使用 `document.cookie`**:JavaScript 中可以通过 `document.cookie` 来设置、获取和删除 cookie。`document.cookie` 返回一个包含所有 cookie 的字符串,每个 cookie 以键值对形式表示,用分号和空格分隔。2. **设置 Cookie**:要设置一个 cookie,你可以通过将一个键值对添加到 `document.cookie` 字符串中。例如:document.cookie = "username=John Doe; expires=Thu, 18 Dec 2023 12:00:00 UTC; path=/";在这个例子中,设置了一个名为 `username` 的 cookie,它的值是 `John Doe`,并指定了过期时间和路径。3. **注意事项**- `expires` 属性定义了 cookie 的过期时间。过期时间之前,cookie 将一直保存在客户端。如果不设置 `expires`,则 cookie 将成为会话 cookie,在浏览器关闭时删除。- `path` 属性定义了 cookie 可用于哪个路径。默认情况下,cookie 只对设置它的路径及其子路径有效。- 由于浏览器的安全策略,不能在本地文件系统中设置 cookie。你需要在一个服务器环境中才能成功设置和读取 cookie。下面是一个简单的示例,演示如何在前端使用 JavaScript 设置 cookie:
// 设置一个名为 "username" 的 cookie,值为 "John Doe",有效期为一天,适用于整个站点
document.cookie = "username=John Doe; expires=" + new Date(new Date().getTime() + 24 * 60 * 60 * 1000).toUTCString() + "; path=/";注意:尽管在前端设置 cookie 可以方便地存储一些小量的用户信息,但敏感信息如密码等不应该直接存储在 cookie 中,而应该采用更加安全的方式,比如在后端使用加密存储。

2.localstorage和sessionStorage表示什么

`localStorage` 和 `sessionStorage` 都是浏览器提供的 Web 存储 API,用于在客户端(浏览器)中存储数据。它们提供了一种在浏览器中保存数据的方式,以便在不同页面之间或同一页面的不同会话中共享和访问数据。这两种存储方式的主要区别在于数据的生命周期和作用范围:
1. **localStorage**- `localStorage` 是一种持久性的本地存储,数据会一直保存在用户的浏览器中,直到用户主动清除或网站通过代码进行删除。- 数据在同一个浏览器上的不同会话之间是共享的,即使用户关闭浏览器或重新启动计算机数据仍然保留。- 可以存储较大量的数据。2. **sessionStorage**- `sessionStorage` 是一种会话级别的本地存储,数据仅在当前会话中有效。当用户关闭浏览器窗口或标签页时,数据会被清除。- 数据在同一个浏览器窗口或标签页的不同页面之间共享,但在新的窗口或标签页中无法访问之前的会话数据。- 存储容量与 `localStorage` 相似,但在某些浏览器中可能会略微有限制。使用示例:
// 设置数据到localStorage
localStorage.setItem('username', 'John');// 获取数据从localStorage
const username = localStorage.getItem('username');// 移除数据从localStorage
localStorage.removeItem('username');// 设置数据到sessionStorage
sessionStorage.setItem('token', 'abc123');// 获取数据从sessionStorage
const token = sessionStorage.getItem('token');// 移除数据从sessionStorage
sessionStorage.removeItem('token');需要注意的是,尽管这些存储方式在浏览器端非常方便,但由于数据是存储在用户的浏览器中,因此不适合存储敏感信息或需要安全性的数据。对于涉及用户隐私和安全的数据,应该使用后端存储或其他加密和保护机制。

二、Django操作session

session的数据是保存在后端,保存在后端的载体其实有很多种,比如:可以把数据保存在数据库、文件、Redis等Django的默认保存位置在数据库中,在django_session表中,这张表是默认生成的。******************************************************************注意:设置session
def set_Session(request):request.session['username'] = 'jerry'return HttpResponse('set_Session')'''session的默认过期时间是14天过期时间是可以更改的,如何更改...'''1、如何操作session?设置成功一个session值有什么变化?1. 后端会生成一个随机字符串:session_key2. 会把用户设置的信息保存在django_session表中,数据也做了加密处理3. 把数据封装到了request.session里去了4. Django后端把随机字符串保存到了浏览器中5. 随机字符串保存在浏览器中的key=sessionid注意:1.当设置多个session值的时候,session_key是不变的,变的是session_Data2.当设置多个session值的时候,django_Session表中只存在一条记录,即一台电脑的一个浏览器只能保存一条记录问:上述的做法有什么好处?节省MySQL的空间注意:获取session
def get_Session(request):print(request.session.get('username'))  # jerryprint(request.session.get('age'))  # 18return HttpResponse('get_Session')2.获取session发生了哪些事?1. 浏览器先把sessionid回传到Django的后端2. Django后端获取到sessionid,然后去数据表中根据session_key查询如果查到了,说明之前已经登录过了如果查不到,就返回None3. 查询出来的数据默认是加密的,Django后端又把数据解密之后封装到request.session中在取session值的时候,就从request.session中取4. session的相关参数# 所有 键、值、键值对request.session.keys()request.session.values()request.session.items()注意:设置session的过期时间request.session.set_expiry(value)'''* 如果value是个整数,session会在些秒数后失效。* 如果value是个datatime或timedelta,session就会在这个时间后失效。* 如果value是0,用户关闭浏览器session就会失效。* 如果value是None,session会依赖全局session失效策略'''def del_session(request):   '''清空cookie的两种方式:'''# 只删除服务端的数据,浏览器端还保存有request.session.delete()# 把服务器和浏览器端的数据都删除request.session.flush()return HttpResponse('del_session')注意:1.清空sessionrequest.session.clear()  # 清空会话中所有数据request.session.flush()  # 清空会话并删除会话IDrequest.session.delete()  # 只删除服务端的数据,浏览器端还保存有2.清空cookie// 设置过期时间为过去的时间,让浏览器自动删除 Cookiedocument.cookie = "cookieName=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";

三、Django中的Session配置

1. 数据库Session
SESSION_ENGINE = 'django.contrib.sessions.backends.db'   # 引擎(默认)2. 缓存Session
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'  # 引擎
SESSION_CACHE_ALIAS = 'default'                            # 使用的缓存别名(默认内存缓存,也可以是memcache),此处别名依赖缓存的设置3. 文件Session
SESSION_ENGINE = 'django.contrib.sessions.backends.file'    # 引擎
SESSION_FILE_PATH = None                                    # 缓存文件路径,如果为None,则使用tempfile模块获取一个临时地址tempfile.gettempdir() 4. 缓存+数据库
SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'        # 引擎5. 加密Cookie Session
SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'   # 引擎其他公用设置项:
SESSION_COOKIE_NAME = "sessionid"           # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认)
SESSION_COOKIE_PATH = "/"                   # Session的cookie保存的路径(默认)
SESSION_COOKIE_DOMAIN = None                 # Session的cookie保存的域名(默认)
SESSION_COOKIE_SECURE = False                # 是否Https传输cookie(默认)
SESSION_COOKIE_HTTPONLY = True               # 是否Session的cookie只支持http传输(默认)
SESSION_COOKIE_AGE = 1209600                 # Session的cookie失效日期(2周)(默认)
SESSION_EXPIRE_AT_BROWSER_CLOSE = False      # 是否关闭浏览器使得Session过期(默认)
SESSION_SAVE_EVERY_REQUEST = False           # 是否每次请求都保存Session,默认修改之后才保存(默认)

四、CBV添加装饰器


def login_auth(func):# def inner(*args, **kwargs):#     request = args[0]def inner(request, *args, **kwargs):# 获取cookie# if request.COOKIES.get('username'):# 获取sessionif request.session.get('username'):return func(request, *args, **kwargs)else:return redirect('/login/')return inner给类中的方法加装饰器的三种方法:注意:先导入
from django.utils.decorators import method_decorator方式1:直接在类中的方法上面加装饰器
class Login(View):# 必须登录之后才能访问get访问@method_decorator(login_auth)def get(self, request):return HttpResponse("get")@method_decorator(login_auth)def post(self, request):return HttpResponse("post")方式2:在类的上面给方法加上装饰器
@method_decorator(login_auth, name='get')
@method_decorator(login_auth, name='post')
class Login(View):# 必须登录之后才能访问get访问@method_decorator(login_auth)def get(self, request):return HttpResponse("get")@method_decorator(login_auth)def post(self, request):return HttpResponse("post")方式3:重写dispatch()方法,继承父类的dispatch()方法
class Login(View):@method_decorator(login_auth)def dispatch(self, request, *args, **kwargs):return super(Login, self).dispatch(request, *args, **kwargs)# 必须登录之后才能访问get访问def get(self, request):return HttpResponse("get")def post(self, request):return HttpResponse("post")

五、中间件


什么时候执行中间件?中间件的执行位置在web服务网关接口之后,在路由匹配之前执行的django中自带的有七个中间件:
MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',
]每一个中间件都有它自己独立的功能
注意:我们也可以自己自定义中间件只要是跟全局相关的都可以用中间件来实现------------------------------------------------------------------------------
那么如何自定义中间件呢?
class SecurityMiddleware(MiddlewareMixin):def process_request(self, request):passdef process_response(self, request, response)passclass SessionMiddleware(MiddlewareMixin):def process_request(self, request):passdef process_response(self, request, response):psssclass CsrfViewMiddleware(MiddlewareMixin):def process_request(self, request):passdef process_response(self, request, response):pass注意:    中间件就是一个类,然后这个类都继承了 MiddlewareMixinMiddlewareMixin这个类中有几个方法:1.下面这两个必须要求掌握:process_requestprocess_response2.下面三个需要了解:process_viewprocess_templateprocess_exception'''这几个方法并不是都要全写,而是,需要几个你就写几个!'''自定义中间件步骤:1. 在项目名下或者任意的应用名下创建一个文件夹2. 在这个文件夹下面创建一个py文件3. 在该py文件中写一个自定义的类必须要继承MiddlewareMixin4. 写完之后紧接着一定要去配置文件中注册中间件class MyMiddleware1(MiddlewareMixin):'''注意:自定义中间件,要去配置文件(setting.py)中注册'''def process_request(self, request):print('我是第一个中间件的process_request')def process_response(self, request, response):'''注意:这个响应函数必须要有返回值,并且返回值必须是response对象,否则会报错:AttributeError: 'NoneType' object has no attribute 'get':param request::param response::return:'''print('我是第一个中间件的process_response')return response # 返回值对象必须是response对象class MyMiddleware2(MiddlewareMixin):def process_request(self, request):print("我是第二个自定义的中间件process_request")def process_response(self, request, response):print("我是第二个自定义中间件的process_response")return response  # 每一个process_response都必须有返回值response中间件的执行顺序,输出结果:1.若process_request函数没有返回值,那么,首先是输出process_request函数中的数据,然后才输出视图函数views中的数据,最后才输出process_response函数中的数据,但是,process_response的执行顺序是倒着走的,即从后往前一个一个执行'''运行结果展示:我是第一个中间件的process_request我是第二个中间件的process_requestfunc我是第二个中间件的process_response我是第一个中间件的process_response'''2.若process_request函数有返回值,即:问题:如果我在第一个中间件的process_request中return返回值,后续的中间件如何走?它会执行同级别的process_response,也就是说:return拦截了视图views和后面的中间件(不再执行)'''运行结果展示:我是第一个中间件的process_request我是第一个中间件的process_response'''from django.utils.deprecation import MiddlewareMixinfrom django.shortcuts import render, redirect, HttpResponsedef process_request(self, request):print('我是第一个中间件的process_request')return HttpResponse('我是第一个中间件的process_request')# Django里的中间件几乎是所有框架中写的最好的

六、csrf跨站请求

1.csrf跨站请求介绍:CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种网络攻击,攻击者试图在受害者不知情的情况下,通过伪造请求来执行未经授权的操作。这种攻击利用了用户已登录的状态,以用户的名义发送恶意请求,从而绕过了常规的安全措施。2.CSRF 攻击的原理:攻击者通过各种方式诱使受害者执行一个看似正常但实际上是恶意的请求。这可以通过发送恶意链接、在受害者浏览的页面中插入恶意代码等方式实现。如果受害者当前已登录到一个网站,而该网站没有适当的防护措施,攻击者就可以以受害者的身份发送请求,执行潜在的危险操作,比如更改密码、发表评论、转移资金等。# 钓鱼网站# 本质:form表单
username
shenfenzheng
<input type='text' name='正规的'># 冒牌的
<input type='text' ><input type='hidden' name='冒牌的'>3.如何避免这种问题?在form表单中加了一个随机标识,每次提交表单的时候,后端先发起csrf验证(随机标识),说明这个表单就是自己的,若对不上,则直接forbidden。如何解决	Forbidden (403) CSRF verification failed. Request aborted 问题?
'django.middleware.csrf.CsrfViewMiddleware',只有post请求才会有csrf验证 
在form表单中加入{% csrf_token %}
<form action="" method="post">{% csrf_token %}username: <input type="text" name="username"><input type="submit" value="提交">
</form>
4.研究ajax发送post请求csrf验证方式1:如果form表单有值
<form action="" method="post">{% csrf_token %}username: <input type="text" name="username"><input type="submit" value="提交">
</form><button class="btn">按钮</button><script>$('.btn').click(function () {$.ajax({url: '',type: 'post',data:{csrfmiddlewaretoken: $("[name='csrfmiddlewaretoken']").val()},success: function (){}})})
</script>方式2:通过模版变量{{ csrf_token }}
<button class="btn">按钮</button><script>$('.btn').click(function () {$.ajax({url: '',type: 'post',{#data:{csrfmiddlewaretoken: $("[name='csrfmiddlewaretoken']").val()},data:{csrfmiddlewaretoken: '{{ csrf_token }}'},success: function (){}})})
</script>方式3:前后端分离,使用django官方提供的js文件解决更多细节详见:Djagno官方文档中关于CSRF的内容https://docs.djangoproject.com/en/1.11/ref/csrf/<button class="btn">按钮</button>
<script src="/static/js/my.js"></script>
<script>$('.btn').click(function () {$.ajax({url: '',type: 'post',{#data:{csrfmiddlewaretoken: $("[name='csrfmiddlewaretoken']").val()},#}{#data:{csrfmiddlewaretoken: '{{ csrf_token }}'},#}data: {a: 1},success: function (){}})})
</script>

使用django官方提供的js文件

function getCookie(name) {var cookieValue = null;if (document.cookie && document.cookie !== '') {var cookies = document.cookie.split(';');for (var i = 0; i < cookies.length; i++) {var cookie = jQuery.trim(cookies[i]);// Does this cookie string begin with the name we want?if (cookie.substring(0, name.length + 1) === (name + '=')) {cookieValue = decodeURIComponent(cookie.substring(name.length + 1));break;}}}return cookieValue;
}
var csrftoken = getCookie('csrftoken');// 每一次都这么写太麻烦了,可以使用$.ajaxSetup()方法为ajax请求统一设置。function csrfSafeMethod(method) {// these HTTP methods do not require CSRF protectionreturn (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}$.ajaxSetup({beforeSend: function (xhr, settings) {if (!csrfSafeMethod(settings.type) && !this.crossDomain) {xhr.setRequestHeader("X-CSRFToken", csrftoken);}}
});

相关文章:

Django操作cookie、Django操作session、Django中的Session配置、CBV添加装饰器、中间件、csrf跨站请求

一、Django操作cookie cookie的原理cookie的工作原理是&#xff1a;由服务器产生内容&#xff0c;浏览器收到请求后保存在本地&#xff1b;当浏览器再次访问时&#xff0c;浏览器会自动带上Cookie&#xff0c;这样服务器就能通过Cookie的内容来判断这个是“谁”了。1.设置cook…...

内网穿透——使用Windows自带的网站程序建立网站

文章目录 1.前言2.Windows网页设置2.1 Windows IIS功能设置2.2 IIS网页访问测试 3. Cpolar内网穿透3.1 下载安装Cpolar3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5.结语 1.前言 在网上各种教程和介绍中&#xff0c;搭建网页都会借助各种软件的帮助&#xff0c;比如…...

JavaScript请求数据的4种方法总结(Ajax、fetch、jQuery、axios)

JavaScript请求数据有4种主流方式&#xff0c;分别是Ajax、fetch、jQuery和axios。 一、Ajax、fetch、jQuery和axios的详细解释&#xff1a; 1、 Ajax Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;是一种使用JavaScript在用户的浏览器上发送请求的技术&…...

js中的break和continue中的区别

js中break和continue有着一些差别。 首先&#xff0c;虽然break和continue都有跳出循环的作用&#xff0c;但break是完全跳出循环&#xff0c;而continue则是跳出一次循环&#xff0c;然后开启下一次的循环。 下面我就来举几个例子吧。 var num 0;for(var i 1;i < 10;i){i…...

Cat(2):下载与安装

1 github源码下载 要安装CAT&#xff0c;首先需要从github上下载最新版本的源码。 官方给出的建议如下&#xff1a; 注意cat的3.0代码分支更新都发布在master上&#xff0c;包括最新文档也都是这个分支注意文档请用最新master里面的代码文档作为标准&#xff0c;一些开源网站…...

程序崩溃生成dump文件定位到崩溃处

#include <DbgHelp.h> #pragma comment(lib,"Dbghelp.lib")long __stdcall CrashInfocallback(_EXCEPTION_POINTERS* pexcp) {// 创建dmp文件HANDLE hDumpFile ::CreateFile(L"Memory.DMP",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORM…...

安卓获取当前的IP地址

文章目录 获取IP地址完整示例代码 获取IP地址 在安卓中&#xff0c;我们使用静态方法NetworkInterface.getNetworkInterfaces() 来获取当前设备上所有的网络接口。 网络接口是指设备上用于进行网络通信的硬件或软件。这些接口可以是物理接口&#xff08;如以太网接口、无线网…...

Pyqt5-自动化电池监测工具

开源第二篇&#xff0c;书接上回&#xff0c;上回的工具用起来着实不方便&#xff0c;功能也少&#xff0c;不能满足大部分需求&#xff0c;体现在&#xff1a;钉钉发送数据&#xff0c;数据处理&#xff0c;以及接收数据&#xff0c;定时任务等这部分。 随后对其进行了优化 数…...

Struts2一次请求参数问题的记录

最近&#xff0c;一次前端正常请求&#xff0c;但后台出现请求参数值的变化&#xff0c;导致报错&#xff0c;问题如下&#xff1a; 从入参request中查看请求参数&#xff0c;是一个Json字符串&#xff0c;其中有个description的键值对&#xff1b; 但是&#xff0c;接下来调用…...

ctfshow-web9

0x00 前言 CTF 加解密合集CTF Web合集 0x01 题目 0x02 Write Up 拿到一个站的时候一定要看robots.txt文件 访问一下 看到一个phps&#xff0c;然后下载一下 看到md5&#xff0c;参考这个https://blog.csdn.net/HAI_WD/article/details/132345156?spm1001.2014.3001.5501 …...

网络安全(黑客)自学路线/笔记

想自学网络安全&#xff08;黑客技术&#xff09;首先你得了解什么是网络安全&#xff01;什么是黑客&#xff01; 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全…...

Vim基本使用

Vim基本使用 概念模式类型常规模式编辑模式命令模式 概念 vim 是一款功能丰富、高度可定制和高效的文本编辑器&#xff0c;适用于处理各种文本文件和编程任务。熟练使用vim帮助提高编辑效率&#xff0c;并为用户提供更多的操作选项。 模式类型 常规模式 使用vim打开一个文件…...

二 根据用户行为数据创建ALS模型并召回商品

二 根据用户行为数据创建ALS模型并召回商品 2.0 用户行为数据拆分 方便练习可以对数据做拆分处理 pandas的数据分批读取 chunk 厚厚的一块 相当大的数量或部分 import pandas as pd reader pd.read_csv(behavior_log.csv,chunksize100,iteratorTrue) count 0; for chunk in …...

SpringBoot ⽇志⽂件

日志 1. 作用2. 日志的使用3. 日志的级别4. 日志的持久化 1. 作用 日志最主要的⽤途就是排除和定位问题。 除了发现和定位问题之外&#xff0c;我们还可以通过⽇志实现以下功能&#xff1a; 记录⽤户登录⽇志&#xff0c;⽅便分析⽤户是正常登录还是恶意破解⽤户。记录系统的…...

SpringBoot案例-部门管理-查询

查看页面原型&#xff0c;明确需求需求 页面原型 需求分析 阅读接口文档 接口文档链接如下&#xff1a; https://docs.qq.com/doc/DUkRiTWVaUmFVck9N 思路分析 用户发送请求&#xff0c;交由对应的Controller类进行处理&#xff0c;Controller类调用service实现查询部门功…...

Java中处理表格

大家好 , 我是苏麟 , 也是很久没有更新了 , 今天带来一个很好使用的一个库 easyexcel. JAVA后端开发中可能会遇到一个问题 , 就是处理Execel表格 , 当然不一定非要用Java 我们在这里只说在Java里怎么去处理表格 . Easy Excel 我们今天要说到就是 Easy Excel , 这个是阿里的项…...

指静脉开集测试(OpenSet-test)代码(包含7个数据集)

七个数据集:sdu、mmc、hkpu、scut、utfvp、vera、nupt 一、SDU 80%用于训练,20%用于作为开集测试 1.数据集分割代码 ①先把636个类别提取出来 func: 创建temp_sdu,将636个类划分出来。下一个代码块将进行openset_sdu的分割import os from shutil import copy, rmtre…...

okcc对接ASR平台,okcc客户投诉的安全问题

客户投诉: 客户为什么要投诉&#xff1f;实际上分为两种情况&#xff0c;一是客户被冒犯到不能容忍导致的投诉&#xff0c;二是恶意投诉。降低客户被冒犯投诉的概率&#xff0c;无非就是选择客户、规范用语、降低频度&#xff1b;减少恶意投诉&#xff0c;回避是实践证明最有效…...

JVM中判定对象是否回收的的方法

引用计数法 引用计数法是一种垃圾回收&#xff08;Garbage Collection&#xff09;算法&#xff0c;用于自动管理内存中的对象。在引用计数法中&#xff0c;每个对象都有一个关联的引用计数器&#xff0c;用于记录对该对象的引用数量。 当一个新的引用指向对象时&#xff0c;…...

macos 使用vscode 开发python 爬虫(开发二)

以下是一个示例&#xff0c;用于爬取一个公开的示例网站&#xff08;http://books.toscrape.com&#xff09;&#xff0c;并提取书籍的标题和价格&#xff1a; import requests from bs4 import BeautifulSoup# 发起请求并获取网页内容 url 可以用上面的链接&#x1f517; re…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来&#xff0c;一直在光谱成像领域深度钻研和发展&#xff0c;始终致力于研发高性能、高可靠性的光谱成像相机&#xff0c;为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...

ui框架-文件列表展示

ui框架-文件列表展示 介绍 UI框架的文件列表展示组件&#xff0c;可以展示文件夹&#xff0c;支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项&#xff0c;适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决

问题&#xff1a; pgsql数据库通过备份数据库文件进行还原时&#xff0c;如果表中有自增序列&#xff0c;还原后可能会出现重复的序列&#xff0c;此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”&#xff0c;…...

2025-05-08-deepseek本地化部署

title: 2025-05-08-deepseek 本地化部署 tags: 深度学习 程序开发 2025-05-08-deepseek 本地化部署 参考博客 本地部署 DeepSeek&#xff1a;小白也能轻松搞定&#xff01; 如何给本地部署的 DeepSeek 投喂数据&#xff0c;让他更懂你 [实验目的]&#xff1a;理解系统架构与原…...

稻米分类和病害检测数据集(猫脸码客第237期)

稻米分类图像数据集&#xff1a;驱动农业智能化发展的核心资源 引言 在全球农业体系中&#xff0c;稻米作为最关键的粮食作物之一&#xff0c;其品种多样性为人类饮食提供了丰富选择。然而&#xff0c;传统稻米分类方法高度依赖人工经验&#xff0c;存在效率低、主观性强等缺…...