扇形内切圆队列转换

memcached(1)
我们假设memcached开启了&lru_maintainer_thread线程,这时将使用HOT_LRU, WARM_LRU, COLD_LRU, NOEXP_LRU四种队列。
1. 从内存池中新分配的item,将其放入HOT_LRU队列。
2. HOT_LRU队列中数据量超过阀值,则转移到COLD_LRU队列。
3.&WARM_LRU队列中数据量超过阀值,则转移到COLD_LRU队列。
4. 如果COLD_LRU队列中数据被访问过,则转移到WARM_LRU队列。
5. 如果HOT_LRU或WARM_LRU队列中数据被访问过,则移到WARM_LRU队列的首部。
6. 当从内存池中分配item时,如果item未设置exptime并且程序配置为“不踢掉exptime为0的数据”,就将其放入NOEXP_LRU队列。这个队列中的数据不会被踢掉,也不会迁移到其他队列。
7.&如果“当内存不够用时允许踢数据”,则COLD_LRU中的数据会被回收到内存池。
7,8,9 还有可能是item直接被删除掉,例如数据过期,执行delete操作,执行flush all操作。
如果程序允许”踢掉exptime为0的数据“,那么没有6号线,所以exptime为0的数据也将进入其他状态转换。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:35451次
排名:千里之外
原创:14篇
(1)(3)(2)(3)(1)(5)(1)(4)轻量级开源简单消息队列HTTPSQS使用说明
[问题点数:40分]
轻量级开源简单消息队列HTTPSQS使用说明
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。> 经典SQL队列转换
经典SQL队列转换
henannongken & &
发布时间: & &
浏览:7 & &
回复:0 & &
悬赏:0.0希赛币
经典SQL行列转换
  标题:普通行列转换(version 2.0)
  说明:普通行列转换(version 1.0)仅针对sql server 2000提供静态和动态写法,version 2.0增加sql server 2005的有关写法。
  问题:假设有张学生成绩表(tb)如下:
  姓名 课程 分数
  张三 语文 74
  张三 数学 83
  张三 物理 93
  李四 语文 74
  李四 数学 84
  李四 物理 94
  想变成(得到如下结果):
  姓名 语文 数学 物理
  ---- ---- ---- ----
  李四 74 84 94
  张三 74 83 93
  -------------------
  create table tb(姓名 varchar(10) , 课程 varchar(10) , 分数 int)
  insert into tb values('张三' , '语文' , 74)
  insert into tb values('张三' , '数学' , 83)
  insert into tb values('张三' , '物理' , 93)
  insert into tb values('李四' , '语文' , 74)
  insert into tb values('李四' , '数学' , 84)
  insert into tb values('李四' , '物理' , 94)
  --SQL SERVER 2000 静态SQL,指课程只有语文、数学、物理这三门课程。(以下同)
  select 姓名 as 姓名 ,
  max(case 课程 when '语文' then 分数 else 0 end) 语文,
  max(case 课程 when '数学' then 分数 else 0 end) 数学,
  max(case 课程 when '物理' then 分数 else 0 end) 物理
  from tb
  group by 姓名
  --SQL SERVER 2000 动态SQL,指课程不止语文、数学、物理这三门课程。(以下同)
  declare @sql varchar(8000)
  set @sql = 'select 姓名 '
  select @sql = @sql + ' , max(case 课程 when ''' + 课程 + ''' then 分数 else 0 end) [' + 课程 + ']'
  from (select distinct 课程 from tb) as a
  set @sql = @sql + ' from tb group by 姓名'
  exec(@sql)
  --SQL SERVER 2005 静态SQL。
  select * from (select * from tb) a pivot (max(分数) for 课程 in (语文,数学,物理)) b
  --SQL SERVER 2005 动态SQL。
  declare @sql varchar(8000)
  select @sql = isnull(@sql + ',' , '') + 课程 from tb group by 课程
  exec ('select * from (select * from tb) a pivot (max(分数) for 课程 in (' + @sql + ')) b')
  ---------------------------------
  问题:在上述结果的基础上加平均分,总分,得到如下结果:
  姓名 语文 数学 物理 平均分 总分
  ---- ---- ---- ---- ------ ----
  李四 74 84 94 84.00 252
  张三 74 83 93 83.33 250
  --SQL SERVER 2000 静态SQL。
  select 姓名 姓名,
  max(case 课程 when '语文' then 分数 else 0 end) 语文,
  max(case 课程 when '数学' then 分数 else 0 end) 数学,
  max(case 课程 when '物理' then 分数 else 0 end) 物理,
  cast(avg(分数*1.0) as decimal(18,2)) 平均分,
  sum(分数) 总分
  from tb
  group by 姓名
  --SQL SERVER 2000 动态SQL。
  declare @sql varchar(8000)
  set @sql = 'select 姓名 '
  select @sql = @sql + ' , max(case 课程 when ''' + 课程 + ''' then 分数 else 0 end) [' + 课程 + ']'
  from (select distinct 课程 from tb) as a
  set @sql = @sql + ' , cast(avg(分数*1.0) as decimal(18,2)) 平均分 , sum(分数) 总分 from tb group by 姓名'
  exec(@sql)
  --SQL SERVER 2005 静态SQL。
  select m.* , n.平均分 , n.总分 from
  (select * from (select * from tb) a pivot (max(分数) for 课程 in (语文,数学,物理)) b) m,
  (select 姓名 , cast(avg(分数*1.0) as decimal(18,2)) 平均分 , sum(分数) 总分 from tb group by 姓名) n
  where m.姓名 = n.姓名
  --SQL SERVER 2005 动态SQL。
  declare @sql varchar(8000)
  select @sql = isnull(@sql + ',' , '') + 课程 from tb group by 课程
  exec ('select m.* , n.平均分 , n.总分 from
  (select * from (select * from tb) a pivot (max(分数) for 课程 in (' + @sql + ')) b) m ,
  (select 姓名 , cast(avg(分数*1.0) as decimal(18,2)) 平均分 , sum(分数) 总分 from tb group by 姓名) n
  where m.姓名 = n.姓名')
  drop table tb  
  ------------------
  ------------------
  问题:如果上述两表互相换一下:即表结构和数据为:
  姓名 语文 数学 物理
  张三 74  83  93
  李四 74  84  94
  想变成(得到如下结果):
  姓名 课程 分数
  ---- ---- ----
  李四 语文 74
  李四 数学 84
  李四 物理 94
  张三 语文 74
  张三 数学 83
  张三 物理 93
  --------------
  create table tb(姓名 varchar(10) , 语文 int , 数学 int , 物理 int)
  insert into tb values('张三',74,83,93)
  insert into tb values('李四',74,84,94)
  --SQL SERVER 2000 静态SQL。
  select * from
  select 姓名 , 课程 = '语文' , 分数 = 语文 from tb
  union all
  select 姓名 , 课程 = '数学' , 分数 = 数学 from tb
  union all
  select 姓名 , 课程 = '物理' , 分数 = 物理 from tb
  order by 姓名 , case 课程 when '语文' then 1 when '数学' then 2 when '物理' then 3 end
  --SQL SERVER 2000 动态SQL。
  --调用系统表动态生态。
  declare @sql varchar(8000)
  select @sql = isnull(@sql + ' union all ' , '' ) + ' select 姓名 , [课程] = ' + quotename(Name , '''') + ' , [分数] = ' + quotename(Name) + ' from tb'
  from syscolumns
  where name! = N'姓名' and ID = object_id('tb') --表名tb,不包含列名为姓名的其它列
  order by colid asc
  exec(@sql + ' order by 姓名 ')
  --SQL SERVER 2005 动态SQL。
  select 姓名 , 课程 , 分数 from tb unpivot (分数 for 课程 in([语文] , [数学] , [物理])) t
  --SQL SERVER 2005 动态SQL,同SQL SERVER 2000 动态SQL。
  --------------------
  问题:在上述的结果上加个平均分,总分,得到如下结果:
  姓名 课程 分数
  ---- ------ ------
  李四 语文 74.00
  李四 数学 84.00
  李四 物理 94.00
  李四 平均分 84.00
  李四 总分 252.00
  张三 语文 74.00
  张三 数学 83.00
  张三 物理 93.00
  张三 平均分 83.33
  张三 总分 250.00
  ------------------
  select * from
  select 姓名 as 姓名 , 课程 = '语文' , 分数 = 语文 from tb
  union all
  select 姓名 as 姓名 , 课程 = '数学' , 分数 = 数学 from tb
  union all
  select 姓名 as 姓名 , 课程 = '物理' , 分数 = 物理 from tb
  union all
  select 姓名 as 姓名 , 课程 = '平均分' , 分数 = cast((语文 + 数学 + 物理)*1.0/3 as decimal(18,2)) from tb
  union all
  select 姓名 as 姓名 , 课程 = '总分' , 分数 = 语文 + 数学 + 物理 from tb
  order by 姓名 , case 课程 when '语文' then 1 when '数学' then 2 when '物理' then 3 when '平均分' then 4 when '总分' then 5 end
  drop table tb
  --& 生成测试数据: #DB_info
  if object_id('tempdb.dbo.#DB_info') is not null drop table #DB_info
  create table #DB_info (sid int,name nvarchar(4),sex nvarchar(2))
  insert into #DB_info
  select 1,'李明','男' union all
  select 2,'王军','男' union all
  select 3,'李敏','女'
  --& 生成测试数据: #db_scores
  if object_id('tempdb.dbo.#db_scores') is not null drop table #db_scores
  create table #db_scores (sid int,type nvarchar(4),scores int)
  insert into #db_scores
  select 1,'语文',80 union all
  select 1,'数学',90 union all
  select 2,'语文',85 union all
  select 2,'数学',90 union all
  select 3,'语文',75 union all
  select 3,'数学',85
  declare @sql nvarchar(4000)
  set @sql='select a.sid,a.name,a.sex'
  select @sql=@sql+',max(case when b.type='''+type+''' then b.scores else 0 end) ['+type+']'
  from (select distinct type from #db_scores) t
  exec (@sql+' from #DB_info a left outer join #db_scores b on a.sid=b.sid group by a.sid,a.name,a.sex')
  sid name sex 数学 语文
  ----------- ---- ---- ----------- -----------
  1 李明 男 90 80
  2 王军 男 90 85
  3 李敏 女 85 75
  (3 行受影响)经典SQL行列转换
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&hive队列转换总结_Java Web开发课程来袭_PHP汉语高速分词的原理和源码__脚本百事通
稍等,加载中……
^_^请注意,有可能下面的2篇文章才是您想要的内容:
hive队列转换总结
Java Web开发课程来袭
PHP汉语高速分词的原理和源码
hive队列转换总结
hive行列转换总结1、单列转换成多行
select pageid,p from test lateral view explode(split(paged,','))
通过split拆成多个元素的集合,再通过split打散成多行,lateral view作用是解决explode这种UDTF函数拆成的数据不能与其他字段共同服务问题
2、多行转换成单列
即上面的结果又反推回去,想到oracle的sys_connect_path,便写个UDF实现类似功能
import java.util.ArrayL
import org.apache.hadoop.hive.ql.exec.UDF;
public class RowToCol extends UDF {
private static int MAX_VALUE = 50;
private static String prerows[] = new String[MAX_VALUE];//全局变量,保留上一条记录的值
private static StringBuilder val=
public String evaluate (Object ...args){
ArrayList&String& thisrowlist=new ArrayList&String&();
for(int i=0;i&args.i++)
thisrowlist.add(args[i].toString()) ;
if (val==null)
for(int i=0;i&thisrowlist.size();i++)
prerows[i] = thisrowlist.get(i);
val=new StringBuilder(thisrowlist.get(thisrowlist.size()-1));//最后一个参数值作为返回值
return val.toString();
for(int i=0;i&thisrowlist.size()-1;i++)
if ( !prerows[i].equals(thisrowlist.get(i)) ) //跳到b的时候prerows[0]="a" thisrowlist[0]="b" 满足这种情况重新置1
for (int j=0;j&thisrowlist.size();j++)
prerows[j] = thisrowlist.get(j);
val=new StringBuilder(thisrowlist.get(thisrowlist.size()-1));
return val.toString();
return val.append(",").append(thisrowlist.get(thisrowlist.size()-1)).toString();
public static void main(String[] args)
RowToCol rt=new RowToCol();
System.out.println(rt.evaluate("page1","a"));
System.out.println(rt.evaluate("page2","d"));
System.out.println(rt.evaluate("page2","e"));
System.out.println(rt.evaluate("page2","x"));
System.out.println(rt.evaluate("page2","x"));
System.out.println(rt.evaluate("page2","y"));
最后生成结果
select pageid,max(row_to_col(pageid,paged)) from (select pageid,paged from test2 distribute by pageid sort by pageid,paged)
3、多行转多列、多列转多行
与数据库中SQL写法一样,参考博文:http://blog.csdn.net/u/article/details/
Java Web开发课程来袭
Java Web开发教程来袭Java Web,是用Java技术来解决相关web互联网领域的技术总和。web包括:web服务器和web客户端两部分。Java在客户端的应用有java applet不过现在使用的很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP和第三方框架等等。Java技术对Web领域的发展注入了强大的动力。本视频以最基础的JSP来讲解,希望童鞋们能尽快加入Java EE的大家庭。
本教程的内容有:
01_Tomcat的安装
02_简单web的发布和web项目的目录结构
03_基于虚拟路径的发布和web.xml的配置
04_要发布一个网站的基本思路
05_在eclipse中开发和发布web项目
06_简单演示了myeclipse的操作
07_web基础_servlet基础
08_web基础_获取请求参数
09_web基础_GET和POST请求
10_web基础_Http协议简介
11_web基础_servlet的生命周期
12_web基础_乱码问题的讲解
13_web基础_JSP初步
14_web基础_JSP的原理
15_web基础_不同的跳转方式
16_web基础_绝对路径和相对路径
17_web基础_静态包含和动态包含
18_web基础_几个内置对象的作用域
19_web基础_filter的讲解
20_实现shop(1)搭建环境和实现DAO和用户添加列表功能
21_实现shop_实现服务器端的验证
22_实现shop_实现用户的更新和删除
23_实现shop_实现用户的登录控制
24_实现shop_实现用户的其他功能
25_实现msg管理_将shop的用户管理移植到msg管理中
26_实现msg管理_实现用户的筛选
27_实现msg管理_实现分页
28_实现msg管理_基于ThreadLocal实现分页
29_实现msg管理_Pager分页框架的讲解
30_实现msg管理_为项目实现一个通用的分页处理
31_实现msg管理_需求分析的思路
32_实现msg_实现DAO
33_实现msg_实现DAO和留言的发布列表功能
34_实现msg_完善留言的列表功能
35_实现msg_实现了留言的查询
36_实现msg_实现了留言的更新和删除
37_实现msg_加入了xhEditor
38_实现msg_基本实现了留言板的功能
39_实现msg_将数据库的连接的配置添加到prop文件中
40_实现msg_基于Tomcat的数据源的配置
41_实现msg_事务控制的讲解
教程高清在线观看:/album/show/48
PHP汉语高速分词的原理和源码
PHP中文高速分词的原理和源码
一、正向最大匹配算法和反向最大匹配算法的缺点
正向最大匹配算法:从左到右将待分词文本中的几个连续字符与词表匹配,如果匹配上,则切分出一个词。但这里有一个问题:要做到最大匹配,并不是第一次匹配到就可以切分的。举个例子:中华人民共和国今天成立了。从左到右扫描,要分别检索:中,中华,中华人,中华人民,中华人民共,中华人民共和,中华人民共和国今,今,今天,今天成,成,成立,成立了,了。14 次检索词库,最后的切分结果:中华人民共和国/今天/成立了。所以,当遇到长词时,要反复检索多次数据库,效率非常差。还有,一个更严重的问题是:词的最大长度是有限制的,为了兼顾算法的效率,不可能将最大词长定的非常大,这就会导致更长的词汇不能正确切分。
反之,反向最大匹配算法,则会将长词分开,造成错误切分。比如,上面的待切分文本,从右向左扫描,要分别检索:了,立了,立,成立,天成立,天,今天,今天国,国,和国,共和国,民共和国,民,人民,华人民,华,中华。17 词查询数据库,最后切分结果:中华/人民/共和国/今天/成立/了。将中华人民共和国切分成了3 个词。
二、克服最大匹配算法的缺点的算法
为了克服最大匹配算法的低效和不能切分长词,将所有的能组成词汇的汉字,建立索引,作为词的首字母。然后将每个汉字开头的词汇,分成一类,按词长排序。词库结构如下:
分词时,由汉字找到该字开头的词组(长度3000左右的线性检索),然后按由长到短5,4,3,2的顺序检索词库,和待分词语句对比(线性),如果有匹配,则切分为一个词,然后继续匹配下一个词。通过这种方式,大大提高了检索词库效率,解决了任意长词汇匹配问题。
在PHP算法的实现上,为了加快在线匹配速度,上面的词库结构,用PHP的联想数组的形式实现,全部加载到内存。为了灵活增删词库,做了个字符串处理程序,自动生成PHP联想数组结构的词库。详细实现算法,见PHP源码。
PHP分词源码下载:http://www.box.net/shared/gryspzppsb
如果您想提高自己的技术水平,欢迎加入本站官方1号QQ群:&&,&&2号QQ群:,在群里结识技术精英和交流技术^_^
本站联系邮箱:实验二 十进制转换为八进制等 还有队列_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
实验二 十进制转换为八进制等 还有队列
上传于||文档简介
&&实​验​二​ ​十​进​制​转​换​为​八​进​制​等​ ​还​有​队​列
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩4页未读,继续阅读
你可能喜欢}

我要回帖

更多关于 扇形统计图 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信