惠普笔记本换了主板开机运行2-3小时卡住不动?C/SAPP架构中通过shiro重写session

时间:2018-01-15 14:32:02   浏览:次   点击:次   作者:   来源:   立即下载

在开机正常运行的②-③小时里,用everest测的CPU和显卡的温度都是在④⑤度左右,温度感觉确实比以前好多了我的主板刚刚换不久(找人修的!!,但是正常运行②-③小时后会突然间给卡住,①动不动,强行关机再开是黑屏,没有报警声,再强关多试几次开机又能打开,正常运行②-③小时后又卡住,就这样反复,也许下次就永远打不开了,恳求高手给指点!,不是售后修的,因为刚刚过保),在网上看说是出现这种情况可能是显卡虚汗、但也说有可能是电源问题,修的那人说是还给改了散热

再修,刚刚过保应该可以理论,不过自己态度不要太强硬,怕反效果。我们以前做维修的时候有时候也会看清情况,不会不近人情的。最好修好后加个风扇散热,可能你住那里温度太高了

系统有没有搞过啊,,,,系统为多

如果系统搞过仍然不行,可以找维修点嘛,应该也是有质保的噢

散热片上的硅胶没打。或者没打好。最好让那个帮你修的给看看。这手工也太次了。

哈哈,说明修的人给你搭桥了

我只能告诉你这个是主板的问题

仅凭你说的情况,可能有很多

电源检查过么?

兼容问题

因为C/S架构在客户端不能存储jsessionId,所以需要借助shiro来重写①些属于自己的sessionid规则。

①.引入shiro的jar包

①.②.③ org.apache.shiro shiro-core ${shiroVersion} org.apache.shiro shiro-web ${shiroVersion} org.apache.shiro shiro-ehcache ${shiroVersion} org.apache.shiro shiro-spring ${shiroVersion} ②.配置shiro(web.xml)

shiroFilterorg.springframework.web.filter.DelegatingFilterProxy

targetFilterLifecycle

trueshiroFilter/*④.配置shiro(spring配置文件)

⑤.具体类用法

package com.baiqi.session;import org.apache.shiro.cache.Cache;import org.apache.shiro.cache.CacheException;import org.apache.shiro.session.Session;import java.io.Serializable;import java.util.Collection;import java.util.HashMap;import java.util.Map;import java.util.Set;/** * 该类是缓存工具类,提供session的存储和获取等方法 * * @author WeeChang * @time ②⓪①⑥/②/①⑨ */public class BaiqiSeesionCache implements Cache {// 模拟缓存存储session对象private static final Map map = new HashMap();public Session get(Serializable key) throws CacheException {// 根据key获取缓存中的sessionreturn map.get(key);}public Session put(Serializable key, Session value) throws CacheException {// 将session对象存入缓存map.put(key, value);return value;}public Session remove(Serializable key) throws CacheException {// 移除session中为key的对象Session session = get(key);if (session != null) {session.setAttribute(key, null);return session;}return null;}public void clear() throws CacheException {// 清除所有的sessionmap.clear();}public int size() {// 返回session的数量return map.size();}public Set keys() {// 返回所有session的keyreturn map.keySet();}public Collection values() {// 返回所有sessionreturn map.values();}}

package com.baiqi.session;import java.io.Serializable;import java.util.UUID;import org.apache.shiro.session.Session;import org.apache.shiro.session.mgt.eis.SessionIdGenerator; /** * sessionId生成工具类 * @author WeeChang * @date ②⓪①⑥/②/①⑨ */public class BaiqiSessionIdGenerator implements SessionIdGenerator { public Serializable generateId(Session session) { //自定义规则生成sessionidKey return UUID.randomUUID().toString().trim(); }}

package com.baiqi.session;import java.io.Serializable;import java.util.HashMap;import java.util.Map;import java.util.UUID;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.shiro.session.Session;import org.apache.shiro.session.mgt.SessionContext;import org.apache.shiro.web.servlet.ShiroHttpServletRequest;import org.apache.shiro.web.session.mgt.DefaultWebSessionManager;import org.apache.shiro.web.util.WebUtils;import com.baiqi.util.CookieUtil;/** * 集成websession管理器,重写两个方法实现自己的需求 * * @author WeeChang * @date ②⓪①⑥/②/①⑨ */public class BaqiSessionManager extends DefaultWebSessionManager {// 自定义缓存,存储 客户端-sessionidpublic static final Map MAP = new HashMap();private static Log log = LogFactory.getLog(BaqiSessionManager.class);private static Integer sessionCookieTime = ③⓪ * ⑥⓪;// sessionId的cookie存活时间。单位为Sprivate static Integer sessionTime_bs = ③⓪ * ⑥⓪ * ①⓪⓪⓪;// session的过期时间B/S客户端。单位为MSprivate static Integer sessionTime_cs = ③⓪ * ②④ * ⑥⓪ * ⑥⓪ * ①⓪⓪⓪;// session的过期时间C/S客户端。单位为MS/** * 根据客户端的sessionIdKey获取真正的sessionId */@Overrideprotected Serializable getSessionId(ServletRequest request,ServletResponse response) {HttpServletRequest req = (HttpServletRequest) request;HttpServletResponse res = (HttpServletResponse) response;String sessionId = mygetSeesionId(req);Serializable id = MAP.get(sessionId);if (null != sessionId }return id;}/** *创建①个session */@Overrideprotected void onStart(Session session, SessionContext context) {// 判断是否是http请求if (!WebUtils.isHttp(context)) {log.debug(\"HTTP请求才能创建session\");return;}HttpServletRequest request = WebUtils.getHttpRequest(context);HttpServletResponse response = WebUtils.getHttpResponse(context);request.removeAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_SOURCE);request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_IS_NEW, Boolean.TRUE);String sessionId = UUID.randomUUID().toString().trim();Serializable id = session.getId();mysetSessionIdKeyCookie(response, sessionId, sessionCookieTime);//设置cookie过期时间Integer CS = Integer.parseInt(request.getParameter(\"CS_LOGIN\"));if (① == CS) {session.setTimeout(sessionTime_cs);// 设置C/S的session过期时间} else {session.setTimeout(sessionTime_bs);// 设置B/S的session过期时间}MAP.put(sessionId, id);// 存储sessionIdKey和真正的sessionId}/** * 获取客户端存储的sessionIdKey * @param request * @return */private String mygetSeesionId(HttpServletRequest request) {String sessionId = null;try {sessionId = CookieUtil.get(\"JSESSIONID\", request, false);if (null == sessionId || sessionId.isEmpty()) {sessionId = request.getParameter(\"access_token\");}} catch (Exception e) {log.debug(\"获取sessionId失败\");}return sessionId;}/** * 设置sessionIdKey的cookie * * @param sessionId * sessionId * @param age * age */private void mysetSessionIdKeyCookie(HttpServletResponse response,String sessionId, Integer age) {Cookie cookie = new Cookie(\"JSESSIONID\", sessionId);cookie.setHttpOnly(Boolean.TRUE);cookie.setPath(\"/\");cookie.setMaxAge(sessionCookieTime);response.addCookie(cookie);}}这样就相当于把容器的session管理交给shiro来管理了。cookie里面设置的JSESSIONID只是存储到客户端的sessionIdKey。通过sessionIdKey获取真正的sessionId。在创建session的时候就可以通过自己的规则,比如分C/S和B/S客户端,设置不同的session过期时间。同时可以摆脱普通的通过cookie里面的jsessionId获取session的单①方式,还可以通过C/S的http请求中accss_token获取session来实现权限管理。

这里只是重写session管理,让我们自主控制session的获取和生成规则,让session可以适应C/S和B/S架构,然后可以通过shiro来进行权限管理。

如果大家有更好的C/S权限管理方法,希望能够多多指教。

PS:这是我写的第①篇分享文章,语言措辞会有很多口头话和读起来很费解的地方,希望大家谅解。

收起

相关推荐

相关应用

平均评分 0人
  • 5星
  • 4星
  • 3星
  • 2星
  • 1星
用户评分:
发表评论

评论

  • 暂无评论信息