摘要:
修改方案: byteBuf.retain(); ByteBuf后面添加这个retain(),这个添加原则是这样,如果你消耗了一次ByteBuf,你的下游Handler还需要再次消耗的话,就需要添加这个retain(),以此类推,一定要要注意添加的时机,不然的话可能需要自己手动释放; 原因分析:这个错 阅读全文
摘要:
Q:一笔订单,在取消的那一刻用户刚好付款了,怎么办? 事务管理:确保订单取消状态更新和付款再数据库方面事务性; 订单取消状态延迟处理:可以适当延迟定订单状态更新; 再付款时再次确认订单状态;拦截用户付款; Q:项目上如何避免出现重复订单? 场景分析:出现重复订单,很有可能是用户网络延迟,或者高并发, 阅读全文
摘要:
事务:一个不可拆分的操作,要么全部执行完,要么全都不执行; 隔离级别:总共有四个,分别是Read Uncommitted(读取未提交内容),Read Committed(读取提交内容),Repeatable Read(可重读),Serializable(可串行化); Read Uncommitted 阅读全文
摘要:
Q:Java好在哪里? 跨平台,垃圾回收机制,生态;Jvm可以将编译后的字节码解释成不同系统的机器码,进而达到跨平台的效果; Q:Java是按值传递还是按引用传递? 按值传递;对于基本数据类型,很好理解;对于引用类型,引用变量本身再栈中也只是持有堆中对象的地址,所有再传递时,也时将地址传递,本质也就 阅读全文
摘要:
零拷贝:再进行IO操作时,从磁盘文件读入与写出一般情况下需要至少经过四次的拷贝,而零拷贝技术则是减少文件的拷贝次数;并非不拷贝; 四次拷贝分别是(以socket为例),DMA控制器将磁盘文件拷贝到内核缓冲区,内核缓冲区拷贝到用户程序缓存区;用户缓冲区再拷贝到socket缓冲区,再由socket缓存区 阅读全文
摘要:
开门见山,直接说问题。 幂等性:也就是消息唯一性,保证重复消息的最终结果不变; 时序性:消息的顺序。 保证幂等性 一般来说,保证唯一,可以像数据库一样,给一个唯一的key;首先必然是UUID或者时间抽,确实可以保证唯一key;但是这个key应该是交给谁处理呢,客户端发送时,携带key?还是再服务端生 阅读全文
摘要:
#{}和${}表达式区别: 前者是预编译处理,后者是字符串替换;#{},Mybatis会将其替换为?,通过PreparedStatement设置,可以很有效防止SQL注入问题;对于${}就是变量直接替换; MyBatis的二级缓存(两个HashMap):一级缓存:是sqlSession级别的缓存,缓 阅读全文
摘要:
Spring的理解: Spring 是一个用于构建企业级 Java 应用程序的综合性框架。它提供了广泛的功能,包括依赖注入、面向切面编程、数据访问、事务管理等;其核心观念是IOC(控制反转)以及AOP(切面编程); IoC: Spring改变了传统Bean的管理,不在由对象自身管理对象之间的依赖关系 阅读全文
摘要:
两个概念,暂存区与工作区 暂存区,就是git存储文件修改的区域,也就是git add命令的执行结果,commit命令就是将这些暂存区的修改提交到分支中。 工作区,也就是我们实际操作的区域,暂存区就是保存着工作区的修改记录。 git仓库创建流程 进入到需要创建git仓库的文件夹,输入git init, 阅读全文
摘要:
封装: 将数据与操作这个数据的方法包装起来,对数据实现只能通过自定义接口实现。 多态: 不同类型的子对象,可以对同一个消息做出不同的响应。 重载:同一个类同一方法名,不同参数返回值; 浅拷贝以及深拷贝:前者是指只拷贝对象的基本数据类型,以及引用地址,而不拷贝其引用指向的对象(就比如对象赋值操作,新/ 阅读全文