摘要:
声明: 链表定义如下: 从无头单链表中删除节点 详情: 给定一个没有头指针的单链表,一个指针指向此单链表中间的一个节点(不是第一个,也不是最后一个节点),请将该节点从单链表中删除。 题解: 解法一:由于单链表并没有给出头指针,因此我们无法通过遍历链表的方式找到该节点的前一个节点来改变其 阅读全文
摘要:
以下针对JDK 1.8版本中的 HashMap 进行分析。 概述 哈希表基于 接口的实现。此实现提供了所有可选的映射操作,并且允许键为 ,值也为 。HashMap 除了不支持同步操作以及支持 的键值外,其功能大致等同于 Hashtable。这个类不保证 阅读全文
摘要:
问题背景 业务中有个场景需要自动起一个A程序(由于A程序与 sublime_text 启动后遇到的问题有相似之处,后文就用 sublime_text 来替代A程序,当A程序与 sublime_text 的现象有所差异的时候,恢复使用 A 程序),并在适 阅读全文
摘要:
DLOPEN DLMOPEN DLCLOSE NAME dlclose, dlopen, dlmopen 打开/关闭共享对象 SYNOPSIS DESCRIPTION dlopen() &nbs 阅读全文
摘要:
offsetof宏:结构体成员相对结构体的偏移位置 container_of:根据结构体成员的地址来获取结构体的地址 offsetof 宏 原型: 非常巧妙,告诉编译器有一个指向结构体 TYPE 的指针,其地址是0,然后取该指针的 MEMBER 地址 ,因为基址是0,所以这时获取到的 MEMBER 阅读全文
摘要:
inet_pton NAME inet_pton 将 IPv4 和 IPv6 地址从点分十进制转换为二进制 SYNOPSIS DESCRIPTION 该函数将字符串 转换为 地址类型协议簇的网络地址,并 阅读全文
摘要:
前言 "GraphQL" 是一种用于 API 的查询语言,是由 Facebook 开源的一种用于提供数据查询服务的抽象框架。在服务端 API 开发中,很多时候定义一个接口返回的数据相对固定,因此要获得更多信息或者只想得到某部分信息时,基于 RESTful API 的接口就显 阅读全文
摘要:
前言 网上有很多模拟登陆 LeetCode 的教程,但是基本都是使用 Python 来实现的。作为一个 Java 语言爱好者,因此想用 Java 来实现下。在实现的过程中,也遇到了一些坑点,故在此作为记录。 过程 根据浏览器F12分析登陆页面 从上图可以看出,LeetCode 生成一个 token 阅读全文
摘要:
概述 建造者模式也称为生成器模式,是一种对象创建型模式,它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。 建造者模式意在为重叠构造器这种反模式(telescoping constructor 阅读全文
摘要:
概述 单例模式保证对于每一个类加载器,一个类仅有一个实例并且提供全局的访问。其是一种对象创建型模式。对于单例模式主要适用以下几个场景: 系统只需要一个实例对象,如提供一个唯一的序列号生成器 客户调用类的单个实例只允许使用一个公共访问点,除了该公共访问点,不能通过其他途径访问该 阅读全文
摘要:
静态域 如果将域定义为 static,每个类中只有一个这样的域。而每一个对象对于所有的实例域却都有自己的一份拷贝。例如,假定需要给每一个雇员赋予唯一的标识码,这里给 Employee 类添加一个实例域 id 和一个静态域 nextId: 现在,每一个雇 阅读全文
摘要:
写在前面 本文中提到的部分设置需要 JS 权限,因此进行相关更改的时候,请确保有 JS 权限。 关于以下内容,是本人在自定义博客园的时候一点总结。这里有一个小技巧,善用浏览器的 功能,我使用的是 Chrome,右键即可,这样就可查看自己心仪的博客是如何进行更改美化的。 代码高亮 以下给出几种设置代码 阅读全文
摘要:
本文译自 "Java8 tutorial" ,并对其中内容进行了一些修改和补充。 接口的默认方法 在 Java 8 中,我们可以通过 关键字来为接口添加非抽象方法。 关键字修饰的方法称为默认方法,它允许我们添加新的功能到现有库的接口中,并能确保与采用旧版本接口编写的代码之间相互兼容。 对于以下例子: 阅读全文
摘要:
以下使用LeetCodeCrawler自动生成 # Title Solution Acceptance Difficulty Topics 0001 Two Sum C++ Java 44.23% Easy Array | Hash Table 0002 Add Two Numbers C++ Ja 阅读全文
摘要:
本篇文章翻译自 "Reduce APK Size" 用户通常不会去下载体积过大的应用程序,特别是当自己的设备连接的是 2G/3G 或者按字节付费的网络。这篇文章描述了如何缩减 APK 的体积大小,以使得更多用户愿意下载你开发的应用。 了解APK结构 在讨论如何缩减你应用的体积之前,了解 APK 结构 阅读全文
摘要:
前提条件:有N个无序的数,假定它们各不相等,如何选出其中最大的若干个数 解法一: 适用于元素数量不多,内存中可存储整个数组序列。通过快速排序或堆排序对数组排序,时间复杂度为O(N*log2N),然后取出前K个数,时间复杂度为O(K),总时间复杂度为O(N*log2N) + O(K),进一步的,可以知 阅读全文
摘要:
为什么需要序列化 当我们创建对象时,只要需要,对象就会一直存在,但在程序终止的时候,无论如何它都不会继续存在。这么做有一定的意义,但是如果对象能够在程序不运行的情况下仍能存在并保存其信息,这样,在下次运行程序时,该对象将被重建并且拥有的信息与在程序上次运行时它所拥有的信息相同。为达到这目的,通常的做 阅读全文
摘要:
GC需要完成: 哪些内存需要回收 什么时候回收 如何回收 如何确定对象不再使用 引用计数算法 给对象添加一个引用计数器,当有一个地方引用它时,计数器值进行加1操作;当引用失效时,计数器值进行减1操作;当计数器值为0,则说明对象不可能再被使用。但是它无法解决循环引用的问题。 上述代码最后面两句将obj 阅读全文
摘要:
程序计数器(Program Counter Register):一块较小的内存空间,可看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。Java虚拟机的多线程是 阅读全文
摘要:
合并多个commit记录 假设我们当前有三个commit信息,现在要将commit hash为 23f92c 和 409978 合并 //git rebase -i HEAD~3 那么我们可以使用 rebase命令,输入如下命令: 897bb5 是first commit 的 hash值,之后出现如 阅读全文