Other

LiberOJ 10176 最大连续和 单调队列优化DP

题目描述 给你一个长度为\(n\)的整数序列{\(A_1,A_2,...,A_n\)},要求从中找出一段连续的长度不超过\(m\)的非空子序列,使得这个序列的和最大。 输入格式 第一行为两个整数\(n,m\); 第二行为\(n\)个用空格分开的整数序列,每个数的绝对值都小于\(1000\) 。 输出格式 仅一个整数,表示连续长度不超过\(m\)的最大非空子序列和。 Solution 和前面的单调队列优化几乎一样,但是有部分改变: \(dp[i][1] = \max_j(sum[i]-sum[j])\) 注意的一点是,对于\(dp\)数组,初始化得\(-\inf\). 点击查看代码 ll MAX = -inf; int main(){ //ios::sync_with_stdio(false); n =read(); m =read(); dp[0][0] = dp[0][1] = -inf; for(int i=1;i<=n;i++){ scanf(%lld, &a[i]); sum[i] = ll(sum[i-1]+a[i]); MAX = max(MAX, a[i]); dp[i][0] = dp[i][1]=-inf; } //cout<<MAX<<endl; int head=0,tail=0; q[head]=0;q[tail]=0; for(int i=1;i<=n;i++){ dp[i][0] = max(dp[i-1][0],dp[i-1][1]); while(head<tail && i-q[head]>m)++head; dp[i][1] = sum[i]-sum[q[head]]; while(head<=tail && -sum[i]>-sum[q[tail]])--tail; q[++tail] = i; } cout<<ll(max(MAX,max(dp[n][0],dp[n][1])))<<endl; }

前后端分离博客项目(摘抄自公众号MarkerHub)

1、前后端分离博客项目(摘抄自公众号MarkerHub) 1.0、吃水不忘挖井人 本文摘抄自公众号MarkerHub 作者:吕一明 项目代码:https://github.com/MarkerHub/vueblog 项目视频:https://www.bilibili.com/video/BV1PQ4y1P7hZ/ 在此感谢大佬! 1.1、前言 从零开始搭建一个项目骨架,最好选择在未来易拓展的技术,适合微服务化体系等。所以一般以Springboot作为我们的框架基础 然后数据层,常用的是Mybatis,易上手,方便维护。但是单表操作比较困难,特别是添加字段或减少字段的时候,比较繁琐,这个项目推荐使用Mybatis Plus(https://mp.baomidou.com/),为简化开发而生,只需简单配置,即可快速进行 CRUD 操作,从而节省大量时间。 作为一个项目骨架,权限也是我们不能忽略的,Shiro配置简单,使用也简单,所以使用Shiro作为我们的的权限。 考虑到项目可能需要部署多台,这时候我们的会话等信息需要共享,Redis是现在主流的缓存中间件,也适合我们的项目。 然后因为前后端分离,所以我们使用jwt作为我们用户身份凭证。 1.2、技术栈 1.3、开发步骤 1.4、实际操作心得 本地新建SpringBoot项目后,在pom文件中通过依赖写法导入mybatis plus的jar包 准备数据库信息:建表,插入数据 写yml配置文件:配置数据库的信息,还配置了myabtis plus的mapper的xml文件的扫描路径 新建一个mybatis plus配置类: 开启mapper接口扫描(通过@mapperScan注解指定要变成实现类的接口所在的包) 添加分页插件PaginationInterceptor 使用代码生成器(一个main方法,根据写上参数执行后,就可以直接根据数据库表信息生成entity、service、mapper等接口和实现类。)搭出程序架子

javaweb使用io操作从服务器下载图片

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// String realPath = this.getServletContext().getRealPath(22 .png);//获取需要下载文件的路径 String realPath = F:/IdeaData/web2/servlet01/target/servlet01-1.0-SNAPSHOT/WEB-INF/classes/22.jpg; System.out.println(文件下载路径 + realPath);//下载文件名称获取 String filename = realPath.substring(realPath.lastIndexOf(\\ + 1));//设置让浏览器支持下载我们需要的东西 resp.setHeader(Content-disposition,attachment;filename+filename);//获取文件输入流 FileInputStream fileInputStream = new FileInputStream(realPath);//创建缓冲区 int i = 0; byte[] buffer = new byte[1024]; //获取output stream对象 ServletOutputStream outputStream = resp.getOutputStream();//将file output stream流写入buffer缓冲区,使用outputsstream将缓冲区文件输出到就客户端 while (fileInputStream.read(buffer)!=-1){ outputStream.write(buffer); } //关闭流资源 fileInputStream.close(); outputStream.close(); }

python学习-Day41-JS

目录JavaScript简介JavaScript 变量和注释注释变量、常量声明(创建)变量声明常量变量赋值数据类型数值类型(Number)字符类型(String)字符串属性字符串可以是对象字符串方法布尔类型对象方法 JavaScript 简介 # 1.JavaScript与Java没有半毛钱关系 之所以叫这么个名字纯粹是为了蹭当时Java的热度 # 2.JavaScript简称JS 也是一门前端的编程语言 前端由于非常受制于后端,所以有一些人异想天开想要通过js来编写后端代码一统江湖 由此开发了一个叫nodejs的工具(支持js跑在后端服务器上):不好用 # 3.JS最初由一个程序员花了七天时间开发的 里面存在很多bug 为了解决这些bug一直在编写相应的补丁 补丁本身又有bug 最后导致了js中有很多不符合逻辑的地方(成了大家墨守成规的东西) # 4.JavaScript与ECMAScript JavaScript原先由一家公司开发 希望其他公司都使用 最后被组织改名 # 5.版本问题 ECMA5 ECMA6 JavaScript 与 Java 是两种完全不同的语言,无论在概念上还是设计上。 Java(由 Sun 发明)是更复杂的编程语言。 # ECMA-262 是 JavaScript 标准的官方名称。 JavaScript 由 Brendan Eich 发明。它于 1995 年出现在 Netscape 中(该浏览器已停止更新),并于 1997 年被 ECMA(一个标准协会)采纳。 JavaScript 已经由 ECMA(欧洲电脑制造商协会)通过 ECMAScript 实现语言的标准化。 # JavaScript 是脚本语言 JavaScript 是一种轻量级的编程语言。 # JavaScript 是可插入 HTML 页面的编程代码。 JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。 编写js代码的位置 1.

python学习-Day41-CSS

目录HTML-CSS-3溢出属性 - Overflow如何设置浏览器自动溢出处理定位属性 - Positionstatic 定位fixed 定位relative 定位absolute 定位sticky 定位定位操作重叠的元素(z-index属性)补充知识 HTML-CSS-3 溢出属性 - Overflow CSS overflow 属性用于控制内容溢出元素框时显示的方式。 CSS overflow 属性可以在控制内容溢出元素框时在对应的元素区间内添加滚动条。 overflow 属性只工作于指定高度的块元素上。 # 文本内容超出了标签的最大范围 overflow: hidden; 直接隐藏文本内容 overflow: auto\scroll; 提供滚动条查看 默认情况下,overflow 的值为 visible, 意思是内容溢出元素框: div { width: 200px; height: 50px; background-color: #eee; overflow: visible; } 如何设置浏览器自动溢出处理 <!DOCTYPE html> <html> <head> <meta charset=utf-8> <title></title> <style> div { background-color:#00FFFF; width:150px; height:150px; overflow:auto; } </style> </head> <body> <p>overflow 属性规定当内容溢出元素框时发生的事情。</p> <div> 当你想更好的控制布局时你可以使用 overflow 属性。尝试修改 overflow 属性为: visible, hidden, scroll, 或 inherit 并查看效果。 默认值为 visible。 </div> </body> </html> 定位属性 - Position position 属性指定了元素的定位类型。

apache .htaccess配置去掉index.php

httpd.conf增加LoadModule rewrite_module modules/mod_rewrite.so .htaccess<IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]</IfModule>

mysql规范

DBA开发规范 数据库开发规范 一、命名规范 1、库名、表名、字段名、索引名必须使用小写字母,并采用下划线分割。 2、库名、表名、字段名支持最多64个字符但禁止超过32个字符。 3、库名、表名、字段名必须见名知意。命名与业务、产品线相关联。 4、库名、表名、字段名禁止使用MySQL保留字(如:add/analyze/check/char/to/and/as/before/between/column...)(MySQL5.5&5.7保留关键字列表;https://dev.mysql.com/doc/refman/5.7/en/keywords.html)。 5、数据库初始化会删除test库 ,库名、表名、字段名禁止使用test开头。 6、创建一rubbish库,存放无效表、垃圾表,线上系统无异常,确认无误后,定期清理。 7、创建一archive库,存放本地归档,确认无使用计划后,定期转移到归档备份服务器中。 8、临时库、表名必须以tmp为前缀,并以日期为后缀。例如 tmp_table_20140401。 9、禁止使用存储过程、触发器、视图、UDF、EVENT等。 10、账号命名规则,本业务访问账号:业务名_wn/业务名_rn;跨业务访问账号:访问组_要访问业务名_w/访问组_要访问业务名_r 二、库表规范 1、默认使用InnoDB存储引擎。 2、库、表、字段、client字符集默认使用UTF8,如遇到EMOJ等表情符号的存储需求,可申请使用UTF8MB4字符集。 3、单库不要超过500个表、单表字段数不要超过40个 4、表、字段添加comment(除主键) 5、禁止在数据库中存储图片、文件等大数据。 6、字符类型居多的表建议控制在3000W以内,整型居多的表建议控制在5000W以内。 7、不建议或禁止在线上做数据库压力测试。 8、禁止测试环境直连生产环境调试,如有数据测试需求,请走特别申请流程。 9、依据数据冷热,分级存储,历史归档 三、库表设计 表设计 1、禁止跨库查询。 2、不建议使用MySQL分区表。 3、将关键字段、使用率频繁的字段拆分到单独表中,将大字段、访问频率低的字段拆分到单独表中存储,冷热分离。 4、推荐使用HASH、RANGE进行散表,表名后缀使用数字,数字必须从0开始。 5、散表或归档分表名称需符合YYYY[MM][DD][HH]格式,例如table_201401、table_20140422 字段设计 表字段少而精,尽量选择最小数据类型,表结构设计时适当冗余,不在数据库上做大量的cpu运算 1、建表默认5字段,主键、创建时间、创建者、修改时间、修改者。id、create_time、create_user、update_time、update_user 2、建议使用UNSIGNED存储非负数值。 3、建议使用INT UNSIGNED存储IPV4。 4、用DECIMAL代替FLOAT和DOUBLE存储精确浮点数,例如支付相关数据。 5、建议整型字段直接使用INT,INT类型固定占4字节存储, 默认是11,最大有效显示宽度是255,例如INT(4)仅代表字符宽度为4位,不代表存储长度。 6、区分使用TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT数据类型和取值范围(TINYINT>SMALLINT>MEDIUMINT>INT>BIGINT>DECIMAL---存储空间逐渐变大,而性能却逐渐变小)。 7、禁止字段使用enum数据类型。ENUM类型不允许修改默认值,只允许顺序添加。 8、禁止使用TEXT、BLOB类型,如必须使用,建议和主键一起进行拆表处理,可考虑VARCHAR替换。 9、使用VARBINARY类型默认区分大小写,没有字符集概念,可存储大小写敏感的变长字符串或二进制内容。 10、使用尽可能小的VARCHAR字段。VARCHAR(N)中的N表示字符数而非字节数。比如VARCHAR(255),可以最大可存储255个汉字,需要根据实际的宽度来选择N。 11、区分使用DATETIME和TIMESTAMP。存储年使用YEAR类型。存储日期使用DATE类型。 存储时间(精确到秒)建议使用TIMESTAMP类型。 12、所有字段均定义为NOT NULL。尽量避免使用NULL,要是必须用NULL,那也可考虑使用0、特殊值或空串来进行代替。 四、索引规范 1、单张表中索引数量不超过5个,单个索引中的字段数不超过5个。 2、非唯一索引按照“idx_字段名称[_字段名称]”进行命名。 3、唯一索引按照“uk_字段名称[_字段名称]”进行命名。 4、联合索引建议包含所有字段名,过长的字段名可以缩写形式。 5、表必须有主键,推荐使用UNSIGNED自增列作为主键并且该主键为非业务字段。 6、唯一键由3个以下字段组成,并且字段都是整形时,可使用唯一键作为主键。其他情况下,建议使用自增列或全局生成器作主键。 7、禁止冗余、重复索引。 8、禁止索引null列。 9、禁止使用外键,避免产生死锁,通过程序来保证约束。 10、避免数据类型转换,联表查询时,JOIN列的数据类型必须相同,并且要建立索引。 11、选择区分度大的列建立索引。字段的顺序对组合索引有至关重要的作用,组合索引中,区分度大的字段要放在最前面。 12、不在区分度低的上建立索引,例如“性别”。 13、对较长的字符串字段、blob、text使用前缀索引,前缀索引长度不超过8个字符。(使用前缀索引,不仅节省存储空间,提高索引缓存命中率,还可减少disk的IO操作。) 14、不对过长的VARCHAR字段建立索引。建议优先考虑添加CRC32或MD5伪列,并对伪列建立索引,减少索引长度,提高效率。 15、合理创建联合索引,(a,b,c) 相当于 (a) 、(a,b) 、(a,b,c)。 16、合理使用覆盖索引减少IO,避免排序。 17、添加优化的索引之后,再删除多余的索引。 18、单个索引尽可能覆盖更多的sql,更新频率比较高的表要控制索引的数量。 19、大批量变更数据,索引维护成本很高,因此大批量数据更新要拆分出小粒度。 五、SQL设计 1、使用prepared statement,可以提升性能并避免SQL注入。 2、用IN代替OR。SQL语句中IN包含的值不应过多,应少于500个。 3、禁止隐式类型转换。数值类型禁止加引号;字符串类型必须加引号。 4、避免使用JOIN和子查询,禁止使用3表以上的JOIN,必要时推荐用JOIN代替子查询。 5、避免在MySQL中索引列进行数学运算和函数运算。 6、减少与数据库交互次数,尽量采用批量提交SQL语句(INSERT INTO table (column1、column2、column3) VALUES(),(),()),不宜过多。 7、拆分复杂SQL为多个小SQL,避免大事务。 8、获取大量数据时,建议分批次获取数据,每次获取数据少于500条,结果集应小于1M。 9、用UNION ALL替换UNION。 10、禁止在前端业务中使用count(*),可放在memcache、redis、某一从库或增加统计表来维护。 11、多表关联时禁止使用select *语句,只取需要列。 12、SQL中避免出现rand()、sysdate()、current_user()等不确定结果的函数。 13、INSERT INTO语句必须显示指明字段名称。 14、禁止使用 INSERT INTO B SELECT * FROM A。 15、禁止单条SQL语句同时更新多个表。 16、建议使用合理的分页方式以提高分页效率。 17、禁止在生产环境从库进行查询分析统计操作,必要时请申请专用统计服务器,前后台分离。 18、程序应有捕获SQL异常的处理机制,必要时通过rollback显式回滚。 19、程序不要修改数据库中事务隔离机制,控制锁的行为。 19、避免全表扫描,重要SQL必须被索引:update、delete的where条件列、order by、group by、distinct字段、多表join字段。 20、如果只是分组,用group by a order by null替换group by a去除排序。 21、禁止使用%前导查询,例如:like “%abc”,无法利用到索引。 22、禁止使用负向查询,例如 not in、!

Web前端基础精品入门(HTML+CSS+JavaScript+JS)[爱前端]听课笔记:导航条的制作——css学习仿作马蜂窝

马蜂窝的首页是非常正能量,青春的网页,首页非常大气 logo在上一篇我们已经制作好,现在我们开始制作导航条 这个导航条字数不等,宽窄不一致,就是所有的li不一样宽,字多就宽,字少就窄,需要用padding去撑 pandding:0 10px; 实现如下 1、index.html里body->header->innetr下添加菜单的内容 <div class=nav> <li> <a href=>s首页</a> </li> <li> <a href=>旅游攻略</a> </li> <li> <a href=>去旅行</a> </li> <li> <a href=>机票</a> </li> <li> <a href=>订酒店</a> </li> <li> <a href=>社区</a> </li> <li> <a href=>APP</a> </li> </div>1、index.css 中logo增加左浮动,添加nav 设置左浮动 .header{ /*css3介绍 这是盒子阴影*/ height: 57px; border-bottom: 1px solid; box-shadow: 0px 0px 1px rgb(0,0,0.6); /*background:black;*/ } .header .inner{ width: 1000px; height: 57px; /*color:white;*/ margin: 0 auto; } .header .

项目论证的一般程序(步骤)

项目论证的一般程序(步骤) 1)明确项目范围和业务目标;2)收集并分析相关资料;3)拟定多种可行的能够相互替代的实施方案;4)多方案分析、比较;5)选择最优方案进一步详细全面的论证;6)编织项目论证报告、环境影响报告书和采购方式审批报告书;7)编制资金筹措计划和项目试试进度计划  

Python问题 | json.load()/json.loads()报错之json.decoder.JSONDecodeError: Expecting value: line 1 column 1

 def read_DataStru_json(path): with open(path, 'r', encoding='utf-8') as load_f: if len(load_f.read()) > 0: datas = json.load(load_f) else: datas = {} return datas  会造成题目中的错误,其实错误的本质是没有读取到json数据或者没有读取到正确格式的json数据,造成这一错误的原因是python的open函数机理:open()函数返回的是一个可迭代对象,所谓迭代是指:“迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第⼀个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。”不会后退是关键,也就是说函数中,用load_f.read()读取了可迭代对象load_f后,load_f文件的内容就被读入了内存,而load_f对象中就没有字符了,所以接下来用json.load(load_f)读取不到任何内容。 def read_DataStru_json(path): with open(path, 'r', encoding='utf-8') as load_f: strF = load_f.read() if len(strF) > 0: datas = json.loads(strF) else: datas = {} return datas  即先读取文件中字符串到strF,再用json.loads(strF)函数把字符串转换为数据结构  注:可以使用 isinstance() 判断一个对象是否是 Iterable 对象 isinstance(abc, Iterable) True