自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 【大厂高频面试题】100层楼掉落玻璃球问题

状态转移方程为: [ dp[i][j] = 1 + \min_{1 \leq k \leq j} (\max(dp[i-1][k-1], dp[i][j-k])) ] 其中,k 是当前尝试的楼层,dp[i-1][k-1] 表示玻璃球摔碎后剩余的尝试次数,dp[i][j-k] 表示玻璃球未摔碎时剩余的尝试次数。我们可以从第 x 层开始尝试,如果玻璃球没有摔碎,就跳过接下来的 x-1 层,再从第 x+(x-1) 层尝试,以此类推。为了计算最优解,我们需要找到一个合适的 x 值,使得最坏情况下的尝试次数最少。

2024-10-16 15:50:54 484

原创 平方根代码实现-Java

在数学和计算机科学领域,计算一个数的平方根是一个常见的需求。虽然Java标准库提供了Math.sqrt()方法来直接计算平方根,但是理解其背后的算法对于程序员来说仍然非常重要。本文将介绍一种使用迭代法来计算平方根的方法,并通过一个简单的Java程序实现。本文实现的方法可适用于小数,对于整数的平方根运算,可以通过二分法进行实现。通过上述代码,我们不仅能够计算任意正数的平方根,还能深入理解牛顿迭代法这一经典数值计算方法。特殊情况处理:如果输入为0或1,则直接返回该值,因为它们的平方根就是自身。

2024-10-16 15:15:21 847

原创 【多线程】多线程循环打印

【代码】多线程循环打印

2024-09-17 23:24:17 236

原创 行业实践之支付

支付本质是货币的转移,转移发生在货币和商品的交换过程中,产生了价值交换。在这个价值交换的交易过程中,用户获得商品所有权,商户获得货币,所以说转移是收付款人之间的转移。传统支付那么现代支付流程中,以非现金模式,如银行卡、微信支付宝等支付工具完成交易的流程,如下图所示:可以看到支付过程中伴随着两条流动过程,一般称之为信息流和资金流。:这里的信息可以理解为支付指令所承载的信息,而流动就是支付指令在不同支付参与者或者支付系统之间的传递的过程。

2024-08-29 22:18:11 967

原创 消息队列幂等

RocketMQ 支持 At Least Once 语义,即最少消费一次,因此 仅保证消费不丢,无法保证消费不重。

2024-08-27 21:04:51 887

原创 Mysql数据实时同步实践

MySQL由于自身简单、高效、可靠的特点,成为小米内部使用最广泛的数据库,但是当数据量达到千万/亿级别的时候,MySQL的相关操作会变的非常迟缓;如果这时还有实时BI展示的需求,对于mysql来说是一种灾难。为了解决sql查询慢,查不了的业务痛点,我们探索出一套完整的实时同步,即席查询的解决方案,本文主要从实时同步的角度介绍相关工作。

2024-07-07 21:44:19 1057 1

原创 如何保证消息队列的顺序性?

在有序事件处理、撮合交易、数据实时增量同步等场景下,异构系统间需要维持强一致的状态同步,上游的事件变更需要按照顺序传递到下游进行处理。在这类场景下使用 Apache RocketMQ 的顺序消息可以有效保证数据传输的顺序性。典型场景一:撮合交易以证券、股票交易撮合场景为例,对于出价相同的交易单,坚持按照先出价先交易的原则,下游处理订单的系统需要严格按照出价顺序来处理订单。典型场景二:数据实时增量同步普通消息顺序消息。

2024-07-07 21:00:12 1245

原创 阿里面试题:Java不是实体也视为一个对象是否与面向对象原则相违背呢?

然而,在实际的应用开发中,特别是在使用Spring Boot等框架进行企业级开发时,我们经常会遇到一些主要由方法组成、看起来似乎没有直接模拟现实世界实体的“对象”。例如,服务层(Service)对象通常包含的是与业务逻辑相关的方法,而这些方法并不直接对应于现实世界中的实体。在面向对象设计中,对象不仅仅是用来模拟具体的“实体”,更重要的是它们作为封装数据和行为的单元,有助于组织代码和复用逻辑。例如,服务层对象虽然不直接对应现实世界的实体,但它通过封装特定的业务逻辑,提供了一种与实体进行交互的抽象方式。

2024-05-17 17:39:41 169

原创 50 亿数据如何去重&排序?海量数据去重、Top-k、BitMap问题整理

1.Hash算法处理海量数据部分【题目1】给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?【题目2】海量日志数据,提取出某日访问百度次数最多的那个IP。【题目3】有10个文件,每个文件1G,每个文件的每一行存放的都是用户的query,每个文件的query都可能重复。要求你按照query的频度排序。【题目4】有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词。

2024-05-14 11:15:57 1858

原创 Spring AOP实现原理详解(JDK和CGLib的动态代理)

在Spring中的AOP是依靠动态代理来实现切面编程的,而这两者又是有区别的。

2024-05-13 22:03:45 820

原创 什么是布隆过滤器?

布隆过滤器是一种数据结构,用于快速判断一个元素是否存在于一个集合中。它以牺牲一定的准确性为代价,换取了存储空间的极大节省和查询速度的显著提升。具体来说,布隆过滤器包含和。位数组的初始值全部置为 0。在插入一个元素时,将该元素经过多个哈希函数映射到位数组上的多个位置,并将这些位置的值置为 1。因为每个元素存储都是以位来存储,而不是字节,所以元素的占用空间非常小。

2024-05-07 18:59:14 1113

原创 Redis为什么这么快?

Redis为什么这么快?内存存储、数据结构、非阻塞I/O、线程模型。

2024-05-07 12:07:26 895 1

原创 为什么B+树是数据库索引的首选?一个全面的解读

B 树(B- 树)指的是 Balance Tree,又名多路平衡(即不止两个子树)查找树,并且所有叶子节点位于同一层。B+ 树基于B 树和叶子节点顺序访问指针进行实现,具有 B 树的平衡性,并且通过顺序访问指针来提高区间查询的性能。通常用于数据库和操作系统的文件系统中。B+ 树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。B+ 树元素自底向上插入,这与二叉树恰好相反。我们都知道,计算机的存储管理是分层的,各层次之间的速度差距比较大,尤其是辅存(磁盘)和主存之间的速度。

2024-04-27 15:04:23 1692 1

原创 volatile 关键字详解

在Java语言中,volatile 是一个修饰符,它可以用来修饰变量。使用 volatile 关键字的主要目的是使变量在多个线程中可见,这意味着一个线程写入的新值能够被其他线程立即得知。理解和适当地使用 volatile 是编写线程安全的并发程序不可或缺的一步。它为变量访问提供一种轻量级的同步机制,保证变量的可见性和有序性。然而,它并不是万能的,了解其局限性并结合其他同步技术使用是关键。希望本文能够帮助你更好地理解 volatile,从而写出更稳健的并发程序。

2024-04-20 15:38:11 631

原创 AE+ArcGIS二次开发课程设计(基于C#)

AE+ArcGIS二次开发课程设计(基于C#)1.工作内容2.程序功能介绍3.功能模块介绍3.1 实现【创建TIN】说明3.1.1 功能说明3.1.2 代码实现(包含了所有主要的代码,库引用自行导入)3.2 实现【TIN坡度坡向分析】说明3.2.1 功能说明3.2.2 代码实现3.3 实现【自然邻域插值+分级渲染分析】说明3.3.1 功能说明3.3.2 代码实现1.工作内容本系统开发需要进行系统环境的配置,在进行工作前安装好VS2010+ArcGIS Engine10.2,能够进行二次开发的环境。

2023-04-12 10:12:21 7861 18

原创 直线段的矢栅转换算法(DDA算法、中心画线算法、Bresenham算法)

直线段的矢栅转换算法(DDA算法、中心画线算法、Bresenham算法)写自定义目录标题)以下为drawLine.cpp,分别对相应的原理进行了注释,只需调用相应的函数即可实现。#include "drawLine.h"#include "setPixel.h"#include "cmath"void DDALine(int x0, int y0, int x1, int y1) { //DDA算法实现画直线 float x=x0,y=y0; float dx=x1-x0; f

2020-10-20 16:46:36 707

AE+ArcGIS二次开发课程设计(基于C#)

本系统开发需要进行系统环境的配置,在进行工作前安装好**VS2010+ArcGIS Engine10.2**,能够进行二次开发的环境。其次对给定数据进行研究分析,并查阅相关的资料,决定出自己想要实现的功能,在此基础上进行程序设计,构建整体实现思路,然后进行编程实现,利用**C#**语言和相关的引用完成功能,再进行相应的调试测试,对代码进行优化,反复测试增加程序的稳健性,然后完成功能与功能的使用说明。 本系统主要实现创建TIN、TIN坡向坡度分析、自然邻域插值分析三个功能模块,均使用C#语言进行实现,未连接其他数据库。 创建TIN:可以实现通过栅格或者矢量图层创建出相应的TIN模型,能够实现其他格式数据创建三角网的功能。 TIN坡度坡向分析:主要通过对TIN数据处理得到坡度坡向的栅格文件,并在MapControl中进行显示并保存到相应位置。能够实现对三角网数据的坡度坡向分析。 自然邻域插值分析:对点的Z值字段进行自然邻域插值分析,并对输出的栅格进行分级渲染显示。

2023-06-07

GIS二次开发实验数据

里面包含一些可以测试的数据

2023-06-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除