java技术圈 为您找到相关结果 13

算法之时间复杂度简析

算法之时间复杂度简析 前言 最近准备对算法进行一些系统的总结和学习,不积跬步无以至千里,不积小流无以成江海.此文主要对时间复杂度进行简单梳理和个人总结,本人才疏学浅,有所疏漏在所难免,如有不当和错误之处,欢迎指正 时间复杂度的定义(Time Complexity) 时间复杂度,用简单地话描述为:为了大概估算程序运算时间的一种概量。那用什么来估算的呢?用简单的程序执行代码的次数,如int a = 3执行一次,一个n此的for循环表示执行n次等等。广义的T(n)表示在一个完全理想状态的计算机中程序所执行的实际指令次数,下面会提到的O(n)大O(Big Oh),Ω(omega),Θ(Theta) 都是对T(n)的一个大略估算抽象而来,这里先说明一下个人理解的精确度大小为:T(n)>Θ(Theta)...阅读全文

博文 2019-04-04 09:53:07 www.allocmem.com

经典问题-

前言 最近回溯算法,对以往算法和新学习算法进行一个系统的整理和学习,本文的最大子序列和的问题在很多算法书籍和技术文章中对此都有详述,个人简单整理仅为了再次消化和日后查阅,不喜误喷。个人理解,如有错误,欢迎指正。 注:本文中提及的时间复杂度均使用大O法。 问题描述 求-2,4,-1,5,6的最大子序列和 注:如果所有值都为负,则最大子序列和为0 方案一 思路:使用穷举的方式,使用for循环列出所有的子序列进行求和,每次进行对比并把大的数赋值给最大子序列和变量,总共使用三个for循环 注:i循环为从-2到6(头到尾),j循环为i到此序列size,k为计算此时i到此时j的子序列和 源码如下: //穷举遍历法 三个for循环时间复杂度为n*n*n 十分低效 public static int max...阅读全文

博文 2019-04-04 09:53:16 最大子序列和的个人简单整理

折半查找算法

运行时间中的对数 前一篇文章中分治递归的时间复杂度为O(nlogn);对数最常出现的规律可概括为如下一般规律: 如果一个算法用常数时间O(1)将问题的大小削减为其的一部分(通常是二分之一),那么该算法就是O(logn).另一方面,如果一个算法用常数时间O(1)将问题的大小消减一个常数数量(如将问题减少1等等),那么这种sauna就是O(n)的。 折半查找简单引论问题 求x在数组T[]中的坐标,如果不存在x,则返回-1 方案一 思路:直接穷举,进行遍历,时间复杂度O(n),线性增长 代码: public static > int binarySearch1(T[] a, T x){ for(int i = 0;i < a.leng...阅读全文

博文 2019-04-04 09:53:31 www.allocmem.com

常用排序算法原理简析

前言 本文只作一些概念性说明,后续会整理每种排序算法的具体实现。个人知识和能力有限,搜集整理和理解可能不到位,如有错误,欢迎指正 插入排序原理 跑n-1趟,对于p=1到N-1趟,插入排序保证从位置0到位置p(数组也是从0开始计算)的数据是有序的,从后面每次拿一个数组往前面插,找到有序的位置(如此时51为被插入数,则在34到64之间)。需要使用两次for循环,时间复杂度为O(n^2) 希尔排序原理(缩减增量排序) 简单粗暴 计算效率取决于选择的缩减增量序列,只要序列最后最小的为1,任何增量序列都是可行的。最坏时间复杂度为n^2,而使用2^k-1的Hibbard增量序列的最坏运行事件为N^1.5 堆(优先队列)排序原理 堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节...阅读全文

博文 2019-04-04 09:53:38 www.allocmem.com

项目管理最佳实践,企业如何进行有效的项目管理

前言:企业在划分项目时,可按照项目的复杂程度、管理范围等将项目分为三个级别,分别是企业级、部门级和小组级(与目标划分原则相同),然后将每一级的目标与项目对应起来。我们知道,企业制定的目标(OKR),一个目标(O)会有多个关键结果(KR),关键结果是衡量目标完成与否的标准,因此,每个项目的目标对应的应该是目标中的关键结果,当然,目标及关键结果的复杂程度不同,所以一个关键结果可能会对应多个项目。![image.png](https://img-blog.csdnimg.cn/20200107164453295.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNz...阅读全文

不会用管理工具,怎么做项目经理?

最近被领导指派负责一个新的项目,我想把项目做成功,给老板留下深刻的印象,同时也给自己的职业生涯添上浓墨重彩的一笔。但是,项目管理流程很复杂,项目本身也不好做。在收集了与该项目有关的所有信息,并将新的团队整合在一起之后,身边的朋友建议我找一些项目管理工具,来帮助我更好地管理手中的项目。虽然朋友的建议很有道理,但是一旦真正开始寻找,很快我就意识到选择合适的项目管理软件可能与管理项目一样困难。市面上的项目管理软件令人眼花缭乱,哪种工具最容易使用?哪些功能的是项目管理必备的?​下面分享一点我的心得,希望对你有所帮助!选择项目管理软件之前要清楚的问题一、你的项目性质是什么并非所有项目性质都相同。例如,互联网公司的研发项目管理与传统生产制造业的项目管理不同,因为他们需要整合管理的资源、团队性质以及具体实...阅读全文

企业应该怎样选择项目管理软件?

项目管理通常涉及人、财、物的调配和管理。项目管理流程十分复杂,仅靠人工管理往往难以管理好。 因此,选择一个有效的工具来管理整个项目很有必要。 目前,市面上的项目管理软件繁多冗杂,良莠不齐,企业需根据自身情况选择项目管理工具,以提高效率,赢得市场竞争。 如果项目的复杂程度永远不超出项目经理或项目团队的经验水平和记忆容量,只靠他们的人工管理也能在项目发生事情时识别因果关系并追溯问题的源头。 但问题是,几乎所有与业务相关的项目其复杂程度,都能轻易超出项目经理或项目团队的经验水平和记忆容量限度,只是团队不自知而已。 所以才会有不少团队用了错误的准则来选择管理工具,导致工具不能在项目信息上及问题溯源上弥补团队的不足。 因此,在选择项目管理软件时,企业应从多方面考虑,确保选择到合适的项目管理工具。 一、...阅读全文

来插入排序、希尔排序是这样的

Hello,小伙伴们,大家好,我是才辰。今天和大家一起学习的是排序算法中的插入排序和希尔排序。为什么把这两个排序放在一起呢?这是因为这两种排序有一定的关联,希尔排序实际上是对插入排序的一种变形。还是老样子,我先总体上介绍一下算法的过程,接着以一个例子分步讲解,最后给出了详细的代码以及相关分析。插入排序插入排序,就和我们平时玩牌是一样的因为你想,我们在打牌的时候,是不是先把手里的牌由小到大排好,然后每摸到一张牌,就依照大小把它放在排在正确的位置。同样,插入排序也是如此。步骤:首先选取数组第二个元素,若小于数组第一个元素,则插入到第一个位置,否则保持不动;接着选取第3个元素,把它和左边第一个元素比较,如果其小于左边第一个元素,则继续与左边第二个元素比较,知道遇到不比它大的元素,然后插入到这个元素...阅读全文

博文 2021-09-02 03:36:45 知乎

这一次,彻底搞懂React的diff算法_51CTO博客_vue diff算法

在前端面试中,只要涉及到React框架,diff算法便是我们绕不开的话题,这次让我们来系统性的梳理diff算法,不再被这个知识点所困扰。 什么是diff算法? 在了解diff算法之前,我们要直到diff算法并非React独家首创,但是React针对diff算法做了自己的优化,使得diff算法可以帮助我们计算出Virtual Dom中真正变化的部分,并只针对该部分进行实际的DOM操作,而非渲染整个页面,从而保证了每次操作后页面的高效渲染。 传统diff算法 要想了解React的diff算法,我们首先要知道传统的diff算法是如何设计并实现的。 传统diff算法的时间复杂度 传统diff算法的时间复杂度是O(N^3),其中N是树中节点的总数,这样的时间复杂度意味着如果要展示1000个节点,就要执...阅读全文

博文 2023-09-13 14:29:38 blog.51cto.com

[第2季]OpenGL-自主高性能三维GIS平台架构与实现

![1.png](http://static.itsharecircle.com/240102/934a11c2a027a4577fe70e9d9ae40cf0.png) OpenGL没有提供着色器编译器,而是由显卡驱动来完成着色器的编译工作,也就是说,只要显卡驱动支持对GLSL的编译它就能运行,所以能够跨平台。而DirectX是由微软控制着色器的编译,就算用了不同的硬件,同一个着色器的编译也是一样,所以支持的平台只有微软自己的产品。 GPU全称是GraphicProcessing Unit--图形处理器,其最大的作用就是进行各种绘制计算机图形所需的运算,包括顶点设置、光影、像素操作等。GPU实际上是一组图形函数的集合,而这些函数有硬件实现,只要用于3D游戏中物体移动时的坐标转换及光源处理。...阅读全文

效率起飞!天翼云并行文件服务HPFS高效应对AI时代大模型训练存储挑战!

国内外AI大模型层出不穷,训练数据复杂程度更是呈指数级增加。如今,在万亿级参数时代,单个资源池已无法满足大模型训练场景中动辄PB级的数据存储量,对于企业来说,启用多个资源池构成的分布式存储势在必行。​为了应对AI大模型训练对数据存储的需求,天翼云推出并行文件服务HPFS(CT-HPFS,High Performance File Storage),旨在为AI时代提供高性能存储底座,助力企业构建基于云资源的、更高效的大型模型训练平台,实现大模型的连续训练。天翼云HPFS可通过分布式存储实现数据的并发读取,同时提供最高百万IOPS和百GBPS的吞吐能力,显著提升了数据的读取速度,从而大大提升GPU卡的利用率,为提升HPC和AI等场景的训练效率赋能。天翼云HPFS为AI场景的数据训练提供高并发、低...阅读全文

博文 2024-03-08 14:48:55 Tianyiyun

深入浅出分析LSM树(日志结构合并树)

零、前言最近在调研NoSQL数据库,发现RocksDB、LevelDB、HBase以及Prometheus等,其底层的存储引擎都是基于LSM树,于是决定花时间彻底吃透LSM树这一数据结构。不幸的是,在查阅资料学习的过程中,发现网上各种文章汗牛充栋、抄来抄去,不是文不对题就是不知所云。一气之下决定自己写一篇出来消消气,便有了这篇文章。。。PS:学了这么多数据结构,LSMTree应该是最年轻的一个,它在1996年被设计出来(属老鼠的),年纪比我还小~相比于B/B+树或者倒排索引,LSMTree采用了“疯狂到不顾一切”的干啥都磁盘顺序写的方案,赋予了它无与伦比的写吞吐量。一、LSM树数据结构定义查阅了一些资料,LSM树并没有一种固定死的实现方式,更多的是一种将:“磁盘顺序写” + “多个树(状数据...阅读全文

博文 2023-05-11 09:07:03 知乎

双栈网络使用什么技术实现总部网络能访问分部网络?

本文分享自天翼云开发者社区《双栈网络使用什么技术实现总部网络能访问分部网络?》,作者:SD万为了实现总部和分部之间的IPv4和IPv6互访,可以使用以下隧道技术:1、IPv4隧道技术:可以使用GRE(Generic Routing Encapsulation)隧道技术,在IPv4网络中隧道传输IPv6数据包。在总部和分部之间分别配置一个GRE隧道接口,并将IPv6数据包封装在IPv4数据包中进行传输。配置完成后,总部的IPv4地址就可以访问分部的IPv4地址。2、IPv6隧道技术:可以使用6to4、Teredo等IPv6隧道技术,在IPv4网络中隧道传输IPv6数据包。在总部和分部之间分别配置一个6to4或Teredo隧道接口,并将IPv4数据包封装在IPv6数据包中进行传输。配置完成后,总...阅读全文

博文 2024-04-30 11:11:21 Tianyiyun