ARTS (第33周)
Algorithm 算法
岛屿数量
leetcode 200
https://leetcode-cn.com/problems/number-of-islands/
1 | 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。 |
解法:
每当发现有点的时候,就用一个数组记录所有相连的点。
在这题里,还可以直接将grid数组里的值改变,比如改成2, 这样可以省一些内存
1 | //执行用时:2 ms,在所有java提交中击败了97.14%的用户 |
路径总和
leetcode 112
https://leetcode-cn.com/problems/path-sum/
1 | 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 |
树结构以及辅助方法
1 | public static class TreeNode { |
解法1
递归穷举法将情况都罗列。
1 | // 执行用时:0 ms,在所有java提交中击败了100.00%的用户 |
和递归一样的思路,穷举,用队列保存,不使用递归,使用2个队列保存各种变量
1 | // 执行用时:2ms,在所有java提交中击败了21.41%的用户 |
Review 英文文章
https://spring.io/guides/gs/messaging-jms/
spring整合jms,发送邮件
Tip 技巧
java动态代理
1、在有接口的时候,使用jdk自带的InvocationHandler 类+Proxy类进行动态代理
2、在没有接口的时候,使用cglib的的Enhancer类和MethodInterceptor类进行动态代理
自定义classloader
继承classloader,然后重写findClass方法,
在findclass里有个defineClass方法,可以通过这个方法进行自定义。
方法定义如下:
protected final Class defineClass(String name, byte[] b, int off, int len)
这个方法里的第二个参数就是class文件的字节码,第一个是类名,因此我们可以在需要重新加载类的时候,自定义调用这个defineClass方法,实现自定义(如热部署)的效果。
Share 分享
https://www.cnblogs.com/sunhao96/p/7873842.html 事件驱动模型和异步IO多路复用