2017.4.12 开涛shiro教程-第十八章-并发登录人数控制
原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398
根据下载的pdf学习。
开涛shiro教程-第十八章-并发登录人数控制
shiro中没有提供默认实现,不过可以很容易实现。通过shiro filter机制拓展KickoutSessionControllerFilter。
kickoutSessionControllerFilter -> 将这个filter配置到shiro的配置文件中 -> 遇到的一些问题。
示例代码的结构:
1.配置spring-config-shiro.xml
(1)kickoutSessionControllerFilter
kickoutAfter:是否提出后来登录的,默认为false,即后来登录的踢出前者。
maxSession:同一个用户的最大会话数,默认1,表示同一个用户最多同时一个人登录。
kickoutUrl:被踢出后重定向的地址。
1 <bean id="kickoutSessionControlFilter" 2 class="com.github.zhangkaitao.shiro.chapter18.web.shiro.filter.KickoutSessionControlFilter"> 3 <property name="cacheManager" ref="cacheManager"/> 4 <property name="sessionManager" ref="sessionManager"/> 5 <property name="kickoutAfter" value="false"/> 6 <property name="maxSession" value="2"/> 7 <property name="kickoutUrl" value="/login?kickout=1"/> 8 </bean>
(2)shiroFilter
此处配置除了登录等之外的地址都走 kickout 拦截器进行并发登录控制。
1 <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> 2 <property name="securityManager" ref="securityManager"/> 3 <property name="loginUrl" value="/login"/> 4 <property name="filters"> 5 <util:map> 6 <entry key="authc" value-ref="formAuthenticationFilter"/> 7 <entry key="sysUser" value-ref="sysUserFilter"/> 8 <entry key="kickout" value-ref="kickoutSessionControlFilter"/> 9 </util:map> 10 </property> 11 <property name="filterChainDefinitions"> 12 <value> 13 /login = authc 14 /logout = logout 15 /authenticated = authc 16 /** = kickout,user,sysUser 17 </value> 18 </property> 19 </bean>
(3) ehcache.xml
这里的名称在后面的kickoutController里要用到。
1 <cache name="shiro-kickout-session" 2 maxEntriesLocalHeap="2000" 3 eternal="false" 4 timeToIdleSeconds="3600" 5 timeToLiveSeconds="0" 6 overflowToDisk="false" 7 statistics="true"> 8 </cache>
2.KickoutSessionControllerFilter
此处,使用了Cache缓存"用户名-会话id"之间的关系,如果量比较大的话,可以考虑持久化到数据库/其他持久化的Cache中。
另外,此处没有并发控制的同步实现,可以考虑根据用户名来获取锁,减少锁的粒度。
1 package com.github.zhangkaitao.shiro.chapter18.web.shiro.filter; 2 3 import org.apache.shiro.cache.Cache; 4 import org.apache.shiro.cache.CacheManager; 5 import org.apache.shiro.session.Session; 6 import org.apache.shiro.session.mgt.DefaultSessionKey; 7 import org.apache.shiro.session.mgt.SessionManager; 8 import org.apache.shiro.subject.Subject; 9 import org.apache.shiro.web.filter.AccessControlFilter; 10 import org.apache.shiro.web.util.WebUtils; 11 12 import javax.servlet.ServletRequest; 13 import javax.servlet.ServletResponse; 14 import java.io.Serializable; 15 import java.util.Deque; 16 import java.util.LinkedList; 17 18 /** 19 * <p>User: Zhang Kaitao 20 * <p>Date: 14-2-18 21 * <p>Version: 1.0 22 */ 23 public class KickoutSessionControlFilter extends AccessControlFilter { 24 25 private String kickoutUrl; //踢出后到的地址 26 private boolean kickoutAfter = false; //踢出之前登录的/之后登录的用户 默认踢出之前登录的用户 27 private int maxSession = 1; //同一个帐号最大会话数 默认1 28 29 private SessionManager sessionManager; 30 private Cache<String, Deque<Serializable>> cache; 31 32 public void setKickoutUrl(String kickoutUrl) { 33 this.kickoutUrl = kickoutUrl; 34 } 35 36 public void setKickoutAfter(boolean kickoutAfter) { 37 this.kickoutAfter = kickoutAfter; 38 } 39 40 public void setMaxSession(int maxSession) { 41 this.maxSession = maxSession; 42 } 43 44 public void setSessionManager(SessionManager sessionManager) { 45 this.sessionManager = sessionManager; 46 } 47 48 public void setCacheManager(CacheManager cacheManager) { 49 this.cache = cacheManager.getCache("shiro-kickout-session"); 50 } 51 52 @Override 53 protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) throws Exception { 54 return false; 55 } 56 57 @Override 58 protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception { 59 Subject subject = getSubject(request, response); 60 if(!subject.isAuthenticated() && !subject.isRemembered()) { 61 //如果没有登录,直接进行之后的流程 62 return true; 63 } 64 65 Session session = subject.getSession(); 66 String username = (String) subject.getPrincipal(); 67 Serializable sessionId = session.getId(); 68 69 //TODO 同步控制 70 Deque<Serializable> deque = cache.get(username); 71 if(deque == null) { 72 deque = new LinkedList<Serializable>(); 73 cache.put(username, deque); 74 } 75 76 //如果队列里没有此sessionId,且用户没有被踢出;放入队列 77 if(!deque.contains(sessionId) && session.getAttribute("kickout") == null) { 78 deque.push(sessionId); 79 } 80 81 //如果队列里的sessionId数超出最大会话数,开始踢人 82 while(deque.size() > maxSession) { 83 Serializable kickoutSessionId = null; 84 if(kickoutAfter) { //如果踢出后者 85 kickoutSessionId = deque.removeFirst(); 86 } else { //否则踢出前者 87 kickoutSessionId = deque.removeLast(); 88 } 89 try { 90 Session kickoutSession = sessionManager.getSession(new DefaultSessionKey(kickoutSessionId)); 91 if(kickoutSession != null) { 92 //设置会话的kickout属性表示踢出了 93 kickoutSession.setAttribute("kickout", true); 94 } 95 } catch (Exception e) {//ignore exception 96 } 97 } 98 99 //如果被踢出了,直接退出,重定向到踢出后的地址 100 if (session.getAttribute("kickout") != null) { 101 //会话被踢出了 102 try { 103 subject.logout(); 104 } catch (Exception e) { //ignore 105 } 106 saveRequest(request); 107 WebUtils.issueRedirect(request, response, kickoutUrl); 108 return false; 109 } 110 111 return true; 112 } 113 }
3.测试
因为此处设置maxSession=2,所以需要打开3个浏览器。分别访问:http:l//ocalhost:8080/chapter18 进行登录。
然后刷新第一次打开的浏览器,将会被强制退出。
4.遇到的问题
(1)there is no session Id ***
报错:there is no session Id ***。
原因:我没有在ehcache.xml里配置"shiro-kickout-session"。
因为kickoutController里用到了:
1 public void setCacheManager(CacheManager cacheManager) { 2 this.cache = cacheManager.getCache("shiro-kickout-session"); 3 }
所以在ehcache.xml中一定记得加上(名字匹配即可):
1 <cache name="shiro-kickout-session" 2 eternal="false" 3 timeToIdleSeconds="3600" 4 timeToLiveSeconds="0" 5 overflowToDisk="false" 6 statistics="true"> 7 </cache>
(2)sessionKey must be an HTTP compatible implementation
报错:sessionKey must be an HTTP compatible implementation。
原因:我的sessionManager和示例代码中的sessionManager不同,示例中用的是DefaultWebSessionManager,我用的是ServletContainerSessionManager。
代码中这一句报的错误:
1 Session kickoutSession = sessionManager.getSession(new DefaultSessionKey(kickoutSessionId));
sessionManager.getSession时,因为sessionManager的类类型是ServletContainerSessionManager,所以会进行一个http判定。
参考来自:http://blog.csdn.net/qq_26946497/article/details/51064654?locationNum=3
1 public Session getSession(SessionKey key) throws SessionException { 3 if (!WebUtils.isHttp(key)) { //判断是不是http的key,否则抛异常 4 String msg = "SessionKey must be an HTTP compatible implementation."; 5 throw new IllegalArgumentException(msg); 6 } 7 ...
14 }
最后的解决办法:不存放sessionId在deque中,直接存放Session。又可以跳过通过sessionId获取session这一步,直接从deque中拿到之前保存的session。
1 //修改前 2 Deque<Serializable> deque = cache.get(username); 3 deque.push(sessionId); 4 kickoutSessionId = deque.removeLast(); 5 Session kickoutSession = sessionManager.getSession(new DefaultSessionKey(kickoutSessionId)); 6 7 //修改后 8 Deque<Session> deque = cache.get(username); 9 deque.push(session); 10 kickoutSession = deque.removeLast();
(3)没有增加锁
1 synchronized (this.cache) { 2 Deque<Session> deque = cache.get(usernameTenant); 3 ... 4 } 5 //如果被踢出了,直接退出,重定向到踢出后的地址 6 if (session.getAttribute(KICK_OUT) != null && session.getAttribute(KICK_OUT) == true) { 7 ...
(4)动态设定是否需要kickout
在配置文件中,设置参数 kickout = false。然后在kickoutController里拿到这个参数的值。
1 protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception { 2 if("false".equals(kickout)){ 3 //如果不需要单用户登录的限制 4 return true; 5 } 6 ... 7 }
5.CacheManager和SessionManager详解
(1)CacheManager
示例中的配置文件:
-> ehcache.xml
-> ehcacheManager(EhCacheManagerFactoryBean)
-> springCacheManager(EhCacheCacheManager)
-> cacheManager(SpringCacheManagerWrapper)
-> 其他bean里使用
我的配置文件:
-> ehcache.xml
-> ehcacheManager(EhCacheManagerFactoryBean)
-> cacheManager(EhCacheCacheManager)
-> springCacheManager(SpringCacheManagerWrapper)
-> 其他bean里使用
所以名字都是浮云,重点是从cacheManager的构成:
-> ehcache.xml
-> EhCacheManagerFactoryBean
-> EhCacheCacheManager
-> SpringCacheManagerWrapper
-> 其他bean使用
详细配置如下:
1 spring-config-shiro.xml
2 <bean id="cacheManager" class="com.github.zhangkaitao.shiro.spring.SpringCacheManagerWrapper">
3 <property name="cacheManager" ref="springCacheManager"/>
4 </bean>
5
6 <bean id="credentialsMatcher" class="com.github.zhangkaitao.shiro.chapter18.credentials.RetryLimitHashedCredentialsMatcher">
7 <constructor-arg ref="cacheManager"/>
8 ...
9 </bean>
10
11 <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
12 <property name="sessionManager" ref="sessionManager"/>
13 <property name="cacheManager" ref="cacheManager"/>
14 ...
15 </bean>
16
17 <bean id="kickoutSessionControlFilter" class="com.github.zhangkaitao.shiro.chapter18.web.shiro.filter.KickoutSessionControlFilter">
18 <property name="cacheManager" ref="cacheManager"/>
19 <property name="sessionManager" ref="sessionManager"/>
20 ...
21 </bean>
22
23 spring-config-cache.xml
24 <bean id="springCacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
25 <property name="cacheManager" ref="ehcacheManager"/>
26 </bean>
27
28 <bean id="ehcacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
29 <property name="configLocation" value="classpath:ehcache/ehcache.xml"/>
30 </bean>
(2)SessionManager
SessionManager是一个接口。
1 public interface SessionManager { 2 Session start(SessionContext sessionContext); 3 Session getSession(SessionKey sessionKey) throws SessionException; 5 }
类结构图如下:
Shiro提供了三个默认实现:
DefaultSessionManager:DefaultSecurityManager使用的默认实现,用于JavaSE环境;
ServletContainerSessionManager:DefaultWebSecurityManager使用的默认实现,用于Web环境,其直接使用Servlet容器的会话;
DefaultWebSessionManager:用于Web环境的实现,可以替代ServletContainerSessionManager,自己维护着会话,直接废弃了Servlet容器的会话管理。
示例中:配置文件spring-config-shiro.xml中使用的是DefaultWebSessionManager。
1<!-- 会话管理器 -->3 <bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">4 ...5 </bean>6 7 <!-- 安全管理器 -->8 <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">9 <property name="sessionManager" ref="sessionManager"/> 10 <property name="cacheManager" ref="cacheManager"/> 11 ... 12 </bean> 13
13 <!-- 并发登录控制 --> 14 <bean id="kickoutSessionControlFilter" class="com.github.zhangkaitao.shiro.chapter18.web.shiro.filter.KickoutSessionControlFilter"> 15 <property name="cacheManager" ref="cacheManager"/> 16 <property name="sessionManager" ref="sessionManager"/> 17 ... 18 </bean>
我的项目中:配置文件applicationContext-shiro.xml中没有进行sessionManager的配置(为了共享session),所以使用的是shiro的默认实现:ServletContainerSessionManager。(或者运行代码时,可以去看sessionManager的类类型)
1 <!--文件中没有sessionManager的配置--> 2 3 <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> 4 <property name="cacheManager" ref="springCacheManager"/> 5 <!--这里没有配置sessionManager--> 6 ... 7 </bean> 8 9 <bean id="kickoutSessionControlFilter" class="com.baosight.common.filter.KickoutSessionControlFilter"> 10 <property name="cacheManager" ref="springCacheManager"/> 11 <!--这里没有配置sessionManager--> 12 ... 13 </bean>
而这两种实现(DefaultWebSessionManager 和 ServletContainerSessionManager)的区别以及源码分析:
http://blog.csdn.net/qq_26946497/article/details/51064654?locationNum=3
注意:没有配置SessionManager时,默认为ServletContainerSessionManager。
转载于:https://www.cnblogs.com/lyh421/p/6698871.html
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- vb.net 有符号16进制转10进制
Private Sub Command1_Click()整型是两字节16位的,长整是四字节32位的与十六进制转换要与底层二进制换算,瞎用强制转换,当然不会有正确的结果。以下程序如看不懂,请继续修炼基础知识。Debug.Print Hex(-600)Debug.Print CInt("&H" & Hex(-600))Debug.Pri…...
2024/5/6 10:49:26 - [网络安全自学篇] 四十三.木马原理详解、远程服务器IPC$漏洞及木马植入实验
这是作者的网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步。前文分享了DNS欺骗(DNS投毒)及钓鱼网站原理知识,并通过Ettercap工具复现某购物网站的钓鱼漏洞。本文将详细讲解木马原理知识,并通过远程服务器…...
2024/4/20 4:28:26 - win7纯净版64位系统下载
win7纯净版64位系统大家想必都不陌生了,因为这款系统拥有着稳定、兼容性高的性质,导致它已经成为了大家重装系统的首选之作。那么这款系统到底要去哪里下载呢?下面博主就给大家分享一下win7纯净版64位系统下载吧。●windows7系统之家作品简述:《系统之家ghost win7 x64 旗舰…...
2024/5/6 8:30:21 - 图像处理之其他杂项(三)之cvSnakeImage改进升级兼容 适用于opencv2,,在opencv3.0以上版本中测试通过
cvSnakeImage改进升级兼容cvSnakeImage函数在opencv2中已经被去掉,现在函数仅有C接口版本,把函数源代码作为独立函数整合进程序中,并对其中包含的opencv2中不存在的函数宏定义进行更改替换,适合opencv2环境使用,测试环境VS2015+opencv3.2。原源代码:蚂蚁搬家 http://blo…...
2024/4/14 22:02:34 - 设置操作系统时间与互联网服务器同步
在安装操作系统后,系统的时间往往是不准确的,这是因为在系统启动时,会以系统的硬件时间作为基础时间,而系统的硬件时间往往与当前时间不一致,所以装完系统后,一个首要任务是修改系统时间。但如果自己手动修改系统时间,秒数很难精确,只能准确到分钟,所以不建议直接手动…...
2024/4/14 22:36:47 - Spring之shiro使用教程
Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。谈及shiro必然少不了一张图和三个关键词语:Subject, SecurityManager 和 Realms。简单来说可以总结为:Subject:用户提交的请求 SecurityManager:shiro核心代码 Realms:shrio沟通数据库和缓存的…...
2024/4/14 22:36:46 - 网络游戏服务器架构
网络游戏一般采用C/S结构,客户端负责绘制游戏世界的实时画面,服务器端则负责响应所有客户端的连接请求和游戏逻辑处理,并控制所有客户端的画面绘制,客户端与服务器通过网络数据包交互完成每一步游戏逻辑。 网关服务器方式,主要职责是将客户端通信和游戏服务器隔离。 网关服…...
2024/4/25 20:52:06 - java实现蛇形算法
package aglo;public class test {/*** 描述一:* 5行5列蛇形算法* (0,0)(4,4)-第1行和倒数1行相差4* (1,0)(4,3)(0,1)(3,4)-第2行和倒数2行相差3* (0,2)(2,4)(1,1)(3,3)(2,0)(4,2)-第3行和倒数3行相差2* (3,0)(4,1)(2,1)(3,2)(1,2)(2,3)(0,3)(1,4)-第4行和倒数4行相差1* 第5行为…...
2024/5/4 14:31:31 - Shiro使用教程
一、什么是Shiro Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能: 认证 - 用户身份识别,常被称为用户“登录”;授权 - 访问控制;密码加密 - 保护或隐藏数据防止被偷窥;会话管理 - 每用户相关的时间敏感的状态。 对于任何一个…...
2024/4/18 23:59:41 - 进制转换:二进制、八进制、十六进制、十进制之间的转换
进制转换:二进制、八进制、十六进制、十进制之间的转换不同进制之间的转换在编程中经常会用到,尤其是C语言。将二进制、八进制、十六进制转换为十进制二进制、八进制和十六进制向十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。假设当前数字是N进制,那…...
2024/4/14 22:36:42 - WIN7封装超详细图文教程+封装工具包+素材包
一、 准备工作1、虚拟机2、DiskGenius3、母盘(ZS规则Windows 7 SP1旗舰版V5)4、封装工具ES3_Final5、IT天空万能驱动包6、WinPE iso文件7、常用软件安装器8、常用运行支持库9、优化工具10、图片包(封装背景、桌面背景、OEM信息)11、WIN7补丁包(可选)上面软件除(可选)之…...
2024/4/24 15:07:25 - 黑客技术提高
一.远程口令猜解流行与常用的工具包括Legion,enum,SMBGrind,NTScan.国内比较流行XScan远程桌面 3389 端口常用猜解TSGrinder,Brutik,Fast RDP Brute,DUBruteMS SQL 1433端口 1434 端口 使用sqlbf,Auto-SQLCain and Abel 是目前功能最为全面的口令破解工具,支持FTP,HTTP,POP,SMT…...
2024/4/20 12:12:43 - ***内网windows xp的几种思路和方法
如何***内网windows xp的几种思路和方法简单的方法无非就是弱口令了 方法1.弱口令 用到的工具 ntscan ,recton,*** 可惜扫了一下一个弱口令都没有!再用superscan 扫了一下port ,发现7台电脑在线,只有三台没开防火墙,而且只开了137 netbios ,123 ntp等端口 只好放弃此方法 方…...
2024/4/20 11:58:11 - 常用的时间同步服务器地址
转载出处http://www.minunix.com/2013/03/ntpserver/ 感谢原作者,一切的权利都属于原作者,如果有所不适,我会立即删除 中国大概能用的NTP时间服务器地址 server 133.100.11.8 preferserver 210.72.145.44server 203.117.180.36server 131.107.1.10server time.asia.apple.co…...
2024/4/14 22:36:38 - javascript 进制转换(2进制、8进制、10进制、16进制之间的转换)
//十进制转其他 var x=110; alert(x); alert(x.toString(8)); alert(x.toString(32)); alert(x.toString(16)); //其他转十进制 var x=110; alert(parseInt(x,2)); alert(parseInt(x,8)); alert(parseInt(x,16)); //其他转其他 //先用parseInt转成十进制再用toString转到目标进…...
2024/4/26 23:07:52 - shiro入门教程——SSM整合shiro编写一个案例
想写一篇博客介绍shiro,但是shiro这个知识体系太庞大了,一片博客很难准确的阐述。因此大家直接去下载源码,阅读代码获取的体会更加深厚:https://download.csdn.net/download/yuwen_forjava/10606449本案例参考:http://jinnianshilongnian.iteye.com/blog/2049092。感谢张大…...
2024/4/14 22:36:36 - python轮廓检测算法
转:https://www.jb51.net/article/122475.htmhttps://blog.csdn.net/qq_25964837/article/details/79078491#coding=utf-8 import cv2 import numpy as npimg = cv2.imread("temp.jpg") #载入图像 h, w = img.shape[:2] #获取图像的高和宽 cv2.imshow(&q…...
2024/4/14 22:36:36 - 小米笔记本U盘win10换win7系统操作教程
小米笔记本预装的是win10系统,用户想要将win10换成win7,却不懂的操作方法,让人觉得相当无奈,所以今天快启动小编带大家了解小米笔记本U盘win10换win7系统操作教程,献给迷茫的小伙伴们哦。u盘改装win7之后需要了解的准备工作:1、首先需要下载个U盘启动盘制作工具,将U盘直…...
2024/4/14 22:36:35 - 汇编语言16进制转10进制
使用8086汇编,输入一个16进制的数,程序把该16进制数转换为相应的10进制数输出程序运行截图:要实现这样一个程序,思路可以是这样的:1.由于我们读入的键盘输入是ASCII码表示的,且输入一个字符便得到一个ASCII码,如输入ab,程序中可以得到61h和62h。现在的问题是怎么把这些输…...
2024/4/14 22:36:34 - Shiro系列教程之一Shiro简介
Apache Shiro是Java的一个安全框架,Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro可以完成:认证、授权、加密、会话管理、与Web集成、缓存等; 核心模块如下:Authentication身份认证/登录,验证用户是不是拥有相应的身份;…...
2024/4/14 22:36:33
最新文章
- JS基础:输出信息的5种方式详解
你好,我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生,一枚程序媛,感谢关注。回复 “前端基础题”,可免费获得前端基础 100 题汇总,回复 “前端基础路线”,可获取完整web基础…...
2024/5/6 15:31:41 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/6 9:38:23 - 09 spring-boot-acurator 定时检测 redis 集群导致 “IOException: Too many open files“
前言 问题的现象主要是如下 项目刚启动的时候 十分正常, 然后 随着时间的推移, 比如说 项目跑了 四五天之后 项目 突然出现问题, 一部分服务能够正常访问, 一部分服务抛出异常 异常信息 就是 too many files 这里的主要的问题是 在异常之前, redis 集群没有密码, 然后 …...
2024/4/30 8:18:44 - MySQL 底层数据结构 聚簇索引以及二级索引 Explain的使用
数据结构 我们知道MySQL的存储引擎Innodb默认底层是使用B树的变种来存储数据的 下面我们来复习一下B树存储 B树存储 哈希存储的区别 哈希存储,只能使用等值查询 B树与B树存储 我们知道B树实际上就是B树的变种 那么为啥使用B树而不是使用B树呢? 我们知道效率的高低主要取决于…...
2024/5/4 8:59:40 - java自动化学习-03-02java基础语法01
1、java基础语法 在JAVA中源文件名称必须和主类名称相同 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为 文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文…...
2024/5/5 15:07:14 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/4 23:54:56 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/4 23:54:56 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/6 9:21:00 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/4 23:55:16 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/4 23:55:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/4 23:55:06 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/4 23:55:06 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/4 23:55:16 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/4 23:55:01 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57