param

log4net 学习记录

倖福魔咒の 提交于 2020-01-25 11:34:40
log4net介绍: log4net库是Apache log4框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具。 log4net是Apache软件基金会Apache Logging Services工程的一部分。Apache日志服务工程致力于为程序调试和审计提供跨语言的日志服务。 log4net是.Net下一个非常优秀的开源日志记录组件。log4net记录日志的功能非常强大。它可以将日志分不同的等级,以不同的格式,输出到不同的媒介。本文主要是介绍如何在Visual Studio2008中使用log4net快速创建系统日志,如何扩展以输出自定义字段。 应用 log4net应用其实很简单,只需要简单的三步: 第一步:引用log4net.dll 第二步: 程序启动时 读取log4net的配置文件。 在应用程序启动的地方(一般都在global.asax文件)添加:log4net.Config.XmlConfigurator.Configure(); 第三步:设置配置文 1 <?xml version="1.0" encoding="utf-8"?> 2 3 <!-- 4 有关如何配置 ASP.NET 应用程序的详细信息,请访问 5 http://go.microsoft.com/fwlink/?LinkId=169433

log4net应用

夙愿已清 提交于 2020-01-25 11:34:26
log4net是.Net下一个非常优秀的开源日志记录组件。log4net记录日志的功能非常强大。它可以将日志分不同的等级,以不同的格式,输出到不同的媒介。 日志分类: 1,Info 2,Debug 3,Warn 4,Error 5,Fatal 存储类型: ADONetAppender 数据库方式 SmtpAppender 发邮件 LogFileAppender 服务器端日志文件 ColoredConsoleAppender 还没用过 EventLogAppender windows日志 NetSendAppender RollingFile 还没用过 先看效果: 文件存储 数据库存储 邮件存储 本文主要是简单的介绍怎么使用: 第一步:添加引用 第二步:添加配置 ,在Web.config 文件中进行添加configSections的节点 如下图所示, 第三步:添加日志配置类型及存储类型,如果是数据库存储需要提前建好数据表,配置好数据库连接字符串,文件存储需要指定日志文件路径和文件名,邮件发送需要配置邮件协议,具体会在代码中有, <log4net debug="true"> <!--<logger name="logerror"> <level value="ERROR" /> <appender-ref ref="ADONetAppender" /> </logger>

Scala自定义MEID效验工具类

人盡茶涼 提交于 2020-01-25 04:51:37
import java.util.regex.Pattern import java.util.zip.CRC32 object MeidUtils { /** * 将字符串转换成为Int类型 * @param s str * @return Int */ def parseInt(s:String):Int={ try { s.isEmpty match { case true => 0 case false => s.toInt } } catch { case _:Exception => 0 } } /** * 将字符串转换成为Double类型 * @param s str * @return double */ def parseDouble(s:String):Double={ try { if (StringUtils.isNotEmpty(s)) { s.toDouble } else { 0.0 } } catch { case _:Exception => 0.0 } } /** * 判断是否全部是数字 * @param str * @return boolean */ private def isAllNumber(str: String) = Pattern.compile("[0-9]*").matcher(str).matches() /** *

CAD嵌套打印(网页版)

柔情痞子 提交于 2020-01-25 03:02:38
当用户需要打印两个CAD控件的图纸时,可以采用嵌套打印实现。 点击此处在线演示 。 实现嵌套打印功能,首先将两个CAD控件放入网页中,js代码如下: <p align="center"> <object classid="clsid:74A777F8-7A8F-4e7c-AF47-7074828086E2" id="MxDrawXCtrl1" codebase="http://www.mxdraw.com/MxDrawX52.CAB#version=7.0.0.1" width=48% height=85% align="left"> <param name="_Version" value="65536"> <param name="_ExtentX" value="24262"> <param name="_ExtentY" value="16219"> <param name="_StockProps" value="0"> <param name="IsRuningAtIE" value="1"> <param name="EnablePrintCmd" value="1"> <param name="ShowStatusBar" value="1"> <param name="ShowMenuBar" value="1"> <param name=

JAVA使用subList实现List的伪分页

孤街醉人 提交于 2020-01-24 10:49:40
@ TOC 使用前提:当列表页的数据量比较大,而数据源又不是数据库的时候(如调用第三方接口),无法支持分页.但是产品那边为了页面统一,用户体验,要实现分页功能的时候. 话不多说,先 上代码 : /** * 处理列表分页 * @author zsc * @param list 分页的list * @param pageNum 页码 * @param pageSize 每页条数 * @return java.util.List<T> * @date 2020/1/19 15:46 **/ private < T extends Serializable > List < T > handlerListPage ( List < T > list , int pageNum , int pageSize ) { if ( CollectionUtil . isEmpty ( list ) ) { return new ArrayList < T > ( ) ; } // 每页大小不能大于总条数 pageSize = Math . min ( pageSize , list . size ( ) ) ; // 如果是第一页 从0开始 到每页条数+1结束 int fromIndex = 0 ; int toIndex = fromIndex + pageSize ; // 不是第一页 if

js中关于array的常用方法

China☆狼群 提交于 2020-01-23 11:40:28
最近总结了一些关于array中的常用方法, 其中大部分的方法来自于《JavaScript框架设计》这本书, 如果有更好的方法,或者有关于string的别的常用的方法,希望大家不吝赐教。 第一部分 数组去重,总结了一些数组去重的方法,代码如下: /** * 去重操作,有序状态 * @param target * @returns {Array} */ function unique(target) { let result = []; loop: for (let i = 0,n = target.length;i < n; i++) { for (let x = i + 1;x < n;x++) { if (target[x] === target[i]) { continue loop; } } result.push(target[i]); } return result; } /** * 去重操作,无序状态,效率最高 * 都会转换为字符串 * @param target * @returns {Array} */ function unique1(target) { let obj = {}; for (let i = 0,n = target.length; i < n;i++) { obj[target[i]] = true; } return Object.keys

数据结构——顺序(线性)查找(算法)

瘦欲@ 提交于 2020-01-23 06:50:05
概述 依次对数组的元素进行遍历,当数组指定位置元素与要查找的值相等时,返回指定位置即可。 不需要数组有序 实例代码: 查找在数组的第一个元素位置 /** * 获取查找到的第一个元素的位置 * * @param array 数组 * @param value 要查找的值 * @return 查找到,返回index,未查找到返回-1 */ private static int linearSearchFirstValue ( int [ ] array , int value ) { if ( ObjectUtils . isEmpty ( array ) ) { throw new RuntimeException ( "数组为空" ) ; } for ( int i = 0 ; i < array . length ; i ++ ) { if ( array [ i ] == value ) { return i ; } } return - 1 ; } 查找在数组的最后一个元素位置 /** * 获取查找到的最后一个元素的位置 * * @param array 数组 * @param value 要查找的值 * @return 查找到,返回index,未查找到返回-1 */ private static int linearSearchLastValue ( int [ ]

springboot 开发

吃可爱长大的小学妹 提交于 2020-01-22 16:41:28
1、Get 请求语法 restful 的请求方式,使用 @PathVariable @RequestMapping(value = "/queryUserById/{name}") public User queryUserById(@PathVariable String name){ return userMapper.queryUserById(name); } 访问: http://localhost:8181/queryUserById/kk 使用:@ RequestParam的参数方式 @RequestMapping(value = "/queryUserById") public User queryUserByIdGet(@RequestParam String name, @RequestParam String password){ return userMapper.queryUserById(name,password); } 访问: http://localhost:8181/queryUserById?name=k1&password=123 2、Post 请求方式 参数使用@RequetBody @RequestMapping(value = "/queryUserById2") public User queryUserByIdPost(

组件化开发的一些思考

狂风中的少年 提交于 2020-01-22 08:01:02
看了limboy和Casa的文章,关于组件化开发,整理了一下思路。 1.为什么要进行组件化开发?   一个产品,在最开始的时候,由于业务简单,一般是直接在一个工程里开发。这种方式,在产品起步阶段,是没有问题的,也能够有效的保证开发效率。但随着业务的不断发展,代码量不断增多,开发团队不断壮大,最后的模块间关系会发展成如下图所示: 从上图中可以看到,这种单一工程开发模式存在一些弊端: 模块间耦合严重( 模块是指较大粒度的业务功能。 比如说微信,我们根据首页Tab,可以分为四大模块:会话、通讯录、发现、我)。示例代码片段如下: - (void)gotoFileDetailVC {  OpenFileViewController *vc = [[OpenFileViewController alloc] initWithFileModel:model];   [self.navigationController pushViewController:vc animated:YES];} 上面这种方式在初期没什么问题,但项目越来越大的时候,每个模块都离不开其他模块,互相依赖在一起。 合并代码的时候容易出现冲突(特别是XIB、Storyboard、project文件,如果一个大产品是用Storyboard来开发页面的话,特别是几个模块共用一个Storyboard的

js 下载 文件

时光毁灭记忆、已成空白 提交于 2020-01-22 00:39:11
创建upload.js 文件 /** * 获取 blob * @param {String} url 目标文件地址 * @return {Promise} */ function getBlob(url) { return new Promise(resolve => { const xhr = new XMLHttpRequest(); xhr.open('GET', url, true); xhr.responseType = 'blob'; xhr.onload = () => { if (xhr.status === 200) { resolve(xhr.response); } }; xhr.send(); }); } /** * 保存 * @param {Blob} blob * @param {String} filename 想要保存的文件名称 */ function saveAs(blob, filename) { if (window.navigator.msSaveOrOpenBlob) { navigator.msSaveBlob(blob, filename); } else { const link = document.createElement('a'); const body = document.querySelector('body');