target

C# 使用Nlog记录日志到数据库

心已入冬 提交于 2020-04-01 09:08:39
[ 摘要 ]Nlog是一个很不错的.NET日志记录组件,它可以将日志输出到控件台,保存到文本,也可以很方便的记录到数据库中。本文为你介绍C# 使用Nlog记录日志到数据库。 Nlog是一个很不错的.NET日志记录组件,它可以将日志输出到控件台,保存到文本,也可以很方便的记录到数据库中。 可以在这里下载Nlog: http://nlog-project.org/ 这里分享一下如何配置Nlog,可以使其日志记录到数据库中(这里我用的是SQL server 2008)。 新建一个控件台项目:NlogSample,再通过NuGet加入Nlog程序集,如果没有装NuGet也可以在Nlog官网上下载,如图: 安装好以后,在项目中就有了Nlog程序集和Nlog.config文件。 打开Nlog.config文件,在target节点中,增加对数据库的配置。 View Code <target type="Database" name="database" connectionstring="Data Source=.;Initial Catalog=ReportServerTempDB;Integrated Security=True"> <commandText> insert into MyLog ([CreateDate], [Origin], [LogLevel], [Message],

Spring Boot实践——AOP实现

随声附和 提交于 2020-04-01 07:56:45
Spring AOP 介绍   AOP的介绍可以查看 Spring Boot实践——AOP实现   与AspectJ的静态代理不同,Spring AOP使用的动态代理,所谓的动态代理就是说AOP框架不会去修改字节码,而是在内存中临时为方法生成一个AOP对象,这个AOP对象包含了目标对象的全部方法,并且在特定的切点做了增强处理,并回调原对象的方法。   Spring AOP中的动态代理主要有两种方式,JDK动态代理和CGLIB动态代理。JDK动态代理通过反射来接收被代理的类,并且要求被代理的类必须实现一个接口。JDK动态代理的核心是 InvocationHandler 接口和 Proxy 类。   如果目标类没有实现接口,那么Spring AOP会选择使用CGLIB来动态代理目标类。CGLIB(Code Generation Library),是一个代码生成的类库,是利用asm开源包, 可以在运行时动态的生成某个类的子类 。注意,CGLIB是通过继承的方式做的动态代理,因此如果某个类被标记为 final ,那么它是无法使用CGLIB做动态代理的。   这里有注意的几点如下: 从Spring 3.2以后不再将CGLIB放在项目的classpath下,而是将CGLIB类打包放在spring-core下面的org.springframework中

二分查找

别来无恙 提交于 2020-03-31 08:44:09
非递归方法 //二分查找法,在有序的数组中,查找target //如果找到了target,返回相应的索引index template<typename T> int binarySearch(T arr[],int n,T target){ int l=0,r=n-1; while (l<=r) { // int mid = (l+r)/2; int mid = l +(r-l)/2; //避免溢出的问题 if(arr[mid] == target) return mid; //在arr[l...mid-1]之中查找target if(target<arr[mid]) r=mid-1; else l=mid+1; } return -1; } 来源: https://www.cnblogs.com/Erick-L/p/12602837.html

day09 并发编程

允我心安 提交于 2020-03-31 08:06:11
一. 目录   1.进程的概念和两种创建方式   2.多进程爬虫   3.守护进程   4.进程队列   5.进程队列简单应用(实现数据共享)   6.线程的两种创建方式   7.线程和进程的效率对比   8.线程共享统一进程的数据   9.死锁现象   10.线程队列的三种应用   11.多线程执行计算密集型任务   12. 线程池和进程池   13. 回调函数   14.守护线程   15. 协程   16.GlL 全局解释器锁 二. 内容 一.进程的概念和两种创建方式 专业词描述: 操作系统的两大作用 1.把硬件丑陋复杂的接口隐藏起来,为应用程序提供良好的接口 2.管理,调度进程,并且把进程之间对硬件的竞争变的有序化多道技术: 1.产生背景:为了实现单cpu下的并发效果 2.分为两个部分 1.空间上的复用(必须实现硬件层面的隔离) 2.时间上的复用(复用的是cpu的时间片) 什么时候切换? 1.正在执行的任务遇到阻塞 2.正在执行的任务运行时间过程(系统控制的)进程:正在运行的一个过程,一个任务,由操作系统负责调度,由cpu负责 执行程序:程序员写的代码并发:伪并行,单核+多道并行:只有多核才能实现真正的并行同步:一个进程在执行某个任务时,另外一个进程必须等待其执行完毕才能往下走异步:一个进程在执行某个任务时,另外一个进程无须等待其执行完毕,继续往下走进程的创建: 1

python学习——进程

两盒软妹~` 提交于 2020-03-31 02:56:48
1. 操作系统/应用程序 a. 硬件 - 硬盘 - CPU - 主板 - 显卡 - 内存 - 电源 ... b. 装系统(软件) - 系统就是一个由程序员写出来软件,该软件用于控制计算机的硬件, 让他们之间进行相互配合。 c. 安软件(安装应用程序) - QQ - 百度云 - pycharm ... 2. 并发和并行 并发,伪,由于一个人执行速度特别快,人感觉不到停顿。 并行,真,创建10个人同时操作。3. 线程、进程 a. 单进程、单线程的应用程序 print('666') b. 到底什么是线程?什么是进程? Python自己没有这玩意,Python中调用的操作系统的线程和进程。 c. 单进程、多线程的应用程序 代码: import threading print('666') def func(arg): print(arg) t = threading.Thread(target=func) t.start() print('end') 一个应用程序(软件),可以有多个进程(默认只有一个),一个进程中可以创建多个线程(默认一个)。 d. 故事: Alex甄嬛西游传 总结: 1. 操作系统帮助开发者操作硬件。 2. 程序员写好代码在操作系统上运行(依赖解释器)。 任务特别多的情况: 3. 以前的你,写代码: import threading import requests

Java 适配器(Adapter)模式

好久不见. 提交于 2020-03-30 13:59:04
一、什么是适配器模式:   把一个接口变成另外一个接口,使得原本因接口不匹配无法一起工作的两个类一起工作。 二、适配器模式的 分类和 结构:   适配器模式有类的适配器模式和对象的适配器模式两种。   1、类的适配器模式:   有时候为了使用现有的类,但是此类接口不符合需求时,需要将一个类的接口与其他类的接口进行组合,达到我们的使用需求。类的的适配器模式就是把被适配的类的API转换成目标类的API,静态结构图如下图所示:   Target希望即使用sampieOperation1()又使用sampieOperation2(),但是很显然Adaptee并不满足要求,现在只能通过一个中间环节Adapter,继承Adaptee类,提供一个sampieOperation2()方法,满足客户端的需求,达到Target的效果。   (1)Target(目标抽象类):所期待的接口。注意,类的适配器模式中,目标不可以是类,而是接口。   (2)Adapter(适配器类):模式的核心类,将原接口转换成目标接口,必须是具体类。   (3)Adaptee(适配者类):需要适配的接口。   (4)Client(客户类):针对目标抽象类编程,调用其定义的方法。 1 /** 2 * 达到客户端要求的目标角色 3 * 4 * @author:Zhou_DX 5 * @sine: 2019年3月25日 下午7

Android Settings 导入eclipse

佐手、 提交于 2020-03-30 08:11:30
1.加载源码 Android Project from Existing Code 选择源码工程Settings; 2.加载所需要的jar包 (改下名字) out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar out/target/common/obj/JAVA_LIBRARIES/core_intermediates/classes.jar out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/classes.jar out/target/common/obj/JAVA_LIBRARIES/android-common_intermediates/classes.jar out/target/common/obj/JAVA_LIBRARIES/frameworks-core-util-lib_intermediates/classes.jar out/target/common/obj/JAVA_LIBRARIES/ext_intermediates/classes.jar 另外还要根据实际项目情况添加其他jar文件 guava-r07.jar 网上下载 android-support-v4.jar

Redhat可视化界面安装

谁说胖子不能爱 提交于 2020-03-30 02:34:59
镜像版本:7.0以上 1、关闭虚拟机,光盘连接使用ISO映像文件【iso为创建虚拟机的iso镜像文件】 2、开启虚拟机,用root登录 3、将光盘挂载到/mnt   [root@loaclhost ~]#mount /dev/sr0 /mnt 4、配置光盘为本地yum源   [root@loaclhost ~]#vi /etc/yum.repos.d/local.repo 5、输入以下内容,保存并退出 :   [local]   name=local   baseurl=file:///mnt   enabled=1   gpgcheck=0 6、查看组yum包   [root@loaclhost ~]#yum group list 7、安装桌面组件   [root@loaclhost ~]#yum groupinstall -y "Server with GUI" 8、切换到可视化界面   [root@loaclhost ~]#startx 9、查看默认启动模式   [root@loaclhost ~]#systemctl get-default 10、将图形化界面设置为默认启动界面   [root@loaclhost mnt]#cat /etc/inittab   [root@loaclhost mnt]#systemctl set-default graphical

【leetcode】1389. Create Target Array in the Given Order

送分小仙女□ 提交于 2020-03-29 07:32:10
题目如下: Given two arrays of integers nums and index . Your task is to create target array under the following rules: Initially target array is empty. From left to right read nums[i] and index[i], insert at index index[i] the value nums[i] in target array. Repeat the previous step until there are no elements to read in nums and index. Return the target array. It is guaranteed that the insertion operations will be valid. Example 1: Input: nums = [0,1,2,3,4], index = [0,1,2,2,1] Output: [0,4,1,3,2] Explanation: nums index target 0 0 [0] 1 1 [0,1] 2 2 [0,1,2] 3 2 [0,1,3,2] 4 1 [0,4,1,3,2] Example 2:

make和makefile简明基础

梦想与她 提交于 2020-03-29 00:51:22
0.make、makefile是什么?   makefile定义了一系列的规则,来规定哪些部分先编译,哪些部分后编译,写好makefile以后,只需一个make命令就可以让整个工程完全自动编译,所以简单的说,make&makefile实现了大工程的自动化编译。 1.makefile里是什么?   看个makefile的简单例子: 1 target:main.o test.o 2 cc -o target main.o teat.o 3 main.o:main.c x.h 4 cc -c main.c 5 test.o:test.c y.h 6 cc -c test.c 7 clean: 8 rm target main.o test.o   可以看出,makefile中主要由两个部分组成:#1文件依赖关系和#2生成所需命令。其中clean是一个伪目标文件,可用".PHONY:clean"在其前面注明。执行make命令即可编译,执行make clean即可删除所有目标文件。 2.make是如何工作的?   0)make会在当前目录下找名字为"makefile "或"Makefile"的文件;   1)若找到makefile文件,接着找第一个目标文件(target),并把它作为最终的目标文件;   2)若target文件依赖后面的.o文件更新,则执行后面定义的命令会生成target文件