源码

java基础 equals和hashCode、HashMap

六眼飞鱼酱① 提交于 2020-01-22 20:05:06
我们知道equals和hashCode都是Object的方法,equals是比较对象是否相同的,默认的是比较地址值,hashCode是获取哈希码的,获取哈希码是有一套哈希算法的,具体没研究,每个版本的java都有些不一样。 equals和hashCode的关系更多的是一种约定,equals相同时,hashCode一定是相同的,equals不同时,hashCode也可能是相同的。所以才会有,重写equals方法一定要重写hashCode方法 hashCode是在HashMap中使用的,在hashMap是采用数组加链表的方式实现的,hashCode通过再hash然后能快速定位到数组的位置,然后再通过equals在链表中查找。说白了hashCode的存在就是为了提高查找效率。 Java中HashMap的实现原理 Java基础面试题 Object类中Hashcode 和 equals区别与联系是什么? HashMap的源码需要好好研究一下,它用到了红黑树 Java源码解析——集合框架(五)——HashMap源码分析 来源: CSDN 作者: Zhongyi_Li 链接: https://blog.csdn.net/lizhongyisailang/article/details/104069076

SYSCALL_DEFINEx宏源码解析

流过昼夜 提交于 2020-01-22 19:34:10
1.定义 显然SYSCALL_DEFINE1是系统调用的入口,其中1表示函数参数的个数,name表示系统调用函数的名字,同理下面的2,3,4,5,6表示参数个数。其具体定义位于linux-4.13.16\include\linux\syscalls.h中,具体定义如下: # define SYSCALL_DEFINE1(name, ...) SYSCALL_DEFINEx(1, _##name, __VA_ARGS__) # define SYSCALL_DEFINE2(name, ...) SYSCALL_DEFINEx(2, _##name, __VA_ARGS__) # define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) # define SYSCALL_DEFINE4(name, ...) SYSCALL_DEFINEx(4, _##name, __VA_ARGS__) # define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) # define SYSCALL_DEFINE6(name, ...) SYSCALL_DEFINEx(6, _##name, __VA_ARGS__)

linux smp 引导多核源码分析

走远了吗. 提交于 2020-01-22 17:04:19
1 SMP cpu map和操作函数集初始化 1.1 初步初始化cpu map start_kernel ---------->smp_setup_processor_id linux 从第一个cpu上面启动以后,先利用smp_setup_processor_id设置cpu index void __init smp_setup_processor_id(void) { int i; //判断是否是smp系统,是则从arm协处理器读取当前cpuid,否则为0 u32 mpidr = is_smp() ? read_cpuid_mpidr() & MPIDR_HWID_BITMASK : 0; //根据level确定CPU号,即cpu = (mpidr >> 8) & 0xff; u32 cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0); //设置map 0为引导cpu cpu_logical_map(0) = cpu; //nr_cpu_ids表示系统中CPU总数 for (i = 1; i < nr_cpu_ids; ++i) cpu_logical_map(i) = i == cpu ? 0 : i; //初始化除boot cpu以外的其他cpu的map printk(KERN_INFO "Booting Linux on physical CPU 0x

javaweb垃圾分类查询系统源码 ssm+mysql

坚强是说给别人听的谎言 提交于 2020-01-22 15:40:32
需求 基于SSM实现一个垃圾分类查询管理系统, 用户可以根据自定义查询分类信息, 管理员可以对分类信息, 垃圾详情信息进行增删改查的管理 运行环境 jdk1.8,tomcat8.5,mysql5.6,EclispseEE/Idea 项目技术 spring, springmvc, mybatis, bootstrap, jsp, jquery 注意事项 测试密码 admin admin 用户查询无需登录 需要在config/db.properties 中修改数据库连接与密码 介绍 实现功能 垃圾分类系统是2019年的热门课题, 在各种javaweb的课程设计中经常出现, 本课程设计源码实现了一套基于ssm框架的垃圾分类查询管理系统 用户自定义查询某个垃圾的分类, 界面自适应 后台实现了一个RBAC的权限管理系统, 并实现了日志管理功能 管理员可以对垃圾分类信息, 以及垃圾信息进行增加, 删除, 修改, 查看的管理操作 技术原理 项目易于ssm三大框架进行实现, 数据库采用mysql, 代码结构清晰, 可用于快速开发其他类型的javaweb管理系统 常见问题 数据库导入报错, 并且系统使用时有乱码,怎么办? 数据版版本需要5.6以上,可以采用 Bitnap一键安装包 进行安装, 数据乱码的问题一般在创建数据库时,将编码设置为utf8,而不是默认的latin就可以解决

jquery 1.7.2源码解析(二)构造jquery对象

可紊 提交于 2020-01-22 14:21:27
构造jquery对象 jQuery对象是一个 类 数组对象。 一)构造函数jQuery() 构造函数的7种用法: 1.jQuery(selector [, context ]) 传入字符串参数:检查该字符串是选择器表达式还是HTML代码。如果是选择器表达式,则遍历文档查找匹配的DOM元素, 并创建一个包含这些DOM元素引用的jQuery对象。如果没有匹配的DOM,则创建一个length属性为0的空jQuery对象。 默认情况下对匹配元素的查找从根元素document开始,但也可以传入context参数限制查找范围。 如果选择器表达式是简单的'#id'且没有context参数,则调用document.getElementById()查找。 如果不是则调用jQuery的find()方法。 2.jQuery(html [, ownerDocument])、jQuery(html, props) 如果传入的参数是html代码,则尝试用html代码创建新的DOM元素,并创建包含这些DOM元素引用的jQuery对象。 如果html代码是单独的标签,使用document.createElement()创建DOM元素。如果是复杂的html代码,则使用innerHTML. 参数ownerDocument用于创建新DOM元素的文档对象,如果不传入默认为当前文档对象。 如果html代码是单独标签

再看Handler消息传递机制原理

江枫思渺然 提交于 2020-01-22 08:12:56
关于handler实现原理的几个问题 源码分析 1.消息队列的数据结构和实现方式; 2.如何保持线程状态,不被销毁; 3.Message如何优先执行以及确保线程安全; 4.如何直接在主线程中执行 5.关于队列,我常用的实现方式 以下将根据源码来具体谈谈这几个问题,源码使用SDK 28。 实现原理主要包含下面几个类: MessageQueue :消息队列,在构造方法里初始化Native,持有队列第一个Message,循环遍历队列,队列为 空时阻塞线程。 Handler :发送和处理Message类,包含同步和异步、异步阻塞等结果,获取Message(通过 Message.obtain复用Message) Message :消息的实体类,包含下一个Message,并有一个静态的Message复用池,还有一些初始化参数等。 Looper :为当前线程创建MessageQueue,并遍历消息队列。 先说一下流程: 1 .Looper.prepare()为当前线程创建MessageQueue,Looper.loop()调用MessageQueue.next()方法遍历消息队列 (注:队列为空时next()方法会阻塞); 2 .Handler.sendMessage()方法调用MessageQueue.enqueueMessage()方法按照时间顺序向消息队列里面添加Message

btstack源码分析-主函数

馋奶兔 提交于 2020-01-22 07:49:07
主函数分析(port/windows-winusb/main.c): int main(int argc, const char * argv[]) { main_argc = argc; main_argv = argv; btstack_memory_init(); ... #if MAX_NR_HCI_CONNECTIONS > 0 //把hci_connection_storage挂到hci_connection_pool单向链表下,hci_connection_storage是hci_connection_t类型数组,MAX_NR_HCI_CONNECTIONS是数组个数 btstack_memory_pool_create(&hci_connection_pool, hci_connection_storage, MAX_NR_HCI_CONNECTIONS, sizeof(hci_connection_t)); #endif ... #if MAX_NR_GATT_CLIENTS > 0 btstack_memory_pool_create(&gatt_client_pool, gatt_client_storage, MAX_NR_GATT_CLIENTS, sizeof(gatt_client_t)); #endif ... btstack_run_loop

学生管理系统源码

有些话、适合烂在心里 提交于 2020-01-22 07:06:49
** 学生管理系统(winform)项目源码及使用说明 ** 这是一个学生管理系统,使用VS2010+SQL2014编写,VS2017正常使用 QQ技术交流群:683782676 这是一个学生选课信息管理系统,使用VS2010+SQL2008编写。 在 VS2017+SQL2014打开、运行正常。 有登陆窗口、嵌套窗体、多窗体、登陆验证码、任务栏小化(右下角)、学生信息管理、学生选课情况、班级统计等功能。 实现了对数据库的增删查改、用户登陆、表格修改、数据表关系图、Drawing绘图等等。 [登陆界面] 表格的CRUD [ 后台运行(任务栏小化) ] 软件架构 软件架构说明 使用C#编写winform项目 安装教程 1.直接使用vs打开项目中的xk.sln 2.还原数据库:执行项目下的sql文件,在数据库中执行,为了确认导入成功,请重复执行2次 3.更改文件数据库连接 Properties/Settings/Settings.Designer.cs 4.点击 Properties 目录下的Setting.setting修改连接字符串 5.数据库已经添加一些信息,请在 Users 表中,添加管理员账号。在登陆时方可用管理员账号登陆 [global::System.Configuration.DefaultSettingValueAttribute 连接字符串 QQ技术交流群