0%

简单Demo

我们知道Java中提供了动态代理机制,可以动态进行代理,示例代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class ProxyFactory {

private Object target;

public ProxyFactory(Object target) {
this.target = target;
}

// 生成动态代理对象
public Object getProxyInstance() {
return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(),
new InvocationHandler() {

@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("开始调用真正的方法");

// 调用被代理对象的方法
Object returnValue = method.invoke(target, args);

System.out.println("结束调用真正的方法");
return null;
}
});
}
}

那么,动态代理在Android的ART中是怎么实现的呢?

下面通过阅读代码简单探究一下。

阅读全文 »

配置NeoVim

NeoVim提供了”AppImage”形式的安装包,我们直接使用”AppImage”包,避免繁琐的依赖安装或编译。

阅读全文 »

问题发现

最近开发时候发现了一个奇怪的问题,在使用iOS的NSURLSessionManager进行文件上传时候,回调方法

1
2
3
4
5
- (void)URLSession:(NSURLSession *)session
task:(NSURLSessionTask *)task
didSendBodyData:(int64_t)bytesSent
totalBytesSent:(int64_t)totalBytesSent
totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend;

无论如何也不会被调用。

阅读全文 »

在iOS13适配过程中会有使用低版本的SDK进行编译然后跑在高版本的设备上进行兼容性适配。 如果每次都打包出来跑在高版本的设备上实在有些麻烦又不方便Debug。其实,低版本的Xcode是可以调试高版本的设备的,只是需要进行一点改动。

阅读全文 »

由于想使用SpaceVim的一套配置, 但很多Vim的插件需要启用+lua+python配置, 服务器上自带的没有这些配置,所以从源码来自行编译Vim启用这些配置。

阅读全文 »

最近看美剧,为了专心享受美剧的快乐避免烦人的下载保存,

想到了把手头的一个树莓派和一个移动硬盘配置成下载机。

这样,客厅的小米盒子就可以通过局域网直接播放下载完的视频。

阅读全文 »

最近又重温了TCP/IP的知识,果然比第一次看的时候有感悟多了,那就写一点东西来总结一下。

阅读全文 »

什么是拥塞

我们都知道计算机网络中的资源是有限的。某段时间内网络中对资源的需求超过了网络中的可用部分,而导致网络性能下降的情况就是拥塞

通俗点说就是发送的数据包太多网络中的设备处理不过来,而导致网络性能下降的情况。

阅读全文 »