COW

2019年最实用的导航栏设计实践和案例分析全解

戏子无情 提交于 2020-12-20 08:26:58
我们都知道,用户的浏览习惯是从左到右,从上到下。所以一个网站的导航栏至关重要,用户进入你的网站,首先查找的信息就是从导航栏开始。一个用户体验好的导航栏,会增加网站的转化率和回访率。反之,用户会离开你的网站,寻找替代品。 通常,设计师会忽略导航栏的设计,因为导航栏不过几个文字和链接组合而成,并没有什么特别值得注意的地方。但是导航栏的设计学问远远不止这些。本文将详细介绍导航栏的设计最佳实践,导航栏的类型以及最佳的导航栏设计案例等等。 主次导航栏 不同的网站,导航是不一样的,甚至相差甚远。大网站往往内容很多以及要呈现更多的信息,需要有主次导航来分担网站内容的复杂性。这样用户才能一目了然地找到他们想要的信息。 主导航栏 主导航是网站最重要的内容,也是最容易引导用户进入网站查询信息。比如“产品信息”,“价格”等。主导航名称结构清晰,用户就能够清楚地知道自己所在的位置,更容易地找到想要的内容,对网站的印象也会有所上升,所以,主导航的设置一定要用心。 次导航栏 一般而言,网站的次导航都在二级栏目中,也就是通过主导航进入的页面,这些页面上,将这个主导航再次进行细分类,通过这些不同的细分类,能够让用户更清晰的访问网站。 导航栏的类型有哪些? 就导航栏位置而言,可分为: 顶部导航 :顶部导航被广泛应用在各个领域的网站当中,这类导航可以一目了然的让用户迅速寻找到所需。顶部导航这样的设计形式保守但目的性强

3.Redis持久化

走远了吗. 提交于 2020-12-19 13:48:03
持久化 1、RDB 概念 RDB持久化可以在指定的时间间隔内生成数据集的时间点内存快照 配置 1、save 60 10000 2、rdbcompression yes 3、dbfilename "dump_6379.rdb" 4、dir "/appdata/redis/savefile"(AOF同) 命令 save 通过主进程,造成阻塞,期间不能执行任何命令 bgsave fork()子进程后台进行 优点 1、恢复速度快,但载入过程中会令redis一直处于阻塞状态,直到载入完成; 2、可压缩保存; 3、可最大化Redis性能,父进程fork子进程完成保存操作。 缺点 1、数据非实时保存,易丢失部分数据; 2、数据集大时,fork()操作耗时且消耗cpu。 2、AOF 概念 AOF 持久化记录服务器执行的所有写操作命令(append-only file) 配置 1、appendfsync 1、always 2、everysec 3、no(由系统决定同步频率) 2、appendonly yes 3、appendfilename "appendonly.aof" 4、auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb AOF还原过程 创建一个不带网络连接的伪客户端,因为redis的命令只能在客户端上下文中执行;

Contest Hunter CH6201 走廊泼水节 最小生成树 Kruskal

给你一囗甜甜゛ 提交于 2020-12-18 09:44:08
$ \rightarrow $ 戳我进CH原题 <p align="right">走廊泼水节 0x60「图论」例题</p> **总时限10 s $ \quad $ 总内存256 MiB **   描述 【简化版题意】给定一棵N个节点的树,要求增加若干条边,把这棵树扩充为完全图,并满足图的唯一最小生成树仍然是这棵树。 求增加的边的权值总和最小是多少。   我们一共有 $ N $ 个OIER打算参加这个泼水节,同时很凑巧的是正好有 $ N $ 个水龙头(至于为什么,我不解释)。 $ N $ 个水龙头之间正好有 $ N-1 $ 条小道,并且每个水龙头都可以经过小道到达其他水龙头(这是一棵树,你应该懂的..)。 但是OIER门为了迎接中中的挑战,决定修建一些个道路(至于怎么修,秘密~), 使得每个水龙头到每个水龙头之间都有一条直接的道路连接(也就是构成一个完全图呗~)。 但是OIER门很懒得,并且记性也不好,他们只会去走那 $ N-1 $ 条小道, 并且希望所有水龙头之间修建的道路,都要大于两个水龙头之前连接的所有小道(小道当然要是最短的了)。 所以神COW们,帮那些OIER们计算一下吧,修建的那些道路总长度最短是多少,毕竟修建道路是要破费的~~   输入格式 本题为多组数据~ 第一行 $ t $ ,表示有t组测试数据 对于每组数据 第一行 $ N $ ,表示水龙头的个数

[总结]Floyd算法及其应用

余生颓废 提交于 2020-12-18 09:39:53
[TOC] ## 一、Floyd算法 如何求任意两点最短路?我们可以运行n次SPFA或Dijkstra求得, 而Floyd算法能在$O(N^3)$的时间复杂度内求出图中任意两点的最短路(多源最短路),且代码十分简短。 Floyd算法(弗洛伊德算法) 的本质是动态规划。设$f(k,i,j)$表示<font color=Blue>"由若干个编号不超过k的节点中转后"</font>从$i$到$j$的最短路。 该"动态规划"有两个决策,一是经过编号不超过$k-1$的节点由$i$到$j$,二是先由$i$到$k$,再由$k$到$j$。 我们很容易写出此时的转移方程: $$f(k,i,j)=min(f(k-1,i,j),f(k-1,i,k)+f(k-1,k,j))$$ 初始$f$数组所有值均为正无穷,随后令$f(0,i,j)=maps(i,j)$,其中$map(i,j)$为邻接矩阵。 由于$k$是动态规划的阶段,因此$k$为最外层循环,可以得到如下代码: inline void floyd(){ for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) f[k][i][j]=min(f[k-1][i][j],f[k-1][i][k]+f[k-1][k][j]); } 算法最终$f(n,i,j),i\in [1,n],j

POJ 3264.Balanced Lineup-RMQ(ST)详解

被刻印的时光 ゝ 提交于 2020-12-12 22:42:41
先写一道水题的博客,为后面要写的博客做一个铺垫。 ヾ(◍°∇°◍)ノ゙ RMQ(Range Minimum/Maximum Query),即区间最值查询,对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j之间的最小/大值。 时间复杂度: 1、朴素(即搜索),O(n)-O(qn) online。 2、 线段树 ,O(n)-O(qlogn) online。 3、ST(实质是 动态规划 ),O(nlogn)-O(q) online。 ST算法(Sparse Table),以求最大值为例,设d[i,j]表示[i,i+2^j-1]这个区间内的最大值,那么在询问到[a,b]区间的最大值时答案就是max(d[a,k], d[b-2^k+1,k]), 其中k是满足2^k<=b-a+1(即长度)的最大的k,即k=[ln(b-a+1)/ln(2)]。d的求法可以用 动态规划 ,d[i, j]=max(d[i, j-1],d[i+2^(j-1), j-1])。 传送门: 一篇写的容易理解的博客 2/21/2018 5:12:00 PM -------------------------------------------------------分割线-------------------------------------------------------

POJ 3171.Cleaning Shifts-区间覆盖最小花费-dp+线段树优化(单点更新、区间查询最值)

一曲冷凌霜 提交于 2020-11-24 07:23:45
Cleaning Shifts Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4721 Accepted: 1593 Description Farmer John's cows, pampered since birth, have reached new heights of fastidiousness. They now require their barn to be immaculate. Farmer John, the most obliging of farmers, has no choice but hire some of the cows to clean the barn. Farmer John has N (1 <= N <= 10,000) cows who are willing to do some cleaning. Because dust falls continuously, the cows require that the farm be continuously cleaned during the workday, which runs from second number M to second number E during the day (0 <=

刷题

拥有回忆 提交于 2020-11-19 03:51:56
<h2>6月15日</h2> <p class="title">Codeforces Round #158 (Div. 2)</p> <p>A.模拟</p> <p>B.map</p> <p>C.map</p> <p>D.构造</p> <p>E.线段树</p> <p class="title">Croc Champ 2013 – Round 2</p> <p>A.模拟</p> <p>B.状压+dfs</p> <p>C.数学</p> <p>D.概率与期望</p> <p>E.点分治</p> <p class="title">Codeforces Round #146 (Div. 1)</p> <p>A.暴力</p> <p>B.dp</p> <p>C.后缀自动机</p> <p>D.概率与期望</p> <p>E.莫比乌斯反演</p> <h2>6月8日 PKUSC</h2> <p>Codeforces Round #290 (Div. 1)</p> <p>拓扑排序:A.Fox And Names</p> <p>记忆化搜索+map:B. Fox And Jumping</p> <p>dancing link:3074.Sudoku</p> <p>数位dp:3252.Round Numbers</p> <p>模拟:1665.Biker’s Trip Odometer</p> <p>数学:1930

Redis—持久化

爱⌒轻易说出口 提交于 2020-11-14 07:01:32
一、持久化简介 Redis 的数据 全部存储 在 内存 中,如果 突然宕机 ,数据就会全部丢失,因此必须有一套机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的 持久化机制 ,它会将内存中的数据库状态 保存到磁盘 中。 持久化发生了什么 | 从内存到磁盘 我们来稍微考虑一下 Redis 作为一个 "内存数据库" 要做的关于持久化的事情。通常来说,从客户端发起请求开始,到服务器真实地写入磁盘,需要发生如下几件事情: 详细版 的文字描述大概就是下面这样: 客户端向数据库 发送写命令 (数据在客户端的内存中) 数据库 接收 到客户端的 写请求 (数据在服务器的内存中) 数据库 调用系统 API 将数据写入磁盘 (数据在内核缓冲区中) 操作系统将 写缓冲区 传输到 磁盘控控制器 (数据在磁盘缓存中) 操作系统的磁盘控制器将数据 写入实际的物理媒介 中 (数据在磁盘中) 注意: 上面的过程其实是 极度精简 的,在实际的操作系统中, 缓存 和 缓冲区 会比这 多得多 ... 如何尽可能保证持久化的安全 如果我们故障仅仅涉及到 软件层面 (该进程被管理员终止或程序崩溃) 并且没有接触到内核,那么在 上述步骤 3 成功返回之后,我们就认为成功了。即使进程崩溃,操作系统仍然会帮助我们把数据正确地写入磁盘。 如果我们考虑 停电/ 火灾 等 更具灾难性 的事情

Apache Hudi和Presto的前世今生

最后都变了- 提交于 2020-11-04 04:19:14
一篇由Apache Hudi PMC Bhavani Sudha Saktheeswaran和AWS Presto团队工程师Brandon Scheller分享Apache Hudi和Presto集成的一篇文章。 1. 概述 Apache Hudi 是一个快速迭代的数据湖存储系统,可以帮助企业构建和管理PB级数据湖,Hudi通过引入 upserts 、 deletes 和增量查询等原语将流式能力带入了批处理。这些特性使得统一服务层可提供更快、更新鲜的数据。Hudi表可存储在Hadoop兼容的分布式文件系统或者云上对象存储中,并且很好的集成了 Presto, Apache Hive, Apache Spark 和Apache Impala。Hudi开创了一种新的模型(数据组织形式),该模型将文件写入到一个更受管理的存储层,该存储层可以与主流查询引擎进行互操作,同时在项目演变方面有了一些有趣的经验。 本博客讨论Presto和Hudi集成的演变,同时讨论Presto-Hudi查询即将到来的文件Listing和查询计划优化。 2. Apache Hudi Apache Hudi(简称Hudi)提供在DFS上存储超大规模数据集,同时使得流式处理如果批处理一样,该实现主要是通过如下两个原语实现。 Update/Delete记录 : Hudi支持更新/删除记录,使用文件/记录级别索引

c++之函数值传递和引用传递解析----关键在于理解函数return的实现机制(内存分配)

梦想与她 提交于 2020-10-28 07:29:31
函数调用过程解析 func里的a存储在调用 f un函数 时开辟的栈 空间 里,这块栈只在调用func时对func可用,调用结束后返回的a,其实是暂存在寄存器里的(一般情况下是eax),而返回到main里时,main又会把返回的值 拷贝 到自己所有的栈空间里(在这里是以临时变量的形式)。所以不管是func还是main,任何非static、register变量和 常量 的存储都是在 函数 的 局部 存储区里(也就是对当前调用函数可见的栈空间)。main也是一个函数。 1、函数调用完就收回; 2、不是,栈是一段公共 内存 ,函数的 代码 也不是存在栈里的,只是从栈上给新调用的函数分配一段栈空间,用来保存这个函数执行期间用到的局部变量; 3、函数的返回是被保存在寄存器里的(这个返回指的是return,不包括通过 参数 返回或者全局变量),栈空间由 程序 自动维护,函数退出以后栈的内容其实不会更改,只是栈 指针 复位,所以函数 内部 的局部变量声明了如果不赋值,它的值就是随机的也就是这个道理。 内存分配、函数调用和返回值问题 首先,常量与变量 变量:在程序中可以改变值的量;常量:其值不能改变; 内存分配 C++编译器将计算机内存分为: 代码区 :代码区就是存放程序代码 数据区 :数据区就是存放程序编译与执行过程中出现的变量与常量 静态数据区 :在编译器进行编译的时候就为该变量分配的内存