数据库
本文参考 JavaGuide
SQL/NoSQL基础什么是SQLSQL 是一种结构化查询语言(Structured Query Language),提供一种从数据库中读写数据的简单有效的方法。几乎所有的主流关系数据库都支持 SQL ,适用性非常强。一些非关系型数据库也兼容 SQL 或者使用类似于 SQL 的查询语言。
DB/DBMS/DBS/DBA
数据库:数据库(DataBase,DB)是由数据库管理系统管理的数据的集合。
数据库管理系统:数据库管理系统(Database Management System,DBMS)是一种操纵和管理数据库的大型软件,通常用于建立、使用和维护数据库。
数据库系统:数据库系统(Data Base System,DBS)通常由软件、数据库和数据管理员(DBA)组成。
数据库管理员:数据库管理员(Database Administrator,DBA)负责全面管理和控制数据库系统。
数据库术语
数据库(database):保存有组织的数据的容器(通常是一个文件或一组文件)。
数据表(table):某种特定类型数据 ...
计算机基础
本文参考 JavaGuide
网络常见网络模型
OSI七层模型:如下。
TCP/IP四层模型:如下。
混合模型:混合模型结合了OSI模型和TCP/IP模型的优点,以更好地解释和实现网络通信。
五层模型: 物理层、数据链路层、网络层、传输层和应用层。 去除了OSI模型中的会话层和表示层,将它们的功能合并到应用层中。
IEEE 802模型:主要用于局域网(LAN)和城域网(MAN)。包含物理层和数据链路层,进一步细分为介质访问控制(MAC)层和逻辑链路控制(LLC)层。
OSI七层模型
应用层:为计算机提供服务
表示层:数据处理(编码、解码、加密解密、压缩解压缩)
会话层:管理(建立、维护、重连)应用程序之间的会话
传输层:为两台主机进程之间的通信提供通用的数据传输服务
网络层:转发、路由和寻址(决定数据在网络中的游走路径)
数据链路层:帧编码和误差纠正控制
物理层:透明地传送比特流传输
TCP/IP四层模型
应用层(应用层、表示层、会话层)
传输层
网络层
网络接口层(数据链路层、物理层)
为什么网络要分层复杂系统需要分层,每层专注于一类事情。 ...
测开面经
注:下面内容一部分来自于我舍友的博客
测开自我介绍面试官您好,我叫陈温鹏,就读于南京理工大学软件工程专业,学位是学硕,这次应聘的是 测试开发岗位。
我呢,研一的时候积极参加开源社区建设,先参加了Casbin社区一个线上实习,担任社区维护者,日常工作会解决社区 issue,跟踪解决用户需求,修bug以及完善相关文档;然后在研一暑假三个月时间中了一个中科院和 casbin 社区联合举办的一个开源项目,主要的工作是完善社区整个大前端系统,包括 web,移动端功能完善,以及为社区开发了一款支持通用2FA的移动端app。除此之外,我还参与过国家电网经济研究院的一个项目。 这几段项目实习经历锻炼了我文档阅读、编写的能力,并在代码规范、开发流程等技能上获得提升。
其实在开源项目也做过关于测试相关的工作,也激发了我对测试开发的兴趣,所以就应聘了测试开发这个岗位。
然后我呢,我评价觉得自己是一个学习能力很强的人,可以比较快速的学习并适应新的环境和技术栈。 最后感谢 饿了么 给我这次面试机会,我也十分希望能进入 饿了么 ,与公司共同成长进步!
为什么选择测开之前在社区的一个开发经历让我对软件质量和稳定 ...
前端&移动端面经
虚拟列表实现原理虚拟列表(Virtual List)是一种在数据量较大时,优化显示性能和用户体验的技术。其核心思想是在渲染和显示过程中只加载和显示当前视窗内的部分数据,而不是一次性加载和渲染全部数据。这样可以显著减少内存消耗和提高渲染速度。虚拟列表通常用于长列表或表格组件中,特别是在Web应用和移动应用中。
实现原理
可视区域(Viewport):虚拟列表只渲染用户当前可见区域内的列表项。用户滚动时,更新可视区域内的列表项。
缓冲区(Buffer):为了防止滚动时的卡顿,虚拟列表通常会在可视区域上下增加一定数量的缓冲区列表项。这些缓冲区项可以在用户快速滚动时提前加载,保证平滑滚动。
位置计算(Position Calculation):通过计算每个列表项在整个列表中的位置,只渲染可视区域和缓冲区内的项。使用绝对定位或CSS变换属性将这些项放置在正确的位置。
事件监听(Event Listener):监听滚动事件,根据滚动位置更新可视区域和缓冲区内的列表项。
具体实现步骤
初始设置:确定列表项的高度(或宽度),以及可视区域的高度(或宽度)。如果列表项高度不一致,需要预估一个 ...
Java后端面经
准备在这篇文章中,先详细分析简历中可能会被问到的问题,然后总结一下 Java基础的精简答案,最后再回顾一下每次面试的面经。本文参考 JavaGuide
简历相关自我介绍面试官您好,我叫陈温鹏,就读于南京理工大学软件工程专业,学位是学硕,这次应聘的是 Java后端开发岗位。
我呢,研一的时候有过一段开源经历(Casbin社区一个线上实习),担任社区维护者,日常工作会负责处理社区日常issue,跟踪解决用户需求,修复bug及完善文档等;然后在研一暑假期间中选了中科院和 Casbin 社区联合举办的一个开源项目,主要的工作是完善社区整个大前端系统,包括 web,移动端功能完善,以及为社区开发了一款支持通用2FA的移动端app。除此之外,我还参与过国网经济研究院的一个项目,以及自己做过两个Java前后端项目。这几段项目实习经历锻炼了我文档阅读、编写的能力,并在代码规范、开发流程等技能上获得提升。
然后我呢,我评价觉得自己是一个学习能力很强的人,可以比较快速的学习并适应新的环境和技术栈。
最后感谢 xxx 给我这次面试机会,我也十分希望能进入 xxx ,与公司共同成长进步!
开源经历
Ca ...
RNN/LSTM/GRU/GCN
最近对强化学习算法和预测结合有些想法,阅读了下面两篇文章对之有了大致认识。
参考:https://zhuanlan.zhihu.com/p/587276701参考:https://zhuanlan.zhihu.com/p/605750441
循环神经网络RNN传统的神经网络只能单独的取处理一个个的输入,前一个输入和后一个输入是完全没有关系的。但是,某些任务需要能够更好的处理序列的信息,即前面的输入和后面的输入是有关系的。
由此诞生了RNN。
循环神经网络(Recurrent Neural Network, RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络。
123456x 输入层 向量U 输入层到隐藏层的 权重矩阵s 隐藏层 向量V 隐藏层到输出层的 权重矩阵o 输出层 向量W 上一次隐藏层的值作为这一次输入的权重 权重矩阵
循环神经网络的隐藏层的值s不仅取决于当前这次的输入x,还取决于上一次隐藏层的值s。
具体的抽象图:
长短期记忆网络LSTM长短期记忆(Long short- ...
MARL
由于我的科研方向是多智能体强化学习,且由于研一忙于课程和一些开源项目,导致我对一些科研方面的算法理解不够充分。刚好,最近一次和东大的联合组会轮到我讲了,借此深度理解一下这些算法。
在这篇笔记中,我会总结我的直系学长推荐我先看的多智能体强化学习知乎专栏内容,然后如果有时间,再总结我导师之前发给我让我看的论文。相关链接我会放在下面。
知乎专栏:https://www.zhihu.com/column/c_1061939147282915328
基础知识与博弈引言在多智能体系统中,每个智能体通过与环境进行交互获取奖励值(reward)来学习改善自己的策略,从而获得该环境下最优策略的过程就多智能体强化学习。
在单智能体强化学习中,智能体所在的环境是稳定不变的,但是在多智能体强化学习中,环境是复杂的、动态的,因此给学习过程带来很大的困难。
维度爆炸:在单体强化学习中,需要存储状态值函数或动作-状态值函数。在多体强化学习中,状态空间变大,联结动作空间随智能体数量指数增长,维度非常大,计算复杂。
目标奖励确定困难:多智能体系统中每个智能体的任务可能不同,但是彼此之间又相互耦合影响。奖励设计 ...
强化学习
之前没有深入和系统的学习过强化学习,最近由于科研刚需,上网查资料刚好看到知乎上面有个大佬的强化学习的系列文章,感觉写的很好,于是就把他的文章看了一遍,顺便做了一些笔记,这里记录一下。
原文: https://zhuanlan.zhihu.com/p/111895463
卧槽大佬讲的真的好,笔记记不了一点!!!建议大家都去看原文!
后面可能会自己写一下 MADDPG 和 MATD3 的相关内容,到时候再更新。
2023/10/23 这几天把大佬的强化学习专栏看了一遍了,真的很不错,但是我觉得还是得自己总结一下重难点,且这周五和东大的联合组会轮到我讲了,刚好深入理解一下强化学习算法。所以还是写一下这篇笔记吧!
学习路线:
马尔可夫树强化学习的任务:
希望用强化学习的方式,使某个智能体获得独立自主地完成某种任务的能力。
智能体学习和工作的地方,称为环境。
所谓独立自主,就是智能体一旦启动,就不需要人指挥了。
经典马尔可夫链
状态(state):智能体观察到的当前环境的部分或者全部特征。
注意:环境的特征可能有许多,但只有智能体能够观察到的特征才算是状态。所 ...
react技巧
主要是对开源项目中react-native的一些使用技巧进行总结。具体项目见:casdoor-app
后面如果做react的话可能也会做一些总结,到时候再加。
react-nativeReact Context用于在不同的组件中或者 js 文件中共享同一个数据。
使用方法:
例如要共享 userInfo
在应用程序中创建一个 React Context,用于共享 userInfo。
UserContext.js
123456import React from "react";const UserContext = React.createContext();export const UserProvider = UserContext.Provider;export const UserConsumer = UserContext.Consumer;export default UserContext;
在 App.js 中使用 UserProvider 包裹应用程序
注意这里要设置需要共享的数据 value={{userInfo ...
云笔记系统扩容
起因之前部署的云笔记系统的存储卷太小了,当用户数量增加的时候,笔记及用户信息会增大,这有可能会引起内存爆掉的情况。存储用户信息的 mysql和存储笔记信息的 mongodb在部署的时候我都设置了 1G的存储卷,这是远远不够的,因此需对其进行扩容。
根据老师要求,需将内存从 1G扩展到 50G,这是针对存笔记系统的 mongodb,为了更加稳妥,跟学弟协商后决定将存用户数据的 mysql也扩充到 10G。
大体思路:
确定 mongodb和 mysql的 pod所在的 node节点。
备份数据
删除旧的 pod
分别修改 mongodb和 mysql的 pv、 pvc为 50Gi、 10Gi。
指定 mongodb和 mysql的 pv、 pvc及 mongodb、 mysql部署的亲和性,让其部署在指定 node节点,便于扩容。
重新部署相应 pod
扩容指定的 mongodb、 mysql部署的节点的虚拟机。
注:本笔记图片里的 deployment的编号等信息可能会不一样,因为自己操作的时候可能会删了pod在重建导致其编号及时间等不一样,图片仅用于描述过程及结果。
1. 确 ...