数组A中给定可以使用的1~9的数,返回由A数组中的元素组成的小于n的最大数。例如A={1, 2, 4, 9},x=2533,返回2499 题目重述数组A中给定可以使用的1~9的数,返回由A数组中的元素组成的小于n的最大数。例如A={1, 2, 4, 9},x=2533,返回2499回溯法public class Main1 { public static int num = 0; public static int maxLarger = -1; public static int getLargerButLessThanK(int[] nums, int k) { backTrace(nu
ClickHouse 知识点整理 前言ClickHouse是一个OLAP引擎,适合做分析ClickHouse适合查询多,写少的场景是一个列式数据库,这点上与HBase是一样的ClickHouse性能很棒,但高效的背后是对CPU和内存的具有较大的消耗OLAP和OLTP的区别OLAP:在线分析处理查询OLTP:联机事务处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一。ClickHouse在线演示ClickHouse提供了在线演示,但DD
RocketMQ源码简单梳理 前言这里捡我认为比较重要的说。一、NameServer启动流程NamerServer主要维护Broker的更新和给生产者消费者提供Broker的地址、告诉生产者消费者需不需要更新broker列表缓存。NamerServer启动分为两步,创建NameSrvController和启动NameSrvController1.创建NameSrvControllerfinal NamesrvController controller = new NamesrvController(namesrvConfig
浅析数据库主从延迟的相关方案 前言在数据库高可用设计中,我们可能会做主从同步+读写分离,但是在这过程中可能存在主从库数据不一致的情况。解决方案一、强制走主库方案把查询请求分为两类:数据更新后,再次查询到的数据不允许延迟的请求、允许延迟的请求让这种不允许延迟的请求强制走主库二、Sleep方案更新主库数据之后,在查询请求的时候,sleep一秒三、判断主备无延迟数据库中有seconds_behind_master参数,可以通过show slave status命令查看,当为0的时候,代表主备没有延迟。但该参数的单位是秒
浅析 联邦学习是什么? 前言联邦学习可以看作是加密的分布式机器学习。联邦学习可以解决什么问题?训练过程在用户设备上完成,从而无需把隐私数据上传到相关公司的服务器来训练用户设备必须有资格才能参与这个训练过程,比如用户必须是在充电中、有Wifi的情况下训练完成之后,用户设备只需要把训练好的模型结果上传到服务器就行训练成果在传输到服务器的过程中不会有安全问题吗?是的,联邦学习可对训练结果进行安全聚合,即对每部分训练成果都加入零和掩码,以保证在传输过程中没有安全问题。而当服务器收到全部都训练结果时,这些零和掩码就会自动抵
Mysql 浅析行锁如何减少冲突提高性能 前言什么是行锁?简单来讲,就是当一个事务A正在修改表中的一行数据时,会加锁,另外一个事务B在此期间想要修改,是不可行的,只能等。什么时候行锁会释放呢?在事务A执行commit操作之后,涉及到的行锁才会被释放?怎么减少锁冲突提高性能?例如有一单银行交易,初始是这么设计的:从账户A扣100块钱从账户B加100块钱记录这笔交易日志在这种情况下,进行第三条记录交易日志操作的时候,前两条占用的行锁仍然是持有的,这就加大了锁冲突的概率。显而易见,优化的方式可以调整操作的顺序,比如顺序改成3、1
数据结构—数组构造完全二叉树 构造完全二叉树 public static TreeNode createTree(int index,int[] arr){ if(index>=arr.length){ return null; } TreeNode root = new TreeNode(); root.val = arr[index]; root.left = createTree(index*2+1,arr);
浅析 Java 泛型 前言在JDK1.5之后出现了泛型这个概念,在介绍泛型之前,不妨想想为什么会有泛型这个东西?例如在泛型出现之前,使用List是这样的List list = new ArrayList();我可以往这个list中放任何类型的东西,多方便!你是方便了,但是开发者就难受了,对每个元素都要记得转换类型,不然哪里知道这里面放的什么鬼东西,如果限定某个List只能放某种类型不就好了嘛所以Java参考了C++模板类的概念,定义一个模板类public class ArrayList<T> imple
浅析Java 序列化与反序列化 什么是序列化?两个服务之间要传输一个数据对象,就需要将对象转换成二进制流,通过网络传输到对方服务,再转换成对象,供服务方法调用。这个编码和解码的过程称之为序列化和反序列化。序列化就是把 Java 对象变成二进制形式,本质上就是一个byte[]数组。将对象序列化之后,就可以写入磁盘进行保存或者通过网络中输出给远程服务了。反之,反序列化可以从网络或者磁盘中读取的字节数组,反序列化成对象,在程序中使用。序列化类型Java 序列化:默认通过 Serializable 接口实现序列化,只要实现了该接口,该
Leetcode 498. 对角线遍历 题目重述给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。示例 1:输入:mat = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,4,7,5,3,6,8,9]示例 2:输入:mat = [[1,2],[3,4]]输出:[1,2,3,4]提示:m == mat.lengthn == mat[i].length1 <= m, n <= 1041 <= m * n <= 104-10