GT

logback配置详解和使用

陌路散爱 提交于 2020-04-05 17:49:58
原文出处:https://www.cnblogs.com/warking/p/5710303.html 一、logback的介绍   Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch。它当前分为下面下个模块:   logback-core:其它两个模块的基础模块   logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging   logback-access:访问模块与Servlet容器集成提供通过Http来访问日志的功能 二、logback取代log4j的理由:    1、更快的实现:Logback的内核重写了,在一些关键执行路径上性能提升10倍以上。而且logback不仅性能提升了,初始化内存加载也更小了。   2、非常充分的测试:Logback经过了几年,数不清小时的测试。Logback的测试完全不同级别的。   3、Logback-classic非常自然实现了SLF4j:Logback-classic实现了SLF4j。在使用SLF4j中,你都感觉不到logback-classic。而且因为logback-classic非常自然地实现了slf4j , 所 以切换到log4j或者其他,非常容易

CMake编程(二)

主宰稳场 提交于 2020-04-05 17:40:32
CMD#29:find_file 查找一个文件的完整路径。 find_file(<VAR> name1 [path1 path2 ...])   这是该命令的精简格式,对于大多数场合它都足够了。它与命令 find_file(<VAR> name1 [PATHS path1 path2 ...]) 是等价的。 find_file( <VAR> name | NAMES name1 [name2 ...] [HINTS path1 [path2 ... ENV var]] [PATHS path1 [path2 ... ENV var]] [PATH_SUFFIXES suffix1 [suffix2 ...]] [DOC "cache documentation string"] [NO_DEFAULT_PATH] [NO_CMAKE_ENVIRONMENT_PATH] [NO_CMAKE_PATH] [NO_SYSTEM_ENVIRONMENT_PATH] [NO_CMAKE_SYSTEM_PATH] [CMAKE_FIND_ROOT_PATH_BOTH | ONLY_CMAKE_FIND_ROOT_PATH | NO_CMAKE_FIND_ROOT_PATH] )   这条命令用来查找指定文件的完整路径。一个名字是<VAR>的缓存条目(参见CMakeCache.txt的介绍—

第7周 【项目4】 队列数组

若如初见. 提交于 2020-04-05 17:37:00
/* *Copyright (c)2017,烟台大学计算机与控制工程学院 *All rights reservrd. *作者:李欣豪 *完成时间:2017年12月14日 *版本号:v1.0 *问题描述: 创建10个队列,分别编号为0-9(处理为队列数组,编号即下标)。输入若干个正整数,以数字0作为结束。设输入的值为x,其个位数字的大小为i,则将x插入到编号为i的队列中。最后输出所有的非空队列。   要求将队列处理成链式队列,使用链式队列算法库中定义的数据类型及算法,程序中只包括一个函数(main函数),入队和出队等操作直接在main函数中调用即可。   设程序运行时输入:70 59 90 72 67 88 80 64 29 97 18 83 40 13 0 一、以 链队算法库为基础, 创建一个新的工程,建立头文件: #ifndef LIQUEUE_H_INCLUDED #define LIQUEUE_H_INCLUDED typedef char ElemType; typedef struct qnode { ElemType data; struct qnode *next; } QNode; //链队数据结点类型定义 typedef struct { QNode *front; QNode *rear; } LiQueue; //链队类型定义 void InitQueue

C/C++ 第三周线性表项目(2) 顺序表的应用

本秂侑毒 提交于 2020-04-05 17:32:28
*Copyright(c)2017,烟台大学计算机与控制工程学院 *All rights reservrd. *作者:黄士胜 *完成时间:2017年9月16日 *版本号:v1.0 *问题描述:定义一个采用顺序结构存储的线性表,设计算法完成。 *输入描述:无 *程序输出:依据各个函数而定 运用多文件组织完成本次项目。  头文件:list.h ,  源文件:list.cpp 已经把代码省略。 主函数相关代码: #include "../list.h" #include <stdio.h> void move(SqList *&L) { int i=0,j=L->length-1; ElemType tmp; while (i<j) { while ((i<j) && (L->data[j]%2==0)) //从右往左,找到第一个奇数(偶数忽略) j--; while ((i<j) && (L->data[i]%2==1)) //从左往右,找到第一个偶数(奇数忽略) i++; if (i<j) //如果未到达“分界线”,将右边的奇数和左边的偶数交换 { tmp=L->data[i]; L->data[i]=L->data[j]; L->data[j]=tmp; } } //待循环上去后,继续查找,并在必要时交换 } //操作结束后,奇数在左,偶数在右 //用main写测试代码 int

SQLite数据库C语言接口使用实例教程

南笙酒味 提交于 2020-04-05 17:22:24
文章目录 SQLiteC语言操作说明 `SQLITE3` 为什么要用 `SQLite`? `SQLite`命令 常用SQL语句 创建表 修改表 数据表测查询 限定和排序 多表连接 外连接 交叉连接 子查询 条件结果 处理SQLite中的NULL 高级SQL 修改数据 插入数据 跟新记录 删除数据 本文用到的函数说明 数据的删除 delete的实现 插入数据 更新数据 使用二进制的形式对数据库进行保存 SQLiteC语言操作说明 SQLITE3 ​ 在开始之前先介绍一下什么是 SQLite 数据库, SQLite 是一款开源的、嵌入式关系型数据库, SQLite 非常适合前途是产品,因为其没有独立运行的进程,它与服务的应用程序在应用程序的进程空间内共生共存。它的代码和应用程序的代码是在一起的或者说是嵌入其中,作为托管它的程序的一部分。 ​ 为什么学习数据库建议你先学习 SQLite 数据库,特别是嵌入式开发的人员。因为 SQLite 的作者都说过 SQLite 是一款无论你使用的是什么操作系统,都能够在5分钟内完成,数据库的安装配置,以及创建自己的第一个数据库。 为什么要用 SQLite ? 不需要一个单独的服务器进程或操作的系统(无服务器的)。 SQLite 不需要配置,这意味着不需要安装或管理。 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。 SQLite

C/C++ 第八周串和数组 (一)顺序串算法 项目2—(一)

只愿长相守 提交于 2020-04-05 17:02:59
/* *Copyright(c)2017,烟台大学计算机学院 *All right reserved. *文件名:main.cpp sqqueue.h sqqueue.cpp *作者:黄士胜 *完成日期:2017年11月1日 *版本号:v1.0 * *问题描述: 采用顺序存储的方式存储串,实现下列算法并测试。 *输入描述:无 *程序输出:见运行结果截图 */ (一) 串的替换 主函数: #include <stdio.h> #include "../sqstring.h" void Trans(SqString &s, char c1, char c2) { int i; for (i=0; i<s.length; i++) if (s.data[i]==c1) s.data[i]=c2; } int main() { SqString s; StrAssign(s, "messages"); printf("替换前:"); DispStr(s); Trans(s, 'e', 'a'); printf("替换后:"); DispStr(s); return 0; } 运行结果: 学后总结: 了解了简单的串的替换,懂得了串的基本知识。 点赞 收藏 分享 文章举报 不会游泳的咸鱼 发布了34 篇原创文章 · 获赞 9 · 访问量 1万+ 私信 关注 来源: oschina 链接:

C/C++ 第五周线性表 项目(二)建立链栈算法库

有些话、适合烂在心里 提交于 2020-04-05 16:32:14
/* *Copyright(c)2017,烟台大学计算机学院 *All right reserved. *文件名:main.cpp sqstack.h sqstack.cpp *作者:黄士胜 *完成日期:2017年9月28日 *版本号:v1.0 * *问题描述:建立链栈算法库 *输入描述:无 *程序输出:见运行结果 */ 问题描述:定义链栈存储结构,实现其基本的运算,并完成测试。 参照项目(一)完成此项目二 1.头文件:listack.h,包含定义链栈数据结构的代码、宏定义、要实现算法的函数的声明; #ifndef LISTACK_H_INCLUDED #define LISTACK_H_INCLUDED typedef char ElemType; typedef struct linknode { ElemType data; //数据域 struct linknode *next; //指针域 } LiStack; //链栈类型定义 void InitStack(LiStack *&s); //初始化栈 void DestroyStack(LiStack *&s); //销毁栈 int StackLength(LiStack *s); //返回栈长度 bool StackEmpty(LiStack *s); //判断栈是否为空 void Push(LiStack *&s

第13周 【项目一】 验证折半查找算法

房东的猫 提交于 2020-04-05 16:31:51
/* *Copyright (c)2017,烟台大学计算机与控制工程学院 *All rights reservrd. *作者:李欣豪 *完成时间:2017年11月30日 *版本号:v1.0 *问题描述: 运行并本周视频中所讲过的算法,观察结果并领会算法。 1、认真阅读并验证折半查找算法。请用有序表{12,18,24,35,47,50,62,83,90,115,134}作为测试序列,分别对查找90、47、100进行测试。 一、折半查找代码: #include <stdio.h> #define MAXL 100 typedef int KeyType; typedef char InfoType[10]; typedef struct { KeyType key; //KeyType为关键字的数据类型 InfoType data; //其他数据 } NodeType; typedef NodeType SeqList[MAXL]; //顺序表类型 int BinSearch(SeqList R,int n,KeyType k) { int low=0,high=n-1,mid; while (low<=high) { mid=(low+high)/2; if (R[mid].key==k) //查找成功返回 return mid+1; if (R[mid].key>k) //继续在R

C/C++ 第三周线性表项目(2) 求集合并集

帅比萌擦擦* 提交于 2020-04-05 16:06:18
/* *Copyright(c)2017,烟台大学计算机学院 *All right reserved. *文件名:main.cpp list.h list.cpp *作者:黄士胜 *完成日期:2017年9月21日 *版本号:v1.0 * *问题描述:两个合集的交集 *输入描述:无 *程序输出:见窗口 */ 还是运用了多文件组织来实现本项目的运行。 代码: #include "../list.h" #include "stdio.h" void unionList(SqList *LA, SqList *LB, SqList *&LC) { int lena,i; ElemType e; InitList(LC); for (i=1; i<=ListLength(LA); i++) //将LA的所有元素插入到Lc中 { GetElem(LA,i,e); ListInsert(LC,i,e); } lena=ListLength(LA); //求线性表LA的长度 for (i=1; i<=ListLength(LB); i++) { GetElem(LB,i,e); //取LB中第i个数据元素赋给e if (!LocateElem(LA,e)) //LA中不存在和e相同者,插入到LC中 ListInsert(LC,++lena,e); } } int main() { SqList

logback为单独的包或者类配置输出文件

有些话、适合烂在心里 提交于 2020-04-05 15:56:23
原文出处: https://www.cnblogs.com/izecsonLee/p/9058385.html 最近接一个这样的需求,为某个类的日志输出到指定的文件。一般都是按日志级别输出到对应的文件中。查阅相关资料和logback教程,写出下面的demo供参考。 1.添加一个appender <!-- jetty日志单独输出 --> <appender name="demo—all" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${rootpath}gateserver_demo-all.log</file> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>DEBUG</level> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy" > <FileNamePattern>${rootpath}demo-all.%i.log</FileNamePattern> <minIndex>1</minIndex> <maxIndex>10</maxIndex> </rollingPolicy>