Method 1: Add one list into the other list. For example, if list1is {22, 33, 44, 55} and  list2 is {66, 77, 88, 99},then append(list1, list2)will change list1to {22, 33, 44, 55, 44, 66, 77, 88, 99}. static void append(Node list1, Node list2) { if (li…
Method 4: Gets the value of element number i For example, if list is {22, 33, 44, 55, 66, 77, 88, 99}, then get(list, 2) will return 44. Solution 1: static int get(Node list, int i) { if (i < 0) { throw new IllegalArgumentException(); } for (int j =…
/** * Method 1: Delete the input element x  * and meanwhile keep the length of array after deleted n * @param a  the array * @param n  the length of array after deleted. * @param x  the element that need to be deleted. */ static void delete(int[] a,…
数据结构之链表(LinkedList)(一) 双链表 上一篇讲述了单链表是通过next 指向下一个节点,那么双链表就是指不止可以顺序指向下一个节点,还可以通过prior域逆序指向上一个节点 示意图: 那么怎么来实现双链表的增删改查操作呢. 分析: 1) 遍历 方和 单链表一样,只是可以向前,也可以向后查找 2) 添加 (默认添加到双向链表的最后) ① 先找到双向链表的最后这个节点 ② temp.next = newStuNode ③ newStuNode.prior = temp; 3) 修改…
在上篇文章 中我们搭建了一个阅读源码的demo工程,然后简单介绍了一下@EnableAspectJAutoProxy注解,这个注解最重要的功能就是为向Spring中注入了一个beanAnnotationAwareAspectJAutoProxyCreator,本篇文章就继续来撸AOP的源码 前文已经简单提到了这个类的功能,不过这里还是要先看一下这个类的继承图 观察类图可知,AnnotationAwareAspectJAutoProxyCreator这个类间接实现了BeanPostProcesso…
数据结构之链表(LinkedList)(二) 环形链表 顾名思义 环形列表是一个首尾相连的环形链表 示意图 循环链表的特点是无须增加存储量,仅对表的链接方式稍作改变,即可使得表处理更加方便灵活. 看一样著名的应用场景 我们就可以用环形单链表解决这个问题. 首先我们怎么构建一个环形链表 分析: 1. 先创建第一个节点, 让 first 指向该节点,并形成环形 2. 后面当我们每创建一个新的节点,就把该节点,加入到已有的环形链表中即可. 示意图: 代码: // 创建一个Boy类,表示一个节点 cla…
目录 1.邀请业务逻辑流程图 2.邀请好友-前端 3.邀请好友-后端接口(生成二维码) 4.前端获取后端生成的二维码 5.前端长按页面,保存图片到相册 6.客户端通过第三方识别微信二维码,服务端提供对应的接口允许访问 7.download.html 8.App配置私有协议, 允许第三方应用通过私有协议,唤醒APP 9.开始使用本地编译测试 10.首页监听是否有来自第三方应用的唤醒:app_listener 11.注册页面接收invite_uid参数 12.对于后端注册接口(User.regist…
动机 近期在看ButterKnife源代码的时候.竟然发现有一个类叫做AbstractProcessor,并且ButterKnife的View绑定不是依靠反射来实现的,而是使用了编译时的注解,自己主动生成的.class文件. 真是一个奇妙的东西啊! ! 所以本文就注解与自己定义的注解处理器来学习注解.项目Github地址 基础知识 大家应该知道元注解@Retention吧,它表示注解在什么时候存在,能够分为3个时期: RetentionPolicy.SOURCE:表示注解仅仅在java文件中面才…
Containers in Depth Full container taxonomy You can usually ignore any class that begins with "Abstract." Filling containers This fill( ) just duplicates a single object reference throughout the container. In addition, it only works for List obj…
Holding Your Objects In general, your programs will always be creating new objects based on some criteria that will be known only at run time. You can't rely on creating a named reference to hold each one of your objects. The compiler-supported type…