`
文章列表
题目描述 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。 请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。 示例 1: nums1 = [1, 3]nums2 = [2] 中位数是 2.0 示例 2: nums1 = [1, 2]
发表文章之后,发现很多图片显示不了,请阅读我的公众号文章,以获得本文最佳体验: 为什么Java String哈希乘数为31?   前面简单介绍了[ 经典的Times 33 哈希算法 ],这篇我们通过分析Java 1.8 String类的哈希算法,继续聊聊对乘数的选择。 String类的hashCode()源码
一个好的散列函数通常倾向于“为不相等的对象产生不相等的散列码”。理想情况下,散列函数应该把集合中不相等的实例均匀地分布到所有可能的散列值上。要想完全达到这种理想的情形是非常困难的。幸运的是,相对接近这种理想情形则并不太困难。 由Daniel J. Bernstein教授多年前在comp.lang.c发表的Times 33算法。 它是有史以来发布的最有效的哈希函数之一。 算法介绍 首先,引用一段关于Times 33的介绍: DJBX33A (Daniel J. Bernstein, Times 33 with Addition)   This is Daniel J. Bern ...
发表文章之后,发现很多图片显示不了,请阅读我的公众号文章,以获得本文最佳体验: 无穷大的数都一样大吗?   通常来说,每当提到无穷大,我们都会认为是无穷无尽,不可数的。但具体是多大,我们确是没有概念的。 那么,对于无穷大的数: 有大小之分吗?
行为参数化就是可以帮你处理频繁变更的需求的一种软件开发模式。 接下来,让我们来看看如何应对不断变化的需求。   1.初试牛刀:筛选绿苹果一种常见的实现方式可能是这样: public static List<Apple> filterGreenApples(List<Apple> inventory) {
今天发一篇曾经的总结,主要涉及几个计算机思想。 1. 计算机组成结构 1.1 计算机基本构成 三大核心部件:中央处理器、存储器、I/O设备 中央处理器(CPU) 算术/逻辑单元(ALU) 寄存器 PC(程序计数器) 存储器(内存) 物理上:由一组动态随机存取存储器(DRAM)芯片组成 逻辑上:是一个线性的字节数组,每个字节都有其唯一索引
在实际应用中,我们经常会遇到各种查找文件的需求,比如: 查找最新的n个文件 查找包含某字符串的文件 查找昨天修改的文件 查找同级目录下,不同文件的最新一个文件(类似于数据库的分组查询场景:按名称分组,查询最新的文件) 等等 有木有?     下面是一些应用场景:     1、查找最近修改的文件 1)最近24小时内修改的文件 [sam@strong shelltest]$ find /opt/shell/tomcat-6.0.37/logs -mtime 0 -type f /opt/shell/tomcat-6.0.37/logs/catalina.out ...
《大型网站技术架构》读书笔记:   网站架构模式 关于什么是模式,这个来自建筑学的词汇是这样定义的:“每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复工作”。模式的关键在于模式的可重复性,问题与场景的可重复性带来解决方案的可重复使用。       分层 分层是企业应用系统中最常见的一种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统。   在大型网站架构中也采用分层结构,将网站软件系统分为应用层、服务层、数据层。 应用 ...
《大型网站技术架构》读书笔记:   1.1大型网站软件系统的特点 与传统企业应用系统相比,大型互联网应用系统有以下特点。 高并发,大流量 高可用 海量数据 用户分布广泛,网络情况复杂 安全环境恶劣 需求快速变更 ...
问题:有n个人,按顺序围成一圈,从第1个开始报数,第m个出列,直至所有人都出列。   1、设计思路 1) 使用集合存放n个值; 循环n次 {   每次获取第m个,并删除第m个 }   1.1)循环n次 通过for循环n次,或者通过while语句遍历集合至空为止   1.2)每次获取第m个,并删除第m个 循环查找,每次循环计数1,当计数值count==m时,获取值并删除相应元素; 进入下一轮查找直到结束。   由于m可能大于n,一次循环不一定满足要求,所以需要用到递归算法。   2、代码实现 import java.util.ArrayList; i ...
工作当中,无论自已处于哪个位置,总喜欢去看看项目的代码,动手写一些代码。因为只有这样,自己心里才有底,才比较踏实。有底,是指了解了代码的实际处理逻辑,并且自己很清楚代码是否存在问题。踏实,是指在有了底之后,能够更好的与客户进行沟通;而且看代码写代码是最实在的东西,对于喜欢写代码的人来说心里是踏实的,实实在在的。   最近负责管理一个项目,大家都比较忙,但我自己更忙... 我的工作内容包括但不限于:项目管理、需求分析、设计、技术指导、代码走查、基础框架搭建与编写少量代码、测试... 看着有点眼花缭乱吧^_^   其中,大部分时间还是花在前几项,花在后几项的时间相对少一些,但无论如何也 ...
最近在做一个项目,遇到了一个奇怪的问题:webservice接口能够正常调用,但却出现了部分参数传递正确,个别参数的值丢失(null)的情况。由于以前未曾遇过,为了这个问题还折腾了几天,那个苦呀。   简单描述一下需求: ...
    这段时间特别忙,公事私事特别多,很累,几乎连看书的时间都没有。趁着这个假期,总算有点时间了。今天,就简单的介绍一下我们团队开发过程吧。   1、土八路     提到土八路,总觉得有点反讽的意味儿,曾经的土八路确实不比正规军差!嘿嘿!     土八路的打法,灵活多变,全靠自己在实践中摸索出来的。       其实,每个开发人员,基本都是在摸索中成长起来的。特别是在小公司,开发人员拥有很大的自主性,技术面比较广。     以前我们做项目的时候,除了有一套基本成型的框架代码之外,其他都要靠自己了。基本上每个项目在项目经理把需求搞清楚之后,其他啥事儿基本都要让开发人员干了,如需求 ...
类型装载、连接与初始化     Java虚拟机通过装载、连接和初始化一个Java类型,使该类型可以被正在运行的Java程序所使用。其中,装载就是把二进制形式的Java类型读入Java虚拟机中;而连接就是把这种已经读入虚拟机的二进制 ...
    有时候在脑海里会浮现一些观点或问题,有些经常遇到,有些可能从未遇过。思考是个很神奇的东西,世界之所以会发展这么快,很大程度上就是思考的成果。刘未鹏的一篇文章《为什么你应该(从现在开始就)写博客》,鼓励我们去学习、思考、写博客。事实上,写博客是对知识的一种总结方式。总结是对知识的归纳与梳理,在这个过程中少不了进一步的学习与思考,因为总有一些东西我们还不懂或没完全懂,所以学会总会很重要。          下面总结几个曾经思考或遇到过,觉得有必要梳理一下的观点:   做项目的公司     很多做项目的公司,太过于注重速度而非效率,注重结果而非过程,注重功能点而非质量,以销售为 ...
Global site tag (gtag.js) - Google Analytics