nlog

学习笔记:可持久化线段树(主席树):静态 + 动态

孤人 提交于 2020-04-30 04:13:19
学习笔记:可持久化线段树(主席树):静态 + 动态 前置知识: 线段树。线段树分享可以看: @秦淮岸 、 @ZYzzz 、 @妄想の岚がそこに 树状数组。$BIT$分享可以看: @T-Sherlock 、 Chicago 、 @weishengkun 权值线段树:相当于将线段树当成一个 桶 ,其中的每一个点所代表的区间相当于 一段值域 。维护的值为这段值域中的一些信息。 例如该图,节点$2$代表的是值域为$[1, 2]$的区间,节点$6$代表值域为$[3, 4]$的区间... 可持久化概念: 可持久化实质上就是存储该数据结构 所有的历史状态 ,以达到高效的处理某些信息的目的。 静态区间第$k$小 抛出问题 题目链接 :给定长度为$N$的序列$A$,有$M$次询问,给定$l_i, r_i, k_i$,求在$[l_i, r_i]$区间内第$k_i$小的数是多少。 $N <= 10^5, M <= 10^4$ 先考虑如何求总序列第$k$小 我们可以建立一颗权值线段树,每个点存储的信息为 该值域区间存在的数的个数 。 因为线段树的性质,所以每个点的左子树的值域区间 $ <= $ 右子树的值域区间。 所以我们先看左子树区间有多少个数,记为$cnt_{left}$。 如果$k_i <= cnt_{left}$,说明第$k_i$小的数一定在左子树的值域内,所以问题便转换为了“在左子树的值域内找第

可修改的区间第K大 BZOJ1901 ZOJ2112

大兔子大兔子 提交于 2020-04-30 03:18:53
http://blog.csdn.net/u014492306/article/details/47981315 //变相离线做法 离散化缩小区间范围,做两大个线段树,第一个就是普通的持久化树,有个前缀和就好。 第二个用线段树套树状数组,每次询问就把这两个都求出来加一下。 更改就更改第二个,其实更改的时候只需要建一条链然后重复用这条链衍生就好了,但是为了抄的方便,就不改了。。。 当然这个空间上比较优秀的只有O(nlogn). #include<bits/stdc++.h> #define lowbit(x) (x&(-x)) using namespace std; const int N=6e4+ 5 ; const int M= 2600006 ; int m,n,nn,tot; int a[N],f[N],T[N],S[N]; int sum[M],l[M],r[M]; int use[N]; int h( int x) { return lower_bound(f+ 1 ,f+nn+ 1 ,x)- f;} void update( int pr, int lx, int rx, int v, int k){ l[ ++tot]=l[pr],r[tot]=r[pr],sum[tot]=sum[pr]+ k; if (lx==rx) return ; int mid=(lx

最近树上公共祖先详细图解

旧城冷巷雨未停 提交于 2020-04-29 17:01:12
一、定义 LCA(Least Common Ancestors),树上最近公共祖先,顾名思义,也就是说,对于节点u,v,设x=lca(u,v),则,u和v均在x的子树中,并且x的深度最小。 图画得太丑了 如这幅图中:lca(5,6)=2 ,lca(6,3)=1 ,lca(3,9)=9。 二、解法 (1)dfs序 何为dfs序?即为深度优先搜索遍历完这棵树后所获得的节点访问先后顺序。如上面那副图的dfs序: 求dfs序代码: void dfs ( int x, int depth) //遍历一遍图求dfs序 { int i; len++; ola[len]=x;dep[len]=depth; //ola数组用来存dfs序 vis[x]=len; //标记x并存下x在ola数组中出现的位置 for(i=first[x];i;i=next[i]) { if(!vis[v[i]]) { dfs(v[i],depth+ 1); len++; ola[len]=x; dep[len]=depth; } } } 我们可以发现,任何一个节点出现两次之间,一定包含了他的子树。于是我们在将dfs序与节点深度结合起来看: 我们再来找5和3的lca,可以由下一幅图知道1。 不难发现,我们要找的点即为5和3之间深度最小的点。因此我们只需要将dfs序和每个点在dfs序上的位置预处理出来以后

ASP.NET Core 2.1 : 十二.内置日志、使用Nlog将日志输出到文件

给你一囗甜甜゛ 提交于 2020-04-25 04:57:56
  应用离不开日志,虽然现在使用VS有强大的调试功能,开发过程中不复杂的情况懒得输出日志了(想起print和echo的有木有),但在一些复杂的过程中以及应用日常运行中的日志还是非常有用。   ASP.NET Core提供了内置的日志,但没弄明白这么把它输出到文件, 只能在VS的输出中查看, 谁知道怎么弄告诉我一下。( ASP.NET Core 系列目录 ) 本例 GitHub 一、内置日志的使用   上一篇:如何在后台运行一个任务 中使用到了内置的日志,直接在构造中注入一下,然后直接使用即可, 非常方便 public TokenRefreshService(ILogger<TokenRefreshService> logger) { _logger = logger; } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { _logger.LogInformation( " Service starting " ); // ************ } 然后在【输出】窗口中就可以看到输出的日志了: 想把它输出到txt中, 没找到相应的方法,试试常见的Nlog吧 二、使用Nlog将日志输出到文件 A.安装Nlog 在NuGet中搜索并安装 NLog.Web.AspNetCore ,

.NET项目中NLog的配置与使用

北慕城南 提交于 2020-04-25 01:59:47
引言:   因为之前在项目开发中一直都是使用的Log4Net作为项目的日志记录框架,最近忽然感觉对它已经有点腻了,所以尝试着使用了NLog作为新项目的日志记录框架(当然作为一名有志向的攻城狮永远都不能只局限于眼前的技术,要不断的使用和学习新的技术)。当然serilog也是一个不错的日志记录框架哟,不过今天主要还是要讲述的是NLog在项目中的配置和使用。 NLog框架源码: https://github.com/NLog/NLog 一、导入NLog NuGet PackAge: 二、配置NLog 配置文件: 注意:在这里我是专门新建了一个NLog.config 配置文件用来进行独立配置,当然你也可以在web.config中完成相应的配置!! NLog详细配置文件信息,请查看官网说明: https://github.com/nlog/nlog/wiki/configuration-file 可参考晓晨大佬的NLog配置: https://www.cnblogs.com/stulzq/p/8504860.html 我的NLog.config 配置代码: <? xml version="1.0" encoding="utf-8" ?> < nlog xmlns ="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi ="http:

科学使用Log4View2查看日志

和自甴很熟 提交于 2020-04-24 23:31:52
目录 目录 前言 科学使用 编辑和调试程序集 调试程序集 编辑程序集 结语 推荐文献 目录 NLog日志框架使用探究-1 NLog日志框架使用探究-2 科学使用Log4View2 前言 这个标题很低调吧,但是既然你点进来,那么接下来的干货是属于你的。 不想成为黑客的程序员不是好程序员。在上一篇 《NLog日志框架使用探究-2》 文章提到了Log4View2工具有30天的试用期,超过试用期许多功能就被限制,比如不能使用数据库加载。那么我们如何科学使用它呢? 本篇文章涉及到反编译技术、对称加密技术、IL中间语言等技术。掌握了这些技术之后你会发现原来自己也能更加科学的使用软件。 接下来的内容仅供个人学习使用,任何人不得用于商业用途或用于非法途径,一切后果本人概不负责。 科学使用 我们可以使用 dnspy 、 ilspy 以及reflector对.net程序进行反编译。Log4View2就是纯.net开发的项目。 reflector是收费的,也需要科学使用。 ILSpy是开源的.NET程序集浏览器和编译器。 dnSpy是一个调试器和.NET程序集编辑器。即使没有任何可用的源代码,也可以使用它来编辑和调试程序集。 dnspy也是基于ILSpy的反编译引擎,在它基础上增加了丰富的功能,甚至可以直接修改源代码。首先我们通过dyspy看看相关注册的源码,直接在安装路径找到Log4View

.net反编译原理

女生的网名这么多〃 提交于 2020-04-24 23:02:32
目录 目录 前言 ILdasm ILasm 结语 推荐文献 目录 NLog日志框架使用探究-1 NLog日志框架使用探究-2 科学使用Log4View2 前言 本来没有想写反编译相关的文章,但是写着写着就扯到反编译破解了。更何况上一篇 《科学使用Log4View2》 文章还被管理员移出了首页。 花了几个小时写的文章被移除首页的感受你们了解吗?终于凭借我的三寸不烂之舌终于打动管理大大恢复到了首页。 为了更加合规合法,因此有了该篇文章。 上一篇文章我们使用DnSpy可以非常方便的反编译甚至可以直接修改IL并生成新的程序集。本篇文章我们就来讲讲在DnSpy出现之前,我们是如何修改程序集的。 ILdasm 在没有DnSpy这等强大的反编译工具之前,若需要修改程序集,一般都需要使用微软官方提供的ILDasm反编译,ILAsm编译IL。 本篇文章的重点不是谈论IL的语法,IL如何阅读,想要了解这些,网上一搜一大把。推荐一篇吧: https://www.cnblogs.com/zery/p/3366175.html。 IL拆解器是IL汇编器(Ilasm.exe)的配套工具。ILDasm.exe采用包含中间语言(IL)代码的可移植可执行(PE)文件,并创建适合作为ILasm.exe 输入的文本文件。 这是官方的解释,说白了就是它可以将.Net程序集反编译为IL语言文件

Net Core 2.1 日志记录框架NLog+Mysql配置

♀尐吖头ヾ 提交于 2020-04-24 22:54:43
NLog是什么? 这里还是简单介绍一下吧,为了让小白也知道。NLog是一个灵活的免费日志记录平台,适用于各种.NET平台,包括.NET Core。NLog可以通过简单地配置就可以可以很方便的写入多个日志仓库中(数据库,文件,控制台)。 NLog在Net Core中怎么用啊? 用之前你得新建一个asp.net core项目吧。这里以net core api为例吧。如下图所示是博主刚刚创建的net core api项目。 建好项目之后干什么呢、当然得添加引用了。你可以随心所欲的使用Nuget或者命令进行安装 Install-Package NLog -Version 4.6.5 Install -Package NLog.Web.AspNetCore -Version 4.8.4 Install-Package MySql.Data -Version 8.0.16 上面说了,NLog只需要简单地修改配置就可以使用,那接下来就是新建一个NLog配置文件了。你可以通过Nuget或者程序包控制台进行安装,也可以自己新建一个NLog.config文件。这里还是通过程序包控制台进行安装吧 安装后看到项目目录多了一个NLog.config文件。这里需要注意,右键设置一下这个NLog.config的属性为“始终复制” 打开nlog.config文件,看看里面的结构,发现有两个重要节点,一个是声明目标

.Net快速上手Nlog日志组件

谁都会走 提交于 2020-04-24 22:54:29
[toc] 一、NLog 简介 NLog是适用于各种.NET平台的灵活,免费的日志记录平台。NLog使写入多个目标变得容易 。(数据库,文件,控制台)并即时更改日志记录配置。(本文主要介绍写日志到文件中) Nlog 官网: https://nlog-project.org/ Nlog 配置说明: https://nlog-project.org/config/ Nlog Github Wiki: https://github.com/NLog/NLog/wiki 注:以下操作为 asp.net core web项目,编辑器为VS2019 二、NLog 安装 2.1 使用程序包管理控制台(Package Manager) PM> Install-Package NLog 2.2 .Net CLI dotnet add package NLog 在项目的根目录下,在cmd窗口中输入上面的命令即可安装。 三. NLog 配置 3.1 Nlog配置方式 通过配置文件; 通过程序代码; 3.2 通过配置文件配置Nlog 在项目的根目录创建Nlog.config文件,并设置文件属性: 具体配置 下面的配置,就是一个简单的配置Nlog.config的demo,将下面的配置复制到Nlog.config中,即可将日志写入到PsTest.log文件中。 <?xml version="1.0"

ASP.NET Core中使用NLog记录日志

孤者浪人 提交于 2020-04-24 22:54:12
2019/10/28, ASP.NET Core 3.0, NLog 4.6.7, NLog.Web.AspNetCore 4.9.0 摘要:NLog在ASP.NET Core网站中的使用,NLog日志写入数据库,NLog日志写入文件 案例代码 编辑于 2020/02/21 : 本文的记录日志封装了统一的NLogUtil方法进行调用写日志,其实可以使用依赖注入的方式得到logger,并且日志按等级过滤,可以考虑看我写的新的关于NLog使用的方法: 《ASP.NET Core搭建多层网站架构【7-使用NLog日志记录器】》 ##需求 1.日志自动写入到数据库、写入到文件 2.appsettings.json数据库连接更改后,不需要去改NLog中的连接地址,启动网站或项目时自动检测变动然后去更改,以appsettings.json为准,保持同步。 3.写入日志时,除了NLog自带的字段,新增LogType自定义字段记录日志类型,例如网站日志、中间件日志等 4.统一的写日志方法,不用每次get一个logger对象(或依赖注入)来记日志 ##安装包 在nuget中安装 NLog 和 NLog.Web.AspNetCore ,这两个是NLog相关的包。 还需要安装NLog写入数据库的数据库适配器,我这里写入到MySQL数据库,所以安装 MySql.Data 如果是写入到SQL