使用泛型时toString与String.valueOf()的区别
1、首先看下面代码:
123456public class CreateOrgNotifyEventListener extends AbstractOnsEventListener<CreateOrgNotifyEventPayload> { @Override public void onEventInternal(OnsMessageEvent<CreateOrgNotifyEventPayload> event) { CreateOrgNotifyEventPayload payload = JSON.parseObject(String.valueOf(event.getPayload()), CreateOrgNotifyEventPayload.class); }}
2、代码中event.getPayload()会返回泛型T即CreateOrgNotifyEventPayload类型,但是却不能直接用如下代码获取CreateOrgNotifyEventPayload,会触发C ...
错误使用Lists.partition方法引起java.io.NotSerializableException:java.util.ArrayList$SubList问题
1、解决循环partitionList时,需要用Lists.newArrayList(list)包装一下list。
123456789List<PartInfoSkuResponse> result = Lists.newArrayList();if (Objects.nonNull(request) && CollectionUtils.isNotEmpty(request.getInfoIds())) { List<List<BigInteger>> partitionList = Lists.partition(request.getInfoIds(), NumberConstants.NINETY_NINE); for (List<BigInteger> list : partitionList) { request.setInfoIds(Lists.newArrayList(list)); result.addAll(partInfoReadFacade ...
业务侧中台对接思考
1、定位及原则业务测为主导,中台提供公共业务支持。
2、步骤2.1、业务测研发根据需求拆分需要的接口定义接口方法入参及出参字段。
2.2、产品将接口需求提jira到中台提供接口需求清单。
2.3、对接评审及接口排期对接技术文档评审。
确定接口文档提供时间、jar包提供时间、联调时间。
架构文章搜集
大型网站架构演化历程
大型网站架构技术一览
支付宝和蚂蚁花呗的技术架构及实践
支付宝的高可用与容灾架构演进
余额宝技术架构及演进
淘宝数据魔方技术架构解析
淘宝技术发展历程和架构经验分享
淘宝架构演进背后——零售业务中台架构设计探讨及实践
阿里游戏高可用架构设计实践
阿里B2B技术架构演进详解
秒杀系统架构分析与实战
京东峰值系统设计
京东咚咚架构演进
一张图看完京东基础架构演进之路
大促系统全流量压测及稳定性保证——京东交易架构分享
京东618实践:一元抢宝系统的数据库架构优化
京东上千页面搭建基石——CMS前后端分离演进史
京东物流系统架构演进中的最佳实践
京东话费充值系统架构演进实践
新浪微博平台架构
微博深度学习平台架构和实践
新浪微博用户兴趣建模系统架构
新浪微博推荐系统架构的演进
新浪微博应对弹性扩容的架构演进
微博众筹的架构设计
当当网系统分级与海量信息动态发布实践
LinkedIn架构这十年
4亿用户的LinkedIn数据产品设计原则和架构实现
从0到100——知乎架构变迁史
豆瓣的基础架构
小米网抢购系统开发实践
小米抢购限流峰值系统「大秒」架构解密
海尔电商峰值系 ...
阿里CCO项目组面试的思考
回顾一下面试的问题
早些年就有微服务的概念,为什么以前不火,现在很火?
你认为架构的本质是什么?
JVM怎么处理堆外内存,会有垃圾回收吗?
能拿得出手的项目及其内部难点有什么?
高可用与容灾的区别?
服务的稳定性如何保证?
不出意外,我答的和屎一样。可以说我以前学习或者工作的关注点都是知识点的层面,属于根据业务做需求,而没有关注更上层、更抽象的东西。比如软件是商业行为,这个项目的关注点是什么?为什么选择现有的架构?如果我是架构师,我如何做业务的设计与技术的选型?等等一大串的问题。抽时间我会把上面的几个问题好好研究一下,写写分析,不能永远只停留在知识点的层面上。
给我的建议
简历上的项目太多,要找个大的项目详细的写一写,画画图,这样能让面试官更好的了解自己,能挖一挖干货,否则问一些基础知识没啥太大价值,有了干货才能比其他候选人有更好的不可替代性,有更多的差异感。
博客要有自己的思维,不要流水账。知识分享是好事,但是现在的博客写的就像自己的笔记。
总结你的关注点在哪,你就属于哪个Level。这句话说的很对,想要更好的成长,就要跳出自己的舒适圈,多接触更大的项目,更优秀的人,好好学习,好 ...
阿里Java后端在线笔试题及答案
除构造函数外,还有哪几种创建对象的方式?
通过new语句实例化一个对象
通过反射机制动态创建对象
通过clone()创建对象
通过反序列化的方式创建对象
ArrayList list = new ArrayList(20);中的list扩充几次答案:直接指定的容量,不会扩容
面哪些是对称加密算法()A DES B AES C DSA D RSA答案:A B
下面程序的运行结果是什么
12345678910111213141516171819202122232425262728293031class HelloA { { System.out.println("I'm A class"); } static { System.out.println("static A"); } public HelloA() { System.out.println("HelloA" ...
面试基础知识点整理
一、java基础之集合类1、ArrayList的扩容机制
每次扩容是原来容量的1.5倍,通过移位的方法实现。
使用copyOf的方式进行扩容。
扩容算法是首先获取到扩容前容器的大小。然后通过oldCapacity + (oldCapacity >> 1) 来计算扩容后的容器大小newCapacity。这里用到了>> 右移运算,即容量增大原来的1.5倍。还要注意的是,这里扩充容量时,用的时Arrays.copyOf方法,其内部也是使用的System.arraycopy方法。区别:
arraycopy()需要目标数组,将原数组拷贝到你自己定义的数组里,而且可以选择拷贝的起点和长度以及放入新数组中的位置。
copyOf()是系统自动在内部新建一个数组,并返回该数组。
2、数组和ArrayList的区别
数组可以包含基本类型,ArrayList成员只能是对象。
数组大小是固定的,ArrayList可以动态扩容。
3、ArrayList和LinkedList的区别
线程安全ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全;
数据结构 ...
字符串的常见算法总结
1、无重复字符的最长子串3. 无重复字符的最长子串滑动窗口解题。设置一个map来存储字符与其出现的位置,再定义窗口的开始与结束指针。
12345678910111213141516171819public static int lengthOfLongestSubstring(String s) { //边界检查 if (s == null || s.isEmpty()) { return 0; } //结果 int res = 0; //定义一个map,key存放不重复的字符,val为字符的位置 Map<Character, Integer> map = new HashMap<>(); for (int start = 0, end = 0; end < s.length(); end++) { char c = s.charAt(end); if (map.containsKey(c)) { ...
链表的常见算法总结
1、两个单链表求和445. 两数相加 II双栈法更好理解。
123456789101112131415161718192021222324252627282930313233public static ListNode addTwoNumbers(ListNode l1, ListNode l2) { //双栈法 LinkedList<ListNode> stack1 = new LinkedList<>(); LinkedList<ListNode> stack2 = new LinkedList<>(); ListNode res = null; while (l1 != null) { stack1.push(l1); l1 = l1.next; } while (l2 != null) { stack2.push(l2); l2 = l2.next; } //进位 i ...
二叉树的常见算法总结
节点定义12345678910111213public static class BinaryNode<T> { T element; BinaryNode<T> left; BinaryNode<T> right; BinaryNode(T theElement) { this(theElement, null, null); } BinaryNode(T theElement, BinaryNode<T> lt, BinaryNode<T> rt) { element = theElement; left = lt; right = rt; }}
二叉树节点包括元素值与左右子节点引用。
创建节点1234567BinaryNode g = new BinaryNode(7);BinaryNode f = new BinaryNode(6);BinaryNode e = ...