Apache Omid Client 组件实现原理
Apache Omid Client 组件实现原理作用通过 TransactionManager 开启/提交/回滚事务,提供事务内快照隔离级别的读写操作。 使用123456789101112131415// 1.创建 transaction managerTransactionManager tm = HBaseTransactionManager.newInstance();// 2.通过 transactin manger 开启事务Transaction tx0 = tm.begin();// 3.事务内插入数据byte[] rowId = rowIdGenerator.getRowId();Put initialPut = new Put(rowId);initialPut.addColumn(family, qualifier, initialData);txTable.put(tx0, initialPut);// 4.事务内读取数据Get tx2Get = new Get(rowId);tx2Get.addColumn(family,...
Ubuntu Desktop Docker 配置代理
Ubuntu Desktop Docker 配置代理主要解决 docker pull 拉取不了镜像问题. Docker Desktop 配置代理这个比较简单, 直接在 Docker Desktop 里设置 Proxies, 示例如下: http://127.0.0.1:7890 Docker Engine 配置代理Docker Engine 使用下面配置文件即可; 方式1: 配置 /etc/docker/daemon.json 1sudo vim /etc/docker/daemon.json 123{ "registry-mirrors": ["https://docker.m.daocloud.io"]} 方式2:非 root 用户,如果安装了 docker desktop 需要通过 docker context 切换到 docker engine; docker pull 是由守护进程 dockerd 执行,因此代理需添加在 dockerd 的 systemd...
安装 PaddleOCR
安装 PaddleOCR创建 conda env。 12345# 创建 conda envconda create --name paddle_env python=3.8source activate paddle_envconda activate paddle_env 安装 paddle。 12345# 安装 paddlepaddle,使用清华源pip install paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple/# 安装 paddle hub,使用清华源pip install paddlehub -i https://pypi.tuna.tsinghua.edu.cn/simple/ 安装 paddle ocr 中文识别服务。 1234567# paddle ocr 中文识别,可以部署成服务http调用# 安装依赖pip install shapely pyclipper# 安装ocrhub install chinese_ocr_db_crnn_server 使用: 12345678910#...
Android 使用 ADB 调试
Android 使用 ADB 调试ADB 安装方式1: 通过 sudo apt install android-tools-adb 安装,试了下版本比较老了,用不起来. 方式2: 按照官网说明下载 Android Studio 或独立的 SDK 平台工具,两者都内含 ADB。下载完成后,配置环境变量. 12# vim ~/.bash_profileexport adb="/home/flyingzc/Android/Sdk/platform-tools/adb" 手机端设置:1.启用开发者选项2.启用USB调试 使用 ADB 连接手机方式1: USB 连接然后直接通过 usb 连接手机 和 电脑即可。运行 adb devices, 查看连接的设备。 12345➜ ~ adb devices* daemon not running; starting now at tcp:5037* daemon started successfullyList of devices attached5f541edd device 方式2: wifi...
Apache Omid TSO 组件实现原理
Apache Omid TSO 组件实现原理作用独立进程,处理全局事务之间的并发冲突。 流程TSOChannelHandler#channelRead -> AbstractRequestProcessor -> PersistenceProcessorHandler 总体流程123456789thread1 TSOChannelHandler#channelRead AbstractRequestProcessor#timestampRequest 接收 client 请求,创建 RequestEvent 并 publishthread2 AbstractRequestProcessor#onEvent 处理 RequestEvent 请求 AbstractRequestProcessor#handleRequest PersistenceProcessorImpl#addTimestampToBatch 创建 PersistEvent,当 batch 满了发送事件thread3 ...
Apache Omid Timestamp Oracle 组件实现原理
Omid Timestamp Oracle 组件实现原理作用生成全局单调递增的时间戳,支持获取操作和崩溃恢复。 功能1234567891011121314151617181920212223241.生成全局单调递增的时间戳(支持崩溃恢复) api next 返回下一个时间戳 getLast 返回最后一个分配的时间戳(当前时间戳) 实现方式 TimestampOracleImpl 单调递增的时间戳 在分配时间戳时,如果当前的最大时间戳已经用完,它会触发一个后台任务来更新最大时间戳 next: 分配下一个时间戳。如果当前的最大时间戳已经用完,它会等待后台任务分配新的时间戳 WorldClockOracleImpl 基于世界时间(System.timestamp)生成全局单调递增的时间戳2.存储时间戳 存储方式 in memory...
Android Termux 安装 Git 和 SSH
Android 使用 Termux 安装 Git 和 SSH背景在 Android 上使用 Git 客户端。可选工具:1.Pocket Git & MGit 客户端2.Termux 安装 Git(选用)下面介绍使用 Termux 安装 Git 和通过 SSH 远程连接 Termux。 1.换源运行 termux-change-repo 命令,通过图形界面替换成 TUNA/BFSU 镜像源即可。 2.ssh123456789101112131415161718192021222324# 安装open-sshpkg install openssh# 报错:CANNOT LINK EXECUTABLE "ssh-keygen": library "libcrypto.so.3" not found: needed by main executable# 解决:安装 openssl1.1-tool。这里必须要指定版本,否则报错 library “libssl.so.1.1“ not foundpkg install...
Apache Omid Idea 环境搭建
IDEA 搭建 Apache Omid 源码 DEBUG 环境Apache Omid 在 Apache HBase 之上提供了多行分布式事务的能力,支持全局 MVCC 功能。简单介绍编译过程。 1.下载 HBase2 并启动https://dlcdn.apache.org/hbase/ 配置环境变量 12export HBASE_HOME=/xxx/hbase-2.4.18export PATH=$PATH:$HBASE_HOME/bin: 2.编译代码编译1git clone https://github.com/apache/phoenix-omid 基于最新的 master af8e377affcd76b1cbde5cab3513731b23bd51fc 编译。 maven 依赖处理有几处编译报错,处理如下: 根 pom 里添加: 12345<dependency> <groupId>org.glassfish</groupId> <artifactId>javax.el</artifactId>...
MySQL 驱动 Add Batch 优化实现
MySQL 驱动 Add Batch 优化实现MySQL 驱动会在 JDBC URL 添加 rewriteBatchedStatements 参数时,对 batch 操作进行优化。本文测试各种参数组合的行为,并结合驱动代码简单分析。 batch参数组合行为useServerPrepStmts 参数123PreparedStatement psmt = connection.prepareStatement("DELETE FROM t_order WHERE `order_id` = ?");psmt.setObject(1, 1);psmt.execute(); 开启:使用服务端预编译,先发送 prepared 语句,再发送 excute 语句 不开启:mysql 驱动会将占位符填充后,明文下发sql. 比如 DELETE FROM t_order WHERE order_id = ?; 语句 MySQL 驱动会下发 DELETE FROM t_order WHERE order_id = 1; allowMultiQueries...
ShardingSphere-SQL 解析 Issue 处理流程
ShardingSphere-SQL 解析 Issue 处理流程这是之前给社区写的 SQL 解析 Issue 的处理流程,可以帮助社区用户快速参与到 ShardingSphere-SQL 解析当中。 ShardingSphere SQL 解析 issue 列表 Issue 背景说明当前 Issue 使用自定义的爬虫脚本从对应的数据库官网上抓取 SQL Cases,然后交给 ShardingSphere 的解析引擎进行解析。对于解析失败的 SQL Case,每 3~5 条 SQL 作为一个 Issue。 由于是通过爬虫抓取的,所以不保证所有 SQL 本身就是正确的,请按照如下流程处理该 PR。 有些 SQL Case 可能已经在其他 PR 里被修复,对于已经可以执行的 Case 直接留言忽略即可。 如果该 SQL Case 已经可以成功运行,没有任何代码改动,那么不需要添加对应的 Test 断言文件。 总体流程 如果你打算参与该 Issue 的修复,欢迎在 Issue 下方留言,会有社区同学分配该 Issue。 比如留言:Hi, please assign this...