last

LinkedBlockingQueue

前提是你 提交于 2019-11-29 04:21:32
转: https://www.jianshu.com/p/fb79f074be28 数组的长度在创建时就必须确定,如果数组长度小了,那么ArrayBlockingQueue队列很容易就被阻塞,如果数组长度大了,就容易浪费内存。 而队列这个数据结构天然适合用链表这个形式,而LinkedBlockingQueue就是使用链表方式实现的阻塞队列。 一. 链表实现 1.1 Node内部类 /** * 链表的节点,同时也是通过它来实现一个单向链表 */ static class Node<E> { E item; // 指向链表的下一个节点 Node<E> next; Node(E x) { item = x; } } 有一个变量e储存数据,有一个变量next指向下一个节点的引用。它可以实现最简单地单向列表。 1.2 怎样实现链表 /** * 它的next指向队列头,这个节点不存储数据 */ transient Node<E> head; /** * 队列尾节点 */ private transient Node<E> last; 要实现链表,必须有两个变量,一个表示链表头head,一个表示链表尾last。head和last都会在LinkedBlockingQueue对象创建的时候被初始化。 last = head = new Node<E>(null); 注意这里用了一个小技巧

欧拉回路及例题

♀尐吖头ヾ 提交于 2019-11-29 03:24:14
欧拉回路 几个定义 性质与定理 定理1 推论1 定理2 推论2 性质1 性质2 算法主体 例题 uoj117求给定图的欧拉回路 poj1041求字典序最小的欧拉回路 poj1386Play on Words poj2230求无向图欧拉图要求每条边走两遍且方向不同 poj2513字符串的欧拉图 poj2337字典序 poj1637Sightseeing tour求混合图欧拉回路 HDU 2894Poj1392 欧拉回路 几个定义 设G (V,E)是一个图。 1.欧拉回路 图G中经过 每条边一次 并且 仅一次 的回路称作欧拉回路。 2.欧拉路径 图G中经过每条边一次并且仅一次的路径称作欧拉路径。 3.欧拉图 存在欧拉回路的图称为欧拉图。 4.半欧拉图 存在欧拉路径但不存在欧拉回路的图称为半欧拉图。 性质与定理 二、性质与定理 在以下讨论中,假设图 G不存在孤立点(度为0);否则,先将所有孤立点从图中删除。 显然,这样做并不会影响图G中欧拉回路的存在性。 我们经常需要判定一个图是否为欧拉图(或半欧拉图),并且找出一条欧拉回路(或欧 拉路径)。对于无向图有如下结论: 定理1 无向图G为欧拉图,当且仅当G为连通图且所有顶点的度为偶数。 证明: 必要性。 设图G的一条欧拉回路为C。由于C经过图G的每一条边,而图G没 有孤立点,所以C也经过图G的每一个顶点,G为连通图成立

mysql 字符串拼接+设置null值

元气小坏坏 提交于 2019-11-29 02:41:04
#字符串拼接 concat(s1,s2); 将表中last_name和first_name中的字符串拼接 select concat(last_name,first_name) as 姓名 from employees; #只会修改last_name不会修改first_name SELECT first_name,last_name AS f FROM employees; #将两个列用逗号隔开并命名为out_put SELECT CONCAT(`last_name`,',',`phone_number`) AS out_put FROM employees; #ifnull 判断是否为空,如果为空则显示为0而不是null,并将列名显示为结果 SELECT IFNULL(commission_pct,0) AS 结果 FROM employees; 来源: https://blog.51cto.com/14437184/2434445

获取当前月第一天和最后一天

时光毁灭记忆、已成空白 提交于 2019-11-29 01:59:19
          SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");     //获取当前月第一天: Calendar c = Calendar.getInstance(); c.add(Calendar.MONTH, 0); c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天 String first = format.format(c.getTime()); System.out.println("===============first:"+first); //获取当前月最后一天 Calendar ca = Calendar.getInstance(); ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH)); String last = format.format(ca.getTime()); System.out.println("===============last:"+last);    来源: http://www.cnblogs.com/caidadong/p/6024028.html

后缀自动机专题(hihocoder)

空扰寡人 提交于 2019-11-29 00:43:52
传送门 #1445 : 后缀自动机二·重复旋律5 题意: 给出字符串 \(s\) ,询问字符串 \(s\) 中有多少不同的子串。 思路: 考虑对 \(s\) 建后缀自动机,那么 \(\sum (len[i]-len[fa[i]])\) 即为答案。 还可以考虑 \(dp\) ,设 \(dp[i]\) 为从 \(i\) 出发不同子串的个数,那么 \(dp[i]=\sum_{(i,j)\in Edge}dp[j]+1\) 。 \(dp[1]\) 即为答案。 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1000006; char s[N]; struct node{ int ch[26]; int len, fa; node(){memset(ch, 0, sizeof(ch)), len = 0;} }dian[N << 1]; int last, tot; void add(int c) { int p = last; int np = last = ++tot; dian[np].len = dian[p].len + 1; for(; p && !dian[p].ch[c]; p = dian[p].fa) dian[p].ch[c] = np; if(!p)

hive之开窗函数

谁说我不能喝 提交于 2019-11-29 00:39:11
开窗函数结构: 分析函数+窗口子句 窗口子句 over(partition by ** order by ** rows between ** and **) 其中between ** and ** 之间可以填 起始 结束 解释 unbounded preceding current row 从第一行到当前行,这是默认的情况 3 preceding current row 从向前3行到当前行 3 preceding 3 following 当前行,向前3行,向后3行 current row unbounded following 从当前行到后面 分析函数包括 分析函数 用法 sum(列名) 有order by 的时候,计算的是分区排序后一个个叠加的值,不加order by 则为分区内的综合 min(列名)、max(列名)、avg(列名) 与order by 有关 count(列名) 与order by 有关 row_number() 从1开始,按照顺序生成分组内记录的序列1,2,3,4,5. rank() 生成数据项在分组内的排名,排名相等会在名次中留下空位 1,2,3,3,5 ,先order by dense_rank() 生成数据项在分组内的排名,排名相等不会在名次中留下空位 1,2,3,3,4,先order by ntile(n) 将分组数据按照顺序切分成n片,返回当前切片值

sqoop 导入增量数据到hive

独自空忆成欢 提交于 2019-11-29 00:37:59
版本 hive:apache-hive-2.1.0 sqoop:sqoop-1.4.6 hadoop:hadoop-2.7.3 导入方式 1.append方式 2.lastmodified方式,必须要加--append (追加)或者 --merge-key (合并 ,一般填主键) 创建mysql表并添加数据 -- ---------------------------- -- Table structure for `data` -- ---------------------------- DROP TABLE IF EXISTS `data`; CREATE TABLE `data` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` char(20) DEFAULT NULL, `last_mod` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of data -- ----------

python3.x运行的坑:AttributeError: 'str' object has no attribute 'decode'

匆匆过客 提交于 2019-11-29 00:04:18
1、Python3.x和Python2.X版本有一些区别,我遇到了两个问题如下: a.第一个报:mysqlclient 1.3版本不对: 解决办法:注释掉这行即可; b.第二个报:字符集的问题: 报错如下:File "C:\Users\Administrator\PycharmProjects\untitled1\venv\lib\site-packages\django\db\backends\mysql\operations.py", line 146, in last_executed_query query = query.decode(errors='replace') AttributeError: 'str' object has no attribute 'decode' 报错截图: 解决办法:注释掉这里,因为字符集不支持的原因 来源: https://www.cnblogs.com/wangshicheng/p/11433592.html

Nginx实现rewrite重写

て烟熏妆下的殇ゞ 提交于 2019-11-28 23:03:01
目录 Rewrite基本概述 Rewrite标记Flag Rewrite规则实践 Rewrite场景示例 Rewrite规则补充 rewrite优先级实战 Rewrite基本概述 什么是rewrite Rewrite主要实现url地址重写,以及重定向,就是把传入 web 的请求重定向到其他 url 的过程。 Rewrite使用场景 1、地址跳转,用户访问www.drz.com这个URL是,将其定向至一个新的域名mobile.drz.com 2、协议跳转,用户通过http协议请求网站时,将其重新跳转至https协议方式 3、伪静态,将动态页面显示为静态页面方式的一种技术,便于搜索引擎的录入,同时建上动态URL地址对外暴露过多的参数,提升更高的安全性。 4、搜索引擎,SEO优化依赖于url路径,好记的url便于智齿搜索引擎录入 Rewrite配置示例 句法:Syntax: rewrite regex replacement [flag] 默认:Default: -- 语境:Context: server,location,if #用于切换维护页面场景 #rewrite ^(.*)$ /page/maintain.html break; Rewrite标记Flag rewrite 指令根据表达式来重定向 URL ,或者修改字符串,可以应用于 server,location,if 环境下

BZOJ5338 [TJOI2018] Xor 【可持久化Trie树】【dfs序】

妖精的绣舞 提交于 2019-11-28 22:56:29
题目分析:   很无聊的一道题目。首先区间内单点对应异或值的询问容易想到trie树。由于题目在树上进行,case1将路径分成两段,然后dfs的时候顺便可持久化trie树做询问。case2维护dfs序,对dfs序建可持久化的trie树。这样做的空间复杂度是O(nw),时间复杂度是O(nw). 代码: 1 #include<bits/stdc++.h> 2 using namespace std; 3 4 const int maxn=102000; 5 6 int n,q; 7 int v[maxn]; 8 vector<int> g[maxn]; 9 10 vector<pair<int,int> > qy[maxn]; 11 vector<pair<int,int> > vec; 12 13 int ans[maxn],num,kd[maxn]; 14 int dep[maxn],dfsin[maxn],dfsout[maxn],fa[maxn]; 15 16 vector<pair<int,int> > Lca[maxn]; 17 int pre[maxn]; 18 19 int found(int x){ 20 int rx = x; while(pre[rx] != rx) rx = pre[rx]; 21 while(pre[x] != rx){ 22 int t =