handler使用_java中的handler

handler使用_java中的handler创建测试表:root@test04:53:11>showcreatetablet;+——-+———————————————————————————-

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

创建测试表:
root@test 04:53:11>show create table t;
+——-+——————————————————————————————————————————————————————————————————————————+
| Table | Create Table                                                                                                                                                                                                                 |
+——-+——————————————————————————————————————————————————————————————————————————+
| t     | CREATE TABLE `t` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `a` varchar(10) NOT NULL,
  `b` varchar(10) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `a_b` (`a`,`b`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=gbk |
+——-+——————————————————————————————————————————————————————————————————————————+
1 row in set (0.00 sec)

1). 打开索引:

 P <indexid> <dbname> <tablename> <indexname> <columns> [<fcolumns>]
columns表示指定获取的列
fcolumns用于做过滤的列
各个字段用TAB进行分割,handlersocket将打开相应的index,并保持打开直到客户端关闭,重复打开相同的indexid将导致之前的index被关闭并重新打开。indexname=’PRIMARY’表示主键索引
$sudo telnet localhost 9999
Trying 127.0.0.1…
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‘^]’.
P       1       test    t       primary id,a,b
2       1       idxnum
P       1       test    t       PRIMARY id,a,b
0       1
注意,这里的大小写是敏感的,另外primary后面的不是空格,而是tab

2).插入一条数据:
<indexid> + <vlen> <v1> … <vn>
indexid是之前打开的索引id;
vlen是索引的列数,vlen不大于open_index时的columns个数紧随其后的是各列的值,对于不在其中的列,值被设为默认值
例如:
P       1       test    t       primary id,a,b
1       +       3       NULL    a4      b4

0       1       5

1       +       3       7       aaaaaaa bbbbbb

0       1       0

返回值0     1     表示执行成功
看起来,当自增列为NULL时,返回值中包含了自增列的值

3).更新/删除一条数据:
<indexid> <op> <vlen> <v1> … <vn> [LIM] [IN] [FILTER …] MOD


op:用于支持比较操作,目前支持 = 、>、>=、<、<=
vlen:小于或等于索引的列的个数
LIM:<limit> <offset>
IN:  @ <icol> <ivlen> <iv1> … <ivn>,icol要比索引列的个数小,
IN类似于SQL中的where语法
FILTER:<ftyp> <fop> <fcol> <fval>
ftyp值为 ‘F’(filter)或者‘W’(while)
fop指定比较操作,与op相似
fcol:必须比fcolumns要小
可以设置多个filter,这类似于where字句中的 ‘and’

MOD是一个类似如下的序列:
<mop> <m1> … <mk>
mop的值包括: 
U   (update)
+   (increment)
–    (decrement)
D    (delete)
当在mop后面加?时,将返回修改前的数据
<m1>…<mk>,指定列的值
当执行delete操作时,即mop = D时,这些值会被忽略
当mop为+或-时,后面的值必须为整数
当mop为-时,若从负数变成正数或从正数变成负数,将不会改变列的值

例如,delete from test.t where id > 3 limit 1;
P       2       test    t       PRIMARY id,a,b

0       1

2       >       1       3       1       0       D
update test.t set a = ‘aa’, b = ‘cc’ where id = 3;
2       =       1       3       1       0       U       3       aa      bb

0       1       1

4). 查询数据:
<indexid> <op> <vlen> <v1> … <vn> [LIM] [IN] [FILTER …]
与3)类似,但没有mod操作
例如SQL操作:select id,b,a from test.t where id >= 5 limit 3
P       2       test    t       PRIMARY id,b,a

0       1

2       >=      1       5       3       0

0       3       5       b4      a4      7       bbbbbb  aaaaaaa 8       NULL    NULL



可以看出handlersocket还是有一些限制的:

1.无法支持比较复杂的查询,例如跨表、跨库的嵌套查询

2.必须要有索引

3.一些复杂的sql例如insert…..on duplicate key , insert…..select等类似的查询还无法支持

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/172634.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • hp中国区总裁孙振耀职场圣经

    hp中国区总裁孙振耀职场圣经

    2021年5月4日
    142
  • 一篇读懂无线充电技术(附方案选型及原理分析)「建议收藏」

    一篇读懂无线充电技术(附方案选型及原理分析)「建议收藏」一文读懂无线充电技术(附方案选型及原理分析)0.背景1.无线供电特点2.无线供电原理及实现方式3.现有解决方案分析4.FAQ及相关测试5.参考资料0.背景现今几乎所有的电子设备,如手机,MP3和笔记本电脑等,进行充电的方式主要是有线电能传输,既一端连接交流电源,另一端连接便携式电子设备充电电池的。这种方式有很多不利的地方,首先频繁的插拔很容易损坏主板接口,另外不…

    2022年5月7日
    52
  • vueweb端响应式布局_vue响应式原理图文详解「建议收藏」

    vueweb端响应式布局_vue响应式原理图文详解「建议收藏」Vue最显著的特性之一便是不太引人注意的响应式系统(reactivitysystem)。模型层(model)只是普通JS对象,修改它则更新视图(view)。这会让状态管理变得非常简单且直观,不过理解它的工作原理以避免一些常见的问题也是很重要的。本文将详细介绍Vue响应式系统的底层细节。追踪变化把一个普通JS对象传给Vue实例的data选项,Vue将遍历此对象所有的属性,并使用Object.def…

    2022年5月30日
    75
  • Pycharm 运行py文件[通俗易懂]

    Pycharm 运行py文件[通俗易懂]1 在桌面上建立一个文件夹  2.打开pycharm,如果已经有文件了,就点击File-&gt;closeproject,回到主界面3 选择Createanewproject 4.    将该文件夹的所在路径设为工程的路径,选择一下解释器,就点击Create,如果提示该文件夹不空的话,点击yes即可,可以提前把数据放入该aaaa文件夹5.   现在进入该页面,然后新建一个…

    2022年8月29日
    2
  • ubuntu20.04清华源_ubuntu20.04更换国内源

    ubuntu20.04清华源_ubuntu20.04更换国内源Ubuntu22.04的稳定版计划于2022年4月21日发布。开发工作已经在紧锣密鼓地进行,它将遵循如下发布时间表:2022年2月24日:功能冻结2022年3月17日:用户界面冻结2022年3月31日:测试版发布2022年4月14日:候选版本2022年4月21日:最终稳定版本Ubuntu22.04仍在积极开发中。您不应该在生产机器或主系统上使用它。如果你想在备用机器或虚拟机上测试它,你可以从Ubuntu的网站下载每日

    2025年10月12日
    2
  • MAC压缩文件 密码 加密ZIP[通俗易懂]

    MAC压缩文件 密码 加密ZIP[通俗易懂]使用zip命令压缩进入需要压缩文件的目录后执行单个文件:zip-etest.ziptext.txt文件夹:文件:zip-ertest.ziptext不加密:zip-rtest.ziptext执行命令输入两次密码即可,注:保证路径正确。lizz365@localhost:~/Documents/workspace$zip-erreporter…

    2022年6月7日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号