- 博客(17)
- 资源 (11)
- 收藏
- 关注
转载 9种 分布式ID生成方式
一、为什么要用分布式ID?在说分布式ID的具体实现之前,我们来简单分析一下为什么用分布式ID?分布式ID应该满足哪些特征?1、什么是分布式ID?拿MySQL数据库举个栗子:在我们业务数据量不大的时候,单库单表完全可以支撑现有业务,数据再大一点搞个MySQL主从同步读写分离也能对付。但随着数据日渐增长,主从同步也扛不住了,就需要对数据库进行分库分表,但分库分表后需要有一个唯一ID来标识一条数据,数据库的自增ID显然不能满足需求;特别一点的如订单、优惠券也都需要有唯一ID做标识。此时一个能
2020-06-20 00:26:14 451
转载 求二叉树两个节点的最近公共父节点的两种方法(java实现)
import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class TTTTTTTTT { public static void main(String[] args) { TreeNode treeNode1 = new TreeNode(1); TreeNode treeNode2 = new TreeN.
2020-06-19 22:17:11 620
原创 java实现LRU
import org.apache.bcel.generic.LREM;import java.util.HashMap;import java.util.Map;/** * @author yuchen * @version 1.0 * @date 2020-05-11 17:18 */public class LruCache { class Node{ int key; int val; Node prev; .
2020-06-18 11:19:55 264
转载 RocketMQ 多副本前置篇:初探raft协议
本文根据raft官方给出的raft动画进行学习,其动画展示地址:http://thesecretlivesofdata.com/raft/
2020-06-17 16:44:53 193
原创 删除链表重复元素,只保留一个
/** * @author yuchen * @version 1.0 * @date 2020-05-26 16:21 * * 删除链表重复元素,只保留一个 * 比如 * 1, 2, 2, 2, 2, 4, 4, 5, 6, 6, 9, 8, 8 * * 我们的方法处理以后的结果是 * * 1 -> 2 -> 4 -> 5 -> 6 -> 9 -> 8 -> */public class DeleteNodeSame { pu.
2020-06-17 11:33:11 565
转载 MySQL的几个重要的缓冲区配置项
线程栈信息使用内存(thread_stack)主要用来存放每一个线程自身的标识信息,如线程id,线程运行时基本信息等等,我们可以通过 thread_stack 参数来设置为每一个线程栈分配多大的内存。排序使用内存(sort_buffer_size)MySQL 用此内存区域进行排序操作(filesort),完成客户端的排序请求。当我们设置的排序区缓存大小无法满足排序实际所需内存的时候,MySQL 会将数据写入磁盘文件来完成排序。由于磁盘和内存的读写性能完全不在一个数量级,所以sort_bu.
2020-06-16 16:53:57 242
转载 MySQL-ORDER BY索引优化
前言:在使用order by时,经常出现Using filesort,因此对于此类sql语句需尽力优化,使其尽量使用Using index。#1.创建test表。drop table if exists test;create table test(id int primary key auto_increment,c1 varchar(10),c2 varchar(10),c3 varchar(10),c4 varchar(10),c5 varchar(10)) ENGINE=I
2020-06-16 15:02:13 323
转载 Java线程内存模型和线程
引子在物理机中,并发执行多个任务,充分利用计算机处理器的性能,看起来顺理成章,但实际上并不像看起来那么简单。其中一个重要的原因就是绝大多数的任务不能只靠处理器“计算”就能完成,处理器至少要与内存交互,比如读取、存储数据,这个I/O操作是很难消除的。而储存设备和处理器的运算速度差了好几个量级,所以引入了高速缓存(cache)来作为缓冲。即将运算要使用的数据复制到缓存,让运算快速进行,运算结束后从缓存同步回主存,这样处理器就无须等待缓慢的内存读写了。虽然解决了处理器和内存的速度矛盾,但是引入了新的问题:
2020-06-15 15:01:06 146
转载 Delete&Insert引发的Mysql死锁
近日遇到一个比较奇怪的deadlock错误, 错误详情:Deadlock found when trying to get lock; try restarting transaction; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException...跟踪代码后最终定位到一段业务逻辑:delete from A where no = $no;insert into A(no, value) values(
2020-06-14 18:36:34 825
原创 求无序数组中比每个元素小的元素数量
public class NumberBig { public static void main(String[] args) { int a[] = {1,3,2,8,5,4,6,7,9}; int b[] = new int[10]; Arrays.fill(b,0); for(int i=0;i<a.length;i++){ b[a[i]] = a[i]; } .
2020-06-12 10:09:42 592
转载 java向多线程中传递参数的三种方法详细介绍
在传统的同步开发模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果。但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别(java中如何给多线程中子线程传递参数)。由于线程的运行和结束是不可预料的,因此,在传递和返回数据时就无法象函数一样通过函数参数和return语句来返回数据。本文就以上原因介绍了几种用于向线程传递数据的方法,在下一篇文章中将介绍从线程中返回数据的方法。欲先取之,必先予之。一般在使用线程时都需要有一些初始化数据,然后
2020-06-04 10:30:41 3602
转载 NIO单一长连接——dubbo通信模型实现
前言前一段时间看了下dubbo,原想将dubbo详细总结下来,从使用简介、SPI扩展机制、Spring的schema扩展、启动过程、动态注册与发现、分层设计、通信设计、线程模型等方面来总结,但是越看越发现架子太大,涉及的点太广,反而RPC的思想其实已经印象深刻了,再来总结这么多的点似乎不太值得,因为不懂的东西才是最有价值的,所以有了本文,将个人认为dubbo中比较有特色的通信模型总结于此,本文是一个demo,当然不乏一些脑补的东西在里面,如您偶然阅读此文发现问题,还请不吝指出问题所在。BIO通信缺陷
2020-06-03 15:34:16 813
转载 Dubbo协议的概念
协议的概念协议是两个网络实体进行通信的基础,数据在网络上从一个实体传输到另一个实体,以字节流的形式传递到对端。在这个字节流的世界里,如果没有协议,就无法将这个一维的字节流重塑成为二维或者多维的数据结构以及领域对象。协议是什么协议是双方确定的交流语义,比如:我们设计一个字符串传输的协议,它允许客户端发送一个字符串,服务端接收到对应的字符串。这个协议很简单,首先发送一个4字节的消息总长度,然后再发送1字节的字符集charset长度,接下来就是消息的payload,字符集名称和字符串正文。发送一个
2020-06-03 15:21:57 301
转载 Socket-单工、半双工和全双工
单工,就是两者通信单向进行,只能一个主动发信号一个被动去接受,不能角色互换。举例:行人只能接受红绿灯的信号但是不能向红绿灯发信号,红绿灯只能发出信号不能接收信号。半双工,两个事物都可以发信号,但是不能同时进行。举例:类似于踢足球,只能一个传给另一个人,两个人不能同时传球,球只有一个,信道只有一个。全双工,两个事物可以同时发送和接受信息。举例:两个人互相打电话,你可以说也可以听电话。在Java里套接字socket就是全双工的。单工、半双工和全双工根据通信双方的分工和信号传输方向可将.
2020-06-03 14:31:20 4112
转载 java队列的数组实现
public class 数组Queue { public static void main(String[] args) { MyQueue queue = new MyQueue(); queue.init(5); queue.endQueue(1); queue.endQueue(2); queue.endQueue(3); queue.endQueue(4); queue.e.
2020-06-03 00:53:57 430
转载 按层打印二叉树
按层打印二叉树,即同层节点从左至右打印每个节点。例如下图,打印结果是:1-2-3-4-5-6-7import java.util.ArrayList;import java.util.LinkedList;import java.util.List;import java.util.Queue;public class TreePrint { public static void main(String[] args) { TreeNode treeNode.
2020-06-01 00:47:00 220
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人