![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
weixin_42127238
这个作者很懒,什么都没留下…
展开
-
MySQL增量数据同步 Canal
github官方地址:https://github.com/alibaba/canalcanal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。基于日志增量订阅和消费的业务包括数据库镜像数据库实时备份索原创 2021-05-15 16:45:36 · 377 阅读 · 0 评论 -
kafka 入门介绍
kafka是中间件 主要作用是为了削峰和解耦akf原则将中间件划分为xyz三个层次x轴为主备,保证数据安全y轴根据业务划分服务,可以分为日志服务,购物服务等,类似topic,每个服务处理自己服务内部的一些事物z轴是分片处理kafka中有 几个定义 topic broker partition group producer consumertopic 是逻辑上的定义,具体可以根据业务来划分,比如日志的topicbroker主要可以理解为一个个服务器,是实际的,一个日志的topic可以放在原创 2021-03-07 18:06:34 · 137 阅读 · 0 评论 -
java 是值传递的
Java中的传递,是值传递,而这个值,实际上是对象的引用。关键看这个值是什么,简单变量就是复制了具体值,引用变量就是复制了地址。字符串是不可变的,不会被修改原创 2021-01-10 17:52:54 · 44 阅读 · 0 评论 -
synchronized源码
转载https://blog.csdn.net/zwjyyy1203/article/details/106217887转载 2020-12-15 15:20:01 · 60 阅读 · 0 评论 -
Java对象的内存分配过程是如何保证线程安全的
1Java对象的内存分配我们知道,Java是一门面向对象的语言,我们在Java中使用的对象都需要被创建出来,在Java中,创建一个对象的方法有很多种,如使用new、使用反射、使用Clone方法等,但是无论如何,对象在创建过程中,都需要进行内存分配。拿最常见的new关键字举例,当我们使用new创建对象后代码开始运行后,虚拟机执行到这条new指令的时候,会先检查要new的对象对应的类是否已被加载,如果没有被加载则先进行类加载。在类加载检查通过之后,就需要给对象进行内存分配了,分配的内存主要用来存放对象的转载 2020-12-14 09:59:20 · 113 阅读 · 0 评论 -
NIO基本模型
BIO的时候,会阻塞,解决方法是有新的请求,那么就再起一个新的线程。对应新的接受数据读写。NIO是就一个线程,在accept的时候,调用内核了,如果此时没有客户端连接进来,BIO的时候就是没有返回值,一直卡着,但是在NIO中,不会卡着,返回-1。如果来了客户端的连接,accept返回的是这个客户端的fd,可能是5文件描述符这种。在服务端中,socket分为listen socket (连接请求三次握手之后,往我这里扔,我去通过accept,得到连接的socket),还有一个连接的socket(连接之后原创 2020-10-19 22:45:28 · 144 阅读 · 0 评论 -
socket编程和网络io模型BIO
socket其实就是一个四元组,包含clientIp clientPort serverIp serverPort 他也是内核级别的,几遍你不调用accept,也会就建立的过程原创 2020-10-18 15:04:02 · 116 阅读 · 0 评论 -
解决Windows本地端口占用问题
1.netstat -ano|findstr 8080后面这个47968为端口pid,下面输入47968杀死即可2.taskkill /f /t /im 47968原创 2020-10-09 09:55:52 · 195 阅读 · 0 评论 -
Thread.Sleep(0) 的妙用
Thread.Sleep(0) 表示挂起 0 毫秒,你可能觉得没作用,你要写 Thread.Sleep(1000) 就有感觉了。似乎毫无意义。MSDN 的说明:指定零 (0) 以指示应挂起此线程以使其他等待线程能够执行。Thread.Sleep(0) 并非是真的要线程挂起 0 毫秒,意义在于这次调用 Thread.Sleep(0) 的当前线程确实的被冻结了一下,让其他线程有机会优先执行。Thread.Sleep(0) 是你的线程暂时放弃 cpu,也就是释放一些未用的时间片给其他线程或进程使用,就相当于一转载 2020-09-28 11:20:35 · 686 阅读 · 0 评论 -
操作系统中的pagecache,jvm中文件的堆内存分配,堆外和mmap直接分配
Page cache由内存中的物理page组成,其内容对应磁盘上的block。page cache的大小是动态变化的,可以扩大,也可以在内存不足时缩小。cache缓存的存储设备被称为后备存储(backing store),一个page通常包含多个block,这些block不一定是连续的。pagecache可以大大加快文件的读写速度,一次读取或者写入4k的数据,节省了连接的各种开销。但是pagecache一般是写在内存中的,一旦断电或者是故障,数据会丢失。没办法保障数据一定是安全的,如果为了保障安全,不实原创 2020-09-24 18:37:21 · 1497 阅读 · 1 评论 -
计算机硬件的与操作系统的基础知识
汇编语言的执行过程汇编本质上就是机器语言的助记符,为了方便人理解,可以直接转化为二进制01计算机通电的时候,CPU读取内存中的程序(由电信号输入),时钟发生器不断震荡通断电,通断电一次就是一个周期,推动着CPU内部一步一步的执行,CPU没动作 的时候,时钟发生器可能会空转。当CPU计算完成的时候,直接用电信号写完,写给显卡输出。CPU的基本组成PC -> Program Counter 程序计数器 (记录当前指令地址)Registers -> 暂时存储CPU计算需要用到的数据ALU原创 2020-09-21 20:52:00 · 521 阅读 · 0 评论 -
mybatis中大于,小于,大于等于,小于等于,转义写法
& & < < > > " " //双引号 ' ' //单引号a<=b a <=b 或者 a <![CDATA[<= ]]>ba>=b a >=b 或者 a <![CDATA[>= ]]>ba!=b.原创 2020-09-18 13:35:30 · 1171 阅读 · 0 评论 -
网络协议
应用层将会话、应用合并。这层主要处于用户态,开辟一个端口,然后确定可以连接到这个服务器。传输控制层即平时遇到的TCP,这层主要有三次握手和四次分手。TCP是可靠的网络协议。三次握手—数据传输—四次分手这是一个最小的粒度,不可分割的。三次握手客户端向服务端发送消息,服务端接受到消息回复,客户端再次向服务端发送一条确认消息。平时一般服务端回复确认即可建立连接,为何需要三次。客户端第一次发送消息的时候,服务端收到,并且回复。这时候站在服务端的角度,其实只是收到一次客户端发过来的信息,回复了确认,却.原创 2020-09-16 23:40:37 · 143 阅读 · 0 评论 -
Spring中的ASM
Spring中的ASM使用主要就是使用visitor模式,直接先读取原来的文件,相当于reader,然后通过adapter,自己定制一套自己的写法,最后再写入到一个新的文件中,即相当于改变了原有代码,增加了切面,这就是动态代理,cglib和jdk的动态代理,最底层使用的都是ASM1.ASM是什么?ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class原创 2020-09-12 15:47:00 · 4479 阅读 · 0 评论 -
MySQL索引里的具体内容——InnoDB中一棵B+树能存多少行数据
一、InnoDB 一棵 B+ 树可以存放多少行数据?InnoDB 一棵 B+ 树可以存放多少行数据?这个问题的简单回答是:约 2 千万。为什么是这么多呢?因为这是可以算出来的,要搞清楚这个问题,我们先从 InnoDB 索引数据结构、数据组织方式说起。我们都知道计算机在存储数据的时候,有最小存储单元,这就好比我们今天进行现金的流通最小单位是一毛。在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是 512 字节,而文件系统(例如XFS/EXT4)他的最小单元是块,一个块的大小是 4k,而对于我们转载 2020-09-02 14:34:53 · 280 阅读 · 0 评论 -
计算机中的缓冲(Buffer)、缓存(Cache)、复用(Pool)、分治(Sharding)、亲密(粘性sticky)、权衡(balance)
缓冲(Buffer)从应用程序访问内核,动用io的时候,可以一个一个字节的调用,也可以积攒一部分的数据,一次性的调用内核。此时buffer的作用,主要是上下游处理速度不匹配。消息队列也可以算做是buffer,批处理也行。比如你有数据要写到磁盘,这时候数据到磁盘落地,一次写一个字节数据,和一次写100个数据。效率差的很大。缓存(Cache)主要就是pagecache,也缓存,平时经常使用的时候,就会直接拿出来,用的比较少,就会被淘汰。为了加快磁盘的读写,主要就是为了提速。复用(Pool)各种池化的东原创 2020-08-27 16:51:13 · 817 阅读 · 0 评论