
暂无个人介绍
背景 有时候,简单的参数只需要两个页面间传递,无需后台加工,这个时候,就可以考虑使用页面间传参方式 方案 采用JS中location.search获取传递的参数 优势 1、直接传递2、无依赖3、主流浏览器都支持 优化 1、对获取的原生问号参数进行二次加工,转换成JSON对象,就可以支持点属性了,很方便。2、对中文参数进行支持 源码 // 可公用,任何页面引入即可点属性进行使用 var searchJson = {};getSearchJson(); function getSearchJson(){ var searchArr = decodeURI(location.search).substr(1).split("&"); for(var i in searchArr){ searchJson[searchArr[i].split("=")[0]] = searchArr[i].split("=")[1] } } // 使用示例 $("#productInfo").html("<label>产品代号:</label><span>"+searchJson.productCode+"</span>\ <label>产品名称:</label><span>"+searchJson.productName+"</span>"); 结束 以上代码,拷贝即可使用,简单快捷。 谢谢大家,我是沫沫金,持续改进开发效率。
背景 app开发完成后,需要转移到小程序版本。新闻文章,第三方抓取到数据库,是完整的html代码段,无法直接使用。 困难 小程序限制打开网页,合法的网站必须根目录上传授权码(给第三方的网站上传校验码,我笑了) 思路 既然能看到完整的html代码,不就能if一个转码工具,自动解析成小程序内部标签。不就ok了。 调研 照着上面的思路,还真发现了现成的“轮子”。响应软件编程的至高准则:不能重复造轮子,就实行拿来主义^_^ wxParse使用步骤 1、github网站下载源码https://github.com/icindy/wxParse 2、打开文件,拷贝wxParse文件夹到自己的工程 3、自己的模块引入wxParse环境 //在使用的View中引入WxParse模块var WxParse = require('../../wxParse/wxParse.js'); //在使用的Wxss中引入WxParse.css,可以在app.wxss@import "/wxParse/wxParse.wxss";//onLoad方法调用wxParse/** 生命周期函数--监听页面加载*/onLoad: function (options) {console.log(options);var that = thisWxParse.wxParse('html', '&lt;h1&gt;仍自己的代码段&lt;/h1&gt;', that)}//最后,图片自使用需要增加wxParseImgLoad方法,放到onLoad后面wxParseImgLoad: function (e) {<br/>var that = this<br/>WxParse.wxParseImgLoad(e, that)<br/>} # 结束 按照以上步骤,瞬间就清爽了。所有html代码段对你来说就是个菜。 我是沫沫金,很高兴为大家带来wxParse插件分享,特别感谢作者的无私奉献(感兴趣的可以向作者捐赠)。我的朋友做软件都会找我,你也可以。百度搜索[沫沫金],即可和我取得联系。
背景 访问正常的192.168.1.111::8080/jenkins突然无法访问了,插遍原因,是Linux的Ip被冲突了 解决 使用dhclient五条命令,配合起来能强制更新ip 前提 1、linux的ip是自动获取配置2、使用的是root用户登陆 命令 1、释放Ip#dhclient -r2、重新获取ip#dhclient3、停止网卡服务#ifdown eth04、启动网卡服务#ifup eth05、更新网卡#/etc/init.d/network restart 结束 以上五条命令,即可强制更新到新IP,可使用“ip addr”查看更新后的ip地址 我是沫沫金,朋友们都找我开发软件,你也可以,百度[沫沫金]即刻和我联系。
背景 开发小程序,想使用微信账号唯一码,API是这么说的wx.login...code 换取 session_key接口地址:https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code 问题 开放的api并且是get,直接浏览器地址正确传参就可以获取到openid。但是小程序要求,请求的域名必须配置合法,而微信的api接口域名不让配置 解决办法 只能后台服务编写请求,小程序访问自己的服务端,服务端返回openid即可 具体步骤 使用Apache HttpClient实现请求第三方api接口 提供这么几个通用类,直接拷贝后调用 //如果有code,说明是微信小程序,根据code获取openId //classify用于标识使用哪个小程序的授权码 String openid = "{ErrorMsg:\"获取失败.\"}"; if (!CheckUtil.checkNulls(jscode,classify)){ // openid = OpenIdUtil.oauth2GetOpenid(jscode,classify); } return openid; 1、请求参数组装OpenIdUtil package com.wondersgroup.xa.healthyCard.user; /** * @author xsx */ public class OpenIdUtil { public static String oauth2GetOpenid(String code,String classify) { String appid=""; String appsecret=""; switch (classify){ case "jiankangka": //自己的配置appid appid = "********"; //自己的配置APPSECRET; appsecret = "*********"; break; } //授权(必填) String grant_type = "authorization_code"; //URL String requestUrl = "https://api.weixin.qq.com/sns/jscode2session"; //请求参数 String params = "appid=" + appid + "&secret=" + appsecret + "&js_code=" + code + "&grant_type=" + grant_type; //发送请求 String data = HttpUtil.get(requestUrl, params); return data; } } 2、HttpClient请求工具类HttpUtil package com.wondersgroup.xa.healthyCard.user; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.util.List; import java.util.Map; /** * @author xsx */ public class HttpUtil { /** * 向指定URL发送GET方法的请求 * * @param url * 发送请求的URL * @param param * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 * @return String 所代表远程资源的响应结果 */ @SuppressWarnings("unused") public static String get(String url,String param){ String result = ""; BufferedReader in = null; try { String urlNameString = url + "?" + param; //System.out.println(urlNameString); URL realUrl = new URL(urlNameString); // 打开和URL之间的连接 URLConnection connection = realUrl.openConnection(); // 设置通用的请求属性 connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("connection", "Keep-Alive"); connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // 建立实际的连接 connection.connect(); // 获取所有响应头字段 Map<String, List<String>> map = connection.getHeaderFields(); // 遍历所有的响应头字段 /*for (String key : map.keySet()) { System.out.println(key + "--->" + map.get(key)); }*/ // 定义 BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader( connection.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("发送GET请求出现异常!" + e); e.printStackTrace(); } // 使用finally块来关闭输入流 finally { try { if (in != null) { in.close(); } } catch (Exception e2) { e2.printStackTrace(); } } return result; } } 3、程序健壮性验证通用类CheckUtil package com.wondersgroup.xa.healthyCard.user; import org.apache.commons.lang.StringUtils; public class CheckUtil { /** * 验证是否有空值的参数,只要有一个,就返回true * * @param args * @return true */ public static boolean checkNulls(String... args) { if (args.length == 0) { return true; } // for (String str : args) { if (StringUtils.isEmpty(str)) { return true; } } return false; } } 结束 以上工具类,拷贝到自己的服务,调用就可以正常使用了 我是沫沫金,我得朋友经常找我开发软件,你也可以,百度沫沫金和我取得联系
背景我们是西安卫生局平台项目,给陕西健康卡完成移动App开发后,进军小程序开发 问题迁移到登陆验证码获取,需要有倒计时功能,app使用到setTimeout ,出问题了?!死活递归调用不了 耗时整整一个早晨的战斗,什么 外部定义方法啊 内部传递变量啊 等等。。。最后宣告失败 突破发现了setInterval倒计时,果然好使。成功运行代码如下 // 60秒后重新获取验证码 var inter = setInterval(function () { this.setData({ snsCodeMsg: "重新发送(" + this.data.snsMsgWait + ")", snsMsgWait: this.data.snsMsgWait - 1 }); if (this.data.snsMsgWait < 0) { clearInterval(inter) this.setData({ snsCodeMsg: "获取验证码", snsMsgWait: 60 }); } }.bind(this), 1000); 注意后面的bind绑定,最关键。不然又是未定义,无法使用外围的变量。 最后请不要放弃,想要的效果总会出现,坚持换个思路。 沫沫金提供,谢谢你的观看。朋友的软件开发都找我,你也可以。请百度搜索我得名字,你可和我一对一讨论技术。
背景 关于RPC协议的思考 RPC协议的组成部分 RPC协议=服务端+服务注册管理中心+客户端,构成客户端可远程调用服务端的方法,就跟调用本地方法一样方便。 Java实现RPC常用的框架RMI 服务注册管理中心常用的框架是ZooKeePer RPC服务端和客户端独立部署 RPC客户端必须包含服务端的接口类 RPC的限制 1、接口只能靠接口文档传递 2、传输内容的限制 SOAP协议 提供了WSDL标准,只需要访问服务地址,自动生成所有接口说明,方便统一 需要软件,朋友都找我。我是沫沫金。
背景 有次聊天,突然遇到Echarts跟JasperReport是不是一样... 脑洞 肯定不一样啊,why?自己还真没整理过相关理论知识 上脑 立马查找资料,开始分析对比 结果 1、公式区别 报表=表格+图表 图表=图表 由此公式,很直观的确定,图表工具只是报表引擎的一部分内容。 2、数据加工能力的区别 报表,可以对原数据进行深度加工,根据模板生成各种负责的报表 图表工具,数据加工能力较弱,特别复杂的展示无法完成 朋友们需要开发软件,都找我。特别是初始创业技术薄弱资金欠缺的情况下,认准沫沫金。
背景 使用Spring Boot开发集群应用,架构风格启用RestFul之后表单Post请求无法Url测试,必须使用专用工具测试 主题 经过亲身感受,测试发现最靠谱的工具非[wiztools.org restclient]莫属 特色 支持本地测试,不依赖任何第三发 支持所有报头,任意切换 Java编写,跨平台运行 内容 1、输入完整的服务地址,例如“http://172.16.90.64:8080/bindCard” 2、Method选择Post 3、Body选择Sting Body,选择json格式,高亮区域输入测试的Json串。 必须双引号,否则失败 4、点击绿色箭头提交即可完成测试请求 最后 再次说明,特别特别好用。请推荐给身边需要rest测试的同仁。 附 下载restclient 2017-10-16 16:25 于 西安汇鑫IBC 章力 沫沫金是也
背景 脱离传统项目,使用微服务集群开发后。RestFul风格势在必行,所以,本篇文章针对使用restful风格的编写人员。 主题 restful post请求提交的参数用什么接收? 关键字 Map、Entity 内容 1、首先,传统的接收使用HttpServletRequest同时支持get问好提交和form表单post提交,后台获取值使用req.getParement("name")获取值。 2、那么,针对微信小程序的没有表单提交功能,我们怎么办?只能选择提供的ajax形式提交,也是现如今web、app、小程序通用的提交形式,提交JSON字符串即可。 3、服务端的改造就是删除HttpServletRequest参数,改用 @RequestBody Map<String, Object> body 形式,即可(Spring MVC会自动将传递的JSON字符串封装到map类型中,依据官网说明,我们需要创建自己的Entity接收参数。但我的项目数据库使用MongoDB,操作的全是Map顾省去创建Entity,另外就是太懒) 最后 -使用如上风格请全面启用Restful风格,将@Controller替换@RestController -@RequestMapping使用method明确说明 2017-10-16 16:07 于 西安汇鑫IBC 沫沫金
喜欢听环球资讯广播没有移动端App,不方便,封装PC端:http://newsradio.cri.cn/ 应用名称:环球资讯广播移动端 应用大小:1.3M 应用功能:PC版官网封装 应用下载:点击下载 不方便,自己写一个APP。 于西安 阴 by.沫沫金 2017-10-09 14:44 发布
背景 表单字段,配置where属性自动刷新到可查询区域,查询字段需增加_where后缀,响应后台规则 问题 批量设置的查询字段,必须批量增加_where后缀方可正常查询。each循环有点麻烦,有没有更方便的批量修改方法。 调查 方向就是jquery批量修改name,整个互联网充斥的都是.attr("name","new_value")。只有单值修改,最终,发现这篇系统性文章 Jquery attr()方法 属性赋值和属性获取 jquery中用attr()方法来获取和设置元素属性,attr是attribute(属性)的缩写,在jQuery DOM操作中会经常用到attr(),attr()有4个表达式。 1. attr(属性名) //获取属性的值(取得第一个匹配元素的属性值。通过这个方法可以方便地从第一个匹配元素中获取一个属性的值。如果元素没有相应属性,则返回 undefined ) 2. attr(属性名, 属性值) //设置属性的值 (为所有匹配的元素设置一个属性值。) 3. attr(属性名,函数值) //设置属性的函数值 (为所有匹配的元素设置一个计算的属性值。不提供值,而是提供一个函数,由这个函数计算的值作为属性值。) 4.attr(properties) //给指定元素设置多个属性值,即:{属性名一: “属性值一” , 属性名二: “属性值二” , … … }。(这是一种在所有匹配元素中批量设置很多属性的最佳方式。 注意,如果你要设置对象的class属性,你必须使用'className' 作为属性名。或者你可以直接使用'class'或者'id'。) 引用 方案 使用的就是3号方案,源码如下 // 注意3号方案的函数形式,即each循环的代码 $("input[where]").attr("name",function(){return this.name+"_where"}); 总结 完美解决,省掉each循环代码块,看着高大上 2017-09-18 15:25 沫沫金 于 西安 汇鑫IBC
背景 Java Web工程登陆后,浏览器地址显示的../login 问题 刷新页面就返回到登陆页面 解决思路 1、后台设置URL 2、JS设置URL 测试 优先,2号方案,原因是方便简单 测试源码 /** * 约定浏览器默认显示地址 **/ history.pushState({},"","${ctx }/home"); 测试结果 可用,正常修改地址 总结 Java Web工程需要修改浏览器URL地址,请使用JS修改。源码如上 2017-09-18 14:49 沫沫金 于西安 汇鑫IBC
背景 业务需要依据详细设计文档编写所有对应的页面 问题 工作量大,11张大表(几十上百字段)时间紧 3天完成 核心 有完整的表设计,可通过excel手动编辑完成。 新问题 普通字段没问题,可增加了字典后工作量骤然提升,这种特殊性让工作的难度和体量都给手工操作Excel带来了挑战 解决方案 通过代码实现手工操作excel的工作,也就是编写VBA宏 Sub detailPage() ' ' 沫沫金 ' 生成居民健康档案浏览器页面,时间: 2017/08/17 ' Dim tri As Integer, td, tableName, nameC, valC, dicC, saveC As String ' '配置区域:Config ' '三列一行控制器记录仪 tri = 1 '表名列 tableName = LCase(Cells(1, "D")) 'label列 nameC = "A" '值列 valC = "B" '字典列 dicC = "C" '存储列 saveC = "F" For n = 1 To [A65536].End(xlUp).Row '初始行内容 td = "" '三列一行 If tri = 1 Then td = "<tr>" '字段说明 td = td + "<td width=''33%''><h3><i class=''ico ico_23''></i>" + Cells(n, nameC) '字典字段特殊处理 If Cells(n, dicC) = "" Then td = td + "</h3><p>${sessionScope.data." + tableName + "[index]." + LCase(Cells(n, valC)) + "}</p></td>" Else td = td + "</h3><p><dic:dic type=""" + Cells(n, dicC) + """ value=""${sessionScope.data." + tableName + "[index]." + LCase(Cells(n, valC)) + "}"" /></p></td>" End If '三列一行结束处理 If tri = 3 Then td = td + "</tr>" '拼接一行,扔到空闲列统一拷贝 Cells(n, saveC) = td '当前列记录 tri = tri + 1 '三列一行控制器 If tri > 3 Then tri = 1 Next n MsgBox "恭喜你,详细信息生成成功。" ' End Sub 启用宏,拷贝到代码区运行即可看到拼接结果。完全自定义拼接格式,百分百解放双手的工具。 下面,给java开发同伴重点说明下 if判断 条件不用圆括号条件判断等于一个等号格式排版必须控制好没有分号 以上,运行说明,在当前的sheet页Alt+F8运行上面的宏。生成完成会收到友情提醒,好了,愉快的VBA结束。 by.沫沫金 于2017-08-17 西安
背景 需要一套干净的Spring+Spring MVC+Mybatis框架,框架写到返回Json的环节报错了。 问题 无法Json,报406 解决 需要配置Json工具包,这里用Jackson Maven Jackson <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.6.0</version> </dependency> <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.6.0</version> </dependency> <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.6.0</version> </dependency> 工程环境SpringMvc 4.x,不兼容Jackson2.9最新版。这里特应用2.6版本 Spring Mvc配置 <!--Begin:使用Jackson 2.x的配置,需要导入的jar包:jackson-core-xxx.jar、jackson-annotations-xxx.jar、jackson-databind-xxx.jar--> <!--通过处理器映射DefaultAnnotationHandlerMapping来开启支持@Controller注解--> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" /> <!--通过处理器适配器AnnotationMethodHandlerAdapter来开启支持@RequestMapping注解--> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <!-- 设置返回字符串编码 --> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name = "supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> <value>application/json;charset=UTF-8</value> </list> </property> </bean> <!-- json转换器 --> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> <value>application/json;charset=UTF-8</value> </list> </property> </bean> </list> </property> </bean> <!--End:使用Jackson 2.x的配置,需要导入的jar包:jackson-core-xxx.jar、jackson-annotations-xxx.jar、jackson-databind-xxx.jar--> 好了,重启不报错(一般就是jar宝冲突),就可以正常接收到@ResponseBody返回的Json了。 以上配置,带来好运,祝好 ! by.沫沫金 我得纯净框架,新模块只需要一个Controller就可以,CRUD一句话全搞定。前台专注Form就行。
背景: 系统需要动态增加分类,各分类下有各自的3项资金(有资金小计,问题就出在这里)。 问题: 新增一条分类,需要给3项资金新绑定小计功能。这个时候会发现,初始第一行的计算,会调用两次,增加到三行的时候,第一行会重复计算三次,第二行会重复计算两次...以此类推 为什么会执行多次? 猜词: 新增一行,绑定计算函数,历史分类会累计事件。也就是说,每新增一行,历史的每一个分类都会增加一次事件绑定。 方案: 绑定事件前,删除事件。jQuery提供了on()、live()绑定方法,对应的解绑事件off()、die(). 编码: // 调整之后的事件绑定 $(this).off('blur').on('blur',function(){ alert('绑定前,解绑。保证事件唯一性'); }); /** 老的事件绑定 $(this).on('blur',function(){ alert('直接绑定,遇到重复调用,会出现事件多次执行的异常,请确认只绑定一次。'); });*/ 以上,就是jQuery事件绑定,出现重复多次执行问题的来龙去脉,谢谢大家。 ----by.沫沫金
[沫沫金原创] 特色 纯jQuery+Css原生,无任何第三方。同时支持摄氏度、华氏度同时显示,并可随意定义温度计颜色,例如小于10度绿色、小于20度红色等等。 同时支持摄氏度、华氏度 支持自定义温度计颜色 支持自定义温度计款式(Psd原图提供) 以上,谢谢。沫沫金祝你工作一路顺,步步高! 提供源码下载http://down.51cto.com/data/2317776
简介 日程系统,繁琐的月日期开始结束计算、当前页面开始的天数(跨月)。。。等等,麻烦的事情都交给FullCalendar,世界安静了。 官网 https://fullcalendar.io/ 使用 1、页面引用 <link href='/contrast/assets/global/plugins/fullcalendar-3.2.0/fullcalendar.min.css' rel='stylesheet' /> <link href='/contrast/assets/global/plugins/fullcalendar-3.2.0/fullcalendar.print.min.css' rel='stylesheet' media='print' /> <script src='/contrast/assets/global/plugins/fullcalendar-3.2.0/lib/moment.min.js'></script> <script src='/contrast/assets/global/plugins/fullcalendar-3.2.0/lib/jquery.min.js'></script> <script src='/contrast/assets/global/plugins/fullcalendar-3.2.0/fullcalendar.min.js'></script> <script src='/contrast/assets/global/plugins/fullcalendar-3.2.0/locale-all.js'></script> 2、页面代码 <!-- 页面容器 --> <div id='calendar'></div> <!-- 隐藏按钮,ajax自动请求触发验证 --> <button id="zhibiao-btn" type="button" class="btn btn-primary" style="display:none;" data-toggle="modal" data-target=".bs-example-modal-lg">Large modal</button> <script> /** * 业务约束(预警颜色说明) * #指标符合率# * 红色(#FF3333):<95% * 黄色(#FFCC66):>95% * 绿色(#CCFFCC):=100% * 灰色(#CCCCCC):数据未上传 */ $(document).ready(function() { var initialLocaleCode = 'zh-cn'; $('#calendar').fullCalendar({ header: { left: 'prev,next today', center: 'title', right: 'month,listMonth' }, firstDay:0, defaultDate: new Date(), locale: initialLocaleCode, buttonIcons: false, // show the prev/next text navLinks: true, // can click day/week names to navigate views editable: false, eventLimit: true, // allow "more" link when too many events events: 'warningcalendar/fhl_json', eventClick: function(calEvent, jsEvent, view) { seeDate = calEvent.start.format('YYYY-MM-DD'); req_zhibiaodetail(""); $("#zhibiao-btn").click(); } }); }); /** * 获取符合率明细 */ var seeDate = ""; function req_zhibiaodetail(JGDM,JGMC){ if(seeDate==""){alert("查看日期不能为空。");return;} if(JGDM==""){ if($("#jgList").html()!=undefined){ JGDM = $("#jgList li:eq(0)").attr("jgdm"); JGMC = $("#jgList li:eq(0)").text(); } } $.ajax({ type : "get", url : 'warningcalendar/show_fhl_detail_json', dataType : "json", data : {seeDate:seeDate,JGDM:JGDM}, success : function(data) { $('#zhibiaoDetail').html(data.ERRORCENTENT); }, error : function(reslt) { alert("您好,"+JGMC+"暂无符合率请查看其它机构"); } }); } </script> 3、后台代码 /** * 机构符合率 */ @SuppressWarnings("unchecked") @RequestMapping(value = "/fhl_json") @ResponseBody public List<HashMap<String, Object>> fhlJson(HttpServletRequest request, HttpServletResponse response){ String sql = "select t1.d \"start\", nvl(t2.\"title\", '数据未上传' ) \"title\", nvl (t2.\"color\", '#CCCCCC') \"color\" from ( select to_char ( to_date (#{startDate}, 'yyyy-MM-dd') + rownum - 1, 'yyyy-mm-dd' ) d from user_objects where to_date (#{startDate}, 'yyyy-MM-dd') + rownum - 1 <= to_date (#{endDate}, 'yyyy-MM-dd')) t1 left join ( select to_char (ERRORDATE, 'yyyy-MM-dd') \"start\", '符合率:' || trunc (sum(total) / count(total), 2) || '%' \"title\", case when trunc (sum(total) / count(total), 2) < 95 then '#FF3333' when trunc (sum(total) / count(total), 2) between 95 and 100 then '#FFCC66' when trunc (sum(total) / count(total), 2) = 100 then '#FFCC66' end as \"color\" from SYS_TONG_QUOTA_ERROR t where t .ERRORDATE >= to_date (#{startDate}, 'yyyy-MM-dd') and t .ERRORDATE <= to_date (#{endDate}, 'yyyy-MM-dd')"; HashMap<String, Object> prm = new HashMap<String, Object>(); //设置当前日历起止时间 prm.put("startDate", request.getParameter("start")); prm.put("endDate", request.getParameter("end")); //获取当前用户 HashMap<String, Object> user = (HashMap<String, Object>) request.getSession().getAttribute(SessionUtils.SESSION_USER_KEY); //非管理只看本院 if(null!=user&&user.get("ISADMIN").equals("yiyuan")){ sql+=" and JGDM=#{jgdm}"; prm.put("jgdm", user.get("YLJGDM")); } sql+=" group by to_char (ERRORDATE, 'yyyy-MM-dd')) t2 on t1. d = t2.\"start\" where to_date(t1.d,'yyyy-mm-dd')<sysdate "; return curdManager.findList(sql, prm); } FullCalendar默认提交日期开始结束:“start”“end” 返回的格式如上Sql展示 以上,Ok! 使用ajax全程不用处理,扔给FullCalendar全程自动化
wm_concat(lie[,',','|'])列转行 rount(lie,2)保留小数点
鄙视百度!!! 官网给的Demo支持自动大小,确不给完整的源码XXX 自己动手,丰衣足食 http://echarts.baidu.com/demo.html#bar-tick-align 用最基本的柱状图官网代码 简单两步,实现移动端自适应大小 //1、下载Echarts <script src="dep/Echarts/echarts-all-3.js"></script> //2、chart容器宽度自适应 <!-- 为ECharts准备一个具备大小(宽高)的Dom --> <div id="chart-demo" style="width: 100%;height:400px;"></div> //3、js增加自适应功能 window.onresize = function () { myChart.resize(); //使第一个图表适应 } 重复一遍: div容器增加自适应width:100% js增加自适应功能:window.onresize=.... 以上,两步就完成对Echarts官网移动端的支持。 完整源码: <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! --> <title>综合管理-图标样例</title> <!-- Bootstrap --> <link href="dep/bootstrap-3.3.5-dist/css/bootstrap.min.css" rel="stylesheet"> <link href="css/common.css" rel="stylesheet"> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]> <script src="//cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="//cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script> <![endif]--> <style> </style> </head> <body class="container-fluid"> <div class="row"> <div class="col-md-12 col-xs-12"> <!-- 为ECharts准备一个具备大小(宽高)的Dom --> <div id="chart-demo" style="width: 100%;height:400px;"></div> </div> </div> <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> <script src="dep/jquery/1.11.3/jquery.min.js"></script> <!-- Include all compiled plugins (below), or include individual files as needed --> <script src="dep/bootstrap-3.3.5-dist/js/bootstrap.min.js"></script> <!-- 增强:BootStrap carousel(轮播)组件支持触屏 --> <script src="dep/jquery.hammer.js-master/hammer.min.js"></script> <script src="dep/jquery.hammer.js-master/jquery.hammer.js"></script> <!-- Echarts start --> <script src="dep/Echarts/echarts-all-3.js"></script> <script src="dep/Echarts/roma.js"></script><!-- Echarts 主题 --> <script> // 基于准备好的dom,初始化echarts实例 var myChart = echarts.init(document.getElementById('chart-demo'),"roma"); var option = { tooltip : { trigger: 'axis', axisPointer : { // 坐标轴指示器,坐标轴触发有效 type : 'shadow' // 默认为直线,可选为:'line' | 'shadow' } }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, xAxis : [ { type : 'category', data : ['1月', '2月', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], axisTick: { alignWithLabel: true } } ], yAxis : [ { type : 'value' } ], series : [ { name:'门急诊人次', type:'bar', barWidth: '60%', data:[10, 52, 200, 334, 390, 330, 220] } ] }; //*必须,绑定图表自适应功能 window.onresize = function () { myChart.resize(); //使第一个图表适应 } // 使用刚指定的配置项和数据显示图表。 myChart.setOption(option,true); </script> </body> </html>
背景 公司规范Jar包管理,启用Maven后。新的工程已Maven工程出现 问题 新工程导致打开Eclipse之后CPU就爆灯[99%]这个不干打开JSP、JS。直接卡崩溃 目标 向之前的工程一样,可正常使用毫无卡顿 排除 1、取消所有验证、自动补全等等 2、增大eclipse.ini内存方法 最终 修改.project文件,删减运行时的插件和验证 <?xml version="1.0" encoding="UTF-8"?> <projectDescription> <name>contrast</name> <comment></comment> <projects> </projects> <buildSpec> <buildCommand> <name>org.eclipse.wst.common.project.facet.core.builder</name> <arguments> </arguments> </buildCommand> <buildCommand> <name>org.eclipse.jdt.core.javabuilder</name> <arguments> </arguments> </buildCommand> <buildCommand> <name>org.eclipse.m2e.core.maven2Builder</name> <arguments> </arguments> </buildCommand> </buildSpec> <natures> <nature>org.eclipse.jdt.core.javanature</nature> <nature>org.eclipse.m2e.core.maven2Nature</nature> <nature>org.eclipse.wst.common.project.facet.core.nature</nature> </natures> </projectDescription> 这些配置说明: 工程名<name></name> 工程注释描述<comment></comment> 运行时需要的额外Eclipse插件<natures></natures> 加载方式信息<buildSpec></buildSpec> 链接工程外部的资源<linkedResources></linkedResources> 总结 如果你的eclipse卡死,普通的去除validate验证无效,尝试增大eclipse.ini启动内存还是卡,那么不妨试试修改.project文件。具体思路就是减少插件&取消验证。 2017年3月16日 自西安电子政务办 作者:章** 网名:沫沫金
目标:给JSON数据任意增加新属性 环境:页面 技术:JS 实现: var JSON = {'name':'momojin','ega',22} JSON["isParent"]=true; alert(JSON.isParent); 任意增加,随意操作 childNodes[i]["isParent"]=true; 下标类的直接写在下标后面。
目标:显示所有末级节点 思路: 根据父节点count数,判断是否有子节点 源码sql select t."CLASS_CODE",t."CLASS_NAME",t."FATHER_CLASS_CODE",t."CLASS_STATE",t."OP_USER",t."OP_TIME",t."IS_PROJECT",nvl(t2.isParent,0) isParent from FSS_PROJECT_CLASS t LEFT JOIN ( SELECT count(1) isParent,FATHER_CLASS_CODE from FSS_PROJECT_CLASS GROUP BY FATHER_CLASS_CODE ) t2 on t.CLASS_CODE = T2.FATHER_CLASS_CODE; 根据isParent就可以判断所有的末级节点 where isParent=0; 就ok了。
工具:PLSQL 步骤: 登陆plsql,打开table,然后点击工具-->导出用户对象,选择导出的内容指定导出位置,就ok了
1、你是否在Sql编写中遇到Datetime类型,只想保留到日期去除时分秒呢? 2、你是否需要繁琐的进行date转varchar再转回date? 现在,告诉所有亲:不用这么麻烦! select trunc(sysdate) from dual --2013-01-06 直接就OK,从此轻装上阵,带你装逼带你飞。
Oracle创建 按天自动分区使用官方提供的 interva 功能 子分区正常写,核心就是配置子分区模板,配置后才可以根据列值自动创建配置好的分区。 直接看源码 CREATE TABLE "CEN_NORM_PART"."EMP_TB_HIS_MZ_REG" ( "GHRQ" VARCHAR2(8 BYTE) NOT NULL , ... "YWRQ" DATE NOT NULL ) --启用分区(分区字段) partition by range(YWRQ) --启用自动分区(按天) interval (numtodsinterval(1,'day')) --启用子分区(医疗机构) subpartition BY LIST (YLJGDM) ( --初始化分区 partition t01_p_day_1 values less than (to_date('2012-12-31','yyyy-mm-dd'))( SUBPARTITION t01_sp_yljg VALUES(default) ) ); --配置子分区模板(启用按列值)把机构数据 alter table "CEN_NORM_PART"."EMP_TB_HIS_MZ_REG" set subpartition template ( SUBPARTITION T01_YLJG_DIYI VALUES('43720289561010311A1001'), SUBPARTITION T01_YLJG_DISI VALUES('43720437261010211A1001'), SUBPARTITION T01_YLJG_DIWU VALUES('43750151061010411A1001'), SUBPARTITION T01_YLJG_DIBA VALUES('43720037161011311A5211'), SUBPARTITION T01_YLJG_DIJIU VALUES('43523202X61010311A1001'), SUBPARTITION T01_YLJG_ZHONGXIN VALUES('43720291661010211A1001'), SUBPARTITION T01_YLJG_HONGHUI VALUES('43720358061010311A1001'), SUBPARTITION T01_YLJG_ERTONG VALUES('43720270561010411A5191'), SUBPARTITION T01_YLJG_ZHONGYI VALUES('43720057461010311A2101'), SUBPARTITION T01_YLJG_XIONGKE VALUES('43720042761011311A5231'), SUBPARTITION T01_YLJG_JINGWEI VALUES('43720191361011311A5201'), SUBPARTITION T01_YLJG_YANLIANGTIELU VALUES('X2900708961011411A1001'), subpartition T01_DEFAULT VALUES (default) ); !注意,配置子分区模板的代码。我这里是按照YLJGDM字段的值分区,共有12家医院。配置中13行,增加了默认分区,防止和12家医院的机构代码无法匹配,无法插入问题。
今天数据库分区功能编程,被搞笑了一把。 背景 创建了Db Link,怎么都访问不到... 折腾 各种折腾 ... 没出来 找人,刚描述完问题。突然想起来访问换成@,一下就成功了!!! 跨库访问和跨用户访问的区别就是 --跨用户 CEN_NORM.TB_HIS_MZ_REG --跨库 TB_HIS_MZ_REG@CEN_NORM 就是这一点 [.] 和 [@] 号的区别 !注意,跨库必须创建DB LINK
背景 由于平台数据发展带来的数据量,拖慢平台响应时间。技术组决定启用数据库分区功能! 目标 按日期月为单位分区,实现后期数据自动按月分区功能,解决数据累计带来的系统响应拖沓问题。 方案 1、增加分区功能的Sql 2、现有数据库是否能自动切割历史数据 3、克隆空库 4、老数据导入新库 5、切换到辛苦 实现 1、... . . 3、克隆空库 --301导出库(不带数据) exp CEN_NORM/CEN_NORM@10.16.175.50:1521/xaptdb file=d:/cen_norm.dmp rows=n consistent=y OWNER=CEN_NORM 核心:rows=n consistent=y --302恢复到新库 imp CEN_NORM_PART/CEN_NORM_PART@10.16.175.50:1521/xaptdb file=d:/cen_norm.dmp full=y --303检查一致性 select * from dba_constraints where owner='CEN_NORM' and table_name='TB_HIS_MZ_Reg'; select * from dba_indexes where owner='CEN_NORM' and table_name='TB_HIS_MZ_Reg';
打开工程下.project 删除这个标签完整删除 <buildCommand> <name>org.eclipse.wst.jsdt.core.javascriptValidator</name> <arguments> </arguments> </buildCommand> 高手不需要这些破验证 终极大招:增加Eclipse初始内存 打开eclipse的安装目录下eclipse.ini文件,调整末尾参数: -Xms512m -Xmx512m -XX:PermSize=256M -XX:MaxPermSize=256M -XX:-UseGCOverheadLimit
Orcal 的dmp有时候很折磨人,这里记录自己轻松导入导出dmp文件的神奇咒语,百试百灵。 导入(Imp) imp SXZZ/SXZZ@10.16.175.50/xaptdb file=E:\bjsxzz.dmp full=y 没有特别注意的,dmp文件直接导(文件位置,密码ip正确一切ok) 导出(Exp) exp sxzz_1111/sxzz_1111@172.16.90.253/ORCl file=D:/momojin.dmp OWNER=sxzz_1111 需要注意2点: 1、不自动创建dmp文件,所以你需要手动创建dmp。如下图 2、注意命令结尾处的owner,这个确定导出范围,一般就当前用户下数据就ok。如需正库换成(FULL=Y) 注意,以上都基于本地安装了Oracle(即执行cmd命令的机子有装orcale) over-!
上百上千表格,需要全部设置大小。手动就废了 记录这个word批量选择表格的方法 ALT+F8,打开宏对话框,创建名为SelectAllTables的宏 Sub SelectAllTables() Dim tempTable As Table Application.ScreenUpdating = False '判断文档是否被保护 If ActiveDocument.ProtectionType = wdAllowOnlyFormFields Then MsgBox "文档已保护,此时不能选中多个表格!" Exit Sub End If '删除所有可编辑的区域 ActiveDocument.DeleteAllEditableRanges wdEditorEveryone '添加可编辑区域 For Each tempTable In ActiveDocument.Tables tempTable.Range.Editors.Add wdEditorEveryone Next '选中所有可编辑区域 ActiveDocument.SelectAllEditableRanges wdEditorEveryone '删除所有可编辑的区域 ActiveDocument.DeleteAllEditableRanges wdEditorEveryone Application.ScreenUpdating = True End Sub 拷贝,运行。等待选中结束切换到文档,即可看到全部选择后的效果。 --over!
普通链接配置,应用到集群会启动失败,请修改 集群数据库链接 jdbc.url=jdbc:oracle:thin:@//127.0.0.1:1521/momojin 普通数据库链接 jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521/momojin 区别就在于:“//”,如上所示 标红的地方。请务必清楚
无规矩,不方圆。 国际标准[2016]版
性能: 3G运存16G内存,相机1300+500,三星高画质显示 品牌: 三星 价格: 899¥ 什么小米、华为、魅族,甩他们几条街。这么好的手机不为大众所知,真是浪费。 手机,现在就是苹果、三星
特别感谢这位大神,太伟大了。让我得K30-E 黑砖恢复如初(打算扔掉的,啥反应都没了)官网线刷的“QcomDLoader.exe”几万秒也没PASS喜 庆 时 刻 大神的伟大结晶: 1、百度搜索关键字“联想乐檬K30-T线刷救砖包资料驱动教程黑砖也能刷一次ok有教程图两个版本” 2、http://bbs.fsmijing.com/thread-551091-1-1.html 我使用后的从新整理,大神里面包含ROM,较大 已有ROM的童鞋可直接下载这里的工具无私奉献 链接:http://pan.baidu.com/s/1pKECEgV 密码:sgzbby:沫沫金创于:2016年10月18日(本人生日之后)再次感谢这位大神
分两步 第一步 Tomcat设置get编码格式 <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/> Tips:就上面这个URIEncoding设置 第二部 url请求,参数进行编码 encodeURI('你是中文我转你') 使用这个js方法进行编码 以上,ok 无需后台解码
查找spring mvc设置地址栏地址,无意中看到的这个方法。使用了下,确实好用 还简单。 直接在页面放上这行js history.pushState({},"","${contextPath }/doc-manage/docmannage/default"); 三个参数: 1、历史地址,忽略不计 2、标题,不设置 3、就是你需要的地址了,放上去试试 效果一级棒 扩展阅读: 现在的浏览器里,有一个十分有趣的功能,你可以在不刷新页面的情况下修改浏览器URL;在浏览过程中.你可以将浏览历史储存起来,当你在浏览器点击后退按 钮的时候,你可以冲浏览历史上获得回退的信息,这听起来并不复杂,是可以实现的,我们来编写些代码。来看看它是如何工作的。 1 var stateObject = {}; 2 var title = "Wow Title"; 3 var newUrl = "/my/awesome/url"; 4 history.pushState(stateObject,title,newUrl); http://blog.csdn.net/zajin/article/details/12992975
直接上代码,核心代码的使用文末提供 //---------核心关键,大家爱护----------// /** * 公共:基础支撑 **/ var G = { /** * 统一的请求 * @parm url请求服务器地址,格式:"${contextPath }/docmanage/list" * @parm fn回调函数,格式:function setTableTr(data){for(..){..}} * @parm parm提交的条件,格式:{"name":"zhangsan","age":"23"} **/ request:function (url,fn,parm) { $.ajax({ type: "post", async: false, url: url, //请求的URL dataType: "json", data: parm, //动态执行这个callback函数 success: function (data) { if(fn!=undefined)fn(data); }, error:function(reslt){ alert("服务器,请求失败。"); } }) } } 跨域请求,使用下面这段 //统一的请求 function request(url,params, fn) { $.ajax({ type: "get", //jquey是不支持post方式跨域的 async: false, url: url, //跨域请求的URL dataType: "jsonp", //传递给请求处理程序,用以获得jsonp回调函数名的参数名(默认为:callback) jsonp: "callback", data: params, //成功获取跨域服务器上的json数据后,会动态执行这个callback函数 success: function (data) { var result = data.result; if (data.head != 'SUCCESS') { alert("服务器错误,请及时联系开发商!"); return; } if(fn!=undefined) fn(result); } }); } 使用方法: request("http://www.baidu.com",{"money":"100000"},moneyCall); function moneyCall(data){ alert(JSON.stringify(data)); }
概述: 使用jquery的$('#myform').attr('action',dllAction)失败的亲,我用下面的方法解决问题 document.myform.action='你的动态地址'; Tips! 换成上面原生的js写法提交,新地址就识别了。提交方式可以继续用$('#myform').submit(); 基本知识说明: 上面的document点的myform是form标签的name属性名,如 <form name="myform" method="post">
下载: https://www.mobiscroll.com/ 使用样例 <!---- 手机日期插件:mobiscroll ----> <script src="../../dep/mobiscroll.datetime-2.17.2.trial/js/mobiscroll.custom-2.17.2.min.js"></script> <link href="../../dep/mobiscroll.datetime-2.17.2.trial/css/mobiscroll.custom-2.17.2.min.css" rel="stylesheet"> <input type="text" id="datetimeDate-demo" class="form-control transparent" placeholder="请选择..." /> <script> // Mobiscroll Date & Time initialization $('#datetimeDate-demo').mobiscroll().date({ theme: 'mobiscroll', // Specify theme like: theme: 'ios' or omit setting to use default lang: 'zh', // Specify language like: lang: 'pl' or omit setting to use default display: 'modal', // Specify display mode like: display: 'bottom' or omit setting to use default mode: 'Scroller' // More info about mode: https://docs.mobiscroll.com/2-17-2/datetime#!opt-mode }); </script>
外国人,还是牛逼。 下载两个JS 1、http://hammerjs.github.io/ 2、https://github.com/hammerjs/jquery.hammer.js 注意:引入顺序1》2 <!-- 增强:BootStrap carousel(轮播)组件支持触屏 --> <script src="dep/jquery.hammer.js-master/hammer.min.js"></script> <script src="dep/jquery.hammer.js-master/jquery.hammer.js"></script> <script> $('#carousel-example-generic').hammer().on('swipeleft', function(){ $(this).carousel('next'); }); $('#carousel-example-generic').hammer().on('swiperight', function(){ $(this).carousel('prev'); }); </script>
使用 frozenColumns:[[{field:'NAME',title:'医疗分类名称',width:80}]], 注意:必须设置宽度才有效。
核心一句话:使用“背景橡皮擦”工具 打开图片,选择 前景色为【头发颜色】 背景色为【想擦除的】背景颜色 然后配置背景橡皮擦工具的参数如下 剩下的就是见证奇迹的时刻了。
需求: 合并两个Object[] a 和Object[] b; 方案 List<Object[]> quotas = new ArrayList<Object[]>(); Object[] objs1 = quotas_1.get(i); Object[] objs2 =quotas_2.get(i); //合并多sheet页数据,切割行级合并 List list = new ArrayList(Arrays.asList(objs1)); list.addAll(Arrays.asList(objs2)); quotas.add(list.toArray()); 关键 对了,就是用到List的addAll功能,很好很强大哦
单刀直入 将attr('checked',true)换成prop('checked',true) 原因是prop修复了attr这种boole状态切换失效的问题 更多,请参看http://www.cnblogs.com/KeenLeung/p/3799895.html
仅供Windows平台参考 正文 步骤一:打开环境变量-->新建 步骤二:拷贝 变量名(N):NLS_LANG 变量值(V):SIMPLIFIED CHINESE_CHINA.ZHS16GBK 结束,重启PLSQL见证奇迹!
Eclipse ADT版jdk指定 //1、打开eclipse.ini //2、复制下面代码 -vm ./jdk6.32/jre/bin/client/jvm.dll //3、放到-vmargs之前(必须!) Android虚拟机创建经典问题 1、Failed to allocate memory: 1455 这个调整RAM值就可以(不要和发烧友一样整好几个G) 2、启动Android虚拟机失败:start Android panic could not... 需要配置ANDROID_SDK_HOME并加入Path中指定到sdk的绝对目录的tools目录 以上,谢谢。 跑起来了,最终效果收尾
需要form表单提交,大表单对字段后台人工处理太麻烦。还是选择form表单对象(entity.xx)提交方便,那么怎么ajax提交这样的form对象表单呢? 命名jquery.commons.js内容如下 /** * FORM对象表单ajax提交前数据处理方法 * @param frm * @returns JSON Object */ function getFormJson(frm) { var o = {}; var a = $(frm).serializeArray(); $.each(a, function () { if (o[this.name] !== undefined) { if (!o[this.name].push) { o[this.name] = [o[this.name]]; } o[this.name].push(this.value || ''); } else { o[this.name] = this.value || ''; } }); return o; } 实例如下 var myForm = getFormJson($("#myform")); $.ajax({ url : 'saveAppoint.action', type : 'POST', data : myForm, success : function(data) { showMsg(data); } }); form表单内容 <form id="myform"> <input type="hidden" id="timeType" name="appointment.timeType" readonly="readonly" value="<s:property value="appointment.timeType"/>" /> <input type="hidden" id="visitBegin" name="appointment.visitBegin" readonly="readonly" value="<s:property value="appointment.visitBegin"/>" /> <input type="hidden" id="visitEnd" name="appointment.visitEnd" readonly="readonly" value="<s:property value="appointment.visitEnd"/>" /> </form> action后台 private AppointMent appointment; public void setAppointment(){...} public AppointMent getAppointment(){...} 即可实现对象表单提交支持。 以上,谢谢! 作者:沫沫金
zly:多个parent使用parents代替 2016-01-04 17:11 关键词:parents $tr = $('td').parent().parent()... 替换 $tr = $('td').parents('tr'); 警! 注意 s 的使用。 zly:操作iframe父页面元素 2016-01-04 17:23 关键词:window.parent.document $("#visitDate", window.parent.document).val(inRegDate) 效果说明, iframe页面操作父级页面的visitDate元素值 zly:name带点选择器应用技巧 2016-01-06 14:15 关键词:name带点 $('input[name="ent.sex"]').val(); 核心:注意“”引号,块级操作
JS使用“\”反斜杠拼接 $('#result_ok').append('<p>\ 预约挂号医院:西安市第八医院\ </p>\ <p>\ 预约挂号科室:皮肤科-1科室 皮肤科\ </p>\ <p>\ 预约挂号医生:<label>皮肤科-医生001</label> \ </p>\ <p>\ 预约医生级别:<label>名老专家</label> \ </p>\ <p>\ 诊金及挂号费:\ <label>\ 100\ </label>\ 元\ </p>\ <p>\ 预约就诊时间:\ <label>\ 2015-05-25\ </label>\ <label>\ 上午 8:00~12:00\ </label>\ </p>'); 可以正常运行 相当于str+="<p>",每一行都必须str+=这个固定格式,必须简化掉(懒啊) 沫沫金,2015年倒数第二天纪念发文(庆祝二零一六开年红)
背景: 页面多条件查询简化多条件提交ajax url参数组织动作,jQuery提供了很便捷的$('#formId').serialize()方法。会自动组装为{a=1,b=2,c=3....} 问题: serialize方法会自动调用encodeURIComponent方法进行编码,所以,自动完成后的中文会产生经典的乱码问题。 解决: 使用decodeURIComponent对serialize加码后的进行解码即可恢复正常。 扩展资料:http://www.w3school.com.cn/jsref/jsref_decodeURIComponent.asp