对应分析

JDK1.7中HashMap底层实现原理

核能气质少年 提交于 2019-12-04 08:11:51
原文链接: https://www.cnblogs.com/dijia478/p/8006713.html 一、数据结构 HashMap中的数据结构是数组+单链表的组合,以键值对(key-value)的形式存储元素的,通过put()和get()方法储存和获取对象。 (方块表示Entry对象,横排表示数组table[],纵排表示哈希桶bucket【实际上是一个由Entry组成的链表,新加入的Entry放在链头,最先加入的放在链尾】,) 二、实现原理 成员变量 源码分析: /** 初始容量,默认16 */ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 /** 最大初始容量,2^30 */ static final int MAXIMUM_CAPACITY = 1 << 30; /** 负载因子,默认0.75,负载因子越小,hash冲突机率越低 */ static final float DEFAULT_LOAD_FACTOR = 0.75f; /** 初始化一个Entry的空数组 */ static final Entry<?,?>[] EMPTY_TABLE = {}; /** 将初始化好的空数组赋值给table,table数组是HashMap实际存储数据的地方,并不在EMPTY_TABLE数组中 */

BBS(第一篇)

会有一股神秘感。 提交于 2019-12-03 02:50:24
项目开发的流程 BBS表设计之前先在了解一下项目的开发 项目开发的流程包括以下几点 1.需求分析 ​ 架构师+产品经理+开发组组长 ​ 在去客户公司谈需求之前,先事先估摸着这个项目应该怎么做 ​ 里面有哪些坑的点 提前想好比较简单的解决方案 ​ 在跟客户谈的时候 有意识的引导客户朝着你已经想好的方案上去提需求 2.项目设计 ​ 架构师干的活 ​ 项目的报价(每个程序员按照人头 每天2000+左右) ​ 语言的选择 ​ 框架的选择 ​ 数据库的选择(主库用什么 缓存库) ​ 功能划分 ​ 开发部开发组长开会分发任务 3.分组开发 架构师和开发组长将项目整体的框架搭建出来 然后让小组成员各自朝着各个部分填写代码即可 4.测试 1.自己写测试脚本 显而易见的bug如果你自己没有发现,测试部分的如果发现了 那你可能歇逼了,因为你可能就会面临扣绩效的场面 2.测试部分专门测试 5.交付上线 ​ 交给你们公司的运维人员或者是客户公司的运维人员 表设计 现在开始说表的关系. 一共有7张表 登录注册都需要用到用户表存储数据 一共有7张表 用户表 个人站点表 文章标签表 文章分类表 文章表 点赞踩表 评论的表 分析表关系 分析一下第6张点赞表 它记录了哪个用户给哪一篇文章点了赞还是踩(用户,文章,赞踩) 分析表关系最为本质的就是: 本表中的一条数据能否对应另外一张表的多条数据

HashMap实现原理及源码分析

匿名 (未验证) 提交于 2019-12-03 00:43:02
哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。本文会对java集合框架中的对应实现HashMap的实现原理进行讲解,然后会对JDK7的HashMap源码进行分析。 Ŀ¼     一、 什么是哈 希表   二、 HashMap实现原理   三、 为何HashMap的数组长度一定是2的次幂?   四、 重写equals方法需同时重写hashCode方法   五、 总结 一、什么是哈希表   在讨论哈希表之前,我们先大概了解下其他数据结构在新增,查找等基础操作执行性能    数组 :采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(1);通过给定值进行查找,需要遍历数组,逐一比对给定关键字和数组元素,时间复杂度为O(n),当然,对于有序数组,则可采用二分查找,插值查找,斐波那契查找等方式,可将查找复杂度提高为O(logn);对于一般的插入删除操作,涉及到数组元素的移动,其平均复杂度也为O(n)    线性链表 :对于链表的新增,删除等操作(在找到指定操作位置后),仅需处理结点间的引用即可,时间复杂度为O(1),而查找操作需要遍历链表逐一进行比对,复杂度为O(n)    二叉树

5. Spark Streaming高级解析

僤鯓⒐⒋嵵緔 提交于 2019-12-02 13:43:21
5.1 DStreamGraph对象分析       在Spark Streaming中,DStreamGraph是一个非常重要的组件,主要用来:         1. 通过成员inputStreams持有Spark Streaming输入源及接收数据的方式         2. 通过成员outputStreams持有Streaming app的output操作,并记录DStream依赖关系         3. 生成每个batch对应的jobs       下面,通过分析一个简单的例子,结合源码分析来说明DStreamGraph是如何发挥作用的。案例如下: val sparkConf = new SparkConf().setAppName("HdfsWordCount") val ssc = new StreamingContext(sparkConf, Seconds(2)) val lines = ssc.textFileStream(args(0)) val words = lines.flatMap(_.split(" ")) val wordCounts = words.map(x => (x, 1)).reduceByKey(_ + _) wordCounts.print() ssc.start() ssc.awaitTermination()      

Mysql系列基础篇-SQL分类(多表的DQL)

匆匆过客 提交于 2019-12-02 10:38:26
数据库设计 多表关系 一对多(多对一) 如:部门和员工 分析:一个部门有多个员工,一个员工只能对应一个部门 多对多 如:学生和课程 分析:一个学生可以选多门课程,一个课程也可以被很多学生选择 一对一 如:人和身份证 分析:一个人只有一个身份证,一个身份证只能对应一个人 多表查询 内连接 外连接 子查询 来源: https://blog.csdn.net/weixin_45403972/article/details/102753130

EasyNVR控制台运行出现invalid license关于计算机保护软件类似于360、腾讯云管家等限制相关问题分析

£可爱£侵袭症+ 提交于 2019-12-01 07:46:55
EasyNVR 的使用者应该都是清楚的知道,EasyNVR一个强大的功能就是可以进行全平台无插件直播。主要原因在于rtsp协议的视频流(默认是需要插件才可以播放的)经由EasyNVR处理后可以满足无插件的全平台直播。 今天,就 EasyNVR控制台运行出现invalid license关于计算机保护软件类似于360、腾讯云管家等限制相关问题 为大家分析如下: 客户反馈EasyNVR无法成功运行,服务安装提示成功,但是web页面无法正常访问。 分析问题 对应EasyNVR的服务无法被访问,正常情况下是EasyNVR自身服务启动问题,可以通过控制台运行软件执行文件EasyNVR.exe来通过控制台打印来判断服务无法运行的原因。 该内容出现就是因为软件内部自身鉴权没有通过,自身没有启动软件导致的。 解决问题 既然可以看出是自身鉴权没有通过,就从软件自身入手。结果发现,客户现场运行EasyNVR的机器装有360软件,360将EayNVR的相关执行文件(nginx.exe)误杀了。找到对应文件,在360里面将对应nginx.exe添加信任就可以成功启动软件了。 更多详细方案,请关注EasyNVR官方网站。 来源: https://www.cnblogs.com/EasyNVR/p/11670163.html

中国空气质量在线监测平台加密数据爬取

前提是你 提交于 2019-11-29 13:31:33
- 中国空气质量在线监测分析平台是一个收录全国各大城市天气数据的网站,包括温度、湿度、PM 2.5、AQI 等数据,链接为:https://www.aqistudy.cn/html/city_detail.html,网站显示为: 该网站所有的空气质量数据都是基于图表进行显示的,并且都是出发鼠标滑动或者点动后才会显示某点的数据,所以如果基于selenium进行数据爬取也是挺吃力的,因此我们采用requests模块进行数据爬取。 - 基于抓包工具展开分析:   - 通过分析发现,只有在页面中设置了查询的城市名称和时间范围后,然后点击查询按钮,在抓包工具中才会捕获到一个ajax请求的数据包,我们想要爬取的数据也在该数据包中:      然后点击捕获到的数据包后,发现当前ajax请求为post类型的请求,携带一个请求参数d,且该请求参数为加密之后的数据,并且响应中的响应数据也是经过加密后的密文数据。    加密的请求参数:       加密的响应数据:    - 问题:那么如果我们想要将空气质量数据进行爬取,则需要对上述捕获到的ajax数据包中的post请求对应的url携带请求参数进行请求发送,然后获取对应的响应数据。但是请求参数是加密后的密文,响应数据也是加密后的密文。并且post请求参数对应的密文每次请求都是动态变化的,我们如何设置?就算能够破解动态且加密的请求参数

HashMap实现原理及源码分析

假装没事ソ 提交于 2019-11-27 22:54:39
  哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。本文会对java集合框架中的对应实现HashMap的实现原理进行讲解,然后会对JDK7的HashMap源码进行分析。 目录     一、 什么是哈希表   二、 HashMap实现原理   三、 为何HashMap的数组长度一定是2的次幂?   四、 重写equals方法需同时重写hashCode方法   五、 总结 一、什么是哈希表   在讨论哈希表之前,我们先大概了解下其他数据结构在新增,查找等基础操作执行性能    数组 :采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(1);通过给定值进行查找,需要遍历数组,逐一比对给定关键字和数组元素,时间复杂度为O(n),当然,对于有序数组,则可采用二分查找,插值查找,斐波那契查找等方式,可将查找复杂度提高为O(logn);对于一般的插入删除操作,涉及到数组元素的移动,其平均复杂度也为O(n)    线性链表 :对于链表的新增,删除等操作(在找到指定操作位置后),仅需处理结点间的引用即可,时间复杂度为O(1),而查找操作需要遍历链表逐一进行比对,复杂度为O(n)    二叉树

敏感性分析--有感

血红的双手。 提交于 2019-11-27 10:39:28
所谓敏感性分析,其实就是在得到某一方案时,通过上下变动关键变量来看对应变量的影响的大小 可以理解为查看现有方案的稳健性 课本上的话:实际工作中,需要把 状态概率值 和 条件期望值 等因素在 可能变化的 范围内   做几次不同的变化,并反复计算,观察所得到的 期望有效值 是否有变化,或是否影响到最优方案的选择。   如果这些数据稍加变动,最优方案仍保持不变,则这个方案比较稳定,敏感性不高,决策的可靠性较大   反之,需要进一步分析和研究改进方案。 来源: https://www.cnblogs.com/super-yb/p/11360000.html

中国空气质量在线监测平台加密数据爬取

可紊 提交于 2019-11-26 14:09:23
https://www.aqistudy.cn/html/city_detail.html 分析1:通过抓包发现页面中的数据是动态(ajax)加载出来的,可以捕获到ajax数据包对应的请求(post),请求的url可以捕获到,但是请求参数d对应的数据是动态变化且加密的数据。然后响应回来的数据也是经过加密。 可以通过火狐浏览器找出查询/搜索按钮绑定的事件(click),通过事件可以定位到一个getData的js函数。查询/搜索按钮点击之后getData函数被调用了。 getData函数实现的分析: 在函数实现内部没有直接的ajax请求相关的操作,但是发现了另外两个函数的调用 getWeatherData(); getAQIData();这两个函数实现中会存有ajax请求相关操作。 分析:getWeatherData()和getAQIData()内部的实现也没有直观的看到ajax请求的操作,但是这两个函数都调用了getServerData这个函数。并且给该函数传递的参数有: method:'GETDETAIL' or 'GETCITYWEATHER'。 param字典(object): city type = ‘HOUR’ startTime endTime 分析getServerData函数的实现: 我们在抓包工具中做全局搜索,搜到了该函数的实现,不过该函数的实现是经过了JS混淆