网站服务器放置地/seo点击优化
简介
NLog是一个基于.NET平台编写的日志记录类库,它可以在应用程序中添加跟踪调试代码,以便在开发、测试和生产环境中对程序进行监控和故障排除。NLog具有简单、灵活和易于配置的特点,支持在任何一种.NET语言中输出带有上下文的调试诊断信息,并能够将这些信息发送到一个或多个输出目标(target)中,如文件、数据库、控制台等。
NLog的API非常类似于log4net,但配置方式更加简单,使用路由表(routing table)进行配置,使得配置文件易于阅读和维护。此外,NLog还支持结构化日志记录,可以方便地记录复杂的数据类型,如对象、集合等。它还提供了可扩展性,允许用户编写自定义目标或传递自定义值,以满足特定的日志记录需求。
NLog支持多种平台,包括.NET Framework、.NET Core、Xamarin、ASP.NET等,可以在各种应用程序中使用。同时,NLog还遵从BSD license,允许商业应用且完全开放源代码,因此得到了广泛的应用和支持。
NLog 支持结构化日志 记录和传统日志记录。
NLog的重点是:高性能、易于使用、易于扩展和灵活配置。
官网:https://nlog-project.org/
github:https://github.com/nlog/nlog/
配置文件说明:https://github.com/NLog/NLog/wiki/Configuration-file#
NLog配置文件说明
文件位置
启动时,NLog 在各种文件中搜索其配置,如下所述。它加载找到的第一个 nlog 配置。当找到第一个 nlog 配置时,搜索结束。如果未找到配置,NLog 将不会执行任何日志记录。
对于独立的 *.exe 应用程序,按如下方式搜索文件:
- 标准应用程序配置文件 app.config(例如 applicationname.exe.config)
- 应用程序目录中的 applicationname.exe.nlog
- 应用程序目录中的 NLog.config
- NLog.dll.nlog 位于 NLog.dll 所在目录中(仅当 NLog 未安装在 GAC 中时)
对于 ASP.NET 应用程序,按如下方式搜索文件:
- 标准 Web 应用程序配置文件 web.config
- web.nlog 与 web.config 位于同一目录
- 应用程序目录中的 NLog.config
- NLog.dll.nlog 位于 NLog.dll 所在目录中(仅当 NLog 未安装在 GAC 中时)
另请参阅显式 NLog 配置加载(包括有关assets
Xamarin Android 的 -folder 的详细信息)
元素说明
您可以使用以下元素作为 的子元素nlog
。targets
和rules
在任何配置中都是必需的 其他是可选的,并且在高级场景中很有用。
targets
– 定义日志目标/输出rules
– 定义日志路由规则extensions
– 从 *.dll 文件加载 NLog 扩展include
– 包括外部配置文件variable
– 设置配置变量的值
Targets:定义日志目标/输出
<targets><target name="f"xsi:type="File"fileName="${basedir}/logs/${shortdate}.log"layout="${longdate} ${uppercase:${level}} ${message}" maxArchiveFiles="5"archiveAboveSize="10240"archiveEvery="Day"/>
</targets>0
Nlog允许用户配置单个文件大小, 放置在内容过长效率过慢,配置了大小之后, Nlog会自动创建一个新的文件副本,插入新的日志输出。
maxArchiveFiles:允许生成的副本文件最大数量
archiveAboveSize:允许单个文件得最大容量
archiveEvery:按天生成
name:输出目标的名称,用于rules中路由规则writeTo指定
fileName:包含完整的生成文件的路径和文件名
xsi:type:输出类型如下
Chainsaw
ColoredConsole
Console
Database
Debug
Debugger
EventLog
File
LogReceiverService
Mail
Memory
MethodCall
Network
NLogViewer
Null
OutputDebugString
PerfCounter
Trace
WebService
layout:用来规定输出内容格式,语法“${属性}”,可以把上下文信息插入到日志中。
系统变量参考:https://nlog-project.org/config/?tab=layout-renderers
Rules– 定义日志路由规则
路由顺序会对日志打印产生影响。路由匹配逻辑为顺序匹配。
日志可以分不同级别进行输出,日志规则rules里面可以控制输出的日志级别。不同级别的日志代表日志的重要程度,比如一些debug级别的日志在生产环境就会被控制不输出,以减少日志文件的大小。
<rules><logger name="*" minlevel="Debug" writeTo="file" />
</rules>name:记录者的名字。
ame
– 匹配记录器对象的记录器名称 - 可能包含通配符(* 和 ?)minlevel
– 记录的最低级别(与指定级别和上面的级别匹配)maxlevel
– 记录的最大级别(与指定级别和下面的级别匹配)level
– 单级记录levels
- 以逗号分隔的要记录的级别列表writeTo
– 以逗号分隔的要写入的目标列表final
– 最终规则匹配后不处理任何规则enabled
- 设置为false
禁用规则而不删除它ruleName
- 允许使用Configuration.FindRuleByName
和进行规则查找的规则标识符Configuration.RemoveRuleByName
。NLog 4.6.4 中引入- FinalMinLevel - 记录器匹配将被限制为以下规则的指定最低级别。NLog 5.0中引入
日志级别有如下,自上而下,等级递增。
- Trace - 最常见的记录信息,一般用于普通输出
- Debug - 同样是记录信息,不过出现的频率要比Trace少一些,一般用来调试程序
- Info - 信息类型的消息
- Warn - 警告信息,一般用于比较重要的场合
- Error - 错误信息
- Fatal - 致命异常信息。一般来讲,发生致命异常之后程序将无法继续执行。
日志过滤器:可以在路由当中, 为每个路由配置自定义得日志过滤器fliter,如下所示
<rules><logger name="*" writeTo="file"><filters><when condition="length('${message}') > 100" action="Ignore" /><when condition="equals('${logger}','MyApps.SomeClass')" action="Ignore" /><when condition="(level >= LogLevel.Debug and contains('${message}','PleaseDontLogThis'))" action="Ignore" /><when condition="not starts-with('${message}','PleaseLogThis')" action="Ignore" /></filters></logger>
</rules>
Asp .Net Core 集成 NLog
参考:https://github.com/NLog/NLog/wiki/Getting-started-with-ASP.NET-Core-6
-
安装 NLog.Web.AspNetCore 包
在您的项目中,通过 NuGet 包管理器安装
NLog.Web.AspNetCore
包。在 Visual Studio 中,您可以右键点击项目 -> 选择 “Manage NuGet Packages” -> 搜索NLog.Web.AspNetCore
-> 点击 “Install”。或者通过命令行安装:
dotnet add package NLog.Web.AspNetCore
-
配置 NLog
创建一个
nlog.config
文件在项目的根目录下,并添加您的 NLog 配置。例如:
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true" throwExceptions="false" internalLogLevel="Info" internalLogFile="internal-nlog.txt"> <!-- 定义日志输出目标 --> <targets> <target xsi:type="File" name="file" fileName="${basedir}/logs/nlog.txt" layout="${longdate} ${level:uppercase=true} ${message} ${exception}" /> </targets> <!-- 定义日志规则 --> <rules> <logger name="*" minlevel="Debug" writeTo="file" /> </rules>
</nlog>
-
在 Program.cs 中配置 NLog
// 添加 NLog builder.Logging.ClearProviders(); //builder.Logging.SetMinimumLevel(LogLevel.Debug); //NLogBuilder.ConfigureNLog("nlog.config"); builder.Host.UseNLog();
-
使用 NLog
现在您可以在控制器、服务等中注入
ILogger
并使用它记录日志。NLog 将处理这些日志并记录到配置的目标中。using Microsoft.AspNetCore.Mvc;namespace NLogTest.Controllers {[ApiController][Route("[controller]")]public class WeatherForecastController : ControllerBase{private readonly ILogger<WeatherForecastController> _logger;public WeatherForecastController(ILogger<WeatherForecastController> logger){_logger = logger;}[HttpGet(Name = "GetWeatherForecast")]public IEnumerable<WeatherForecast> Get(){try{ int a = 1 / int.Parse("0");return null;}catch (Exception ex){_logger.LogDebug(ex, ex.Message);_logger.LogTrace(ex, ex.Message);_logger.LogInformation(ex, ex.Message);_logger.LogWarning(ex, ex.Message);_logger.LogError(ex, ex.Message);return Enumerable.Empty<WeatherForecast>();}}} }
NLog 自定义全局变量
app.Use(async (context, next) =>{GlobalDiagnosticsContext.Set("TenantId", 1);GlobalDiagnosticsContext.Set("CreateUserId", 111);await next();});// 使用
${gdc:TenantId}
将日志消息写入MySQL数据库
https://github.com/NLog/NLog/wiki/Database-target
安装Nuget包
dotnet add package NLog.Database
dotnet add package MySql.Data
数据库准备(MySQL)
create database mcode_log;
use mcode_log;
create table if not exists erp_log
(Id bigint auto_increment comment '主键'primary key,TenantId bigint null comment '租户Id',ApplicationName varchar(100) null comment '程序名称',HostName varchar(100) null comment '主机',Ip varchar(100) null comment 'Ip地址',Message text null comment '信息',Level varchar(50) null comment '级别',ExceptionInfo text null comment '异常信息',CallInfo text null comment '调用信息',RequestMethod varchar(20) null comment '请求方法',RequestUrl varchar(512) null comment '请求地址',RequestBody text null comment '请求主体',CreateTime datetime null comment '创建时间',CreateUserId bigint null comment '创建用户',CreateUserName varchar(50) null comment '创建用户名称'
);
配置NLog
<?xml version="1.0" encoding="utf-8"?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"autoReload="true"throwExceptions="false" throwConfigExceptions="true"internalLogLevel="warn"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><!--生产环境 throwExceptions 建议为false --><extensions><add assembly="NLog.Web.AspNetCore"/><add assembly="NLog.Database"/></extensions><!--internalLogFile="logfiles"--><targets async="true"><!--屏幕打印消息--><target name="console" xsi:type="ColoredConsole"layout="${newline}=======================================================================${newline} 【当前时间】: [${date:format=yyyy-MM-dd HH\:mm\:ss}] ${newline} 【 级 别 】:[${level}] ${newline} 【 调 用 】:[${callsite}] [${callsite-linenumber}] [${callsite-filename}] [${stacktrace}] ${newline} 【 消 息 】:[${message}] ${newline} 【 异 常 】:[${exception:format=ToString}] [${threadname}] [${threadid}]" /><!--VS输出窗口--><target name="debugger" xsi:type="Debugger"layout="${newline}=======================================================================${newline} 【当前时间】: [${date:format=yyyy-MM-dd HH\:mm\:ss}] ${newline} 【 级 别 】:[${level}] ${newline} 【 调 用 】:[${callsite}] [${callsite-linenumber}] [${callsite-filename}] [${stacktrace}] ${newline} 【 消 息 】:[${message}] ${newline} 【 异 常 】:[${exception:format=ToString}] [${threadname}] [${threadid}]" /><!--保存至文件--><target name="info" xsi:type="File" maxArchiveFiles="30"fileName="${basedir}/Logs/Info/${shortdate}.txt"layout="${newline}=======================================================================${newline} 【当前时间】: [${date:format=yyyy-MM-dd HH\:mm\:ss}] ${newline} 【 级 别 】:[${level}] ${newline} 【 调 用 】:[${callsite}] [${callsite-linenumber}] [${callsite-filename}] [${stacktrace}] ${newline} 【 消 息 】:[${message}] ${newline} 【 异 常 】:[${exception:format=ToString}] [${threadname}] [${threadid}]" /><!--保存至文件--><target name="error" xsi:type="File" maxArchiveFiles="30"fileName="${basedir}/Logs/Error/${shortdate}.txt"layout="${newline}=======================================================================${newline} 【当前时间】: [${date:format=yyyy-MM-dd HH\:mm\:ss}] ${newline} 【 级 别 】:[${level}] ${newline} 【 调 用 】:[${callsite}] [${callsite-linenumber}] [${callsite-filename}] [${stacktrace}] ${newline} 【 消 息 】:[${message}] ${newline} 【 异 常 】:[${exception:format=ToString}] [${threadname}] [${threadid}]" /><!--写入数据库--><target xsi:type="Null" name="blackhole"/><target name="database" xsi:type="Database"dbProvider="MySql.Data.MySqlClient.MySqlConnection, MySql.Data"connectionString="server=110.41.14.13;Database=mcode_log;user id=root;password=123456;SslMode=none"><!--<target name="database" xsi:type="Database"dbProvider="MySqlConnector.MySqlConnection, MySqlConnector"connectionString="server=127.0.0.1;Database=mcode_log;user id=root;password=123456;SslMode=none">--><commandText>insert into erp_log (TenantId, ApplicationName, HostName, Ip, Message, Level, ExceptionInfo, CallInfo,RequestMethod, RequestUrl, RequestBody, CreateTime, CreateUserId, CreateUserName)values (@TenantId,@ApplicationName,@HostName,@Ip,@Message,@Level,@ExceptionInfo,@CallInfo,@RequestMethod,@RequestUrl,@RequestBody,@CreateTime,@CreateUserId,@CreateUserName);</commandText><!--注意:对于非字符串,要指定dbType"--><parameter name="@TenantId" layout="${gdc:TenantId}" dbType="DbType.Int64" /><parameter name="@ApplicationName" layout="${gdc:ApplicationName}" /><parameter name="@HostName" layout="${hostname}" /><parameter name="@Ip" layout="${gdc:Ip}" /><parameter name="@Message" layout="${message}" /><parameter name="@Level" layout="${level}" /><parameter name="@ExceptionInfo" layout="[${exception:format=ToString}] [${threadname}] [${threadid}]" /><parameter name="@CallInfo" layout="[${callsite}] [${callsite-linenumber}] [${callsite-filename}] [${stacktrace}]" /><parameter name="@RequestMethod" layout="${gdc:RequestMethod}" /><parameter name="@RequestUrl" layout="${gdc:RequestUrl}" /><parameter name="@RequestBody" layout="${gdc:RequestBody}" /><parameter name="@CreateTime" layout="${date}" dbType="DbType.DateTime" /><parameter name="@CreateUserId" layout="${gdc:CreateUserId}" dbType="DbType.Int64" /><parameter name="@CreateUserName" layout="${gdc:CreateUserName}" /></target></targets><!--规则--><rules><logger name="*" minlevel="Warn" writeTo="console" /><logger name="NLogTest.*" minlevel="Debug" writeTo="debugger" /><logger name="NLogTest.*" minlevel="Info" maxlevel="Info" writeTo="info" /><logger name="*" minlevel="Warn" writeTo="error" /><logger name="NLogTest.*" minlevel="Warn" writeTo="database" /></rules>
</nlog>
其它数据库
MySql and .NET Core
Install package: https://www.nuget.org/packages/MySql.Data/
dbProvider="MySql.Data.MySqlClient.MySqlConnection, MySql.Data"
or if using packages: https://www.nuget.org/packages/MySqlConnector/ and https://www.nuget.org/packages/MySqlConnector.Logging.NLog/
dbProvider="MySqlConnector.MySqlConnection, MySqlConnector"
System.Data.SQLite and .NET Core
Install package: https://www.nuget.org/packages/System.Data.SQLite
dbProvider="System.Data.SQLite.SQLiteConnection, System.Data.SQLite"
Microsoft.Data.SqlClient and .NET Core
Install package: https://www.nuget.org/packages/Microsoft.Data.SqlClient/
dbProvider="Microsoft.Data.SqlClient.SqlConnection, Microsoft.Data.SqlClient"
Microsoft.Data.Sqlite and .NET Core
Install package: https://www.nuget.org/packages/Microsoft.Data.SQLite/
dbProvider="Microsoft.Data.Sqlite.SqliteConnection, Microsoft.Data.Sqlite"
Npgsql and .NET core
Install package: https://www.nuget.org/packages/Npgsql/
dbProvider="Npgsql.NpgsqlConnection, Npgsql"
Oracle.ManagedDataAccess and .NET
dbProvider="Oracle.ManagedDataAccess.Client.OracleConnection, Oracle.ManagedDataAccess"
Mono.Data.Sqlite and .NET
dbProvider="Mono.Data.Sqlite.SqliteConnection, Mono.Data.Sqlite"
记录故障排除
有时我们的应用程序不会向日志文件写入任何内容,即使我们应该正确配置了日志记录。日志未写入的原因可能有很多。最常见的问题是权限问题,通常在 ASP.NET 进程中,其中aspnet_wp.exe
或w3wp.exe
进程可能没有对我们要存储日志的目录的写访问权限。
NLog 旨在吞掉日志记录可能导致的运行时异常。以下设置可以更改此行为和/或重定向这些消息。
<nlog throwExceptions="true" />
-throwExceptions
在配置文件中添加该属性会导致 NLog 停止屏蔽异常并将其传递给调用应用程序。该属性在部署时非常有用,可以快速定位任何问题。至关重要的是,一旦应用程序正确配置throwExceptions
为"false"
运行,就应立即进行配置,这样意外的日志记录问题就不会导致应用程序挂起或崩溃。<nlog throwConfigExceptions="true" />
- 类似于throwExceptions
但仅与配置异常隔离。与此不同的是throwExceptions
,启用它并不危险,建议在生产环境中启用,因为在生产环境中,日志记录配置的初始设置成功至关重要。NLog 4.3 中引入。默认null
(表示未配置,而是使用 的值throwExceptions
)<nlog internalLogLevel="Trace|Debug|Info|Warn|Error|Fatal" />
– 确定内部日志级别。级别越高,内部日志输出越不详细。当需要诊断日志记录问题时,输出通常非常有帮助。有关设置输出到文件或控制台的选项,请参阅内部日志记录。
相关文章:

Asp .Net Core 系列:Asp .Net Core 集成 NLog
简介 NLog是一个基于.NET平台编写的日志记录类库,它可以在应用程序中添加跟踪调试代码,以便在开发、测试和生产环境中对程序进行监控和故障排除。NLog具有简单、灵活和易于配置的特点,支持在任何一种.NET语言中输出带有上下文的调试诊断信息…...

一个基于 .NET 7 + Vue.js 的前后端分离的通用后台管理系统框架 - DncZeus
前言 今天给大家推荐一个基于.NET 7 Vue.js(iview-admin) 的前后端分离的通用后台权限(页面访问、操作按钮控制)管理系统框架:DncZeus。 官方项目简介 DncZeus是一个基于 .NET 7 Vue.js 的前后端分离的通用后台管理系统框架。后端使用.NET 7 Entity Framework…...

更换商品图片日期JSON格式报错 - 序列化与反序列化日期格式设置
报错信息 msg: “服务端异常,请联系管理员JSON parse error: Cannot deserialize value of type java.util.Date from String “2023-11-13 13:13:35”: not a valid representation (error: Failed to parse Date value ‘2023-11-13 13:13:35’: Cannot parse da…...

FastJson、Jackson使用AOP切面进行日志打印异常
FastJson、Jackson使用AOP切面进行日志打印异常 一、概述 1、问题详情 使用FastJson、Jackson进行日志打印时分别包如下错误: 源码: //fastjon log.info("\nRequest Info :{} \n", JSON.toJSONString(requestInfo)); //jackson …...

嵌入式大厂面试题(2)—— 富士康
从本篇开始将会更新历年来各个公司的面试题与面经,题目来自于网上各个平台以及博主自己遇到的,如果大家有所帮助,帮忙点点赞和关注吧! 岗位:嵌入式软件工程师。 面试时间:30分钟。 岗位职责:官网…...

力扣_字符串4—编辑距离
题目 给你两个单词 w o r d 1 word1 word1 和 w o r d 2 word2 word2, 请返回将 w o r d 1 word1 word1 转换成 w o r d 2 word2 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符删除一个字符替换一个字符 方法—动…...

MySQL篇----第二十篇
系列文章目录 文章目录 系列文章目录前言一、NULL 是什么意思二、主键、外键和索引的区别?三、你可以用什么来确保表格里的字段只接受特定范围里的值?四、说说对 SQL 语句优化有哪些方法?(选择几条)前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍…...

Promise 基础
Promise 基础 理解 抽象表达: Promise 是一门新的技术(ES6 规范)Promise 是 Js 中进行异步编程的新的解决方案(旧方案是使用回调函数) 具体表达 从语法上来说,Promise 是一个构造函数从功能上来说&#x…...

RPA财务机器人之UiPath实战 - 自动化操作Excel进行财务数据汇总与分析之流程建立与数据读取、处理、汇总、分析
一、案例介绍: A公司共有13个开在不同银行的帐户,分别用于不同的业务分部或地区分部收付款。公司总部为了核算每月的收支情况,查看银行在哪个月交易量频繁,需要每月汇总各个银行的帐户借方和贷方金额,并将其净收支&am…...

华为机试真题实战应用【赛题代码篇】-输入整型数组和排序标识/根据排序标识flag给数组排序(附Java、C++和python代码)
目录 问题描述 输出描述: 示例: 代码实现 Java 代码2 代码3 python...

【算法随想录01】环形链表
题目:141. 环形链表 难度:EASY 代码 哈希表遍历求解,表中存储的是元素地址。 时间复杂度 O ( N ) O(N) O(N),空间复杂度 O ( N ) O(N) O(N) /*** Definition for singly-linked list.* struct ListNode {* int val;* …...

macOS Sonoma 14.3.1(23D60)发布
系统介绍 黑果魏叔2 月 9 日消息,苹果今日向 Mac 电脑用户推送了 macOS 14.3.1 更新(内部版本号:23D60),本次更新距离上次发布隔了 17 天。 魏叔 查询苹果官方更新日志,macOS Sonoma 14.3.1 修复内容和 …...

2024-02-11 叮当鸭-平台系统-第三次重构-目标确定
摘要: 对平台系统的第三个版本,做总体规划,明确要达到的目标,功能需求,性能需求。 根据这些所要达到的目标,确定选择何种的方案。方案的成本评估单独进行,本文重点分析要达到的各种目标。 功能需求: 能和…...

Android7.0-Fiddler证书问题
一、将Fiddler的证书导出到电脑,点击Tools -> Options -> HTTPS -> Actions -> Export Root Certificate to Desktop 二、下载Window版openssl, 点击这里打开页面,下拉到下面,选择最上面的64位EXE点击下载安装即可 安…...

Kotlin:单例模式(项目使用实例)
摘要 单例模式主要的五种如下: 饿汉式懒汉式线程安全的懒汉式双重校验锁式(Double Check)静态内部类式 一、项目使用单例模式实例场景 app在运行时缓存部分数据,作为全局缓存数据,以便其他页面及时更新页面对应状态的数据&…...

vue百度地图的和element输入框/v-region的联动
vue百度地图的使用 第一步:安装插件第二步:main.js中引用第三步:页面中使用 第一步:安装插件 npm install vue-baidu-map --save第二步:main.js中引用 // 百度地图 import BaiduMap from vue-baidu-map Vue.use(Baid…...

搜索+哈希/平衡树,LeetCode 987. 二叉树的垂序遍历
目录 一、题目 1、题目描述 2、接口描述 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 给你二叉树的根结点 root ,请你设计算法计算二叉树的 垂序遍历 序列。 对位于 (row, col) 的每个结点而言,其左右子结…...

蓝桥杯每日一题之内存问题
蓝桥杯真题---内存问题 题目描述: 小蓝最近总喜欢计算自己的代码中定义的变量占用了多少内存空间。 为了简化问题,变量的类型只有以下三种: int:整型变量,一个 int 型变量占用 4 Byte 的内存空间。 longÿ…...

Django前后端分离之后端实践2
小实践:实现用户登录、注销及ORM管理功能、事务开启小实践 models.py class Books(models.Model):id models.CharField(primary_keyTrue,max_length20,verbose_name"图书ID")name models.CharField(max_length20,verbose_name图书名称)status models…...

windowsserver 2016 PostgreSQL9.6.3-2升级解决其安全漏洞问题
PostgreSQL 身份验证绕过漏洞(CVE-2017-7546) PostgreSQL 输入验证错误漏洞(CVE-2019-10211) PostgreSQL adminpack扩展安全漏洞(CVE-2018-1115) PostgreSQL 输入验证错误漏洞(CVE-2021-32027) PostgreSQL SQL注入漏洞(CVE-2019-10208) PostgreSQL 安全漏洞(CVE-2018-1058) …...

Java实现免税店商城管理系统 JAVA+Vue+SpringBoot+MySQL
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、系统设计2.1 功能模块设计2.2 研究方法 三、系统展示四、核心代码4.1 查询免税种类4.2 查询物品档案4.3 新增顾客4.4 新增消费记录4.5 审核免税 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的免税店商城管理系…...

【Linux】信号
祝大家新年快乐啦!!!新的一年,第一篇文章我们来谈谈Linux中的信号 目录 一、引入 二、系统内置的信号 三、前台进程和后台进程 四、signal函数 五、信号的产生 5.1 通过终端按键产生信号 5.2 调用系统函数向进程发信号 5…...

[NISACTF 2022]easyssrf
它提示我们输入 那我们输入file:///flag file:// 访问本地文件系统 它提醒我们输file:///fl4g 它提醒我们输ha1x1ux1u.php 看到代码stristr($file, “file”)当我们输入file它会提示我们输了 啥意思可以前面加个/ 也可以通过read读取 思路都是前面加/不等于flag绕过 filephp://…...

在Linux系统中设置全局HTTP代理的步骤与技巧
在Linux系统中,设置全局HTTP代理可以方便我们统一管理和控制网络请求。这不仅可以帮助我们加速网络访问,还可以在某些情况下绕过网络限制或实现匿名上网。下面,我将为你详细介绍在Linux系统中设置全局HTTP代理的步骤与技巧。 步骤一…...

即席查询框架怎么选?
怎么理解即席查询 即席查询(Ad Hoc)是用户根据自己的需求,灵活的选择查询条件,系统能够根据用户的选择生成相应的统计报表。即席查询与普通应用查询最大的不同是普通的应用查询是定制开发的,而即席查询是由用户自定义查…...

【C语言】实现双向链表
目录 (一)头文件 (二) 功能实现 (1)初始化 (2)打印链表 (3) 头插与头删 (4)尾插与尾删 (5)指定位置之后…...

Python操作MySQL基础
除了使用图形化工具以外,我们也可以使用编程语言来执行SQL从而操作数据库。在Python中,使用第三方库: pymysql来完成对MySQL数据库的操作。 安装第三方库pymysql 使用命令行,进入cmd,输入命令pip install pymysql. 创建到MySQL的数据库连接…...

【数学建模】【2024年】【第40届】【MCM/ICM】【E题 财产保险的可持续性】【解题思路】
一、题目 (一) 赛题原文 2024 ICM Problem E: Sustainability of Property Insurance Extreme-weather events are becoming a crisis for property owners and insurers. The world has endured “more than $1 trillion in damages from more than …...

SpringCloud--Eureka注册中心服务搭建注册以及服务发现
注意springboot以及springcloud版本,可能有莫名其妙的错误,这里使用的是springboot-2.6.13,springcloud-2021.0.5 一,Eureka-Server搭建: 1.创建项目:引入依赖 <dependency><groupId>org.sp…...

ansible shell模块 可以用来使用shell 命令 支持管道符 shell 模块和 command 模块的区别
这里写目录标题 说明shell模块用法shell 模块和 command 模块的区别 说明 shell模块可以在远程主机上调用shell解释器运行命令,支持shell的各种功能,例如管道等 shell模块用法 ansible slave -m shell -a cat /etc/passwd | grep root # 可以使用管道…...