ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

JAVA数据处理的常用技术

JAVA数据处理的常用技术 背景在实际开发中数据的处理有五种获取、传输、存储、分析、转换。每种各对应一些常用的技术。序列化和反序列化序列化是将对象的信息转换为可传输或可存储形式的过程。反序列化就是反过来让这些可传输的、可存储的信息变回对象。传输的序列化除了安全性的考虑因为涉及到和第三方通信所以还有重要的一点是可读性和不变性。而存储的链路短可控所以更讲究效率。传输最常用的序列化手段是JSON这样人眼可读的。而存储会使用protostuff这种将key值映射成编码来传输的。因为123比one、two、four更省空间更高效。但是传输中都用编码解析时就很难判断它的意义。双方还要进行额外的约定。本来3代表four中间加了一个three3代表three的话对方没有及时被通知那么解析传输过来的消息就是错的。反射Java反射是在运行时对于任何一个类都可以知道这个类有哪些方法和属性。对于任何一个对象都能对它的方法和属性进行调用。常用数据转换工具比如Spring的RequestParam、RequestBody、ResponseBody内部就用了反射机制。还有Jackson等工具类。甚至在业务代码中直接使用反射也是很常见的。比如设计一个AI助手问答机。想实现小A我要搜索美女冰冰 AI助手OK搜索冰冰 小A想知道她的年龄 AI助手21岁上面这个JAVA实现是这样的Field field 美女.class.getDeclaredField(年龄); field.setAccessible(true); return field.get(冰冰).toString();动态代理代理模式是为了提供增强的或不同的操作而插入来替代实际对象的对象。这些操作涉及到与实际对象的通信所以称为代理。Spring主要的两大思想IoC和AOP。对于IoC利用的是反射机制。而AOP使用了动态代理当然底层也是反射。JDK动态代理只能给有接口的类代理。本质是通过反射获取要执行的方法并在执行前或者后加入一些代理处理操作。cglib本质上用继承的方法实现的是通过动态生成一个子类去覆盖所要代理的类。用final修饰的不能被覆盖的就不代理了。spring动态代理是优先使用JDK动态代理如果目标没有实现任何接口则创建一个cglib代理。如果几个类实现了都实现了一个通用接口比如Runnable并且加了Component请spring来负责其生命周期。这时候会抛出一个Proxy代理异常。说期望加载一个Bean实际上实现却不只一个。这时候可以在这个类上加下面标签强制使用cglib代理来解决。EnableAspectJAutoProxy(proxyTargetClass true)总结我工作十几年来查找和排序算法一直被奉为经典。而这两项就是搜索技术的核心。大数据是建立在搜索技术基础上的。AI又是建立在大数据基础上的。可见查找和排序的核心地位。看似高深的技术也是从最底层开始。苦练基本功。有想进「编程一生」用户交流群的朋友吗
返回列表