位运算基础知识
一:参考 [算法心得] http://graphics.stanford.edu/~seander/bithacks.html#IntegerLogIEEE64Float
[运算符优先级] https://tool.oschina.net/commons?type=6
[位运算技巧] https://www.zhihu.com/question/38206659
[思考题解法] https://www.iteye.com/blog/yacare-1969931
二:概要 通过本文可以让我们温习下位运算、进制转换,为写出更精良的代码奠定理论基础。现在我们从一个题目说开去:
问:如何载预计有10亿个int的数据中,剔除其中重复的数据并排序输出?
分析:首先要进行排序、排重必须得把相关数据加载到内存中,那么要用哪种数据结构来存储呢?
10 0000 0000 = 10^9
int[10^9] 需要内存 10^9 * 4(B) => ((10^9 * 4)/1000 * 1000)(M) => 4000M => 4GB
对于普通32位最大理论内存为4G的PC来说,这个计算资源是无法实现需求的,那么有没有更好的解决方法呢?在此之前先做些知识点温故。
三:知识点回顾 1.java基本类型 Data Type Default Value Default size range range value boolean false 1 bit char ‘\u0000’ 2 byte ‘\u0000’~’\uFFFF’ byte 0 1 byte -2^7~2^7-1 -128~127 short 0 2 byte -2^15~2^15-1 -32768~32767 int 0 4 byte -2^31~2^31-1 0x80000000~0x7fffffff long 0L 8 byte -2^63~2^63-1 float 0.
Read More »
位运算基础知识
一:参考 [算法心得] http://graphics.stanford.edu/~seander/bithacks.html#IntegerLogIEEE64Float
[运算符优先级] https://tool.oschina.net/commons?type=6
[位运算技巧] https://www.zhihu.com/question/38206659
[思考题解法] https://www.iteye.com/blog/yacare-1969931
二:概要 通过本文可以让我们温习下位运算、进制转换,为写出更精良的代码奠定理论基础。现在我们从一个题目说开去:
问:如何载预计有10亿个int的数据中,剔除其中重复的数据并排序输出?
分析:首先要进行排序、排重必须得把相关数据加载到内存中,那么要用哪种数据结构来存储呢?
10 0000 0000 = 10^9
int[10^9] 需要内存 10^9 * 4(B) => ((10^9 * 4)/1000 * 1000)(M) => 4000M => 4GB
对于普通32位最大理论内存为4G的PC来说,这个计算资源是无法实现需求的,那么有没有更好的解决方法呢?在此之前先做些知识点温故。
三:知识点回顾 1.java基本类型 Data Type Default Value Default size range range value boolean false 1 bit char ‘\u0000’ 2 byte ‘\u0000’~’\uFFFF’ byte 0 1 byte -2^7~2^7-1 -128~127 short 0 2 byte -2^15~2^15-1 -32768~32767 int 0 4 byte -2^31~2^31-1 0x80000000~0x7fffffff long 0L 8 byte -2^63~2^63-1 float 0.
Read More »
canal-mysql binlog日志解析
1.参考 【alibaba canal】https://github.com/alibaba/canal
【mysql binlog】https://dev.mysql.com/doc/refman/8.0/en/binary-log.html
【mysql event】https://dev.mysql.com/doc/internals/en/event-meanings.html
【mysqlbinlog 命令】https://dev.mysql.com/doc/refman/8.0/en/mysqlbinlog.html
2.基本简介 canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费
2.1 mysql主备复制实现 master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events,可以通过show binlog events进行查看); slave将master的binary log events拷贝到它的中继日志(relay log); slave重做中继日志中的事件,将改变反映它自己的数据。 2.2 mysql binglog 数据包格式 mysql 事件体目前有一下版本
v1:在 MySQL 3.23 中使用
+=====================================+ | event | timestamp 0 : 4 | | header +----------------------------+ | | type_code 4 : 1 | | +----------------------------+ | | server_id 5 : 4 | | +----------------------------+ | | event_length 9 : 4 | +=====================================+ | event | fixed part 13 : y | | data +----------------------------+ | | variable part | +=====================================+ 标头长度 = 13 字节 数据长度 = (event_length - 13) 字节 y 特定于事件类型。 v3:在 MySQL 4.
Read More »
canal-mysql binlog日志解析
1.参考 【alibaba canal】https://github.com/alibaba/canal
【mysql binlog】https://dev.mysql.com/doc/refman/8.0/en/binary-log.html
【mysql event】https://dev.mysql.com/doc/internals/en/event-meanings.html
【mysqlbinlog 命令】https://dev.mysql.com/doc/refman/8.0/en/mysqlbinlog.html
2.基本简介 canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费
2.1 mysql主备复制实现 master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events,可以通过show binlog events进行查看); slave将master的binary log events拷贝到它的中继日志(relay log); slave重做中继日志中的事件,将改变反映它自己的数据。 2.2 mysql binglog 数据包格式 mysql 事件体目前有一下版本
v1:在 MySQL 3.23 中使用
+=====================================+ | event | timestamp 0 : 4 | | header +----------------------------+ | | type_code 4 : 1 | | +----------------------------+ | | server_id 5 : 4 | | +----------------------------+ | | event_length 9 : 4 | +=====================================+ | event | fixed part 13 : y | | data +----------------------------+ | | variable part | +=====================================+ 标头长度 = 13 字节 数据长度 = (event_length - 13) 字节 y 特定于事件类型。 v3:在 MySQL 4.
Read More »
maven-wrapper基础使用
1.maven-wrapper安装使用 安装 在项目中使用命令安装mvn -N io.takari:maven:0.7.7:wrapper,参考官网 ,如果需要指定maven版本则使用mvn -N io.takari:maven:0.7.7:wrapper -Dmaven=3.5.4,安装完成后,目录如下
my-project ├── .mvn │ └── wrapper │ ├── MavenWrapperDownloader.java │ ├── maven-wrapper.jar │ └── maven-wrapper.properties ├── mvnw ├── mvnw.cmd ├── pom.xml └── src ├── main │ ├── java │ └── resources └── test ├── java └── resources 使用 参考mvn命令, 指令切换成mvnw如: linux下 ./mvnw clean install windown下 mvnw.cmd clean install
Read More »
maven-wrapper基础使用
1.maven-wrapper安装使用 安装 在项目中使用命令安装mvn -N io.takari:maven:0.7.7:wrapper,参考官网 ,如果需要指定maven版本则使用mvn -N io.takari:maven:0.7.7:wrapper -Dmaven=3.5.4,安装完成后,目录如下
my-project ├── .mvn │ └── wrapper │ ├── MavenWrapperDownloader.java │ ├── maven-wrapper.jar │ └── maven-wrapper.properties ├── mvnw ├── mvnw.cmd ├── pom.xml └── src ├── main │ ├── java │ └── resources └── test ├── java └── resources 使用 参考mvn命令, 指令切换成mvnw如: linux下 ./mvnw clean install windown下 mvnw.cmd clean install
Read More »