转载请注明原文地址https://www.jianshu.com/p/b86cc9354b20
TiCDC拥有自身的分布式高可用设计,且这些设计依赖数据库实例的PD组件,所以从这个角度来看,相对于debezium这种小工具,可能要稍微复杂一些。对于实现TiDB的Change Data Capture,并不是一个很新的话题,除了PingCAP原厂支持的binlog, cdc以外,业界早几年前就有过相关探索。 上周Flink CDC宣布在即将推出的2.2版本中新增tidb的cdc connector ,当时就在想,如果是java版的tidb cdc,很有可能从TiFlink这个项目中衍生……今天看到pr了,居然真的是借鉴了TiFlink的代码…… https://github.com/ververica/flink-cdc-connectors/commit/b911dd2a1b884d728393bd95e2a5966c8b878bb8
TiFlink与TiCDC
TiFlink是2020年TiDB Hackathon大赛的一个著名项目,使用 TiKV 和 Flink 实现了强一致的物化视图的功能。 其内部并未采用TiCDC,而是直接调用了TiKV的CDC接口,自己用java实现接收了TiKV推送过来的cdc日志并组装,并将该功能与flink集成,使得flink拥有了抽取tidb变化数据的能力。
首先,作为渣渣的我先膜拜一下参赛大佬,能在极短的时间内开发出这样一套工具并演说出来,真的不简单,NB……orz
但是,从客观事实角度来讲,短时间开发的experimental项目,功能稳定性,与经历过生产考验的TiCDC对比,这个结果是毫无疑问的,不用说了吧。
两者共同点
都是grpc通信,都是通过TiKV侧的CDC接口来接收TiKV推送过来的cdc日志,组装成完整的事务。 我之前有一篇文章专门介绍TiKV侧CDC接口: https://www.jianshu.com/p/dd5c7c222703
不同点,或者说:基于TiFlink二次开发,有哪些核心功能需要完善的?
以下都是ticdc都已经具备的功能,但tiflink缺少的。我先按功能重要性列了个表格,其中: ★ 表示必要功能,缺少将不能投产 ☆ 表示重要功能,缺少将严重影响运维、很多场景会出现问题
功能点
重要性
对table id变化的处理
★
对region状态变化的处理
★
对GC safepoint的考虑
★
对表结构变化的支持
☆
对大事务的支持
☆
支持分区表
一般
对table id变化的处理 在tidb中,每张表都对应有一个table id。我们想抽取这张表的数据,首先需要通过table id计算出这张表对应的key区间,然后去pd里面找这个区间对应的region,再向对应region发起请求。
key区间的编码规则为:
从 t_r 至 t_s 的左闭右开
然后编码为8+1字节对齐,便于memcmp,具体规则如下
// EncodeBytes guarantees the encoded value is in ascending order for comparison,
// encoding with the following rule:
// [group1][marker1]...[groupN][markerN]
// group is 8 bytes slice which is padding with 0.
// marker is `0xFF - padding 0 count`
// For example:
// [] -> [0, 0, 0, 0, 0, 0, 0, 0, 247]
// [1, 2, 3] -> [1, 2, 3, 0, 0, 0, 0, 0, 250]
// [1, 2, 3, 0] -> [1, 2, 3, 0, 0, 0, 0, 0, 251]
// [1, 2, 3, 4, 5, 6, 7, 8] -> [1, 2, 3, 4, 5, 6, 7, 8, 255, 0, 0, 0, 0, 0, 0, 0, 0, 247]
// Refer: https://github.com/facebook/mysql-5.6/wiki/MyRocks-record-format#memcomparable-format
举个例子,我建了一张表,table id为45,那么这张表的区间范围就是:
7480000000000000ff2d5f720000000000fa
至
7480000000000000ff2d5f730000000000fa
先不要去纠结key怎么编码的,这里我想说的是table id会发生变化。 当对一张表执行某些特定的ddl语句时,比如truncate,table id一定会发生变化。一旦table id发生变化,还用原先计算的key区间去订阅region,明显获取不到你想要的数据的。 我们看下ticdc是怎么处理这个问题的: 其实很简单,只需要订阅ddl对应的region即可,如果发现有对这张表的ddl会造成table id变化,取消原来的订阅,根据新的table id重新计算key区间,发起新的订阅。
tidb的元数据也存储于tikv内,对应的key区间编码规则为:
从 m<元数据属性名>l 至 m<元数据属性名>m 的左闭右开
比如ddl对应的元数据属性名为 "DDLJobList"
订阅这类区间就可以获得所有ddl操作。
对region状态变化的处理 之前就已经说过,TiKV的region不是固定不变的,可能发生分裂、合并、易主等状况,尤其是在生产环境,region变化是会比较频繁的,如果不处理此类状态变化,明显是不能用于生产的。 region常见状态变化,来自cdcpb.proto:
message Error {
// 某tikv节点比较繁忙可能出现,另一个tikv节点被选为了region的leader
errorpb.NotLeader not_leader = 1;
// region发生合并的常见异常
errorpb.RegionNotFound region_not_found = 2;
// region发生分裂的常见异常
errorpb.EpochNotMatch epoch_not_match = 3;
DuplicateRequest duplicate_request = 4;
Compatibility compatibility = 5;
ClusterIDMismatch cluster_id_mismatch = 6;
}
当收到region状态变化的通知时,需要重新去pd获取当前region信息。不过有一点需要注意,pd的region信息可能也不是最新的,获取到之后还要进行检查,region是否cover了你订阅的key区间。
可以通过以下命令手动迫使region分裂合并,观察ticdc的行为:
分裂:
mysql -h xxx -u root -P 4000 -e "split table cdc_bench.sbtest1 between (0) and (10000) regions 2"
合并:
pd-ctl --pd=http://x.x.x.x:2379 operator add merge-region 528 2
对GC safepoint的考虑 注意这里说的gc不是jvm gc,是指TiDB内部对于MVCC的过期数据的一个定期清理过程。众所周知MVCC并不是把update和delete的数据覆盖掉,而是新建立一个版本。如果不定期做清理,那么历史版本会越积越多,影响数据库的读性能。所以GC safepoint是指某个时间点,早于这个时间点的所有历史数据都将被清理掉;TiDB负责定期推进这个时间点,TiKV负责按时间点来执行清理操作。 TiCDC问世以后,由于TiCDC宕机与重启这期间的数据完全靠TiKV的“增量扫”来获取,如果历史数据被清理掉,增量扫是无法获取到正确的值(至少delete操作会丢失)。故TiCDC也有一个GC safepoint,只有正常运行时,这个safepoint才会往前推进。TiKV综合TiDB的safepoint和cdc的safepoint来进行GC操作,以此保证不会将不该清理的数据清理掉。 GC safepoint有一个专门的rpc接口定义在pdpb.proto
// TiDB的
rpc UpdateGCSafePoint(UpdateGCSafePointRequest) returns (UpdateGCSafePointResponse) {}
// TiCDC的
rpc UpdateServiceGCSafePoint(UpdateServiceGCSafePointRequest) returns (UpdateServiceGCSafePointResponse) {}
对表结构变化的支持 从TiKV接口中获取的rowdata是schemaless的,并不包含表结构信息。所以要想将DML数据完整还原出来,必须获取该条rowdata对应的正确版本的schema。 但是很不幸,和binlog不同,TiKV的CDC接口并未提供这一行数据对应的schema版本号。 所以这个问题不太好处理。并且由于TiDB是分布式数据库,其对于Online DDL的支持会比单机数据库要复杂许多,变相增加了处理难度。 TiCDC对于这块的处理主要是以时间戳和因果关系为原则,兼具考虑Online DDL的所有中间态,逻辑比较复杂,这里不做详细展开。
对大事务的支持 这个就不用细说了,因为要基于prewrite和commit操作来进行事务组装,如果事务很大的话,内存可能装不下。TiCDC里使用了外排,组件名称是叫UnifiedSorter,大家可以自行看下。TiFlink则直接使用的hashmap来装,对大事务的支持有限。
你可能感兴趣的:(关于java实现tidb CDC的二三事)
打卡信奥刷题(638)用C++信奥P8218[普及组/提高] 【深进1.例1】求区间和
Loge编程生活
C++ c++ 算法 开发语言 青少年编程 数据结构
【深进1.例1】求区间和题目描述给定nnn个正整数组成的数列a1,a2,⋯ ,ana_1,a_2,\cdots,a_na1,a2,⋯,an和mmm个区间[li,ri][l_i,r_i][li,ri],分别求这mmm个区间的区间和。对于所有测试数据,n,m≤105,ai≤104n,m\le10^5,a_i\le10^4n,m≤105,ai≤104输入格式第一行,为一个正整数nnn。第二行,为nnn个
MPP-大规模并行处理
quanzaiwoxin1
1、什么是MPP?MPP(MassivelyParallelProcessing),即大规模并行处理,在数据库非共享集群中,每个节点都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和应用特点划分到各个节点上,每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供数据库服务。非共享数据库集群有完全的可伸缩性、高可用、高性能、优秀的性价比、资源共享等优势。简单来说,MPP
socket网络通信基础
杨枝甘露小码
网络
目录一、套接字编程基本流程二、TCP流式协议及Socket编程的recv()和send()三、读写无阻塞-完美掌握I/O复用select()函数详解poll()函数详解epoll()函数详解一、套接字编程基本流程原文链接:Socket编程权威指南(一)打通网络通信的任督二脉_seqpacket-CSDN博客Socket进行编程通常包括以下几个步骤:创建Socket绑定Socket(绑定地址信息)监
网络技术发展的演变与未来展望
大丈夫立于天地间
水 网络
网络技术作为信息社会的重要基石,在过去几十年中经历了快速的发展和巨大的变革。从最初的ARPANET,到现在广泛使用的互联网,再到未来多国正在积极研发的6G网络,人类社会对网络技术的依赖程度不断加深,网络技术也持续推动着社会经济生活和文化方式的转变。第一代网络技术:构造基础互联网的起源可以追溯到1960年代的美国,美国国防部DAC(AdvanceResearchProjcetsAgency)为了军事
OSPF - 路由过滤的几种方法
大丈夫立于天地间
hcie笔记 智能路由器 网络 信息与通信 学习 网络协议 算法
1.路由引入时过滤可以通过引入路由时使用路由策略来过滤掉不想要的路由在ASBR上配置,能够直接不产生对应的5类LSAimport[外部自治系统]route-policy[路由策略名]//引入时考虑路由策略例如我现在要过滤掉从ISIS区域引入的3.3.4.4[ABSR的OSPF进程下]importisis1route-policyI2O//引入时考虑路由策略I2Oroute-policyI2Oper
国自然青年项目|基于多模态影像组学的乳腺癌分子分型预测研究|基金申请·25-01-20
罗小罗同学
基金申请 医学人工智能 人工智能 国自然
小罗碎碎念今天和大家分享一份国自然青年项目,项目执行期为2021-2023年,直接费用为24万。项目聚焦乳腺癌分子分型预测,综合运用多模态组学数据、影像组学技术和深度学习技术。研究内容包括跨模态医学图像分割、多模态特征提取与融合、模型设计与系统研发。通过提出一系列创新算法,如基于类别中心原型对齐器的图像分割算法、基于自注意力机制与生成对抗网络的聚类算法等,实现了对乳腺癌分子分型的高精度预测,并开发
后端学习1.4: Mybatis-plus配置多租户
Congee_porridge
后端开发学习 mybatis java spring boot 后端
功能要求Mybatis-plus配置多租户。从header中的token获取租户信息;所有userController的数据库操作*不要*配置多租户,所有工作计划相关的数据库操作*需要*配置多租户,达成数据隔离。开发工具:IDEA技术:Springboot+MabtisPlus+Postman1、什么是多租户?多租户技术(多重租赁技术,简称saas),是一种软件架构技术;可以实现同一套程序下用户数
linux服务器中的rinted端口转发yum源代理设置
Waylen_Wu
网络 服务器 linux centos 运维
内网服务器统一通过可访问公网的服务器代理端口转发使用yum源文章目录前言一、国内yum源一、公网服务器rinted代理安装二、公网服务器rinted使用说明1.rinted编辑配置2.启动程序3.需要注意三、内网服务器yum源设置1.先备份源yum源2.植入网易163yum源四、修改内网服务的hosts五、内网服务器验证yum源是否正常1.ping通mirrors.163.com2.yum源正常使
Java的DatagramPacket在C#中体现
hh_fine
c# java
C#创建UDP客户端和服务端在C#中,DatagramPacket是Java中用于UDP通信的一个类,而C#并没有直接对应的DatagramPacket类。不过,C#提供了类似的机制来处理基于UDP的数据报(datagram)通信,主要通过System.Net.Sockets命名空间中的UdpClient和Socket类来实现使用UDP客户端发送UdpClient是相对于Socket更高级的类,适
CMD批处理命令入门(7)——if 条件语句
跑不了的你
Windows驱动 windows ddos microsoft
CMD批处理命令入门(7)——if条件语句本章主要内容判断两个字符串是否相等判断两个数值是否相等判断判断驱动器,文件或文件夹是否存在,判断变量是否已经定义,判断上个命令的反回值,本章主要内容5种if语句的基本语法:判断两个字符串是否相等,if"字符串1"=="字符串2"command语句;判断两个数值是否相等,if数值1equ数值2command语句;判断判断驱动器,文件或文件夹是否存在,ifex
CMD批处理命令入门(1)——echo,rem,cd,dir
跑不了的你
Windows驱动 ddos windows microsoft
CMD批处理命令入门(1)——echo,rem,cd,dir本章内容包含显示信息:echo输出提示信息关闭该命令的回显打开回显或关闭回显功能输出空行,即相当于输入一个回车答复命令中的提问建立新文件或增加文件内容rem目录切换:cd同一个分区的切换不同分区的切换CD的另一个用途:显示当前的完整路径,一般用通过%cd%加以引用。列文件名:dir列出`c:\windows`下的目录及文件列出`c:\`下
后端开发面试题6(附答案)
来年定当除暴安良
面试 面试 跳槽 后端 golang
前言在下首语言是golang,所以会用他作为示例。原文参见@arialdomartini的:Back-EndDeveloperInterviewQuestions分布式系统相关问题1.怎么测试一个分布式系统?测试分布式系统是一项复杂且具有挑战性的任务,因为它涉及到多个组件在不同的网络环境和硬件设施上的协同工作。以下是一些测试分布式系统的关键步骤和方法:单元测试:对分布式系统中的每个独立模块进行单元
【MyBatis-Plus】实现多租户功能
会飞的猪ϵ( 'Θ' )϶
spring cloud微服务 mybatis 数据库 java
一、引言多租户是一种软件架构技术,在多用户的环境下,共有同一套系统,并且要注意数据之间的隔离性。举个实际例子:小编曾经开发过一套H5程序,这套程序应用在不同医院的APP上,当医院患者下载医院APP,并且进入相对应的H5页面,APP则会把用户相关数据传输到小编这里。在传输的时候需要带上医院标识(租户ID),以便小编将数据进行隔离。当不同的租户使用同一套程序,这里就需要考虑一个数据隔离的情况。数据隔离
文献综述相关ChatGPT提示词分享
AIWritePaper官方账号
Prompt ChatGPT AIWritePaper chatgpt 人工智能 数据分析 AIGC 信息可视化 数据挖掘 prompt
文献综述ChatGPT可以帮助提高文献综述的有效性和全面性。ChatGPT可以高效搜索和审查与宝子们课题研究相关的文献资料来源。一些给力的插件工具还可以帮助您总结复杂的研究论文并提取信息以更快更好地消化信息。合理的运用ChatGPT和GPTs可以提高文献综述的清晰度和质量,使其更加全面和有洞察力。文献综述提示词*131.在[人工智能相关]领域中,主要发现有哪些?2.在[人工智能相关]领域中,引用次
【python | pip list】pip list导入与导出
苹榆枫
# 深度学习框架 pip python linux
1.导出#查看当前安装的包piplist#导出当前安装的包记录pipfreeze>./requirements.txt2.导入#用anaconda创建一个虚拟环境condacreate-npy37python=3.7#激活当前py37环境MAC/Linux:sourceactivatepy37WIndows:activatepy37#导入安装之前的包列表pipinstall-r./requirem
【AI | python】functools.partial 的作用
苹榆枫
# 深度学习框架 人工智能 python
在代码中,partial是Pythonfunctools模块中的一个方法,用于固定函数的某些参数并返回一个新的函数。这个新的函数可以像原函数一样调用,但固定的参数不需要再次提供。代码中:self.compute_cis=partial(compute_axial_cis,dim=self.internal_dim//self.num_heads,theta=rope_theta)这里partial
下完安装好python后,想查看python的安装位置的几种方法
omofun5541
python 开发语言
查看python的路径基于windows系统,按下win+r(也就是命令提示符),输入cmd,进入查看当前的python的版本的话输入python-V1,查看当前下载的python类型和路径则可以输入py-0(加*的是你使用python的默认版本)2,还可以使用命令wherepython查看路径(这样就不会显示你python默认使用的是哪个)小技巧:如果想清除命令行的话可以输入命令cls然后ent
omfun官方版网页版下载-omofun官方版2024安卓IOS下载
omofun5541
omofun动漫 omofun 动漫 ios 动画 安卓 windows
omofun关于“ROOT苹果手机”的说法实际上是一个误解,omofun动漫因为“ROOT”这个术语通常指的是获取Android设备的超级用户权限,omofun漫画而苹果手机(iPhone)使用的是iOS操作系统,获取超级用户权限的过程被称为“越狱”(Jailbreak)。omfun官方版app最新版本版下载:http://om.aunbaidu.com/下面是一篇关于如何越狱苹果手机的文章,介绍
深入浅出 SQLSugar:快速掌握高效 .NET ORM 框架
m0_74823595
.net
SQLSugar是一个高效、易用的.NETORM框架,支持多种数据库(如SQLServer、MySQL、PostgreSQL等)。它提供了丰富的功能,包括CRUD操作、事务管理、动态表名、多表联查等,开发者可以通过简单的链式操作实现复杂的数据库逻辑。本文将以完整的示例,详细介绍SQLSugar的安装、配置和功能使用,适用于.NETFramework和.NETCore项目。一、SQLSugar简介1
足球俱乐部管理系统(11293)
codercode2022
spring boot spring cloud 后端 hibernate 架构 laravel actionscript
有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发
Bootstrap UI 编辑器:简化前端开发的利器
lsx202406
开发语言
BootstrapUI编辑器:简化前端开发的利器引言在当今的网页设计和开发领域,Bootstrap已经成为了一个非常流行的前端框架。它以其响应式设计、简洁的代码和丰富的组件库而受到广大开发者的喜爱。然而,对于一些非技术背景的设计师或者初学者来说,直接使用Bootstrap可能会有一定的难度。这时,BootstrapUI编辑器就成为了他们的救星。本文将详细介绍BootstrapUI编辑器的概念、特点
Python3 环境搭建指南
lly202406
开发语言
Python3环境搭建指南1.引言Python是一种广泛使用的高级编程语言,以其简洁明了的语法和强大的功能而闻名。Python3是Python的最新版本,它在Python2的基础上进行了大量更新和改进。本指南将详细介绍如何在您的计算机上搭建Python3环境,以便您可以开始编写和运行Python程序。2.系统要求在开始安装Python3之前,请确保您的计算机满足以下最低系统要求:操作系统:Wind
一文学习python中编码和解码
科雷learning
python编程 python 开发语言
学习目录1什么是编码和解码2编解码基本原理3python的默认编码4什么是10进制/2进制/8进制/16进制?5python的字符串编解码5.1使用str.encode()编码,str.decode()解码5.2解码的乱码问题5.316进制字符串转为普通字符串6python字符串和unicode类型编码转换什么是编码和解码大家都知道计算机是二进制的世界,计算机系统只能识别数字0和1组成的一串串的数
张丽霞:对地址转换(NAT)的回顾与反思
junecauzhang
软件综合 internet 互联网 网络 防火墙 工作 transactions
张丽霞:对地址转换(NAT)的回顾与反思PostedonFebruary24,2009byDuanHaixin作者简介:张立霞,美国UCLA计算机系教授,互联网体系结构委员会(IAB)委员,IETFIRTFRoutingResearch工作组副主席(co-chair),ACM会员(Fellow),曾担任ACMSIGCOMM副主席(1999-2003),IEEECommunicationSociet
使用 PyTorch 从头开始构建您自己的 Llama 3 架构
子然在打码
pytorch llama 人工智能
https://www.aisolink.com/build-your-own-llama-3-architecture-from-scratch-using-pytorch全文摘要本文提供了一个详细的指南,介绍如何使用PyTorch从头开始构建Llama3模型的完整架构,并对自定义数据集进行训练和推理。文章涵盖了构建输入块、解码器块和输出块的步骤,并提供了相应的代码示例。最终目标是构建一个功能齐
ZYNQ + Linux
jerwey
linux zynq
ZYNQLinux操作系统移植说明文档http://xilinx.eetrend.com/content/2019/100018437.html1,组成ZYNQ上面移植Linux操作系统包括四个部分,uboot,devicetree,kernel,ramdisk.其中uboot类似于bios,负责对设备进行简单的初始化,devicetree以树的形式对zynq相连的硬件设备进行描述,kernel是
已知域名如何知道网站的ip
hunter206206
网络 tcp/ip 网络协议 网络
已知域名获取网站IP的方法如下:1.使用ping命令Windows:打开命令提示符,输入pingexample.com,查看返回的IP地址。macOS/Linux:打开终端,输入pingexample.com,查看返回的IP地址。2.使用nslookup命令Windows/macOS/Linux:在命令提示符或终端中输入nslookupexample.com,查看返回的IP地址。3.使用dig命令
paimon中的Branch
qzWsong
paimon 大数据 数据库
Branchhttps://paimon.apache.org/docs/0.9/maintenance/manage-branches/paimon借鉴了git的管理机制,在我们开发代码的时候,为了不影响主分支的功能,我们一般会新建一个分支进行迭代,待新分支完善后,合并回主分支,在新的分支做任何数据操作都不会影响主分支。在paimon中,我们也可以对表创建分支,相当于在当前数据状态下复制出来了一
C语言编程数据结构编程练习-顺序栈的操作
墨楠。
# C 语言数据结构研习汇 C c语言 数据结构 开发语言
#define_CRT_SECURE_NO_WARNINGS#include#include#include#include#include#defineMAX_SIZE20//通过数组的方式创建顺序栈出栈,入栈等操作typedefintelementType;typedefstructstack{elementTypedata[MAX_SIZE];inttop;//栈顶intbottom;//栈
Redis CVE-2022-24834 复现
hicode0101
redis 数据库 缓存
(CVE-2022-24834)在Redis中执行的特制Lua脚本可能会触发cjson和cmsgpack库中的堆溢出,并导致堆损坏和潜在的远程代码执行。从2.6开始,所有支持Lua脚本的Redis版本都存在该问题,并且仅影响经过认证和授权的用户。GitHub-convisolabs/CVE-2022-24834Contributetoconvisolabs/CVE-2022-24834develo
关于旗正规则引擎规则中的上传和下载问题
何必如此
文件下载 压缩 jsp 文件上传
文件的上传下载都是数据流的输入输出,大致流程都是一样的。
一、文件打包下载
1.文件写入压缩包
string mainPath="D:\upload\"; 下载路径
string tmpfileName=jar.zip; &n
【Spark九十九】Spark Streaming的batch interval时间内的数据流转源码分析
bit1129
Stream
以如下代码为例(SocketInputDStream):
Spark Streaming从Socket读取数据的代码是在SocketReceiver的receive方法中,撇开异常情况不谈(Receiver有重连机制,restart方法,默认情况下在Receiver挂了之后,间隔两秒钟重新建立Socket连接),读取到的数据通过调用store(textRead)方法进行存储。数据
spark master web ui 端口8080被占用解决方法
daizj
8080 端口占用 spark master web ui
spark master web ui 默认端口为8080,当系统有其它程序也在使用该接口时,启动master时也不会报错,spark自己会改用其它端口,自动端口号加1,但为了可以控制到指定的端口,我们可以自行设置,修改方法:
1、cd SPARK_HOME/sbin
2、vi start-master.sh
3、定位到下面部分
oracle_执行计划_谓词信息和数据获取
周凡杨
oracle 执行计划
oracle_执行计划_谓词信息和数据获取(上)
一:简要说明
在查看执行计划的信息中,经常会看到两个谓词filter和access,它们的区别是什么,理解了这两个词对我们解读Oracle的执行计划信息会有所帮助。
简单说,执行计划如果显示是access,就表示这个谓词条件的值将会影响数据的访问路径(表还是索引),而filter表示谓词条件的值并不会影响数据访问路径,只起到
spring中datasource配置
g21121
dataSource
datasource配置有很多种,我介绍的一种是采用c3p0的,它的百科地址是:
http://baike.baidu.com/view/920062.htm
<!-- spring加载资源文件 -->
<bean name="propertiesConfig"
class="org.springframework.b
web报表工具FineReport使用中遇到的常见报错及解决办法(三)
老A不折腾
finereport FAQ 报表软件
这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己。
出现问题先搜一下文档上有没有,再看看度娘有没有,再看看论坛有没有。有报错要看日志。下面简单罗列下常见的问题,大多文档上都有提到的。
1、repeated column width is largerthan paper width:
这个看这段话应该是很好理解的。比如做的模板页面宽度只能放
mysql 用户管理
墙头上一根草
linux mysql user
1.新建用户 //登录MYSQL@>mysql -u root -p@>密码//创建用户mysql> insert into mysql.user(Host,User,Password) values(‘localhost’,'jeecn’,password(‘jeecn’));//刷新系统权限表mysql>flush privileges;这样就创建了一个名为:
关于使用Spring导致c3p0数据库死锁问题
aijuans
spring Spring 入门 Spring 实例 Spring3 Spring 教程
这个问题我实在是为整个 springsource 的员工蒙羞
如果大家使用 spring 控制事务,使用 Open Session In View 模式,
com.mchange.v2.resourcepool.TimeoutException: A client timed out while waiting to acquire a resource from com.mchange.
百度词库联想
annan211
百度
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>RunJS</title&g
int数据与byte之间的相互转换实现代码
百合不是茶
位移 int转byte byte转int 基本数据类型的实现
在BMP文件和文件压缩时需要用到的int与byte转换,现将理解的贴出来;
主要是要理解;位移等概念 http://baihe747.iteye.com/blog/2078029
int转byte;
byte转int;
/**
* 字节转成int,int转成字节
* @author Administrator
*
简单模拟实现数据库连接池
bijian1013
java thread java多线程 简单模拟实现数据库连接池
简单模拟实现数据库连接池
实例1:
package com.bijian.thread;
public class DB {
//private static final int MAX_COUNT = 10;
private static final DB instance = new DB();
private int count = 0;
private i
一种基于Weblogic容器的鉴权设计
bijian1013
java weblogic
服务器对请求的鉴权可以在请求头中加Authorization之类的key,将用户名、密码保存到此key对应的value中,当然对于用户名、密码这种高机密的信息,应该对其进行加砂加密等,最简单的方法如下:
String vuser_id = "weblogic";
String vuse
【RPC框架Hessian二】Hessian 对象序列化和反序列化
bit1129
hessian
任何一个对象从一个JVM传输到另一个JVM,都要经过序列化为二进制数据(或者字符串等其他格式,比如JSON),然后在反序列化为Java对象,这最后都是通过二进制的数据在不同的JVM之间传输(一般是通过Socket和二进制的数据传输),本文定义一个比较符合工作中。
1. 定义三个POJO
Person类
package com.tom.hes
【Hadoop十四】Hadoop提供的脚本的功能
bit1129
hadoop
1. hadoop-daemon.sh
1.1 启动HDFS
./hadoop-daemon.sh start namenode
./hadoop-daemon.sh start datanode
通过这种逐步启动的方式,比start-all.sh方式少了一个SecondaryNameNode进程,这不影响Hadoop的使用,其实在 Hadoop2.0中,SecondaryNa
中国互联网走在“灰度”上
ronin47
管理 灰度
中国互联网走在“灰度”上(转)
文/孕峰
第一次听说灰度这个词,是任正非说新型管理者所需要的素质。第二次听说是来自马化腾。似乎其他人包括马云也用不同的语言说过类似的意思。
灰度这个词所包含的意义和视野是广远的。要理解这个词,可能同样要用“灰度”的心态。灰度的反面,是规规矩矩,清清楚楚,泾渭分明,严谨条理,是决不妥协,不转弯,认死理。黑白分明不是灰度,像彩虹那样
java-51-输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
bylijinnan
java
public class PrintMatrixClockwisely {
/**
* Q51.输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
例如:如果输入如下矩阵:
1 2 3 4
5 6 7 8
9
mongoDB 用户管理
开窍的石头
mongoDB用户管理
1:添加用户
第一次设置用户需要进入admin数据库下设置超级用户(use admin)
db.addUsr({user:'useName',pwd:'111111',roles:[readWrite,dbAdmin]});
第一个参数用户的名字
第二个参数
[游戏与生活]玩暗黑破坏神3的一些问题
comsci
生活
暗黑破坏神3是有史以来最让人激动的游戏。。。。但是有几个问题需要我们注意
玩这个游戏的时间,每天不要超过一个小时,且每次玩游戏最好在白天
结束游戏之后,最好在太阳下面来晒一下身上的暗黑气息,让自己恢复人的生气
&nb
java 二维数组如何存入数据库
cuiyadll
java
using System;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
namespace WindowsFormsApplication1
{
本地事务和全局事务Local Transaction and Global Transaction(JTA)
darrenzhu
java spring local global transaction
Configuring Spring and JTA without full Java EE
http://spring.io/blog/2011/08/15/configuring-spring-and-jta-without-full-java-ee/
Spring doc -Transaction Management
http://docs.spring.io/spri
Linux命令之alias - 设置命令的别名,让 Linux 命令更简练
dcj3sjt126com
linux alias
用途说明
设置命令的别名。在linux系统中如果命令太长又不符合用户的习惯,那么我们可以为它指定一个别名。虽然可以为命令建立“链接”解决长文件名的问 题,但对于带命令行参数的命令,链接就无能为力了。而指定别名则可以解决此类所有问题【1】。常用别名来简化ssh登录【见示例三】,使长命令变短,使常 用的长命令行变短,强制执行命令时询问等。
常用参数
格式:alias
格式:ali
yii2 restful web服务[格式响应]
dcj3sjt126com
PHP yii2
响应格式
当处理一个 RESTful API 请求时, 一个应用程序通常需要如下步骤 来处理响应格式:
确定可能影响响应格式的各种因素, 例如媒介类型, 语言, 版本, 等等。 这个过程也被称为 content negotiation。
资源对象转换为数组, 如在 Resources 部分中所描述的。 通过 [[yii\rest\Serializer]]
MongoDB索引调优(2)——[十]
eksliang
mongodb MongoDB索引优化
转载请出自出处:http://eksliang.iteye.com/blog/2178555 一、概述
上一篇文档中也说明了,MongoDB的索引几乎与关系型数据库的索引一模一样,优化关系型数据库的技巧通用适合MongoDB,所有这里只讲MongoDB需要注意的地方 二、索引内嵌文档
可以在嵌套文档的键上建立索引,方式与正常
当滑动到顶部和底部时,实现Item的分离效果的ListView
gundumw100
android
拉动ListView,Item之间的间距会变大,释放后恢复原样;
package cn.tangdada.tangbang.widget;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.res.TypedArray;
import andr
程序员用HTML5制作的爱心树表白动画
ini
JavaScript jquery Web html5 css
体验效果:http://keleyi.com/keleyi/phtml/html5/31.htmHTML代码如下:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="UTF-8" >
<ti
预装windows 8 系统GPT模式的ThinkPad T440改装64位 windows 7旗舰版
kakajw
ThinkPad 预装 改装 windows 7 windows 8
该教程具有普遍参考性,特别适用于联想的机器,其他品牌机器的处理过程也大同小异。
该教程是个人多次尝试和总结的结果,实用性强,推荐给需要的人!
缘由
小弟最近入手笔记本ThinkPad T440,但是特别不能习惯笔记本出厂预装的Windows 8系统,而且厂商自作聪明地预装了一堆没用的应用软件,消耗不少的系统资源(本本的内存为4G,系统启动完成时,物理内存占用比
Nginx学习笔记
mcj8089
nginx
一、安装nginx 1、在nginx官方网站下载一个包,下载地址是:
http://nginx.org/download/nginx-1.4.2.tar.gz
2、WinSCP(ftp上传工
mongodb 聚合查询每天论坛链接点击次数
qiaolevip
每天进步一点点 学习永无止境 mongodb 纵观千象
/* 18 */
{
"_id" : ObjectId("5596414cbe4d73a327e50274"),
"msgType" : "text",
"sendTime" : ISODate("2015-07-03T08:01:16.000Z"
java术语(PO/POJO/VO/BO/DAO/DTO)
Luob.
DAO POJO DTO po VO BO
PO(persistant object) 持久对象
在o/r 映射的时候出现的概念,如果没有o/r映射,就没有这个概念存在了.通常对应数据模型(数据库),本身还有部分业务逻辑的处理.可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合.PO中应该不包含任何对数据库的操作.
VO(value object) 值对象
通
算法复杂度
Wuaner
Algorithm
Time Complexity & Big-O:
http://stackoverflow.com/questions/487258/plain-english-explanation-of-big-o
http://bigocheatsheet.com/
http://www.sitepoint.com/time-complexity-algorithms/