缓存直接缓存byte数组:map.put("key", byte[])有啥其他影响么

缓存直接缓存byte数组:map.put("key", byte[]),这样会不会导致什么问题?性能或者其他

1个回答

光从java语言的角度来说不会有任何的影响,内部使用的是引用方式,对于value是什么类型对map的影响并不大,
对map性能有影响的是key的类型,。当如如果考虑到不同的表示对内存的消耗不同,比如value是String类型总比byte[]是要多占用内存的,
如果内存占的太多了由于虚拟内存、硬件cache line命中率的下降等等原因肯定会对性能造成影响,当然java开发中很少遇上这种情况

ezhishui
ezhishui 厉害,那相对来说value用byte[] 反而比string占用内存要少吧,那现有很多代码写的value都是string,不如用byte[]好,这样理解对吗
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java.lang.NumberFormatException: Invalid int: ""

07-08 10:18:40.743: W/System.err(32269): java.lang.NumberFormatException: Invalid int: "" 07-08 10:18:40.763: W/System.err(32269): at java.lang.Integer.invalidInt(Integer.java:138) 07-08 10:18:40.763: W/System.err(32269): at java.lang.Integer.parseInt(Integer.java:359) 07-08 10:18:40.763: W/System.err(32269): at java.lang.Integer.parseInt(Integer.java:332) 07-08 10:18:40.763: W/System.err(32269): at java.util.Calendar.getHwFirstDayOfWeek(Calendar.java:807) 07-08 10:18:40.763: W/System.err(32269): at java.util.Calendar.<init>(Calendar.java:745) 07-08 10:18:40.763: W/System.err(32269): at java.util.GregorianCalendar.<init>(GregorianCalendar.java:338) 07-08 10:18:40.763: W/System.err(32269): at java.util.GregorianCalendar.<init>(GregorianCalendar.java:314) 07-08 10:18:40.763: W/System.err(32269): at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:378) 07-08 10:18:40.763: W/System.err(32269): at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:368) 07-08 10:18:40.763: W/System.err(32269): at libcore.net.http.HttpDate$1.initialValue(HttpDate.java:38) 07-08 10:18:40.763: W/System.err(32269): at libcore.net.http.HttpDate$1.initialValue(HttpDate.java:36) 07-08 10:18:40.763: W/System.err(32269): at java.lang.ThreadLocal$Values.getAfterMiss(ThreadLocal.java:430) 07-08 10:18:40.763: W/System.err(32269): at java.lang.ThreadLocal.get(ThreadLocal.java:65) 07-08 10:18:40.763: W/System.err(32269): at libcore.net.http.HttpDate.parse(HttpDate.java:73) 07-08 10:18:40.773: W/System.err(32269): at libcore.net.http.ResponseHeaders.<init>(ResponseHeaders.java:142) 07-08 10:18:40.773: W/System.err(32269): at libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:547) 07-08 10:18:40.773: W/System.err(32269): at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:784) 07-08 10:18:40.773: W/System.err(32269): at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:274) 07-08 10:18:40.773: W/System.err(32269): at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:479) 07-08 10:18:40.773: W/System.err(32269): at com.example.uploadtest.UploadARMThread.post(UploadARMThread.java:132) 07-08 10:18:40.773: W/System.err(32269): at com.example.uploadtest.UploadARMThread.run(UploadARMThread.java:34) 以上错误发生在 int code = urlConn.getResponseCode();这一句 HttpURLConnection urlConn = null; BufferedReader br = null; try { //新建url对象 URL url = new URL(actionUrl); //通过HttpURLConnection对象,向网络地址发送请求 urlConn = (HttpURLConnection)url.openConnection(); //设置该连接允许读取 urlConn.setDoOutput(true); //设置该连接允许写入 urlConn.setDoInput(true); //设置不能适用缓存 urlConn.setUseCaches(false); //设置连接超时时间 urlConn.setConnectTimeout(3000); //设置连接超时时间 //设置读取时间 urlConn.setReadTimeout(4000); //读取超时 //设置连接方法post urlConn.setRequestMethod("POST"); //设置维持长连接 urlConn.setRequestProperty("connection", "Keep-Alive"); //设置文件字符集 urlConn.setRequestProperty("Charset", CHARSET); //设置文件类型 urlConn.setRequestProperty("Content-Type", MUTIPART_FORMDATA+";boundary="+BOUNDARY); /********************************************************************/ DataOutputStream dos = new DataOutputStream(urlConn.getOutputStream()); //构建表单数据 //String entryText = bulidFormText(params); //dos.write(entryText.getBytes()); int index = 1; StringBuffer sb = new StringBuffer(""); sb.append(PREFIX+BOUNDARY+LINEND) .append("Content-Disposition: form-data;" + " name=\""+"123456"+"\";" + " filename=\""+"2222222"+"\""+LINEND) .append("Content-Type:"+CONTENTTYPE+";" + "charset="+CHARSET+LINEND) .append(LINEND); dos.write(sb.toString().getBytes()); FileInputStream fis = new FileInputStream(files); byte[] buffer = new byte[10000]; int len = 0; while ((len = fis.read(buffer)) != -1) { dos.write(buffer, 0, len); } dos.write(LINEND.getBytes()); fis.close(); //请求的结束标志 byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND).getBytes(); dos.write(end_data); dos.flush(); dos.close(); // 发送请求数据结束 //接收返回信息 int code = urlConn.getResponseCode(); if(code!=200){ urlConn.disconnect(); return code; }else{ br = new BufferedReader(new InputStreamReader(urlConn.getInputStream())); String result = ""; String line = null; while((line = br.readLine())!=null){ result += line; } Log.i(Constant.TAG, result); if("true".equals(result)){ return 200; }else{ return 500; } } } catch (Exception e) { e.printStackTrace(); Log.e(Constant.TAG, e.getMessage()); return -1; }finally{ try { if(br!=null){ br.close(); } if(urlConn!=null){ urlConn.disconnect(); } } catch (Exception e) { e.printStackTrace(); } } 这段代码在一个Thread的Run()中执行, 不在主进程

hmailserver远程主机强制关闭现有的连接

hmailserver服务突然报如下错误: "TCPIP" 199968 "2019-12-12 17:44:43.585" "Connecting to 113.96.208.92:465..." "TCPIP" 169664 "2019-12-12 17:44:43.585" "Connecting to 113.96.208.92:465..." "TCPIP" 165036 "2019-12-12 17:44:43.595" "TCPConnection - TLS/SSL handshake failed. Session Id: 34423, Remote IP: 113.96.208.92, Error code: 10054, Message: An existing connection was forcibly closed by the remote host" "TCPIP" 155836 "2019-12-12 17:44:43.595" "TCPConnection - TLS/SSL handshake failed. Session Id: 34422, Remote IP: 113.96.208.92, Error code: 10054, Message: An existing connection was forcibly closed by the remote host" "TCPIP" 169664 "2019-12-12 17:44:43.595" "Connecting to 113.96.200.115:465..." "TCPIP" 199968 "2019-12-12 17:44:43.596" "Connecting to 113.96.200.115:465..." "TCPIP" 155836 "2019-12-12 17:44:43.611" "TCPConnection - TLS/SSL handshake failed. Session Id: 34425, Remote IP: 113.96.200.115, Error code: 10054, Message: An existing connection was forcibly closed by the remote host" "TCPIP" 34336 "2019-12-12 17:44:43.611" "TCPConnection - TLS/SSL handshake failed. Session Id: 34424, Remote IP: 113.96.200.115, Error code: 10054, Message: An existing connection was forcibly closed by the remote host" "TCPIP" 199968 "2019-12-12 17:44:43.611" "Connecting to 113.96.232.106:465..." "TCPIP" 169664 "2019-12-12 17:44:43.612" "Connecting to 113.96.232.106:465..." "TCPIP" 34336 "2019-12-12 17:44:43.619" "TCPConnection - TLS/SSL handshake failed. Session Id: 34427, Remote IP: 113.96.232.106, Error code: 10054, Message: An existing connection was forcibly closed by the remote host" "TCPIP" 165036 "2019-12-12 17:44:43.620" "TCPConnection - TLS/SSL handshake failed. Session Id: 34426, Remote IP: 113.96.232.106, Error code: 10054, Message: An existing connection was forcibly closed by the remote host" 邮件服务失效了,请问是什么问题?

ssm 报错:org.springframework.context.annotation.internalAsyncAnnotationProcessor

# ssm 框架 在本地完美运行放到Linux服务器报错 以下内容 Error creating bean with name '**org.springframework.context.annotation.internalAsyncAnnotationProcessor'**: Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: org.springframework.aop.interceptor.AsyncExecutionInterceptor.<init>(Ljava/util/concurrent/Executor;Lorg/springframework/aop/interceptor/AsyncUncaughtExceptionHandler;)V ## 之前是没有加 redis,没有发现问题,这次我加了redis然后就报错,大神们帮忙看看解决解决 这是spring-mvc配置: ``` ==============spring-mvc===================== <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd" > <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 --> <mvc:annotation-driven/> <context:component-scan base-package="com.bls.mp.*"/> <!--避免IE执行AJAX时,返回JSON出现下载文件 --> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> <bean class="com.bls.mp.common.SpringTool"/> <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 --> <!-- <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter" /> JSON转换器 </list> </property> </bean>--> <!-- 定义跳转的文件的前后缀 ,视图模式配置--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 --> <property name="prefix" value="/WEB-INF/resources/jsp/" /> <property name="suffix" value=".jsp" /> </bean> <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 默认编码 --> <property name="defaultEncoding" value="utf-8" /> <!-- 文件大小最大值 --> <property name="maxUploadSize" value="10485760000" /> <!-- 内存中的最大值 --> <property name="maxInMemorySize" value="40960" /> </bean> <!-- 全局异常处理器 --> <bean class="com.bls.mp.common.exception.CustomExceptionResolver"></bean> <mvc:annotation-driven/> <!-- 拦截器配置 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/setadmin"/> <!--<mvc:mapping path="/user/userList"/> --> <mvc:mapping path="/Blocker"/> <mvc:mapping path="/grouponteam/grouponRanking"/> <mvc:mapping path="/grouponteam/arriverTime"/> <mvc:mapping path="/grouponteam/paging"/> <mvc:mapping path="/grouponteam/conditionGrouponT"/> <mvc:mapping path="/hospital/hospitalInfo"/> <mvc:mapping path="/hospital/setting"/> <mvc:mapping path="/hospital/orderdetails"/> <mvc:mapping path="/grouponteam/grouponTeamCountAndMoney"/> <mvc:mapping path="/grouponteam/OrderRefundList"/> <mvc:mapping path="/grouponteam/orderdetails"/> <mvc:mapping path="/grouponteam/paging"/> <mvc:mapping path="/grouponteam/conditionGrouponT"/> <mvc:mapping path="/grouponteam/grouponRanking"/> <mvc:mapping path="/grouponteam/arriverTime"/> <mvc:mapping path="/grouponteam/grouponTeamCountAndMoney"/> <mvc:mapping path="/imguoload"/> <mvc:mapping path="/imguoloads"/> <mvc:mapping path="/uploadFile"/> <mvc:mapping path="/uploadCenter"/> <mvc:mapping path="/onTheShelves"/> <mvc:mapping path="/updateTheRecommended"/> <mvc:mapping path="/deleteByGoods"/> <mvc:mapping path="/restoreGoods"/> <mvc:mapping path="/goods/goodslist"/> <mvc:mapping path="/goods/hasBeenOn"/> <mvc:mapping path="/goods/NotOn"/> <mvc:mapping path="/goods/RecycleBin"/> <mvc:mapping path="/goods/searchName"/> <mvc:mapping path="/goods/goodsdiy"/> <mvc:mapping path="/upload/uploadFile"/> <mvc:mapping path="/CreateClassImg"/> <mvc:mapping path="/imglist"/> <mvc:mapping path="/up_img"/> <mvc:mapping path="/moveImg"/> <mvc:mapping path="/deleteImg"/> <mvc:mapping path="/template/templateURL"/> <mvc:mapping path="/template/templateParentAll"/> <mvc:mapping path="/template/templatAll"/> <mvc:mapping path="/template/changeT"/> <mvc:mapping path="/template/deleteT"/> <mvc:mapping path="/TemplateMsg/addTemplateMsg"/> <mvc:mapping path="/TemplateMsg/templateMsgList"/> <mvc:mapping path="/TemplateMsg/templateSendlist"/> <mvc:mapping path="/TemplateMsg/TemplateSendMsg"/> <mvc:mapping path="/TemplateMsg/updataPTID"/> <mvc:mapping path="/TemplateMsg/deleteMB"/> <mvc:mapping path="/ThirdData/getdata"/> <mvc:mapping path="/ThirdData/updata"/> <mvc:mapping path="/setMoney/setMoneyList"/> <mvc:mapping path="/setMoney/setArriveMoney"/> <mvc:mapping path="/setMoney/checkfileCert"/> <mvc:mapping path="/setMoney/SetMoneyType"/> <mvc:mapping path="/user/userlists"/> <mvc:mapping path="/user/uOpenId"/> <mvc:mapping path="/visitor/theAlmostMoon"/> <mvc:mapping path="/visitor/SixAlmostMoon"/> <mvc:mapping path="/visitor/tops"/> <mvc:mapping path="/weixin/REFUND"/> <bean class="com.bls.mp.interceptor.AuthInterceptor"></bean> </mvc:interceptor> </mvc:interceptors> <task:annotation-driven/> <!-- 配置访问静态文件 --> <mvc:default-servlet-handler/> <mvc:resources location="/images/" mapping="/images/**"/> <mvc:resources location="/WEB-INF/js/" mapping="/js/**"/> <mvc:resources location="/WEB-INF/resources/jsp/" mapping="/jsp/**"/> <mvc:resources location="/WEB-INF/resources/css/" mapping="/css/**"/> </beans> ``` 这是 web.xml ``` ==============web.xml===================== <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>Archetype Created Web Application</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mybatis.xml</param-value> <param-value>classpath:spring-redis.xml</param-value> </context-param> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <async-supported>true</async-supported> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>CORSFilter</filter-name> <filter-class>com.bls.mp.common.MyFilter</filter-class> <init-param> <param-name>excludedPages</param-name> <param-value>/UserAuthServlet</param-value> </init-param> </filter> <filter-mapping> <filter-name>CORSFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>/index.jsp</welcome-file> </welcome-file-list> </web-app> ``` 这是spring-mybatis.xml 配置 ``` ==============spring-mybatis.xml===================== <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <!-- 自动扫描 --> <context:component-scan base-package="com.bls.mp"/> <!-- 引入配置文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties" /> </bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <!-- 初始化连接大小 --> <property name="initialSize" value="${initialSize}"></property> <!-- 连接池最大数量 --> <property name="maxActive" value="${maxActive}"></property> <!-- 连接池最大空闲 --> <property name="maxIdle" value="${maxIdle}"></property> <!-- 连接池最小空闲 --> <property name="minIdle" value="${minIdle}"></property> <!-- 获取连接最大等待时间 --> <property name="maxWait" value="${maxWait}"></property> </bean> <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 自动扫描mapping.xml文件 --> <property name="mapperLocations" value="classpath:com/bls/mp/mapping/*.xml"></property> </bean> <!-- DAO接口所在包名,Spring会自动查找其下的类 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.bls.mp.dao" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean> <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> </beans> ``` 这是spring-redis.xml配置 ``` ===================spring-redis.xml============== <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:property-placeholder location="classpath:*.properties"/> <!--设置数据池--> <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxIdle" value="${redis.maxIdle}"></property> <property name="minIdle" value="${redis.minIdle}"></property> <property name="maxTotal" value="${redis.maxTotal}"></property> <property name="maxWaitMillis" value="${redis.maxWaitMillis}"></property> <property name="testOnBorrow" value="${redis.testOnBorrow}"></property> </bean> <!--链接redis--> <bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"> <property name="hostName" value="${redis.host}"></property> <property name="port" value="${redis.port}"></property> <property name="password" value="${redis.password}"></property> <property name="timeout" value="${redis.timeout}"></property> <property name="poolConfig" ref="poolConfig"></property> </bean> <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" p:connection-factory-ref="connectionFactory" > <!--以下针对各种数据进行序列化方式的选择--> <property name="keySerializer"> <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" /> </property> <property name="valueSerializer"> <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" /> </property> <property name="hashKeySerializer"> <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" /> </property> <!--<property name="hashValueSerializer"> <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" /> </property>--> </bean> </beans> ```

java.io.OptionalDataException

我在项目运行一段时间后,出现这个错误: net.sf.ehcache.CacheException: java.io.OptionalDataException 代码定位在我像缓存里面put数据的时候 请问这是什么原因导致的啊???? 以下是堆栈: Caused by: net.sf.ehcache.CacheException: java.io.OptionalDataException at net.sf.ehcache.store.disk.DiskStorageFactory.retrieve(DiskStorageFactory.java:938) at net.sf.ehcache.store.disk.Segment.decode(Segment.java:167) at net.sf.ehcache.store.disk.Segment.put(Segment.java:444) at net.sf.ehcache.store.disk.DiskStore.put(DiskStore.java:475) at net.sf.ehcache.store.FrontEndCacheTier.put(FrontEndCacheTier.java:221) at net.sf.ehcache.Cache.putInternal(Cache.java:1492) at net.sf.ehcache.Cache.put(Cache.java:1417) at net.sf.ehcache.Cache.put(Cache.java:1382)

百度API 为什么报这个错啊 大神们有谁能来看看 再次谢谢 ......

老铁们 大神们,,我这里这个怎么抢救啊 我调了 百度的API 然后想拿到这个识别 结果 我是前台浏览器JS 脚本拍的图片 BASE 64 转码到后台 放到百度去识别 我确信 我拍的是我自己图片 结果每次 pic ``` String url = "https://aip.baidubce.com/rest/2.0/face/v3/search"; //请求的url,可以查看官方文档查看不同请求的url // String flag = request.getParameter("flag"); Map<String, Object> map = new HashMap<>(); map.put("image", request.getParameter("base"));//获取前台的人脸识别后发送的base64 map.put("group_id_list", "itcast");//之前创建的人脸库,可以在百度云的管理控制台查看用户组,face1是之前命名好的 map.put("image_type", "BASE64");//照片类型为base64 // map.put("quality_control", "NORMAL"); String param = GsonUtils.toJson(map); // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。 String accessToken = GetToken.getAuth(); String result = null; try { result = HttpUtil.post(url, accessToken, "application/json", param); } catch (Exception e) { e.printStackTrace(); } System.out.println("识别结果为:"+result); ``` 前台代码 ``` function takePhoto() { //获得Canvas对象 var video = document.getElementById('video'); var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); // ctx.drawImage(video, 0, 0, 500, 500); // toDataURL --- 可传入'image/png'---默认, 'image/jpeg' var img = document.getElementById('canvas').toDataURL("image/png"); var base = img.split("base64,")[1]; // alert(base); console.log(base); // 这里的img就是得到的图片 // console.log('img-----', img); /* * 发送这个数据 * */ $.ajax({ type:"post", url:"testServlet", data:{ "base":base, "flag":"queryfacekey" }, dataType: "json", success:function(json){ location.href = "index.html"; // if("登录成功"==json.mess){ // window.parent.location.replace("<%=path%>/main.jsp"); // }else{ // $.MsgBox.Alert("消息",json.mess); // location.href = "login.html"; }, error:function(){ alert("error"); } }); // document.getElementById('imgTag').src=img; } // 关闭摄像头 function closeMedia() { mediaStreamTrack.stop(); } ``` 为啥报这个错result:{"error_code":222202,"error_msg":"pic not has face","log_id":8494947994101,"timestamp":1588490657,"cached":0,"result":null}

项目在tomcat运行几天以后会ehcache错误,重启以后又可以正常运行,具体错误信息如下:

2017-07-05 09:56:56,466 [ajp-bio-8021-exec-10] ERROR [500.jsp] - net.sf.ehcache.CacheException: java.io.OptionalDataException org.apache.shiro.cache.CacheException: net.sf.ehcache.CacheException: java.io.OptionalDataException at org.apache.shiro.cache.ehcache.EhCache.get(EhCache.java:85) at org.apache.shiro.realm.AuthorizingRealm.getAuthorizationInfo(AuthorizingRealm.java:328) at org.apache.shiro.realm.AuthorizingRealm.isPermitted(AuthorizingRealm.java:461) at org.apache.shiro.realm.AuthorizingRealm.isPermitted(AuthorizingRealm.java:457) at org.apache.shiro.authz.ModularRealmAuthorizer.isPermitted(ModularRealmAuthorizer.java:223) at org.apache.shiro.authz.ModularRealmAuthorizer.checkPermission(ModularRealmAuthorizer.java:322) at org.apache.shiro.mgt.AuthorizingSecurityManager.checkPermission(AuthorizingSecurityManager.java:137) at org.apache.shiro.subject.support.DelegatingSubject.checkPermission(DelegatingSubject.java:205) at org.apache.shiro.authz.aop.PermissionAnnotationHandler.assertAuthorized(PermissionAnnotationHandler.java:74) at org.apache.shiro.authz.aop.AuthorizingAnnotationMethodInterceptor.assertAuthorized(AuthorizingAnnotationMethodInterceptor.java:84) at org.apache.shiro.authz.aop.AnnotationsAuthorizingMethodInterceptor.assertAuthorized(AnnotationsAuthorizingMethodInterceptor.java:100) at org.apache.shiro.authz.aop.AuthorizingMethodInterceptor.invoke(AuthorizingMethodInterceptor.java:38) at org.apache.shiro.spring.security.interceptor.AopAllianceAnnotationsAuthorizingMethodInterceptor.invoke(AopAllianceAnnotationsAuthorizingMethodInterceptor.java:115) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:644) at com.oc.modules.fb.web.InfoController$$EnhancerBySpringCGLIB$$1cc7bd3.list(<generated>) at sun.reflect.GeneratedMethodAccessor918.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852) at javax.servlet.http.HttpServlet.service(HttpServlet.java:620) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129) at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61) at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:152) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421) at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:190) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) Caused by: net.sf.ehcache.CacheException: java.io.OptionalDataException at net.sf.ehcache.store.disk.DiskStorageFactory.retrieve(DiskStorageFactory.java:914) at net.sf.ehcache.store.disk.Segment.decodeHit(Segment.java:183) at net.sf.ehcache.store.disk.Segment.get(Segment.java:221) at net.sf.ehcache.store.disk.DiskStore.get(DiskStore.java:467) at net.sf.ehcache.store.FrontEndCacheTier.get(FrontEndCacheTier.java:201) at net.sf.ehcache.Cache.searchInStoreWithoutStats(Cache.java:2070) at net.sf.ehcache.Cache.get(Cache.java:1590) at org.apache.shiro.cache.ehcache.EhCache.get(EhCache.java:73) ... 79 more 看哪位大神遇到过此类问题,麻烦不吝赐教,在此先谢过。 (备注:我没有在同一个tomcat下部署多个项目,ehcache存储的目录位tomcat下的temp目录)

如何清空byte[]数组

做socket传输的时候用的 [code="java"] InputStream is = socket.getInputStream(); byte[] inputByte = new byte[1024]; while((length = is.read(inputByte,0,inputByte.length))>0){ //其他代码... } [/code] 但是最后一次读的时候长度没有1024,比如1000,这样的话剩下那24个字节就是倒数第2次传的那组数的最后24个字节,用了各种方法,什么inputByte=null; inputByte=new byte[1024];Arrays.fill(inputByte,(byte)0);在每次循环的末尾...都没能把数组清空...求解

hadoop使用kerberos认证后,hadoop fs -ls命令行无法使用,求大神帮忙

hadoop版本apache hadoop 2.7.3,jdk-1.7 输入hadoop fs -ls,错误信息如下: hadoop@hadoop01 native]$ hadoop fs -ls 17/08/01 01:33:36 WARN ipc.Client: Exception encountered while connecting to the server : javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)] ls: Failed on local exception: java.io.IOException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]; Host Details : local host is: "hadoop01/192.168.148.129"; destination host is: "hadoop01":9000; klist查看凭据缓存,是存在的: [hadoop@hadoop01 native]$ klist Ticket cache: KEYRING:persistent:1001:1001 Default principal: hadoop/hadoop01@HADOOP.COM Valid starting Expires Service principal 08/01/2017 01:12:54 08/02/2017 01:12:54 krbtgt/HADOOP.COM@HADOOP.COM 通过http://192.168.148.129:50070/dfshealth.html#tab-overview访问界面也是OK的: Configured Capacity: 55.38 GB DFS Used: 16 KB (0%) Non DFS Used: 11.4 GB DFS Remaining: 43.99 GB (79.42%) Block Pool Used: 16 KB (0%) DataNodes usages% (Min/Median/Max/stdDev): 0.00% / 0.00% / 0.00% / 0.00% Live Nodes 2 (Decommissioned: 0) Dead Nodes 0 (Decommissioned: 0) Decommissioning Nodes 0 Total Datanode Volume Failures 0 (0 B) Number of Under-Replicated Blocks 0 Number of Blocks Pending Deletion 0 Block Deletion Start Time 2017/8/1 上午10:12:21

马丁尼&Appengine / golang,返回内存缓存的JSON数据

<div class="post-text" itemprop="text"> <p>I am now coding with Martini and AppEngine/Go.</p> <p>I want to use memcache to serve JSON data. But the response is invalid JSON format.Why "null" is in the response?</p> <pre><code>null{"results":[{"Title":"Nikkei225","PriceTime":"2014-04-25 06:28:00 UTC","Price":"14,429.26","Diff":"+24.27(0.1%)"},{"Title":"USD/JPY","PriceTime":"2014-04-25 20:49:00 UTC","Price":"102.12-102.16","Diff":"-0.15(-0.1%)"},{"Title":"EURO/JPY","PriceTime":"2014-04-25 20:49:00 UTC","Price":"141.28-141.32","Diff":"-0.19(-0.1%)"},{"Title":"EURO/USD","PriceTime":"2014-04-25 20:48:00 UTC","Price":"1.3833-1.3836","Diff":"+0.0002(0.0%)"},{"Title":"USD/CNY","PriceTime":"2014-04-25 20:48:00 UTC","Price":"6.2536-6.2546","Diff":"+0.0063(0.1%)"},{"Title":"DJIA","PriceTime":"2014-04-25 07:29:00 UTC","Price":"16,361.46","Diff":"-140.19(-0.8%)"},{"Title":"Nasdaq","PriceTime":"2014-04-25 07:00:00 UTC","Price":"4,075.561","Diff":"-72.777(-1.7%)"},{"Title":"FTSE100","PriceTime":"2014-04-25 07:35:00 UTC","Price":"6,685.69","Diff":"-17.31(-0.2%)"}]} </code></pre> <p>And console says like below:</p> <pre><code>http: multiple response.WriteHeader calls </code></pre> <p>My code is like below.<br> Retrieve from cache:</p> <pre><code> c := appengine.NewContext(req) memcacheKey := "markets" results := []Result{} cachedItem, getCacheErr := memcache.JSON.Get(c, memcacheKey,&amp;map[string]interface{}{"results": results}) if getCacheErr != nil &amp;&amp; getCacheErr != memcache.ErrCacheMiss { c.Infof("get cache error") } if getCacheErr == nil { c.Infof("cached data found") c.Infof("cached data: %v",cachedItem.Value) r.JSON(200, cachedItem.Object) } else { c.Infof("cached data not found") } </code></pre> <p>Set to memcache: </p> <pre><code> client := urlfetch.Client(c) resp, err := client.Get("http://www.nikkei.com/markets/kaigai/worldidx.aspx") if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } indexes := Indexes() doc, _ := goquery.NewDocumentFromResponse(resp) doc.Find("div.mk-world_market div table tr").Each(func(_ int, s *goquery.Selection) { title := s.Find("th").Text() title = strings.Trim(strings.Replace(title,"※","",-1)," ") if val,ok := indexes[title]; ok { price := s.Find("th").Next().Text() diff := s.Find("td:nth-child(3)").Text() pricetime := s.Find("td:nth-child(4)").Text() t := time.Now() pricetime = StringToTime(pricetime,t) result := Result{val,pricetime,price,diff} results = append(results,result) } }) item := &amp;memcache.Item{ Key:memcacheKey, Object: &amp;map[string]interface{}{"results": results}, } setErr := memcache.JSON.Set(c, item) if setErr != nil { c.Infof("set error: %v",setErr) } </code></pre> <p>What is wrong with my code?</p> </div>

jquery datatables插件 表格数据初始化时,数据加载两次

/** 表格的数据渲染 */ function drawTable(aa001, aa002, aa003) { dataTable = $("#dataTable").DataTable({ "searching": false, "ordering": false, "destroy": true, "lengthMenu": [ 10, 20, 25, 30 ], "lengthChange": false, "paging": true, "ajax": { "url":"**", "data": {"aa001": aa001, "aa002": aa002, "aa003": aa003} }, "language": { "emptyTable": "无相关数据!", "info": "符合查询条件的数据共 _TOTAL_ 条,当前第 _START_ 至 _END_ 条数据", "infoEmpty": "当前显示0到0条,共0条记录", "lengthMenu": "显示 _MENU_ 条", "loadingRecords": "加载中...", "processing": "加载中...", "zeroRecords": "未查询到相关数据!", "paginate": { "first": "首页", "last": "尾页", "next": "下一页", "previous": "上一页" } }, "columns": [ {"class" : 'details-control', "orderable": false, "data": null, "defaultContent": '' }, { "data": "ab301"}, { "data": "ab303"}, { "data": "ac201"}, { "data": "bm001"}, { "data": "bm004"}, { "data": "afk02"}, { "data": "dc236"}, { "data": "area"} ] }); }

spring security oauth2 的一个问题 求大神指点

在oauth2根据授权码获取accsess token时,通关Debug发现在TokenEndpoint类下的getAccessToken方法内会根据principal去数据库获取client_id,但principal内存储的是当前用户的信息,然后就会报错:Given client ID does not match authenticated client 求大神解答怎么破. security.xml文件如下: ``` <?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oauth2="http://www.springframework.org/schema/security/oauth2" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/security/oauth2 http://www.springframework.org/schema/security/spring-security-oauth2-2.0.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.2.xsd"> <!-- 指定不需要权限过滤的路径 --> <http pattern="/login.jsp" security="none" /> <http pattern="/aouth/token" create-session="stateless" authentication-manager-ref="oauth2AuthenticationManager" entry-point-ref="oauth2AuthenticationEntryPoint"> <!-- 设置拦截地址和规则 --> <intercept-url pattern="/aouth/token" access="IS_AUTHENTICATED_FULLY" /> <!-- 非匿名 --> <anonymous enabled="false" /> <http-basic entry-point-ref="oauth2AuthenticationEntryPoint" /> <!-- 设置过滤链 --> <custom-filter ref="clientCredentialsTokenEndpointFilter" before="BASIC_AUTH_FILTER" /> <!-- 拒绝访问处理 --> <access-denied-handler ref="oauthAccessDeniedHandler" /> </http> <!--一个自定义的filter,必须包含authenticationManager,accessDecisionManager,securityMetadataSource三个属性, 我们的所有控制将在这三个类中实现 --> <beans:bean id="myFilter" class="com.yichi.mvcm.filter.MyFilterSecurityInterceptor"> <beans:property name="authenticationManager" ref="authenticationManager" /> <beans:property name="accessDecisionManager" ref="myAccessDecisionManagerBean" /> <beans:property name="securityMetadataSource" ref="myInvocationSecurityMetadataSource" /> </beans:bean> <!-- 认证客户端的manager --> <authentication-manager id="oauth2AuthenticationManager"> <authentication-provider user-service-ref="oauth2ClientDetailsUserService" /> </authentication-manager> <!-- spring security提供的用户登录验证 ,alias的值对应上面的ref="authenticationManager" --> <authentication-manager alias="authenticationManager"> <!--userDetailServiceImpl 获取登录的用户、用户权限 --> <authentication-provider user-service-ref="myUserDetailService" /> <!-- 缓存 --> <!-- <authentication-provider user-service-ref="cachingUserDetailsService" /> --> </authentication-manager> <!-- 缓存 --> <!-- <beans:bean id="cachingUserDetailsService" class="org.springframework.security.config.authentication.CachingUserDetailsService"> <beans:constructor-arg ref="myUserDetailService" /> 缓存UserDetails的UserCache <beans:property name="userCache" ref="userCache"/> </beans:bean> <beans:bean id="userCache" class="org.springframework.security.core.userdetails.cache.EhCacheBasedUserCache"> 用于真正缓存的Ehcache对象 <beans:property name="cache" ref="ehcache4UserDetails"></beans:property> </beans:bean> <beans:bean id="ehcache4UserDetails" class="org.springframework.cache.ehcache.EhCacheFactoryBean" /> --> <!--在这个类中,你就可以从数据库中读入用户的密码,角色信息,是否锁定,账号是否过期等 --> <beans:bean id="myUserDetailService" class="com.yichi.mvcm.filter.MyUserDetailService"> <!-- 配置成员变量 --> <beans:property name="sysUserService" ref="sysUserService" /> </beans:bean> <!--访问决策器,决定某个用户具有的角色,是否有足够的权限去访问某个资源 --> <beans:bean id="myAccessDecisionManagerBean" class="com.yichi.mvcm.filter.MyAccessDecisionManager"> </beans:bean> <beans:bean id="sysResService" class="com.yichi.mvcm.service.sys.SysResService"></beans:bean> <!--资源源数据定义,将所有的资源和权限对应关系建立起来,即定义某一资源可以被哪些角色访问 --> <beans:bean id="myInvocationSecurityMetadataSource" class="com.yichi.mvcm.filter.MyInvocationSecurityMetadataSource"> <!-- 配置成员变量 --> <beans:constructor-arg> <beans:ref bean="sysResService" /> </beans:constructor-arg> </beans:bean> <!-- 配置client客户端信息 --> <authentication-manager id="clientAuthenticationManager"> <authentication-provider user-service-ref="oauth2ClientDetailsUserService" /> </authentication-manager> <beans:bean id="oauth2ClientDetailsUserService" class="org.springframework.security.oauth2.provider.client.ClientDetailsUserDetailsService"> <beans:constructor-arg ref="clientDetailsService" /> </beans:bean> <!-- 数据库读取客户端信息 --> <beans:bean id="clientDetailsService" class="com.yichi.mvcm.filter.CustomJdbcClientDetailsService"> <beans:constructor-arg index="0" ref="dataSource" /> </beans:bean> <!-- 资源filter配置 --> <oauth2:resource-server id="picResourceServer" resource-id="pic-resource" token-services-ref="tokenServices" /> <!-- 配token service用于生成访问令牌token --> <beans:bean id="tokenServices" class="org.springframework.security.oauth2.provider.token.DefaultTokenServices"> <beans:property name="tokenStore" ref="tokenStore" /> <!-- 是否生成更新令牌 默认为false --> <beans:property name="supportRefreshToken" value="true" /> <beans:property name="clientDetailsService" ref="clientDetailsService" /> </beans:bean> <!-- token仓库 可以选择存储在内存或者数据库 --> <!-- <beans:bean id="tokenStore" class="org.springframework.security.oauth2.provider.token.store.InMemoryTokenStore"> </beans:bean> --> <beans:bean id="tokenStore" class="org.springframework.security.oauth2.provider.token.store.JdbcTokenStore"> <beans:constructor-arg index="0" ref="dataSource" /> </beans:bean> <!-- 资源 --> <http pattern="/mvcm/**" create-session="never" entry-point-ref="oauth2AuthenticationEntryPoint" access-decision-manager-ref="oauth2AccessDecisionManager"> <anonymous enabled="false" /> <intercept-url pattern="/mvcm/**" access="ROLE_index,SCOPE_READ" /> <custom-filter ref="picResourceServer" before="PRE_AUTH_FILTER" /> <access-denied-handler ref="oauthAccessDeniedHandler" /> </http> <beans:bean id="oauth2AuthenticationEntryPoint" class="org.springframework.security.oauth2.provider.error.OAuth2AuthenticationEntryPoint" /> <beans:bean id="oauthAccessDeniedHandler" class="org.springframework.security.oauth2.provider.error.OAuth2AccessDeniedHandler" /> <beans:bean id="oauth2AccessDecisionManager" class="org.springframework.security.access.vote.UnanimousBased"> <beans:constructor-arg> <beans:list> <beans:bean class="org.springframework.security.oauth2.provider.vote.ScopeVoter" /> <beans:bean class="org.springframework.security.access.vote.RoleVoter" /> <beans:bean class="org.springframework.security.access.vote.AuthenticatedVoter" /> </beans:list> </beans:constructor-arg> </beans:bean> <!-- user-approval-page:用户第三方登录认证以后的授权确认页面 error-page : 客户端申请授权的数据与服务端的不相同时跳转的页面 --> <oauth2:authorization-server client-details-service-ref="clientDetailsService" token-services-ref="tokenServices" user-approval-handler-ref="oauthUserApprovalHandler" user-approval-page="oauth_approval" error-page="oauth_error"> <oauth2:authorization-code authorization-code-services-ref="authorizationCodeServices" /> <oauth2:implicit /> <oauth2:refresh-token /> <oauth2:client-credentials /> <oauth2:password /> </oauth2:authorization-server> <!-- 授权码存储到数据库 --> <beans:bean id="authorizationCodeServices" class="org.springframework.security.oauth2.provider.code.JdbcAuthorizationCodeServices"> <beans:constructor-arg index="0" ref="dataSource" /> </beans:bean> <beans:bean id="oauthUserApprovalHandler" class="org.springframework.security.oauth2.provider.approval.DefaultUserApprovalHandler" /> <!-- <beans:bean id="clientCredentialsTokenEndpointFilter" class="org.springframework.security.oauth2.provider.client.ClientCredentialsTokenEndpointFilter"> <beans:property name="authenticationManager" ref="clientAuthenticationManager" /> </beans:bean> --> <beans:bean id="clientCredentialsTokenEndpointFilter" class="org.springframework.security.oauth2.provider.client.ClientCredentialsTokenEndpointFilter"> <beans:property name="authenticationManager" ref="clientAuthenticationManager" /> </beans:bean> <http auto-config="true" use-expressions="true"> <!-- 没有权限时跳转的页面 --> <access-denied-handler error-page="/accessDenied.jsp" /> <!-- 使用自定义的登录页面 login_page:指定登录页面 authentication-failure-url:登录失败跳转到/login.jsp login-processing-url进行认证拦截的请求路径 username-parameter和 password-parameter指定属性name字段 default-target-url认证成功默认跳转页面 --> <form-login login-page="/login.jsp" authentication-failure-url="/login.jsp?error=1" login-processing-url="/springSecurity" username-parameter="account" password-parameter="password" default-target-url="/index.jsp" /> <intercept-url pattern="/oauth/**" access="hasRole('ROLE_userOrg')" /> <!-- 设置单用户登录 --> <session-management> <!-- max-sessions表示最多允许多少次重复登录。如果没有配置error-if-maximum-exceeded, 那么用户账号的第二次登录会使第一次登录失效,而配置了的话,那么第二次登录会被阻止。 通常的做法是阻止第二次登录。 --> <concurrency-control max-sessions="1" error-if-maximum-exceeded="false" /> </session-management> <custom-filter ref="myFilter" before="FILTER_SECURITY_INTERCEPTOR" /> <!-- 检测失效的sessionId,session超时时,定位到另外一个URL --> <session-management invalid-session-url="/login.jsp" /> <logout invalidate-session="true" logout-success-url="/" logout-url="/logout" /> </http> </beans:beans> ```

使用maven搭建的ssm框架能够访问jsp页面但是就是无法访问controller层,代码如下

controller层是这样的 @Controller @RequestMapping("web_User") public class UserController { private static final Logger logger = Logger.getLogger(UserController.class); @Resource private UserService userService; /** * 获取具体用户信息 * */ @RequestMapping(value = { "getUserById_test" }, method = { RequestMethod.POST }) public @ResponseBody Map<String,Object> getVideoById(@RequestParam long id) { User user = userService.finduserById(id); Map<String, Object> map = new HashMap<String, Object>(); map.put("result", user); return map; } } applicationcontext是这样的 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:cache="http://www.springframework.org/schema/cache" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd "> <mvc:annotation-driven /> <context:annotation-config /> <mvc:default-servlet-handler /> <context:component-scan base-package="com.gp.demo.*" /> <!-- 启用缓存注解功能 --> <cache:annotation-driven cache-manager="cacheManager"/> <!-- 缓存管理器工厂加载ehcache的配置 --> <bean id="cacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> <property name="configLocation" value="classpath:ehcache.xml"/> </bean> <!-- 声明缓存管理器 --> <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"> <property name="cacheManager" ref="cacheManagerFactory"/> </bean> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <value>classpath:jdbc.properties</value> </property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="packagesToScan"> <list> <value>com.gp.demo.domain</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> <prop key="hibernate.show_sql">true</prop> </props> </property> </bean> <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name="initialSize" value="${jdbc.initialSize}" /> </bean> <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="dataSource" ref="dataSource" /> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean> <!-- 连接事务的注解配置 --> <tx:annotation-driven transaction-manager="transactionManager" /> <!-- 配置事务的传播特性 hibernate4必须配置为开启事务 否则 getCurrentSession()获取不到 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="Find*" propagation="REQUIRED" read-only="true" /> <tx:method name="is*" propagation="REQUIRED" read-only="true" /> <tx:method name="save*" propagation="REQUIRED" /> <tx:method name="send*" propagation="REQUIRED" /> <tx:method name="accept*" propagation="REQUIRED" /> <tx:method name="approve*" propagation="REQUIRED" /> <tx:method name="count*" propagation="REQUIRED" /> <tx:method name="sort*" propagation="REQUIRED" /> <tx:method name="set*" propagation="REQUIRED" /> <tx:method name="add*" propagation="REQUIRED" /> <tx:method name="create*" propagation="REQUIRED" /> <tx:method name="insert*" propagation="REQUIRED" /> <tx:method name="update*" propagation="REQUIRED" /> <tx:method name="merge*" propagation="REQUIRED" /> <tx:method name="del*" propagation="REQUIRED" /> <tx:method name="remove*" propagation="REQUIRED" /> <tx:method name="put*" propagation="REQUIRED" /> <tx:method name="use*" propagation="REQUIRED" /> <tx:method name="register*" propagation="REQUIRED" /> <tx:method name="search*" propagation="REQUIRED" /> <tx:method name="get*" propagation="REQUIRED" /> <tx:method name="cancel*" propagation="REQUIRED" /> <tx:method name="login*" propagation="REQUIRED" read-only="true" /> <tx:method name="count*" propagation="REQUIRED" read-only="true" /> <tx:method name="find*" propagation="REQUIRED" read-only="true" /> <tx:method name="list*" propagation="REQUIRED" read-only="true" /> <!-- <tx:method name="*" read-only="true" /> --> </tx:attributes> </tx:advice> <!-- 那些类的哪些方法参与事务 --> <aop:config> <aop:pointcut id="allManagerMethod" expression="execution(public * com.gp.demo.service.*.*(..))" /> <aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice" /> </aop:config> <mvc:annotation-driven /> <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver" /> <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean" /> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" /> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="order" value="0" /> <property name="cacheSeconds" value="0" /> <property name="webBindingInitializer"> <bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer"> </bean> </property> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter" /> <bean class="org.springframework.http.converter.StringHttpMessageConverter" /> <bean class="org.springframework.http.converter.FormHttpMessageConverter" /> <bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter" /> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" /> </list> </property> </bean> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean> <!-- 定时邮件 --> <!-- end 定时邮件 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 设置上传文件的最大尺寸为100MB --> <property name="maxUploadSize"> <value>104857600</value> </property> </bean> <!-- SpringMVC在超出上传文件限制时,会抛出org.springframework.web.multipart.MaxUploadSizeExceededException --> <!-- 该异常是SpringMVC在检查上传的文件信息时抛出来的,而且此时还没有进入到Controller方法中 --> <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <!-- 遇到MaxUploadSizeExceededException异常时,自动跳转到/WEB-INF/jsp/error_fileupload.jsp页面 --> <prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">error_fileupload</prop> </props> </property> </bean> <!-- <bean id="Obtainemile" class="com.wiwoworld.oa.web.NoticeController.Obtainemile" scope="singleton" init-method="startThread"></bean> <bean id="affordVisit" class="com.xmpp.manager.MangerThread.visitDatabase" scope="singleton" init-method="startThread"></bean> --> <!-- <bean id="lunxunqidong" class="com.wiwoworld.oa.web.NoticeController" scope="singleton" init-method="searchMailnotice"></bean> --> </beans>

ActionContext.getContext().getSession().put()放在哪了

书上说getSession()返回的是一个摸拟HttpSession的Map,那使用put方法不是将这个key-value放在这个Map中了吗,并不是放在真正的session对象中了吗?

shiro整合ehcache时报错

shiro整合ehcache application-shiro.xml中相关配置: ``` <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> <property name="realm" ref="userRealm" /> <!-- 注入缓存管理器 --> <property name="cacheManager" ref="cacheManager"/> <!-- 注入session管理器 --> <property name="sessionManager" ref="sessionManager" /> </bean> <!-- 缓存管理器 --> <bean id="cacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager"> <property name="cacheManagerConfigFile" value="classpath:pvf-shiro-ehcache.xml"/> </bean> ``` pvf-shiro-ehcache.xml ``` <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false"> <!--diskStore:缓存数据持久化的目录 地址 --> <diskStore path="java.io.tmpdir"/> <defaultCache maxElementsInMemory="1000" maxElementsOnDisk="10000000" eternal="false" overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="120" timeToLiveSeconds="120" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU"> </defaultCache> </ehcache> ``` 项目启动时报错: Caused by: java.lang.IllegalStateException: Cannot convert value of type [org.apache.shiro.cache.ehcache.EhCacheManager] to required type [net.sf.ehcache.CacheManager] for property 'cacheManager': no matching editors or conversion strategy found at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:231) at org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:447) ... 53 more

org.apache.ibatis.exceptions.PersistenceException怎么解决?

调试一个开源项目出现报错,项目所有sql都会报空指针异常 ``` 严重: Servlet.service() for servlet [springMvc] in context with path [/mallapp] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.lang.NullPointerException ### The error may exist in file [H:\WorksSpace\.metadata\.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\mallapp\WEB-INF\classes\mybatis\category\CategoryMapper.xml] ### The error may involve CategoryMapper.listAll-Inline ### The error occurred while setting parameters ### SQL: select category_name, category_img, sort, category_id, super_id from shop_category where super_id =? order by sort ### Cause: java.lang.NullPointerException] with root cause java.lang.NullPointerException at org.apache.ibatis.type.BaseTypeHandler.setParameter(BaseTypeHandler.java:43) at org.apache.ibatis.scripting.defaults.DefaultParameterHandler.setParameters(DefaultParameterHandler.java:81) at org.apache.ibatis.executor.statement.PreparedStatementHandler.parameterize(PreparedStatementHandler.java:80) at org.apache.ibatis.executor.statement.RoutingStatementHandler.parameterize(RoutingStatementHandler.java:61) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) at com.sun.proxy.$Proxy84.parameterize(Unknown Source) at org.apache.ibatis.executor.ReuseExecutor.prepareStatement(ReuseExecutor.java:79) at org.apache.ibatis.executor.ReuseExecutor.doQuery(ReuseExecutor.java:56) at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:267) at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:137) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:96) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:77) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:108) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:102) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:358) at com.sun.proxy.$Proxy74.selectList(Unknown Source) at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:198) at com.yq.dao.DaoSupport.findForList(DaoSupport.java:118) at com.yq.service.category.impl.CategoryService.listAll(CategoryService.java:62) at com.yq.service.category.impl.CategoryService$$FastClassBySpringCGLIB$$51d95cd7.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:711) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:644) at com.yq.service.category.impl.CategoryService$$EnhancerBySpringCGLIB$$c2253a36.listAll(<generated>) at com.yq.controller.category.CategoryController.list(CategoryController.java:80) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:690) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852) at javax.servlet.http.HttpServlet.service(HttpServlet.java:624) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) ``` CategoryMapper.xml ``` <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="CategoryMapper"> <!--表名 --> <sql id="tableName"> shop_category </sql> <!-- 字段 --> <sql id="Field"> category_name, category_img, sort, category_id, super_id </sql> <!-- 字段值 --> <sql id="FieldValue"> #{category_name}, #{category_img}, #{sort}, #{category_id}, #{super_id} </sql> <!-- 新增--> <insert id="save" parameterType="pd"> insert into <include refid="tableName"></include> ( <include refid="Field"></include> ) values ( <include refid="FieldValue"></include> ) </insert> <!-- 删除--> <delete id="delete" parameterType="pd"> delete from <include refid="tableName"></include> where category_id = #{category_id} </delete> <!-- 修改 --> <update id="edit" parameterType="pd"> update <include refid="tableName"></include> set category_name = #{category_name}, category_img = #{category_img}, sort = #{sort} where category_id = #{category_id} </update> <!-- 通过ID获取数据 --> <select id="findById" parameterType="pd" resultType="pd"> select <include refid="Field"></include> from <include refid="tableName"></include> where category_id = #{category_id} </select> <!-- 列表 --> <select id="datalistPage" parameterType="page" resultType="pd"> select <include refid="Field"></include> from <include refid="tableName"></include> where 1=1 and super_id =#{pd.super_id} order by sort </select> <!-- 列表(全部) --> <select id="listAll" parameterType="pd" resultType="pd"> select <include refid="Field"></include> from <include refid="tableName"></include> where super_id =#{super_id} order by sort </select> <!-- 批量删除 --> <delete id="deleteAll" parameterType="String"> delete from <include refid="tableName"></include> where category_id in <foreach item="item" index="index" collection="array" open="(" separator="," close=")"> #{item} </foreach> </delete> </mapper> ``` mybatis-config.xml ``` <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL Map Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <setting name="cacheEnabled" value="true" /><!-- 全局映射器启用缓存 --> <setting name="useGeneratedKeys" value="true" /> <setting name="defaultExecutorType" value="REUSE" /> <!-- 打印查询语句 --> <setting name="logImpl" value="LOG4J" /> </settings> <typeAliases> <typeAlias type="org.change.entity.system.User" alias="User"/> <typeAlias type="org.change.entity.system.Role" alias="Role"/> <typeAlias type="org.change.entity.system.Menu" alias="Menu"/> <typeAlias type="org.change.entity.system.Dictionaries" alias="Dictionaries"/> <typeAlias type="org.change.entity.system.Department" alias="Department"/> <typeAlias type="org.change.util.PageData" alias="pd"/> <!-- 分页 --> <typeAlias type="org.change.entity.Page" alias="Page"/> </typeAliases> <plugins> <plugin interceptor="org.change.plugin.PagePlugin"> <property name="dialect" value="mysql"/> <property name="pageSqlId" value=".*listPage.*"/> </plugin> </plugins> </configuration> ``` DAO.java ``` public interface DAO { /** * 保存对象 * @param str * @param obj * @return * @throws Exception */ public Object save(String str, Object obj) throws Exception; /** * 修改对象 * @param str * @param obj * @return * @throws Exception */ public Object update(String str, Object obj) throws Exception; /** * 删除对象 * @param str * @param obj * @return * @throws Exception */ public Object delete(String str, Object obj) throws Exception; /** * 查找对象 * @param str * @param obj * @return * @throws Exception */ public Object findForObject(String str, Object obj) throws Exception; /** * 查找对象 * @param str * @param obj * @return * @throws Exception */ public Object findForList(String str, Object obj) throws Exception; /** * 查找对象封装成Map * @param s * @param obj * @return * @throws Exception */ public Object findForMap(String sql, Object obj, String key , String value) throws Exception; } ``` DaoSupport.java ``` @Repository("daoSupport") public class DaoSupport implements DAO { @Resource(name = "sqlSessionTemplate") private SqlSessionTemplate sqlSessionTemplate; /** * 保存对象 * @param str * @param obj * @return * @throws Exception */ public Object save(String str, Object obj) throws Exception { return sqlSessionTemplate.insert(str, obj); } /** * 批量更新 * @param str * @param obj * @return * @throws Exception */ public Object batchSave(String str, List objs )throws Exception{ return sqlSessionTemplate.insert(str, objs); } /** * 修改对象 * @param str * @param obj * @return * @throws Exception */ public Object update(String str, Object obj) throws Exception { return sqlSessionTemplate.update(str, obj); } /** * 批量更新 * @param str * @param obj * @return * @throws Exception */ public void batchUpdate(String str, List objs )throws Exception{ SqlSessionFactory sqlSessionFactory = sqlSessionTemplate.getSqlSessionFactory(); //批量执行器 SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH,false); try{ if(objs!=null){ for(int i=0,size=objs.size();i<size;i++){ sqlSession.update(str, objs.get(i)); } sqlSession.flushStatements(); sqlSession.commit(); sqlSession.clearCache(); } }finally{ sqlSession.close(); } } /** * 批量更新 * @param str * @param obj * @return * @throws Exception */ public Object batchDelete(String str, List objs )throws Exception{ return sqlSessionTemplate.delete(str, objs); } /** * 删除对象 * @param str * @param obj * @return * @throws Exception */ public Object delete(String str, Object obj) throws Exception { return sqlSessionTemplate.delete(str, obj); } /** * 查找对象 * @param str * @param obj * @return * @throws Exception */ public Object findForObject(String str, Object obj) throws Exception { return sqlSessionTemplate.selectOne(str, obj); } /** * 查找对象 * @param str * @param obj * @return * @throws Exception */ public Object findForList(String str, Object obj) throws Exception { return sqlSessionTemplate.selectList(str, obj); } public Object findForMap(String str, Object obj, String key, String value) throws Exception { return sqlSessionTemplate.selectMap(str, obj, key); } } ``` spring.xml ``` <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd "> <!-- 配置事务管理器 --> <bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties"/> </bean> <!-- 阿里 druid数据库连接池 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> <!-- 数据库基本信息配置 --> <property name="driverClassName" value="${driverClassName}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> <property name="filters" value="${filters}" /> <!-- 最大并发连接数 --> <property name="maxActive" value="${maxActive}" /> <!-- 初始化连接数量 --> <property name="initialSize" value="${initialSize}" /> <!-- 配置获取连接等待超时的时间 --> <property name="maxWait" value="${maxWait}" /> <!-- 最小空闲连接数 --> <property name="minIdle" value="${minIdle}" /> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis}" /> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="${minEvictableIdleTimeMillis}" /> <property name="validationQuery" value="${validationQuery}" /> <property name="testWhileIdle" value="${testWhileIdle}" /> <property name="testOnBorrow" value="${testOnBorrow}" /> <property name="testOnReturn" value="${testOnReturn}" /> <property name="maxOpenPreparedStatements" value="${maxOpenPreparedStatements}" /> <!-- 打开removeAbandoned功能 --> <property name="removeAbandoned" value="${removeAbandoned}" /> <!-- 1800秒,也就是30分钟 --> <property name="removeAbandonedTimeout" value="${removeAbandonedTimeout}" /> <!-- 关闭abanded连接时输出错误日志 --> <property name="logAbandoned" value="${logAbandoned}" /> </bean> <!-- 启用注解 --> <context:annotation-config /> <!-- 启动组件扫描,排除@Controller组件,该组件由SpringMVC配置文件扫描 --> <context:component-scan base-package="com"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan> <!-- 注解方式配置事务--> <!-- <tx:annotation-driven transaction-manager="transactionManager" /> --> <!-- 拦截器方式配置事务 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="delete*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/> <tx:method name="insert*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" /> <tx:method name="update*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" /> <tx:method name="save*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" /> <tx:method name="*" propagation="SUPPORTS"/> </tx:attributes> </tx:advice> <aop:aspectj-autoproxy proxy-target-class="true"/> <!-- 事物处理 --> <aop:config> <aop:pointcut id="pc" expression="execution(* com.*.service..*(..))" /> <aop:advisor pointcut-ref="pc" advice-ref="txAdvice" /> </aop:config> <!-- 配置mybatis --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:mybatis-config.xml"></property> <!-- mapper扫描 --> <property name="mapperLocations" value="classpath:mybatis/*/*.xml"></property> </bean> <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg ref="sqlSessionFactory" /> </bean> </beans> ```

能写一个Util将下面json格式数据info.json,用io读完存到redis缓存中??在线等!!!大概有100w条数据

{"RECORDS"=>[{"id"=>1000000059, "account"=>"0040140072", "content"=>[{"SH600345"=>{"IR"=>"", "LT"=>"20.8", "GT"=>"20.83", "DR"=>"", "interval"=>"12"}}, {"SH600837"=>{"IR"=>"1", "LT"=>"16.18", "GT"=>"16.18", "DR"=>"1", "interval"=>"12"}}, {"SZ000886"=>{"IR"=>"", "LT"=>"6.41", "GT"=>"6.43", "DR"=>"", "interval"=>"12"}}, {"SZ300509"=>{"IR"=>"", "LT"=>"87.45", "GT"=>"87.65", "DR"=>"", "interval"=>"12"}}, {"SZ300076"=>{"IR"=>"", "LT"=>"15.40", "GT"=>"15.40", "DR"=>"", "interval"=>"12"}}, {"SZ002452"=>{"IR"=>"", "LT"=>"11.90", "GT"=>"12.15", "DR"=>"", "interval"=>"12"}}, {"SZ300515"=>{"IR"=>"", "LT"=>"61.89", "GT"=>"61.91", "DR"=>"", "interval"=>"12"}}, {"SH603861"=>{"IR"=>"", "LT"=>"40.90", "GT"=>"41.23", "DR"=>"", "interval"=>"12"}}, {"SH600466"=>{"IR"=>"", "LT"=>"8.06", "GT"=>"8.08", "DR"=>"", "interval"=>"12"}}, {"SZ002127"=>{"IR"=>"", "LT"=>"10.63", "GT"=>"10.66", "DR"=>"", "interval"=>"12"}}], "cid"=>"8ffa3310da8101a5b2ab1c47a039a77c", "updatetime"=>"2017-02-10 10:29:51"}, {"id"=>1000000062, "account"=>"0040127361", "content"=>[{"SZ002032"=>{"IR"=>"3.32", "DR"=>"3.42", "interval"=>"12", "GG"=>"1", "HS"=>"77", "GTZS"=>"2", "LTZS"=>"3"}}, {"SZ002881"=>{"GT"=>"12.91", "interval"=>"12", "GG"=>"0"}}, {"SZ002881"=>{"interval"=>"12", "GG"=>"0"}}, {"SZ300368"=>{"GT"=>"5", "LT"=>"6", "interval"=>"12", "GG"=>"0"}}, {"SZ300368"=>{"GT"=>"9", "LT"=>"7", "interval"=>"12", "GG"=>"0"}}, {"SZ300368"=>{"IR"=>"3.12", "DR"=>"2.18", "interval"=>"12", "GG"=>"0"}}, {"SH600004"=>{"IR"=>"0.20", "DR"=>"0.25", "interval"=>"12", "GG"=>"0"}}, {"SH600837"=>{"GT"=>"1", "LT"=>"16", "IR"=>"0.10", "DR"=>"1.05", "interval"=>"12", "GG"=>"0"}}, {"SH600876"=>{"IR"=>"2", "interval"=>"12", "GG"=>"0"}}, {"SH601519"=>{"GT"=>"9", "LT"=>"8", "IR"=>"3.13", "DR"=>"5.11", "interval"=>"0", "GG"=>"0"}}, {"SH603227"=>{"GT"=>"7", "LT"=>"6.9", "interval"=>"12", "GG"=>"0"}}, {"SH603227"=>{"GT"=>"6.92", "LT"=>"6.91", "interval"=>"12", "GG"=>"0"}}], "cid"=>"6a9d921606967559337ede0e64f3be93", "updatetime"=>"2017-12-26 15:45:36"}]}

内存溢出问题,不知道是哪里出现的问题,怀疑是druid连接池使用不当,求大佬帮忙。

昨晚上出现了两次内存溢出,找不到复现的方法,每次出现内存溢出都不一样,两次都是先出现"Disk Write of"写入磁盘失败错误,然后就是druid获取连接失败,然后报OOM异常,接着linux服务器cpu使用率上涨,一直涨到百分之600满(服务器是6核CPU),第二次的日志看跟第一次出现类似;下面是第一次 日志 2020-03-16 17:39:47 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_ca92_processor failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:39:47 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_ca92_processor failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:40:36 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584351636324","msgId":"598577930","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":16777400,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:40:36 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:40:36 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:40:36 INFO [MQTTProtocolHandler.java:89] - 接收到返回协议:{"topic":"reControlProtocol/reApplyBackPicCtrl/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07/00:00:01:A0:43:74","result":"success","timeStamp":"1584351636324","msgId":"598577930","msg":"成功"} 2020-03-16 17:41:36 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584351696340","msgId":"480724569","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":16777400,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:41:36 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:41:36 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:41:36 INFO [MQTTProtocolHandler.java:89] - 接收到返回协议:{"topic":"reControlProtocol/reApplyBackPicCtrl/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07/00:00:01:A0:43:74","result":"success","timeStamp":"1584351696340","msgId":"480724569","msg":"成功"} 2020-03-16 17:42:36 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584351756356","msgId":"2008015594","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":33554616,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:42:36 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:42:36 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:42:36 INFO [MQTTProtocolHandler.java:89] - 接收到返回协议:{"topic":"reControlProtocol/reApplyBackPicCtrl/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07/00:00:01:A0:43:74","result":"success","timeStamp":"1584351756356","msgId":"2008015594","msg":"成功"} 2020-03-16 17:43:36 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584351816372","msgId":"1754653907","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":184,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:43:36 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:43:36 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:43:36 INFO [MQTTProtocolHandler.java:89] - 接收到返回协议:{"topic":"reControlProtocol/reApplyBackPicCtrl/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07/00:00:01:A0:43:74","result":"success","timeStamp":"1584351816372","msgId":"1754653907","msg":"成功"} 2020-03-16 17:44:37 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-03-16 17:44:38 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-03-16 17:44:38 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-03-16 17:44:41 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584351881843","msgId":"327484943","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":16777400,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:44:41 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:44:43 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:44:48 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-03-16 17:44:48 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-03-16 17:44:49 INFO [MQTTProtocolHandler.java:89] - 接收到返回协议:{"topic":"reControlProtocol/reApplyBackPicCtrl/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07/00:00:01:A0:43:74","result":"success","timeStamp":"1584351881843","msgId":"327484943","msg":"成功"} 2020-03-16 17:45:02 ERROR [DruidDataSource.java:2469] - create connection SQLException, url: jdbc:mysql://localhost:55060/mcs?useUnicode=true&characterEncoding=utf-8, errorCode 0, state S1000 java.sql.SQLException: java.lang.OutOfMemoryError: PermGen space at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:878) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:874) at com.mysql.jdbc.Util.handleNewInstance(Util.java:443) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:385) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:323) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1513) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1578) at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2466) Caused by: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:45:55 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:45:55 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584351955374","msgId":"690664616","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":33554616,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:45:55 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:46:00 INFO [MQTTProtocolHandler.java:89] - 接收到返回协议:{"topic":"reControlProtocol/reApplyBackPicCtrl/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07/00:00:01:A0:43:74","result":"success","timeStamp":"1584351955374","msgId":"690664616","msg":"成功"} 2020-03-16 17:47:13 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584352033984","msgId":"1701533843","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":184,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:47:13 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:47:14 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:47:19 INFO [MQTTProtocolHandler.java:89] - 接收到返回协议:{"topic":"reControlProtocol/reApplyBackPicCtrl/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07/00:00:01:A0:43:74","result":"success","timeStamp":"1584352033984","msgId":"1701533843","msg":"成功"} 2020-03-16 17:48:48 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584352128999","msgId":"1984150795","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":16777400,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:48:50 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:48:50 INFO [MQTTProtocolHandler.java:89] - 接收到返回协议:{"topic":"reControlProtocol/reApplyBackPicCtrl/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07/00:00:01:A0:43:74","result":"success","timeStamp":"1584352128999","msgId":"1984150795","msg":"成功"} 2020-03-16 17:48:51 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:50:00 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584352200578","msgId":"1977525065","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":33554616,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:50:01 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:50:03 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:50:04 INFO [MQTTProtocolHandler.java:89] - 接收到返回协议:{"topic":"reControlProtocol/reApplyBackPicCtrl/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07/00:00:01:A0:43:74","result":"success","timeStamp":"1584352200578","msgId":"1977525065","msg":"成功"} 2020-03-16 17:51:20 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584352280657","msgId":"1863876211","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":184,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:51:21 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:51:22 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:51:28 INFO [MQTTProtocolHandler.java:89] - 接收到返回协议:{"topic":"reControlProtocol/reApplyBackPicCtrl/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07/00:00:01:A0:43:74","result":"success","timeStamp":"1584352280657","msgId":"1863876211","msg":"成功"} 2020-03-16 17:52:47 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:52:50 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:52:55 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584352373108","msgId":"628094041","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":16777400,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:53:03 INFO [MQTTProtocolHandler.java:89] - 接收到返回协议:{"topic":"reControlProtocol/reApplyBackPicCtrl/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07/00:00:01:A0:43:74","result":"success","timeStamp":"1584352373108","msgId":"628094041","msg":"成功"} 2020-03-16 17:54:00 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584352439640","msgId":"72219615","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":33554616,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:54:00 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:54:03 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:54:09 INFO [MQTTProtocolHandler.java:89] - 接收到返回协议:{"topic":"reControlProtocol/reApplyBackPicCtrl/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07/00:00:01:A0:43:74","result":"success","timeStamp":"1584352439640","msgId":"72219615","msg":"成功"} 2020-03-16 17:55:23 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-03-16 17:55:23 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-03-16 17:55:25 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:55:26 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:55:26 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584352526466","msgId":"1473614692","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":184,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:55:36 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-03-16 17:55:41 ERROR [DruidDataSource.java:2469] - create connection SQLException, url: jdbc:mysql://localhost:55060/mcs?useUnicode=true&characterEncoding=utf-8, errorCode 0, state S1000 java.sql.SQLException: java.lang.OutOfMemoryError: PermGen space at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:878) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:874) at com.mysql.jdbc.Util.handleNewInstance(Util.java:443) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:385) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:323) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1513) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1578) at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2466) Caused by: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:55:42 INFO [MQTTProtocolHandler.java:89] - 接收到返回协议:{"topic":"reControlProtocol/reApplyBackPicCtrl/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07/00:00:01:A0:43:74","result":"success","timeStamp":"1584352526466","msgId":"1473614692","msg":"成功"} 2020-03-16 17:55:48 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-03-16 17:56:00 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-03-16 17:56:00 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-03-16 17:56:02 ERROR [DruidDataSource.java:2469] - create connection SQLException, url: jdbc:mysql://localhost:55060/mcs?useUnicode=true&characterEncoding=utf-8, errorCode 0, state S1000 java.sql.SQLException: java.lang.OutOfMemoryError: PermGen space at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:878) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:874) at com.mysql.jdbc.Util.handleNewInstance(Util.java:443) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:385) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:323) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1513) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1578) at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2466) Caused by: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:56:05 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-03-16 17:56:06 WARN [SqlExceptionHelper.java:143] - SQL Error: 0, SQLState: null 2020-03-16 17:56:06 ERROR [SqlExceptionHelper.java:144] - wait millis 5488, active 8, maxActive 40, creating 0 2020-03-16 17:56:14 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-03-16 17:56:27 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-03-16 17:56:29 ERROR [DruidDataSource.java:2469] - create connection SQLException, url: jdbc:mysql://localhost:55060/mcs?useUnicode=true&characterEncoding=utf-8, errorCode 0, state S1000 java.sql.SQLException: java.lang.OutOfMemoryError: PermGen space at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:878) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:874) at com.mysql.jdbc.Util.handleNewInstance(Util.java:443) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:385) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:323) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1513) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1578) at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2466) Caused by: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:56:37 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:56:37 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584352597266","msgId":"617319811","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":16777400,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:56:37 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:56:49 INFO [MQTTProtocolHandler.java:89] - 接收到返回协议:{"topic":"reControlProtocol/reApplyBackPicCtrl/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07/00:00:01:A0:43:74","result":"success","timeStamp":"1584352597266","msgId":"617319811","msg":"成功"} 2020-03-16 17:56:58 ERROR [DruidDataSource.java:2469] - create connection SQLException, url: jdbc:mysql://localhost:55060/mcs?useUnicode=true&characterEncoding=utf-8, errorCode 0, state S1000 java.sql.SQLException: java.lang.OutOfMemoryError: PermGen space at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:878) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:874) at com.mysql.jdbc.Util.handleNewInstance(Util.java:443) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:385) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:323) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1513) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1578) at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2466) Caused by: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:58:04 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584352684961","msgId":"1580436857","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":33554616,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:58:04 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:58:07 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:58:12 INFO [MQTTProtocolHandler.java:89] - 接收到返回协议:{"topic":"reControlProtocol/reApplyBackPicCtrl/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07/00:00:01:A0:43:74","result":"success","timeStamp":"1584352684961","msgId":"1580436857","msg":"成功"} 2020-03-16 17:58:17 ERROR [DruidDataSource.java:2469] - create connection SQLException, url: jdbc:mysql://localhost:55060/mcs?useUnicode=true&characterEncoding=utf-8, errorCode 0, state S1000 java.sql.SQLException: java.lang.OutOfMemoryError: PermGen space at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:878) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:874) at com.mysql.jdbc.Util.handleNewInstance(Util.java:443) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:385) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:323) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1513) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1578) at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2466) Caused by: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:58:38 ERROR [DruidDataSource.java:2469] - create connection SQLException, url: jdbc:mysql://localhost:55060/mcs?useUnicode=true&characterEncoding=utf-8, errorCode 0, state S1000 java.sql.SQLException: java.lang.OutOfMemoryError: PermGen space at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:878) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:874) at com.mysql.jdbc.Util.handleNewInstance(Util.java:443) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:385) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:323) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1513) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1578) at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2466) Caused by: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:59:06 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 然后这是第二次OOM异常的日志 2020-03-16 17:36:36 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584351396265","msgId":"2054492855","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":184,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:36:36 INFO [MQTTProtocolHandler.java:89] - 接收到返回协议:{"topic":"reControlProtocol/reApplyBackPicCtrl/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07/00:00:01:A0:43:74","result":"success","timeStamp":"1584351396265","msgId":"2054492855","msg":"成功"} 2020-03-16 17:37:36 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584351456281","msgId":"1912161758","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":16777400,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:37:36 INFO [MQTTProtocolHandler.java:89] - 接收到返回协议:{"topic":"reControlProtocol/reApplyBackPicCtrl/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07/00:00:01:A0:43:74","result":"success","timeStamp":"1584351456281","msgId":"1912161758","msg":"成功"} 2020-03-16 17:38:36 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584351516297","msgId":"476243815","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":33554616,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:38:36 INFO [MQTTProtocolHandler.java:89] - 接收到返回协议:{"topic":"reControlProtocol/reApplyBackPicCtrl/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07/00:00:01:A0:43:74","result":"success","timeStamp":"1584351516297","msgId":"476243815","msg":"成功"} 2020-03-16 17:39:36 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584351576307","msgId":"2004523303","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":184,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:39:36 INFO [MQTTProtocolHandler.java:89] - 接收到返回协议:{"topic":"reControlProtocol/reApplyBackPicCtrl/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07/00:00:01:A0:43:74","result":"success","timeStamp":"1584351576307","msgId":"2004523303","msg":"成功"} 2020-03-16 17:39:47 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_ca92_processor failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:39:47 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_ca92_processor failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:40:36 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584351636324","msgId":"598577930","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":16777400,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:40:36 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:40:36 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:40:36 INFO [MQTTProtocolHandler.java:89] - 接收到返回协议:{"topic":"reControlProtocol/reApplyBackPicCtrl/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07/00:00:01:A0:43:74","result":"success","timeStamp":"1584351636324","msgId":"598577930","msg":"成功"} 2020-03-16 17:41:36 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584351696340","msgId":"480724569","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":16777400,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:41:36 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:41:36 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:41:36 INFO [MQTTProtocolHandler.java:89] - 接收到返回协议:{"topic":"reControlProtocol/reApplyBackPicCtrl/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07/00:00:01:A0:43:74","result":"success","timeStamp":"1584351696340","msgId":"480724569","msg":"成功"} 2020-03-16 17:42:36 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584351756356","msgId":"2008015594","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":33554616,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:42:36 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:42:36 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:42:36 INFO [MQTTProtocolHandler.java:89] - 接收到返回协议:{"topic":"reControlProtocol/reApplyBackPicCtrl/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07/00:00:01:A0:43:74","result":"success","timeStamp":"1584351756356","msgId":"2008015594","msg":"成功"} 2020-03-16 17:43:36 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584351816372","msgId":"1754653907","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":184,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:43:36 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:43:36 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:43:36 INFO [MQTTProtocolHandler.java:89] - 接收到返回协议:{"topic":"reControlProtocol/reApplyBackPicCtrl/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07/00:00:01:A0:43:74","result":"success","timeStamp":"1584351816372","msgId":"1754653907","msg":"成功"} 2020-03-16 17:44:37 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-03-16 17:44:38 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-03-16 17:44:38 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-03-16 17:44:41 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584351881843","msgId":"327484943","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":16777400,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:44:41 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:44:43 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:44:48 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-03-16 17:44:48 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-03-16 17:44:49 INFO [MQTTProtocolHandler.java:89] - 接收到返回协议:{"topic":"reControlProtocol/reApplyBackPicCtrl/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07/00:00:01:A0:43:74","result":"success","timeStamp":"1584351881843","msgId":"327484943","msg":"成功"} 2020-03-16 17:45:02 ERROR [DruidDataSource.java:2469] - create connection SQLException, url: jdbc:mysql://localhost:55060/mcs?useUnicode=true&characterEncoding=utf-8, errorCode 0, state S1000 java.sql.SQLException: java.lang.OutOfMemoryError: PermGen space at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:878) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:874) at com.mysql.jdbc.Util.handleNewInstance(Util.java:443) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:385) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:323) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1513) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1578) at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2466) Caused by: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:45:55 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:45:55 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584351955374","msgId":"690664616","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":33554616,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:45:55 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:46:00 INFO [MQTTProtocolHandler.java:89] - 接收到返回协议:{"topic":"reControlProtocol/reApplyBackPicCtrl/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07/00:00:01:A0:43:74","result":"success","timeStamp":"1584351955374","msgId":"690664616","msg":"成功"} 2020-03-16 17:47:13 INFO [BaseHandler.java:42] - 向解码器推送协议{"topic":"controlProtocol/applyBackPicCtrl/00:00:01:A0:43:74/1c79b3b3-6020-4af7-97ec-a1abd5f0cc07","timeStamp":"1584352033984","msgId":"1701533843","videoEnable":0,"picList":[{"level":0,"imageEndY":900,"imageEndX":1600,"blockEndY":900,"blockEndX":1600,"blockStartY":180,"imageStartX":320,"picId":184,"imageStartY":180,"blockStartX":320}]} 2020-03-16 17:47:13 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 2020-03-16 17:47:14 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: PermGen space 这是我项目的druid配置 <!--druid连接池 --> <beans profile="production"> <context:property-placeholder ignore-unresolvable="true" location="classpath:/jdbc.properties" /> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="driverClassName" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <!-- 配置初始化大小、最小、最大 --> <property name="initialSize" value="1" /> <property name="minIdle" value="1" /> <property name="maxActive" value="40" /> <!-- 配置获取连接等待超时的时间 --> <property name="maxWait" value="5000" /> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="60000" /> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="300000" /> <property name="testWhileIdle" value="true" /> <!-- 这里建议配置为TRUE,防止取到的连接不可用 --> <property name="testOnBorrow" value="true" /> <property name="testOnReturn" value="false" /> <!-- 打开PSCache,并且指定每个连接上PSCache的大小 --> <property name="poolPreparedStatements" value="true" /> <property name="maxPoolPreparedStatementPerConnectionSize" value="20" /> <!-- 这里配置提交方式,默认就是TRUE,可以不用配置 --> <property name="defaultAutoCommit" value="true" /> </bean> </beans> 求大佬们帮解答。。。

使用自定义字段选择器列出来自缓存客户端的自定义资源

<div class="post-text" itemprop="text"> <p>I'm using the <a href="https://github.com/operator-framework/operator-sdk" rel="nofollow noreferrer">Operator SDK</a> to build a custom Kubernetes operator. I have created a custom resource definition and a controller using the respective Operator SDK commands:</p> <pre><code>operator-sdk add api --api-version example.com/v1alpha1 --kind=Example operator-sdk add controller --api-version example.com/v1alpha1 --kind=Example </code></pre> <p>Within the main reconciliation loop (for the example above, the auto-generated <code>ReconcileExample.Reconcile</code> method) I have some custom business logic that requires me to query the Kubernetes API for other objects of the same kind that have a certain field value. It's occurred to me that I might be able to use the default API client (that is provided by the controller) with a custom field selector:</p> <pre><code>func (r *ReconcileExample) Reconcile(request reconcile.Request) (reconcile.Result, error) { ctx := context.TODO() listOptions := client.ListOptions{ FieldSelector: fields.SelectorFromSet(fields.Set{"spec.someField": "someValue"}), Namespace: request.Namespace, } otherExamples := v1alpha1.ExampleList{} if err := r.client.List(ctx, &amp;listOptions, &amp;otherExamples); err != nil { return reconcile.Result{}, err } // do stuff... return reconcile.Result{}, nil } </code></pre> <p>When I run the operator and create a new <code>Example</code> resource, the operator fails with the following error message:</p> <pre><code>{"level":"info","ts":1563388786.825384,"logger":"controller_example","msg":"Reconciling Example","Request.Namespace":"default","Request.Name":"example-test"} {"level":"error","ts":1563388786.8255732,"logger":"kubebuilder.controller","msg":"Reconciler error","controller":"example-controller","request":"default/example-test","error":"Index with name field:spec.someField does not exist","stacktrace":"..."} </code></pre> <p>The most important part being</p> <blockquote> <p>Index with name field:spec.someField does not exist</p> </blockquote> <p>I've already searched <a href="https://github.com/operator-framework/operator-sdk/blob/master/doc/user/client.md" rel="nofollow noreferrer">the Operator SDK's documentation</a> on the default API client and learned a bit about the inner workings of the client, but no detailed explanation on this error or how to fix it.</p> <p><strong>What does this error message mean, and how can I create this missing index to efficiently list objects by this field value?</strong></p> </div>

多数据源spring 报java.lang.NullPointerException

在调用test.java的时候就会报 Exception in thread "main" java.lang.NullPointerException at cn.m_solution.mds.mds40.service.MDS40T01Service.getStudent(MDS40T01Service.java:23) at cn.m_solution.mds.mds40.service.test.main(test.java:13) 请大家一定帮忙,已经弄了两天了 [color=red]moduleContext-sys.xml:[/color] <?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <!-- +++++++++++++++++++++++++++++++++++++++++ --> <!-- 系统关联设定(必须) --> <!-- +++++++++++++++++++++++++++++++++++++++++ --> <bean id="ApplicationInfo" class="net.uniuvo.webridger.beans.ApplicationInfo"> <!-- 应用系统名称 --> <property name="applicationName" value="mds" /> <!-- 允许直接访问的Action列表 --> <property name="directAccessActions"> <list> <value>mds00.do</value> <value>/mds13.do</value> <value>/mds40.do</value> </list> </property> <!-- 禁止访问的扩展名列表 --> <property name="prohibitedExtensions"> <list> <value>js</value> <value>css</value> <value>jsp</value> <value>html</value> </list> </property> <!-- 禁止访问的扩展名中例外的文件列表 --> <property name="restrictionEscapeFiles"> <list> <value>/pages/index.html</value> <value>/pages/mds40/mds40s00.jsp</value> </list> </property> </bean> <!-- +++++++++++++++++++++++++++++++++++++++++ --> <!-- 数据库关联设定(必须) --> <!--此bean告诉Spring去哪找数据库的配置信息,因为有此Bean才出现下面用${}标记来取变量的语句--> <!-- +++++++++++++++++++++++++++++++++++++++++ --> <!-- 这里定义了ibatis的配置文件所在的位置 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"> <value>/WEB-INF/config/jdbc/jdbc.properties</value> </property> </bean> <!-- <bean id="DataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">--> <bean id="ds0" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName0}" /> <property name="url" value="${jdbc.url0}" /> <property name="username" value="${jdbc.username0}" /> <property name="password" value="${jdbc.password0}" /> </bean> <bean id="ds1" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName1}" /> <property name="url" value="${jdbc.url1}" /> <property name="username" value="${jdbc.username1}" /> <property name="password" value="${jdbc.password1}" /> </bean> <bean id="DataSource" class="net.uniuvo.webridger.dao.DynamicDataSource"> <property name= "targetDataSources"> <map key-type="java.lang.String"> <entry key="ds0" value-ref="ds0"/> <entry key="ds1" value-ref="ds1"/> </map> </property> <property name="defaultTargetDataSource" ref="ds0"/> </bean> <!--这里就声明了具体的事务 --> <bean id="attrSource" class="org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource"> <property name="properties"> <props> <prop key="execute*">PROPAGATION_REQUIRED</prop> <prop key="update*">PROPAGATION_REQUIRED</prop> <prop key="insert*">PROPAGATION_REQUIRED</prop> <prop key="delete*">PROPAGATION_REQUIRED</prop> <prop key="select*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> <!-- 定义事务处理拦截器 --> <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <property name="transactionManager"> <ref local="transactionManager" /> </property> <property name="transactionAttributeSource"> <ref local="attrSource" /> </property> </bean> <!-- 定义事务经理 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource"> <ref local="DataSource" /> </property> </bean> <!-- 自动代理 (业务处理Bean的Id) --> <bean id="autoProxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="interceptorNames"> <list> <idref bean="transactionInterceptor" /> </list> </property> <property name="beanNames"> <list> <value>*Service</value> </list> </property> </bean> <!-- iBATIS相关设定 --> <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="configLocation" value="/WEB-INF/sqlMapConfig.xml" /> <property name="dataSource"> <ref bean="DataSource" /> </property> <property name="lobHandler"> <ref local="oracleLobHandler" /> </property> </bean> <!-- 定义DAO --> <!-- 检索用DAO --> <bean id="queryDAO" class="net.uniuvo.webridger.dao.QueryDAOiBatisImpl"> <property name="sqlMapClient"> <ref local="sqlMapClient" /> </property> </bean> <!-- 追加 更新 删除用DAO --> <bean id="updateDAO" class="net.uniuvo.webridger.dao.UpdateDAOiBatisImpl"> <property name="sqlMapClient"> <ref local="sqlMapClient" /> </property> </bean> <!--根据sqlMapClien创建一个SqlMapClient模版类--> <bean id="SqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate"> <property name="sqlMapClient"> <ref bean="sqlMapClient" /> </property> </bean> <bean id="nativeJdbcExtractor" lazy-init="true" class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor" /> <bean id="oracleLobHandler" lazy-init="true" class="org.springframework.jdbc.support.lob.OracleLobHandler" > <property name="nativeJdbcExtractor"><ref local="nativeJdbcExtractor"/></property> </bean> <!-- 这里就是Facade了,注意,它有个parent属性,就是这个属性,使它的操作受到了事物管理的限制 <bean id="baseFacade" parent="baseTransactionProxy"> <property name="target"> <bean class="facade.BaseFacadeImpl"> 把DAO做为属性注入到Facade中去 <property name="proDao" ref="proDao" /> <property name="errDao" ref="errDao" /> <property name="userDao" ref="userDao" /> <property name="orderDao" ref="orderDao" /> </bean> </property> </bean> --> </beans> [color=red]sqlmapconfig.xml[/color] <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <typeHandler jdbcType="BLOB" javaType="[B" callback="org.springframework.orm.ibatis.support.BlobByteArrayTypeHandler"/> <typeHandler jdbcType="CLOB" javaType="java.lang.String" callback="org.springframework.orm.ibatis.support.ClobStringTypeHandler" /> <sqlMap resource="../config/sql/sqlMap-mds.xml" /> <sqlMap resource="../config/sql/sqlMap-mds00.xml" /> <sqlMap resource="../config/sql/sqlMap-mds01.xml" /> <sqlMap resource="../config/sql/sqlMap-mds02.xml" /> <sqlMap resource="../config/sql/sqlMap-mds03.xml" /> <sqlMap resource="../config/sql/sqlMap-mds04.xml" /> <sqlMap resource="../config/sql/sqlMap-mds10.xml" /> <sqlMap resource="../config/sql/sqlMap-mds11.xml" /> <sqlMap resource="../config/sql/sqlMap-mds12.xml" /> <sqlMap resource="../config/sql/sqlMap-mds13.xml" /> <sqlMap resource="../config/sql/sqlMap-mds20.xml" /> <sqlMap resource="../config/sql/sqlMap-mds21.xml" /> <sqlMap resource="../config/sql/sqlMap-mds22.xml" /> <sqlMap resource="../config/sql/sqlMap-mds23.xml" /> <sqlMap resource="../config/sql/sqlMap-mds30.xml" /> <sqlMap resource="../config/sql/sqlMap-mds31.xml" /> <sqlMap resource="../config/sql/sqlMap-mds32.xml" /> <sqlMap resource="../config/sql/sqlMap-mds33.xml" /> <sqlMap resource="../config/sql/sqlMap-mds40.xml" /> </sqlMapConfig> sqlMap-mds40.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd"> <sqlMap > <select id="sql.mds40.001" parameterClass="cn.m_solution.mds.mds40.form.MDS40Form" resultClass="cn.m_solution.mds.mds40.form.MDS40Form"> select syr from vehicle where hpzl = #hpzl# and hphm = #hphm# </select> </sqlMap> MDS40T01Service package cn.m_solution.mds.mds40.service; import org.springframework.orm.ibatis.SqlMapClientTemplate; import cn.m_solution.mds.mds40.form.MDS40Form; public class MDS40T01Service { SqlMapClientTemplate sqlMapClientTemplate; public MDS40Form getStudent(){ MDS40Form form40 = new MDS40Form(); sqlMapClientTemplate.queryForObject("sql.mds40.001",form40); return form40; } /** * @return the sqlMapClientTemplate */ public SqlMapClientTemplate getSqlMapClientTemplate() { return sqlMapClientTemplate; } /** * @param sqlMapClientTemplate the sqlMapClientTemplate to set */ public void setSqlMapClientTemplate(SqlMapClientTemplate sqlMapClientTemplate) { this.sqlMapClientTemplate = sqlMapClientTemplate; } } test.java package cn.m_solution.mds.mds40.service; import org.springframework.jdbc.core.support.JdbcDaoSupport; public class test extends JdbcDaoSupport{ /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub MDS40T01Service s = new MDS40T01Service(); s.getStudent(); } }

C/C++学习指南全套教程

C/C++学习的全套教程,从基本语法,基本原理,到界面开发、网络开发、Linux开发、安全算法,应用尽用。由毕业于清华大学的业内人士执课,为C/C++编程爱好者的教程。

定量遥感中文版 梁顺林著 范闻捷译

这是梁顺林的定量遥感的中文版,由范闻捷等翻译的,是电子版PDF,解决了大家看英文费时费事的问题,希望大家下载看看,一定会有帮助的

YOLOv3目标检测实战:训练自己的数据集

YOLOv3是一种基于深度学习的端到端实时目标检测方法,以速度快见长。本课程将手把手地教大家使用labelImg标注和使用YOLOv3训练自己的数据集。课程分为三个小项目:足球目标检测(单目标检测)、梅西目标检测(单目标检测)、足球和梅西同时目标检测(两目标检测)。 本课程的YOLOv3使用Darknet,在Ubuntu系统上做项目演示。包括:安装Darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 Darknet是使用C语言实现的轻型开源深度学习框架,依赖少,可移植性好,值得深入探究。 除本课程《YOLOv3目标检测实战:训练自己的数据集》外,本人推出了有关YOLOv3目标检测的系列课程,请持续关注该系列的其它课程视频,包括: 《YOLOv3目标检测实战:交通标志识别》 《YOLOv3目标检测:原理与源码解析》 《YOLOv3目标检测:网络模型改进方法》 敬请关注并选择学习!

sql语句 异常 Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your

在我们开发的工程中,有时候会报 [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ------ 这种异常 不用多想,肯定是我们的sql语句出现问题,下面...

浪潮集团 往年的软件类 笔试题 比较详细的哦

浪潮集团 往年的软件类 笔试题 比较详细的哦

2019 AI开发者大会

2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会。多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者齐聚北京,进行技术解读和产业论证。我们不空谈口号,只谈技术,诚挚邀请AI业内人士一起共铸人工智能新篇章!

I2c串口通信实现加速度传感器和FPGA的交流

此代码能实现加速度传感器与FPGA之间的交流,从而测出运动物体的加速度。

Python可以这样学(第一季:Python内功修炼)

董付国系列教材《Python程序设计基础》、《Python程序设计(第2版)》、《Python可以这样学》配套视频,讲解Python 3.5.x和3.6.x语法、内置对象用法、选择与循环以及函数设计与使用、lambda表达式用法、字符串与正则表达式应用、面向对象编程、文本文件与二进制文件操作、目录操作与系统运维、异常处理结构。

微信公众平台开发入门

本套课程的设计完全是为初学者量身打造,课程内容由浅入深,课程讲解通俗易懂,代码实现简洁清晰。通过本课程的学习,学员能够入门微信公众平台开发,能够胜任企业级的订阅号、服务号、企业号的应用开发工作。 通过本课程的学习,学员能够对微信公众平台有一个清晰的、系统性的认识。例如,公众号是什么,它有什么特点,它能做什么,怎么开发公众号。 其次,通过本课程的学习,学员能够掌握微信公众平台开发的方法、技术和应用实现。例如,开发者文档怎么看,开发环境怎么搭建,基本的消息交互如何实现,常用的方法技巧有哪些,真实应用怎么开发。

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

eclipseme 1.7.9

eclipse 出了新的eclipseme插件,官方有下载,但特慢,我都下了大半天(可能自己网速差)。有急需要的朋友可以下哦。。。

Spring Boot -01- 快速入门篇(图文教程)

Spring Boot -01- 快速入门篇 今天开始不断整理 Spring Boot 2.0 版本学习笔记,大家可以在博客看到我的笔记,然后大家想看视频课程也可以到【慕课网】手机 app,去找【Spring Boot 2.0 深度实践】的课程,令人开心的是,课程完全免费! 什么是 Spring Boot? Spring Boot 是由 Pivotal 团队提供的全新框架。Spring Boot...

HoloLens2开发入门教程

本课程为HoloLens2开发入门教程,讲解部署开发环境,安装VS2019,Unity版本,Windows SDK,创建Unity项目,讲解如何使用MRTK,编辑器模拟手势交互,打包VS工程并编译部署应用到HoloLens上等。

最简单的倍频verilog程序(Quartus II)

一个工程文件 几段简单的代码 一个输入一个输出(50Mhz倍频到100Mhz)

计算机组成原理实验教程

西北工业大学计算机组成原理实验课唐都仪器实验帮助,同实验指导书。分为运算器,存储器,控制器,模型计算机,输入输出系统5个章节

4小时玩转微信小程序——基础入门与微信支付实战

这是一个门针对零基础学员学习微信小程序开发的视频教学课程。课程采用腾讯官方文档作为教程的唯一技术资料来源。杜绝网络上质量良莠不齐的资料给学员学习带来的障碍。 视频课程按照开发工具的下载、安装、使用、程序结构、视图层、逻辑层、微信小程序等几个部分组织课程,详细讲解整个小程序的开发过程

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

基于RSA通信密钥分发的加密通信

基于RSA通信密钥分发的加密通信,采用pycrypto中的RSA、AES模块实现

不同变质程度煤尘爆炸残留气体特征研究

为分析不同变质程度煤尘爆炸残留气体成分的特征规律,利用水平管道煤尘爆炸实验装置进行了贫瘦煤、肥煤、气煤、长焰煤4种不同变质程度的煤尘爆炸实验,研究了不同变质程度煤尘爆炸后气体残留物含量的差异,并对气体

设计模式(JAVA语言实现)--20种设计模式附带源码

课程亮点: 课程培训详细的笔记以及实例代码,让学员开始掌握设计模式知识点 课程内容: 工厂模式、桥接模式、组合模式、装饰器模式、外观模式、享元模式、原型模型、代理模式、单例模式、适配器模式 策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式 课程特色: 笔记设计模式,用笔记串连所有知识点,让学员从一点一滴积累,学习过程无压力 笔记标题采用关键字标识法,帮助学员更加容易记住知识点 笔记以超链接形式让知识点关联起来,形式知识体系 采用先概念后实例再应用方式,知识点深入浅出 提供授课内容笔记作为课后复习以及工作备查工具 部分图表(电脑PC端查看):

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

软件测试2小时入门

本课程内容系统、全面、简洁、通俗易懂,通过2个多小时的介绍,让大家对软件测试有个系统的理解和认识,具备基本的软件测试理论基础。 主要内容分为5个部分: 1 软件测试概述,了解测试是什么、测试的对象、原则、流程、方法、模型;&nbsp; 2.常用的黑盒测试用例设计方法及示例演示;&nbsp; 3 常用白盒测试用例设计方法及示例演示;&nbsp; 4.自动化测试优缺点、使用范围及示例‘;&nbsp; 5.测试经验谈。

几率大的Redis面试题(含答案)

本文的面试题如下: Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Memcache与Redis的区别都有哪些? 单线程的redis为什么这么快 redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构 redis的过期策略以及内存淘汰机制【~】 Redis 为什么是单线程的,优点 如何解决redis的并发竞争key问题 Red...

手把手实现Java图书管理系统(附源码)

【超实用课程内容】 本课程演示的是一套基于Java的SSM框架实现的图书管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群。详细介绍了图书管理系统的实现,包括:环境搭建、系统业务、技术实现、项目运行、功能演示、系统扩展等,以通俗易懂的方式,手把手的带你从零开始运行本套图书管理系统,该项目附带全部源码可作为毕设使用。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/27513 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程2年有效观看时长,大家可以抓紧时间学习后一起讨论哦~ 【学员专享增值服务】 源码开放 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化

jsp+servlet入门项目实例

jsp+servlet实现班级信息管理项目

winfrom中嵌套html,跟html的交互

winfrom中嵌套html,跟html的交互,源码就在里面一看就懂,很简单

Java面试题大全(2020版)

发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environ...

python实现数字水印添加与提取及鲁棒性测试(GUI,基于DCT,含测试图片)

由python写的GUI,可以实现数字水印的添加与提取,提取是根据添加系数的相关性,实现了盲提取。含有两种攻击测试方法(高斯低通滤波、高斯白噪声)。基于python2.7,watermark.py为主

Xshell6完美破解版,亲测可用

Xshell6破解版,亲测可用,分享给大家。直接解压即可使用

你连存活到JDK8中著名的Bug都不知道,我怎么敢给你加薪

CopyOnWriteArrayList.java和ArrayList.java,这2个类的构造函数,注释中有一句话 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public ArrayList(Collection&lt;? ...

相关热词 c#框体中的退出函数 c# 按钮透明背景 c# idl 混编出错 c#在位置0处没有任何行 c# 循环给数组插入数据 c# 多线程死锁的例子 c# 钉钉读取员工排班 c# label 不显示 c#裁剪影像 c#工作进程更新ui
立即提问