last

回文自动机与等差数列

微笑、不失礼 提交于 2019-12-07 10:31:27
CF932G Palindrome Partition Given a string \(s\) , find the number of ways to split \(s\) to substrings such that if there are \(k\) substrings \((p_1, p_2, p_3, \dots, p_k)\) in partition, then \(p_i = p_{k - i + 1}\) for all \(i (1 ≤ i ≤ k)\) and \(k\) is even. Since the number of ways can be large, print it modulo \(10^9 + 7\) . \(2 ≤ |s| ≤ 10^6\) . 题解 详细证明见 A bit more about palindromes ,这里只有配图的感性理解。 题目转化 题目划分成偶数段的要求很奇怪,不过有一个转化。 考虑 \(p_i\) 和 \(p_{k-i+1}\) 两个子串,如果 \(p_i\) 对应的下标区间是 \([pos,pos+len-1]\) ,那么 \(p_{k-i+1}\) 对应的就是 \([n-pos-len+2,n-pos+1]\) 。 下面举一些例子来感性理解。当 \(pos=1\) 的时候, \[ s_1=s_

malloc的原理

霸气de小男生 提交于 2019-12-07 07:44:20
任何一个用过或学过C的人对malloc都不会陌生。大家都知道malloc可以分配一 段连续的内存空间,并且在不再使用时可以通过free释放掉。但是,许多程序员对malloc背后的事情并不熟悉,许多人甚至把malloc当做操作系统 所提供的系统调用或C的关键字。实际上,malloc只是C的标准库中提供的一个普通函数,而且实现malloc的 基本 思想并不复杂,任何一个对C和操作系统有些许了解的程序员都可以很容易理解。 这篇文章通过实现一个简单的malloc来描述malloc背后的机制。当然与现有C的标准库实现(例如glibc)相比,我们实现的malloc 并不是特别高效,但是这个实现比目前真实的malloc实现要简单很多,因此易于理解。重要的是,这个实现和真实实现在基本原理上是一致的。 这篇文章将首先介绍一些所需的基本知识,如操作系统对进程的内存管理以及相关的系统调用,然后逐步实现一个简单的malloc。为了简单起见,这篇文章将只考虑x86_64体系结构,操作系统为Linux。 1 什么是malloc 2 预备知识 2.2.1 内存排布 2.2.2 Heap内存模型 2.2.3 brk与sbrk 2.2.4 资源限制与rlimit 2.1.1 虚拟内存地址与物理内存地址 2.1.2 页与地址构成 2.1.3 内存页与磁盘页 2.1 Linux内存管理 2.2 Linux进程级内存管理

全排列与next_permutation

梦想与她 提交于 2019-12-07 04:47:37
全排列是面试笔试过程中经常遇到的一个问题。对于练习过的同学来说,这个问题其实 不算一个难题,但是对于没有练习过的同学,或者说只是知道大致思路的同学来说, 要在短时间内写出正确的全排列代码还是有点难度的。 本文是作者在学习全排列时的一个总结笔记,主要包括: [1]. 全排列的递归实现 [2]. 全排列的非递归实现 [3]. STL中的next_permutation 全排列的递归实现 递归方法的全排列思想挺简单的,就是从第一个数字起,将它与其后面的每个数字 进行交换。 这是大部分教程或博客告诉我们的。我在读完这句话后也觉得挺简单的,就是一个 不断交换的过程嘛,例如“123”的全排列就是将1与后面的每个数字交换得到“213”, “321”,再将第二个数字与之后的每个数字交换得到“132”,“231”,“312”,这样就 得到了“123”的全排列:123,213,321,132,231,312. 然而,当让我在纸上把代码写出来时,就懵了,不知道要从何入手了。 我对递归的理解也不是很透彻,相信看到这篇文章的你也不会很透彻, (透彻的话谁还来搜“全排列的递归实现”啊)。 所以,接下来,我们不能用人的思路来考虑问题了,要从计算机的角度出发,从 递归的角度出发来看问题。 那么,问题转化为:输入数据是“123”,期望得到的结果是顺序输出“123”,“132”, “213”,“231”,“312”,

nginx和Tomcat配合使用时nginx.conf中配置不允许访问WEB-INF的方法

假装没事ソ 提交于 2019-12-06 18:39:20
nginx和Tomcat配合使用时nginx.conf 配置中有个漏洞,那就是没有配置哪些目录是不允许直接访问的,在传统tomcat作为服务器的时候,tomcat本身的机制就禁止直接访问WEB-INF下的内容,但是在nginx中,由于配置了部分内容直接从nginx转发出去,这就导致了WEB-INF目录实际上可能会被暴露出去,一旦暴漏了,那么系统架构,源代码,数据库配置文件,系统配置文件等内容将一并泄露,这对于商业项目来讲会是致命的安全隐患,再次提醒自己以及相关人士,一定要配置不允许访问的目录。 为此,必须在nginx.conf中配置上不允许访问的网站目录。 不允许访问配置方式如下: location ~ ^/(WEB-INF|META-INF)/* { deny all; } 一个完整的nginx.conf例子: user root; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 10240; } http { include mime.types; default_type application

gtid 1032同步异常处理

帅比萌擦擦* 提交于 2019-12-06 12:43:40
gtid 1032同步异常处理 [root@dba_test_002 ~]# cat 3.sql # 在从库中执行 set sql_log_bin=0; insert into fudao_student_lable(uid,tid) values(1,11); insert into fudao_student_lable(uid,tid) values(2,22); insert into fudao_student_lable(uid,tid) values(3,33); insert into fudao_student_lable(uid,tid) values(4,44); set sql_log_bin=1; mysql> select * from fudao_student_lable; +----+-----+-----+ | id | uid | tid | +----+-----+-----+ | 1 | 1 | 11 | | 2 | 2 | 22 | | 3 | 3 | 33 | | 4 | 4 | 44 | +----+-----+-----+ 4 rows in set (0.00 sec) # 在主库中执行 insert into fudao_student_lable(uid,tid) values(1,11); insert into fudao

gtid 同步1050异常处理

好久不见. 提交于 2019-12-06 12:35:21
gtid 同步1050异常处理 [root@dba_test_002 ~]# cat 2.sql CREATE TABLE `fudao_student_lable` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uid` int(11) unsigned NOT NULL COMMENT '学员id', `tid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '老师id', PRIMARY KEY (`id`), KEY `index_tid` (`tid`), KEY `index_uid` (`uid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学员关系表'; # 在从库中创建一个表 mysql> set sql_log_bin=0; Query OK, 0 rows affected (0.00 sec) mysql> CREATE TABLE `fudao_student_lable` ( -> `id` int(11) NOT NULL AUTO_INCREMENT, -> `uid` int(11) unsigned NOT NULL COMMENT '学员id', -> `tid` int(11) unsigned NOT

ABAP DEMO ALVtree显示BOM层级

落爺英雄遲暮 提交于 2019-12-06 11:04:52
展示效果: *&---------------------------------------------------------------------* *& Report YCX_015 *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* REPORT ycx_015 MESSAGE-ID zpp01. TABLES: stpox. INCLUDE <icon>. CLASS: cl_gui_column_tree DEFINITION LOAD, cl_gui_cfw DEFINITION LOAD . DATA: tree1 TYPE REF TO cl_gui_alv_tree, mr_toolbar TYPE REF TO cl_gui_toolbar. DATA: gs_stpox TYPE stpox, gt_stpox TYPE stpox OCCURS 0, gt_fieldcatalog TYPE lvc_t_fcat, gt_item_layout TYPE lvc_t_laci, gs_item_layout

LinkedList实现原理(JDK1.8)

拈花ヽ惹草 提交于 2019-12-06 11:04:34
LinkedList实现原理(JDK1.8) LinkedList底层采用双向链表,如果对链表这种结构比较熟悉的话,那LinkedList的实现原理看明白就相当容易。 链表通过“指针”将一组零散的内存块串联起来使用,每一个元素(节点)通过指针指向它的下一个元素,最后一个节点的下一个指向为null,而双向链表就是除头节点的每一个元素都有指针同时再指向它的上一个元素。链表不同于数组,由于其地址的不连续,且元素占用大小的不确定,所以没法根据地址直接取值,获取元素时需要遍历访问,而双向链表相比于单向链表,一定程度上占用了额外的内存,但支持了双向遍历,加快了元素索取。 public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable LinkedList继承于AbstractSequentialList抽象类,AbstractSequentialList又继承于AbstractList,最终实现了List的接口,所以LinkedList支持List集合的一些常规操作,但同时LinkedList又实现了Queue接口,所以LinkedList也支持队列的一些使用,例如peek、pop等。 1.成员变量

【问题解决方案】Centos操作文件vim-No write since last change (add ! to override)

社会主义新天地 提交于 2019-12-06 10:07:26
参考链接 CSDN:Centos 7 操作文件No write since last change (add ! to override) 问题描述: :q或者:wq退出失败,显示如 No write since last change (add ! to override) 信息 有效的退出方法:ctrl+z退出 END 来源: https://www.cnblogs.com/anliux/p/11976045.html

表进行加密(redact)实验

醉酒当歌 提交于 2019-12-06 10:02:02
redact对具有dba权限的账号不起作用,可以看到未加密前所有的数据,下面每个policy_name都命名为p1,实际情况需要区分不同的命名。 1. 加密准备工作: sqlplus /nolog 连接pdb connect sys/oracle@ora12cpdb1 as sysdba REVOKE dba FROM ZHANGSAN; GRANT CONNECT, resource, unlimited tablespace TO ZHANGSAN; GRANT SELECT ON sys.redaction_policies TO ZHANGSAN; GRANT SELECT ON sys.redaction_columns TO ZHANGSAN; GRANT EXECUTE ON dbms_redact TO ZHANGSAN; Grant Select On dba_tables To zhangsan; 查询约束和加密策略 SQL> select policy_name from redaction_policies; no rows selected 2. ZHANGSAN用户下创建测试表 sqlplus /nolog connect zhangsan/oracle@ora12cpdb1 create table hxl_redact_test as select