我的编程之旅:大学学习记录与成长经历

本文最后更新于:3 天前

每一次跌倒都是成长的垫脚石,让我们站得更高,看得更远。

破冰

🔥 每日学习计划,打卡记录

坚持记录自己的学习经历,每天的进步都成为我前进的动力,这个过程令人感到无比有意义。

每天回顾自己的学习笔记,我能够清晰地看到自己的成长和进步,这种持续的努力使我更加自信和坚定,同时也为我树立了积极的学习态度。

我发现,这样的学习记录不仅仅是一种反思和总结,更是对自己努力和进步的有力证明。

我深信,只要坚持下去,每一天都将是新的收获和成长,让我不断迈向更高的目标。

思维碰撞

2021/9月-2022/5月

C、C++

杨辉三角

演讲比赛系统

职工管理系统

渡一教育

HTML、CSS、JS

豆瓣电影

2022/5月底-2022/9月

Java基础

韩顺平

零钱通

房屋出租

类QQ通讯项目

满汉楼餐厅

2022/9月-2022/10月

坦克大战

Javaweb

MySQL

2022/10月-2022/12月

Spring

SpringBoot

MyBatis

GitHub托管了我的第一个网页 回忆如初 (deng-2022.github.io)

当时还有HTML、CSS的底子,写了个简单的个人页面就紧急部署在GitHub上了,虽然似懂非懂,但这是我学编程以来第一次做出能够分享给别人、类似网站的学习成果,令我非常兴奋

瑞吉外卖

202/01/26 10:12

  • 加入知识星球-编程导航
  • Xmind
  • 黑马点评

2023/2月-3月中旬

  • 小游戏源码
  • 坦克大战
  • 黄金矿工
  • 跟着黑马阿玮老师的详细教程成功打包(详见《游戏打包》),并上传至网盘分享给了自己的好兄弟玩,这个当时还发了个朋友圈

2023/03/07

  • 搭建个人博客,Gitee托管博客站点
  • 接下来的一周内我找了好多好看的壁纸,修改Fluid主题相关配置,打造了属于自己的特色个人博客

2023/3/10

  • 用户中心

2023/03/24

  • 伙伴匹配
  • Python爬虫

2023/4月

  • SpringCloud
  • 博客站点、文档站点

2023/05/20

  • Electron开发实战–从零构建类QQ项目,了解Electron

2023/06/02

  • 今天,伙伴匹配系统主要功能基本完成
  • 跟着鱼皮的录播,打算部署上线这个项目

2023/06/03

鱼皮兄说得好:

Java巩固基础就在牛客选择题、力扣算法题上下功夫;

Java进阶主要持续学习四点:

Java丰富的类库和生态(工具库guava、apache、commons,缓存库jedis、caffine等)多做项目多积累Java并发编程、熟练运用Java并发包编程,《Java并发编程的艺术》

Jvm,Jvm调优《深入理解Java虚拟机》

阅读源码

Java特性,探针、代理、反射等

下定决心购买《疯狂Java讲义》上下两册,一百一十五块大洋

学习GitHub相关操作,学习如何在线查看/运行代码、拉取代码至本地,在GitHub上学习优质项目

筹划将Gitee上的项目仓库也同步到GitHub上,之前是因为Gitee没有网络问题才选择它的,现在发现steam++百分百解决这个问题

康文昌,从零开始的编程之路,了解到uni-app + uniCloud 是跨端跨云的开发方案

白嫖了几个阿里云免费赠送3个月试用时效的服务

回头学习用户中心的部署上线流程,着手上线用户中心和伙伴匹配

2023/06/04

日常牛客10道Java基础题

阅读LearnAndRecord一篇文章,巩固短语积累

计组温习巩固概论基础,现阶段学习存储器相关内容

用户中心第14集,初步了解到项目部署上线的三种方法:原始方法、宝塔、容器,部分笔记已保存在《项目部署及上线》一文,这两天了解租用云服务器,抓紧尝试部署上线用户中心项目

跟着康文昌巩固学习了git/GitHub,部分笔记已记录在《git-GitHub进阶学习》中

顺便记录以下,这应该是我自入门Java至今整整一年了吧,值得纪念一下,这一年学到不少东西了

2023/06/05

上午计组刷了半小时编程导航嘉宾问答,感触颇深,学到好多相关知识,心态也更好了,这可比刷DY、KS有意思多了

搞了一天阿里云服务器ECS建站

用前两天白嫖的3个月ECS云服务器跟着视频教学搞的:1.阿里云服务器购买流程_哔哩哔哩_bilibili

了解了云服务器的购买、运行及相关配置、安装宝塔面板,做到将域名解析到阿里云服务器时卡住了,因为我还没有已备案的域名

又学习了解了域名的购买、备案,找到一个申请免费域名的网站(免备案),具体教程如下:

永久免费域名申请教程 百分之百成功_哔哩哔哩_bilibili

免费白嫖顶级域名!2023年最新免费域名注册教程:支持com、net,二级域名永久有效!切勿错过 | 零度解说_哔哩哔哩_bilibili

20道牛客Java基础题

用户中心和伙伴匹配项目成功推送到GitHub,master/main分支问题得到解决,这个博客写的很棒:

(59条消息) 关于git的问题:error: src refspec main does not match any_TripleGold.的博客-CSDN博客

有什么问题什么想法上编程导航找资料就行了,太方便了

2023/06/06

伙伴匹配暂时停止独立开发,计划拉取一位优秀星球伙伴的开源代码,观摩人家的实现思路,照葫芦画瓢,慢慢优化

巩固单词积累,LearnAndRecord一篇文章

数据库实验报告:索引、视图、集合查询

(59条消息) MySQL 高级(2): 索引的概念,分类,性能分析,索引失效_Mr_tianyanxiaobai的博客-CSDN博客

(59条消息) 《MySQL必修课:索引大决战!你不得不知道的各种索引类型和实现原理!》_Java-You的博客-CSDN博客

(59条消息) mysql 等值唯一索引_mysql索引之一:索引基础(B-Tree索引、哈希索引、聚簇索引、全文(Full-text)索引区别)(唯一索引、最左前缀索引、前缀索引、多列索引)…_熔岩巨兽 墨菲特的博客-CSDN博客

(59条消息) mysql 索引修改_mysql添加、修改、删除、查询索引_严素的博客-CSDN博客

MySQL修改和删除索引(DROP INDEX) (biancheng.net)

(59条消息) oracle修改索引名称语句,5.4.4 修改索引(1)_Guohao Li的博客-CSDN博客

(59条消息) 3. 集合查询:union(并)、 except(差)、intersect(交)_intersect组合查询_你说的白是什么白_的博客-CSDN博客

(59条消息) MySQL实现交集查询和差集查询以及对称差查询_mysql交集查询_ChaoYue_miku的博客-CSDN博客

晚上了解了下域名购买及备案流程,想着自己赶紧也买一个,斟酌了半天:memory-life.fun,7块钱首年挺划算的

但购买/注册域名要有实名认证的信息模板,过几天才能注册到了,推荐下面这个系列:

【买个域名】域名购买知识 域名购买教程| 8块钱买入3000万卖出 | 一起来买个域名 | 域名如何选 |域名购买 | 域名选购_哔哩哔哩_bilibili

《疯狂Java讲义》已收到

2023/06/07

  • 刷星球嘉宾问答和球友开源项目分享,上CSDN和知乎找资源
  • 靠前几天学到的git/GitHub进阶,拉取了两位球友的用户中心和伙伴匹配开源代码,访问了线上地址,并成功在本地运行
  • 注意点:数据库改成你本地的,前端请求url是否正确,注意看Readme文档,就能正常跑起来了
  • Hexo+Gitee博客搭建,找时间完善一下这部分笔记
  • 实名认证模板审核通过了,成功注册第一个域名:memory-life.fun,接下来就是域名备案了
  • 注册表操作右键菜单

2023/06/08

  • 日常阅读LearnAndRecord一篇文章
  • 看了一遍球友的篝火项目,现阶段争取尽快自己实现好友功能
  • 编程导航星球认识了校友,加了微信方便联系
  • 持续优化伙伴匹配,明天着手实现好友功能(开发记录详见《伙伴匹配-开发文档》)
  • 补10道牛客Java基础题
  • 检查配置一下图床吧,再了解了解Gitee和GitHub的Page服务
  • 现阶段学习方向:备考英语6级、备考期末、数据库/计组实验报告、文献检索报告、伙伴匹配、云开发、Python爬虫开源项目、Gitee/GitHub
  • (62条消息) 浅谈servlet源码_striveb的博客-CSDN博客

2023/06/09

  • 完成数据库实验大作业,学了一早上Jsp
  • 遇到两个问题:
  • 引进servlet包,maven报错,是因为D:\softWare\Maven\apache-maven-3.6.1\conf\settings.xml下的jdk配置过期了,引进新技术就报错了,添加以下插件配置即可
1
2
3
4
5
6
7
8
9
10
11
12
<profile> 
<id>jdk-1.7</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.7</jdk>
</activation>
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>
</properties>
</profile>
  • 一写jsp项目就跑不起来,直接显示:
  • 发现报错:
1
ZipException opening "jsp-api-2.2.jar": zip END header not found
  • maven下没有2.2版本的jsp包,pom.xml配置下换成2.1就行了
  • 数据库实验大作业设计完成!巩固学习了servlet、request、response、jsp、Mybatis等知识,收获颇深,我要把这个项目推送到Gitee/GitHub上,哈哈
  • 计组存储器上半部分教材已看完

2023/06/10

image-20230610174455011

image-20230610174530299

image-20230610174550692

  • 实验报告:数据库开发大作业开了个头

2023/06/11

  • 巩固最近做过的长篇阅读,积累英语写作表达
  • 数据库开发大作业完成
  • 拿到历年计组、数据库期末考题了,抓紧时间复习了,还有实验
  • 数据库系统概论过了一遍
  • 伙伴匹配的验证码登录功能初步开发完成

2023/06/12

  • 计组控制单元、CPU已过
  • 伙伴匹配的验证码登录功能开发完成

2023/06/12 - 2023/06/14

  • 备考四六级、备考期末中……

2023/06/14

  • 伙伴匹配 注册功能完成

2023/06/15

  • 牛客Java基础题共844题一轮刷题完成,用时整4个月,纪念一下

2023/06/15-2023/06/17

  • 疯狂备考六级英语中

2023/06/18

2023/06/19

2023/06/20

  • 宝塔面板安装MySQL数据库,连接到阿里云服务器上
  • 安装MySQL服务很简单,新增数据库时,用户名会默认为数据库名,怪不得我用root进不去MySQL
  • 本地导入sql文件,建表,插入数据
  • 远程连接服务器:我连接的阿里云服务器,注意这里的管理员名称和管理员密码就是 WorkBench 远程连接设置的账号密码

image-20230620114110961

  • 这里还有个问题:通过宝塔安装的数据库root默认不支持远程权限,修改数据库权限为所有人即可

image-20230620114216795

image-20230620193558829

  • 下午,宝塔面板的快速安装,详见《宝塔面板安装》
  • 晚,CodePen是个宝藏网站,多看看好看的网页设计,提升审美。还能在线拧魔方
  • 鱼皮编程资源分享:CodePen、JavaGuide、被删的前端游乐场

2023/06/21

2023/06/22

2023/06/23

  • 上午,研究微信自动回复AI,具体情况可转至文章《AI实践中的洞见:我的AI之旅》
  • 中午,解决了计组最后一块大问题:CPU与主存的连接;快速过了一遍数据库
  • 晚上,继续研究微信自动回复AI,发生了不少糗事,哈哈哈哈
  • 微信对话开放平台:微信对话开放平台 (qq.com),微信开发者的手册

2023/06/24

  • 面试官:说说Spring用到了哪些设计模式? (qq.com)
  • 曾经没太弄懂的动态代理,这次明白了 (qq.com)
  • 一个商城项目:电商项目系统
  • Docsify快速部署一个静态文档网站
  • 搞了一早上Docsify部署静态文档站点,昨天搞微信AI,原来配好的NODE_PATH环境变量路径变了,出现了docsify命令不是内部命令的问题
  • 配置好环境变量后,文档站点要么跑不起来,要么网速贼拉跨,拉取docsify的GitHub仓库代码也是报资源路径错误
  • 接着本地跑hexo服务时,hexo命令又找不着了,可能是前两天误删了mode_modules的缘故,我在原目录下重新安装并初始化hexo,正常部署博客站点了
  • 不过也不是毫无收获,我可以总结下流行Hexo、Hugo生成博客站点,Docsify、Vuepress、Dumi生成文档站点的基础操作
  • CodeSheep的《编程环境和软件工具安装手册》、《Linux速查备忘手册》很有帮助
  • 才发现Vitepress和Vuepress俩文档站点,大意了,不过这两位相似点很多,相对来说,Vitepress更加轻量级
  • 在生成Vuepress站点时,踩了好多node配置的坑,这里也会一并记录在文章《配置指南-掌握Node.js配置》中
  • 半个月前完成的数据库开发大作业实验报告,很有价值,写篇文章记录一番:《使用JSP构建JavaWeb项目–以数据库大作业为例》
  • AI太方便了,我用AI生成了文章《配置指南-掌握Node.js配置》和《使用JSP构建JavaWeb项目–以数据库大作业为例》的标题、副标题以及目录框架
  • 下午,报考全国计算机等级考试二级:Java基础
  • 晚上,完善《配置指南-掌握Node.js配置》和《快速生成文档站点》
  • 睡前总结待解决问题:快速安装Vuepress报错、宝塔终端远程连接服务器失败、VCN连接失败、SSH服务开启失败

2023/06/25

  • 上午,服务器开启SSH服务一直失败,试了好多解决办法都没用的
  • 简单记录一下经过吧:宝塔面板远程连接服务器时,终端连接失败 -> 尝试开启宝塔SSH服务,开启失败 -> 检查服务器SSH服务开启状态,是关闭状态 -> 修改/etc/ssh/sshd_config配置文件,检查开放端口号,尝试开启SSH服务,无效 -> 尝试各种方法,甚至是卸载重装SSH服务,仍然开启服务失败
  • 使用 方法远程连接服务器,不是root用户,甚至修改配置文件、重启服务都无权限
  • 在重置了服务器实例密码后,VNC总算正常连接了,不过还是没什么用,只要尝试开启或重启SSH服务,就会报如下错误:

image-20230625100319214

2023/06/26

image-20230626120841860

2023/06/27

  • 早上·,总结SSH服务启动失败的踩坑经历
  • 晚上,鱼皮专栏:玩转服务器,有时间实操一番

2023/06/27-2023/06/29

  • 疯狂备考计算机组成原理和数据库系统概论中

2023/06/30

2023/07/01

2023/07/02

2023/07/03

  • 上午,完善Node.js的配置踩坑经历
  • 下午,《疯狂Java讲义》Java集合部分
  • 晚上,尝试部署伙伴匹配系统
  • 记录:后端多环境实战 -> 配置多环境 -> 打包项目,检验多环境配置是否生效 -> 打包失败,解决java和javac版本不一致问题
  • 这个宝塔面板登录一直在转圈圈,好像还不太好解决

2023/07/04

  • 分别在掘金和CSDN发布了第一篇文章!
  • 掘金:宝塔面板安装教程 - 掘金 (juejin.cn)
  • CSDN:宝塔面板安装教程_回忆-如初的博客-CSDN博客
  • 新增文章《揭秘项目部署上线之路:流程、挑战与解决方案》,记录部署上线伙伴匹配系统的流程、所遇到的问题以及解决方法
  • 更加完善了《配置指南-掌握Node-js配置》、《大道至简:快速搭建博客与文档站点的终极指南》
  • 接下来的博客撰写任务有:静态网站托管、项目部署上线

2023/07/05

  • 上午,力扣,剑指offer75,做了两道
  • 下午,《疯狂Java讲义》Java集合部分完结
  • API接口平台第一期,项目搭建
  • 多了解计算机专业方面的考证和竞赛,个人赛优先

2023/07/06

2023/07/07

2023/07/08

  • 《操作系统(第四版)》
  • 《计算机是怎么跑起来的》
  • 联机轴心与同盟,比学习还累人

2023/07/09

2023/07/10

  • 《操作系统(第四版)》第三部分 进程 已过半
  • 加入编程导航算法村,加强巩固算法
  • 近期目标:快速完成API接口开放平台的开发

2023/07/11

2023/07/12

2023/07/13

  • 上午,继续学习SpringCloud,发现之前的微服务怎么都启动不了,下面是我的排查过程:
  • 原来学过的知识丢掉了,忘记开启Nacos服务了 ->
  • OrderSercice和UserService服务一直连接Nacos失败,经排查,发现是网络问题,把手机热点换成直连WIFI即可 ->
  • 服务注册成功,但数据库访问失败,修改成本地MySQL的用户名和密码后,仍提示:找不到这个主机。
  • 经排查,发现两服务配置中数据库的 url 配置如下:
1
url: jdbc:mysql://mysql:3306/spring_cloud_test?useSSL=false
  • 将mysql修改为localhost即可:
1
url: jdbc:mysql://localhost:3306/spring_cloud_test?useSSL=false

2023/07/14

  • 上午,《操作系统》存储管理
  • 中午,《计算机是怎么连接的》
  • 晚上,《操作系统》设备管理

2023/07/15

  • 上午,继续学习API接口平台,拉取SQL之父前后端源码,作大致了解
  • 《深度解析Web开发中的跨域问题》一文完成
  • 中午,持续学习SpringCloud微服务
  • 下午,学习了Nacos配置管理:集群、命名空间、热更新、Nacos配置文件优先级 ->
  • Feign远程调用:基本使用、自定义配置(配置文件/注解 + 类)、简化代码(继承/抽取)
  • 晚上,继续开发API接口平台,建立数据库表,完成前后端代码推送至
  • 初步完成文章《解决Git远程推送报错的终极指南》的编写

2023/07/16

  • 上午,编程导航算法通关村开营,了解相关事宜
  • (下午出门逛公园、吃烧烤、骑电动,回来继续打游戏)

2023/07/17

  • 《操作系统》设备管理 完结,做好思维导图
  • 实时操作系统_百度百科 (baidu.com)
  • 下午,SpringCloud Docker初步学习,做好思维导图
  • 算法通关村第一关-青铜挑战完成,《探索算法学习之旅:经验分享与解题思路》第一天开始了
  • 同步发布到了CSDN中,完成挑战
  • 单链表、双向链表的实现挺麻烦的,看看能不能啃下来

2023/07/18

  • 算法通关村,第三天
  • 上午,《操作系统》文件系统,完结
  • 晚上,算法通关村第一关-白银挑战
  • 《算法通关村第一关-链表经典问题:查找两链表的第一个公共节点》CSDN发布完成
  • 成功使用 WebBench 远程连接云服务器了,好多天了,可算解决这个问题了
  • 详情可以在《云服务器远程连接指南:各种方法详解与问题解决》一文中查看
  • 明天继续学习Docker,可以看康文昌老师的视频,继续了解下云开发、继续完成API接口平台、每日算法、博客/文档站点的搭建、美化

2023/07/19

2023/07/20

LOGO_01

2023/07/21

  • SQL 之父很好用😊
  • 上午、中午、下午,都在搞API接口开放平台,结果因为跨域问题,后端种不上cookie,待解决
  • 算法村第一期直播回放看完,巩固链表

2023/07/22

  • 早上,《操作系统》,巩固文件管理
  • 《计算机是怎么跑起来的》,XML是什么,SE是什么
  • 晚上,算法通关村第一关-双指针专题完成,同步发布至CSDN
  • 网络环境太差,Docker安装失败。

2023/07/23

2023/07/24

  • 中午,成功解决宝塔面板登录失败的问题,详见《宝塔面板:解放手动配置,轻松管理你的服务器》
  • 成功安装Docker:容器镜像服务 (aliyun.com)
  • 下午,搞微信对话开放平台,想调用API,未果
  • 着手上线伙伴匹配系统,可算部署成功了

2023/07/25

2023/07/26

  • 他奶奶的,一大早推送API接口开放平台代码到Gitee,给我本地代码删改了,用这个退出那个rabase模式了
1
git rebase --abort
  • 还是得多了解git
  • 上午,持续开发API接口开放平台
  • 下午,启动后端项目,竟然提示端口被占用了,虽然很疑惑,还是直接给它杀掉了:
  • 晚上《操作系统》,进程间的互斥和同步
  • Windows查看使用端口是否被占用-百度经验 (baidu.com)

  • 真服了,晚上推送后端代码到Github,它把一周前的提交记录给推上去了,什么迷惑操作。。我还给他拉取到本地,把这两天写的代码全覆盖了。
  • 好不容易用Gitee,把之前上传的代码拉取下来了,打开IDEA又爆红报错。
  • 他妈的还是网络问题,才导致的依赖报错

2023/07/27

  • 算法通关村第一关完结,庆祝一下
  • API接口开放平台,接口信息的增、删、改、查功能开发完毕
  • 学习这个项目,顺带学习了签名认证、网络协议等知识
  • sdk接口是什么 • Worktile社区
  • 下午,《自顶向下 计算机网络》,是一本好书,挺难的
  • CSDN同步文章《绑定密钥对导致SSH服务异常》
  • 真的不想写接口信息增、删、改、查的后端校验逻辑😟
  • 晚上,首次在语雀创建自己的知识库
  • 手写链表反转的实现思路,明天再做吧

2023/07/28

2023/07/29

2023/07/30

1
阿里巴巴应用研发平台(Enterprise Mobile Application Studio,简称EMAS),是面向全端场景(移动App、H5应用、小程序、Web应用、PC应用等)的一站式应用研发平台。EMAS基于广泛的云原生技术(Backend as a Service、Serverless、DevOps、低代码等),致力于为企业、开发者提供一站式的应用研发运营管理服务,涵盖开发、测试、运维、运营等应用全生命周期。
  • 尝试让AI给我写一个漂亮的网页,太拉了,它写不成
  • 开通了七牛云对象存储服务,真好用,标准存储有10GB的免费额度,成功部署了我的 “第一个网站”

2023/07/31

2023/08/01

2023/08/02

  • 从零开发一个壁纸网站真的很有意义,我并不奢求这个项目能做到多大多强,至少踩过了一遍坑
  • 软件设计师,再过一遍考试大纲:
    • 数据结构与算法、数据库、组成原理、操作系统、计算机网络
    • 程序语言、面向对象
    • 系统开发、系统设计、标准化和知识产权
    • 多媒体
  • 算法通关村第二关 - 链表经典问题:链表相加、单链表加一、两两反转链表节点,同步至CSDN
  • 宝塔面板使用经验、博客搭建、跨域问题、Git远程推送报错,同步至CSDN
  • 着手开发 PicMemories 壁纸分享小程序,Day1
  • 完善《快速启动:开发自己的定制化-Spring-Boot-项目模板》
  • 《白话网络安全》
  • liyupi (程序员鱼皮) (github.com)

2023/08/03

2023/08/04

2023/08/05

2023/08/06

  • 老是纠结页面样式
  • 安装个umi,半天搞不好,这官网醉了
  • 晚上,Redis存储用户登录态有问题
  • 开发 PicMemories 壁纸分享小程序,Day5

2023/08/07

  • 早上,学习 Docker
  • 成功解决 PicMemories 校验用户、保存用户登录态的问题
  • 解决 hexo g 推送失败的问题
  • 立项第二个小程序:校园跑腿服务
  • 开发 PicMemories 壁纸分享小程序,Day6

2023/08/08

2023/08/09

  • 算法通关村第三关 - 数组基础,同步至CSDN
  • 备考软考
  • 开发 PicMemories 管理员页面,实现图片上传功能

  • 下午,定制博客页面
  • 开发 PicMemories 壁纸分享小程序,Day8

2023/08/10

2023/08/11

  • 算法通关村-双指针专题,青铜挑战完成

  • 软考测试,75分满分,做了半个小时,考了39

  • 《大话网络安全》
  • 《网络是怎样连接的的》
  • learn.lianglianglee.com/专栏/透视HTTP协议

  • 开发 PicMemories 壁纸分享小程序,Day10

2023/08/12

  • 上掘金,看好文,已收藏

  • 七牛云分类上传了壁纸,没有永久域名,空间30天后就会被释放
  • 点赞壁纸还没有作后端实现,今天玩爽了

2023/08/13

  • 上掘金,看好文

  • 《网络是怎样连接的》第二章完结
  • 可用壁纸已上传至七牛云

2023/08/14

  • 上掘金,看好文

  • 持续学习HTTP协议、计算机网络
  • 什么是以太网?以太网和WIFI的区别:以太网和wifi的区别 (baidu.com)
  • 晚上,《自顶向下 计算机网络》数据链路层完结
  • 正式确定现阶段目标:寒假前半个月开始背八股,海投简历,争取年后找到第一份实习!

2023/08/15

  • 上午,激情选课·(系统卡死进不去,血压飙升)

  • 中午,继续完善 PicMemories 壁纸分享小程序,Day11
  • 下午,《自顶向下 计算机网络》网络层,一半完结
  • 今天起,所有学习重心转向算法和项目,顺带了解计网、操作系统、Java基础、设计模式等基础知识,减轻学期压力 ✔
  • 学期末,背Java八股,复习项目,投简历,争取面试机会
  • 小林Coding图解系列,很有用:小林coding (xiaolincoding.com)
  • 晚上,算法通关村第三关,同步上传CSDN

  • CSDN 同步上传博客文章

2023/08/16

  • 掘金看文,Java基础

  • SQL 之母

  • API接口开放平台,持续开发
  • 下午,《自顶向下 计算机网络》网络层,完结

  • 小林Coding HTTP面试题

2023/08/17

  • API接口开放平台,持续开发

  • 帮兄弟整理了电脑,桌面整理和开始菜单美化

2023/08/18

2023/08/19

2023/08/20

2023/08/21

2023/08/22

2023/08/23

  • API接口开放平台,开发接近尾声,正在总结相关学习经验
  • 有关SpringBoot整合第三方服务的经验分享和踩坑记录,待完善
  • 有关Dubbo+Nacos实现服务注册、服务发现的代码演示,待完善
  • 有关API开放平台实现接口调用全流程解读,待完善
  • 有关抽象公共服务的实现方法,待完善
  • 【Maven从入门到精通】 03-Maven 的依赖、继承与聚合 - 掘金 (juejin.cn)

2023/08/24

  • 上午,完成了昨天遗留的任务

  • 成功推送API接口开放平台代码到GitHub代码仓库,我的这篇经验总结真的很有用:《解决Git远程推送报错的终极指南》

  • 完善我的GitHub、Gitee个人主页
  • 下午,聚合搜索平台开发
  • 总结下现阶段的任务:

    • 做好API接口开放平台、聚合搜索平台、伙伴匹配系统的开发、优化和知识点梳理,将来丰富简历
    • 做项目的同时,也要及时上传至GitHub/Gitee仓库,丰富提交记录,同时复习到Git的相关知识
    • 借助鱼友项目,了解WebSocket的使用方法,实现远程聊天通讯功能
    • 微信机器人(这个感觉拖好久了,不过问题不大,业余时间,培养点兴趣嘛)
    • 微信小程序的开发就先告一段落了,PicMemories的开发也停滞10天了,最后上传图片链接到七牛云对象存储之后就没管过了,惭愧惭愧
    • 博客的撰写、CSDN的同步发布一直在进行,很充实也很踏实。博客首页文章的图片还没有全部更新,抽时间搜罗点好看的壁纸
    • 算法通关村第一期,大部队都推进到第16关卡了,我还在第4关卡,每周四的算法答疑直播基本也不看的。不过这倒不是什么大问题,我只是埋头做项目和巩固计算机基础知识了,也没闲着,直播回放也可以开倍速嘛,只好是尽量规划好时间。这一块儿的话,计划到国庆节前,能把算法通关村第一期掌握熟练了
    • 再接一茬,最近做项目时,实现了公共服务抽取,有必要再熟悉一下Maven了,不过这也属于做项目吧
    • 学算法的目的,现阶段有三个:
      • 11月5号的软考中级:软件分析师
      • 计划中的寒假实习,应付笔试面试,或者现场手撕算法
      • 明年3月份的蓝桥杯算法大赛
    • 买了个荣耀平板,可以更方便、更舒服地巩固学习计算机知识了,那么我就总结下现阶段在平板上要学习的知识吧:
      • 技术摘抄 (lianglianglee.com):透视HTTP协议、大话设计模式等
      • 小林coding (xiaolincoding.com):图解计算机基础:计算机网络、系统、MySQL等
      • 微信读书-正版书籍小说免费阅读 (qq.com):《白话网络安全》、《网络是怎样连接的》、《计算机是怎样跑起来的》、《操作系统》
      • Java基础:大厂面试题、星球内的30天面试题挑战、Java面试题整理,这些我都整理好了,坚持学习就行
      • 敖丙:这家伙讲的东西浅显易懂,由浅入深,很推荐他的公众号文章
      • 掘金好文,我一般都是看关于项目或者Java基础的,电脑上看的效果会更好,不过也差不多
      • 本学期的学科也要掌握好:计网、操作系统、Java、Python、Linux、人工智能,把控好整体节奏就行
  • 差不多就这些了,好久没有这么清晰地罗列出自己的计划清单了,这样写出来后就感觉轻松了不少

  • 那他妈还愣着干什么?该学学,该玩玩,去他妈的操蛋生活

2023/08/25

  • 上午做算法、背面经

  • 中午做项目,备考软考

  • 晚上看技术文档,做总结

  • 下午,算法通关村第四关:青铜挑战-栈的实现方法已完成
  • 晚上API接口开放平台,引入统计图表
  • 上传代码至Gitee、Github仓库
  • 看看鱼友的项目

  • 卧槽,看了篝火项目的聊天室实现,目前是琢磨出使用Redis来实现消息发送接收,不过那密密麻麻的序列化和stream流属实看蒙了,还没有注释。

  • 看到了心宿二的博客项目,非常佩服:流火开发社区 (antares.cool)

2023/08/26

  • 算法通关村第四关结束,开启第五关:Hash的学习
  • 了解了Java多线程与并发编程
  • 完成Memory聚合搜索平台项目初始化

2023/08/27

  • 逛掘金,看好文,巩固Java基础

  • 备考11月软考,持续学习操作系统、计网、数据库、算法,面向对象、软件设计等知识很简单的
  • 继续开发Memory聚合搜索平台

  • 待总结:定时任务、Mybatis基础、Maven、Java爬虫

2023/08/28

  • 早上,备考软考:面向对象设计、UML图等
  • 中午,《自顶向下 计算机网络》应用层完结

2023/08/29

1
2
3
4
5
6
7
是的,爬虫可以分为两种不同的类型,即API爬虫和网页爬虫。

API爬虫是直接请求服务器的API接口,获取数据的方式。这种爬虫通常不需要解析HTML页面,而是发送HTTP请求,获取服务器返回的数据,一般是JSON或者XML格式的数据。你提到的"https://www.code-nav.cn/api/post/search/page/vo"就是一个例子,它是一个API的路径,用于获取相关的数据。

网页爬虫则主要是爬取HTML页面的信息。它通过发送HTTP请求到网页的URL路径,获取到返回的HTML页面源代码,然后解析其中的各种标签和内容。你提到的"https://www.xiaolincoding.com/os/10_learn/learn_os.html#%E5%85%A5%E9%97%A8%E7%B3%BB%E5%88%97"就是一个网页的URL路径。

两种类型的爬虫在实现上有一些不同,但都可以通过发送HTTP请求来获取数据。需要根据具体的需求和对应的数据格式来选择使用哪种类型的爬虫。

2023/08/30

  • 突然想明白自己的焦虑来源是什么了,现阶段无非就这些:

    • 学期任务,包括学校专业课程学习、计算机二级考证、软考中级、英语六级
    • 技术提升:为了提升硬实力,多做项目、看技术文档等,感觉这方面涉及的东西很多:算法、框架学习、Java基础、计算机基础
    • 实习计划:提升在同龄人中的竞争力,备战实习也令人头疼,管理好两方面:项目和八股,这就要加深巩固基础,实践操作
  • 所有的努力,都是为了将来找到高薪工作,做这一行业,10年内赚到别人30年赚到的钱

  • 现在的所有付出,现阶段都为了一个目标:明年秋招,拿到不错的实习offer,争取转正,拿下人生第一桶金

  • 时间过的是真快,转眼间大三,这么快就要考虑上班工作,成为一名光荣的打工人了。。

  • 《计算机底层技术》第一章
  • 《疯狂Java讲义》多线程
  • SpringBoot整合Mybatis,明天学习
  • 收集到软考备考资料,明确目标

  • Memory聚合搜索平台持续开发,Day3

2023/08/31

2023/09/01

2023/09/02

2023/09/03

  • 早上,着手备考Java二级
  • 鱼皮,Elasticsearch初学:[Quick start | Elasticsearch Guide 7.17] | Elastic
  • 算法通关村第五关,队列、Hash

  • 计网,小林Coding的TCP

  • 下午,打卡软考考点

  • 晚上,掘金,学习设计模式:23种设计模式详解 - 掘金 (juejin.cn)

  • 晚上,Ant Design Vue组件了解

2023/09/04

  • 星球,面经
  • 逛掘金,敖丙
  • 学习Elasticsearch基本语法
  • 逛星球
  • 流火社区

2023/09/05

  • 掘金

  • 完善API开放平台开发,解决如何根据不同URL,去调用后台不同接口
  • 算法通关第六关,Hash、队列完结

2023/09/06

  • 完善API开放平台开发

  • 做项目,自信起来了

  • 与小木见面,安装相关开发工具,交流答疑解惑

2023/09/07

  • 看面经,总结经验

  • 从今天开始,暂时不刷掘金网站了,全身心投入算法、面经、备考

  • GateWay网关 request.getHeader()中文参数乱码,待解决
  • 浅学Elasticsearch

  • 了解博客网站的主要功能:

    • 用户
    • 文章

2023/09/08

  • 上午,Java二级,45套题操作题,巩固Java基础

  • 又是明确目标、制定计划的一天,随便写写

  • 现阶段目标(计划):
    • 算法,算法太重要了,争取这个月月底通关算法通关村,然后持续每日力扣刷题打周赛

    • Java基础,看面经(星球面经、30天面试挑战题)

    • 项目:每日必做,持续更新、迭代、优化已有项目,具体想法:

      • 持续优化Memory接口开放平台,优化接口调用时的用户体验(接口数量、接口质量、页面优化等

      • 学习Memory聚合搜索平台,使用Elasicsearch实现聚合搜索

      • 优化伙伴匹配系统,从安卓版迁移到PC版,优化页面显示,重点是使用WebSocket实现聊天通信功能

      • Memory Blog博客网站,开发一个博客网站,功能主要是博客文章浏览、用户聊天通信,详细开发过程,在日后的开发文档中说明

    • 写简历、优化简历、持续更新迭代简历

    • 做好软考备考、Java二级备考、假期实习准备

2023/09/09

  • 上午,听千寻哥讲座分享,了解简历撰写、实习经验

  • 看面经、巩固基础

  • 做45套操作题,备考Java二级

  • 下午,算法通关村,层序遍历基础完成

  • 下午到晚上,伙伴匹配系统迁移PC端 -> **MemoryChat **开发Day1,进一步熟悉Ant Design Vue的使用

  • 备考软考,每日知识点打卡(设计模式

  • 小林Coding,计算机网络,数据包在网络世界的传输过程(客户端与服务端的通信流程

  • 睡前,给小木提点建议,交流答疑,确定学习方向,命运的齿轮开始转动

2023/09/10

  • 了解实习面试经验、租房经验

  • 了解BOSS直聘后端开发相关岗位,优化附件简历

  • TCP建立连接:三次握手;释放连接:四次挥手

  • 下午,算法通关村,层序遍历进阶完成

  • 做45套操作题,备考Java二级

  • **MemoryChat **开发Day2

2023/09/11

  • 做45套操作题,备考Java二级,已做十套
  • 小林Coding,复习巩固HTTP协议
  • 算法通关村,层序遍历扩展完成
  • 了解使用WebSocket实现在线通信
  • **MemoryChat **开发Day3

2023/09/12

  • 做45套操作题,备考Java二级,已做十四套

  • 算法通关村,深度优先(递归、迭代实现二叉树遍历)

  • 《自顶向下 计算机操作系统》网络安全

  • 《趣话计算机底层原理》之操作系统

  • 语雀文档,记录Java八股(热门),开展(新建文件夹),八股面试题网站,开搞
  • Redis常考面试题

  • **MemoryChat **开发Day4

2023/09/13

2023/09/14

  • 苍何哥的 113道Java基础很有用

  • **MemoryChat **开发Day5

  • 软卡知识点打卡

  • 看笔记,巩固复习Redis

  • 我发现我总会有那么1-2小时,头脑发热,码字的思路异常清晰 ✌✌✌
  • 搞 SpringBoot 整合Socket 服务实现实时通信,老难受了,好不容易有了眉目,但前端接收服务端转发的消息,让我很迷惑

  • 奶奶的解决了一天的BUG,不过把 Elasticsearch 和 Kibana 下载完成了

  • 今天好多东西都还没搞,算法,Java二级,计网、操作系统等等,明天再搞吧,确实没精力学了

2023/09/15

  • 实时双向通信终于测试成功,详情可见 踩坑记录 栏目的 双向通信调试成功

  • 简单了解QQ通信的实现过程
  • 中午,成功报名软考,等待审核中,还下载了个照片审核工具,挺好使的,自动裁剪成报名规定大小

  • 11月份软考缴费成功,开冲,他奶奶的
  • 算法学习对我来说真挺吃力的,二分查找的几个变式都能让我晕头转向

  • 做45套操作题,备考Java二级,已做二十五套

  • 睡前狂刷了会儿掘金,又学到了设计模式、Spring生命周期
  • **MemoryChat **开发Day6

2023/09/16

  • 又是全新的一天,是时候再次规划下短期目标了:

    • 首先就是Java二级,目前最重要的,每天保持刷题感,操作题要做,做熟练,两天内刷完45套,再反复过2-3遍

    • 昨天成功报名了11月份软考,170块大洋,现阶段每两天看一套历年试题吧,每天都要巩固知识点的,待Java二级结束后全身心投入软考刷题

    • 算法,计划是国庆之前拿下20关,现在想想还有点差距,最近在做项目、备考确实是压力较大,那就计划为国庆假期结束前,拿下20关了

    • 项目,目前最喜欢的项目MemoryChat,双向实时通信核心功能已实现,整体页面布局已改造完成,对这个网站的想法还挺丰富:

      • 用户交友组队、实时通信、发表博文、聚合搜索

      • 优化首页,在学习如何快速地设计那种大气的网站首页

      • 页面优化,对于审美欠佳的我来说,确实是一项艰巨的任务,思考如何设计的有个性、端庄大气

      • 这就是我的原创个人项目了嘛,两月前的梦想正在实现中 👏👏👏

      • 项目的核心功能要把握好:批量数据导入(并发编程)、相似度匹配计算、实时通信、聚合搜索
    • API项目优化、扩展思路:

    image-20230916083830164

    • 道阻且长,闲话少叙,开工
  • 昨天浏览器突然发病,瞬间打开20+窗口,电脑直接卡死被迫重启,刚做项目时发现数据库连接错误,还以为数据全没了,原来是数据库自动关闭了,重启就好了

  • 七牛云测试域名过期了,又没有备案域名,免费的对象存储也没了
  • 申请使用了腾讯云的免费对象存储服务,6个月,50GB,够用了。这个腾讯云还挺良心

  • 成功完成实时双向通信,他奶奶的,沉淀一下,**期待3天后的总结成功的 SpringBoot 集成 WebSocket 实现实时通信聊天 **

  • 又过了一遍小林Coding的 HTTP,混合加密、数字签名、数字证书是核心,明天巩固 TCP
  • Java基础、计网、操作系统、数据库、数据结构与算法、设计模式、Spring框架、软件工程、软件分析,持续巩固基础

  • **MemoryChat **开发Day7

2023/09/17

  • 上午,总结Java基础八股、MySQL八股,同步到语雀知识库

  • 中午,习中特plus PPT 完成
  • 下午,操作系统,巩固进程相关知识

  • 新增博客:《改变编码游戏规则:揭秘23种设计模式的魅力和实用性》
  • 成功安装 Elasticsearch、Kibana,看官方文档辅助学习

  • 巩固Maven、设计模式、Docker相关知识

  • Java操作题,35套,预计明天完结
  • **MemoryChat **开发Day8

  • 待实时双向通信基本问题及用户体验均解决后,再逐步完善笔记(预计一周之内)

2023/09/18

2023/09/19

2023/09/20

  • 备考软考,做往年真题

  • 学习 Elasticsearch

  • 复习巩固软考真题,八套

  • MemoryChat开发Day11

  • API开放平台的后台新接口已经有了想法,但整个项目结构还有问题:

    • 目前Gitee和Github仅远程推送了memory-api-backend的代码

    • 需要创建一个父工程,将memory-api-backend、memory-gateway、memoryClient全部远程推送
    • 明天尝试完成

  • 聚合搜索,学习了分词器、Java客户端操作ES,明天实现第二种灵活操作ES的Java客户端操作方法

  • 看掘金、看星球

2023/09/21

  • 设计模式、Linux

  • MemoryAPI,在线翻译功能接口,基本完成随机名言一句

  • 更新了博客的几张图片
  • 今晚上计划:

    • 聚合搜索,Java客户端操作ES,了解数据同步 ✔

    • 设计模式

    • 几道Java八股,Java二级后,全力备战软考

    • 备考Java二级,Java基础 ✔

    • 操作系统,计算机网络TCP ✔
  • 今天的笔记做的太多了,Spring整合WebSocket实现双向实时通信的流程,明天开始梳理
  • MemoryAPI项目结构还待整理
  • 一天之内,同时开发三个项目,哈哈哈

2023/09/22

  • Java二级 二刷十九套

  • bug菌的聊设计模式系列

  • 阿杆学长的 GitHub 参与开源项目教程,Spring加载Bean的九种方式s,自学拿 18K offer激励

  • 每日一套软考真题(上午/下午)
  • API接口开放平台,管理员页面待优化,增加二级菜单

  • 近期任务盘点:

    • Java二级二刷四十套

    • GitHub 参与开源项目

    • 软考中级大纲(全)每日过,一周之内过完

    • 使用 Logstash 完成MySQL、ES数据同步 ✔
    • 优化MemoryChat博客页面
    • 看 yes 大佬的 消息队列系列文章,强烈推荐
  • Java二级操作题二刷三十二套
  • Elasticsearch,数据同步,MySQL已完成,成就感满满,看起来MemorySearch项目完结指日可待
  • 看会儿技术文章,项目就先不做了,该同步的都同步上去

2023/09/23

  • Java二级二刷四十套
  • 【多线程系列】终于懂了 Java 中的各种锁 - 掘金 (juejin.cn)

  • 考虑写一篇博客,彻底搞清楚 I/O中的同步/异步/阻塞/非阻塞 + Java中的各种锁机制

  • 看面经看面经

  • 这几周都在疯狂执行备考计划,技术文章、简历优化、项目迭代、算法通关也都在同步进行
    • 但我发现只有亲手做过的项目、写过的博客、做过的知识总结,才能让我长久地安心
    • 那些面经、八股、基础知识,平时也只是多做了解,夯实基础
    • 但毕竟是一些理解性的东西,时间长了就容易忘
    • 果然,个人博客多做总结、学习新技术并能够运用到项目中,才是最大的快乐啊
  • MemoryChat:

    • 博客页面优化:
      • 如何实现每个博文绑定自己的Like、Collect、Comment,待解决
      • 博文应该带标签,点击对应标签,就可跳转至搜索的博文内容搜索结果
      • 那就是要开发一个博文查找功能,开发博文查找页面,根据输入字段,查询匹配title、description的博文
      • 待隔壁MemorySearch聚合搜索平台成功落地之后,会在MemoryChat博客社区中引入ES,进行快速查找
      • 开发博客编写页面,用户能够在线编写提交博文
      • 用户收藏夹:多个收藏集,集合中博文的排列列表与搜索博文的结果展示,设想一致(掘金就这么干的)
      • 评论功能,这个应该是核心,不过我肯定一样能轻松搞定
    • 队伍功能优化:
      • 队长可以发布任务(或者说公告),在消息栏中显示
      • 待优化完成用户私聊的所有页面优化、通信体验之后,考虑开发队内聊天
    • 私聊体验优化:
      • 当有聊天消息还未接收时,有消息提醒(可供开启或关闭这个功能)
      • 私聊双方的消息,不够有辨识度
    • 用户中心大厅优化
      • 将来计划把博客社区搞为默认首页,那用户中心是用来干什么的呢?(稍等一下,我问问AI)
      • 可以展示什么内容呢?介绍下这个网站的内容
  • 今晚计划:

    • 操作系统第四版,个人认为前四章写的非常好,有必要二刷,之后看小林Coding速通一遍 ✔

    • 网络是怎样连接的,写的也非常好

    • Java二级操作题四十套题,计划半小时内完成三刷,考前增强记忆,没准明天的操作题就是原题呢 ✔
    • 巩固复习算法通关村的知识,了解下力扣必刷题,继续埋头赶路 ✔

    • 项目的话,可以再考虑下MemoryApi接口开放平台的接口完善,最好可以完成ES的学习
  • 面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台

  • 我能不能在年前刷完力扣经典150题?这绝对是个严峻的挑战
  • 很荣幸,看了快速排序和归并排序,理解了他们的实现思想,但是编码实现对我来说难度还是很大

2023/09/24

  • Java二级已过(刚考完,过了)
  • 一周(国庆长假之前)过完软考大纲详细,Day1
  • 持续开发MemoryChat、MemoryAPI

  • 计划在一个月之内将所有项目优化完成(完成,全部完成)
    • 完善个人博客页面:博客导读
    • 完善Gitee / GitHub项目介绍,ReadMe文件
  • MemoryChat实时双向通信核心基本优化完毕,可以开始着手梳理业务流程了(我果然忘不了这件事)
  • MemoryChat博客社区着手优化
  • 面试官考我,单例类中为什么要使用volatile关键字?我表示…😏 - 掘金 (juejin.cn)

  • 目前有价值的博文系列:
    • 哪吒的SpringBoot系列
    • bug菌的聊设计模式系列
    • yes的消息队列系列
    • 操作系统、计算机是怎样连接的,好书
    • 小林Coding的操作系统、计网全系列
  • 他爷爷的,这个阶段一直搞这个页面样式,太伤脑筋了,看会儿书吧
  • MemoryChat博客页面优化,支持Markdown语法

2023/09/25

  • 软考中级大纲,数据结构与算法、计算机网络、网络安全,Day2
  • MemoryChat开发计划:

    • 使用Redis缓存热点消息(最近36h内的消息),数据库中存放所有消息
    • 使用 ES 来大幅提升博文检索效率
  • 把ES剩下的那点尾巴结束了,今晚把Memory聚合搜索平台完工了
  • 学习了 Jmeter 的基本操作流程
  • 防抖节流:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
抖和节流都是前端开发中常用的优化技术,用于控制事件的触发频率,提升用户体验和性能。下面分别介绍一下防抖和节流的概念和应用场景:

防抖(Debounce):
防抖是指延迟触发事件,在指定的时间间隔内,如果事件持续触发,则重新计时。只有在事件停止触发一段时间后,才会执行相应的动作。
应用场景:防止频繁触发的事件,如窗口调整大小、搜索框输入等。比如,在搜索框输入时,我们希望用户输入完毕后再触发搜索请求,而不是用户每输入一个字符就发送请求,这时候可以使用防抖技术。

节流(Throttle):
节流是指限制事件的触发频率,让事件以固定的速率执行,例如在 n 毫秒内最多执行一次。
应用场景:限制高频率触发的事件,如滚动事件、鼠标移动事件等。比如,在页面滚动时,监听滚动事件并执行相应的操作。但是由于滚动事件触发的频率非常高,如果每次触发都执行操作,可能会造成性能问题。这时候可以使用节流技术,设定一个时间间隔,在这个间隔时间内只执行一次操作,从而控制事件的触发频率。

一些常见的防抖和节流的实现方法包括:

使用setTimeout来设置定时器,并在指定的时间间隔后执行相应的操作。
使用underscore.js或lodash等工具库中的debounce和throttle函数来简化实现。

2023/09/26

  • yes 消息队列

  • TCP 三次握手、四次挥手
  • IP 基础知识,小林Coding
  • MemoryChat:优化通信消息气泡

  • 高亮显示不好搞,再想想

  • 今晚计划:
    • 聚合搜索高亮显示搞定,之后就可以作博文搜索了
    • MemoryChat解决之前遗留下来的所有Bug
    • MemoryAPI接口开放平台,简单优化一下页面,可以多调通一个接口 ✔
    • 今晚就搞项目吧
  • 聚合搜索高亮显示的后端代码写不了,逻辑混乱,暂且不做了

2023/09/27

  • 我们经常使用到QQ、微信等聊天软件,那么这种通信功能是怎样实现的?底层使用了什么样的技术栈呢?

  • 请从一名开发者的角度,详细说明一下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
QQ、微信等聊天软件的通信功能是通过客户端和服务器之间的实时通信来实现的。从开发者的角度来看,实现这种通信功能需要使用以下技术栈:s

前端开发技术:前端开发主要使用 HTMLCSSJavaScript 来构建用户界面,并通过 Web SocketAjax 或者其他实时通信技术与服务器进行数据交互。

后端开发技术:后端开发主要使用一种或多种后端编程语言,如 JavaPythonC# 等,配合相应s的框架和数据库来处理客户端的请求,并与多个客户端进行通信。

实时通信协议:为了实现实时通信,常用的协议包括 WebSocketLong PollingServer-Sent Events 等。WebSocket 是一种在客户端和服务器之间建立双向实时通信的协议,它能够提供更低的延迟和更高的效率。

数据库:为了存储用户的聊天记录、好友关系等数据,通常使用关系型数据库(如 MySQLOracle 等)或非关系型数据库(如 MongoDBRedis 等)来进行数据持久化存储。

服务器端技术:服务器端采用类似于Web服务器的架构,通过处理客户端请求和响应,实现实时消息的传输和应答,保证消息的可靠性和低延迟。常用的服务器端技术有 Node.jsASP.NETSpring 等。

安全性和加密:在通信过程中,为了保护数据的安全性,通常使用 SSL/TLS 打造安全的加密通道,确保数据在传输过程中被加密和保护。

综上所述,QQ、微信等聊天软件的通信功能涉及前后端开发技术、实时通信协议、数据库、服务器端技术以及安全性和加密等方面的技术栈。开发者需要根据具体需求选择合适的技术来实现通信功能,并确保数据的安全性和稳定性。
  • 欢迎 - Qi-API 接口开放平台 (qimuu.icu)

  • MemoryAPI 接口开放平台,首页优化完毕,优化接口广场,提升用户体验
  • MemoryChat,基本解决之前遗留下来的Bug,接下来开发评论功能、聚合搜索
  • yes 消息队列

2023/09/28

  • 《程序是怎样运行的》

  • 《白话网络安全》

  • 《操作系统》

  • 软考备考 路由协议 2023下半年模考
  • 今日计划:
    • MemoryChat评论功能基本实现:博文评论、评论嵌套
    • MemoryAPI接口开放平台,优化接口调用界面,提升用户体验
  • 过一遍软考大纲(易错100题),很轻松,直接拿捏
  • 再梳理一遍现阶段的目标:

    • 国庆中秋假期将近,应该持续做到的有以下几点:
    • 算法,算法,能否争取在国庆结束前,完成算法通关村的一轮学习
    • 项目,MemoryAPI、MemorySearch、MemoryChat核心基本完成,接下来持续更新迭代
    • 软考备考,做历年真题
    • Java基础八股文,框架八股文,持续迭代
    • 面经,星球面经
    • 在西安在线判题系统,OJ在线判题系统可以着手开始,进一步学习微服务、RocketMQ消息队列

2023/09/29

  • OJ在线判题系统的需求分析、架构设计、核心业务流程、实现方案等等,顺便复习UML 顺序图的写法

  • 奶奶的,合并提交真的令人抓狂

  • 技术摘抄 (lianglianglee.com)
  • HTTPS、Nginx、IO多路复用 epoll

  • CDN:

    • 全局负载均衡、缓存代理(管理、监控、日志、统计、计费)
    • 缓存静态资源
  • HTTP2 解决 HTTP 的队头阻塞问题,WebSocket 优化 HTTP 的 “请求 - 应答” 通信模式

  • HTTP 真他妈有趣,强烈推荐这个系列:透视HTTP协议 (lianglianglee.com)
  • API 页面优化确实难受,慢慢来吧
  • 记录下每天要做的:

    • 软考中级备考
    • 算法,150题
    • 技术文章
    • 优化项目

2023/09/30

  • 算法通关村,字符串常见问题,下午同步至 CSDN

  • 实战指南:使用Spring-Boot集成WebSocket实现前后端实时通信 基本完成
  • HTTPS:SSL/TLS,解决 HTTP 报文被窃听、中断、篡改、伪造等问题

    • 窃听:对称加密(DES 3DES AES ChaCha20)、非对称加密(DH DSA RSA ECC)、混合加密
    • 中断、篡改:摘要算法(MD5 SHA-2)、数字签名
    • 伪造:数字证书、CA
  • 下午胡乱写了好几封时光邮件,随它去吧

  • 完全优化了实时双向通信体验

  • 这个ES的高亮显示何时才能完成呢?
  • 继续记录每日必做:算法、软考、技术文章、项目、八股

  • 他爷爷的,国庆就应该比平常放松一些,要不然扛不住了

2023/10/01

  • 全新的国庆假期计划:门面计划
    • 完善代码托管平台上(Gitee / Github)各个项目的简介

    • 完善个人博客,页面优化(壁纸换新)、内容持续迭代

    • 完善个人简历,简历项目目前写两个:MemoryAPI 接口开放平台MemoryChat 通信交友平台

      • MemoryAPI 接口开放平台 待优化的点主要有:页面优化(提升用户体验)、支付系统(全新的实践)
      • MemoryChat 通信交友平台 待优化:聚合搜索消息队列(系统学习 MemoryBI智能后,另作优化)、点赞、评论功能
    • 算法:完成算法通关村的第一轮学习,并立刻开始 力扣150题

    • 每日一套软考真题、知识点背诵
  • 软考知识点记忆很流畅,已经慢慢形成体系了(在此打卡):

    • 软件设计 ✔
    • 计算机网络 ✔
    • 网络安全 ✔
    • 面向对象基础 ✔
  • 同步近期的算法通关村学习成果到CSDN中
  • 了解海量数据场景下的热门算法、图的相关概念和算法
  • 四大经典刷题思想:贪心、回溯、滑动窗口、动态规划
  • 智能 BI 平台学习,Day1

  • 今天把这聚合搜索搞定了(终于把高亮显示搞定了,虽然是拿别人的代码,不过总算搞清楚原理了)
  • 疯狂优化了多篇博文、使用腾讯云对象存储服务托管了 Gitee/Github头像、个人博客首页、头像、简介
  • https://memory-1318574676.cos.ap-nanjing.myqcloud.com/memory-chat/memory.jpg
  • 着手优化个人项目简介:项目回顾 - 实践经验和收获总结

  • 今晚(近期)计划:
    • 消息队列专栏
    • 优化个人博客门面、探索我的个人博客

    • 优化各项目架构设计、技术栈、项目背景

  • 明天过一遍 Linux 基础

2023/10/02

  • 今日任务盘点:
    • 复习巩固 Linux ✔

    • 通关算法四大思想:贪心、回溯、滑动窗口、动态规划 ✔

    • 软考备考,再做一套试卷(2021)✔
    • 优化个人博客门面:探索我的博客世界 - 个人导读 ✔

    • 背背面经

    • 看星球,思考项目的优化点,各项目架构设计、技术栈、项目背景

  • 软考知识点记忆很流畅,已经慢慢形成体系了(在此打卡):

    • 软件设计 ✔
    • 计算机网络 ✔
    • 网络安全 ✔
    • 面向对象基础 ✔
    • 数据结构 ✔
    • 面向对象进阶(设计模式、UML)
    • 知识产权 ✔
  • 经过精心优化,个人导读:探索我的个人博客 已成为我用心打造的项目简介之一。

image-20231002165557551

2023/10/03

  • 简单回顾了 Linux 常用命令:

  • 解决了昨天的问题:前端框架莫名其妙报错了,其实是因为我改动了项目所在文件夹的路径

  • 今日计划:
    • 快速初始化前端框架、做好框架瘦身、框架改造
    • 昨天的任务:面向对象进阶(UML图、设计模式)✔
    • 中午饭后,软考真题2020
    • 看星球,思考项目的优化点,各项目架构设计、技术栈、项目背景 ,优化各项目的门面,昨天的个人博客导读是个漂亮的开头
    • 玩,玩他娘的 ✔
  • 顺带优化了所有项目开发文档的标题、Typora使用技巧、新增功能测试文档、转载Maven相关博文
    • 进一步了解了 typora 的使用技巧
  • [UML] — 类图_Overboom的博客-CSDN博客
  • 再次复习巩固对称加密、非对称加密、摘要、数字签名、数字认证
  • 又一次完成了 Ant Design Pro的初始化,今晚就好好盘盘这个初始化,绝对是思路清晰的、全新的

  • 技术文章摘抄看上头了:Java面试题详解、Elasticsearch、HTTP,这个网站非常适合我

  • 最近的计划:

    • 完成 Linux 常用命令的巩固复习
    • 了解 Github 参与开源项目的步骤和技巧
    • 思考各项目的优化点,优化完成各项目的门面 ✔
    • 监控/调用OpenAPI 接口

  • 基本完成了各项目的主要功能、使用场景介绍

2023/10/04

  • 今天是不想敲代码的一天,多学学代码之外的知识吧

  • 搞定了68个常用 Linux 命令,10分钟的视频,写了俩小时 👏👏👏
  • 巩固 Java 基础,简单了解 ES DSL 查询语句语法格式

  • 晚上任务:

    • 每日软考真题 ✔
    • 力扣算法 ✔
    • 了解 Github 参与开源项目的步骤和技巧 ✔
    • 监控/调用OpenAPI 接口
    • 看几篇面经
  • 感觉学起来没啥动力,最近学习不能让我感到兴奋,把这种感受简单在此说明一下吧

  • 奶奶的,看鬼片看鬼片

  • 学习 12步通关求职面试、ES 知识体系详解、Java 核心面试技术精讲、RPC 实战与核心原理

2023/10/05

  • 进制转换:

十六进制转十进制:“个位” * 16^0 “十位” * 16^1 “百位” * 16 ^2,以此类推,将结果累加即可

二进制转十进制:“个位” * 2^0 “十位” * 2^1 “百位” * 2 ^2,以此类推,将结果累加即可

十进制转二进制:短除法(除以2),倒序从商开始,将余数依次排列

十六进制转二进制:没啥好说的,一位十六进制转为4位二进制

  • 他爷爷的,总算彻底搞懂对称加密、非对称加密、混合加密、摘要算法、数字签名、数字证书了

  • 图的关键路径(含多支交叉路径分离输出)_皮皮蜥的博客-CSDN博客
  • 图的关键路径(AOE网络)_叁羊TrSp的博客-CSDN博客
  • 程序员写简历指南(保姆级) (yuque.com)

  • 超级简历WonderCV - HR推荐简历模板,智能简历制作工具,专业中英文简历模板免费下载

  • 学习 智能BI平台的开发: Excel表的导入、分析
  • 在这个项目的学习过程中,学会如何调试AI、MQ

  • 持续备考软考、优化简历

  • 优化项目,建立项目定型:

    • Memory API接口开放平台:Gateway 网关、Dubbo RPC
    • Memory 缘忆交友社区:ES、Redis、MQ
  • Memory BI智能分析平台,day2
  • 浅浅学习 JVM、分布式数据库
  • 学习 BI 智能分析平台,让我更加拓宽了学习思路:
    • 最近的Ant Design Pro前端框架初始化

    • 系统领受了如何调用 AI 完成:根据用户提问,自动生成图表以及分析结论,这其中有很多值得学习的新知识:

      • 提问 AI 的技巧(四个技巧)
      • 如何在调用现有的 OpenAPI接口?(三种主流方法)
    • 实现AI生成图表业务的基本流程:
      • 构造用户请求
      • 调用鱼聪明 sdk 得到 AI 响应结果(指定生成内容的固定格式,如 Echarts 的图表代码格式)
      • 从响应结果中,取出需要的信息
      • 保存图表到数据库,返回给前端进行展示
    • 理解了 API 开放平台带来的便利,对其架构设计有了更深的理解

    • 自定义 AI 助手,做好预设,能让生成结果更加准确、符合预期

  • 今日任务最重要的,是巩固学习已经学习过的经典算法,并逐步完成 力扣 热门150题的挑战
  • 了解 JVM 核心知识、了解 Java 业务常见问题100例

2023/10/06

  • 软考备考 2019、2018,简单了解下下午题

  • 上传 memory-api-JavaSDK 到代码仓库
  • 今日计划:

    • 完成 BI 项目的第三期前半部分 ✔
  • 打通 BI 项目中调用 AI 生成智能分析图表即结论

  • 但是我的 Office 激活又失败了,明天解决

  • 最近软考备考感觉很完备项目也在持续跟进和优化,但是算法八股文整理落下了,心有余而力不足啊👏👏👏

  • https://articles.zsxq.com/id_29ha267gmflk.html
  • 再看一篇消息队列专栏:订阅关系一致性

  • 抓紧时间看两篇面经提提神,再留心下简历优化技巧
  • 基本确定简历排版:
    • 个人信息
    • 教育信息
    • 专业技能
    • 项目经历
    • 奖项荣誉
  • 今天又是充满干劲的一天

2023/10/07

2023/10/08

  • 巩固 Map 常用函数,了解 IDEA 使用技巧:注释对齐
  • 软考备考,2016,上午题有信心了,接下来备战下午题
  • 今晚实现 BI 智能分析平台的图表展示功能

  • 宝藏网站:Java 面试指南 | JavaGuide(Java面试 + 学习指南),绝对的宝藏网站
  • 未来还有很长的路要走,即使再有精力也学不完你想学的所有技术,适当取舍、适当妥协,适当娱乐。

  • 智能 BI 项目,day4 完成

2023/10/09

  • 早七点,晨跑20min

  • 杭州亚运会昨日闭幕,记录一下

  • 公众号看一篇英语阅读

  • 逛星球,做好每个阶段的计划:

    • 软考备考,发现我只有在上午时才精力充沛

      • 每日巩固上午题看冲刺大纲,争取把近5年的真题做2-3遍
      • 下午题今日提上日程,昨日已经摸清楚题型和考点了
    • 算法:真是块难啃的硬骨头,每日算法巩固算法通关村知识巩固,抓紧刷一遍力扣100题 / 力扣热门150题

    • 项目:智能 BI 项目完结后,继续优化各项目,以及 GitHub / Gitee 门面

    • 基础:每日稀土掘金必逛,补充基础

    • 面经:昨天逛掘金,发现宝藏面试题网站:**Java 面试指南 | JavaGuide(Java面试 + 学习指南)**

      • 现阶段,应该每日坚持看 5 - 7 篇面经
      • 再针对频繁出现的面试题,做总结、反复理解记忆
      • 提到面经,就应该想到逐步优化简历了,慢慢来
    • 英语:这个不用多讲,今日起,每日一篇外刊少不了

    • 其他

      • 适当娱乐,喜欢的电影解说游戏实况,少打游戏(针对竞技类游戏,这类游戏真的要少玩,很浪费时间)

      • 电影榜 TOP250,最近喜欢看恐怖片

      • 在学习技术之余,多阅读,多阅读,阅读真的能提升自己的思想境界,忘却尘世烦扰。

      • 相反,每天刷短视频只会让你变得更傻更迟钝
      • 每天能够静下心来阅读 25 - 30 min,对身心皆益

      • 经常张口不会讲话,提笔不会写字。这应该是绝大多数现代人的通病吧,相信每日阅读会慢慢改善现状

  • 光在这总结复盘 + 幻想是没用的,得拿出点真材实料来,干他娘的
  • 全新的栏目:《个人成长之路:计划演进与思想蜕变的见证》开启,这一步是我从未设想过的
    • 为什么要开启这篇博文的撰写,我已经在该博文前言中讲述清楚了,接下来就是各阶段任务目标梳理、思想感悟的撰写了
    • 大一那会儿还幻想过写部小说,记录家乡的童年生活,只可惜遥遥无期了,这篇栏目的开设也算是了却这个遗憾了
    • 我不想做一个呆呆的只会死读书的 “技术人”,我也要写自己的思想感悟,改善提笔忘字的窘迫现状
  • 优化博文标题、副标题,明确文章定位、博文所属分类、标签,这些工作可以提上日程了
    • 自定义一个AI小助手,顺便巩固下最近学习的提问AI技巧

    • 设定哪些 AI 呢?目前设想:
      • 提炼博文分类、标签
      • 整理文章,优化文章排版(就像之前的博文导读排版优化一样:小标题 + 小图标)
  • 不知不觉,我沉浸其中,思维像洪流般奔涌而出,一整个上午都是精力充沛的创作时光!
  • 奶奶的,一个总结我还得找 AI 优化,我的生活离不开 AI了 🤣:

image-20231009091852945

  • 下午,过了一遍软考大纲(全而精)的前半部分,巩固上午题,这是个好的刷下午题网站:
  • https://www.cnitpm.com/exam/4_2_1.html
  • 下午,巩固复习链表相关算法,着手做力扣 hot100 题

  • 计算机网络面试题巩固复习
  • 新增AI 小助手,使用小图标,优化各博文的简介

2023/10/10

  • 计算机网络 TCP 流量控制、拥塞控制、滑动窗口

  • 软考备考

  • 学习限流,限流的算法、限流的应用场景

  • 浅谈下最近的学习感受:
    • 做项目、写算法才是最根本的,对自己的提升是最实在的
    • 现阶段最重要的就是软考备考,做好每天的知识大纲复习、真题练手才是王道

    • 至于Java八股、技术文档,应该穿插于日常碎片化时间中,待软考结束后再加强这方面

    • 毕竟技术是需要终生学习、慢慢累积的的,不要急于求成,想着在短时间内提升巨大,无疑是异想天开

  • 每日软考上午题:软件设计师综合知识章节题库 - 信管网 (cnitpm.com)

  • 每日计划改变:
    • 每日做一遍上午题,每种类型的题目 20+
    • 每日做 1- 2套下午真题
    • 每日软考复习巩固完成之后,持续刷算法题,巩固题感
    • 百忙之中抽出时间来,完善项目、完善技术体系、记忆八股
  • 今晚任务:

    • 软考备考计划完成 ✔
    • BI 智能分析平台优化完善(加强安全校验分库分表 -> 数据存储、限流 -> 控制成本)
    • 结束链表算法复习(链表基础完结) ✔
  • Redission 实现限流出现了小问题,明天解决
  • 人格测试:https://www.16personalities.com/ch

2023/10/11

  • 实现高可用:限流、熔断降级、缓存、消息队列
  • 什么是 CDN?什么是负载均衡?

  • 数据库优化:

    • 读写分离:基于主从复制(MySQL 主从复制依赖于 binlog)
    • 分库分表:垂直分库(表)、水平分库(表)
      • 分布式事务分布式Id聚合查询
  • 今天看看能不能搞定十大排序算法

    • 额,简单学习巩固了冒泡排序、选择排序、插入排序、快速排序、堆排序
  • 更新 Gitee 博客仓库简介,更新仓库名:blog -> Memory Blog

  • 推荐阅读:十大经典排序算法总结 | JavaGuide(Java面试 + 学习指南)
  • 妈的,研究了一个小时快速排序,还是非常迷惑,感觉这个算法思路很清晰

    • 但是写好代码后,一路 debug,还是感觉流程跟想象中的不一样
  • 完成Memory BI智能分析平台 用户调用分析接口限流

  • 了解 API 网关基础知识

  • (安全认证、请求转发、负载均衡、日志记录、监控告警、限流、降级熔断、灰度发布、异常处理)

  • 分布式 CAP 理论

  • 一致性可用性分区容错性

  • 分布式 ID

  • 实现方式应用场景
  • 明天总结低网速状态运行服务

2023/10/12

  • 快速完成 人工智能课程 实验一

  • 用例图:详解 UML 用例图画法 & 用例说明方式 (baidu.com)
  • 完成两套软考下午的题目

  • 晚上做了三道数据流图大题,初步摸清考试套路

  • 了解(进一步巩固)JVM 内存结构:

    • 线程私有的:
      • 程序计数器
      • 虚拟机栈(Java 方法)
      • 本地方法栈(Native 方法)
    • 线程共享的
      • (新生代、老年代、元空间、字符串常量池、静态变量)
      • 方法区(运行时常量池)
      • 直接内存

2023/10/13

  • try-catch对性能的影响,已总结至语雀

  • SpringBoot 如何使用 JMH 进行性能测试_程序员徐师兄的博客-CSDN博客
  • 了解线程池

  • 今日待完成:

    • 人工智能实验、期末课题
    • 计网实验
    • C++实验
    • 操作系统实验
    • 软考下午题备战
  • 少看短视频,多看书
  • 软件设计师_一条小橘猫的博客-CSDN博客

  • 数据流图做了九套题了,接下来就是 E-R 图和 UML图了,持续备战算法

  • 学习Java泛型:

    • 泛型类
    • 泛型接口
    • 泛型方法:返回值、入参位置、方法体中
    • 个人感受:泛型很好理解:我们经常讲到一个对象实例的就是以类作为模板创建的,那么也可以讲一个普通类可以以泛型类作为模板;那么泛型是用来干嘛的呢,我们为什么要使用泛型呢?其实,所有的泛型类在编译后生成的字节码与普通类无异,因为在编译前,所有泛型类型就被擦除了。所以我们可以把泛型看作一个语法糖,将类型转换的校验提前在编译时,减少类型转换错误的发生,使编写的程序更加具有健壮性。

泛型是Java语言中的一项强大的特性,它允许在编译时指定类、接口或方法的参数类型,从而在编译阶段就能够进行类型检查。这样可以减少类型转换的错误,并提高代码的安全性和可读性。

通过使用泛型,我们可以在编译时捕捉到一些类型错误,而不是在运行时才发现,这样可以避免一些潜在的bug。泛型还可以增加代码的可重用性和灵活性,因为泛型类、接口和方法可以用于多种不同的类型,而无需针对每一种类型单独编写或重复编写相似的代码。

总的来说,通过使用泛型,我们可以在编写Java代码时更好地约束和使用类型信息,减少类型错误,提高代码的可读性和健壮性。

2023/10/14

  • 疯狂地刷了9套数据库实体联系图题目

  • 了解 JDK 8 - JDK 20 各版本新增核心功能

  • 了解乐观锁、悲观锁:

    • 悲观锁:悲观锁总是假设最坏的情况,认为在高并发情况下,共享变量每次被访问都会出现问题,所以每个线程在获取资源时都会加锁。激烈的锁竞争会导致线程阻塞和频繁的上下文切换,大大增加系统的性能开销,还可能引发死锁问题
    • 乐观锁:乐观锁总是假设最好的情况,认为共享资源被访问时不会出现问题,线程无需加锁也无需等待,不存在锁竞争和线程阻塞。只需在提交修改时确认该资源是否被其他线程修改了,这就是验证线程之间是否发生冲突了,一般采用版本号机制或CAS算法实现。如果线程提交修改频繁失败、频繁重试,同样会大大增加系统性能开销。
    • 乐观锁还存在 ABA 问题,即错误地判断要修改的资源没有被其他线程修改,可以通过追加版本号或引入时间戳来解决
    • 总体来说,悲观锁适用于写比较多的场景,避免频繁失败和频繁重试影响性能;乐观锁适用于写比较少的情况,避免频繁加锁影响性能
  • 下午了解下线程池、AQS的知识,再做软考UML图的练习、算法、BI在智能分析平台线程池实战
  • 学习BI图表分析异步化

  • 了解 MySQL 索引:索引优缺点、数据结构、聚簇索引 / 非聚簇索引、覆盖索引 / 联合索引等,这块内容不知道看了有多少遍了,但总是记不牢,毕竟每次只是看看,很少自己主动画图、测试去理解

  • MySQL 主要内容:索引、日志、事务、存储引擎、SQL语句执行过程等等,还需努力

2023/10/15

  • 刷了2套UML图的题目,巩固了解了常见的UML图和各设计模式的特点

  • 今日待完成:

    • 软考上午题目的持续巩固复习 ✔
    • 下午UML图的练习 ✔
    • BI 智能分析平台,线程池的实战 ✔
    • 人工智能期末课题,今天可以稍微看看 ✔
    • 操作系统、计网、人工智能的实验报告,今天新建个文件夹 ✔
    • 多看几篇文章,可以考虑写几篇新博文了
  • 解释一下 include、extends、generalize 的含义
  • 尝试调用文心一言的API接口,找时间研究研究

  • 学习 Redis,像新手一样从头开始了解 Redis:Java开发 - Redis初体验_CodingFire的博客-CSDN博客
  • 刷 CSDN ,看到一位大佬:CodingFire_iOS日常开发,Core Animation,Flutter实用开发技巧合集-CSDN博客

2023/10/16

  • 今天上午,软考模拟考试开通了,可以模拟测试了

    • 了解到大题四道必做题:数据流图、实体联系图、C语言代码、Java算法题
    • 两道选做题:C语言算法题、UML类图
  • 蓝桥杯也开始报名了:Java软件开发B组

  • 软考备考,持续做题
  • 妈的,用 Python 画个外国版图,还得上网下载对应国家的地理数据文件

  • 计划给我的个人项目都做一个简单的首页页面,像这样的:

image-20231016204430657

image-20231016204505500

  • BI 智能分析平台:图表生成异步化

  • IP 、网络安全八股文
  • 人工智能课题作业、计网实验、操作系统实验,新建文件夹
  • 这里预定明天的计划:

    • 软考备考是肯定的,C语言算法大题 + 上午题巩固练习 ✔

    • Java 八股巩固 ✔

    • 计算机网络八股 ✔

    • 聚合搜索平台首页开发(尝试)

2023/10/17

  • 学习 IP 相关知识

  • 备考软考,Java 应用题,难度不大
  • 了解消息队列、es

  • BI 智能分析平台,RabbitMQ 实战

  • 软考C语言算法题,应该考虑花时间看看算法通关村的四大算法思想:

    • 贪心、回溯、动态规划、滑动窗口

    • 十大的排序算法:复杂度,代码给他背下来
    • 应付这次软考算法题,明年蓝桥杯
  • 奶奶的,看了一个小时动态规划青铜挑战,云里雾里,但总归还是有点作用的

  • 今晚计划:

    • 看《生死疲劳》✔
    • 软考上午题 + 下午题练习,知识点巩固 ✔
    • Java 八股随便看看(第一轮面试题,很基础,看的养眼) ✔
    • 计网八股 (计网基础、网络安全、IP)✔

2023/10/18

2023/10/19

2023/10/20

  • 预定明日任务(20号):

    • 完成昨日未完成的任务

    • 完善个人博客
  • 今天上午啥都不干了,就磕这个设计模式
  • 唔,一上午 + 一中午,巩固复习了常见的设计模式 17 种

  • 优化下个人项目的目录结构,从 BI 智能开放开始

  • 下午学习网络和网络安全

  • 玩玩讯飞星火 API 调用,测试 Python 和 Java SDK

  • 学习了一下午讯飞星火大模型,下载了官方的 SDK ,成功调用了讯飞星火API接口
    • 这让我对自己的 AP接口开放平台的优化思路更加明确了,好久了没有优化这个项目了,可以从以下几个方面作优化:

    • SDK 使用文档、开发文档、页面布局、丰富接口功能(类型)、明确接口的调用(参数)
  • 今晚能做到这些吗?

    • 软考基础知识巩固 ✔

    • Java 八股 ✔(过八股,顺带深入了解了JVM,这部分内容也值得写一篇文章)

      • 异常、泛型、反射、IO流、序列化、语法糖,注解、值得学习巩固
    • 计网 八股 ✔(TCP 还差流量控制、拥塞控制、粘包、拆包、超时重传机制

    • 算法 动态规划 中级

    • 做一套软考下午题 ✔(贪心思想的区间问题:判断区间是否重叠、合并区间

    • 个人博客完善

    • 《生死疲劳》

    • 《V世代》✔

  • 今天又看到鱼友分享秋招上岸经验了,回头好好看看
  • Java技术栈的内容还是挺多的

2023/10/21

1
2
3
4
5
6
7
8
9
WHILE()
DO{

}ENDDO

IF(***AND***)
THEN
ELSE
ENDIF

2023/10/22

  • 今天是 DXMJRHKZHYT,纪念一下

  • 学习了贪心算法的经典问题:判断区间重合、合并区间、插入区间
  • 软考上午题稳了,多背知识点,做做题,中心还要放在下午题

  • java线程池ThreadPoolExecutor类使用详解 - 掘金 (juejin.cn)
  • 时隔半个月,成功更新一篇博文:《Java线程池大揭秘:揭开并发编程的神秘面纱,让你的程序快到起飞》

  • 最近一直在忙着备考软考,当然也有在学习项目 + Java 八股 + 算法练习,但是强度相较于之前来说下降了不少

    • 目前的想法是每天备考软考的时间尽可能缩短

      • 倒也不是白烂了、不重视了,主要是这考试不是很有含金量,我报名除了为了拿证书
      • 最主要的目的还是想着通过这门考试,比自己多学一点东西
      • 备考过程中,我对计网、操作系统、数据库、设计模式等等内容掌握得更加牢固,目标达成了
    • 是时候应该把重心转移到项目上来了,那我为什么要做项目呢?

      • 当然是为了寒假实习了,有两个不错的项目,就能争取在本地拿下人生中的第一份实习了
      • 拿下实习当然要记忆八股了,算法也不可少,当然算法更多地是服务于明年的蓝桥杯 + 暑期大厂实习招聘
      • 找实习也好,找工作也罢,首要的是当然是做好简历,简历是块敲门砖,是对自己实力的最好证明
      • 优化简历:优化简介、个人博客、在校经历、个人优势、项目经历
    • 就是这些了,废话少说,早点做起来才是最重要的
  • 晚上
    • 学会儿算法 (贪心的区间问题,已搞定)✔
    • 备考软考 ✔(面向对象
    • 总结线程池 ✔(初始框架完成,算是我的第一篇真正的技术博文,只有亲自尝试写一篇技术博文,才能体会到作知识分享的难处
    • 记忆八股 ✔(Java 中的值传递、序列化与反序列化
    • 思考项目优化点,完善项目并写好项目简介 ✔(同步个人项目回顾的项目简介到 Gitee 仓库,挑选展示了自己的精选项目

2023/10/23

  • 上午洗了衣服,简单收拾了一下

  • 领了一份软考摸底测试卷,下午看看
  • 上了一天的课,基本没啥功夫码字,在教室只能就着手机看看文档了

    • Redis 持久化(AOF、RDB,再多看几篇就可以动手写一篇有关Redis的博客了:Redis从安装到实战的系列经验分享

    • 也是奇怪,用了这么久的Redis,也没好好写篇博文沉淀一下 ✔

    • 说到Redis安装,这几天考虑学习使用 Docker 管理软件,一键完成安装配置,顺便把以前学过的知识捡起来

    • SDK 的开发流程,看了鱼友的打卡记录,今晚可以尝试再实操一遍 (可以最近尝试操作一番,前提是要拥有一个企业微信机器人

    • 算法,今晚继续学贪心,再回顾反转链表的算法题,能看多少看多少了,水水课(今天语雀挂了,哈哈哈)✔

    • Java 八股:异常、泛型、反射、IO流、序列化、语法糖,注解过一遍(今天晚上过一遍反射的编码操作

    • 最近可以再巩固下 MQ 相关知识,实操一遍 RabbitMQ

    • 这几天也是慢慢地把学习重心从软考备考转移到技术学习、项目开发上了,技术才是硬道理

    最近,我逐渐将学习的重心从软考备考转移到技术学习和项目开发上。我深知,只有掌握过硬的技术,才能在竞争激烈的市场中立足。因此,我决心专注于提升自己的技术实力,为未来的挑战做好充分准备。

    注:AI 优化还是一如既往地优雅

  • 找时间再看看讯飞星火提供的 SDK 调用,看看人家的文档,取取经

    • 也要开始考虑逐渐提高个人项目的完成度和扩展度

    • 软考结束之后,所有的压力都来到寒假实习上了:项目、八股、算法、博客、简历

2023/10/24

  • 今天是 1024 程序猿节,纪念一下

  • 上午巩固复习了 DHCP、DNS、域名相关知识,这部分是真的零碎

  • 看 Java 八股,巩固复习:

    • 反射机制
    • 代理模式:静态代理、动态代理(JDK 动态代理实现、CGLIB 动态代理实现
    • 序列化
    • BigDecimal
  • 今天接着完成昨天的任务
  • 更新博文的框架结构:

前言:破冰、揭幕、引语、序章

正文:思想火花、思维碰撞、脑力激荡、华章绽放、精髓所在、娓娓道来、见解独到

总结:锦绣收官、画龙点睛、醍醐灌顶、落笔成章、亮点集锦、精华提炼

  • 总结 Java 进阶知识

  • 新增两篇博文:《Java终极冒险:从基础到实战,解锁Java的神秘密码》《Redis风暴:从原理到应用,一探内存中的数据奥秘》

  • 尝试 win10 安装 Docker:

  • 晚上学习了 Java 并发编程,大致过了一遍

  • 新增博文:《构建高可用系统:策略之匙,解锁数字世界无障碍之门》

  • 明日任务预定:

    • Docker
    • Rabbit MQ
    • 限流
    • 本地起一个 Redis

2023/10/25

image-20231025170909851

  • 今日任务:

    • 完成 AOP 实践 + 总结 ✔

    • 尝试安装 RabbitMQ,首先要安装 Erlang,先完成别的任务吧
  • 待完成博文:
    • Java 对象与 JSON 之间的转换
    • 限流
    • 注解
    • Docker
    • JVM 内存布局
  • 逐步优化各篇博文的页面优化,注意上传博文使用到的本地图片

  • 本来白天没什么心劲学习的,但还好在从下午开始找回状态了,也算是超额完成任务了,明天也要记得学习算法啊

2023/10/26

  • 本来是平平无奇的一天

    • 上午在课上新建了计网、操作系统的实验报告文件夹 ✔
    • 巩固了软考下午题知识
    • 中午有个全国大学生职业规划大赛,犹豫了一中午,他妈的,爷冲了 ✔
    • 这周周末赶快搞定蓝桥杯报名事宜 ✔
  • “迈出第一步有多困难?”

  • 我想要这个!

image-20231026154520267

  • 软考复习 UML 类图设计模式,开始第二轮复习

  • JSON 字符串Java 对象之间的转换

2023/10/27

  • 软考备考二轮复习,1 / 3
  • HTTP 八股巩固复习

  • 总结职业规划报告大纲
    • 其实没那么难,把 自己做过的事 + 亿点思想感悟 结合就可了
  • 今天中午完成职业生涯规划发展报告,晚上设计相应 PPT

  • 下午:

    • 职业生涯规划报告初始化 ✔
    • 软考下午题一套 ✔
  • 昨日遗留的待完善博文:
    • Java 对象与 JSON 之间的转换 ✔
    • 限流
    • 注解
    • Docker
    • 锁 ✔
    • JVM 内存布局
  • 这两天高强度广泛阅读博文,涉猎 JUC、JVM、消息队列、Redis、Java 特性(反射、代理)、SpringBoot AOP等等内容,确实是收获颇多
  • 最近开始按照专题专攻来学习:

    • JVM
    • JUC
    • Redis

2023/10/28

2023/10/29

  • 完善职业规划报告,计划找时间去试读几遍

  • 下午巩固复习软考,明天准考证就开放打印了

  • 今日任务:
    • 基本完成 职业规划报告的编写,完成 生涯发展报告.pdf生涯发展展示.ppt
    • 高并发 40 讲 ✔
    • Java 并发编程八股文 (Syncronized关键字、Valatile关键字)✔
    • 有关链表的算法快速复习一遍
    • 代理模式 CGLIB 总结完结(又要推到明天了,今晚需要构思 职业发展报告的 PPT 写法)✔
    • 软考上午题目巩固 + 下午题一套 (快速地过了做过的 20+ 套题目,下午题明天看吧,看恶心了)✔
  • 最近的计划被职业规划大赛打乱了,简历、学习经历回顾全部都提前了两个月

2023/10/30

  • 软考考点已出(山西财经大学),打印准考证,最后一周复习冲刺

  • 生涯规划展示 PPT 制作开始

  • 软考上午题巩固复习,1 / 2 ✔
  • 今日待完成:
    • 软考下午题
    • PPT ✔
    • 代理模式 CGLIB 总结完结 (已了解原理,待编码实现)✔
    • 有关链表的算法

2023/10/31

  • 上午任务:
    • 软考上午题巩固 ✔
    • 生涯规划 pdf + PPT 完结 ✔
  • 下午:
    • 软考下午题巩固(2019年两套下午题完成)✔
    • 初步完结演讲稿 ✔
    • 实习项目初步计划为聚合搜索平台+接口开放平台
      • 这周可以抓紧熟悉业务流程,想清楚扩展优化点+面试要点,下周开始着手优化
    • Java并发编程八股持续推进
    • 计算机网络八股持续推进
    • 今日势必拿下链表相关算法(今明两日熟练掌握链表相关算法题)✔
      • 获取第一个公共子节点(Hash比较法、集合比较法、压栈法、差值法)✔
      • 判断回文链表(压榨法、出栈一半法、反转链表法)✔
    • 下一步计划:Java集合相关八股,MySQL数据库相关八股,ES,Gateway,Dubbo相关八股
  • 今日额外时间:
    • 稍微构思简历+高并发40讲 (主从复制、分库分表)✔
    • 软考准考证记得打印 (妈的,还是跑了一趟萌蚤云印)✔
  • 今晚在操场坐了一会儿,又稍微熟悉了下演讲稿

2023/11/01

  • 完成生涯规划报告文字版 ✔

  • 《吊打面试官系列》从源码全面解析 ThreadLocal 关键字的来龙去脉 - 掘金 (juejin.cn)
  • 高并发 40 讲:

    • 分库分表ID:全局唯一、算法简单、单调递增、业务含义,雪花算法(Snowflake)✔
    • 缓存:**提升访问速度、缓存的分类、缓存的不足 **✔
    • NOSQL:提升写入性能、提升扩展性
  • 下午任务:
    • 链表算法:

      • 合并两个有序链表、合并K个有序链表✔

      • 寻找中间节点、寻找倒数第K个元素、简单的合并链表、旋转链表 ✔

      • 删除指定节点、删除倒数第K节点、删除重复节点、反转链表(明日任务)
    • 软考下午题 (2021 上半年)✔

    • 博文 ✔

    • 聚合搜索平台着手优化()

    • JUC 巩固学习:
      • 线程基础、Synchronized 锁优化、自旋锁、锁撤销、锁升级、死锁、CAS ✔

      • 虚拟线程、Future 接口、线程池、ThreadLocal ✔

      • AQS 原理(了解,核心思想、资源共享方式、常见同步工具类)✔
      • Atomic 原子类(具有原子操作特征的类,了解)✔

      AQS 核心思想是,如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并且将共享资源设置为锁定状态。如果被请求的共享资源被占用,那么就需要一套线程阻塞等待以及被唤醒时锁分配的机制,这个机制 AQS 是基于 CLH 锁 (Craig, Landin, and Hagersten locks) 实现的

      CLH 锁是对自旋锁的一种改进,是一个虚拟的双向队列(虚拟的双向队列即不存在队列实例,仅存在结点之间的关联关系),暂时获取不到锁的线程将被加入到该队列中。AQS 将每条请求共享资源的线程封装成一个 CLH 队列锁的一个结点(Node)来实现锁的分配

    • 计网八股

img

2023/11/02

今日计划盘点:

Docker 使用:Java开发 - ELK初体验_java elk_CodingFire的博客-CSDN博客

明天待完成:

  • Java 集合
  • CompletableFuture 详解
  • 大纲全而精 第三轮复习
  • ES 语法复习巩固
  • 高并发 40 讲(缓存
  • 算法

2023/11/03

软考备考 倒数第二天(今晚过软考大纲 全而精,第三轮复习)

Java 集合

高并发 40 讲缓存),感觉最近可以罗列下看这个技术专栏学到了些什么

算法删除指定节点、删除倒数第K节点、删除重复节点、反转链表(遗留))✔

  • 妈的,删除重复节点给我绕进去了,链表要钻牛角尖还是很吃力的 ✔

ES 语法复习巩固

设计模式巩固软考备考,又简单过了一遍设计模式 demo 代码示例,考虑近段时间补充剩下的设计模式的 demo 代码示例)✔

之前一直在掘金刷博文,每天看一点、多学一点

最近一周开始,逐渐着手完善 Java 体系:Java 基础、Java 并发编程、Java 集合、Java 虚拟机等等

除此之外,高并发、高性能、可扩展方面也有所了解和持续学习推进

后续会逐渐完善 MySQL 数据库、Redis 缓存、Spring 技术栈等,我已经逐渐开始沉淀了

这样每天知识进大脑的感觉,令我非常安逸

软考前的最后两天,也准备了长达四个月,希望能一次过,在软考结束之后,所有学习重心都要放在项目优化和算法磨练上

算法学习很漫长,目前的想法是再次快速过一遍算法通关村基础的题目,再直接看力扣150题解,看算法佛脚

项目优化扩展也很重要,目前计划在双十一入手阿里云服务器,挺便宜的,一年就 99 rmb

明天任务:简历

2023/11/04

今日待完成:

  • 软考前最后一天

  • 求职简历(基本完成,就差腾抄了)✔

  • 快速完成聚合搜索平台,开启接口开放平台

  • Java 集合完结,MySQL 启动(基本过了一遍,但自我感觉只是掌握了皮毛)✔

  • 计网 HTTP、TCP 巩固复习,UDP 启动

  • 算法:
    • 链表反转、链表区间反转(穿针引线法)、链表相加、单链表加一 ✔
    • 我终于领悟到虚拟头节点的作用了:头插法构造链表
    虚拟头节点

    newNode.next = ans.next;

    ans.next = newNode;

    newNode.next = head;

    head = newNode;

之前还在纠结要不要做 Java 知识分享,现在的倾向是:不需要

今晚目标:算法、ES、软考下午(?),计网八股

专业技能:

熟悉 Java 知识(如集合类、异常处理、反射),能熟练运用 Lambda、Hutool、HTTPClient、Apache Utils 编程

熟悉 SSM + Spring Boot 开发框架,能够使用 Mybatis Plus + Mybatis X 自动生成基础的 CRUD 代码

熟悉 MySQL 数据库及库表设计,能够通过创建索引、Explain 分析等方式优化性能

熟悉并实践过多种设计模式,比如门面模式、适配器模式、注册器模式、代理模式

掌握并发编程,能够使用 CompletableFuture 等 JUC 类、自定义线程池实现并发和操作异步化

掌握 JVM 内存模型、JVM 垃圾回收(垃圾回收算法、垃圾回收器)、类加载过程、类加载器等知识

熟悉 Redis,实践过 Redis 的分布式缓存、分布式 Session 登录、基于 Redisson 的分布式锁和分布式限流

熟练掌握基本的 Linux 命令(如文件内容管理、用户权限管理),具备在 Linux 环境下进行日常操作和解决问题的能力

熟练使用 Git、IDEA、ChatGPT、Swagger、Navicat、VMware 虚拟机等工具提升工作效率

  • 项目经历:

Memory 聚合搜索平台

Gitee 仓库:

项目介绍

基于 Spirng Boot + Elastic Stack (+ Vue3)的一站式聚合搜索平。用户可在同一页面集中搜索出不同来源、不同类型的内容,比如专栏文章、图片、视频等、在线用户信息,提升搜索体验

已经将多个项目(如Memory 接口开放平台)的数据接入该搜索平台,极大提升开发效率、降低了系统维护成本

主要工作

数据源获取:

  • 使用 HttpClient 请求离线获取外部网站的专栏文章,并使用 Hutool 的 JSONUtil 解析和预处理文章,最终入库
  • 使用 jsoup 实时请求 bing 搜索接口获取图片,并使用 CSS Selector 语法解析和预处理图片信息,最终返回给前端

为实现多类数据源的整体搜索,使用 门面模式 在后端对各类数据源的搜索结果进行聚合,统一返回给前端,减少了前端请求次数以及前端开发复杂度。并通过 CompletableFuture 并发搜索各数据源进一步提升搜索接口性能。

为提高聚合搜索接口的通用性,定义数据源接口实现统一的数据源接入标准;当新数据源要接入时,使用 适配器模式 对其数据查询接口进行封装,以适应数据源接口,无需修改原代码,提高了系统的可扩展性

为了更方便地管理 Elasticsearch 中的数据,自主搭建 Kibana 并配置 index pattern 和看板,实现对文章、在线用户信息等数据的可视化管理

自主搭建 Logstash 实现每分钟同步 MySQL 的文章数据到 ES,并通过指定 tracking_column 为更新时间字段解决重复更新的问题

  • 个人优势:

阅读官方文档学习:ES、Gateway、
有过从零到一、从编码开发项目到落地部署的经验,将所学到的知识都运用在项目中,不止步于知识表面,而是体现在实际运用中,让我更加深刻。

源码学习:Java 线程池

2023/11/05

简历 第一版 完成,争取在接下来的两个月内反复迭代

软考复习,最后5小时

软考结束,不论结果如何,新的阶段开始了

今天没有花很多时间来学习,不过晚上还是坚持刷刷算法题,想想接下来的安排

算法学习安排上了,今晚也没多大精力看八股了,就随便看看博文吧

接下来就要开始 MySQL 专题巩固学习了:

我算是发现了,为什么 JVM 、JUC 学起来很有成就感,感觉知识如泉涌般汇入大脑,那是因为我不仅单看八股文

  • 在看八股文之前,我就已经看过很多相关博文,积累了许多知识了

  • 而好的八股文网站,只是帮助我让我把学过的东西总结吸收了而已

  • 接下来的时间,我会继续 Java 集合相关博文的研读,同时技术文章摘抄也不能落下:

  • MySQL 45 讲、高并发 40 讲、ES

  • 数据库基础知识总结 | JavaGuide(Java面试 + 学习指南)
  • 项目,算法,简历迭代优化,开始吧

总结下最近学到的零碎的知识吧:

什么是持久层?

持久层就是对数据进行持久化操作的代码,比如讲数据保存到数据库、文件、磁盘等操作都是持久层操作。所谓的持久就是保存起来的意思。对于 Web 应用最常用的持久层框架就是 JDBC、Mybatis、JPA

盘点常见的校招术语

HR、HC、OC、A、BASE、开奖、白菜、SP、SSP、八股文

银弹

银弹(英文:Silver Bullet),指由纯银质或镀银的子弹。在欧洲民间传说及19世纪以来哥特小说风潮的影响下,银色子弹往往被描绘成具有驱魔功效的武器,是针对狼人、吸血鬼等超自然怪物的特效武器。后来也被比喻为具有极端有效性的解决方法,作为杀手锏、最强杀招、王牌等的代称。

2023/11/06

高并发 40 讲:

  • 解决缓存穿透:返回空值、布隆过滤器
  • CDN

Java 集合【查漏补缺】Java 集合详解! - 掘金 (juejin.cn)

  • 简单地跟着文章,尝试阅读了下源码

MySQLMySQL常见面试题总结 | JavaGuide(Java面试 + 学习指南)

今天开始,着手准备 Python 的学习

算法:关于栈、队列的算法,搞了好几道了,明天结束这个专题 ✔

项目:Memory 聚合搜索平台优化:

  • 新增博文搜索:后端提供博文搜索接口、前端提供博文列表展示 ✔
  • 完善 Gitee 仓库项目介绍 ✔
  • 博文搜索实现:新增博文数据库表 Article、ArticleEsDTO、博文 ES 包装类 ArticleEsDTO、博文高亮字段 ArticleEsHighlightData、博文搜索接口 ArticleDataSource ✔
  • 待完成:ES 博文数据同步ES 博文搜索测试(ES 博文记录)

2023/11/07

IP 相关知识巩固学习(晚自习继续复习 IP 相关知识,看的细了是真的繁琐 + 枯燥 + 无聊)✔

今天开始,云旅游

安装 | Pandas (pypandas.cn)

Python操作Excel教程(全网最全,只看这一篇就够)_python excel-CSDN博客

中午开始熟悉使用 Python 中的第三方库来操作 Excel 表格,实现数据的增、删、改、查等操作

下午任务:

  • 计网八股

  • Java 集合持续学习:

    • 简单地跟着文章,尝试阅读了下源码
  • MySQL 相关八股记忆:✔

    • 基础面试题,过一遍 (MySQL 字段类型、存储引擎、事务、锁、性能优化) ✔
  • 聚合搜索平台继续优化:✔
    • 成功完成 ES 博文数据同步,明天实现博文聚合搜索和关键词高亮显示 ✔
    • 剩余优化点:搜索建议、网站页面优化
  • 高并发 40 讲:✔

    • 消息队列:暂时存储数据的容器,应对短时间内高并发的写请求(秒杀场景)
      • 削峰填谷:削平短暂的流量高峰,堆积请求,延迟处理,可能会造成请求处理的延迟
      • 异步处理:极大提升系统性能,但要考虑业务流程边界(主要业务 / 次要业务),有消息丢失的风险
      • 解耦合
    • 如何解决消息的丢失重复消费问题:
      • 生产端重试、消息队列配置集群、消费端合理处理消费进度
    • 如何降低消息队列中消息的延迟
      • 监控消息的延迟
      • 优化消费代码提升性能(消费者)
      • 增加消费者数量(消息队列)

有考虑再好好地读一遍《程序是怎样运行的》《网络是怎样连接的》等书

🔥 今晚还想着背会儿 MySQL 相关八股,做会儿 Python 项目,时间还是不够呢,明天再说吧

  • 不过睡前倒是可以构思一下整个 Python 课设的实现思路:

  • 功能实现

  • 开发文档

  • 操作手册

旷课检讨还没写,哈哈哈

项目优化开了个好头,任重而道远,奶奶的今天算法题又少刷了,再接再厉

搞好自己的软件库、知识库、BUG库、弹药库,这是个不错的建议,明天开始着手准备

2023/11/08

搞好自己的软件库、知识库、BUG库、弹药库(成功新建了文件夹

计算机网络:

  • TCP 三次握手四次挥手流量控制
  • TCP 报文首部拥塞控制

Memory 聚合搜索平台:

  • 项目架构图:基本完成 ✔
  • 后端成功返回 ES 中的同步数据 ✔

今晚任务:

项目优化高歌猛进,任重而道远,奶奶的今天算法题又少刷了,再接再厉

  • 明天记得买阿里云的服务器啊,哥们现在有钱了

2023/11/09

  • 每日算法学习提上日程,每日力扣提交至少 3 道

最近一周都在疯狂地记忆 Java 相关八股(JVM 、JUC 、 Java 集合、MySQL 集合、Redis 等)

Memory 聚合搜索平台 项目持续优化中:

博客聚合搜索实现:

  • 完成数据同步,Logstash 多输入输出源配置 ✔
  • 在 IDEA 中使用 ElasticsearchTemplate 完成查询 ES 数据库对应索引 id ✔
  • 前端页面优化,博文列表,博文预览(Memory 缘忆交友社区就计划实现这个功能,不幸被搁置了)✔

项目架构图完善(语雀竟然要联网才能用

视频聚合搜索实现

  • 调用外部接口,获取视频资源
  • 使用线程池 + 异步编程,提升系统性能和请求响应速度,大幅优化用户搜索体验
  • 页面优化

整体页面优化:

  • 整个网站的门面,考虑简单设计一下,看有没有好用的模板
  • 优化聚合搜索平台整体布局的表现张力,现在的页面还是太简陋了,尽力优化项目带给用户的感官体验

Kibana 监控面板

  • 给开发者提供了现成的监控平台,无需造轮子,拿过来用就行
  • 了解其基本使用,监控内容有:聚合搜索调用次数热门搜索词条等等

构思一下整个 Python 课设的实现思路:

  • 实验目的

    • 掌握 Python 基础语法:函数定义与调用、条件分支、对象创建

    • 掌握在 Python 中使用第三方库对 Excel 表格分析思路与具体实现

    • 掌握使用 Python 实现数据库连接,并实现对数据基本的增、删、改、查操作

  • 功能实现

    • 数据存储:使用 Python 分析 Excel 表格中的数据,存储到数据库中
    • 数据更新:更新数据库中的数据记录
    • 数据写回:从数据库中查询记录,生成统计图表展示数据,生成 Excel 表格,适当优化表格样式后,保存表格到本地
  • 开发文档

    • 图文并举,描述上述功能的具体实现

    • 实现数据存储:连接本地数据库,新增数据实体,分析 Excel 表格数据,写入数据库

    • 实现数据更新:模拟请求,更新数据库数据,掌握使用 Python 实现本地数据库的更新

    • 实现数据写回:掌握如何在 Python 中实现数据库记录的查询(查询全表)

  • 操作手册

    • 连个可视化页面都没有,何谈操作手册?
    • 主要是给开发者练手用的,本来就不是一个完整的应用

奶奶的,人工智能课设还得选择研究方向,并使用一种人工智能算法完成,得另寻出路了

考虑总结软考备考经验

简单写一写:

软考备考经验

2023年下半年11月份的软考结束了,一切顺利

本来没打算做总结的,但昨晚看到有位鱼友做了软考备考总结,那我也复盘一下吧,希望我的备考经验对各位有帮助

对软考的看法

什么是软考

软考是什么?软考全称:是国家组织的考试。。。如果考过的话,就能拿到一个证书,这个小本本还是有点含金量的(后面会详细说到)

考试人员身份基本不受限,简单来讲就是:不管你是在读本科生、研究生,还是已经工作的,只要你成年了,都可以报考

软考考试分为三类:初级、中级、高级,分别在每年的 5 月份和 11 月份组织考试,一年两次(有的科目是一年一次,待会儿会提到)

软考报名的话,考试前两个月就应该能报名了,具体报名时间和相关事宜可在官网查看:

我的建议:初级不建议报考,比较简单而且没有有多少含金量,考了只会白白浪费一次考试机会。如果你是第一次参加软考,建议直接报考中级(实力允许就报考高级,高级跟中级相比,整体试卷的知识点覆盖面会更广、难度会更大一些,最主要的还是软考高级需要写一篇论文。我也没考过高级,详细的我也没了解过)

软考科目概览

软考考些什么内容呢,或者说可以报名参加哪些科目的考试呢?

软考初级:

软考中级:软件设计师

软考高级:

含金量

风言风语

我们经常会听到这样的问题:程序员软考有必要吗? 软考到底值不值得考? 程序猿千万别再考软考了,没用的,了解过软考的同学应该都见过这些字眼。那我们现在就来捋一捋,这个软考到底有没有必要考?

如果你对互联网行业感兴趣,未来想在这个行业深耕(做前端开发、后端服务器开发、游戏开发等等方向),我要说的是:

有必要,非常有必要。那具体我的看法是怎样的呢?我会在本文的末尾部分详细探讨。接下来,我会简单阐述我的备考经验,希望能给各位同学带来帮助

备考经验

科班出身(软件工程)

持续往年真题轰炸

备战过程中巩固复习了 23 种 设计模式、设计模式的七大原则、企业中软件开发流程规范等等

首先我们要想明白一个问题,我们在大学阶段参加各种比赛、考各种证书到底是为了什么?当然是为了证明自己是一个优秀的人了。而如何证明呢,一方面是通过比赛结果(比如说拿到了省一、小组团体赛获奖等等)和证书本身来证明,但最重要的,是你从这次比赛经历 / 备考经历中学到了什么:学到了新的专业知识,结识了很多优秀的人,养成了好的学习习惯,或者就是简单地体验了下整个比赛的备战流程或者是考试的备考阶段,这些才是最重要的

软考有用吗?和其他所有竞赛考试一样,非常有用。首先拿到软考证书本身就能证明你是在这方面很是有一定能力的,毕竟近年来软考越发热门,但通过率也就那样。软考证书的含金量也是摆在那里的:证明我考过了这门考试,我还是有点计算机基础的比,其他作用比如:抵税啊啥的就不必多说了。总而言之一句话:拿到软考证书百利而无一害。如果非要软考有什么缺点的话,那就是:在备考阶段太过于投入,舍本逐末,而导致自己的学习计划被打乱、学习进度停滞不前,当然这样的结果比较极端

所以我建议你参加软考这门考试,去拿那个证书,但你不要过多的期望软考本身能给你带来多大帮助。就像前面提到过的,备考软考的过程中,带给你的体验远远超过了那个证书本身,其实生活中的其它事物也是一样的。

这是一个浮躁的社会,一个急功近利的社会,我们总是着眼于:这件事完成之后,它能带给我什么,我能得到什么好处?而不是想着:这是我从未有过的体验,我充满了好奇心,在这个过程中,我收获了很多,见到了未曾见过的人和事,看到了未曾看过的物和景,我感觉自己的状态很好

闲话扯多了,因为受到了星球嘉宾小林哥的影响,再加上我近段时间也一直在看相关公众号的文章,虽然现在是本科大三,但我已经比两年前刚上大学时懵懵懂懂的我成熟了不少,也看开了不少。现在在生活中,基本上没有什么能扰乱我的思绪,影响我的心情了,让那些破事、破人都他妈见鬼去吧,老子开心才是最重要的

这个不必多言

今日算法学习:

  • 栈:两数之和用栈实现队列、用队列实现栈、最大栈、最小栈

计网:UDP 巩固复习

操作系统:

  • 用户态 / 内核态,用户态和内核态的切换(系统调用、中断、异常)、系统调用的过程 ✔
  • 进程 / 线程,线程的状态进程之间的通信方式进程的调度算法
  • 死锁,死锁产生的必要条件(互斥、请求保持、不剥夺、循环等待)、解决死锁的方法(预测、避免、检测、解除)✔

MySQL:日志(binlog、redolog、undolog)、事务隔离级别、查询缓存、SQL 语句的执行过程、MVCC ✔

2023/11/10

力扣算法打卡,Day 1 ✔

Memory 聚合搜索平台 项目持续优化中:

博客聚合搜索实现:

  • 完成数据同步,Logstash 多输入输出源配置 ✔
  • 在 IDEA 中使用 ElasticsearchTemplate 完成查询 ES 数据库对应索引 id ✔
  • 前端页面优化,博文列表,博文预览(Memory 缘忆交友社区就计划实现这个功能,不幸被搁置了)✔

项目架构图完善(语雀竟然要联网才能用

视频聚合搜索实现

  • 调用外部接口,获取视频资源
  • 使用线程池 + 异步编程,提升系统性能和请求响应速度,大幅优化用户搜索体验
  • 页面优化

整体页面优化:

  • 整个网站的门面,考虑简单设计一下,看有没有好用的模板
  • 优化聚合搜索平台整体布局的表现张力,现在的页面还是太简陋了,尽力优化项目带给用户的感官体验

Kibana 监控面板

  • 给开发者提供了现成的监控平台,无需造轮子,拿过来用就行
  • 了解其基本使用,监控内容有:聚合搜索调用次数热门搜索词条等等

一个域名备案还要现场拍照白色背景,要求真多,下午再试试

Shell 基础编程知识学习:Shell 编程基础知识总结 | JavaGuide(Java面试 + 学习指南)

Linux 基础知识学习:

操作系统学习(内存管理,文件管理)

脚本文件(爬虫)

今晚着手力扣热门 100 题150 题的打卡了,每日四题

  • 坚持在25天左右完成一轮打卡(过一遍所有热门面试算法题
  • 看这个计划,应该是在 12 月分之前就能过一遍力扣热门 100 题了
  • 今晚彻底解决链表构造的问题(直接插入 / 虚拟头节点前插 / 后插

太棒了,力扣热门 100 题150 题 可以同时打卡,这样进度就很可观了

2023/11/11

力扣算法打卡,Day 2 ✔

  • 苏三说技术:分库分表带来了什么问题?

单表数据量过大,查询性能变差 -> 水平分表 -> 分片键 -> 根据 id 范围(写热点问题)-> 根据 id 取模(数据迁移)

-> 两者结合:在 id 范围分表中,引入取模分表(数据量增大,查询普通索引列 / 非分片字段,读扩散问题

-> 建立新表,以该普通索引为分片键:查询该字段所在 ids,再拿 ids 查询原表(迅速定位,减少查询次数

->👆 倒排索引思想:接入 ES,使用 canal 监听 MySQL binlog 日志变更,实时同步数据到 ES

-> tidb:分布式数据库,根据 id 范围分片、普通索引分片

上午:

  • 完成 Java 创建线程的十种方式

  • 随便看看星球和博文吧:Spring相关

  • Linux 命令在线速查手册:Linux 命令在线速查手册

下午待完成:

  • 算法:

    • 同步力扣算法打卡题解到语雀
  • 项目:

    • Memory 聚合搜索平台:
    • 项目架构图完善(语雀竟然要联网才能用
    • 视频聚合搜索实现
      • 调用外部接口,获取视频资源
      • 使用线程池 + 异步编程,提升系统性能和请求响应速度,大幅优化用户搜索体验
      • 页面优化
    • 整体页面优化:
      • 整个网站的门面,考虑简单设计一下,看有没有好用的模板
      • 优化聚合搜索平台整体布局的表现张力,现在的页面还是太简陋了,尽力优化项目带给用户的感官体验
  • 积累

    • 总结 Java 内部类相关知识
    • Java 并发编程:

加入星球九个月了,这里学习氛围真的很不错,个个说话都好听。今天来为鱼友们分享下我的个人博客

个人博客地址Memory’s blog

搭建个人博客有八个月了,从六月份开始,每天都会在个人博客打卡学习进度,很明显能感觉到自己在慢慢进步

博客简介

博客搭建是 Gitee + hexo,部署在 Gitee 访问速度很快,hexo 的主题我也很喜欢。主题的个性化配置也花了挺大功夫,几个月以来抽时间慢慢优化了。个人博客详细搭建流程也能在《大道至简:快速搭建博客与文档站点的终极指南1.0》中了解到

目前有原创博文六十余篇,当然不是什么高深的技术文章,仅仅是我自学编程过程中的学习经验、踩坑经历总结

详细的个人介绍博文介绍都可以在《探索我的博客世界 - 个人导读》中了解到

欢迎大家来访问我的博客呀!如果你也有个人博客,也可以在评论里贴上你的博客访问地址,交换友链~

交换友链

  • 提供:博客访问地址 + 博主昵称,即可交换友链成功

  • 如果你有可访问的头像图片地址的话,也可以提供~

  • 格式如下:

博客访问地址https://deng-2022.gitee.io/blog/

博主昵称:Memory

头像(可选):https://deng-2022.gitee.io/blog/img/memory.jpg

博客展示

简单截几张个人博客图片吧:

image-20231111114346044

image-20231111114403503

image-20231111114419860

image-20231111114437428

image-20231111114448636

了解常见的 分布式文件系统

了解限流(计数限流、固定窗口限流、滑动窗口限流、漏桶算法、令牌桶算法)✔

Vue写给后端大忙人看的vue入门指南 - 掘金 (juejin.cn),有时间做做这个

高并发 40 讲:

  • 微服务拆分:一体式架构带来的问题:数据库连接数出现瓶颈、研发效率低,部署维护成本增加

Java 基础:

  • 自定义注解:✔

2023/11/12

力扣算法打卡,Day 3 ✔

星球内回答鱼友提问,梳理了一遍个人博客搭建流程

Java架构师-毛Sir炖开 (msirdk.com)

上午吃了一颗感康,脑袋昏昏沉沉的

Memory 聚合搜索平台基本实现:诗词聚合搜索、博文聚合搜索

  • 主要学习巩固了数据抓取、数据同步的知识
  • 待完成:解决搜索关键词后,返回结果过少的问题;解决数据同步时,output 与 input 的对应关系问题

那今晚就是写写算法题、看看博文,随便玩玩这样子了

高并发 40 讲:

  • 微服务拆分:按照什么样的原则进行拆分?拆分的粒度如何控制?拆分后会出现什么问题?✔

Python 课设明天开始着手完成吧

妈的,有想法一定要及时记录,我刚刚想到的几点现在就忘了

🔥 最近想完成却没时间完成的事:

  • 用 Java / Python 写一个脚本,能拉取文章、图片啥的,尝试一下
  • 简历优化,这个确实是很重要的
  • 这两天很少看博文和漫画了,项目和算法花费时间居多
  • 管他呢,周末就应该轻松一些

2023/11/13

力扣算法打卡,Day 4 ✔

唔,Java 二级过了 ✔

掘金阅读:

Redis 八股文简单记忆 ✔

MC 惊变100天 -> 还原 MC 中的像素画 -> 如何制作一个 MC mod? ✔

基本了解到了如何开发一个 MC mod 了,有机会试试

Alex3236博客-Alex3236专栏文章-文集-哔哩哔哩视频 (bilibili.com)

maven 项目管理工具

全面发展自己:一名Java后端开发人员,了解前端、UI、测试、运维、图像处理、视频剪辑,熟练使用常见的办公软件:Word、Excel、PowerPoint等

高性能 40 讲:如何实现高并发 RPC 框架?✔

  • 服务拆分后,需要解决的问题:服务跨网络通信、服务治理
  • 使用 RPC 解决服务间的跨网络通信问题:
    • RPC 是什么技术?通过网络,调用另一台服务器上部署的服务,像调用本地方法一样,调用远程方法
    • RPC 相关技术实现:Dubbo(阿里)、Grpc、Thrift、RMI(Java 原生远程调用框架)、Web Service
    • 了解一次 RPC 调用的过程,分析出从两方面提升 RPC 框架性能:
      • 网络传输
      • 序列化
    • 如何优化网络传输?网络传输就是网络 I/O,我们需要选择一种高性能的网络 I/O 模型
      • I/O 模型,就是处理 I/O 请求的方式,一个 I/O 请求分为两个阶段:资源等待和资源使用
      • 资源等待的处理方式:阻塞和非阻塞;资源使用的处理方式:同步和异步
      • 熟练掌握五种常见的 I/O 模型:同步阻塞 I/O、同步非阻塞 I/O、多路复用 I/O、信号驱动 I/O、异步 I/O
      • 除了选择高性能的 I/O 模型,还可以通过网络参数调优来优化网络传输,这需要一定的网络基础知识
    • 如何优化序列化?序列化就是传输对象转换成二进制串,反序列化则是与之相反的过程
      • 这就需要我们选择合适的序列化方式,考虑到的因素:性能开销,能否跨语言、跨平台,扩展性等
      • 备选的序列化协议方案:JSON、Thrift、Protobuf
    • 有一定能力的话,推荐阅读成熟的 RPC 框架源码,了解它们的实现原理和细节

高性能 40 讲:服务注册与服务发现

  • 上节解决了服务拆分后,服务之间跨网络通信的问题
  • 服务拆分后,我们要面对更多的细粒度的服务,如何让 RPC 客户端知晓服务端的部署地址,这就是服务注册和服务发现的问题
  • 目前微服务存在的问题:
    • 在服务拆分后,现在 RPC 服务端的地址,就直接配置在了客户端的代码中,这就造成了问题:
    • 客户端紧急扩容,即修改客户端配置后,需要重启所有客户端进程,操作时间比较长
    • 当服务端某一服务器出现故障后,也需要修改客户端配置后重启,无法做到自动恢复、快速恢复
    • 在系统上线后,RPC 服务端摘除流量、重启服务端,客户端发往重启服务端的请求无法被正确处理
  • 针对以上问题,我们引入注册中心来解决
    • 注册中心有什么用呢?提供服务地址的存储;当存储内容发生变更,可将变更内容推送给客户端
      • 常用的注册中心组件:Zookeeper、Nacos、Spring Cloud Eureka
      • 服务端向注册中心注册服务,注册中心将服务端信息通知给客户端;该服务变更之后,注册中心也会发送变更通知给客户端
      • 客户端与注册中心建立连接,订阅感兴趣的服务,拿到服务端的地址后,就可以向服务端发起调用请求
    • 注册中心实现了不重启客户端,就能动态地变更服务节点,以及优雅关闭的功能
    • 管理服务节点的状态:
      • 主动检测:端口占用、成本过高、存在延迟
      • 心跳机制

今晚任务:

  • 项目:Memory 聚合搜索平台

    • 完成搜索词建议
    • 解决聚合搜索结果不一致的问题 ✔
  • 算法:完成今日任务,完结数组和字符串的相关问题 ✔

    • 我对算法不咋上心啊,明天再回顾下今天的算法题吧
    • 先完成 150 热门题的打卡,100 就先搁置了 😁
  • 英语:妈的,备考六级

    • 今晚背背高频词汇,明天开始坚持每日一篇英语外刊
    • 11月下旬开始做真题,现在做没啥用,先回忆回忆单词吧

2023/11/14

力扣算法打卡,Day 5 ✔

TCP:拥塞控制、可靠传输实现 ✔

如何为开源项目做贡献?✔

SPI,深入学习 Spring Boot:Spring高手之路14——深入浅出:SPI机制在JDK与Spring Boot中的应用_java spi-CSDN博客

CSDN 关注了个新博主https://blog.csdn.net/qq_34115899?spm=1001.2014.3001.5509

MySQL 主从复制(面对大量的读写请求):

  • 主库负责写入和部分核心逻辑的查询,多个从库只负责查询,提升查询性能,降低主库压力
  • 读写分离:从库提供查询,减少主库压力,提升性能
  • 数据备份:数据备份到从库,防止服务器宕机导致数据丢失
  • 高可用:故障时可切换从库,防止服务器宕机导致数据丢失

下午任务

  • 完成 SPI 的学习
  • 巩固昨天的算法练习 ✔

最近的感想

Memory 聚合搜索平台:

  • 近段时间不搞了,最多研究研究图片聚合搜索吧
  • input 块 和 output 块的一一对应
  • 搜索建议不好搞

【精选】❤️连续面试失败后,我总结了57道面试真题❤️,如果时光可以倒流…(附答案,建议收藏)_面试官easyexcel的问题_哪 吒的博客-CSDN博客

10万字208道Java经典面试题总结(附答案)_java面试题_哪 吒的博客-CSDN博客

CSDN 的哪吒编程:搬砖工逆袭Java架构师_哪 吒的博客-CSDN博客

2023/11/15

力扣算法打卡,Day 6 ✔

英文水平提升计划,Day1 ✔

Springboot中的@EnableAsync和@Async的作用和基本用法-CSDN博客

【精选】Spring常用注解(绝对经典)_spring注解-CSDN博客

英语外刊阅读

  • 我突然发现了,长久以来养成的英文阅读习惯是逐词逐词地阅读,一个句子读下来,恨不得把这句话吃透,句意和语法结构捣腾的清清楚楚,整篇文章或者说一段话读下来就很吃力。但我读中文文章时,也没那么费劲啊,这个毛病得改改了
  • 多读读外刊,培养英语阅读能力,什么几把六级考试,我只要能读懂文章,那阅读题还拿不下吗
  • 从现在起,定一个终身目标:培养英文阅读能力,说不了一口流利的英语,但至少拿到一份英文外刊,能自信地阅读吧

C++
迭代器:自定义迭代器,STL迭代器,输入迭代器,输出迭代器

I/O流:标准I/O流,文件I/O流,字符串I/O流

字符串:字符串的创建、插入、修改、删除、遍历

今晚任务:

  • 每日算法打卡 ✔
  • Python 大作业启动 ✔
    • 完成 Python 连接本地 MySQL 数据库
  • 操作系统实验启动 ✔
    • 实验一:进程互斥算法,基本完成
  • 聚合搜索平台
    • 异步查询图片功能实现 ✔
    • 稍微思考了一下,已经异步实现了,由于后端只是使用 Jsoup 爬取静态 HTML 页面数据,而且限制了每次爬取的图片数目,并不算什么耗时的操作,倒是可以考虑自定义线程池,提升整体性能 ✔
    • 尝试上线
  • 人工智能实验,记得完成 ✔
  • 高并发 40 讲 :✔
    • 一体化架构中的慢请求排查:✔
      • 标记每个请求,打印耗时日志
      • 对代码无侵入,面向切面编程:AspectJ(静态代理)、Spring AOP(动态代理)
      • 减少日志数量,保证性能上要低损耗:静态代理;日志采样,避免全量日志的打印;集中存放(ES)
    • 提升系统的横向扩展能力:✔
      • 高并发流量下,设计高并发系统的要点:缓存、异步和横向扩展
      • 我们之前提到过主从分离、分库分表,分发流量,极大提升数据库的横向扩展能力和查询性能。这就需要借助组件,将查询数据库的请求,按照一定的策略,分发到各个从库上,这就是负载均衡
      • 在实际工作中,我们需要使用负载均衡组件,承接前端 HTTP 请求,分发到后端的业务服务器上
      • 负载均衡服务器分类:代理类的负载均衡服务;客户端负载均衡服务
      • 常用的负载均衡策略:
        • 静态策略(轮询策略、带权重的轮询策略)没有合适的动态策略,优先选择
        • 动态策略:后端服务的活跃连接数、调用的响应时间,从中选择连接数最少或者响应时间最短的后端服务
      • 如何检测故障节点:✔
        • Nginx 模块的 nginx_upstream_check_module
        • 实现 Web 服务的优雅关闭:
          • 通过 Nginx 探测结果,将服务标记为不可用,阻断新的流量
          • 服务重启,注册中心摘除节点
  • 哪吒编程,Dubbo 相关概念学习,启动 ✔
  • Memory API 接口开放平台,了解相关面试概要 ✔
  • 英语水平提升 ✔

2023/11/16

力扣算法打卡,Day7 ✔

Spring 成神之路 Day1 ✔

英文水平提升计划,Day2 ✔

每日英语外刊阅读:冰岛火山喷发 ✔

哪吒编程,Dubbo 相关概念学习:✔

MySQL:✔

  • SQL 语句在 MySQL 中的执行过程
  • MySQL 执行计划分析
  • MySQL 自增主键一定是连续的吗
  • MySQL 日期类型选择建议

Redis:

Spring:

认证授权:

计算机网络:

Memory API 接口开放平台:

  • 了解相关面试概要 ✔

  • 优化考虑:

在线 C++ 练习平台:http://www.json.cn/runcode/run_cpp/

Memoey 聚合搜索平台:

  • 编写多个 Logstash 配置文件,实现多组输入输出流的数据同步 ✔
  • 图片聚合搜索优化:搜索反馈、图片展示优化、提供图片地址可供下载 ✔
  • 待完成:
    • 现在的图片聚合搜素接口不稳定,未来可考虑:将改变搜索接口为彼岸图网
    • 引入第三方库,提供一键复制文本的功能

项目上线:安装宝塔面板,开放相关端口,直接来一个宝塔面板安装,一步到位 ✔

今日力扣算法 ✔

高并发 40 讲:

只要项目搞得多了,算法就马虎了,哈哈哈

应该考虑现阶段(至少是未来两个月内)得每日必做计划,列一个清单:

2023/11/17

力扣算法打卡,Day8 ✔

Spring 成神之路 Day2 ✔

Spring 学习:✔

奶奶的,今天 Java 课光顾着搞课堂作业了

高并发 40 讲:✔

  • API 网关,不是一个开源组件,而是一种架构模式,通常部署在负载均衡服务器和应用服务器之间 ✔
    • API 网关的作用:
      • 它可以整合一些服务共有的功能,将一些服务治理的功能独立出来,达到复用的目的
      • 为客户端提供了统一的接入地址,将用户的请求动态路由到不同的业务服务器上
      • 可以是看作是系统的边界,对出入系统的流量作统一管控。
    • API 网关分类:
      • 入口网关(经常使用):服务治理(熔断、降级、限流、分流等)、认证授权、黑白名单、日志监控等等
      • 出口网关:为调用第三方服务提供统一出口,对调用外部 API 做统一的认证、授权、审计和访问控制
    • API 网关实现重点:
      • 性能:多路 I/O 复用模型和线程池并发处理
      • 扩展性:路由过滤器,责任链模式
    • 常见的网关系统:Netflix Zuul、Spring Cloud Gateway、Kong、APISIX、Shenyu
  • 跨地域的分布式系统:多机房部署 ✔
    • 同城多活
    • 异地多活
    • 多机房部署是一个业务发展到一定规模,对于机房容灾有需求时,才会考虑的方案,能不做尽量不要做

力扣算法打卡 ✔

今下午老师点名,阴差阳错之下,认识了一位新同学

最近一周内计划上线 Memory 聚合搜索平台,尝试分别使用宝塔Docker 容器部署

  • 当然,部署之前需要快速地重构一下代码,删除不必要的冗余代码,尽可能减小体量
  • 明天早上跳起来就先干这个
  • 明天开始就要开发优化 Memory API 接口开放平台了,今晚看看有没有什么好的扩展点
  • 别的先不说,能不能疯狂地扩展几个新接口

2023/11/18

力扣算法打卡,Day9

Spring 成神之路,Day3 ✔

英文水平提升计划,Day3 ✔

Java 八股吟唱,Day1 ✔

BigShot英语的个人空间-BigShot英语个人主页-哔哩哔哩视频 (bilibili.com)

https://www.bilibili.com/video/BV1TD4y1q7u9/?share_source=copy_web&vd_source=41484c3c23d7dc1caf838d6574365b27

秋招面试技巧:

上午任务:

八股文吟唱技巧

  • 这里提出我的表述技巧:“口语表达” 和 “定义后置

  • 问题:说一下多态的实现原理?

  • 你背过的八股:

    什么是多态?

    多态是面向对象编程中的一个重要概念,它允许通过父类类型的引用变量来引用子类对象,并在运行时根据实际对象的类型来确定调用哪个方法。换句话说,一个对象可以根据不同的情况表现出多种形态。

    通过多态,我们可以利用父类类型的引用变量来指向子类对象,并根据实际对象的类型调用对应的方法。这样可以在不修改现有代码的情况下,动态地切换和扩展对象的行为。

    多态有以下几个特点和优势:

    1. 可替换性:子类对象可以随时替代父类对象,向上转型。
    2. 可扩展性:通过添加新的子类,可以扩展系统的功能。
    3. 接口统一性:可以通过父类类型的引用访问子类对象的方法,统一对象的接口。
    4. 代码的灵活性和可维护性:通过多态,可以将代码编写成通用的、松耦合的形式,提高代码的可维护性。
    多态的实现原理

    动态绑定和虚拟方法调用。

    动态绑定(Dynamic Binding):指的是在编译时,Java 编译器只能知道变量的声明类型,而无法确定其实际的对象类型。而在运行时,Java 虚拟机(JVM)会通过动态绑定来解析实际对象的类型。这意味着,编译器会推迟方法的绑定(即方法的具体调用)到运行时。正是这种动态绑定机制,使得多态成为可能。

    虚拟方法调用(Virtual Method Invocation):在 Java 中,所有的非私有、非静态和非 final 方法都是被隐式地指定为虚拟方法。虚拟方法调用是在运行时根据实际对象的类型来确定要调用的方法的机制。当通过父类类型的引用变量调用被子类重写的方法时,虚拟机会根据实际对象的类型来确定要调用的方法版本,而不是根据引用变量的声明类型

    多态的具体实现

    方法重载、方法重写

  • 如何表达?核心在于你要把任何问题理解为:谈一谈你对多态的理解

    我们经常讲,面向对象有三大特征:封装、继承和多态

    多态是面向对象编程中相当重要的一个概念,它允许通过父类类型的引用变量引用子类对象,在运行时根据实际的对象类型来确定调用哪个方法,一个对象能够根据不同的场景表现出多种形态

    那多态具体是怎么实现的?在编译时,Java 编译器只能知道变量的声明类型,也就是父类类型,而无法确定实际的对象类型;而在运行时,Java 虚拟机会通过动态绑定解析出实际对象的类型,根据实际的对象类型调用被子类重写的方法。

    也就是说,编译器会把方法的绑定,即方法的具体调用推迟到运行时,这就是动态绑定,这就是多态的实现原理

    我们发现使用多态有这样的好处:我们通过父类类型的引用来访问子类对象的方法,统一对象的接口,这是接口统一性;子类对象可以随时替代父类对象,向上转型,这就是可替换性;我们可以通过添加新的子类,扩展系统功能,这就是可扩展性;通过多态,能够实现对象间的解耦,因为我们不再需要指定具体对象去实现具体方法了,这使得代码更加简洁通用、易于维护

    我们在编码开发中接触到的方法重载、方法重写、接口实现就是多态的具体实现,方法重载体现的是编译时的多态,而方法重写和接口实现体现的是运行时的多态

开设一个新的栏目,标题还没想好,主要是想记录一下人际交往中的表达技巧,我确实在尝试新的东西

昨天跟刚认识的同学聊了一个多小时,感触很深,我能够把开心带给身边的人,我也感到很开心。我的思维很活跃,有很多想要表达的东西,但我平时是不太喜欢讲话的,在一伙人中间,我肯定是最安静的那个。但这并不代表着我不敢讲、不喜欢讲话,我只是不讲话而已,恰恰相反,只要在我感兴趣的领域,我是很喜欢跟别人聊天的:周一上午跟导员作检讨,为什么要无故旷课;周三中午跟舍友聊专业规划、学习经验,扯了一中午;周五下午跟刚认识的女同学聊期末复习备考经验、未来规划,分享自己的烦恼、糗事。

人生在世,人际交往是很重要的一环。很喜欢《被讨厌的勇气》里提到的一句话:一切烦恼的根源都来自于人际关系,非常推荐大家看看这本书

别人听我讲完话,能学习到很多,更加清晰的规划,更加乐观地面对生活等等,这就让我感到很满足了,我能够输出一些东西,我的输出是有价值的

一个月前开设的新栏目:《个人成长之路:计划演进与思想蜕变的见证》,如果说这个栏目是记录我的内心所想的话,那么今天开设的新栏目:《》,就是关于如何把内心所想表达出来,相信我,这真的非常重要

先说这么多吧,这个栏目涉及的东西还挺杂,随便写写

中午回来只做两件事:做好管理(博文管理:阶段性目标变化管理;项目代码优化)和 Java 基础巩固(格局小了)

Java Stream 流

Java 8 Strem高级操作 - 掘金 (juejin.cn)

Java 删除字符串的最后一个字符 - 掘金 (juejin.cn)

英语思维养成:

高并发 40 讲:

  • 屏蔽服务治理细节 ✔
  • 做好服务端监控:RED(请求量、错误和响应时间)✔

距离首次系统复习 Java 八股文 已经过去整整一个月了,进度要加快啊

Java 八股:基础面试题上 (这个系列就不详细记录了,毕竟是很基础的东西了)✔

Spring 成神之路:属性注入 ✔

我们使用 XML 配置文件作好 Bean 的装载 / 注册后,进行 Bean 的属性注入

Setter 属性注入:使用 XML 文件 / 使用 @Bean 注解

构造器属性注入:使用 XML 文件 / 使用 @Bean 注解

注解式属性注入:@Value 属性注入

  • 直接注入属性值
1
2
3
4
5
@Value("white-value-annotation")
private String title;

@Value("1")
private Integer rank;
  • 导入外部配置文件:
1
@PropertySource("classpath:blue.properties")
  • 这种注解等同于:
1
2
<!-- 相当于注解中的 @PropertySource("classpath:blue.properties") -->
<context:property-placeholder location="classpath:blue.properties"/>
1
2
@Value("${blue.title}")
private String title;
  • 或者:
1
2
3
appTest:
name: MyApp
version: 1.0.0
1
@ConfigurationProperties(prefix = "appTest")
1
2
3
4
5
@Value("${appTest.name}")
private String name;

@Value("${appTest.version}")
private String version;

待完成:

  • Kibana 监控面板调试

疯狂羡慕这个 API 开放平台,我也要做一个:欢迎 - Qi-API 接口开放平台 (qimuu.icu)

2023/11/19

力扣算法打卡,Day10 ✔

Spring 成神之路(内置作用域),Day4 ✔

英文水平提升计划,Day4 ✔

Java 八股吟唱,Day2 (Java 基础)✔

每日实习面试准备(简历完善,八股吟唱,面试技巧),Day1 ✔

奶奶的,昨天算法题没打卡,今早补上了,今晚继续

项目就慢慢优化了,今天能不能实现随机壁纸的接口?

把这两天想的都说出来了,好骂好骂,心情更加舒畅了:放空心灵,物我和一

又产出了一封信,写给未来的我

知乎,果然能学习了解到很多东西

有关 Java 中 String 内容不可变的解释:

我们经常听到这样的定义:String 对象一旦被创建,其内容就一定不可变

这句话的意思是:对该对象的所有操作(如 replace()contact()substring())都将返回新的 String 对象,而不是在原 String 对象的内容上作修改。这些操作也都是不被允许的:

1
2
3
4
5
6
7
8
9
String s = "Hello";  

s.charAt(0) = 'h'; // 编译错误:Cannot assign to 'char' field in an array of 'final' value

s.length() = 5; // 编译错误:Cannot assign to 'int' field in an array of 'final' value

String t = s.substring(0, 5); // 可以,但结果是新的 String 对象,不是对原有对象的修改

t = t + " World"; // 可以,但结果是新的 String 对象,不是对原有对象的修改

为什么是这样的?String 对象内容不可变是如何保证的,这样做又有什么好处呢?

String 类被设计出来是为了方便我们对字符串进行操作,我们常见的字符串拼接、比较字符串内容、字符串长度等等,应用十分广泛。而 String 类底层是通过 char [] 数组(Java 9 之后改为 byte [] 实现了)来维护字符串:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {

/**
* The value is used for character storage.
*
* @implNote This field is trusted by the VM, and is a subject to
* constant folding if String instance is constant. Overwriting this
* field after construction will cause problems.
*
* Additionally, it is marked with {@link Stable} to trust the contents
* of the array. No other facility in JDK provides this functionality (yet).
* {@link Stable} is safe here, because value is never null.
*/
@Stable
private final byte[] value;

.................
}

需要注意的是,这个字符串使用了 final 关键字修饰。

我们都知道被 final 关键字修饰的类不能被继承、修饰的方法不能被重写、修饰的基本数据类型变量的值不能被改变,修饰的引用类型变量不能再指向其他对象。很显然,这里的 char [] 数组属于引用型变量,所以其内容是可以改变的

这就是很多人疑惑的点了:难道不是很奇怪吗?String的内容是不可变的,但 String 底层是 final 修饰的 char[] 数组实现的,而这个数组内容是可变的。所以你给解释一下String内容不可变到底是怎么一回事

很多八股在这里都在扯淡,在这里我给出正确答案:这里的 char [] 数组属于引用型变量,理论上它的内容当然是可以改变的:

1
2
3
final String[] arr = new String[]{"Hello", "World"}; 

arr[0] = "Hi"; // 这里是可以的,因为arr[0]指向的对象(即"Hello")是可以改变的

但是这一点跟 String 内容是不可变的本身没有冲突,因为 String 并没有对外提供任何方法,去改变内置的 char [] 数组的内容,所以String 对外表现出的 String 内容不可变,这就是:String 对象一旦被创建,其内容就一定不可变的正确解释

综上所述,String 类是不可变的,这意味着一旦一个 String 对象被创建,它的内容就不能被修改。即使 String 底层是通过 final 修饰的 char 数组实现的,但是这个 char 数组的内容也不能被修改,因为 String 并没有对外提供任何方法,允许我们去改变内置的 char [] 数组的内容。因此,即使我们可以访问到 String 对象的底层 char 数组,我们也不能通过改变这个数组来修改 String 对象的内容。任何尝试修改 String 对象内容的操作都会返回一个新的 String 对象,而原来的 String 对象保持不变

查看源码你就能清楚地看到这个过程了,当然源码很复杂,这里展示出 replace 的部分源码,你可以看到在执行这个操作的过程中,是 new 了新的 byte [] 的:

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
27
28
29
30
31
32
33
34
35
36
public static String replace(byte[] value, char oldChar, char newChar) {
if (canEncode(oldChar)) {
int len = value.length;
int i = -1;
while (++i < len) {
if (value[i] == (byte)oldChar) {
break;
}
}
if (i < len) {
if (canEncode(newChar)) {
byte buf[] = new byte[len];
for (int j = 0; j < i; j++) { // TBD arraycopy?
buf[j] = value[j];
}
while (i < len) {
byte c = value[i];
buf[i] = (c == (byte)oldChar) ? (byte)newChar : c;
i++;
}
return new String(buf, LATIN1);
} else {
byte[] buf = StringUTF16.newBytesFor(len);
// inflate from latin1 to UTF16
inflate(value, 0, buf, 0, i);
while (i < len) {
char c = (char)(value[i] & 0xff);
StringUTF16.putChar(buf, i, (c == oldChar) ? newChar : c);
i++;
}
return new String(buf, UTF16);
}
}
}
return null; // for string to return this;
}

这样做有什么好处?这种不可变性是 Java String 类的一个重要特性,使得 String 可以安全地被共享和传递,而不需要担心其他部分的代码会修改它的内容

人生建议,不要动 Memory API 接口开放平台的 前端代码的 git 命令,妈的,每次都踩雷

哦,可算正常启动项目了,今晚就开发个新接口:返回随机壁纸吧 ✔

看蛛网男孩(奶奶的,网速慢,在低端上看回应我了)

明天过一遍 Java 重要知识点 + I/O流,今晚过一遍 MySQL 索引

红黑树:漫画:什么是红黑树? - 掘金 (juejin.cn)

如何搞砸一场面试? - 掘金 (juejin.cn)

Memory API接口开放平台:获取随机壁纸基本流程完成

2023/11/20

力扣算法打卡,Day11 ✔

Spring 成神之路(Bean 的生命周期),Day5 ✔

英文水平提升计划(英文报刊阅读),Day5 ✔

Java 八股吟唱(Java I/O 基础知识,I/O 模型),Day3 ✔

每日实习面试准备(Java I/O 流),Day2 ✔

鱼友分享了 JUC 学习笔记,今明两天再快速过一遍

Java I/O 流,快速地过了一遍,今晚写一遍代码

  • 巩固 FileInputStreamBufferInputStreamObjectInputStream 等的用法

今天又多做了两道算法题,感觉好多了

项目优化:

  • 获取随机壁纸完工
  • 优化接口调用页面

Spring:Bean 的生命周期

在 Spring 框架中,控制 Bean 生命周期的三种方式是:

1、使用 Spring 的 init-method 和 destory-method (在 XML 配置或者 java 配置中自定义的初始化和销毁方法)

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean class="com.example.demo.bean.Lion"
init-method="init" destroy-method="destroy">
<property name="name" value="simba"/>
</bean>
</beans>
1
2
3
4
5
6
7
8
9
10
11
@Configuration
@ImportResource("classpath:applicationContext.xml")
public class AnimalConfig {

@Bean(initMethod = "init", destroyMethod = "destroy")
public Elephant elephant() {
Elephant elephant = new Elephant();
elephant.setName("Dumbo");
return elephant;
}
}

2、使用 JSR-250 规范的 @PostConstruct 和 @PreDestory 注解

1
2
3
4
5
6
7
8
9
@PostConstruct
public void init() {
System.out.println("Lion is going through init.");
}

@PreDestroy
public void destroy() {
System.out.println("Lion is going through destroy.");
}

3、实现 Spring 的 InitializingBean 和 @DisposableBean 接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@Component
public class Lion implements InitializingBean, DisposableBean {

private Integer energy;

@Override
public void afterPropertiesSet() throws Exception {
System.out.println("狮子已经充满能量。。。");
this.energy = 100;
}

@Override
public void destroy() throws Exception {
System.out.println("狮子已经消耗完所有能量。。。");
this.energy = 0;
}

@Override
public String toString() {
return "Lion{" + "energy=" + energy + '}';
}
}

三种生命周期并存时,在 Spring 框架中单例 Bean 的初始化和销毁过程有这样的执行顺序:

  • 初始化顺序:@PostConstruct -> InitializingBean -> init-method
  • 销毁顺序:@PreDestory -> DisposableBean -> destroy-method

简单总结 Spring Bean 生命周期流程:

  1. 实例化:启动 Spring 应用,IOC 容器为所有已声明的 Bean 创建一个实例
  2. 属性赋值:实例化后,Spring 通过反射机制给 Bean 的属性赋值
  3. 调用 Bean 的初始化方法:调用 Bean 配置的 @PostConstructafterPropertiesSet方法或者init-method指定的方法
  4. Bean 运行期:Bean 已经准备好被程序使用了,它已经被初始化并赋值完成
  5. Bean 销毁:当容器关闭时,调用Bean的销毁方法

2023/11/21

力扣算法打卡,Day12 ✔

Spring 成神之路(@Import),Day6 ✔

英文水平提升计划(英语阅读技巧、一篇英文报刊),Day6 ✔

Java 八股吟唱(索引底层数据结构、索引类型、最左匹配原则、索引下推、创建合适的索引),Day4 ✔

每日实习面试准备,Day3 ✔

  • 上午学习了 IGMPICMP 协议,今晚过一遍数据链路层

MySQL 是一种常用的关系型数据库管理系统,它支持使用索引来加速查询操作。在执行查询时,如果使用了索引字段,则 MySQL 可以直接通过索引查找到符合条件的数据行,从而极大地提高了查询的效率。但是,如果查询中使用了非索引字段,则 MySQL 需要对整个表进行扫描,判断每一行是否符合条件,这将会耗费大量的时间和计算资源,导致查询效率低下。本文将分析 MySQL 使用非索引字段进行查询的过程,并探讨如何优化查询性能。

当查询中包含非索引字段时,MySQL 将会执行全表扫描。具体来说,MySQL 会按照表中数据的物理存储顺序依次读取每一行数据,然后比较每一行数据是否满足查询条件。如果满足条件,则将该行数据返回给客户端;否则继续扫描下一行。这个过程需要遍历整个表,并对每一行数据进行判断,因此随着表中数据量的增加,查询的响应时间也会变得越来越长。

为了优化使用非索引字段进行查询的性能,可以采取以下几种方法:

  1. 添加索引:如果查询中的某个非索引字段被频繁用于查询,可以考虑为该字段添加索引。索引可以提高查询效率,使得 MySQL 可以更快地找到符合查询条件的数据行。
  2. 优化查询语句:如果查询中使用了多个非索引字段,可以考虑对查询语句进行优化,从而尽可能地利用现有的索引。例如,可以将查询条件中的非索引字段替换为索引字段,或者使用 JOIN 来加入其他表中的数据。
  3. 分批查询:如果表中数据量很大,查询时间很长,可以考虑分批查询。具体来说,可以将查询结果分成若干个较小的批次,每次只需要查询部分数据,然后在客户端进行合并。这样既可以减少一次性查询的数据量,又可以避免因查询时间过长导致客户端超时等问题。
  4. 数据库优化:除了针对具体查询进行优化之外,还可以从数据库本身优化入手。例如,可以优化数据库的配置参数,增加内存缓存等,从而提高整个数据库的性能,也能够间接地提高使用非索引字段进行查询的效率。

总之,MySQL 使用非索引字段进行查询的过程是比较耗时的,但是通过一系列的优化手段,可以大大减少查询响应时间,并提高查询效率。在实际开发中,需要根据具体情况选择合适的优化方法,以达到最佳的性能表现。

MySQL最左匹配原则详细分析_Mysql_脚本之家 (jb51.net)

今日任务:

  • 计网实验,启动
    • 忘记下载软件了,放在明天了
  • 操作系统实验,再写一个实验报告
    • 进程同步算法,Java 实现 ✔
  • 了解下人工智能算法
    • 了解了,没啥用
  • Memory API 接口开放平台,持续优化
    • 优化个几把,根本不想敲代码
  • JUC 巩固复习
    • 奶奶的,今天时间都花在 MySQL 索引上了,今晚快速过一遍,明天看

索引下推:

在传统的MySQL查询执行中,当使用联合索引进行查询时,MySQL会首先通过联合索引找到满足第一个查询条件(例如a > 1)的主键值。然后,MySQL会使用这些主键值去主键索引中获取完整的行数据,再对这些行数据是否满足其他查询条件(例如b = 2)进行检查。如果一个行数据满足所有的查询条件,MySQL才会将其添加到结果集中。这种传统的查询执行方式需要多次回表查询,效率相对较低。

而引入索引下推优化后,MySQL在联合索引遍历过程中会直接利用联合索引中的部分字段作为判断条件,过滤掉不满足条件的记录,而不需要回表查询。这样可以减少回表操作的次数,提高查询效率。

具体来说,当MySQL使用联合索引进行查询时,它会首先扫描联合索引的B+Tree,找到满足第一个查询条件(a > 1)的主键值。然后,对于每个找到的主键值,MySQL会使用这些主键值去主键索引中获取对应的行数据。在获取到这些行数据后,MySQL会进一步检查这些行数据是否满足其他的查询条件(b = 2)。在这个检查过程中,MySQL会利用联合索引中的部分字段作为判断条件,直接过滤掉不满足条件的记录。这样,只有当一个行数据满足所有的查询条件时,MySQL才会将其添加到结果集中。这种利用联合索引进行条件过滤的方法减少了回表操作的次数,提高了查询效率。

综上所述,索引下推优化是一种利用联合索引进行查询优化的技术,可以减少回表操作的次数,提高查询效率。与传统的回表查询相比,索引下推通过在联合索引遍历过程中进行条件过滤来减少回表次数。

现阶段的任务梳理:✔

学期作业:

  • Python 课设、人工智能课设、Java 课设
  • 通识课论文、习概论文
  • 计网实验、操作系统实验、C++ STL 实验

八股吟唱计划:每日 Java 八股(以 JavaGuide 为主),备战寒假实习

项目优化:优化 Memory API 接口开放平台、Memory 聚合搜索平台

每日力扣算法打卡:每日至少 4 题

英语提升计划:每日听力训练 + 报刊阅读

Spring 成神之路:深入学习 Spring 框架

高并发 40 讲:高性能、高可用、可扩展

每日 Java 基础:提升码字能力,理论掌握的再扎实也要能写代码啊

2023/11/22

力扣算法打卡,Day13

Spring 成神之路(@Import),Day7 ✔

英文水平提升计划(200 个单词,一篇英文报刊),Day7 ✔

Java 八股吟唱(索引底层数据结构、索引类型、最左匹配原则、索引下推、创建合适的索引),Day5 ✔

每日实习面试准备,Day4

妈的,到了晚上才记得写总结

上午看了 C++ STL 的函数对象和容器相关部分

下午看了操作系统的进程调度方面

今天没啥好总结的,上了一天课,就是那些必做的事情,待会儿罗列一下

彻底明了了 I/O 模型是怎么一回事了

2023/11/23

力扣算法打卡,Day14

Spring 成神之路(@Import),Day8

英文水平提升计划(200 个单词,一篇英文报刊),Day8

Java 八股吟唱(索引底层数据结构、索引类型、最左匹配原则、索引下推、创建合适的索引),Day6

每日实习面试准备,Day4

  • 今天课最多了,玩玩
  • 晚上打通轴心国第二战役

2023/11/24

力扣算法打卡,Day15

Spring 成神之路(@Import),Day9

英文水平提升计划(上午四页单词),Day9 ✔

Java 八股吟唱(并发事务可能会引发的问题,SQL 标准规定的四种事务隔离级别),Day7 ✔

每日实习面试准备,Day4

总结:近几日的每日任务安排的很稀碎,好像进步不大的样子

  • 算法方面,越发疲倦了,这是一个必经的阶段,熬过这一阵子,就能重回正轨了
  • 项目优化:前天写 Memory API 接口开放平台,只是想着完成一下页面优化,却想不到扩展什么新功能了
    • 这个确实也算正常现象了,这段时间参考鱼友笔记,想想项目还有什么优化点,快速完成优化
    • 要完全熟悉项目结构,能流畅地复述整个项目流程,作为我的主打个人项目之一,肯定要重视起来
  • 八股吟唱:最近在过 MySQL 相关八股,重点是索引和 SQL 语句的执行流程,现在已经有相关了解了
    • 再快速巩固复习一遍锁机制、事务隔离级别、日志后,直接转战 Redis,后续再慢慢复习
    • JVM、JUC 的巩固复习也要抓紧了,开始过第二轮
  • 英语、高并发、每日 Spring、每日阅读、面试准备等等,同时进行
    • 每日阅读
    • 项目上线
    • 办公软件操作学习

MySQL,事务篇

  • 更加深入理解了 MySQL 中的事务(事务是如何工作的)
  • 事务的特性
  • 并发事务可能会引发的问题:脏读、不可重复读、幻读
  • SQL 标准规定的四种事务隔离级别,事务隔离级别是怎样解决并发事务可能会引发的问题的
  • 这四种隔离级别具体是如何实现的呢?
  • 什么是 MVCC?什么是 Read View?Read View 在 MVCC 中是如何工作的?

今晚久违地处理了下新博文的标题和副标题事宜,好久没有这样在博客写总结了,最近都在记忆 Java 相关八股

今天就到这里吧,剩下的时间我要自由安排,很喜欢一句诗词:

今朝有酒今朝醉,明日愁来明日愁

2023/11/25

力扣算法打卡,Day16 ✔

Spring 成神之路(@Import),Day10

英文水平提升计划(完成两个视频的英语学习),Day10 ✔

Java 八股吟唱( ),Day8 ✔

每日实习面试准备,Day5

美好的一天又开始了,Hiahiahia~

今早任务:

  • 完成力扣算法题打卡 ✔
  • Python 大作业开个头

    • 学习了下人脸识别,简单了解了下识别效果 ✔
    • Python 大作业开了个头,感觉没我想的那么简单,Python 基础不扎实的我还得花多点时间来完成这个作业 ✔
  • 计网实验开个头

    • 软件安装成功,真 ”开了个头“ ✔
  • 完成 MySQL 锁、事务、日志相关八股记忆

    • 下午状态不够好,晚上再看
  • 简单思考 Memory API 接口开放平台的优化思路

    • 下午心情很好,感觉生活没有什么过不去的坎了👏
    • 下午尝试做个开发者文档,睡前搞搞
    • 这 React 还真不好写,写个分文件都他妈费劲
  • 有时间的话,简单尝试优化一下简历(专业技能的撰写)

  • 英语听力

    • 完成两个视频的英语学习 ✔

2023/11/26

力扣算法打卡,Day17 ✔

Spring 成神n之路(@Import),Day11

英文水平提升计划(一篇英文报刊),Day11 ✔

Java 八股吟唱(),Day10 ✔

每日实习面试准备,Day6

今日任务:

  • 先不罗列了,简单看看博文和八股吧
  • 今天的主要想法还是想快速上线一个自己的网站(开发者文档)
  • 简单写一些下午任务吧

下午任务:

  • 完善开发者文档,并尝试在服务器上快速部署

  • 完善 Memory API 接口调用页面,确保每个接口都有各自的接口参数信息

  • 尝试过一遍 LRU 的实现原理

  • 过 Java 八股:快速过一遍 JVM + JUC,再找找看合适的博文,巩固记忆

  • 完善 Python 大作业

  • 把轴心与同盟最新一关卡拿下(重点)
1
pnpm create vuepress-theme-hope hope-project		#该目录下直接下载安装主题

2023/11/27

力扣算法打卡,Day18 ✔

Spring 成神n之路(Spring Bean 的生命周期、简易版 Spring 的实现),Day12

英文水平提升计划(几个单词,一篇报刊),Day12 ✔

Java 八股吟唱(无),Day10 ✔

每日实习面试准备,Day7 ✔

今日学习成果:Python 大作业有了眉目,更加具体的想法和开发流程、开发文档,统统在《探索Python爬虫的无限可能性:基础与应用》中记录

今日任务盘点:

Tonight:

哎,全局安装 Vuepress 不支持了,本来挺好用的:

1
yarn init / npm init
1
yarn global add vuepress / npm install -g vuepress
  • 直接在 Github 下载了官方文档源码,呃,还是局部安装吧

下载地址:vuejs/vuepress at v1.9.10 (github.com)

  • 拉取代码后执行依次以下命令,即可成功在本地部署文档站点:
1
yarn install
1
yarn dev
  • 效果如下:

image-20231127233627342

2023/11/28

力扣算法打卡,Day19

Spring 成神n之路(Spring Bean 的生命周期、简易版 Spring 的实现),Day13

英文水平提升计划(一篇报刊),Day13 ✔

Java 八股吟唱(),Day11

每日实习面试准备,Day8

又是梳理近期计划的一天

  • 上午计网课划水,考虑了 Python 工具包的新功能

    • 二维码分享给好友使用

    • 时钟+天气

    • 快捷启动窗口

    • 获取本机信息 + 网速测试

    • 艺术名生成

    • 英汉互译窗口设计

  • Spring SPI 了解,Bean 生命周期,实现一个简易版的 Spring

  • JVM,JUC

  • 操作系统,计算机网络

  • 每日力扣算法题打卡

  • 每日英语听力,单词记忆,报刊阅读

  • Java 基础

  • 项目优化,文档编写,简历迭代

我说什么来着?方向明确了,搞了三天的文档站点终于部署成功了:

image-20231128161147218

今天的阅读到此为止了,全新的阶段计划:

  • 实现 Python 的讯飞星火 API接口调用

  • 总结需要记忆的 Java 八股:Java 基础、集合、并发、JVM、IO流、MySQL、Redis、ES、微服务,应该要划分的更加细致一些,总而言之,这又是全新的一轮八股记忆,和以往不同,这次要尽量把重难点的、容易忘记的知识点,用自己的话说出来,写下来

  • 至于操作系统,计算机网络,也是很重要的,虽然已经过了几遍了,但还是容易忘,就是因为光忙着记忆不总结了

  • 还有俩项目:接口开放平台和 聚合搜索平台,关于这两个项目的业务流程、开发中遇到的挑战,这些问题是很关键的,直观体现出你的项目开发水平,简单讲,就是能证明这项目是你做的,不是从哪个旮旯抄来的。

  • 那么对于项目的八股记忆,我的想法是星球面试题总结 + 鱼友面经,只要多看一篇面经,那就多了一次面试经验

  • 先简单写这些吧

控制台-讯飞开放平台 (xfyun.cn)

2023/11/29

人工智能的基本原理和发展历程:

科普:何为人工智能,人工智能的发展历程、意义和未来 (baidu.com)

揭秘人工智能:从基础定义到未来发展,一篇掌握! (baidu.com)

一文概览人工智能(AI)发展历程 - 知乎 (zhihu.com)

人工智能简介

  • 什么是人工智能?(造福人类)
  • 人工智能的应用:
    • 人工智能渗入到日常生活中,其应用非常广泛,包括自动驾驶、机器人、语音识别、图像识别、智能客服、智能家居、医疗诊断等等领域,正在改变我们的生活和工作方式,带来了诸多便利和创新。
    • AI 模型

人工智能涉及内容:

  • 人工智能涉及领域
    • 人工智能涉及到多个领域和技术,包括机器学习、深度学习、自然语言处理、计算机视觉等,它们相互交叉融合,形成了强大的智能算法和技术体系。
  • 学派

人工智能的发展历程(里程碑事件)

  • 五个阶段

人工智能的意义:

  • 人工智能的意义在于,它能够让机器具有智能,通过模拟人类思维和学习能力,完成许多复杂的任务和决策,从而使人类生活更加便捷、高效、安全。
  • 同时,人工智能还能够解放人类的生产力,提高生产效率和经济效益,为人类社会带来巨大的发展和进步。但同时,人工智能也带来一些风险和挑战,例如数据隐私、道德伦理等问题,需要我们注意并妥善解决。

人工智能(AI)未来趋势

  • 智能制造:人工智能将会在工业生产和制造领域发挥重要作用,可以实现自动化、智能化的生产过程,提高效率、降低成本,实现个性化定制生产。

  • 智能交通:人工智能将会帮助我们实现更加智能化的交通管理,包括交通流量控制、交通预测、自动驾驶等领域,提高交通效率和安全性。

  • 医疗保健:人工智能在医疗领域的应用将会使诊断和治疗更加精准、高效,例如通过图像识别技术帮助医生更好地进行肿瘤筛查和诊断。

  • 教育:人工智能可以为学生提供更加个性化和定制化的学习体验,能够根据学生的兴趣和能力自主设计和推荐学习内容。

  • 社会服务:人工智能将会在公共服务领域产生深远的影响,例如智能城市、智能环保、智慧政务等方面,可以帮助政府更加高效地提供服务。

谈一谈我对人工智能的理解

今天的阅读到此为止了,全新的阶段计划:

  • 实现 Python 的讯飞星火 API接口调用

  • 总结需要记忆的 Java 八股:Java 基础、集合、并发、JVM、IO流、MySQL、Redis、ES、微服务,应该要划分的更加细致一些,总而言之,这又是全新的一轮八股记忆,和以往不同,这次要尽量把重难点的、容易忘记的知识点,用自己的话说出来,写下来

  • 至于操作系统,计算机网络,也是很重要的,虽然已经过了几遍了,但还是容易忘,就是因为光忙着记忆不总结了

  • 还有俩项目:接口开放平台和 聚合搜索平台,关于这两个项目的业务流程、开发中遇到的挑战,这些问题是很关键的,直观体现出你的项目开发水平,简单讲,就是能证明这项目是你做的,不是从哪个旮旯抄来的。

  • 那么对于项目的八股记忆,我的想法是星球面试题总结 + 鱼友面经,只要多看一篇面经,那就多了一次面试经验

  • 先简单写这些吧

  • 现在这里简单捋一下近期需要记忆的八股吧:

    • Java 基础:
    • 集合:
    • 并发:
      • 进程、线程
      • 并发、并行
      • 同步、异步
      • 死锁
      • 乐观锁和悲观锁
      • volatile 关键字
      • sychronized 关键字
      • ReentrantLock
      • ThreadLocal
      • 线程池
      • AQS
      • Future
    • JVM:
      • Java 内存区域详解
      • JVM 垃圾回收详解
      • 类加载过程
      • 类加载器
      • 重要的 JVM 参数总结
      • JDK 新特性
    • I/O 流:
    • MySQL:
      • 索引
      • 日志
      • 事务隔离级别
      • 存储引擎
      • SQL 执行计划
      • MVCC
    • Redis:
    • 微服务:
  • Python:

    • 天气小程序
    • 本机 IP 地址、网速测试小程序
    • 文字提取小程序
    • 爬取图片小程序
  • vuepress-theme-vdoing (xugaoyi.com)

2023/11/30

  • 昨天晚上睡觉前,又简单了解了下 Vuepress 的侧边栏配置,奶奶的,谁能一次性给我把这玩意儿讲清楚啊,官方文档太不走心了

上午简单看了看八股,今天总结:

晚上搞了:Python、计网、Vuepress

vuepress—–4、侧边栏-CSDN博客

VuePress 侧边栏使用详解_vuepress md文件生成侧边栏目录-CSDN博客

2023/12/01

11 月份的最后一天就这样稀里糊涂地过去了

简单说说昨天学到了什么吧:

  • Python 大作业,我在疯狂地搞 Python 大作业,赶进度,目前能拿得出手的功能包括:
    • 办公:简易笔记本、英汉互译、AI 智能对话
    • 摸鱼:暂无(拼图、扫雷)
    • 其他:天气预报、网速测试、文字提取、图片爬取
    • 开发者文档:Memory Tools 开发者文档
  • 那么目前待解决的问题有哪些呢?
    • 功能编写的话这里按下不表,小游戏开发、图片爬取解决
    • 主菜单的页面设计
    • 功能的聚合
  • 简单实现一个功能:当版本更新后,能在本地同步实现更新

上午了解了人工智能相关知识,基本明确了汇报要点

目前明确了三大杀器:专业能力、沟通能力、格局

今日待解决:

  • 实操
    • Spring SDK 开发
  • 理论:
    • 八股

我的规划?我有很多想法,目前搭建了个人博客、个人文档,未来想要做大做强,对外输出,运营公众号啥的

你能讲一下什么是 Maven 嘛?

Maven 是什么,Maven 是一个项目构建和管理工具,是 Apache 下的一个纯 Java 开发的开源项目,我们现在基本都在使用 Maven 来构建和管理 Java 项目,当然也有其他类似的的项目构建和管理工具,比如 Gradle。

那么我们为什么要使用 Maven 呢?使用它有什么好处?我们首先要认识到,在没有使用 Maven 工具之前,项目构建和管理存在很多问题:

  • 依赖关系管理困难:在手动构建项目时,需要手动下载和添加项目所需的依赖库,这不仅耗时而且容易出错。此外,如果项目中有多个模块,需要确保每个模块都有正确的依赖版本,这需要花费大量时间和精力。
  • 构建过程繁琐:在没有自动化构建工具的情况下,开发人员需要手动编译、测试和打包项目。这不仅耗时,而且容易出错。此外,如果项目中有多个模块,需要分别构建每个模块,这会进一步增加构建的复杂性。
  • 项目结构五花八门:在没有统一的项目构建和管理规范的情况下,每个项目可能会有自己独特的项目结构,这使得项目之间的协作和交流变得困难。
  • 版本控制和发布困难:在没有Maven之前,版本控制和发布需要手动完成,这不仅耗时而且容易出错。此外,如果项目中有多个模块,需要分别发布每个模块,这会进一步增加发布的复杂性。
  • 团队协作效率低下:在没有Maven之前,团队成员之间需要手动共享项目文件和依赖库,这不仅效率低下,而且容易出错。此外,如果项目中有多个模块,需要分别管理每个模块的代码和依赖库,这会进一步降低团队协作的效率

总之,没有Maven之前,项目构建和管理可能会面临许多痛点,包括依赖关系管理困难构建过程繁琐项目结构五花八门版本控制和发布困难以及团队协作效率低下等问题。而 Maven 等自动化构建工具的出现有效地解决了这些问题,提高了项目构建和管理的效率和准确性。

那么Maven 项目的结构是怎样的呢?通常包括以下几个部分:

  • src:包含了项目所有的源代码和资源文件以及测试代码。其中src/main/java这个目录下储存java源代码,src/main/resources储存主要的资源文件,比如spring的xml配置文件和log4j的properties文件,src/test/java存放测试代码。
  • target:编译后内容放置的文件夹。
  • pom.xml:这是Maven的基础配置文件,也是 Maven 项目核心配置文件,相当关键,用于配置项目的基本信息、依赖范围管理、解决依赖冲突、实现分模块开发、多环境配置

其他相关的还有:Maven 的私服搭建、配置 Maven 镜像源、Maven 的生命周期

1
Maven的生命周期是对所有的构建过程进行抽象和统一,它包含了项目的清理(clean)、初始化(validate)、编译(compile)、测试(test)、打包(package)、安装(install)、验证(verify)、部署(deploy)和站点生成(site)等几乎所有的构建步骤。在Maven中有三套相互独立的生命周期,分别是Clean Lifecycle、Default Lifecycle和Site Lifecycle。
1
2
3
4
5
6
7
install和package都是Maven生命周期中的阶段,但它们执行的操作和目的有所不同。

install阶段主要是将项目打包为jar文件,并将该文件安装到本地仓库中,以便其他项目可以重复使用该项目的依赖关系。install阶段通常在所有测试运行完毕后执行,它不仅打包了可执行的jar文件,还打包了测试jar文件和源码jar文件。

而package阶段主要是将项目打包为jar文件,该文件包含了项目的可执行代码和相关资源,并将其放置在项目的target目录下。这个阶段通常在compile阶段之后执行,它会生成一个可执行的jar包,可以在本地运行或者部署到其他环境中。

总的来说,install和package都涉及到项目的打包,但install是将项目打包到本地仓库中,以供其他项目使用;而package是将项目打包成可执行的jar包,以便在本地或部署到其他环境中运行。

说出你知道的所有Java里面保证线程安全的方式

Java中保证线程安全的方式包括:

synchronized关键字:通过synchronized关键字可以实现对代码块或方法的同步,保证同一时刻只有一个线程执行该代码块或方法,从而避免多线程并发访问造成的数据不一致性。

ReentrantLock:ReentrantLock是显示锁,通过lock()和unlock()方法来实现对临界区的加锁和解锁,提供了比synchronized更灵活的锁操作。

Atomic类:java.util.concurrent.atomic包下的Atomic类(如AtomicInteger、AtomicLong等)提供了原子操作,保证了对变量的操作是原子性的,从而避免了多线程并发访问带来的数据竞争问题。

使用线程安全的集合类:如ConcurrentHashMap、CopyOnWriteArrayList等,这些集合类内部实现了线程安全机制,可以在多线程环境下安全地进行操作。

使用ThreadLocal变量:ThreadLocal可以实现每个线程拥有自己独立的变量副本,从而避免多线程之间的共享变量带来的线程安全问题。

《被讨厌的勇气》读完!

晚上看了会书,顺便花一块钱参加了个周赛,捞4天的会员卡,值了

三天内把《网络是怎样连接的》完整地过第一遍,这两天开始看 Redis 的八股文了

  • 还是感觉八股文要在上午和下午看,实操要在中午和晚上做,这样子效率会很高
  • 从明天开始,每天一套六级真题(除听力外),能做到吗,六级也是这个阶段的重头戏了

熬了四天的侧边栏配置,好像有点眉目了了:

image-20231202001126135

2023/12/02

人工智能 PPT

Vuepress 侧边栏配置:

  • 不同页面显示不同的侧边栏
  • 侧边栏分组
  • 分组可折叠???
  • 侧边栏展示标题深度
  • 两个全局配置:活动标题链接(默认开启)和展开所有标题链接(默认关闭)
  • 自动生成侧边栏:.js 配置方式 + .md 配置方式,后者更灵活,能配置标题
  • 禁用侧边栏

待解决:

  • 选中导航栏后,默认为第一个子文件,也就是说,导航栏下没有默认 README.md 页面

  • 了解 Markdown 开头配置文件的作用

  • Front Matter | VuePress (vuejs.org)

    提示

    在 VuePress 中,Front matter 是 可选的

  • 目录000

手把手教会你使用Markdown【从入门到精通一篇就够了】-CSDN博客

Typora2022最新破解教程 完美永久激活Typora (itmind.net)

vuepress-theme-vdoing (xugaoyi.com)

Markdown使用教程 | Evan’s blog (xugaoyi.com)

Vuepress 还作了 markdown 拓展:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
::: tip
这是一个提示
:::

::: warning
这是一个警告
:::

::: danger
这是一个危险警告
:::

::: details
这是一个详情块,在 IE / Edge 中不生效
:::

妈的,终于把 Typora 激活成功了,凑合着用了两个月

image-20231202142443524

玩了一下午了,开学开学

API 开放平台优化思路:

image-20231202195702674

聚合搜索平台优化思路:

image-20231202195731209

真给我恶心到了,自定义 Starter,搞了一个半小时还没好:

image-20231202213306291

2023/12/03

英语六级冲刺计划,Day 1

上午任务:过一遍《网络是怎样连接的》第二章 ✔

中午,过第三章,晚上过第四章

下午:

  • Canal 监听 MySQL 数据流水,实现实时同步
  • Kibana 监控面板 ✔
  • Jemter 压力测试
  • 相关简历优化、项目优化、Gitee 仓库优化
  • 下午总结一番 Vuepress

如何让你的笔记更有表现力 | vuepress-theme-vdoing (xugaoyi.com)

中午玩玩 Kibana 可视化看板 ✔

[ElasticSearch的搜索建议功能suggest search(completion suggest)_es suggest-CSDN博客](https://blog.csdn.net/qq_41489540/article/details/121865225?ops_request_misc=%7B%22request%5Fid%22%3A%22170159810516800211543981%22%2C%22scm%22%3A%2220140713.130102334.pc%5Fall.%22%7D&request_id=170159810516800211543981&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-121865225-null-null.142^v96^pc_search_result_base5&utm_term=es suggest 搜索建议&spm=1018.2226.3001.4187)

1
2
3
4
5
6
7
8
9
10
{  
"query": {
"terms": {
"search_terms": {
"order": "desc",
"size": 10
}
}
}
}

2023/12/04

英语六级冲刺计划,Day2 ✔

vuepress右侧小目录 二级目录 右侧锚点 模拟Docusaurus效果 - 丁少华 - 博客园 (cnblogs.com)

热搜词实现、Canal、Jemeter 压力测试、搜索建议

了解了下 HTTP 的相关知识,了解了 Nginx 的相关配置,明天找时间总结下

下午在操场走了走,突然冒出来一个想法:构建我的知识图谱,总结我所掌握的知识,查缺补漏

今晚计划:

  • Canal ✔

  • 开发者文档

  • Python 新功能 ✔

  • Vuepress 总结

  • 搜索建议

  • 定时爬取

    • 定时任务巩固复习(Java,Spring)
    • 简单巩固复习了下
  • 压力测试(Jmeter)

  • Gitee 持续优化

  • 睡觉前简单地测试了下定时任务的编写,结果发现没有开启 Elasticsearch 服务,Memory 聚合搜索平台竟然启动不了了,

  • 目前还没有发现是什么原因导致的,是项目启动时,把 PostDao 作成 Bean ,再检查一下

  • 今天遗留下来的任务还有很多,明天继续完成
  • 在线Cron表达式生成器 (qqe2.com)

2023/12/05

时间过得真几把快,就五号了

上午开始着手总结计算机网络的思维导图了,一方面是巩固所学知识,另一方面更加方便梳理整体脉络,讲给别人能更清楚些

每次都是搞前端页面来

Memory 聚合搜索平台,实现定时爬虫,爬取掘金今日热榜文章(分类爬取)

Vuepress,开发者文档编写

很好,爬取不了掘金热榜文章

《网络是怎样连接的》第三章完结,第四章启动

进一步明确最近的任务:

  • 最近的五大任务:文档编写、项目上线、算法学习、期末准备、英语冲刺

  • 文档站点要直观大方,提供可体验的项目入口

  • 做好 Nginx、HTTP 的相关知识总结

  • 在学习过程中的难点?或者说最令你印象深刻的是什么?做开发,一定要实践,口说无凭,光说不练假把式。举两个例子吧:AOP 的实战、Docker 部署项目

  • 打造自己的博客网站,了解到了 Hexo、Vuepress、Hugo 等静态站点构建工具。我用 Hexo 构建了个人博客站点,用 Vuepress 构建了开发者文档,比方说我上线的两个网站。写文档是很重要的,就跟代码中写注释一样,一个优秀的文档能让读者了解到这个项目是做什么的,与同类型的系统相比,具备什么样的优势,还应该列举一些该软件下载安装或者该系统使用过程中可能会出现的一些问题的解决方案,最好能提供一个在线可访问的地址,让用户直接上手体验,更加直观感受该项目,收集用户反馈,做好后续的持续维护优化

  • 他妈的几天没做算法题了,还每天四道题,简单题做完之后,进度就推不下去了,只好是每天两道三道的样子,再看看星球的回溯算法练习吧

  • Memory 聚合搜素优化:搜索建议、定时爬取、开发者文档、限流、异步

晚上做了一套六级题,感觉很好,手感回来了

欢迎 - Qi-API 接口开放平台 (qimuu.icu)

快速上手 | vuepress-theme-vdoing (xugaoyi.com)

徽章制作:Github 徽章shields使用教程_shields使用说明-CSDN博客

刚刚看了看,文档的右侧目录生成,好像 Vuepress 不支持,这个功能是 vdoing 才支持的,明天尝试导入配置,再试试

2023/12/06

  • 简单的 Memory-API-开发者文档:
  • 已经能够掌握 Vdoing 快速搭建并部署文档站点了,睡觉前再看会儿书

2023/12/07

上午任务:(没错,今天一点都不墨迹,直接罗列任务)

开发者文档。昨天已经成功完成了 vdoing 主题文档站点的简单配置和 Gitee 部署,这就是一个漂亮的开始

那这个工作给我带来了什么好处呢?那好处可太多了:

  • 再次熟悉了一遍基于 Vuepress(Vdoing)搭建文档站点并部署的流程,以后如果想要快速搭建静态博客网站,就会绰绰有余

  • Memory 聚合搜索平台、Memory API接口开放平台、Python 期末课设,都需要使用到这样的开发者文档

  • 想起来聚合搜索平台的优化方案了:搜索建议、定时爬取、数据同步(Canal、Logstash)、热搜词统计
  • API 接口开放平台优化方案:接口调用页面的展示效果(接口描述、调用体验)、丰富的接口、SDK 开发()
  • 最重要的就是项目的部署上线了,计划优先将 API 接口开放平台上线,给聚合搜索平台打造一个优秀的官方文档

  • 以上就是近段时间对项目优化的全部思路了,这些内容我一直都在同步推进,希望早日完成吧

Java 八股吟唱:这两天看得少了,这可不是什么好兆头,要时刻保持对知识的新鲜感。不知道应该看什么?看这里:

Java 基础:

集合:

并发:

  • 进程、线程
  • 并发、并行
  • 同步、异步
  • 死锁
  • 乐观锁和悲观锁
  • volatile 关键字
  • sychronized 关键字
  • ReentrantLock
  • ThreadLocal
  • 线程池
  • AQS
  • Future

JVM:

  • Java 内存区域详解
  • JVM 垃圾回收详解
  • 类加载过程
  • 类加载器
  • 重要的 JVM 参数总结
  • JDK 新特性

I/O 流:

MySQL:

  • 索引
  • 日志
  • 事务隔离级别
  • 存储引擎
  • SQL 执行计划
  • MVCC

Redis:

微服务:

算法:每天做两三道保持手感,可恶啊昨天就没做

期末准备,不在这念叨了,开始准备吧

2023/12/08

昨天的任务再重复一遍:

开发者文档。昨天已经成功完成了 vdoing 主题文档站点的简单配置和 Gitee 部署,这就是一个漂亮的开始

那这个工作给我带来了什么好处呢?那好处可太多了:

  • 再次熟悉了一遍基于 Vuepress(Vdoing)搭建文档站点并部署的流程,以后如果想要快速搭建静态博客网站,就会绰绰有余

  • Memory 聚合搜索平台、Memory API接口开放平台、Python 期末课设,都需要使用到这样的开发者文档

  • 想起来聚合搜索平台的优化方案了:搜索建议、定时爬取、数据同步(Canal、Logstash)、热搜词统计
  • API 接口开放平台优化方案:接口调用页面的展示效果(接口描述、调用体验)、丰富的接口、SDK 开发()
  • 最重要的就是项目的部署上线了,计划优先将 API 接口开放平台上线,给聚合搜索平台打造一个优秀的官方文档

  • 以上就是近段时间对项目优化的全部思路了,这些内容我一直都在同步推进,希望早日完成吧

Java 八股吟唱:这两天看得少了,这可不是什么好兆头,要时刻保持对知识的新鲜感。不知道应该看什么?看这里:

上午简单看看力扣算法题 + 程序猿简历技巧

Netty 网络编程

Nginx 部署

SDK

AOP 实战

第三个地方:

我们之所以会感到不开心,感到烦闷

都是因为在我们心底,没有第三个地方

这个地方独立于学校里的同学琐事、课堂作业,只要我们到达这个地方,所有的烦恼都能一扫而空

这个地方可以是和最要好的朋友朋友的一场聚会

可以是读自己最喜欢的一本书

可以是追自己最喜欢的一部剧

总之它能让你暂时忘记你的烦恼,忘记周遭的一切,全身心地投入到其中并享受自我

去寻找这样一个属于自己的地方吧

借助这个暂时的空间,排解苦恼

在一天忙碌的学习或者工作生活之后,在被作业或者工作折磨了一晚上之后,去到这样的第三个地方,彻底地排解苦恼,哪怕这只是暂时的

2023/12/09

期末复习计划开始了,夹杂着六级

中午做了最后一份六级题,整体过了一遍计算机网络

  • 期末复习计划:课后题 + CSDN 期末习题集

  • 今晚C++ 实验、计网实验、人工智能人脸识别算法、操作系统实验

  • 计网实验

  • Python 期末设计:调用外部函数(窗口打开)
  • Java 集合:

计网实验:

  • 交换机 VLAN:

image-20231209185112229

image-20231209185056332

image-20231209185121086

image-20231209185254272

2023/12/10

计网实验,搞定 ✔

操作系统实验,搞定 ✔

C++ 实验,搞定

习中特论文,搞定

SDK 开发,搞定

Python 大作业突破 ✔

今天也要坚持做俩道算法题

六级 ✔

人工智能的最简代码实现,号称估值一个亿的代码:

image-20231210220648567

完成了简单的贪吃蛇小游戏,明天开始继续学习算法、优化项目,开发者文档的编写迫在眉睫了,就算项目不上线,有一个漂亮的官方文档也是很不错的,实现起来也比较简单

是时候写一份 2023 年度总结了,很多人都在写,回顾这一整年来学到了什么,有没有更加成熟,对未来的发展方向是否更加明确,对现在的自己是否满意,每天过得开心吗?还有哪些方面有进步空间,希望未来一年内、三年内能有什么提升

2023/12/11

完善Python开发者文档 / 用户操作手册

用例图、类图、对象图

人工智能 PPT ✔

Java 八股

计算机网络课后习题:IP 协议

2023/12/12

基本完成 Python 大作业,开始着手撰写用户操作手册 + 开发者文档

人工智能 PPT 彻底完成✔

大晚上的,给别人作情感分析?

2023/12/13

操作系统:前三章完成

JVM 八股巩固

MemoryTools 开发者文档:

1
2
3
4
5
6
7
8
9
10
我写了一个工具集合软件:MemoryTools,主要功能介绍如下:
1、简易笔记本:您可以用它来编辑文本文件,也可以快捷地统计文本字数
2、英汉互译:这是一个简单且好用的翻译软件,祝您使用愉快!
3、天气查询:输入城市名,即可极速查询该城市的实时天气状况!
4、智能AI对话:欢迎使用讯飞星火API接口,实现防伪验证,实现AI对话
5、本机信息:获取本机IP、域名、主机名、上传下载速度
6、贪吃蛇:简单的贪吃蛇小游戏,控制小蛇吃食物,越吃越长
7、图片下载器:输入想要检索的内容,快速提供海量图片的访问地址,可供下载
8、图表分析:导入一张Excel表,快速分析生成图表
请你结合以上功能介绍,适当润色扩展一下,要求介绍更加详细,语句通顺,更有吸引力
1
2
3
4
5
6
7
8
9
10
我还想介绍一下关键技术难题和突破,主要来自以下这几方面:
Python 的基础语法巩固(文件读写 IO流、调用外部函数、面向对象编程、分文件编写)、
导入第三方库 tkinter 实现界面编程、
调用 Python 第三方库 translate 实现文本翻译、
调用外部 API 接口实现智能AI对话、
使用第三方库 requests 实现简单的爬虫功能,爬取指定页面图片信息、
调用第三方库 socket 快捷获取本机信息、
使用 pyinstaller 实现将程序打包为可执行文件、
使用 Vdoing 主题构建静态文档站点,实现开发者文档的编写。

2023/12/14

又是满课的一天

基本完成 Python 大作业的开发者文档,深度学习待完成

操作系统,进程同步,完结。还有很多概念没搞清楚

C++,给出期末考试形式、考试范围

UML图已给出期末考试题型、分值

项目优化:搜索建议、SDK 开发

Java 八股:Java 基础、Java 并发编程、JVM

image-20231214225024467

image-20231214225002247

image-20231214225506799

image-20231214225520127

image-20231214225440761

2023/12/15

未命名绘图.drawio - draw.io (diagrams.net)

这个绘图工具原来是关联 GitHub 仓库的

image-20231215090651251

使用 Nginx 部署静态页面尝试成功!(好久之前的想法了,终于实战了一把)

简单尝试了下使用 Nginx 部署 Vuepress 构建的静态文档站点,这样的使用 Gitee / GitHub 的 Page 服务托管吧

今晚做准备:使用云服务器上的 Nginx 部署静态网站,顺带复习 Linux 相关操作

常见的排序算法:冒泡排序、选择排序、插入排序、快速排序(看不懂,撤了撤了 🤡,明天四六级,心有点乱

AOP 实战(明天看,明天必看)

SpringBoot 自定义注解及 AOP 的开发和使用 - 掘金 (juejin.cn)

Spring AOP - 你真的会用么? - 掘金 (juejin.cn)

Spring Boot面试题(总结最全面的面试题!!!) - 掘金 (juejin.cn)

泛型实战(通用返回值,明天看)

SDK 开发

动态代理的实现

看了星球的几篇面经,感觉很不错,继续准备寒假实习

今晚完成 Java 基础八股文的巩固复习,近段时间巩固 Java 并发 + JVM

项目相关想法:Memory 聚合搜索平台,尝试上线;Memory API 接口开放平台,开发者文档

2023/12/16

六级备考,启动!

Spring Boot 巩固学习:

Elijasmine 的个人主页 - 文章 - 掘金 (juejin.cn)

SpringBoot系列(一) SpringBoot启动流程 - 掘金 (juejin.cn)

面试题:谈谈Spring用到了哪些设计模式? - 掘金 (juejin.cn)

SpringBoot的starter到底是什么? - 掘金 (juejin.cn)

阿里一面:说一说Java、Spring、Dubbo三者SPI机制的原理和区别 - 掘金 (juejin.cn)

三分钟了解springBoot 之spring.factories扩展机制 - 掘金 (juejin.cn)

springboot 自定义starter的过程以及遇到的问题 - 简书 (jianshu.com)

  • 完整看了一遍 苏三说技术 的 Spring Boot 的 starter 机制,搞了一早上没搞好,明天再试试吧

2023/12/17

从昨天晚上一直到今天中午,一直在外头瞎逛,差点把平板给搞丢了,还好最后找回来了

找个时间,记录一下这糟糕的一天

吃海底捞、搓麻将、打台球、挨冻五小时、万柏林地下停车场 🤡

今日任务:

  • 英语四六级结束,复习目标该改变:
  • 操作系统巩固复习:前四章
  • C++:继续阅读教材,滚瓜烂熟
  • 计算机网络,TCP / UDP 协议,以及题目(TCP 首部、拥塞控制、流量控制)🥞
  • Java 并发相关八股文的记忆

成功完成 Memory Tools 开发者文档编写!(第一版)

2023/12/18

Memory Tools:

  • window 界面,代码教学 ✔
  • Gitee / GitHub 地址 ✔
  • 云盘分享下载
  • 常见问题答疑 ✔
  • 操作界面画面优化 ✔
  • 完善优化流程,完善开发日志 ✔
  • 开发者文档完善:问题答疑、开发日志、开始菜单的页面优化,以及功能实现和深入学习文档编写 ✔

image-20231218103415608

今日任务盘点:

  • 操作系统前三章巩固

  • 计算机网络 TCP 连接(三次握手)、流量控制、拥塞控制 ✔

  • 完美完成 Memory Tools 开发者文档

  • 开始着手完善简历

    个人优势:

    • 搭建个人博客、熟练使用 Hexo、Vuepress 搭建静态文档站点
    • 了解基本的 Nginx 配置,尝试使用 Nginx 部署静态网页和作负载均衡服务器

我决定了,着手开始写今年的年度总结,涉及的内容也应该比较宽泛:

  • 一年来的收获
  • 对未来生活的构想

Memory Tools 开发者文档基本完成,着手进行 Java 论文:有关 Spring Boot 的一篇论文

奶奶的,pyinstaller 执行打包又报错了,明天再搞吧

2023/12/19

上午巩固复习了计算机网络:IP协议(分类编址、子网划分、无分类编址)

下午任务:

  • 操作系统第三章、第四章内容巩固复习

  • C++函数对象、容器(可选)

  • 计算机网络(IP 协议和 MAC 协议、路由转发协议、VPN、NAT)

  • Java 八股(Java 集合、Java 并发、JVM)

  • 尝试上线 Memory Search 聚合搜索平台

  • 尝试完成 Memory Sear ch 聚合搜索平台开发者文档,Memoey-API-开发者文档

  • 算法:算法通关村 Day 1 - Day 5,力扣每日算法题(150道),每日巩固复习3天,向后推进两道

  • 简历优化(开始着手完善简历):

    个人优势:
    • 搭建个人博客、熟练使用 Hexo、Vuepress 搭建静态文档站点
    • 熟练使用 Nginx托管静态文档站点、部署服务(作为网关,负载均衡)负载均衡
    • 有丰富的使用 Spring Boot 结合 Vue React 框架开发中小型项目的经验,熟练掌握 Spring Boot 集成第三方软件的经验

在线 LOGO 设计:Logo在线制作;logo设计神器 - 标小智 (logosc.cn)

开发者文档需要打包好的程序

打包好的程序需要部署成功的开发者文档

先部署?先打包?唔,先打包就行了,开发者文档的访问路径又不变

阿里云盘分享文件:得放在在资源库里,才能选择有效时限,还不支持 zip 压缩文件

敬爱的党组织:

我是一名光荣的入党积极分子,非常荣幸能够向您汇报我的思想、工作和生活情况。在这里,我想表达我对党组织的感激之情和热爱之心,同时也希望能够得到您的批评和建议,帮助我更好地成长和发展。

首先,我想谈一下我的个人经历和感悟。我从小就受到家庭和社会的影响,对党和人民有着深厚的感情。在我成长的道路上,我一直都在努力学习党的理论知识和政策法规,积极参加各种志愿服务活动,努力为社会做出自己的贡献。在工作中,我也一直秉持着为人民服务的宗旨,尽职尽责地完成每一项任务。通过这些年的学习和实践,我深刻认识到了党的重要性和党员的责任与使命,更加坚定了我要为党和人民事业奋斗终身的信念。同时,我也深知作为一名入党积极分子,应该时刻保持清醒头脑,不断增强自身的政治素质和业务能力,始终保持对党的忠诚和对人民的热爱之心。我将继续努力学习党的理论知识,不断增强自身的政治素质和业务能力,为实现中华民族伟大复兴的中国梦贡献自己的力量。

在思想上,我深刻地认识到中国共产党党员这一称号的神圣与严肃性。回想自己被党支部确定为入党积极分子的激动时刻,让我的内心充满了一种归属感。在这些日子里,在这个充满温暖、充满力量的集体中,我不断成长。“三个代表”以及科学发展观的伟大构想的提出,让我更加深刻地领会到我们党的进步性、先进性和代表性,更进一步理解了党的理论、纲领、路线、方针、政策。在平时的工作中,自己通过报刊、新闻、网络、杂志等主动地学习了解党的基础知识、理论。对党组织有了更加深刻的认识,中国共产党是推进中国特色社会主义伟大事业的政党,这更加坚定了我全心全意为人民服务、做一个优秀共产党员的决心。身为一名教师,我深知自己在理论上仍存在不足之处,所以我要把日常学习与“三个代表”以及科学发展观的精神结合起来,用党员的标准来衡量自己的言行,争取做一个模范的教师。

其次,我想说一下我对党的认识和理解。中国共产党是中国工人阶级的先锋队,是中国各族人民利益的忠实代表。党的最高理想和最终目标是实现共产主义社会制度。党的性质决定了共产党员的根本立场和唯一宗旨就是全心全意为人民服务。因此,作为入党积极分子,我们必须时刻牢记自己的职责和使命,以人民群众的需求为导向,切实解决好群众最关心、最直接、最现实的问题,不断提高人民群众的获得感和幸福感。只有这样,才能真正做到“立党为公、执政为民”,让广大人民群众感受到党的温暖和关怀。

在工作中,主管全镇学校的安全工作和财务工作,我本着精益求精的价值理念,以高度的热情、负责的态度对待工作,及时安排部署学校的各项安全工作,组织开展安全宣传教育活动;财务工作中严于律己,以身作则,廉洁从教,为学校理好财,把学校微薄的资金用到刀刃上,保质保量地完成县局和学校交给的各类工作任务。为确保全镇安全工作、财务工作的规范运转,我能够及时地多和其他同行进行沟通交流,加深理解,以高度的责任感和使命感来对待工作。在工作中,我深刻地体会到,一个人的能力是十分有限的,因而重视争取周围优秀员和其他同时的支持。我也从他们身上看到了共产党员对教育事业所起的积极作用,看到了党员全心全意为人民服务的精神。因此,我更重视不断加强自身修养,用党性来武装自己,积极与党组织保持联系,在教育岗位上更好地发挥了自己的作用。

同时,我也深刻认识到党的事业需要我们每一个人的共同努力和奋斗。作为一名入党积极分子,我深知自己肩负着重要的责任和使命。我将继续努力学习党的理论知识,不断增强自身的政治素质和业务能力,始终保持对党的忠诚和对人民的热爱之心。同时,我也将积极参与各种志愿服务活动和社会公益事业,为社会做出更多的贡献。我相信只有通过自己的努力和付出,才能更好地履行党员的责任和使命,为实现中华民族伟大复兴的中国梦贡献自己的力量。

在学习上,我有明确的学习目的和积极的学习态度。积极参加学校组织的业务学习和政治学习、党小组开展的党的知识学习。勤勤肯肯、踏踏实实,在具体实践中,我本着这种态度认真地努力学习,正是因为有党组织对我的关怀和帮助,有党员同志对我的鼓励和支持,自己也有一颗向党组织靠拢、按党员标准进行拼搏的心。近年来,我的专业知识和业务水平有了极大提高,了解到丰富的有关党章、党的纲领等许多知识,这些所取得的成绩是与党组织的关怀密不可分的。

同时,我深知自己离一个优秀共产党员的标准和要求还有不少差距,存在许多不足,其中最主要的是理论学习的主动性还不够,工作上缺乏创新性。对于自己的缺点与不足,我将在今后的工作中努力加以克服和改正,使自己早日成为一名优秀的共产党员。我希望党组织及时给予批评和指导,我会虚心接纳,不断改进,从思想上“入党”,在行动上做个真正的共产党员。

在未来的工作中,我将以更加饱满的热情和更加扎实的工作作风投入到工作中去。我将始终保持对党的忠诚和对人民的热爱之心,不断提高自身的政治素质和业务能力,为党和人民事业贡献自己的力量。同时,我也将积极参与各种志愿服务活动和社会公益事业,为社会做出更多的贡献。我相信只有通过自己的努力和付出,才能更好地履行党员的责任和使命,为实现中华民族伟大复兴的中国梦贡献自己的力量。

最后,我想向党组织郑重承诺:我将永远忠于党的事业,遵守党的纪律,践行党的宗旨,为实现中华民族伟大复兴的中国梦而不懈奋斗!

汇报人:XXX
XXXX年XX月XX日

首先

python多文件打包exe并实现自动更新 - 知乎 (zhihu.com)

妈的,还打算今晚结束 Memory Tools 的开发的,搞一晚上多文件打包 installer

2023/12/20

计算机网络:IP 完结

Python 大作业,imgs 打包成功

怪了,什么问题都能让我碰到:

1
2
3
4
# 初始化字符数
self.var_lbl = tk.StringVar()
# 初始化一个空字符串
self.var_lbl.set("666")
1
2
self.new_label = tk.Label(master=self.window, textvariable=self.var_lbl)
self.new_label.place(x=0, y=0)

这个动态的字符串,外部调用这个函数就不会显示,这是什么奇怪的问题?

操作系统,第三章、第八章完结

今日 + 明日任务:

  • SDK ✔
  • canal
  • 聚合搜索初步上线 ✔
  • 开发者文档编写
  • Java 八股(集合源码 + 并发 + JVM)

奶奶的,安装个 Elasticsearch 竟然需要四核 CPU,妈的上线不了了,有点可惜

image-20231220220624066

  • 那我的重心就不放在部署上线了,总结下上线经验,尝试把 Memory 缘忆交友社区 上线也不错
  • 那就是要做项目优化了,把开发者文档做好,在本地演示一遍录个视频,把远程仓库代码也做好
  • 今晚简单地对未来几天内的聚合搜索平台优化思路做了简单规划,尽快交付吧
  • Memory API 接口开放平台优化思路

2023/12/21

完成英汉互译小工具的代码改造和文档编写

操作系统第四章,开了个头

完成 Python 平时作业

完成十七周实习报告

Java 集合源码阅读 ✔

Memory 聚合搜索优化:

  • 博文搜索展示 ✔
  • 爬虫获取博文 ✔
  • 定时爬虫
  • 搜索建议
  • 搜索热词统计

具体的代码展示,明天完成

顺带记录一下,明天上午,着手记录年度总结,上午写一点,中午写一点,下午写一点,晚上写一点,写个十来天应该能完成

使用jsoup抓取和解析网页数据_jsoup爬取网页-CSDN博客

2023/12/22

有个同学分享了 Java 线程池相关知识,才发现我的博文中有关 Java 线程池的实战介绍还没完善,算是给自己留了个大坑

正好这两天开始巩固复习 Java 并发编程相关八股文了,捎带巩固复习下 Java 线程池相关知识吧

今日任务:

  • 定时爬虫

    • 中午实现爬虫,仅仅修改了下请求参数中的 userAgent,就能正常爬取文章了:
    1
    2
    3
    Document doc = Jsoup.connect(url)
    .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.81")
    .get();
  • 搜索建议

  • 搜索热词统计

  • 开发者文档初始化 ✔

  • API 新增接口:天气查询

  • 规范调用 API 接口的返回值

  • 算法:链表 + 二叉树

  • C++、操作系统进程同步(期末题库概览)、计网课后题巩固、UML 图 ✔

  • 人工智能论文、Java 论文、十七周实习报告

他爷爷的,本机爬虫被限制了

一晚上啥都没完成:

  • 本机爬虫被限制了
  • 搜索建议 Java API 实现未果
  • 热搜词建议
  • 搜索建议(估计要新建索引了):
1
2
3
// 搜索建议
SuggestBuilder suggestBuilder = new SuggestBuilder()
.addSuggestion("suggestionTitle", new CompletionSuggestionBuilder("suggestion").skipDuplicates(true).size(5).prefix(searchText));
1
2
3
4
5
6
7
8
9
10
11
12
// 分页
PageRequest pageRequest = PageRequest.of((int) pageNum, (int) pageSize);
// 构造查询
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(boolQueryBuilder)
.withHighlightBuilder(highlightBuilder)
.withPageable(pageRequest)
.withSorts(sortBuilder)
// 执行搜索建议
.withSuggestBuilder(suggestBuilder)
.build();
SearchHits<ArticleEsDTO> searchHits = elasticsearchRestTemplate.search(searchQuery, ArticleEsDTO.class);

今晚一塌糊涂,明天再慢慢捡起来吧

明日任务预先盘点:

  • 操作系统
  • 计算机网络
  • C++
  • 定时爬虫,解决爬虫被浏览器识别并阻止的问题
  • dingshi爬虫,解决热搜词的问题
  • 聚合搜索平台、接口开放平台
  • 操作系统、Java 论文、人工智能论文

2023/12/23

爬虫

1
2
3
4
5
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/memory_search?useUnicode=true&characterEncoding=utf8mb4
username: ******
password: ******
1
2
3
4
5
6
java.sql.SQLException: Unsupported character encoding 'utf8mb4'
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:130) ~[mysql-connector-j-8.0.33.jar:8.0.33]
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:98) ~[mysql-connector-j-8.0.33.jar:8.0.33]
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:90) ~[mysql-connector-j-8.0.33.jar:8.0.33]
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:64) ~[mysql-connector-j-8.0.33.jar:8.0.33]
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:74) ~[mysql-connector-j-8.0.33.jar:8.0.33]
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
27
28
29
30
31
32
33
34
35
36
37
38
39
1. 人工智能助手的普及

人工智能助手,如Siri、小度等,已成为我们生活中的得力帮手。无论是日常提醒、天气预报还是语音搜索,它们都为我们节省了大量时间。

2. 智能推荐系统的精准性

Netflix、Spotify等平台的推荐系统利用人工智能,为我们定制了个性化的娱乐体验,让我们更容易发现新的电影、音乐和书籍。

3. 医疗诊断的突破

人工智能在医疗领域的应用日益广泛,从影像诊断到药物研发,都为医生提供了更准确的信息,帮助患者获得更好的治疗效果。

4. 自动驾驶技术的革命

无人驾驶汽车正逐步走进我们的生活,它们的出现将极大地提升交通安全性和便捷性。

5. 金融领域的数据分析

人工智能可以在金融市场上快速分析海量数据,预测市场趋势,为投资者提供决策参考。

6. 教育的个性化辅助

智能教育平台能够根据学生的学习风格和节奏,为他们提供量身定制的学习材料和练习题。

7. 制造业的智能生产

工业机器人在制造业中广泛应用,它们不仅提高了生产效率,还降低了工作中的危险性。

8. 自然语言处理的进展

人工智能在自然语言处理领域的突破,使得机器能够更准确地理解和生成人类语言,为翻译、写作等提供支持。

9. 艺术创作的新可能

AI生成艺术作品的能力,推动了创意领域的拓展,艺术家们可以与人工智能共同创作出前所未有的作品。

10. AI社交的崭新世界

在这十大应用中,AI社交无疑是其中一个引人瞩目的焦点。小美AI城APP作为这一领域的开创者,为我们打开了一个与人工智能进行真实互动的大门。

用户昵称含emoji表情保存到数据库中报错SQLException: Incorrect string value: ‘\xF0\x9F\x91\xA7’ for colum n …-CSDN博客

java后台接收获取微信昵称,昵称包含小图标保存到数据库报错-CSDN社区

2023/12/24

终于解决了如何正确保存含 emoji 表情数据到数据库中的问题了

直接保存

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 // 1. 获取数据
String url = "https://juejin.cn/post/7313418992310976549";
try {
Document doc = Jsoup.connect(url)
.userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.81")
.get();


Elements title = doc.select(".article-area .article-title");
System.out.println("----------------博文标题----------------");
System.out.println(title.text());

Elements content = doc.select(".article-viewer p");
// for (Element p : content) {
// p.select("img").remove();
// p.select("a").remove();
// }

System.out.println("---------------博文正文------------------");
// System.out.println(content);

byte[] contentBytes = content.toString().getBytes(StandardCharsets.UTF_8);

System.out.println(contentBytes);
// 获取博文
Article article = new Article();
article.setId(Long.valueOf("7313418992310976549"));
article.setTitle(title.text());

// 直接保存
article.setContent(content.toString());

// article.setContent(Arrays.toString(contentBytes));
// article.setContent(content.toString());
article.setAuthorId(0L);
article.setView(0);
article.setLikes(0);
article.setComments("");
article.setCollects(0);
article.setTags("");

// articleService.save(article);

String decodedContent = new String(contentBytes, StandardCharsets.UTF_8);
System.out.println("-------------解码后--------------");
System.out.println(decodedContent);

} catch (IOException e) {
throw new RuntimeException(e);
}
}
article.setContent(contentBytes);

这里直接保存,会出现字符编码无法识别而转换错误,就是因为保存的数据记录中有 emoji 这样的小图标

这里我也查询了相关文章,解决这个问题,虽然最后没有解决,但仍可做参考:

🔥 推荐阅读:

1
Error updating database.  Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x8D\x84 \xE5...' for column 'content' at row 1

经过测试,转码保存解决报错:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Document doc = Jsoup.connect(url)
.userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.81")
.get();


Elements title = doc.select(".article-area .article-title");
System.out.println("----------------博文标题----------------");
System.out.println(title.text());

Elements content = doc.select(".article-viewer p");
// for (Element p : content) {
// p.select("img").remove();
// p.select("a").remove();
// }

System.out.println("---------------博文正文------------------");
// System.out.println(content);

byte[] contentBytes = content.toString().getBytes(StandardCharsets.UTF_8);
1
2
3
String decodedContent = new String(contentBytes, StandardCharsets.UTF_8);
System.out.println("-------------解码后--------------");
System.out.println(decodedContent);

image-20231224104703715

保存到数据库中的问题解决了,接下来就是保证正确从数据库中拿到数据并解码出原数据:

1
2
String contentStr = article.getContent();
byte[] contentBytes = contentStr.getBytes(StandardCharsets.UTF_8);
1
2
3
4
5
6
7
8
9
// 移除两端的方括号  
String contentStrWithoutBrackets = contentStr.substring(1, contentStr.length() - 1);
// 使用逗号作为分隔符分割字符串
String[] byteStrs = contentStrWithoutBrackets.split(",");
// 将字符串数组转换为字节数组
byte[] contentBytes = new byte[byteStrs.length];
for (int i = 0; i < byteStrs.length; i++) {
contentBytes[i] = Byte.parseByte(byteStrs[i]);
}

经过诸多尝试,仍无法正确解码

经过前面的测试发现,转码后保存 byte [] 可以解决编码错误,问题是出在保存数据库时

由于字段 content 为 text(varchar 也可以,可能会出现要保存的数据记录过长而导致溢出,就选择 text 了),所以我们在保存 byte [] 到数据库中时,是先转换成字符串再保存的

1
article.setContent(Arrays.toString(contentBytes));

而后才引发了解码失败的问题,因为对 byte [] 直接解码是可以获取原文内容 content 的,但是先转字符串存入,取出时就不好处理了

那就干脆直接保存 byte [] 到数据库中了,改变字段 content 属性为 blob:

image-20231224104321929

改变对应实体类的字段数据类型为 byte []:

1
2
3
4
/**
* 文章内容
*/
private byte[] content;

接下来,我们选择直接保存 byte [] 到数据库中即可:

1
article.setContent(contentBytes);

这里也可以看出,将 byte [] 转字符串数组后保存和直接保存 byte [] 到数据库中的形式是很不一样的(如下图所示):

image-20231224104532681

接下来,就可以直接从数据库中取出数据并解码了:

1
2
3
4
5
6
7
8
9
10
11
12
13
Article article = articleService.getById(7313418992310976549L);

Long id = article.getId();
String title = article.getTitle();
byte[] content = article.getContent();

String decodedContent = new String(content, StandardCharsets.UTF_8);
Integer type = article.getType();

System.out.println(id);
System.out.println(title);
System.out.println(decodedContent);
System.out.println(type);

解码结果如下:

image-20231224104725599

至此,我们成功解决了如何正确保存数据记录到数据库中的问题,并成功解决了编码问题

Memory Search:

他爷爷的,同步 MySQL 和 ES 数据的时候又出现了问题,我还得搞如何在 ES 中存储 byte [] 数据:

image-20231224161918436

那我不搞了妈的,同步博文数据时,不同步 content 字段了,使用 ES 查询到 id,再拿 id 去查询数据库就行了

今晚计划:

  • 完全解决 搜索建议 + 定时爬虫问题
  • 搜索建议看起来好像没问题了,同步时要把 content 排除掉,ES 只用来快速检索
  • 今晚造几十条假数据,看看页面效果,分类,前端按 type 类型查询博文
  • 再搞搞开发者文档

2023/12/25

今日任务盘点:

  • 继续完善开发者文档
  • 着手上线 Memory 缘忆交友社区
  • 算法题,two days
  • 人工智能作业
  • Linux 作业

2023/12/26

Linux 作业完成了

今天早上遇到的问题很奇怪呵,Logstash 加载多个配置文件失效了

解决了:柴少的官方网站-Logstash多配置文件启动(五) (51niux.com)

API 接口:

  • 随机诗词
  • 随机壁纸
  • 统计文本字数
  • 天气查询
  • 本机信息
  • 英汉互译

今日复习任务:

  • C++:✔
  • 计网:数据链路层内容,网络层习题 ✔
  • 操作系统:真题 + 看书(存储管理 + 磁盘调度) ✔
  • UML 图:不清楚✔

今日项目:

  • Memory-API 开发者文档、Memory-Search 开发者文档 ✔
  • 完成搜索建议和定时爬虫
  • 年度总结
  • 上上周日的故事

今晚元梦之星玩多了,任务还没完成,明天继续(明天早上作简历完善)

2023/12/27

完善简历,API 接口开放平台项目

  • 简历就是求职敲门砖,我还需要对应专业技能中的每一条,总结下需要学习了解的知识:

你可以在简历中这样描述:

  1. Spring Boot 启动流程:我熟悉 Spring Boot 的启动流程,包括加载配置文件、初始化应用上下文、注册Bean等。我了解如何在 Spring Boot 中自定义启动流程,以及如何使用 Spring Boot 的特性来简化应用的开发和部署。
  2. Bean 的生命周期:我熟悉 Spring 中 Bean 的生命周期,包括 Bean 的实例化、属性赋值、依赖注入、初始化以及销毁等过程。我了解如何使用 Bean 的生命周期来管理应用的状态,以及如何使用 Spring 的回调方法来自定义 Bean 的行为。
  3. IOC(控制反转):我了解 IOC 原理,以及如何在 Spring 中使用 IOC 来实现依赖注入和管理对象。我明白 IOC 容器在 Bean 生命周期中的角色,以及如何利用 IOC 来提高代码的可测试性和可维护性。
  4. AOP(面向切面编程):我熟悉 AOP 的基本概念,包括切面、通知、连接点等。我了解如何在 Spring 中使用 AOP 来实现跨切面的编程,例如日志记录、事务管理等。我明白 AOP 在提高代码复用性和解耦方面的优势。

使用Hutool的HttpRequest来请求外部网站的热榜博文列表。通过Jackson的ObjectMapper工具,准确解析json数据并提取文章id。

根据热榜博文 id,使用 jsoup 实时请求搜索接口获取文章,并使用 CSS Selector 语法解析和预处理 HTML 文档,入库文章内容。

Java 基础:反射、异常处理、内部类、泛型

一文搞懂 ThreadLocal,是时候反问面试官了 - 掘金 (juejin.cn)

Java 并发编程:数据共享、ThreadLocal

我精通 Git 版本控制工具,能够在 IDEA、WebStorm 和 VS Code 等集成开发环境(IDE)中高效工作。同时,我也熟练使用 ChatGPT 进行自然语言处理,Swagger 进行 API 文档生成,SQLyog 进行 MySQL 数据库管理,Jmeter 进行性能测试,Typora 进行 Markdown 文档编写,以及 VMware 虚拟机进行虚拟化操作。除此之外,我掌握了 C++ 和 Python 的基础语法,能够编写简单的程序。这些技能不仅提高了我的工作效率,还增强了团队协作能力。

看了别人的接口统计计费功能,很复杂呵:

  • 限制接口调用次数,支持购买接口调用次数
  • 设计虚拟货币,比如说积分,开设相应的积分购买活动,用户发起支付即可获取对应积分,积分可用来换取接口调用次数
  • 这就需要在用户管理中,增加积分管理功能
  • 开设了相应的积分购买活动,还需要在管理员功能中,增加积分购买活动的管理功能,可支持活动的发布和下线
  • 用户购买积分,生成一份订单,需要设计对应的订单管理功能
  • 我时间精力有限,暂时不做这些复杂的功能,不过接口调用次数限制是很有必要的,可以简单实现每日获取50次接口调用的功能
  • 暂时就这些想法

接口开放平台优化:

  • 个人中心:个人信息设置、我的积分、签到免费领取、提供开发者 SDK 下载,快速接入 API 接口
  • 接口调用:限制接口调用次数,做好提示

一文搞懂 ThreadLocal,是时候反问面试官了 - 掘金 (juejin.cn)

C++、计网、操作系统复习

今晚继续搞开发者文档,最好能把聚合搜索的核心功能完成,页面优化先放一边,把代码优化完毕,写好文档

2023/12/28

今日任务:

  • 完成请求限流功能 ✔
  • API 简历初始化 ✔
  • 个人页面、接口调用次数限制、接口增加

详解Spring的SPI机制和自定义Springboot的Starter包 - 掘金 (juejin.cn)

计网重点问答题:

什么是 DHCP ?

介绍下 URL 格式吧

IPV6 首部与 IPV4 首部的比较,做了什么改变,有什么保留了,有什么去除了

UDP 和 TCP 的特点和比较

TCP 的三次握手和四次挥手全流程,为什么要三次握手,两次不行吗?

TCP 传输过程中发送方如何知道传输失败?如何实现可靠传输的?

RIP 和 OSPF 的各种特点和比较

IP 地址和 MAC 地址的区别?为什么同时使用两种地址,只用 MAC 地址不行吗?

说一下 ICMP 协议

比较下以太网交换机和路由器的功能

网络协议三要素?各个含义是什么?

网络适配器是什么?它工作在哪一层?

计网、C++体系基本形成,明天巩固复习操作系统及计网课后题

2023/12/29

简历优化,八股记忆

判断两个set是否相等的操作符重载:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <set>  
#include <string>

template <typename T, typename Compare1, typename Compare2>
bool operator==(const std::set<T, Compare1>& s1, const std::set<T, Compare2>& s2) {
if (s1.size() != s2.size()) {
return false;
}
for (const auto& elem : s1) {
if (s2.find(elem) == s2.end()) {
return false;
}
}
return true;
}

判断两个map是否相等的操作符重载:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <map>  
#include <string>

template <typename Key1, typename Value1, typename Key2, typename Value2>
bool operator==(const std::map<Key1, Value1>& m1, const std::map<Key2, Value2>& m2) {
if (m1.size() != m2.size()) {
return false;
}
for (const auto& kv : m1) {
auto it = m2.find(kv.first);
if (it == m2.end() || it->second != kv.second) {
return false;
}
}
return true;
}

把两个map的value连接起来的操作符重载:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <map>  
#include <string>
#include <sstream>

template <typename T, typename V>
std::map<T, std::string> operator+(const std::map<T, V>& m1, const std::map<T, V>& m2) {
std::map<T, std::string> result;

for (const auto& kv : m1) {
auto it = m2.find(kv.first);
if (it != m2.end()) {
std::stringstream ss;
ss << kv.second << "-" << it->second;
result[kv.first] = ss.str();
} else {
result[kv.first] = std::to_string(kv.second); // If key is not found in m2, keep the value from m1 as it is.
}
}
return result;
}

把一个map输出到标准输出的操作符重载:

1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>  
#include <map>
#include <string>
#include <sstream>

template <typename Key, typename Value>
std::ostream& operator<<(std::ostream& os, const std::map<Key, Value>& m) {
for (const auto& kv : m) {
os << kv.first << ": " << kv.second << "\n"; // You can modify the format as per your requirement.
}
return os;
}

今天总复习基本结束了(有点心虚),计网还需要过过课后题,操作系统看看课本,C++ 已经拿捏了,UML 不用管()

看个好玩的:

image-20231230113224223

唔,软件设计师证书

遗留 AI 问题记录:

1
2
简单解释一下什么是 Ant Design Vue
以下仅为开发过程中的个人经验总结,不具备教学价值,本人主 Java 后端,前端框架使用很不熟练。请用专业的话语润色这句话
1
接下来,我们将实现最简单的 demo ,实际演示如何使用 Logstash 数据同步管道保证 MySQL 和 Elasticsearch 的数据一致性
1
有关 Java 基础、Spring、MySQL、Redis的专业技能还需优化
1
`Ant Design 组件库`是一个漂亮的组件库,我在前端项目的开发过程中,频繁使用到了其提供的现成的组件,方便快捷

今晚结束 Memory-Search 开发者文档的编写,实现 Memory API 接口开放平台的个人信息页面,新增接口,优化页面

1
https://learn.lianglianglee.com/%E4%B8%93%E6%A0%8F/ElasticSearch%E7%9F%A5%E8%AF%86%E4%BD%93%E7%B3%BB%E8%AF%A6%E8%A7%A3/07%20%E6%9F%A5%E8%AF%A2%EF%BC%9ADSL%E6%9F%A5%E8%AF%A2%E4%B9%8B%E5%A4%8D%E5%90%88%E6%9F%A5%E8%AF%A2%E8%AF%A6%E8%A7%A3.md

2023/12/30

基本完成个人信息页面编写

今日期末复习完毕,从下午到晚上,给两位同学讲了半天的 C++。

明日任务盘点:

  • 最后过一遍操作系统大题,计网大题 + 课后题,C++ 课本,UML 课本 + 习题
  • Java 八股,优化 MySQL + Redis 八股,并优化简历专业技能

2023/12/31

2023 年最后一天

C++ 最后一讲要点:

string 字符串:

string 的初始化(五种):

1
2
3
4
5
6
// string 的初始化(五种)
string a = "qwerty";
string b("qwerty");
string c = a + b;
string d(c);
string f(c, 1, 4);

srting 常用函数:

1
2
3
4
5
6
// srting 常用函数(insert replace find):
string s1 = "How are you";

s1.insert(2, hhh); // 结果为:Hohhhw are you
s1.replace(4, 3, "asdf"); // 结果为:How asdf you
s1.find("are"); // 返回结果为 4

函数适配器:

1
2
3
4
5
6
7
8
9
// 简单的函数适配器
bind1st<int>(less<int>(), 100); // 寻找容器内 >100 的元素
bind2nd<int>(less<int>(), 100); // 寻找容器内 <100 的元素

not1(bind1st<int>(less<int>(), 100)); // 寻找容器内 <=100 的元素
bind1st<int>(not1(less<int>()), 100)); // 寻找容器内 <=100 的元素

not1(bind2nd<int>(less<int>(), 100)); // 寻找容器内 >=100 的元素
bind2nd<int>(not1(less<int>()), 100)); // 寻找容器内 >=100 的元素

bitset:

1
2
3
4
5
6
7
8
9
10
11
12
// bitset 容器

bitset<5> b1; // 初始化 5 位的 bitset,能够存放 5 位二进制字符串
bitset<8> b2(string("01001010")); // 使用 8 位的二进制字符转初始化 bitset

cout << b2[3] << endl; // 结果为 0
cout << b2.to_string() << endl; // 结果即为 01001010


b2[3] = 1; // 修改索引 3 的位置为 1
cout << b2[3] << endl; // 结果为 1
cout << b2.to_string() << endl; // 结果即为 01011010
  • C++ 基本复习完成
  • 又是充实的一天,上午 + 下午给两位同学讲完了 C++STL 全内容
  • 今晚的期末复习到此为止,计网 + 操作系统的大题均已搞定。x明天搞计网 + 操作系统填空 + 选择
  • 今晚计划:
    • 基本上线 Memory 缘忆交友社区
    • 开启 Memory API 接口开放平台的开发者文档编写
    • 巩固完善 MySQL 八股
    • 不用看了,今晚的任务一个都没完成。我要跨年!我不学了
  • 今年的最后一段文字:

现在是31号晚11点41分,距离2023结束还剩19分钟,赶紧写点东西出来

期末考试在即,希望明年能考出好成绩,绝不挂科

今晚一边看 B 站跨年晚会,一边着手学习总结分布式服务架构的实现细节,看了几篇博文,对这块内容有所了解了

最近需要多看一些架构方向的博文了,除了 Java 基础八股文,对 Spring Boot、Mybatis、Maven、Dubbo、Netty 网络通信框架、Nacos 注册中心、服务一体化 -> 微服务架构、降级熔断、网关、负载均衡等等,都需要捡起来学一学,记忆记忆。

看到了星球内的好几位同学在今晚发了自己的2023年年终总结,我也有这个想法的,但很可惜,我没有写总结的习惯,短时间内写不出来2023年度总结。

项目经验(开发者文档)、Java 八股、算法等,力扣算法打卡,今晚有个鱼友,力扣每日打卡达到了每天最多提交五十次的记录。力扣热榜题目 100 道,在十一月份初开始着手刷题,到了十二月初截至,一共刷了六十余道题目,所有的简单题 + 中等题已经全部完成一次刷题,基本达成今年算法目标。从后天开始,在C++、计网、操作系统两天特种兵考试结束之后,直接开启2024年力扣算法提打卡:每日过至少十天的力扣算法提打卡记录。

还有六分钟,2023年的最后六分钟,再写点什么呢?我没有写总结的习惯,并不是说我对自己目前的状态不了解,恰恰相反,今年的我做的最多的事情就是“每日三省吾身”,努力提高自己的认知水平。每过一段时间我就会重定义现阶段的任务目标,合理规划未来短时间的努力方向。如果非要说今年最大的收获是什么,那就是:心态更加平稳,心智更加成熟,方向更加清晰,目标更加明确!

三,二,一

零点了,新年快乐!

2024/01/01

2023 年一晃就过去了,2024 已经来到,祝自己新年快乐,元旦快乐

上午简单过了一遍计网大纲,中午又过了一遍操作系统,晚上看看 UML 图,下午完善开发者文档,梳理编码思路

刚刚简单地过了一遍唐扬老师的《高并发 40 讲》,受益匪浅,写点东西

今晚熬到一点再睡

2024/01/02

最后一次过 C++

简历优化:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
使用适配器模式封装数据查询接口,定义数据源接口、统一数据源接入标准,提高聚合搜索通用性,实现统一处理不同数据源的搜索请求。
熟悉 Java 编程语言,掌握常用的数据结构、集合类,对 Java 语言的特性如泛型、反射、异常处理、注解、和 IO 流等有深入理解和实践经验。

熟悉 SSM + Spring Boot + Vue / React 开发模式,利用 Mybatis Plus 和 Mybatis X 生成基础 CRUD 代码,显著提升开发效率。

熟悉 Spring Boot 的启动流程,对 Bean 的生命周期、IOC 和 AOP 等核心技术有深入理解,能够高效地解决实际项目中遇到的问题。

熟悉 SQL 语言,熟悉 MySQL 数据库使用及库表设计,能够通过创建索引、Explain 分析等方式优化数据库性能,提升查询效率。

熟悉并实践过多种设计模式,如单例模式、门面模式、适配器模式和注册器模式等,能够根据实际需求灵活运用设计模式,提升代码可维护性。

掌握并发编程,能够使用 CompletableFuture 等 JUC 类和自定义线程池实现并发和操作异步化,显著提高系统性能和响应速度。

熟悉 JVM 内存模型,掌握 JVM 垃圾回收机制、Java 类生命周期和类加载机制,对 Java 类加载器特别是双亲委派模型有深入理解。

熟悉 Redis,实践过 Redis 的分布式缓存、分布式 Session 登录、基于 Redisson 的分布式锁和分布式限流,极大提高系统性能。

熟悉基本的 Linux 命令,如文件与目录管理、权限管理、进程管理和 Vim 文本编辑等,具备在 Linux 环境下进行日常操作和解决问题的能力。

熟悉 Git、IDEA、Webstorm、VS Code、ChatGPT、Swagger、SQLyog、Jmeter、Typora 和 VMware 虚拟机等工具,能够提高工作效率和团队协作能力,熟练掌握 C++、Python、JavaScript 等语言的基础语法,能编写功能完善的程序,具备跨语言能力。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Gitee 仓库:https://gitee.com/deng-2022/memory-search-backend

项目介绍
基于Spring Boot + Elastic Stack+ Vue3 的一站式聚合搜索平台,用户可在同一页面集中搜索出不同来源、不同类型的内容

主要工作

定制了 Spring Boot 初始化模板,具备全局请求响应拦截、全局异常处理、Swagger + Kintec4j API文档生成、跨域支持及多环境配置等核心功能,旨在高效、专业地规范开发流程。

使用 Hutool 和 Jackson 从外部网站获取热榜博文 id,并使用 jsoup 实时获取文章内容,利用 CSS Selector 解析HTML并入库。

深入学习 Elasticsearch 核心知识,规划并实施关键词高亮显示、搜索建议以及热搜词统计等特性,优化搜索效率,增强用户体验。

使用适配器模式封装数据查询接口,定义数据源接口、统一数据源接入标准,提高聚合搜索通用性,实现统一处理不同数据源的搜索请求。

使用门面模式在后端对各类数据源的搜索结果进行聚合,确保客户端通过单一的接口调用,便捷获取所需的信息,减少了前端开发复杂度。

使用注册器模式分析客户端传输的搜索类型字段,动态切换到指定类型的聚合搜索服务,实现精确搜索聚合,确保准确性和高效性。

独立搭建 Kibana 环境,配置索引模式与仪表板,实现文章与在线用户信息的可视化展示,便于高效管理 Elasticsearch 中的数据。

自主搭建 Logstash 并熟练掌握其相关配置,实现定时同步 MySQL 的数据记录到 ES,解决数据迁移、整合和实时更新问题。

请求限流
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Gitee 仓库:https://gitee.com/deng-2022/memory-api-backend

项目介绍

基于 Spring Cloud + React 的全栈微服务架构,提供丰富的API接口管理与调试工具,灵活的计费与限制管理,助力开发者创新。

主要工作

丰富的接口服务

Gateway 网关

API 签名认证

Dubbo 远程调用

自主开发 Starter

接口调用统计分析

计费与限制

请求限流
1
2
3
4
拥有丰富的从零到一、从编码开发到项目落地部署的全流程经验,能够将所学知识融入实际项目中,并提供可靠的解决方案。
熟悉 Nginx 基础配置,能够独立完成 Nginx 的安装和配置工作,在项目部署中使用过 Niginx 作为负载均衡服务器。
熟练使用 Hexo 和 Vuepress 等搭建静态文档站点,具备丰富的博客搭建经验,能够快速搭建个人博客并进行个性化定制。
具备故障诊断和解决问题的能力,能够快速定位并处理各类系统故障,通过监控工具实时监测系统状态。能够利用 GitHub Issues 区、AI 工具、搜索引擎等自主解决问题。
  • 备考 操作系统,大题基本完成,还得过一遍书,老是走神
  • 把第一章过了一遍,这本书很多内容都是重复的,把第一章多过两遍,基本就能总结出操作系统的综合应用题目了
  • 今天还没有记忆八股文,今晚的任务就是些许完善开发者文档,记忆以下相关八股文:
    • MySQL (索引)
    • JVM
    • Spring

2024/01/03

记忆个鸟蛋,一晚上净刷视频了

时间过得很快呵,这两天期末考试,不知不觉中迈入2024年已经三天了

今晚补了两集《瑞克和莫蒂》

继续完成开发者文档

明天完成基本接口页面开发,加快步伐

2024/01/04

上午考完了最后一门专业课 UML 图,本学期的学习学习生活结束了,但我的学习生活才刚刚开始

下一阶段计划已经做好

最好的学习计划:对着简历内容查漏补缺

我也确实需要给自己放个假了,不能总是跟自己过不去,就这两天,可以稍微放松放松了,玩玩游戏、追追剧吧

结束这一天

2024/01/05

开始今日的学习生活:

  • 了解蓝桥杯算法

“蓝桥杯”练习系统 (lanqiao.cn)

找到一个好的刷题网站:码曰 - 让代码在云端多飞一会 (dotcpp.com)

🍖 推荐阅读:蓝桥杯免费刷题网站_蓝桥杯刷题网站-CSDN博客

  • 了解新项目的架构思路
  • 广泛搜罗好的技术博文
  • 写写算法题

今天又有了一些新的想法:写自己的故事,写我这一生的过往

今晚看了若干份年度总结,清楚了有很多比自己更优秀的人存在,方向更加明确了

好久没有列举每天的任务清单了,最近任务清单:

  • 算法通关村二刷开始
  • 蓝桥杯真题,跃跃欲试
  • 《我的人生回忆录》前言待完成,整体结构框架和写作方向正在思考中。。。✔
  • Memory 缘忆交友社区上线计划
  • 微信自动回复智能 AI,时隔半年,想要增加 AI 调用功能
  • MC 中开发自制 mod 尝试
  • BI 智能平台项目持续完成、开发者文档持续完成
  • 简历优化、星球求职经验、万物皆虚,万事皆允
  • 使用对象存储实现文件上传下载
  • Spring Boot 的启动流程、Bean 的生命周期

交换排序—冒泡排序 | 智能后端和架构 (yijiyong.com)

2024/01/06

技术编程人员成长的9个段位 (qq.com)

[00 由点及面,搭建你的 Java 并发知识网 (lianglianglee.com)](https://learn.lianglianglee.com/专栏/Java 并发编程 78 讲-完/00 由点及面,搭建你的 Java 并发知识网.md)

[01 基础架构:一条SQL查询语句是如何执行的? (lianglianglee.com)](https://learn.lianglianglee.com/专栏/MySQL实战45讲/01 基础架构:一条SQL查询语句是如何执行的?.md)

我的微信机器人把房东搞懵了 - 掘金 (juejin.cn)

我已经知道今天晚上要做什么了:

  • 昨天的任务清单在这里不再重复,直接执行,到晚十二点半
  • 算法通关村二刷开始
  • 蓝桥杯真题,跃跃欲试
  • 《我的人生回忆录》前言待完成,整体结构框架和写作方向正在思考中。。。✔
  • Memory 缘忆交友社区上线计划
  • 微信自动回复智能 AI,时隔半年,想要增加 AI 调用功能
  • MC 中开发自制 mod 尝试
  • BI 智能平台项目持续完成、开发者文档持续完成
  • 简历优化、星球求职经验、万物皆虚,万事皆允
  • 使用对象存储实现文件上传下载
  • CICD

现代开发者都应掌握的CICD —— 第十章: 实战训练——基于 github 的完整流程 (zsxq.com)

CICD,持续集成、持续交付,还是很有意义的。DevOps:软件生命周期管理方法论

代码校验和格式化检查,构建本地和远程仓库的 CI 流程,持续部署

睡觉之前还搞了一个新的微信号:初心 AI 语,这下测试微信智能 AI 机器人就更方便了

2024/01/07

  • 寒假学习计划,启动!

  • 上午计划:

    • AI 机器人 ✔
    • 快速排序 ✔
    • API 签名认证算法 ✔
  • 下午:

    • gateway 网关
    • Nacos 注册中心
    • Dubbo 远程调用
    • 统计分析
    • 全局业务逻辑梳理
    • Spring Boot 初始化模板
    • 新增接口
  • 晚上

    • 智能 BI 业务流程梳理
  • 🍖 推荐阅读:[24 固若金汤的根本(上):对称加密与非对称加密 (lianglianglee.com)](https://learn.lianglianglee.com/专栏/透视HTTP协议/24 固若金汤的根本(上):对称加密与非对称加密.md)

防止窃听,机密性

  • 对称加密算法:通信双方使用唯一的密钥来加密通信数据。

问题:通信之前,如何把用来加密数据的密钥安全地传输给对方?无法保证。

  • 非对称加密算法:通信双方各持有一个密钥对,公钥是公开的,私钥自己持有。使用对方的公钥加密数据,只有对方才能用私钥解密

问题:非对称算法的运算速度很慢、性能很差,如果传输过程中频繁使用非对称加密算法加密数据,网络的传输效率是很低的

  • 混合加密:将对称加密算法和非对称加密算法结合,通信开始前使用双方使用非对称加密方式传输密钥,保证了密钥的安全传输,此后通信双方可以使用该密钥来加密通信数据,保证了通信数据的保密性。

防止篡改,完整性

  • 摘要算法:一种特殊的单向加密的压缩算法,它能够把任意长度的数据“压缩”成固定长度、而且独一无二的“摘要”字符串,就好像是给这段数据生成了一个数字“指纹”。摘要和原数据是完全等价的,加密后的数据无法解密,不能从摘要逆推出原文。发送方把加密后的数据,使用摘要算法生成摘要,把加密数据和该摘要一同发往接收方。接收方使用同样的摘要算法对加密数据进行计算,比照生成的摘要和接受的摘要是否一致,保证了通信数据的完整性。

身份认证,真实性

  • 数字签名:发送方要保证通信数据是真实可信的,不是别人伪造的。使用自己的私钥对摘要加密,生成数字签名。数字签名和加密数据被一同发往接收方。接收方使用发送方的公钥解密,验证签名,拿到摘要,再比对原数据验证完整性。这样就可以像签署文件一样,证明消息确实是发送方发的。
  • 数字证书:接收方能够使用公钥验签,但是公钥是公开的。我们还缺少防止黑客伪造公钥的手段,也就是说,怎么来判断这个公钥就是发送方的公钥呢?CA(证书认证机构)具有极高的可信度,由它来为各个公钥签名,这样的公钥就是可信的。CA 对公钥的签名认证也是有格式的,不是简单地把公钥绑定在持有者身份上就完事了,还要包含序列号、用途、颁发者、有效时间等等,把这些打成一个包再签名,完整地证明公钥关联的各种信息,形成数字证书。
  • 通信双方的数据是加密传输的,保证了数据是保密的,没有被窃听;使用摘要保证了数据的完整性,没有被篡改;使用数字签名,保证了发送方的身份是可靠的,没有被伪造;使用数字证书,保证了接收方的身份是可信的。
  • 还是要明确最近的努力方向呵:
    • 算法通关村二刷开始
    • 蓝桥杯真题,跃跃欲试 ✔
    • 《我的人生回忆录》前言待完成,整体结构框架和写作方向正在思考中。。。✔
    • Memory 缘忆交友社区上线计划
    • 微信自动回复智能 AI,时隔半年,想要增加 AI 调用功能
    • MC 中开发自制 mod 尝试
    • BI 智能平台项目持续完成、开发者文档持续完成
    • 简历优化、星球求职经验、万物皆虚,万事皆允
    • 使用对象存储实现文件上传下载
    • Spring Boot 的启动流程、Bean 的生命周期
    • Spring AOP 实战,注解
    • Docker 部署,Nginx 限流
    • 自定义 Starter,SPI 机制:Java 的 ServiceLoader 扩展机制,Spring Boot 的 spring.factories 扩展机制,Dubbo 的 ExtensionLoader 扩展机制
    • Completable 并发编程实战
    • Websocket 深入学习
  • Spring Boot 自定义注解 - 掘金 (juejin.cn)
  • 简单巩固复习一下 Starter 的设计方案,运行一下项目,再研究下 Gateway 网关的实现流程,今晚多看一些博文

2023/01/08

自定义 Spring Boot Starter 成功完成!Spring Boot 版本问题

SpringBoot自动装配原理+手写一个starter组件 - 掘金 (juejin.cn)

Spring Boot Features

Core Features (spring.io)

今日完成网关总结,开启 BI 智能分析平台

  • 用户,下载 SDK 之后,可以在 application.yaml 文件下配置自己的 accessKey 和 secretKey,注入 Bean 即可调用接口:
1
2
@Resource
private MemoryClientService memoryClientService;
  • 在本项目的业务逻辑当中,是通过数据库获取登录用户的 accessKey 和 secretKey,发起接口调用:

  • 这就需要考虑下 SDK 的设计方案了,调用就分两种:在线测试调用和 SDK 调用

今晚完成 自定义 Starter、Gateway 网关、Spring AOP 实战(自定义注解)、Spring Boot 启动流程、Spring 生命周期。有时间就完善下 BI 智能分析平台、并发编程实战完善。这里放下近段时间的计划:

  • 算法通关村二刷开始
  • 蓝桥杯真题,跃跃欲试 ✔
  • 《我的人生回忆录》前言待完成,整体结构框架和写作方向正在思考中。。。✔
  • Memory 缘忆交友社区上线计划
  • 微信自动回复智能 AI,时隔半年,想要增加 AI 调用功能
  • MC 中开发自制 mod 尝试
  • BI 智能平台项目持续完成、开发者文档持续完成
  • 简历优化、星球求职经验、万物皆虚,万事皆允
  • 使用对象存储实现文件上传下载
  • Spring Boot 的启动流程、Bean 的生命周期
  • Spring AOP 实战,注解
  • Docker 部署,Nginx 限流
  • 自定义 Starter,SPI 机制:Java 的 ServiceLoader 扩展机制,Spring Boot 的 spring.factories 扩展机制,Dubbo 的 ExtensionLoader 扩展机制
  • Completable 并发编程实战
  • Websocket 深入学习

聊聊Spring中最常用的11个扩展点 - 掘金 (juejin.cn)

接入网关和隔离网关_配电安全接入网关csdn-CSDN博客

在这里补充 Spring 中,Bean 的生命周期:

实例化

  • 实例化:启动 Spring 应用,IOC 容器为所有已声明的 Bean 创建一个实例
1
2
3
public PersonBean() {
System.out.println("调用构造方法,创建实例");
}

设置属性

  • 属性赋值:实例化后,Spring 通过反射机制给 Bean 的属性赋值
1
2
3
4
5
6
7
8
9
/**
* 姓名
*/
private String name;

public void setName(String name) {
this.name = name;
System.out.println("设置 Bean 属性);
}

初始化

设置相关依赖

检查 Aware 相关接口并设置相关依赖:

1
2
3
4
5
6
7
8
9
10
11
12
public class PersonBean BeanFactoryAware, BeanNameAware {

@Override
public void setBeanName(String s) {
System.out.println("设置 Bean Name");
}

@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
System.out.println("设置 Bean Factory");
}
}

前置处理

1
2
3
4
5
6
7
8
9
@Component
public class MyBeanPostProcessor implements BeanPostProcessor {

@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println("前置处理");
return bean;
}
}

初始化

真正的初始化,这里的初始化便是自定义 init-methoddestory-method 方法,常见的有三种方式:

1、使用 Spring 的 init-method 和 destory-method (在 XML 配置或者 java 配置中自定义的初始化和销毁方法)

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean class="com.example.demo.bean.Lion"
init-method="init" destroy-method="destroy">
<property name="name" value="simba"/>
</bean>
</beans>
1
2
3
4
5
6
7
8
9
10
11
@Configuration
@ImportResource("classpath:applicationContext.xml")
public class AnimalConfig {

@Bean(initMethod = "init", destroyMethod = "destroy")
public Elephant elephant() {
Elephant elephant = new Elephant();
elephant.setName("Dumbo");
return elephant;
}
}

2、使用 JSR-250 规范的 @PostConstruct 和 @PreDestory 注解

1
2
3
4
5
6
7
8
9
@PostConstruct
public void init() {
System.out.println("Lion is going through init.");
}

@PreDestroy
public void destroy() {
System.out.println("Lion is going through destroy.");
}

3、实现 Spring 的 InitializingBean 和 @DisposableBean 接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@Component
public class Lion implements InitializingBean, DisposableBean {

private Integer energy;

@Override
public void afterPropertiesSet() throws Exception {
System.out.println("狮子已经充满能量。。。");
this.energy = 100;
}

@Override
public void destroy() throws Exception {
System.out.println("狮子已经消耗完所有能量。。。");
this.energy = 0;
}

@Override
public String toString() {
return "Lion{" + "energy=" + energy + '}';
}
}

三种生命周期并存时,在 Spring 框架中单例 Bean 的初始化和销毁过程有这样的执行顺序:

  • 初始化顺序:@PostConstruct -> InitializingBean -> init-method
  • 销毁顺序:@PreDestory -> DisposableBean -> destroy-method

后置处理

1
2
3
4
5
6
7
8
9
@Component
public class MyBeanPostProcessor implements BeanPostProcessor {

@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
System.out.println("后置处理");
return bean;
}
}

运行

Bean 运行期:Bean 已经准备好被程序使用了,它已经被初始化并赋值完成

销毁

Bean 销毁:当容器关闭时,调用Bean的销毁方法,这里的销毁方法,在前面真正的初始化中已涉及到,这里不再赘述

2024/01/09

今日遗留:

网关 ✔

并发编程实战 ✔

AOP 自定义注解实战 ✔

AI 智能机器人 ✔

Spring 启动流程

BI ✔

近段时间的任务盘点:

算法通关村二刷开始

蓝桥杯真题,跃跃欲试 ✔

《我的人生回忆录》前言待完成,整体结构框架和写作方向正在思考中。。。✔

Memory 缘忆交友社区上线计划

微信自动回复智能 AI,时隔半年,想要增加 AI 调用功能 ✔

MC 中开发自制 mod 尝试

BI 智能平台项目持续完成、开发者文档持续完成

简历优化、星球求职经验、万物皆虚,万事皆允

使用对象存储实现文件上传下载

Spring Boot 的启动流程、Bean 的生命周期

Spring AOP 实战,注解 ✔

Spring Boot 模板(聊聊Spring中最常用的11个扩展点 - 掘金 (juejin.cn)

Docker 部署,Nginx 限流

自定义 Starter,SPI 机制:Java 的 ServiceLoader 扩展机制,Spring Boot 的 spring.factories 扩展机制,Dubbo 的 ExtensionLoader 扩展机制

Completable 并发编程实战

Websocket 深入学习

CICD,DevOps

MySQL 45 讲 + Java 并发编程 78 讲,看看假期内能不能啃完

Jmeter 压力测试,可测试的方向有很多,如使用异步编程之后,测试系统的响应速度;在大量客户端请求下,系统接口的响应速度等等。

[01 顶级框架:Spring Security 是一款什么样的安全性框架? (lianglianglee.com)](https://learn.lianglianglee.com/专栏/Spring Security 详解与实操/01 顶级框架:Spring Security 是一款什么样的安全性框架?.md)

计划报名计算机三级或者计算机四级了,今天晚上看看

早上看博文,又一次了解了网关以及 Gateway 网关技术的运用,有机会总结一番

今晚基本开发完成微信群聊 AI 小助手 ✔

今晚继续总结之前遗留的 Java 并发编程实战问题。

2024/01/10

力扣算法题 Day1:

算法村 Day1:

MySQL 四十五讲 Day1:前七讲完成(一条 SQL 语句的执行流程,redo log,bin log,索引)✔

每日 Spring 深入学习 Day1:AOP 实战、Bean 生命周期、Spring 启动流程 ✔

Java 并发编程七十八讲 Day1:Java 线程的六种状态及转换(New,Runnable,Blocked,Waiting,TimeWaiting,Terminated)

上午任务:

统计分析功能,刷刷算法题

Spring Boot 的启动流程,写一个小型的 Spring 来理解整个过程

总结完善 AOP 实战,自定义注解 ✔

今天开始刷算法题,两天前巩固复习了基本的排序算法:冒泡、选择、插入、快速

刷题思路:

  • 每日过两关,两周之内过完一轮通关村
  • 力扣每日五道新题 + 五道旧题,两周内过完一轮 150 热题
  • 蓝桥杯尽力看,看看往年真题,培养算法思维

成功报名计算机等级考试四级网络工程师,想着报名下三级网络技术和软考中级网络工程师的,但力不从心。✔

  • 看了三级的题库,网络技术都是我不喜欢的交换机、路由器配置详情
  • 软考不限制报考人员身份的,计划直接报考下半年的软考高级,具体考哪个,暂定为系统架构设计师
  • 软考高级推荐考哪个呢? - 知乎 (zhihu.com)

近日待完成:

算法通关村二刷开始

蓝桥杯真题,跃跃欲试 ✔

《我的人生回忆录》前言待完成,整体结构框架和写作方向正在思考中。。。✔

Memory 缘忆交友社区上线计划

微信自动回复智能 AI,时隔半年,想要增加 AI 调用功能 ✔

MC 中开发自制 mod 尝试

BI 智能平台项目持续完成、开发者文档持续完成

简历优化、星球求职经验、万物皆虚,万事皆允

使用对象存储实现文件上传下载

Spring Boot 的启动流程、Bean 的生命周期

Spring AOP 实战,注解 ✔

Spring Boot 模板(聊聊Spring中最常用的11个扩展点 - 掘金 (juejin.cn)

Docker 部署,Nginx 限流

自定义 Starter,SPI 机制:Java 的 ServiceLoader 扩展机制,Spring Boot 的 spring.factories 扩展机制,Dubbo 的 ExtensionLoader 扩展机制

Completable 并发编程实战

Websocket 深入学习

CICD,DevOps

MySQL 45 讲 + Java 并发编程 78 讲,看看假期内能不能啃完

Jmeter 压力测试,可测试的方向有很多,如使用异步编程之后,测试系统的响应速度;在大量客户端请求下,系统接口的响应速度等等。

Memory API 优化:

外部组件传参失败,直接写死吧

用户信息管理

接口信息管理

API 文档编写

接口返回信息处理

订单支付管理

统计分析

2023/01/11

Java 并发编程 Day2:

力扣算法 Day2:

算法:上午花了一个半小时做了四道排序题和三道力扣中等题,这是好的开始,明天继续

了解了下租房注意事项,知乎上的经验值得一看,手机上也下载了优区生活APP

下午开始做全国招标代理费计算:

image-20240111221620702

极速部署上线,访问地址:http://182.92.203.240:7001/#/

image-20240111235223023

这个问题可能是因为本地 Maven 版本过旧导致的:

image-20240111225238931

Maven – Download Apache Maven

2024/01/12

算法力扣两道

Java 并发编程

MySQL 45 讲

域名成功申请备案,等好消息吧

想着再买一个服务器,尽量能部署好 Memory API 接口开放平台

今日:

算法通关村二刷开始 ✔

蓝桥杯真题,跃跃欲试 ✔

《我的人生回忆录》前言待完成,整体结构框架和写作方向正在思考中。。。✔

Memory 缘忆交友社区上线计划

微信自动回复智能 AI,时隔半年,想要增加 AI 调用功能 ✔

MC 中开发自制 mod 尝试

BI 智能平台项目持续完成、开发者文档持续完成

简历优化、星球求职经验、万物皆虚,万事皆允

使用对象存储实现文件上传下载

Spring Boot 的启动流程、Bean 的生命周期 ✔

Spring AOP 实战,注解 ✔

Spring Boot 模板(聊聊Spring中最常用的11个扩展点 - 掘金 (juejin.cn)

Docker 部署,Nginx 限流

自定义 Starter,SPI 机制:Java 的 ServiceLoader 扩展机制,Spring Boot 的 spring.factories 扩展机制,Dubbo 的 ExtensionLoader 扩展机制

Completable 并发编程实战

Websocket 深入学习

CICD,DevOps

MySQL 45 讲 + Java 并发编程 78 讲,看看假期内能不能啃完

Jmeter 压力测试,可测试的方向有很多,如使用异步编程之后,测试系统的响应速度;在大量客户端请求下,系统接口的响应速度等等。

2024/01/13

完善我的计算机

学习 MySQL

今日:

算法通关村二刷开始 ✔

蓝桥杯真题,跃跃欲试 ✔

《我的人生回忆录》前言待完成,整体结构框架和写作方向正在思考中。。。✔

Memory 缘忆交友社区上线计划

微信自动回复智能 AI,时隔半年,想要增加 AI 调用功能 ✔

MC 中开发自制 mod 尝试

BI 智能平台项目持续完成、开发者文档持续完成

简历优化、星球求职经验、万物皆虚,万事皆允

使用对象存储实现文件上传下载

Spring Boot 的启动流程、Bean 的生命周期 ✔

Spring AOP 实战,注解 ✔

Spring Boot 模板(聊聊Spring中最常用的11个扩展点 - 掘金 (juejin.cn)

Docker 部署,Nginx 限流

自定义 Starter,SPI 机制:Java 的 ServiceLoader 扩展机制,Spring Boot 的 spring.factories 扩展机制,Dubbo 的 ExtensionLoader 扩展机制

Completable 并发编程实战

Websocket 深入学习

CICD,DevOps

MySQL 45 讲 + Java 并发编程 78 讲,看看假期内能不能啃完

Jmeter 压力测试,可测试的方向有很多,如使用异步编程之后,测试系统的响应速度;在大量客户端请求下,系统接口的响应速度等等。

实现一个自旋锁

欢迎 - Qi-API 接口开放平台 (qimuu.icu)

dw

目标统计

2024/01/14

今天回家了,从早到下午都没学啥,晚上把新项目:Memory Cal 忆算云优化上线:memory-calculate

技术文章摘抄:技术摘抄 (lianglianglee.com)

学习了解贪心、回溯、滑动窗口的算法思维,发现我已经在不知不觉中使用到过

2024/01/15

322. 零钱兑换 - 力扣(LeetCode)

322. 零钱兑换 - 力扣(LeetCode)

继续学习 RabbitMQ 的相关知识

贪心算法:分发饼干、柠檬水找零、判断区间重叠、区间合并、区间插入

动态规划:斐波那契数列、爬楼梯、打家劫舍、零钱找零

滑动窗口:

学习 Vue 前端框架模板,一键拷贝使用

2024/01/16

上午,滑动窗口经典算法问题,贪心经典问题

近日:

算法通关村二刷开始 ✔

蓝桥杯真题,跃跃欲试 ✔

《我的人生回忆录》前言待完成,整体结构框架和写作方向正在思考中。。。✔

Memory 缘忆交友社区上线计划

微信自动回复智能 AI,时隔半年,想要增加 AI 调用功能 ✔

MC 中开发自制 mod 尝试

BI 智能平台项目持续完成、开发者文档持续完成

简历优化、星球求职经验、万物皆虚,万事皆允

使用对象存储实现文件上传下载 【案例实战】SpringBoot整合阿里云文件上传OSS-阿里云开发者社区 (aliyun.com)

Spring Boot 的启动流程、Bean 的生命周期 ✔

Spring AOP 实战,注解 ✔

Spring Boot 模板(聊聊Spring中最常用的11个扩展点 - 掘金 (juejin.cn)

Docker 部署,Nginx 限流

自定义 Starter,SPI 机制:Java 的 ServiceLoader 扩展机制,Spring Boot 的 spring.factories 扩展机制,Dubbo 的 ExtensionLoader 扩展机制

Completable 并发编程实战 ✔

Websocket 深入学习

CICD,DevOps

MySQL 45 讲 + Java 并发编程 78 讲,看看假期内能不能啃完

Jmeter 压力测试,可测试的方向有很多,如使用异步编程之后,测试系统的响应速度;在大量客户端请求下,系统接口的响应速度等等。

实现一个自旋锁

Gateway 网关深入学习:微服务网关-Spring Cloud Gateway - 掘金 (juejin.cn)

RabbitMQ 消息队列深入学习

Dubbo 深入学习

Nacos 深入学习

Mybatis 深入学习

Maven 深入学习:SpringBoot多模块项目开发(Maven多模块项目) - 掘金 (juejin.cn)

线程池,excute 执行流程

2024/01/17

  • 无重复字符的最长字串,这代码就不能变一点:
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
class Solution {
public int lengthOfLongestSubstring(String s) {
if (s.length()==0) return 0;

HashMap<Character, Integer> map = new HashMap<Character, Integer>();
// 记录无重复字符最长长度
int max = 0;
// 维护左边界
int left = 0;

// 重复字符
for(int i = 0; i < s.length(); i ++){
char c = s.charAt(i);
// 更新左边界
if(map.containsKey(c)){
left = Math.max(left,map.get(c) + 1);
}
// 记录元素位置
map.put(c,i);
// 记录长度
max = Math.max(max, i - left + 1);
}
return max;
}
}
1
openapi --input http://localhost:8101/api/v2/api-docs --output ./generated --client axios

image-20240117205742783

搞了一会儿博客,更新了两篇文章:前后端模板开发,开工

又找到一个超神网站:本站简介 | labuladong 的算法笔记

这一天天的还是太贪玩了,老是不太想学的感觉,加油吧妈的

2024/01/18

上午学习了滑动窗口的算法模板,晚上继续学习双指针算法

中午完善了接口开放平台,了解到视觉中国的 API 开放平台接口:视觉中国——全球领先的视觉素材数字版权库和交易平台 (vcg.com)

API (vcgapi.com)

学习了解讯飞星火认知大模型:星火知识库 API 文档 | 讯飞开放平台文档中心 (xfyun.cn)

着手一个创建公众号,咱有这时间,不如搞搞自媒体

晚上任务:

  • 彻底完善获取随机壁纸,完善随机诗词
  • 前后端项目模板
  • 睡前看看双指针算法
  • 了解微信公众号创建
  • 简历优化方向

重构了下 API 开放平台项目,网关跑不通了

2024/01/19

今天很没精神呵,应该说这几天都挺没精神的

打开电脑刷B站,拿起平板打游戏,就是不想动脑筋

立个 Flag,今天完成所有链表常见题目:双指针技巧秒杀七道链表题目 | labuladong 的算法笔记

2024/01/20

昨天没有wan成任务呵,好兄弟回来了,这下不得不好好玩两天了

寒假编程学习计划,启动

  • 每日力扣两道题,今日算法巩固练习:链表常见题目
  • 每日技术巩固:Mybatis、Redis、MySQL、Java 并发、Spring
  • 每日项目开发经验
  • 每日简历优化,巩固复习

2024/01/21

玩好了,再明确下最近学习目标:

Maven 分模块开发、力扣、简历、Mybatis、Redis、MySQL、Java 并发、Spring

总算再次跑通了 API 接口开放平台

Java 并发编程:

  • 原子类:基本类型原子类 Atomic *、数组类型 Atomic * Array 等,CAS,乐观锁
  • 原子类和 volatile 关键字,保证组合操作的原子性,线程同步,保证线程安全(原子类);每次线程修改变量,其余线程立刻能看到
  • 原子类和 synchronized 关键字对比:前者利用 CAS,后者 monitor 锁;锁粒度不同,悲观锁和乐观锁的区别,synchronized 的性能分析
  • ThreadLocal 使用场景:为每个线程创建一个副本,保存各个线程独享的对象;独立保存信息,避免传参,类似全局变量
  • ThreadLocal 解决多线程访问共享资源问题?不能。解决多线程下的线程安全问题,通过把共享资源变成每个线程内部独享的资源,避免了线程同步操作,解决并发问题。ThreaLocal 通过让每个线程独享自己的副本,避免资源竞争和线程同步;synchronized 用于合理分配临界资源,通过加锁,限制同一时刻只能有一个线程访问共享资源
  • Thread、ThreadLocalMap 和 ThreadLocal 的关系。ThreadLocal 的 get()、set() 方法,Thread 的 getMap() 方法,threadLocals 开放寻址法扩容。HashMap 的 set、get、rehash、resize 方法
  • 什么是内存泄漏,OOM 内存溢出。Key 的泄露、Vlue 的泄露,remove 方法
  • Callable 接口和 Runnable 接口,执行方法是 call(),有返回值,可抛出异常,与 Future 配合,了解任务执行情况。方法重写相关概念
  • Future 类的作用:遇到运算耗时的工作(查询数据库、繁重的加密、压缩计算等),分配子线程异步执行,通过 Future 管理子线程,获取执行结果,提高整个程序的运行效率。核心方法:cancel、isCancelled、isDone、get
  • FutureTask 实现 RunnableFuture 接口,可以获取线程池执行结果。通过 Calllable 实例构造 FutureTask 实例,作为 Runnable 对象执行线程,获取任务执行结果。
  • Future 的 get 方法应该携带超时参数,限制在固定时间内返回结果,否则抛出异常,不阻塞线程池内其他线程。Future 也不会产生新的线程,把 Callable 实例提交到线程池,仅提交了任务而非线程。回顾线程池的执行原理、线程的创建过程。

我明白你的问题,你希望了解CountDownLatch的工作原理,特别是为什么线程内部的countDownLatch.countDown()会影响到外部的等待。

CountDownLatch是一个同步辅助类,允许一个或多个线程等待,直到其他线程完成一系列的操作。其工作原理是通过一个内部计数器来实现的。这个计数器在初始化时设置一个初始值,每次调用countDown()方法时,计数器减少1。当计数器达到0时,所有在await()方法上等待的线程都可以继续执行。

getPrices()方法中,你初始化了CountDownLatch并将其计数设置为3,因为你有3个任务提交到了线程池。然后,你提交了3个任务到线程池,每个任务都使用同一个CountDownLatch实例。

当每个任务在其内部执行countDownLatch.countDown()时,这个计数器就会减少1。这意味着,无论任务是在哪个线程中执行的,只要有一个任务调用了countDown(),计数器就会减少。

然后,在主线程中,你调用了countDownLatch.await(3, TimeUnit.SECONDS);。这会导致主线程等待,直到计数器达到0。但是,主线程并不直接与具体的任务线程交互。它只是等待CountDownLatch的计数器达到0。这意味着,只要有一个任务调用了countDown(),主线程就会继续执行。

因此,虽然countDown()是在线程内部执行的,但外部(即主线程或其他使用同一个CountDownLatch的线程)会受到它的影响,因为计数器的值在多个线程之间是共享的。这就是为什么当一个任务调用了countDown()后,主线程会继续执行的原因。

2024/01/22

什么时候要加索引?从业务的角度出发去考虑,从字段枚举值的区分度、字段类型考虑。能不用索引就不用索引,占用空间,更新数据库还需要同步维护索引。能用单列索引就不用联合索引

  • synchronized 不仅保证原子性,还保证可见性。它会设立一个临界区,保证临界区内最多同时只能有一个线程执行操作,同时还保证了在前一个线程释放锁之后,之前所做的所有修改,都能被获得同一把锁得线程看到,也就是该线程能读取到最新的值。这很好地解决了线程安全问题。
  • CPU 多级缓存,JMM 的主内存和工作内存,深刻理解可见性s

荒野行动教程_如何在PC上用模拟器玩(而且匹配的是手机服) (taodudu.cc)

网易《荒野行动》官方网站-纯正国产战术竞技手游 (163.com)

volatile 保证可见性、禁止指令重排序,是轻量级的 synchronized ,没有提供原子性和互斥性,是高性能的,没有获取锁和释放锁的过程

单例模式:双重检查锁 + volatile

什么是 CAS?当预期值和当前内存值相同时,修改内存值。既能保证安全性,又不需要互斥锁,在并发容器 CurrentHashMap、数据库和原子类中广泛使用

CAS 的问题:ABA(版本号机制);CAS 往往配合着死循环,高并发场景下,自旋时间过长;不能灵活控制线程安全的范围

最近没有写学习计划了,三点:项目优化、算法刷题、简历优化

今晚完成了链表常见算法:合并链表、分割链表、寻找倒数第K节点、寻找链表中点、判断链表相交、反转链表

2024/01/23 - 24

这两天去离石串门去了,Java 并发编程完结 ✔

前天的反转链表,拖到今天还没完成呢

很好,反转单链表、反转前 n 个节点,反转区间节点的递归写法明确了

2024/01/25

今天开始着手总结:如何理解 XXX 技术?

你如何理解 Spring?

谈谈你知道的设计模式

Spring系列_叶秋学长的博客-CSDN博客

2024/01/26

寻找回文字符串:从中间向两端

判断回文字符串:从两端向中间,均利用了双指针技巧

判断回文链表呢?很显然不能这么干

  • 模仿双指针,递归,后序遍历:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 左侧指针
ListNode left;

boolean isPalindrome(ListNode head) {
left = head;
return traverse(head);
}

boolean traverse(ListNode right) {
if (right == null) return true;
boolean res = traverse(right.next);
// 后序遍历代码
res = res && (right.val == left.val);
left = left.next;
return res;
}

优化空间复杂度,反转链表:

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
27
28
29
30
31
32
33
boolean isPalindrome(ListNode head) {
ListNode slow, fast;
slow = fast = head;
while (fast != null && fast.next != null) {
slow = slow.next;
fast = fast.next.next;
}

if (fast != null)
slow = slow.next;

ListNode left = head;
ListNode right = reverse(slow);
while (right != null) {
if (left.val != right.val)
return false;
left = left.next;
right = right.next;
}

return true;
}

ListNode reverse(ListNode head) {
ListNode pre = null, cur = head;
while (cur != null) {
ListNode next = cur.next;
cur.next = pre;
pre = cur;
cur = next;
}
return pre;
}

链表:

  • 双指针:合并链表、分割链表、合并K个有序链表、单链表中点、单链表倒数第K个节点判断链表是否包含环、判断链表相交
  • 链表反转:反转链表、反转前n个节点、反转区间、K个一组反转链表
  • 判断回文链表:压栈,反转,双指针

滑动窗口:最小覆盖字串、字符串排列、找所有字母异位词、最长无重复子串、子数组最大平均数、最长连续递增序列、盛水最多的容器

贪心:分发饼干、柠檬水找零、判断区间重叠、合并区间、插入区间、字符串分割、加油站

动态规划:

回溯:

二叉树:

近日技术文章摘抄:

一个完善的微服务案例:

image-20240126230650544

2024/01/27

回溯:路径、选择列表、结束条件

暂时不清楚今天要做什么,定俩目标:

  • 完善 Ant Design Pro 前端项目模板
  • 完善 Memory OJ 在线判题系统后端
  • 学习 RabbitMQ,快速应用

image-20240127232929710

2024/01/28

游戏主机入坑指南!Switch、PS5、Xbox怎么选?一个视频说清楚_哔哩哔哩_bilibili

【建议收藏】2023年PS5入坑指南丨选购攻略、游戏推荐、会员、扩容,一个视频全看懂_哔哩哔哩_bilibili

阿狸才不是受的个人空间-阿狸才不是受个人主页-哔哩哔哩视频 (bilibili.com)

dto vo区别-CSDN博客

  • 构建用户表、题目表、题目提交表
  • 数据库字段存 json 字符串,便于扩展:判题用例、判题配置、判题信息
  • 构建枚举类:判题信息、判题状态、编程语言
  • 上传题目、查询题目、修改题目
  • 用户查询已提交题目信息,提交代码仅自己可见
  • 在线判题系统直播笔记 (yuque.com)

2024/01/29

【硬件科普】五分钟教你认识显卡!独立显卡和集成显卡有什么区别?显卡对游戏影响大吗?干货满满!轻松入门!_哔哩哔哩_bilibili

今日任务:

  • 完成后端 Spring Boot 框架模板构建 ✔
  • 完成 Memory 聚合搜索平台的项目收获,详细列举项目亮点,进一步熟悉项目(技术选型、库表设计、编码思路、困难克服)
  • 消息队列实战,智能 BI 平台完善
  • 算法:结束数组算法的学习,总结巩固链表相关算法,开启二叉树常见算法题型
  • 阅读博文,进一步了解 Spring Boot、Spring Cloud、Redis 等

显卡天梯-简约版_哔哩哔哩_bilibili

12月显卡最新排行榜,临近双12,显卡天梯最新排行榜_哔哩哔哩_bilibili

笔记本显卡性能排行榜,笔记本显卡最新天梯榜_哔哩哔哩_bilibili

显卡七彩虹影驰索泰和英伟达之间有什么关系?

显卡七彩虹、影驰、索泰和英伟达之间的关系如下:

  1. 英伟达是显卡芯片的制造厂商,也是目前市场上最主要和领先的显卡芯片供应商。七彩虹、影驰、索泰等品牌都是基于英伟达的显卡芯片进行设计和生产。
  2. 七彩虹、影驰、索泰等品牌是显卡的OEM厂商,他们从英伟达采购显卡芯片,然后根据各自的设计和需求,生产出不同规格和外观的显卡产品。这些品牌在市场上销售的显卡产品,通常是基于英伟达的芯片进行设计和生产的。
  3. 英伟达的芯片供应给各个显卡厂商,厂商们再根据需要选择是否使用英伟达的芯片和技术进行生产和销售。因此,在市场上,消费者可以购买到基于英伟达芯片的七彩虹、影驰、索泰等品牌的显卡产品。

总的来说,七彩虹、影驰、索泰等品牌是显卡市场的竞争者,他们基于英伟达的芯片进行设计和生产,以满足不同消费者的需求。

完善了 Spring Boot 项目模板和 Memory OJ 在线判题系统的博客记录,今晚看博文尝试完善 Spring 知识体系

今晚估计只能完善一部分算法题了,在把前端项目模板开个头,最后快速熟悉下聚合搜索平台项目收获 + 消息队列基础知识和实战

2024/01/30

[精选400道计算机二级题库 | 计算机二级必考(MS Office)选择题_全国计算机二级必考选择题-CSDN博客](https://blog.csdn.net/CSDN_224022/article/details/131948781?ops_request_misc=%7B%22request%5Fid%22%3A%22170658205816800192257758%22%2C%22scm%22%3A%2220140713.130102334..%22%7D&request_id=170658205816800192257758&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-4-131948781-null-null.142^v99^pc_search_result_base4&utm_term=计算机二级ms office题库&spm=1018.2226.3001.4187)

计算机二级考试office考试内容-本地惠生活 (baidu.com)

全国大学英语四、六级考试报名网 (neea.edu.cn)

求最新的计算机二级office题库百度云资源,谢谢_百度知道 (baidu.com)

(2024年3月)MS 计算机二级真题讲解_哔哩哔哩_bilibili

【从游戏显卡、矿卡到“AI霸主”,英伟达凭什么?【阿Test正经比比】】 https://www.bilibili.com/video/BV1Cc411D7Un/?share_source=copy_web&vd_source=41484c3c23d7dc1caf838d6574365b27

  • 双指针:合并链表、分割链表、合并K个有序链表、单链表中点、单链表倒数第K个节点判断链表是否包含环、判断链表相交
  • 链表反转:反转链表、反转前n个节点、反转区间、K个一组反转链表
  • 判断回文链表:压栈,反转,双指针

现在开始到今晚八点,解决这几件事:链表算法总结 + 数组算法完善,前端项目模板开个头,项目总结

img

搜索列表(文章) - Ant Design Pro

开始使用 - Ant Design Pro

布局 - Ant Design (antgroup.com)

布局与菜单 (umijs.org)

2024/01/31

雯ww63的个人空间-雯ww63个人主页-哔哩哔哩视频 (bilibili.com)

一晚上的尝试,Ant Design Pro 框架的 config.ts 中的 layout 插件配置还是不生效,完全理解不了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const Settings: ProLayoutProps & {
pwa?: boolean;
logo?: string;
} = {
"navTheme": "light",
"colorPrimary": "#1890ff",
"layout": "top",
"contentWidth": "Fluid",
"fixedHeader": true,
"fixSiderbar": true,
"pwa": true,
"logo": "https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg",
"token": {},
"siderMenuType": "group",
"splitMenus": false
};

近期目标有三:八股记忆,项目优化,算法练习

集合

  • 红黑树:AVL 树的概念,二叉平衡树(二叉查找树),平衡因子,高度平衡;红黑树的概念、性质、插入操作实现(旋转),红黑树和 AVL 树的比较

集合深度核心面试题和并发编程深度核心面试题,看多少也不是自己的,要一条条地自己总结归纳

MemoryCode 忆墨轩 初始化完成

优化学习 Memory Search 聚合搜索平台

Java开发 - Canal的基本用法_canal java-CSDN博客

2024/02/01

使用 TCP 通信的全流程,今天解决

MemorySearch 忆搜阁

优化中,最后 ES 跟疯了一样,挂掉了还疯狂请求重试

我为什么要学编程?自学编程两年多,我都学到了些什么?

其实我是很不擅长总结这些东西的,写东西总是让我感觉很烦躁。这其中的原因有很多,就外部原因来讲:当今社会,是一个数字化信息化的社会。换句话讲,这是一个浮躁的社会。

科技发展日新月异,手机电脑等电子产品作为办公社交的设备已经离不开身。就我个人来讲,每天都需要在这些电子设备上获取信息,比如,关注热点新闻、学习前沿科技技术、刷刷短视频或者看一部自己喜欢的电影。我特别喜欢这句话:这个世界上,对每一个人来讲,只有一件事是绝对公平的,那就是每个人每天都只有24小时。想想看,自己每天是如何支配这24小时的。我经常进行这样的思考,能让我富有活力。进行这样的思考给我带来一种很特别的感觉,那就是我总能想明白自己正在做什么,或者需要做什么,我很喜欢这种感觉。这就是在这个浮躁的社会中,我在做的事情:一天24小时中,总要抽出一部分时间,这是属于我自己的时间,思考自己现在所处的人生阶段和对未来的规划,想清楚自己应该做什么,并矢志不渝地执行它。

光在大脑里空洞洞地思考是不够的,在适当的场合下,我会选择用文字记录下我的思维过程。就像前面谈到的,写东西总是让我感觉一股莫名的烦躁,因为绝大多数时间中,我总是不能够恰当地记录下我的想法和思维过程。那么废话不多说,进入今天的闲聊时间吧。

现在是二月一日,明年六月底就要本科毕业,我已经进入暑期实习备战阶段。我对自己的定位很清楚,也在认真准备着。对于 Java 实习面试,我没有相关经验,但是我有很多想法。在面试中如何回答的滴水不漏?面试无非三方面:八股吟唱,项目拷问,算法考察。

算法没什么好讲的,刷题 + 总结即可,重要的是制定长时间的规划并不折不扣地执行,稳步提升算法水平。这段时间,我也在着手总结常见算法考察题型的解题思路

八股文很关键,也很无聊,属于是面试中考察的重点。这部分内容必须要充分地准备,也就是熟练背诵常见的八股面试题并理解,才能做到在面试过程中回答地滴水不漏。

我正在着手写一个系列,那就是避开细节知识不谈,讲一讲自己对某方面知识的理解。目前想到的有这些:

  • 为什么要学编程?可以谈一谈编程学习的经验吗
  • 能谈一谈什么是 Spring 吗?
  • 能谈一谈什么是 Maven 吗?
  • 能谈一谈 MySQL 吗?
  • 能谈一谈 Redis 吗?
  • 讲一讲你做的这个项目吧,这个系统是用来干什么的,你又是怎么设计的,开发过程中遇到了什么困难,你又是如何解决的
  • 一个 Java 程序的运行过程是怎样的?
  • 一条 SQL 语句的执行过程是怎样的?
  • 能谈一谈使用 TCP 通信的整个流程吗?

像这样的问题有很多,你想想觉得挺简单,但一段话能说明白很难。我对自己的要求就是,用简短的几段文字,写清楚这些问题的答案。

2024/02/02

什么是架构设计?为什么要做架构设计?如何做好架构设计?

Elasticsearch词频统计实现与原理解读-腾讯云开发者社区-腾讯云 (tencent.com)

2024/02/03

近期目标:

  • 项目优化:完善项目,部署上线项目
  • 八股记忆:在总结中
  • 算法强化:蓝桥杯
  • 计算机四级:网络工程师

连接 Redis,保存搜索词,处理高并发

查询搜索词,根据词条搜索次数降序排序,取前十条,反馈给前端

前端,图表展示前十条热门搜索词

根据积分(积分规则:综合分析文章点赞、评论、收藏等数据),挑选十位高级用户(+ 发文数量)/ 五十篇热门文章

存储高级用户的文章(文章标题、简介、内容,仅文字)到 MySQL,同步至 ES ,获取热门关键词

2024/02/04

RedisTemplate.opsForZSet()用法简介并举例-CSDN博客

热搜词统计优化:

  • 以空格分词,存入 Redis ✔
  • 保存用户搜索关键词,保存历史搜索关键词
  • 按搜索次数,返回前十条热门搜索词 :Redis 使用 sortedSet ✔

2024/02/05

记录热搜词开发过程,巩固 Redis 基础知识(数据结构),总结项目收获

最后优化所有数据展示

搜索建议词优化

Memory API 接口开放平台

  • 总结项目收获
  • 开发新的后台接口
  • Spring Cloud 、Dubbo 深入了解,服务间通信
  • 优化前端页面

图片搜索:屏蔽空值,缓存历史记录

权限校验:全局请求过滤器,用户登录校验

2024/02/06

今日任务:基本完成 页面展示、网站首页

完成项目收获、项目开发流程、亮点总结、简历写法

快速上手 | vuepress-theme-hope (vuejs.press)

网站首页:

  • 跳转:开始使用,项目文档,个人博客,视频演示(B站)
  • 概览:核心功能,技术选型,学习收获,个人博客,维护升级
  • 背景图片选择
  • 部署

image-20240206163444494

image-20240206163455575

image-20240206163421002

PNG转SVG - 在线转换图像文件 (aconvert.com)

通用网站首页完成

MemoryAPI 忆汇廊

2024/02/07

MemoryCode 忆墨轩,MemorySearch 忆搜阁,MemoryCal 忆算云,MemoryAPI 忆汇廊

上午巩固 MySQL 八股文

今天完成 MemorySearch 忆搜阁 全部功能,编写 MemoryAPI 忆汇廊 新接口

缓存图片

搜索建议思路:从全部搜索词条中匹配前五条

分析热门用词:聚合查询语法,热门用词在多篇文章中均出现过,根据点赞量等,综合选举出五十篇热门文章

外部获取文章:定时爬取文章信息,二十四小时查询一次,爬取十篇文章

权限校验:前端校验用户能获取(使用)哪些页面,后端限制用户使用哪些服务

2024/02/08

合理调整首页样式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
highlights:
- header: " "
description: " "
type: order
# color: "#ff0000" # 红色
image:
bgImage: /img/winter2.jpg
bgImageDark: https://theme-hope-assets.vuejs.press/bg/5-dark.svg
bgImageStyle:
background-attachment: fixed

- header:
description: " "
bgImage: /img/winter2.jpg
bgImageDark: https://theme-hope-assets.vuejs.press/bg/2-dark.svg
bgImageStyle:
background-attachment: fixed

回村,贴对联

明天年初,今晚要勤快点了(勤快点吃东西)

后台接口服务不是重点,重点是“丰富”,目前设想:随机壁纸、随机诗词、随机名言 / 鸡汤、AI 一键润色语句

2024/02/09

芜湖,换了个新壁纸:

image-20240210130126622

大扫除,今晚除夕夜

2024/02/10

总结学习收获

项目待完成:搜索建议、热门词分析、压力测试、权限校验、定时爬取外部文章、学习收获

2024/02/11

今天学习 MyBatis、Redis

用户未登录,前端如何限制用户访问页面

Java中通过ElasticsearchRestTemplate进行聚合操作_elasticsearchresttemplate中按照数组进行聚合-CSDN博客

[Aggregations | Elasticsearch Reference 6.0] | Elastic

2024/02/12

热门话题分析:本地文章,根据文章内容,获取热门话题

JDK 动态代理的实现原理是:动态创建代理类,然后通过指定类加载器进行加载。在创建代理对象时,需要将 InvocationHandler 对象作为构造参数传入;当调用代理对象时,会调用 InvocationHandler.invoke() 方法,从而执行代理逻辑,最终调用真正业务对象的相应方法。

[04 Dubbo SPI 精析,接口实现两极反转(下) (lianglianglee.com)](https://learn.lianglianglee.com/专栏/Dubbo源码解读与实战-完/04 Dubbo SPI 精析,接口实现两极反转(下).md)

功能介绍、Gitee 源码、学习收获、文档优化、代码调整优化、页面优化

2024/02/13

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
27
28
// 创建一个异步任务集合
ArrayList<CompletableFuture<Void>> futureList = new ArrayList<>();
// 开10条线程
for (int i = 0, j = 0; i < maxSize; i++) {
// 每条线程下new一个userList
ArrayList<Post> userList = new ArrayList<>();
while (true) {
j++;
Post post = new Post();


// 当该线程插满1000条数据,便退出该线程循环
if (j % batchSize == 0) {
break;
}
}
// 异步条件下, 执行批量插入
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
System.out.println("threadName: " + Thread.currentThread().getName());
// userService.saveBatch(userList, batchSize);
});
// 将该任务存储到异步任务集合当中
futureList.add(future);
}

// 结束所有异步任务
CompletableFuture<Void> future = CompletableFuture.allOf(futureList.toArray(new CompletableFuture[]{}));
future.join();

异步编程更快的原因主要有以下几点:

  1. 非阻塞性:异步编程允许程序在等待某个操作完成时继续执行其他任务,而不是阻塞在那里等待。这样可以避免因等待某个耗时操作而导致整个程序的阻塞,提高了程序的执行效率。
  2. 并行处理:异步编程可以充分利用多核处理器的优势,将多个任务分配给不同的处理器核心同时执行,从而提高程序的执行速度。
  3. 减少资源占用:异步编程可以减少程序在等待I/O操作(如网络请求、文件读写等)完成时的资源占用,例如内存和CPU。这样可以让程序在等待这些操作时执行其他任务,提高资源利用率。
  4. 简化代码逻辑:异步编程可以将复杂的同步代码逻辑转换为更简单、易于理解的异步代码,降低了代码的复杂度和维护成本。

总之,异步编程通过提高程序的执行效率、充分利用多核处理器和减少资源占用等方面的优势,使得程序在处理耗时操作时能够更快地完成任务。

好用的录屏软件:Bandicam

今日完成 MemorySearch 忆搜阁 全部内容,同步博客学习笔记到语雀

搜索建议优化:存储搜索词到 Redis,同步搜索词到 ES,在 ES 内查找所有搜索词,返回前十条搜索建议

基本学习了解了 DSL 语法:

  • 新增索引,添加 suggest 属性使该字段支持搜索建议

  • 实现搜索建议,根据前缀查找指定索引,获取搜索建议文档

  • 删除索引

妈的,标题还有带表情的:

image-20240213232409333

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Test
void getArticleContentById() {
Article article = articleService.getById(7313418992310976549L);

Long id = article.getId();
String title = article.getTitle();
byte[] content = article.getContent();

String decodedContent = new String(content, StandardCharsets.UTF_8);
Integer type = article.getType();

System.out.println(id);
System.out.println(title);
System.out.println(decodedContent);
System.out.println(type);
}

2024/02/14

优化系统性能:

当然,除了异步编程优化数据插入性能外,还可以考虑以下几种技术上的优化策略来进一步提升系统性能:

  1. 内存缓存
    • 使用缓存库:如Redis或Memcached,将频繁访问的数据(如热门作者或诗词)缓存在内存中,减少对数据库的访问次数。
    • 本地缓存:对于单个应用实例,可以使用如Google的Guava Cache或EhCache等本地缓存库,缓存部分数据以减少数据库访问。
  2. 数据库优化
    • 索引优化:确保数据库表的关键字段(如作者、标题等)有适当的索引,以加速查询速度。
    • 批量操作:继续利用批量插入操作来减少数据库交互次数,提高数据写入效率。
    • 数据库连接池:使用连接池来管理数据库连接,避免频繁地创建和销毁连接,减少资源消耗。
  3. HTTP请求优化
    • 请求合并:对于多个小的HTTP请求,可以考虑合并成一个大的请求,以减少网络延迟和服务器处理时间。
    • 请求缓存:对于不经常变动的数据,可以在客户端或代理服务器上缓存HTTP响应,避免重复请求。
  4. 并发控制
    • 限流与降级:在并发量过高时,通过限流策略保护核心资源,同时可以采用降级策略,暂时关闭部分功能以保证整体系统的稳定性。
  5. 解析优化
    • 流式解析:使用如Jsoup的流式解析功能,避免一次性加载整个HTML文档到内存中,减少内存消耗。
  6. 日志与监控
    • 性能监控:通过日志记录和性能监控工具(如Prometheus, Grafana等)持续跟踪系统性能,发现瓶颈并进行针对性优化。
  7. 系统架构优化
    • 微服务化:将系统拆分为多个微服务,每个服务负责处理特定的功能,以提高系统的可扩展性和可维护性。
    • 负载均衡:使用负载均衡器分发请求到多个应用实例,避免单点故障,提高系统可用性。
  8. 代码层面优化
    • 避免N+1查询问题:在数据访问层优化查询逻辑,避免因为不恰当的查询策略导致的过多数据库访问。
    • 使用合适的数据结构和算法:确保代码中使用高效的数据结构和算法,减少不必要的计算和资源消耗。

综上所述,通过结合多种优化策略,可以进一步提升系统的整体性能和响应速度。

2024/02/15

数据同步:

4 种 MySQL 同步 ES 方案,yyds! - 掘金 (juejin.cn)

MySQL如何实时同步数据到ES?试试这款阿里开源的神器! - 掘金 (juejin.cn)

✨基于Spring-Data-Elasticsearch 优雅的实现 多字段搜索 + 高亮 + 分页 + 数据同步✨ - 掘金 (juejin.cn)

聚合搜索相关概念,现有系统调研,核心功能,核心业务流程,技术选型,架构设计

权限校验:

vue中使用vuex(超详细) - 掘金 (juejin.cn)

限流算法:

四种限流算法

2024/02/16

大厂真实 Git 开发工作流程 - 掘金 (juejin.cn)

没想到RTS游戏竟然有战术攻楼动作!(英雄连)〖游戏不止〗_单机游戏热门视频 (bilibili.com)

帝国时代,英雄连,全面战争

2024/02/17

好久没有总结现阶段的学习计划了

今天到明天,尽快完成 MemorySearch 忆搜阁开发

上午做算法题,看英文报刊和书籍,完善简历

中午整理八股,记忆八股

下午优化项目,思考扩展点

晚上整理学习思路

从单体架构升级到分布式架构,需要注意以下几个方面:

  1. 系统拆分:需要对原有的单体系统进行合理的拆分,将其分解为多个可以独立部署和运行的子系统或服务。这一过程中要考虑服务的边界划分,确保每个服务的职责单一,便于管理和维护。
  2. 数据一致性:在分布式系统中,数据可能会分布在不同的服务或数据库中,因此需要确保数据的一致性。这可能涉及到分布式事务的处理,以及选择合适的一致性模型(如强一致性、最终一致性等)。
  3. 通信机制:服务之间需要进行通信,需要选择合适的通信机制,如同步调用、异步消息队列等。同时,要考虑到网络延迟、服务可用性等因素,设计容错和重试机制。
  4. 服务发现与注册:在分布式环境中,服务的位置可能会动态变化,需要实现服务发现和注册机制,以便服务之间能够相互找到并通信。
  5. 负载均衡:为了提高系统的伸缩性和可用性,需要实现负载均衡机制,使得请求能够均匀地分发到不同的服务实例上。
  6. 监控与日志:分布式系统的监控和日志记录比单体系统更加复杂。需要有一套完善的监控体系来跟踪系统的性能和健康状况,同时要有集中的日志管理系统,以便于问题的定位和分析。
  7. 安全性:分布式系统的安全性也是一个重要考虑点。需要确保各个服务之间的通信是安全的,同时还要考虑到服务对外的API安全,防止未授权的访问。
  8. 部署与运维:分布式系统的部署和运维比单体系统更加复杂。需要考虑如何快速部署新版本的服务,以及如何处理服务间的依赖关系。
  9. 容灾备份:为了保证系统的高可用性,需要设计容灾备份方案,包括数据备份、服务冗余等,确保在出现故障时能够快速恢复。
  10. 业务改造:从单体架构向分布式架构迁移时,可能需要对现有业务逻辑进行改造,以适应新的架构模式。这可能涉及到代码重构和业务流程的调整。
  11. 组织文化:分布式架构的引入不仅仅是技术层面的改变,还可能影响到团队的组织文化和工作方式。团队成员需要适应新的开发、部署和运维流程。
  12. 技术选型:在选择分布式架构的具体实现技术时,需要考虑技术的成熟度、社区支持、学习曲线等因素,选择适合自己团队和业务需求的技术栈。
  13. 渐进式迁移:如果条件允许,可以考虑采用渐进式迁移的策略,逐步将单体架构中的模块转化为分布式服务,而不是一次性全面转型,这样可以减少风险和压力。

总的来说,从单体架构升级到分布式架构是一个复杂的过程,涉及到系统架构、技术选型、团队协作等多个方面。需要仔细规划和逐步实施,以确保迁移过程的平稳和系统的稳定运行。

2024/02/18

开学咯

稀里糊涂就开学了,感觉还有很多的事情没做,家人、朋友、同学、学习……

想法很多,做的很少,这是当代大多数人的通病了

那还愣着干啥,2024,启动!

CompletableFuture 是 Java 8 引入的一个功能强大的类,用于异步编程和函数式编程。它提供了一种简单而灵活的方式来处理并发编程中的异步操作和结果。介绍 CompletableFuture 时,可以从以下几个方面入手:

  1. 基础概念:
    • 解释什么是异步编程,为什么在现代应用中需要它。
    • 引入 CompletableFuture 的概念,并解释其与传统的 FutureCallable 的区别。
  2. 创建 CompletableFuture:
    • 展示如何使用 CompletableFuture.supplyAsyncCompletableFuture.runAsync 创建异步任务。
    • 解释这两种方法的参数,如 SupplierRunnable,并讨论它们的用途。
  3. 链式编程:
    • 展示如何使用 thenApply, thenAccept, thenCompose 等方法链接多个异步操作。
    • 解释这些方法的返回值类型和作用。
  4. 异常处理:
    • 讨论如何处理 CompletableFuture 中的异常。
    • 展示如何使用 exceptionally 方法处理异常。
  5. 组合和合并操作:
    • 介绍 allOf, anyOfcompletedFuture 等方法,用于组合和等待多个 CompletableFuture 实例。
    • 讨论这些方法的使用场景。
  6. 等待结果:
    • 展示如何使用 getjoin 方法等待异步操作的结果。
    • 讨论这两种方法的区别和适用场景。
  7. 取消操作:
    • 解释如何使用 cancel 方法取消一个异步操作。
    • 讨论取消操作的限制和可能的后果。
  8. 与其他并发工具的比较:
    • 比较 CompletableFuture 与其他并发工具(如 Future, ExecutorService, RxJava 等)的优缺点。
  9. 最佳实践和注意事项:
    • 强调避免阻塞等待异步结果的重要性。
    • 讨论如何避免创建过多的线程,以及如何优雅地处理异常和取消操作。
  10. 实际案例:
    • 提供一个或多个实际使用 CompletableFuture 的案例,以展示其在实际项目中的应用。

最后,确保在介绍过程中结合示例代码,以便读者更好地理解和实践所学内容。

异步编程利器:CompletableFuture详解 |Java 开发实战 - 掘金 (juejin.cn)

CompletableFuture 异步编程:创建异步任务、任务异步回调、多个任务组合处理

探秘前端状态管理 — 深入浅出Vuex - 掘金 (juejin.cn)

vue中使用vuex(超详细) - 掘金 (juejin.cn)

状态管理之 Flux、Redux、Vuex、MobX(概念篇) - 掘金 (juejin.cn)

基本上完成文档编写了,明天完成目录优化和文档部署,在慢慢优化该项目的过程中,记忆相关八股、深入学习相关知识

完善 MemoryAPI 忆汇廊 的相关功能实现文档,扩展实现思路

明天开始持续学习算法,蓝桥杯,上午加背八股和简历优化

2024/02/19

bbeab873a519ad76cec66df49c733131.pdf (neea.edu.cn)

计算机四级网络工程师知识点(非常全面)_网络工程师四级题库知识点总结-CSDN博客

考试内容: 分为操作系统原理计算机网络两大部分

考试题型: 分为单选题多选题两部分

题型占比: 总共80道题(单选题每题1分,共60道;多选题每题2分,共20道),其中操作系统原理30个单选题加10个多选题;计算机网络同样也是30个单选题加10个多选题

考试时间: 90分钟

报考须知: 需要通过计算机三级网络技术(如果计算机三级网络技术没有通过,计算机四级网络工程师通过,该成绩只能维持六个月)

Vuepress 文档中,在 config.jsindex.md 文件中,可分别修改文档首页 LOGO导航栏 LOGO

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
module.exports = {
theme: "vdoing", // 使用依赖包主题
// theme: require.resolve('../../vdoing'), // 使用本地主题 (先将vdoing主题文件下载到本地:https://github.com/xugaoyi/vuepress-theme-vdoing)
title: "MemorySearch 开发者文档",
description: "🚀为简化开发而生",
base: "/memory-search-docs/", // 默认'/'。如果你想将你的网站部署到如 https://foo.github.io/bar/,那么 base 应该被设置成 "/bar/",(否则页面将失去样式等文件)
// 主题配置
themeConfig: {
nav: [
{ text: "首页", link: "/" },
{
text: "操作指南",
link: "/pages/52d5c3/",
items: [
{ text: "概述", link: "/pages/52d5c3/" },
{ text: "系统设计", link: "/pages/a2f161/" },
{ text: "维护升级", link: "/pages/793dcb/" },
{
items: [
{ text: "高效多元搜索", link: "/pages/346f3e/" },
{ text: "互动创作平台", link: "/pages/94778b/" },
{ text: "流量统计分析", link: "/pages/c0261e/" },
{ text: "个人中心管理", link: "/pages/8dfa99/" },
{ text: "资源全面管理", link: "/pages/8dfab5/" },
],
},
],
},
{
text: "学习收获",
link: "/pages/8dfad9/",
items: [
{ text: "概览", link: "/pages/8dfad9/" },
{
items: [
{ text: "Ant Design Vue 脚手架", link: "/pages/advjsj/" },
{ text: "Vuepress 静态文档站点", link: "/pages/vpjtwd/" },

{ text: "数据抓取", link: "/pages/sjzq/" },
{ text: "Elastic Stack 技术栈", link: "/pages/esjsz/" },

{ text: "适配器模式", link: "/pages/apqms/" },
{ text: "门面模式", link: "/pages/mmms/" },
{ text: "注册器模式", link: "/pages/zcqms/" },

{ text: "关键词语高亮", link: "/pages/gjcygl/" },
{ text: "搜索词条建议", link: "/pages/ssctjy/" },
{ text: "热门搜索统计", link: "/pages/rmsstj/" },
{ text: "热门话题分析", link: "/pages/rmhtfx/" },

{ text: "Logstash 数据同步管道", link: "/pages/lssjtbgd/" },
{ text: "Canal 监控数据库流水", link: "/pages/cjksjkls/" },
{ text: "Kibana 数据监控面板", link: "/pages/ksjjkmb/" },

{ text: "限流策略", link: "/pages/xlcl/" },
{ text: "Redis 缓存优化", link: "/pages/rhcyh/" },
{ text: "Knife4j & Swagger 接口文档", link: "/pages/ksjkwd/" },

{ text: "定时任务调度", link: "/pages/dsrwdd/" },
{ text: "权限校验机制", link: "/pages/qxjyjz/" },
{ text: "异步编程支持", link: "/pages/ybbczc/" },
],
},
],
},
// { text: "案例", link: "/pages/5d571c/" },
{
text: "问题答疑",
link: "/pages/9cc27d/",
items: [
{ text: "简介", link: "/pages/9cc27d/" },
{ text: "常见问题与解答", link: "/pages/9cc288/" },
],
},
// { text: "赞助", link: "/pages/1b12ed/" },
],
sidebarDepth: 2, // 侧边栏显示深度,默认1,最大2(显示到h3标题)
logo: "/img/logo.png", // 导航栏logo
repo: "xugaoyi/vuepress-theme-vdoing", // 导航栏右侧生成Github链接
searchMaxSuggestions: 10, // 搜索结果显示最大数
lastUpdated: "上次更新", // 更新的时间,及前缀文字 string | boolean (取值为git提交时间)

1
2
3
4
5
6
7
8
9
---
home: true
heroImage: /img/logo.png
heroText: MemorySearch 开发者文档
tagline: 🚀为简化开发而生
actionText: 开始使用
actionLink: /pages/52d5c3/
bannerBg: none # auto => 网格纹背景(有bodyBgImg时无背景),默认 | none => 无 | '大图地址' | background: 自定义背景样式 提示:如发现文本颜色不适应你的背景时可以到palette.styl修改$bannerTextColor变量

image-20240219105642175

如何描述该项目的核心功能?

  • 高效多元搜索:支持诗词、文章、图片等多种资源的聚合搜索
  • 互动创作平台:自由创作文章,分享图片
  • 流量统计分析:热门搜索统计,热门话题分析,最新的用户反馈记录
  • 个人中心管理:修改个人信息,查看点赞、收藏过的文章,查看最近一次搜索的图片记录,查看发表过的文章、上传过的图片,问题反馈
  • 资源全面管理:管理在线用户信息,管理诗词信息,管理文章信息,管理图片信息

下午计划:

  • 聚合搜索相关概念,现有系统调研,核心功能,核心业务流程,技术选型,架构设计
  • 过一遍 MySQL 相关面试题,勾划重点 ✔
  • 总结 Spring 相关知识体系,多看几篇博文
  • 快速过一遍算法功底,找回刷算法的手感,想清楚最紧要的算法题型 ✔
  • 想一想简历优化方向,专业技能如何写,写自己最擅长的 ✔
  • 玩 ✔

开发日志:批量插入诗词,搜索词建议,热门话题分析,图片缓存实现,网站首页,全局请求过滤器,ThreadLocal 记录登录用户信息,热门搜索统计

基本完成首页网站,预计明天完结

2024/02/20

系统分析 MemoryAPI 忆汇廊 核心功能,学习收获

大三下还打算窝在学校上课,是等着毕业就失业吗?

image-20240220103942373

花了一个多小时优化简历专业技能,目标清晰了许多,果然简历才是门面

[计算机四级 操作系统] | 选择题 2 重点标注版-CSDN博客

月底着手巩固四级吧

image-20240220162141077

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Spring 基础:
- IOC:对 IOC 的理解,什么是 BeanBean 的声明 / 定义方式(XML 配置文件,注解:@Bean、@Component),Bean 注入(@Autowired、@Resource),Bean 的作用域,Bean 的生命周期,Spring Boot 启动流程
- Bean 的生命周期中,实践过:聚合搜索中,初始化关联搜索类型和数据源
- AOP:对 AOP 的理解,AOP 的应用场景(处理公共行为,如日志记录、事务管理、权限控制、接口限流、接口幂等等),理解专用术语(切点、连接点、通知、切面),AOP 的实现方式(Spring AOP 和 AspectJ AOP 的比较),AOP 通知类型有哪些?如何控制多切面的执行顺序
- 使用 Spring AOP,实践过:权限校验和全局请求拦截
- Spring MVC:对 Spring MVC 的理解(MVC 是一种设计模式,Spring MVC 是一款很优秀的 MVC 框架),Spring MVC 的核心组件有哪些,其工作原理是怎样的,如何实现统一异常处理(@RestControllerAdvice@ExceptionHandler)
- Spring 框架中用到了哪些设计模式?(详见设计模式👇)
- Spring 事务:Spring 管理事务的方式,Spring 事务的传播行为,Spring 事务的隔离级别
- Spring 常用注解总结:启动类注解,Bean 相关,处理 HTTP 请求类型,前后端传值,读取配置信息,参数校验,全局异常处理,JPA 相关,事务,json 数据处理,测试相关

设计模式:
- Spring 框架中用到了哪些设计模式?
- 工厂模式:创建 Bean 对象
- 代理模式:Spring AOP (动态代理)
- 单例模式:Spring Bean 默认是单例的(singleton 作用域)
- 模板方法模式:对数据库操作的类,jdbcTemplateredisTemplate
- 装饰器模式:动态切换不同的数据源
- 观察者模式:Spring 事件驱动模型
- 适配器模式:Spring AOP 增强、Spring MVC 适配

有时花瓣纷飞 ,有时尘土飞扬 ,有时冷冷清清 ,有时熙熙攘攘 ,这就是我们要走的路 。

算了,今天又不能完成网站首页和文档编写了,主要还是有很多重复文档编写比较难完善,再就是系统架构还未梳理出来,今晚睡觉前好好想想,明天搞完

明天梳理 Memory API 忆汇廊核心功能,简单罗列:

  • 分布式服务架构
  • 丰富的接口实现
  • API 签名认证
  • 自定义 Starter
  • Gaateway 网关
  • Dubbo 远程调用
  • Nacos 注册中心
  • 统计分析功能
  • 定制 Spring 初始模板

简单的核心功能就是这样,剩下的就是明天完成了

明天继续算法学习

2024/02/21

好想家啊,想家了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Spring 基础:
- IOC:对 IOC 的理解,什么是 BeanBean 的声明 / 定义方式(XML 配置文件,注解:@Bean、@Component),Bean 注入(@Autowired、@Resource),Bean 的作用域,Bean 的生命周期,Spring Boot 启动流程
- Bean 的生命周期中,实践过:聚合搜索中,初始化关联搜索类型和数据源
- AOP:对 AOP 的理解,AOP 的应用场景(处理公共行为,如日志记录、事务管理、权限控制、接口限流、接口幂等等),理解专用术语(切点、连接点、通知、切面),AOP 的实现方式(Spring AOP 和 AspectJ AOP 的比较),AOP 通知类型有哪些?如何控制多切面的执行顺序
- 使用 Spring AOP,实践过:权限校验和全局请求拦截
- Spring MVC:对 Spring MVC 的理解(MVC 是一种设计模式,Spring MVC 是一款很优秀的 MVC 框架),Spring MVC 的核心组件有哪些,其工作原理是怎样的,如何实现统一异常处理(@RestControllerAdvice@ExceptionHandler)
- Spring 框架中用到了哪些设计模式?(详见设计模式👇)
- Spring 事务:Spring 管理事务的方式,Spring 事务的传播行为,Spring 事务的隔离级别
- Spring 常用注解总结:启动类注解,Bean 相关,处理 HTTP 请求类型,前后端传值,读取配置信息,参数校验,全局异常处理,JPA 相关,事务,json 数据处理,测试相关

设计模式:
- Spring 框架中用到了哪些设计模式?
- 工厂模式:创建 Bean 对象
- 代理模式:Spring AOP (动态代理)
- 单例模式:Spring Bean 默认是单例的(singleton 作用域)
- 模板方法模式:对数据库操作的类,jdbcTemplateredisTemplate
- 装饰器模式:动态切换不同的数据源
- 观察者模式:Spring 事件驱动模型
- 适配器模式:Spring AOP 增强、Spring MVC 适配

上午简单过了一遍 Java 面试八股合集,很多都是记忆过的,这东西还是得短时间内突击才有效

那么重点就是两个项目的完善 + 算法练习了

今天梳理 Memory API 忆汇廊核心功能,简单罗列:

  • 分布式服务架构:使用 Maven 实现多模块依赖管理打包
  • 丰富的接口实现
  • API 签名认证
  • 自定义 Starter
  • Gaateway 网关
  • Dubbo 远程调用
  • Nacos 注册中心
  • 统计分析功能
  • 定制 Spring 初始模板

外面还在一直下雪啊

等到过完年返校了才发现,能呆在家里自由自在地学习玩耍,真的很幸福。

谢谢你了,今年除夕夜里唯一一个在微信里送我祝福的人

image-20240221214221496

2024/02/22

配置 Canal 监听 MySQL 数据库流水,并同步数据至 Elasticsearch,失败,有时间再看看

上午了解了下牛客网算法面试题库 TOP100,在巩固复习蓝桥杯的同时,兼顾这部分内容

要想在这个糟糕的社会中立足,只需要关注两件事:事业和家庭

事业包括赚钱、交朋友,家庭包括亲情和友情 20020826

  • 了解蓝桥杯算法

“蓝桥杯”练习系统 (lanqiao.cn)

找到一个好的刷题网站:码曰 - 让代码在云端多飞一会 (dotcpp.com)

🍖 推荐阅读:蓝桥杯免费刷题网站_蓝桥杯刷题网站-CSDN博客

image-20240222202351543

![image-20240222203543310](D:\blog\vdoing\Memory-Search 开发者文档\docs.vuepress\public\img\article\jhss.png)

image-20240222203451920

image-20240222213338497

2024/02/23

上午记忆了 Java 基础 和 JVM 相关八股文,自以为大有所益

下午和小穆聊天,唠家常,唠理想

今天的目标有三个:完成今日算法练习、基本完成 API 项目简历写法、完成 Java 集合八股

今天梳理 Memory API 忆汇廊核心功能,简单罗列:

  • 分布式服务架构:使用 Maven 实现多模块依赖管理打包,依赖管理(依赖冲突、项目配置文件 pom.xml)
  • 丰富的接口实现:图片接口、接口限流
  • API 签名认证:摘要算法
  • 自定义 Starter:Spring SPI 机制
  • Gaateway 网关:实现,限流
  • Dubbo 远程调用:RPC,注册中心,技术选型
  • Nacos 注册中心:注册中心,技术选型,架构
  • 统计分析功能:统计分析
  • 定制 Spring 初始模板:自定义模板

晚风几许撩人意,夕阳半刻醉人心

大道至简:快速搭建博客与文档站点的终极指南2.0 - Memory’s blog (gitee.io)

浴火重生:从挫败到成功,前端框架的疑难杂症解决之道 - Memory’s blog (gitee.io)

[繁星点点:从零开始构建别具一格的 Spring Boot 项目框架 - Memory’s blog (gitee.io)](https://deng-2022.gitee.io/blog/2024/01/17/繁星点点:从零开始构建别具一格的 Spring Boot 项目框架/)

尝试 Gateway + Redis 限流失败,配置一直出错:面试官:网关如何实现限流?-腾讯云开发者社区-腾讯云 (tencent.com)

2024/02/24

MemorySearch 开发者文档 (gitee.io)

image-20240224105144169

思考:

设计更多优秀的接口,比如根据用户需求和提交的数据,调用 AI 大模型接口,在线生成图表。对于这种响应时间较长的服务,可以考虑使用异步编程,或者引入消息队列来提高系统响应速度,有效提升系统性能

客户端 SDK 的设计要保持精简,遵循相关规范,保证用户通过 SDK 调用接口服务的简洁性,提升用户体验

切实保障接口调用的性能、稳定性和可用性,可以考虑在网关增加限流和降级保护,以及严格的权限校验机制。给每个用户分配一对密钥,作为调用接口服务的凭证;对每个用户的接口调用次数加以限制;推出充值系统和订单系统,用户可充值购买接口调用次数,以享受接口调用服务

作为一个接口开放平台,目前仅提供了通过客户端 SDK 调用接口服务,应该考虑到如何便捷地添加新的接口服务、如何提高其它开发者接入平台的效率、安全性等,真正地让平台成为开放平台

现在的 客户端 SDK 仅支持下载代码至本地,在本地使用 mvn install 命令打包 SDK,在本地项目中引入 SDK 依赖即可使用

考虑在微服务网关前搭建 Nginx 网关,通过负载均衡实现高并发

多阅读官网文档,Spring Cloud Gateway、Dubbo、Ant Design Pro

微信公众平台 (qq.com)

image-20240224160321907

image-20240224160344953

image-20240224163717124

image-20240224163752118

image-20240224163806434

image-20240224170147055

image-20240224170440069

掘金学习:自定义 Starter,Undo log 作用:实现事务原子性、实现 MVCC,Redo log 实现 事务的持久化;Bin log 实现数据恢复和主从同步

每天都在持续输入,为什么不尝试输出呢

2024/02/25

本来想着写个简短的早间点滴的,不小心就写多了,写了一个多小时

那么下午该干点什么呢,继续优化简历,优化接口文档了,背背八股这样子

image-20240225142637078

强者,从来不会抱怨环境。我他妈就是强者

下午,来餐厅二楼自习,完善了计算机网络的八股

听歌听得我又有点想家了,在过去的一个月,我好像做了一个很长的梦

HTTP 学习:

但现实世界的网络却远比这个抽象的模型要复杂得多。实际的互联网是由许许多多个规模略小的网络连接而成的,这些“小网络”可能是只有几百台电脑的局域网,可能是有几万、几十万台电脑的广域网,可能是用电缆、光纤构成的固定网络,也可能是用基站、热点构成的移动网络……

首先,许多大公司、网络运行商都会建立自己的 DNS 服务器,作为用户 DNS 查询的代理,代替用户访问核心 DNS 系统。这些“野生”服务器被称为“非权威域名服务器”,可以缓存之前的查询结果,如果已经有了记录,就无需再向根服务器发起查询,直接返回对应的 IP 地址。

这些 DNS 服务器的数量要比核心系统的服务器多很多,而且大多部署在离用户很近的地方。比较知名的 DNS 有 Google 的“8.8.8.8”,Microsoft 的“4.2.2.1”,还有 CloudFlare 的“1.1.1.1”等等。

其次,操作系统里也会对 DNS 解析结果做缓存,如果你之前访问过“www.apple.com”,那么下一次在浏览器里再输入这个网址的时候就不会再跑到 DNS 那里去问了,直接在操作系统里就可以拿到 IP 地址。

另外,操作系统里还有一个特殊的“主机映射”文件,通常是一个可编辑的文本,在 Linux 里是“/etc/hosts”,在 Windows 里是“C:\WINDOWS\system32\drivers\etc\hosts”,如果操作系统在缓存里找不到 DNS 记录,就会找这个文件。

咏春八手:标,圈,按,绑,捆,刮,耕,伏

其实啊,人这一生,每段经历都是有意义的。

没有什么光阴真正被虚度,也没有任何事情是徒劳无功的。

那些看似无用的东西,都像埋藏在生命深处的种子,总会在某天结出沉甸甸的人生果实。

2024/02/26

牛客、BOSS、实习僧上了解了下行情,也没觉着多大焦虑,找工作嘛,是场持久战

今日任务:完成项目文档编写,完善简历内容,计算机网络基础,过一遍 Redis、集合、并发编程面试题

image-20240226093246181

  1. HTTP 是灵活可扩展的,可以任意添加头字段实现任意功能;

  2. HTTP 是可靠传输协议,基于 TCP/IP 协议“尽量”保证数据的送达;

  3. HTTP 是应用层协议,比 FTP、SSH 等更通用功能更多,能够传输任意数据;

  4. HTTP 使用了请求 - 应答模式,客户端主动发起请求,服务器被动回复请求;

  5. HTTP 本质上是无状态的,每个请求都是互相独立、毫无关联的,协议不要求客户端或服务器记录请求相关的信息

  6. HTTP 最大的优点是简单、灵活和易于扩展;

  7. HTTP 拥有成熟的软硬件环境,应用的非常广泛,是互联网的基础设施;

  8. HTTP 是无状态的,可以轻松实现集群化,扩展性能,但有时也需要用 Cookie 技术来实现“有状态”;

  9. HTTP 是明文传输,数据完全肉眼可见,能够方便地研究分析,但也容易被窃听;

  10. HTTP 是不安全的,无法验证通信双方的身份,也不能判断报文是否被窜改;

  11. HTTP 的性能不算差,但不完全适应现在的互联网,还有很大的提升空间。

重定向是服务器发起的跳转

301 的含义是“永久”的。

如果域名、服务器、网站架构发生了大幅度的改变,比如启用了新域名、服务器切换到了新机房、网站目录层次重构,这些都算是“永久性”的改变。原来的 URI 已经不能用了,必须用 301“永久重定向”,通知浏览器和搜索引擎更新到新地址,这也是搜索引擎优化(SEO)要考虑的因素之一。

302 的含义是“临时”的。

原来的 URI 在将来的某个时间点还会恢复正常,常见的应用场景就是系统维护,把网站重定向到一个通知页面,告诉用户过一会儿再来访问。另一种用法就是“服务降级”,比如在双十一促销的时候,把订单查询、领积分等不重要的功能入口暂时关闭,保证核心服务能够正常运行。

image-20240226200232201

image-20240226200537043

又看到岸见一郎的勇气系列书籍了:《老去的勇气》《幸福的勇气》《被拒绝的勇气》

时隔一年,又捡起来手头的《孙子兵法》读了读,翻了四五篇,讲得确实有道理。

高并发下,系统如何保证高性能、高可用和可扩展性?

单体服务升级到微服务架构,需要注意服务的拆分,按业务需求拆分,确定好服务边界,把握拆分粒度

周树人的《朝花夕拾》,好多篇目都学过,像《百草园和三味书屋》《父亲的病》《琐记》《藤野先生》

明天中午之前,务必彻底完善简历

2024/02/27

今明两天,彻底掌握两大项目核心业务流程和相关技术亮点

奶奶的,六级还是没过

1
熟悉 Logstash 、Canal 等数据库同步工具的配置和优化,能够准确、高效地处理日志数据,实现数据的过滤、转换和输出,具备丰富的数据同步实战经验。 
1
2
3
4
5
使用适配器模式封装数据查询接口,定义数据源接口、统一数据源接入标准,提高聚合搜索通用性,实现统一处理不同数据源的搜索请求。

使用门面模式在后端对各类数据源的搜索结果进行聚合,确保客户端通过单一的接口调用,便捷获取所需的信息,减少了前端开发复杂度。

使用注册器模式分析客户端传输的搜索类型字段,动态切换到指定类型的聚合搜索服务,实现精确搜索聚合,确保准确性和高效性。

Dubbo的服务间调用业务流程可以概括为:服务提供者(Provider)通过容器(Container)发布服务,消费者(Consumer)向注册中心订阅服务,然后通过协议(Protocol)与提供者进行通信交互数据。在这个过程中,Dubbo还提供了额外的流程,如集群容错、负载均衡和过滤器链等,以提高服务的可靠性和性能。

具体来说,Dubbo的远程调用过程包括以下几个关键步骤:

  1. 服务发布:服务提供者将自己的服务接口和方法实现打包,通过Dubbo的容器发布到注册中心。
  2. 服务订阅:服务消费者向注册中心订阅自己需要调用的服务接口。
  3. 代理调用:服务消费者通过本地代理调用远程服务,代理负责将调用请求发送给服务提供者。
  4. 网络传输:Dubbo使用特定的协议(如Dubbo协议、HTTP协议等)在网络上传输调用数据。
  5. 服务执行:服务提供者接收到调用请求后,执行相应的服务逻辑,并将结果返回给服务消费者。
  6. 结果返回:服务消费者接收到执行结果后,像调用本地方法一样得到返回值。

在整个过程中,Dubbo还提供了一系列的扩展点,如过滤器、拦截器等,允许开发者自定义处理逻辑,以满足特定的业务需求。这些机制确保了Dubbo在实现高效远程调用的同时,也具备高度的可定制性和扩展性。

1
了解 Elastic Stack 技术栈,掌握 Elasticsearch 的倒排索引和分词机制, 能够使用查询 DSL 语言编写复杂的搜索条件,满足多种业务需求。
1
拥有丰富的从零到一、从编码开发到项目落地部署的全流程经验,能够将所学知识融入实际项目中,并提供可靠的解决方案。

今日任务:

上午继续巩固学习计算机网络和 Redis

剩下的时间:

  • 继续完善简历”个人优势“一栏(博文输出,热爱新技术,有解决问题的能力)
  • 完善《探索我的博客世界 - 个人导读》一栏,添加新的生活感悟,凸显一技之长
  • 今天开始刷刷算法吧,好久不做题又生疏了,抓好力扣的热门题 100 道

截至今天下午,即二零二四年二月二十七日,下午四时四十五分,我的个人博客共有七十余篇博文,总计九百余张图片、五十余万文字

山西大学校徽新版图片素材-编号36380162-图行天下 (photophoto.cn)

晚上,开始着手过牛客 TOP 100 算法题

再次完善了简历,并同步完善 BOSS 简历,预备明天(最晚后天开始投简历),优先投递 BOSS 本地实习

明天着手巩固项目流程,在第一波投递之前,抓紧完善开发者文档和简历

在第一封简历投递出去之后,我的大学生涯就宣告结束了

明天开始,打点校园内的一些面试环境,目前想法是教学楼底下以及操场后的公园中的长椅旁,挺安静的,搬个马扎或者便携式座椅都可以,连便携式方桌都不需要的。

明天开始疯狂刷八股文,在第一波面试结束之后,开始针对性地优化项目,学习新技术,准备迎接持久战

又看到一段好文了:

因为人生原本灰暗,若抱怨,便是自熄炬火;

因为命运原本不公,若不读书,便是自甘平庸。

这个世界上,永远存在一条不成文的规则,叫:知识改变年薪,文化改变命运。

2024/02/28

安全教育课上快速记忆了 Java 基础、Spring 常考面试题,完善了实习僧平台个人信息

基本完成 MemoryAPI 忆汇廊 - 开发文档和 MemorySearch 忆搜阁 - 开发文档,中午务必部署成功

按计划,今天下午到今晚可以投递第一波简历

这个业务逻辑主要是通过Elasticsearch进行搜索,并对搜索结果中的关键词进行高亮显示。具体实现如下:

  1. 使用NativeSearchQueryBuilder构建一个NativeSearchQuery对象,设置查询条件、分页、排序等参数。
  2. 使用elasticsearchRestTemplate.search()方法执行搜索,返回SearchHits<PostEsDTO>对象。
  3. 遍历SearchHits中的每个SearchHit对象,获取高亮字段(如”title”、”author”、”content”)的高亮内容。
  4. 将高亮内容存储在highlightDataMap中,以便后续替换原始数据。
  5. 根据SearchHit中的ID列表,从数据库中查询对应的数据。
  6. 遍历查询到的数据,根据ID从highlightDataMap中获取对应的高亮内容,替换原始数据的相应字段。
  7. 将处理后的数据添加到resourceList中。
  8. resourceList设置为分页对象的记录,并返回分页对象。

今晚投递了第一波简历,日后看结果吧,继续

2024/02/29

上午学习计划:

MySQL、Redis 八股,并发编程、集合,熟悉项目,再投投简历试试水

不给自己画饼了,就今天早上,完结所有 MySQL 和 Redis 的知识,中午到下午完成集合、并发编程,晚上的话就可以看看项目了

手写 RPC 框架教程(简易版) (zsxq.com)

最新目标是投递日常实习,等暑期实习开始之后,逐步投递暑期实习

下午到晚上,再次熟悉项目流程,集合八股,并发编程八股

今天,是近段时间最难的一天

跟舍友不和解、沟通几十个、简历几份,到目前为止还没有回应

今晚就学习 RPC、网关和注册中心,更新一波简历,添加:掌握微服务,中间件

1
2
3
4
5
6
7
8
9
首先服务提供者 Provider 启动然后向注册中心注册自己所能提供的服务。
服务消费者 Consumer 启动向注册中心订阅自己所需的服务。然后注册中心将提供者元信息通知给 Consumer, 之后 Consumer 因为已经从注册中心获取提供者的地址,因此可以通过负载均衡选择一个 Provider 直接调用 。
之后服务提供方元数据变更的话注册中心会把变更推送给服务消费者。
服务提供者和消费者都会在内存中记录着调用的次数和时间,然后定时的发送统计数据到监控中心。

作者:京东云开发者
链接:https://juejin.cn/post/7283398020996415544
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
1
2
3
4
5
6
7
包括一些关键组件:

Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。与 Netflix 的 Hystrix 组件类似,但实现方式上更为轻量。
Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,同时具备了之前 Netflix Eureka 和 Spring Cloud Config 的功能,而且 UI 操作上更加人性化。
RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务,目前已交由 Apache 组织维护。
Dubbo:Apache Dubbo™ 是一款高性能 Java RPC 框架,自交由 Apache 组织孵化后,目前社区生态很活跃,产生形态越来越丰富。
Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案,由早期内部产品 Fescar 演变而来。
1
2
3
4
5
6
7
8
9
项目发展简介
我们还是先来看看 Dubbo 的发展历史:

2012 年由阿里开源,在很短时间内,被许多互联网公司所采用。
由于公司策略发生变更,2014 10 月项目停止维护,版本静止于 dubbo-2.4.11。处于非维护期间,当当网基于分支重新开源了 DubboX 框架。
2017 9 月,阿里宣布重启 Dubbo 项目,重新发布新版本 dubbo-2.5.4,并将其作为社区开源产品长期推进下去,此后版本迭代开始重新发力。
2018 2 月,阿里将 Dubbo 捐献给 Apache 基金会孵化。
2019 5 月,Apache Dubbo 正式升级为顶级项目。
Dubbo 定位于高性能、轻量级的开源 Java RPC 框架,随着社区的不断丰富,Dubbo 生态越来越繁荣。
1
区对 Java 的发展有着极大的影响力,而 Spring Cloud 则是基于 Spring、 Spring Boot 生态提供了一整套开箱即用的全家桶式的解决方案,极大的方便了开发者快速上手微服务开发,背后的商业公司更是为其提供了强大的支撑,同时不少核心项目组件能看到 Netflix OSS 的身影,如 Eureka 等,均在 Netflix 线上的分布式生产环境中已经得到很好的技术验证,无形中增强了信用背书。
1
近两年来 Spring Cloud Alibaba 的出现,这种二选一的局面得到了极大的改善。一方面,可以替代原项目中一些不再维护的项目功能。另一方面,可以将阿里技术生态与 Spring Cloud 生态融合起来。二者都可以采用 Nacos 作为服务注册中心,同时也完美替代 Spring Cloud Config 提供了更简洁直观的配置管理,降低了复杂度。另外,也为 Spring Cloud 生态中也引入了 RPC 解决方案——Dubbo,与 REST 方式形成互补

Spring 基础:

  • IOC:对 IOC 的理解,什么是 Bean ,Bean 的声明 / 定义方式(XML 配置文件,注解:@Bean、@Component),Bean 注入(@Autowired、@Resource),Bean 的作用域,Bean 的生命周期,Spring Boot 启动流程
    • Bean 的生命周期中,实践过:聚合搜索中,初始化关联搜索类型和数据源
  • AOP:对 AOP 的理解,AOP 的应用场景(处理公共行为,如日志记录、事务管理、权限控制、接口限流、接口幂等等),理解专用术语(切点、连接点、通知、切面),AOP 的实现方式(Spring AOP 和 AspectJ AOP 的比较),AOP 通知类型有哪些?如何控制多切面的执行顺序
    • 使用 Spring AOP,实践过:权限校验和全局请求拦截
  • Spring MVC:对 Spring MVC 的理解(MVC 是一种设计模式,Spring MVC 是一款很优秀的 MVC 框架),Spring MVC 的核心组件有哪些,其工作原理是怎样的,如何实现统一异常处理(@RestControllerAdvice,@ExceptionHandler)
  • Spring 框架中用到了哪些设计模式?(详见设计模式👇)
  • Spring 事务:Spring 管理事务的方式,Spring 事务的传播行为,Spring 事务的隔离级别
  • Spring 常用注解总结:启动类注解,Bean 相关,处理 HTTP 请求类型,前后端传值,读取配置信息,参数校验,全局异常处理,JPA 相关,事务,json 数据处理,测试相关

[14 Spring Cloud 与 Dubbo 冲突吗——强强联合 (lianglianglee.com)](https://learn.lianglianglee.com/专栏/SpringCloud微服务实战(完)/14 Spring Cloud 与 Dubbo 冲突吗——强强联合.md)

[00 开篇导读 (lianglianglee.com)](https://learn.lianglianglee.com/专栏/SpringCloud微服务实战(完)/00 开篇导读.md)

Spring Cloud 生态:

  • 分布式/版本化配置:Spring Cloud Config,(Spring Cloud Alibaba)Nacos
  • 路由:(Spring Cloud Netflix)Zuul,Spring Cloud Gateway
  • 服务注册和发现:Eureka,Spring Cloud Consul,(Spring Cloud Alibaba)Nacos,Spring Cloud Zookeeper
  • 服务调用和负载均衡:Spring Cloud OpenFeign,(Spring Cloud Netflix)Ribbon,(Spring Cloud Alibaba)Dubbo
  • 断路器/分布式限流/降级熔断:(Spring Cloud Netflix)Hystrix,(Spring Cloud Alibaba)Sentinel
  • 分布式事务:(Spring Cloud Alibaba)Seata,链路跟踪:Spring Cloud Sleuth,事件驱动:Spring Cloud Stream
  • 分布式消息传递:Spring Cloud Bus,(Spring Cloud Alibaba)RocketMQ

设计模式:

  • Spring 框架中用到了哪些设计模式?
    • 工厂模式:创建 Bean 对象
    • 代理模式:Spring AOP (动态代理)
    • 单例模式:Spring Bean 默认是单例的(singleton 作用域)
    • 模板方法模式:对数据库操作的类,jdbcTemplate、redisTemplate
    • 装饰器模式:动态切换不同的数据源
    • 观察者模式:Spring 事件驱动模型
    • 适配器模式:Spring AOP 增强、Spring MVC 适配

🍿 推荐阅读:聊聊Spring中最常用的11个扩展点 - 掘金 (juejin.cn)

Spring Boot 项目框架模板,本质上就是对 Spring 扩展点的实现。

[22 如何确定一次完整的请求过程——服务链路跟踪 (lianglianglee.com)](https://learn.lianglianglee.com/专栏/SpringCloud微服务实战(完)/22 如何确定一次完整的请求过程——服务链路跟踪.md)

2024/03/01

虽然不知道应该说什么,但还是得列一下计划清单

前天晚上星球内的一位小伙加我好友,叫唤着要我帮他搞 API 接口开放平台项目,人家都这样说了,还稍微打点了些,怎么有不帮的道理?今天远程连接一下,试着看能不能解决他的问题

前天做过的算法题,今天也该完结了

今天继续学习微服务架构,八股文记忆

1
2
3
4
5
6
7
8
9
RPC(Remote Procedure Call,远程过程调用)和SDKSoftware Development Kit,软件开发工具包)在软件开发中各自扮演着不同的角色,但它们可以在某些场景中协同工作。

RPC 是一种允许在一个应用程序中执行的代码调用另一个应用程序中的代码的技术。它使得不同应用程序或服务之间能够通过网络进行通信和交互,就像调用本地函数一样简单。在分布式系统中,RPC 被广泛用于服务间调用,因为它可以透明地处理网络通信、序列化/反序列化、错误处理等细节。

SDK 则是为了简化某个特定平台、框架或技术的使用而提供的一组工具和库。SDK 通常包括文档、代码示例、库文件、工具等,旨在帮助开发者更快速、更高效地开发应用程序。SDK 可以简化复杂任务的实现,比如网络通信、数据库访问、图形渲染等。

RPCSDK 的关联在于,SDK 可能包含了 RPC 客户端和/或服务端的实现。例如,当开发者使用某个云服务提供商的 SDK 时,这个 SDK 可能会提供一组 RPC 客户端接口,允许开发者轻松地调用云服务提供商提供的远程服务。这些 RPC 客户端接口背后可能使用了某种 RPC 协议(如 HTTP/RESTThriftgRPC 等)来实现与服务提供方的通信。

简单来说,RPC 是实现服务间调用的技术,而 SDK 提供了使用这种技术所需的工具和库。SDK 可能包含了 RPC 客户端和服务端的实现,使得开发者能够更方便地使用 RPC 进行服务间调用。

防人之心不可无啊,充电宝就放桌洞里,隔了一个早八就没了

桌子,椅子,超大容量充电宝都回来了,只可惜我的充电宝了。上大学以来就没用过,用了一次就没了,小心眼的人真多呵

写了一个小时的故事了,歇一会儿。

1
2
3
例如,我在写《Redis 如何持久化数据》这篇文章的时候,就已经知道了 RDB+AOF 两种方式,但在写的过程中,我发现自己并不清楚具体的细节,比如,为什么生成的 RDB 文件这么小,这是如何做到的?RDB 和 AOF 分别适合用在什么场景中呢?

翻阅源码之后,我才发现,RDB 文件之所以很小,一方面是因为它存储的是二进制数据,另一方面,Redis 针对不同的数据类型做了进一步的压缩处理(例如数字采用 int 编码存储),这就进一步节省了存储空间。所以,RDB 更适合做定时的快照备份和主从全量数据同步,而 AOF 是实时记录的每个变更操作,更适合用在对数据完整性和安全性要求更高的业务场景中。
1
2
3
4
5
6
7
8
9
今天我给你讲解了服务调用需要解决的几个问题,其中你需要掌握:

通信框架。它主要解决客户端和服务端如何建立连接、管理连接以及服务端如何处理请求的问题。

通信协议。它主要解决客户端和服务端采用哪种数据传输协议的问题。

序列化和反序列化。它主要解决客户端和服务端采用哪种数据编解码的问题。

这三个部分就组成了一个完整的RPC调用框架,通信框架提供了基础的通信能力,通信协议描述了通信契约,而序列化和反序列化则用于数据的编/解码。一个通信框架可以适配多种通信协议,也可以采用多种序列化和反序列化的格式,比如服务化框架Dubbo不仅支持Dubbo协议,还支持RMI协议、HTTP协议等,而且还支持多种序列化和反序列化格式,比如JSON、Hession 2.0以及Java序列化等。

Spring Cloud Gateway

实战 Spring Cloud Gateway 之限流篇 - 知乎 (zhihu.com)

今晚的学习任务:

Gateway 限流、Dubbo 远程调用,并发编程,微服务架构,Redis 总结,RabbitMQ 巩固

1
2
3
4
5
6
7
8
9
10
@Bean
public RouteLocator myRoutes(RouteLocatorBuilder builder) {
return builder.routes()
.route(p -> p
.path("/get")
.filters(filter -> filter.requestRateLimiter()
.rateLimiter(RedisRateLimiter.class, rl -> rl.setBurstCapacity(3).setReplenishRate(1)).and())
.uri("https://httpbin.org:80"))
.build();
}

2024/03/02

跑步半小时

连续三天,每天都在 BOSS 上打打招呼,想着找个本地实习机会,才投出了一份简历

早上把把京东的笔试题做了吧,再完结链表算法题

生活哪有那么难,无非就是选择 + 体验

头疼,午觉之后玩了俩小时还是撑不住了,又睡了半个多小时,可算清醒了

玩,好

下载了植物大战僵尸汉化版,跟小时候玩过的有点出入,翻译啥的,不过无伤大雅,一下午就打到后院了

2024/03/03

这么快就三号了,BOSS 求职回复寥寥无几,继续学习优化吧

这两天气温高,心情也浮躁起来了,啥都不想干,也没有什么输出,需要尽快调整过来才行

看了我的简历,写的技术倒挺厉害,赶紧针对性地学学

最近的学习任务:

Gateway 限流、Dubbo 远程调用,并发编程,微服务架构,Redis 总结,RabbitMQ 巩固

跑通了简易 RPC 框架,理解了整个 RPC 调用流程,但看会了不等于学会了,还得进一步学习

又刷了半个多小时视频,实在是集中不了注意力,先吃饭去吧,顺便给电脑充个电

晚上就不看视频了,多读两本书,背一背八股文,完善一下简历(微服务),准备明天开始投第四波简历

2024/03/04

这时间过的是真几把快,先学完 Java 并发编程吧

类的加载过程:首先要了解执行 Java 程序之后,由编译器将 Java 代码编译转换为字节码,再由 JVM 逐条解释执行字节码,类的加载就发生在 JVM 解释执行阶段。

当虚拟机要使用一个类时,它需要读取并解析 Class 文件获取相关信息,再将信息存入到方法区。方法区会存储已被虚拟机加载的 类信息、字段信息、方法信息、常量、静态变量、即时编译器编译后的代码缓存等数据

在加载阶段,通过类的全限定名获取指定类的字节流,将字节流代表的静态存储结构转换为方法区的动态运行时结构,同时在内存中生成 Class 对象,作为将来在方法区访问数据的入口。这里需要了解下 JVM 内存结构类加载器双亲委派模型等。

在连接阶段,首先进行 Class 文件格式检查、字节码语义检查、程序语义检查等工作,确保字节流中的信息符合规范。还要进行符号引用验证,确保该类所使用的其他类、方法、字段是否存在。完成类相关信息验证之后,开始为类变量分配内存并赋初值。最后,针对类、接口、类方法和接口方法,JVM 会将常量池内的符号引用替换为直接引用,也就是得到类或字段在内存中的指针或者偏移量,确保了在程序执行方法时,系统能够明确该方法所在位置。

在初始化阶段,作为类加载的最后一个阶段,JVM 开始真正执行指定类的 Java 程序代码,即字节码文件,对类进行初始化,创建类的对象实例。这个阶段我们了解到如果要初始化一个类,首先保证其父类完成初始化。整个初始化过程就是实例化对象并投入使用,过程也简单:在堆中分配内存空间 + 初始化对象 + 将该对象指向堆中分配的内存空间地址。

至此,一个类的加载就已经完成了,并且可以创建实例对象投入使用了。这里需要了解下 Java 对象的创建过程。

使用阶段不必多言,使用完毕之后进入卸载阶段。由于所有的对象实例都存放在堆中,当一个类的所有实例对象都已被 GC,在堆中已经不存在该类的实例对象了、该类没有在任何地方被引用,且该类的类加载器的示例也已被 GC 后,这个类就可以被卸载,即该类的 Class 对象被 GC。这里需要了解一下垃圾回收器垃圾回收算法等。

[03 线程是如何在 6 种状态之间转换的? (lianglianglee.com)](https://learn.lianglianglee.com/专栏/Java 并发编程 78 讲-完/03 线程是如何在 6 种状态之间转换的?.md)

有一定的微服务实战经验,掌握 Spring Cloud 微服务体系,掌握相关中间件 Elasticsearch 等

编程导航知识碎片 - 飞书云文档 (feishu.cn)

1
具有丰富的微服务实战经验,熟悉微服务治理原则,对 Spring Cloud 生态有深入了解,包括 Nacos 注册中心和配置中心、Ribbon 负载均衡、Feign 声明式服务调用等核心组件,能够熟练运用Spring Cloud OpenFeign 或 Dobbo 进行服务间的声明式调用,
1
2
3
4
微服务实战经验:具备丰富的微服务实战部署经验,能够针对复杂业务需求,设计和实施稳定、高效的微服务架构。
微服务治理原则:深入理解微服务治理原则,包括服务注册与发现、负载均衡、容错处理、服务调用等,确保服务的可靠性与可扩展性。
Spring Cloud 生态:对 Spring Cloud 生态系统有深入了解,熟练运用 Nacos 作为注册中心和配置中心,实现服务的自动注册与配置管理。
核心组件掌握:精通 Ribbon 负载均衡策略,确保服务调用的高效性与均衡分布;熟练运用 Feign 或 Dubbo 进行声明式服务调用,简化服务间通信,提高开发效率。

具备丰富的微服务实战经验,熟悉微服务治理原则,对 Spring Cloud 生态有深入了解,包括 Nacos 注册与配置中心、Ribbon 负载均衡、Dubbo 服务间调用以及 Spring Cloud Gateway 网关,能够针对复杂需求,设计安全可靠的微服务架构。

时隔四天,再次优化最新一版简历,新增具备丰富的微服务实战经验,熟悉微服务治理原则,对 Spring Cloud 生态有深入理解等内容。

谈谈我对微服务架构的理解

从单体应用迁移到微服务架构:

单体应用线上发布和部署效率低下、团队协作开发成本高、系统可用性差。

相较于单体应用,微服务实现了更细粒度的服务拆分、更高效的服务部署和独立维护、提供了更清晰的服务治理方案。

要实现从单体应用迁移到微服务架构,就要做好服务化拆分,设计服务间调用。明确微服务架构的基本组件:服务描述、注册中心、服务框架、服务监控、服务追踪、服务治理。

服务发布和引用

注册中心(服务注册和发现)

在微服务架构下,主要有三种角色:服务提供者(RPC Server)、服务消费者(RPC Client)和服务注册中心(Registry),三者的交互关系请看下面这张图,我来简单解释一下。

RPC Server提供服务,在启动时,根据服务发布文件server.xml中的配置的信息,向Registry注册自身服务,并向Registry定期发送心跳汇报存活状态。

RPC Client调用服务,在启动时,根据服务引用文件client.xml中配置的信息,向Registry订阅服务,把Registry返回的服务节点列表缓存在本地内存中,并与RPC Sever建立连接。

当RPC Server节点发生变更时,Registry会同步变更,RPC Client感知后会刷新本地内存中缓存的服务节点列表。

RPC Client从本地缓存的服务节点列表中,基于负载均衡算法选择一台RPC Sever发起调用。

RPC 调用

想要完成 RPC 调用,你需要解决四个问题:

  • 客户端和服务端如何建立网络连接?
  • 服务端如何处理请求?(选择合适的通信框架比如 Netty,解决客户端与服务端如何建立连接、管理连接以及服务端如何处理请求的问题)
  • 数据传输采用什么协议?(选择合适的通信协议比如 HTTP,解决客户端和服务端采用哪种数据传输协议的问题)
  • 数据该如何序列化和反序列化?(多种序列化格式比如 Java 原生序列化、JSON、XML、Thrift,解决客户端和服务端采用哪种数据编解码的问题)

Socket通信

Socket通信是基于TCP/IP协议的封装,建立一次Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket ;另一个运行于服务器端,称为ServerSocket 。就像下图所描述的,Socket通信的过程分为四个步骤:服务器监听、客户端请求、连接确认、数据传输。

  • 服务器监听:ServerSocket通过调用bind()函数绑定某个具体端口,然后调用listen()函数实时监控网络状态,等待客户端的连接请求。
  • 客户端请求:ClientSocket调用connect()函数向ServerSocket绑定的地址和端口发起连接请求。
  • 服务端连接确认:当ServerSocket监听到或者接收到ClientSocket的连接请求时,调用accept()函数响应ClientSocket的请求,同客户端建立连接。
  • 数据传输:当ClientSocket和ServerSocket建立连接后,ClientSocket调用send()函数,ServerSocket调用receive()函数,ServerSocket处理完请求后,调用send()函数,ClientSocket调用receive()函数,就可以得到得到返回结果。

服务监控

服务监控主要包括四个流程:数据采集、数据传输、数据处理和数据展示

监控对象有用户端监控、接口监控、资源监控、基础监控,监控指标有请求量、响应时间和错误率

服务追踪

在微服务架构下,由于进行了服务拆分,一次请求往往需要涉及多个服务,每个服务可能是由不同的团队开发,使用了不同的编程语言,还有可能部署在不同的机器上,分布在不同的数据中心。

如果有一个系统,可以跟踪记录一次用户请求都发起了哪些调用,经过哪些服务处理,并且记录每一次调用所涉及的服务的详细信息,这时候如果发生调用失败,你就可以通过这个日志快速定位是在哪个环节出了问题,这个系统就是今天我要讲解的服务追踪系统。

服务治理

在一次服务调用过程中,服务提供者、服务消费者、注册中心、网络都有可能出问题。我们要尽可能保证服务调用成功,这就是服务治理。

服务治理可以从很多方面考虑:

  • 从服务健康状态考虑。要做到服务节点管理,比如使用心跳检测机制,这种机制要求服务提供者定时的主动向注册中心汇报心跳
  • 从服务节点访问优先级考虑。一般情况下,服务提供者节点不是唯一的,多是以集群的方式存在。要选择合适的负载均衡策略,充分利用机器的性能。
  • 从调用的健康状态考虑。服务调用并不总是一定成功的,对于服务调用失败的情况,需要有手段自动恢复,来保证调用成功。

​ 在生活中,我能接触到的 AI 应用有很多,最稀松平常的就是智能手机的语音识别功能了。比如小米手机的“小爱同学”、荣耀手机的“YOYO”,这些应用都使用了先进的 AI 技术,特别是语音识别和自然语言处理技术。我们对这些语音识别助手发出命令,比如“打开元梦之星”“设置明天早上六点半的闹钟”“给我讲一个冷笑话”等等。通过语音识别和自然语言处理技术,这些 AI 应用能很好地完成我们交代的任务,为我们提供了更便捷的人机交互体验。
​ 那么这样的功能是怎么实现的呢?
​ 对于语音识别算法,使用特定的声学模型,将声音信号转换为数字表示,将声音信号转换为频谱特征,识别出不同的语音因素。另外,基于大量的语音数据,可以训练出语言模型,能够做到预测用户接下来可能说的词语或短语,用来提高语音识别的准确性。对于自然语言处理算法,将输入的文本分解为一系列的词汇单元,分析词汇之间的关系,构建出句子的语法结构,基于上下文和背景知识来理解用户意图和句子背后的真实含义。
​ 综合来讲,AI 应用的语音识别功能,是通过收集大量的语音和文本数据,利用深度学习等技术训练声学模型和语言模型等。当用户对着手机说话时,语音助手会实时捕捉声音信号,并通过 AI 算法将其转换为文本。然后基于自然语言处理技术,理解用户的意图,并给出相应的回应。

2024/03/05

类加载器

​ 类加载器是一个负责加载类的对象,用于实现类加载过程中的加载这一步。每个 Java 类都有一个引用指向加载它的 ClassLoader。类加载器的主要作用就是加载 Java 类的字节码( .class 文件)到 JVM 中(在内存中生成一个代表该类的 Class 对象)。 字节码可以是 Java 源程序(.java文件)经过 javac 编译得来,也可以是通过工具动态生成或者通过网络下载得来。

类加载规则

​ 首先要明确的一点是,JVM 启动的时候,并不会一次性加载所有的类,而是根据需要去动态加载。也就是说,大部分类在具体用到的时候才会去加载,这样对内存更加友好。

​ 对于已经加载的类会被放在 ClassLoader 中。在类加载的时候,系统会首先判断当前类是否被加载过。已经被加载的类会直接返回,否则才会尝试加载。也就是说,对于一个类加载器来说,相同二进制名称的类只会被加载一次。

类加载器分类

​ JVM 中内置了三个重要的 ClassLoaderBootstrapClassLoader(启动类加载器):最顶层的加载类,由 C++实现,通常表示为 null,并且没有父级,主要用来加载 JDK 内部的核心类库;ExtensionClassLoader(扩展类加载器);AppClassLoader(应用程序类加载器):面向我们用户的加载器,负责加载当前应用 classpath 下的所有 jar 包和类。除了这三种类加载器之外,用户还可以加入自定义的类加载器来进行拓展,以满足自己的特殊需求。

双亲委派模型

​ 每当一个类加载器接收到加载请求时,它会先将请求转发给父类加载器。在父类加载器没有找到所请求的类的情况下,该类加载器才会尝试去加载。

  • 在类加载的时候,系统会首先判断当前类是否被加载过。已经被加载的类会直接返回,否则才会尝试加载(每个父类加载器都会走一遍这个流程)。
  • 类加载器在进行类加载的时候,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成(调用父加载器 loadClass()方法来加载类)。这样的话,所有的请求最终都会传送到顶层的启动类加载器 BootstrapClassLoader 中。
  • 只有当父加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去加载(调用自己的 findClass() 方法来加载类)。
  • 如果子类加载器也无法加载这个类,那么它会抛出一个 ClassNotFoundException 异常

​ 双亲委派模型保证了 Java 程序的稳定运行,可以避免类的重复加载。原因是这样的:JVM 区分不同类的方式不仅仅根据类名,相同的类文件被不同的类加载器加载产生的是两个不同的类。JVM 不仅要看类的全名是否相同,还要看加载此类的类加载器是否一样。只有两者都相同的情况,才认为两个类是相同的。

打破双亲委派模型

​ 自定义加载器的话,需要继承 ClassLoader 。如果我们不想打破双亲委派模型,就重写 ClassLoader 类中的 findClass() 方法即可,无法被父类加载器加载的类最终会通过这个方法被加载。但是,如果想打破双亲委派模型则需要重写 loadClass() 方法。

​ 我们比较熟悉的 Tomcat 服务器为了能够优先加载 Web 应用目录下的类,然后再加载其他目录下的类,就自定义了类加载器 WebAppClassLoader 来打破双亲委托机制。这也是 Tomcat 下 Web 应用之间的类实现隔离的具体原理。

运行时数据区域

程序计数器:字节码解释器通过改变程序计数器来依次读取指令,从而实现代码的流程控制,如:顺序执行、选择、循环、异常处理。在多线程的情况下,程序计数器用于记录当前线程执行的位置,从而当线程被切换回来的时候能够知道该线程上次运行到哪儿了。

虚拟机栈:方法调用的数据需要通过栈进行传递,每一次方法调用都会有一个对应的栈帧被压入栈中,每一个方法调用结束后,都会有一个栈帧被弹出。栈由一个个栈帧组成,而每个栈帧中都拥有:局部变量表、操作数栈、动态链接、方法返回地址。和数据结构上的栈类似,两者都是先进后出的数据结构,只支持出栈和入栈两种操作。

  • 局部变量表 主要存放了编译期可知的各种数据类型和对象引用。
  • 操作数栈 用于存放方法执行过程中产生的中间计算结果和计算过程中产生的临时变量。
  • 动态链接 用于管理调用其他方法的符号引用,主要服务一个方法需要调用其他方法的场景。

栈帧随着方法调用而创建,随着方法结束而销毁。无论方法正常完成还是异常完成都算作方法结束。

堆:Java 虚拟机所管理的内存中最大的一块,Java 堆是所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例以及数组都在这里分配内存。

方法区:当虚拟机要使用一个类时,它需要读取并解析 Class 文件获取相关信息,再将信息存入到方法区。方法区会存储已被虚拟机加载的 类信息、字段信息、方法信息、常量、静态变量、即时编译器编译后的代码缓存等数据

运行时常量池:Class 文件中除了有类的版本、字段、方法、接口等描述信息外,还有用于存放编译期生成的各种字面量(Literal)和符号引用(Symbolic Reference)的 常量池表(Constant Pool Table)

字面量是源代码中的固定值的表示法,即通过字面我们就能知道其值的含义。字面量包括整数、浮点数和字符串字面量。常见的符号引用包括类符号引用、字段符号引用、方法符号引用、接口方法符号。常量池表会在类加载后存放到方法区的运行时常量池中。

以前在永久代即运行时数据区域,现在存放在元空间即本地内存。

字符串常量池:字符串常量池 是 JVM 为了提升性能和减少内存消耗针对字符串(String 类)专门开辟的一块区域,主要目的是为了避免字符串的重复创建。以前在永久代即运行时数据区域,现在存放在堆中。

主要是因为永久代(方法区实现)的 GC 回收效率太低,只有在整堆收集 (Full GC)的时候才会被执行 GC。Java 程序中通常会有大量的被创建的字符串等待回收,将字符串常量池放到堆中,能够更高效及时地回收字符串内存。

直接内存:直接内存的分配不会受到 Java 堆的限制,但是,既然是内存就会受到本机总内存大小以及处理器寻址空间的限制。这些内存直接受操作系统管理(而不是虚拟机),这样做的结果就是能够在一定程度上减少垃圾回收对应用程序造成的影响。

垃圾收集

当前虚拟机的垃圾收集都采用分代收集算法,这种算法没有什么新的思想,只是根据对象存活周期的不同将内存分为几块。一般将 Java 堆分为新生代和老年代,这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。

如果 TLAB 中没有足够的内存空间,就会在共享 Eden 区(shared Eden space)之中分配。如果共享 Eden 区也没有足够的空间,就会触发一次 年轻代 GC 来释放内存空间。如果 GC 之后 Eden 区依然没有足够的空闲内存区域,则对象就会被分配到老年代空间(Old Generation)。

各种垃圾收集器的实现细节虽然并不相同,但总体而言,垃圾收集器都专注于两件事情:

  • 查找所有存活对象
  • 抛弃其他的部分,即死对象,不再使用的对象。

第一步,记录(census)所有的存活对象,在垃圾收集中有一个叫做 标记(Marking) 的过程专门干这件事。

标记 阶段完成后,GC 进行下一步操作,删除不可达对象。

删除不可达对象(Removing Unused Objects)

各种 GC 算法在删除不可达对象时略有不同,但总体可分为三类:清除(sweeping)、整理(compacting)和复制(copying)。[下一小节] 将详细讲解这些算法。

上午又学了一遍 JVM,感觉清晰了很多。下午继续学习并发编程和微服务架构。

最近这段时间很少写代码了,也不奇怪,没有啥需求写什么代码。正在规划学习常用中间件比如消息队列,使用消息队列实战,了解消息队列原理。这就需要继续学习 BI 智能分析平台了,持续学习消息队列。

Redis 的使用场景:缓存、分布式锁、限流,对于基本数据结构和持久化机制还需要巩固一番。

哎,我真是个傻逼。投了 Java 实习岗位被要求转 Go,实习期间还没薪资,我竟然能接受?我自个儿学习不行吗还去当免费劳动力,真是个沙雕,直接给它拒了。

Maven 学习:

  • 基础:Maven 的下载安装、IDEA 创建 Maven 项目,了解 Maven 项目结构
  • 依赖管理:依赖坐标(GAV)、依赖范围管理、Maven 的工作原理、Maven 的生命周期
  • 依赖冲突:依赖的传递性、自动解决依赖冲突、排除依赖
  • 分模块开发:通过 mvn install 命令,将不同的 Maven 项目安装到本地仓库,其他工程就能通过 GAV 坐标引入该工程了。实现业务模块拆分,简化项目管理,提高代码复用性,方便团队协作
  • 聚合工程:一个项目允许创建多个子模块,多个子模块组成一个整体,可以统一进行项目的构建。公共的依赖、配置、插件等,都可以配置在父工程里。父工程可以定义可选依赖<dependencyManagement>,该标签里的依赖项,子工程可选择使用。子工程可以使用<optional>true</optional>开启隐藏依赖,该依赖不会传递给其他工程。Maven聚合工程可以对所有子工程进行统一构建,而不需要像传统的分模块项目一样,需要挨个打包、测试、发布。
  • Maven 属性:在 <properties> 标签下,自定义属性(依赖版本,项目环境属性,Java 环境变量等)。
  • 多环境配置:

多模块开发:

①简化项目管理,拆成多个模块/子系统后,每个模块可以独立编译、打包、发布等;

②提高代码复用性,不同模块间可以相互引用,可以建立公共模块,减少代码冗余度;

③方便团队协作,多人各司其职,负责不同的模块,Git管理时也能减少交叉冲突;

④构建管理度更高,更方便做持续集成,可以根据需要灵活配置整个项目的构建流程

巩固复习了 Maven,终于明白了 API 接口开放平台的运作原理。

Spring Boot 自动装配原理

华为二面:SpringBoot如何自定义Starter? - 掘金 (juejin.cn)

Spring Boot的自动配置机制为开发人员提供了一种轻松集成和配置各种功能的便捷方式。然而,随着项目的复杂性增加,更好地组织和分享通用功能变得至关重要。自定义Starter成为了理想的解决方案,旨在简化项目的依赖管理和自动配置,使开发者能够迅速而灵活地集成特定的功能模块。本文将深入探讨在Spring Boot中如何创建自定义Starter,为构建模块化且易维护的应用提供有力的支持。

自定义Spring Boot Starter的原理是在应用启动时,SpringBoot扫描含有spring.factories的jar包,加载其中的org.springframework.boot.autoconfigure.EnableAutoConfiguration条目。引入自定义starter后,相应的自动配置类会被检测并加载到Spring容器执行。通过条件注解等机制,可根据用户提供的配置信息或其他Bean的存在动态配置和初始化Bean,实现功能的自动化装配。自定义starter体现了SpringBoot模块化和可扩展性,简化了依赖管理和配置,使开发者能迅速构建具有特定功能的应用。

SpringBoot 定义了一套接口规范,这套规范规定:SpringBoot 在启动时会扫描外部引用 jar 包中的 META-INF/spring.factories 文件,将文件中配置的类型信息加载到 Spring 容器并执行类中定义的各种操作。

METE-INF写一个spring.factories 文件。

这个文件中定义了一个名为org.springframework.boot.autoconfigure.EnableAutoConfiguration的属性,它的值是一个类的完全限定名,即com.example.MyAutoConfiguration。这个类通常是一个Spring配置类,用于定义一些自动化配置。

Spring Boot在启动时会扫描classpath中的所有spring.factories文件,并读取其中定义的属性。然后,它会根据这些属性值加载对应的类,并将它们注册到Spring的ApplicationContext中。

明天开始,陆续投递中大厂了,招聘软件不是很实用。

2024/03/06

闲来无事,了解下租房经验吧:

程序员实习工作租房避坑攻略心经 (zsxq.com)

知识星球 | 深度连接铁杆粉丝,运营高品质社群,知识变现的工具 (zsxq.com)

知识星球 | 深度连接铁杆粉丝,运营高品质社群,知识变现的工具 (zsxq.com)

知识星球 | 深度连接铁杆粉丝,运营高品质社群,知识变现的工具 (zsxq.com)

租房注意事项 (zsxq.com)

image-20240306113902930

妈的,约了一个远程面试,人生第一次面试,有点惊喜又有点紧张,抓紧时间好好准备。今天争取要把所有的专业技能过一遍。

自我介绍:

您好!我是山西大学 2025 届软件工程专业的学生,目前的状态是大三在读。在校期间基本都在自学编程,主要学习 Java 相关技术栈。身边基本没有学习编程的,大多数时间里基本上都是自己做独立开发,前后端都自己学着写,有一定的项目开发经验,这些都可以在我简历中看到。专业课成绩还算不错,整体处于中上游水平,没有挂过科。

专业技能这方面的话,计算机理论基础像计算机网络、操作系统、计算机组成原理、数据库这些不用多说,熟练掌握 Java 后端开发相关的主流技术栈或者开发框架比如 Spring、Spring Boot。当然也学过 C、C++、Python,HTML + CSS + JS 前端三件套基础语法。校园经历方面的话很简单,加入过校园志愿者社团做过志愿活动。更希望能多利用时间提升自己,所以比较倾向于跟专业课的代课老师、学长学姐或者有志同道合的同学交流,聊聊学习经验、职业规划这些。

我最大的特点或者可以说优势是经常做深度思考,写反思,做记录,有明确的学习生活规划。我有自己的个人博客网站,记录的内容涉猎面很广泛:比如编程学习经验、BUG 调试过程、生活感悟、人生规划等等,我觉得是很有意义的。

长期的规划是计划在本科毕业后直接就业,找一份后端开发相关的工作,对此我也一直在做准备。现阶段的想法是,春招在即,正好大三了,这学期也基本没课,想着投投简历找份实习。短期也好,长期也罢,主要还是希望能够接触真实的项目开发,增长自己的工作经验。在下半年秋招那会儿,手头里多几段实习经历的话能提高自己的竞争力。最重要的还是尽早跳出大学校园的圈子,更早地步入社会。

MySQL:

MySQL 默认的 InnoDB 引擎中,索引数据结构是 B+树。索引按数据结构分类可以分为 B树、B+树、Hash 表等。

索引的运作原理?自平衡的多叉树,按照索引键实现快速检索数据。有主键就用主键作索引键,再者用非空且唯一字段,或者生成一个隐式自增id作为索引键。

聚簇索引和非聚簇索引,回表查询,覆盖索引。

MySQL 索引为什么用 B+树?B+树的数据结构特点,都是自平衡树多叉树

  • 它只有叶子节点存放数据,非叶子节点只存放索引键(能存放更多的索引键高度更加低,结构更加“矮胖”,磁盘IO次数会更少;单点查询,波动更小)
  • 叶子节点构成有序链表(范围查询,更快)
  • (插入和删除效率更高,有冗余节点,非叶子节点都是冗余节点,不会发生复杂的变化)

如何创建索引?

1
create index index_id on table(id)

主键索引,唯一索引,普通索引,联合索引什么是最左匹配原则?索引失效的原因有哪些?索引下推是什么?

什么时候需要创建索引?

  • 索引的优点:最大的好处就是提高查询速度。
  • 缺点:占用的物理空间大;数据量增大、数据的增删改,使得创建索引和维护索引更耗时

所以索引也要在合适的场景下使用。比如字段有唯一性限制的,编码;经常用于作查询条件的,多个字段还可以建立联合索引,提高查询速度;频繁用于排序的字段。表数据量很少、字段频繁更新、区分度不大(男女),就不需要创建索引了。

如何优化索引呢?

当然是使用执行计划分析语句了,explain

  • 使用覆盖索引,在指定字段上创建索引,尽量减少回表操作;
  • 防止索引失效,模糊匹配、联合索引不遵循最左匹配原则、在查询条件中对索引列做了计算、函数、类型转换等操作,都会发生索引失效,走全表扫描。

执行一条 SQL 语句,期间发生了什么?

一条简单的 select 查询语句,它的执行流程是这样的:

MySQL 架构分为两层:

  • Server 层:负责建立连接、分析执行 SQL 语句
  • 存储引擎层:负责数据的存储和提取(InnoDB 成为 MySQL 的默认存储引擎,支持并默认使用 B+树索引)

执行过程:

  • 连接器:经过 TCP 三次握手,启动 MySQL 服务,验证用户名和密码,获取用户操作权限。默认空闲连接时常为八小时,长短连接。

    1
    mysql -uroot -p
  • 查询缓存:键值对保存形式,键为 SQL 查询语句,值为 SQL 语句查询结果。很鸡肋,表频繁更新,查询缓存会被清理,MySQL 8.0 删除了查询缓存。

  • 解析 SQL:解析器,词法分析,检查字符串中的字段,找出关键字 select 这些;语法分许,更具语法规则,判断是否满足 MySQL 语法,不满足(关键词拼写错误)就出错,满足就构建语法树。

  • 执行 SQL:

    • 预处理:表不存在、字段不存在
    • 优化器:制定执行计划,将 SQL 语句的执行方案确定下来,比如作索引优化,使用覆盖索引避免回表查询等
    • 执行器:真正开始执行 SQL 语句,与存储引擎交互。使用聚簇索引也好,使用全表扫描也罢,整体思路就是:执行器的查询过程就是一个while 循环,会调用一个函数指针,可以理解为调用存储引擎去查询记录。根据制定的 SQL 语句执行计划,存储引擎通过 B+树结构或者全表扫描定位数据记录,将结果返回给执行器,并报告查询完毕。执行器收到存储引擎报告的查询完毕的信息,退出循环,停止查询。

这里可以了解到一个索引优化策略:索引下推。

索引下推是怎样的呢?当联合索引遇到范围查询时,会停止匹配。不用索引下推的话,执行过程是这样的:存储引擎根据指定的 SQL 查询计划,根据联合索引的第一条索引,定位到该记录获取主键值,回表查询整行记录值,并将结果返回给 Server 层。Server 层拿到记录,会再次根据第二条索引判断该记录是否满足,满足就返回记录,不满足就跳过该记录。

使用了索引下推之后,存储引擎在根据联合索引第一条索引定位到记录获取主键值之后,不会先回表查询,而是直接根据第二条索引判断记录是否满足,不满足就直接跳过,满足后再回表查询整行记录值,最后返回结果到 Server 层。

索引下推,就是在联合索引索引失效之后,直接在存储引擎层根据所有索引,过滤出满足的条件的记录主键值之后,才进行回表查询,节省了很多回表操作。

事务

事务有哪些特性?经典的转账问题。原子性(undo log)、持久性(redo log)、隔离性(MVCC,锁机制),才能保证事务的一致性

事务一定要保证隔离性,并发事务可能会带来的问题:脏读(一个事务读到了另一个事务未提交的数据)、不可重复读(两次读取到的数据不一样)、幻读(两次读取到的记录数量不一样)。

这就要提到 SQL 标准提出的四种隔离级别:读未提交、读提交、可重复读和串行化。读提交解决了脏读,一个事务提交了之后,它所做的变更才能被其他事务看到;可重复读解决了不可重复读,事务在执行过程中看到的数据,一直跟这个事务启动时看到的是一样的。MySQL 是通过 MVCC 实现这两种隔离级别的。针对幻读,MVCC 也能解决一部分幻读,比如普通的 select 查询语句是快照读,事务在执行过程中看到的数据,一直跟这个事务启动时看到的是一样的,避免了幻读。而针对当前读,事务读取到的数据总是最新的,使用记录锁 + 间隙锁解决了幻读问题。

那么 MVCC 是如何工作的?明确两点:Read View(快照版本)和聚簇索引记录中的两个与事务有关的隐藏列。

每个事务启动之后,会生成一个 Read View,有四个重要的字段:创建该快照的事务 id、当前数据库中活跃的事务id列表(已启动还未提交)、i最小的事务 id(启动最早的)、应该给到的下一个事务 id。

对于使用 InnoDB 存储引擎的数据库表,聚簇索引记录中的两个与事务有关的隐藏列:当某个事务对该记录进行改动之后,记录该事务id;隐藏的指针,指向旧的版本记录,形成版本链,通过版本链可以找到修改前的记录。

一个事务去访问记录的时候,除了自己的更新记录可见,会这样做:

  • 生成一个 Read View,先判断已经提交的事务:
  • 查看该记录的trx_id,即最近一次对该记录修改的事务id,比较 Read View 中的 min_trx_id,小,那就是比当前最小的活跃事务都小,说明该提交记录在创建该 Read View 之前就提交了,可见的。
  • 查看该记录的trx_id,即最近一次对该记录修改的事务id,比较 Read View 中的 max_trx_id,大于等于,那就是比应该给到的下一个事务都大,说明该提交记录在创建该 Read View 之后才提交,不可见的。
  • 如果 trx_id 在这两者之间,即该事务在创建 Read View 之后启动,需要判断该事务是否提交。根据快照的活跃事务列表,,仍然活跃,说明未提交,不可见;反之可见。

这就是通过版本链来控制并发事务访问同一个记录的行为,这就是 MVCC。可重复读跟读提交隔离级别的区别就是:前者在启动事务时生成一个 Read View,在整个事务期间都在用这个 Read View,而后者是在每次读取数据时,都会重新生成一个新的 Read View。

Undo log 作用:实现事务原子性、实现 MVCC,Redo log 实现 事务的持久化;Bin log 实现数据恢复和主从同步。

Spring Bean:

简单总结 Spring Bean 生命周期流程:

  1. 实例化:启动 Spring 应用,IOC 容器为所有已声明的 Bean 创建一个实例
  2. 属性赋值:实例化后,Spring 通过反射机制给 Bean 的属性赋值
  3. 调用 Bean 的初始化方法:调用 Bean 配置的 @PostConstructafterPropertiesSet方法或者init-method指定的方法
  4. Bean 运行期:Bean 已经准备好被程序使用了,它已经被初始化并赋值完成
  5. Bean 销毁:当容器关闭时,调用Bean的销毁方法

这两天在好好准备面试、笔试了,这周周末再好好写一写故事吧,实在抽不出时间和精力了。

今天晚上回去吃个泡面,下午还没吃饭呢。

2024/03/07

这两天有点忙,算不上多忙,就是感觉有点力不从心了。

上午计划投递腾讯实习岗位,发现作品集还挺重要的,再一个就是腾讯对计算机网络是情有独钟,考得蛮复杂的。

image-20240307093734061

写一篇新博文吧,专门记录我的求职经历,一切都会水到渠成。

Spring Boot 在启动的时候会干这几件事情:

  1. Spring Boot 在启动时会去依赖的 Starter 包中寻找 resources/META-INF/spring.factories 文件,然后根据文件中配置的 Jar 包去扫描项目所依赖的 Jar 包。
  2. 根据 spring.factories 配置加载 AutoConfigure 类。。
  3. 根据 @Conditional 注解的条件,进行自动配置并将 Bean 注入 Spring Context

总结一下,其实就是 Spring Boot 在启动的时候,按照约定去读取 Spring Boot Starter 的配置信息,再根据配置信息对资源进行初始化,并注入到 Spring 容器中。这样 Spring Boot 启动完毕后,就已经准备好了一切资源,使用过程中直接注入对应 Bean 资源即可。

中午有京东内推找我,大概是因为简历写得不错,还推荐了一位简历优化大佬

准备yi少平老师交流下了

今天下午要完成两个笔试

TCP 连接三次握手:

TCP 是面向连接的协议,使用 TCP 前必须建立连接。

  • 一开始,客户端和服务端都处于 CLOSE 状态。
  • 服务端主动监听某端口,进入 LISTEN 状态。
  • 客户端随机初始化序号(c1),即TCP 报文首部的序号字段,同时把同步标志位置为1

上午完成 计算机网络基础,跟老师交流了,最终迈出这一步了。

下午就是继续完善简历内容,根据京东的就业指导,完善下专业技能那一栏,再熟悉一遍项目技能那一块,准备明天的面试。

携程集团,人才招聘笔试题,作答完毕

下午四点半,跟本地的一个小企业约面,下周一中午两点。(感觉态度不是很好,没点激情哈哈)

晚上根据京东大佬建议,优化完善下简历。今天要把简历内容都过一遍。

今晚想得多了,但也记忆了不少内容,祝明天好运!

2024/03/08

唔,三八妇女节,今天有面试。

今天上午过一遍项目面试题呵,再抓紧时间过一过 Java 基础八股。没有面试过,也不知道具体会问什么,掌握不了面试节奏。

基本过完项目面试题了,剩下的内容有 Redis、MySQL 巩固,集合、并发,网络安全、微服务架构。

想找时间看几部电影了。

中午回来,充好电,睡一觉。本来想着看会儿视频的,妈的宿舍还没网了,手机充电用不了热点,这特么跟坐牢一样。

下午四点半,第一次面试结束啦,问得很简单。第一次面,没啥经验,感觉回答得还不够利索。be6132f9c4dab954b1caa2993272a25

c811e984d11dd174caa49d19bf10809

快速回忆一下:

下午四点,腾讯会议远程面试,半个多小时。校园里找了个小角落坐下来面试的,第一次面试。无压力,面试官人很好,问的也比较简单:

自我介绍一下吧

说一下接口跟抽象类的区别

说一下 continue、break、return 的区别,如果要结束嵌套循环,但是不结束方法,应该用哪个

Redis 有哪些数据类型,简单说一下

说一下 StringBuilder 和 StringBuffer 吧

为什么子类构造方法中,必须要调用父类的构造方法?

说说数组和链表的区别

了解过 Java 中的堆和栈吗?简单说一下

说一下 Spring 常用的注解

有了解哪些设计模式?说一下

了解过 Spring 的拦截器吗

了解过哪些权限校验的开发框架?

了解过 Java 中的锁吗?说一下你用过的锁机制

Double 类型做数据转换怎么做到没有精度丢失?

你知道在如何 Java 代码中导出一份 Excel、pdf、Word 等文件吗,有做过吗

了解过 ……2.0 协议嘛(没听明白,不了解)

Spring 如何处理嵌套 Bean 的注入,简单说一下,就是注入 A,但是 A 中有 B,Spring 怎么处理这种 Bean 注入的

用过线程池吗,说一下线程池有哪些核心参数吧

这边你的预期薪资是多少,简单提一下;

反问:第一次面试,表现怎么样;实习生在公司的工作模式是怎样的;这次面试多久能有结果;

后续可能会有二面

感觉面试官不是很专业,差不多是照着单子一条条挨个往下问,回答完问题他就继续问别的了,也不会纠正或者深入往下问。他也没有开摄像头,不过听声音很老实,哈哈哈。毕竟是小公司,问的比较简单。我问他表现怎么样,语速、专业水平这方面,他说挺不错的,基本没啥问题。面试官也主动问我是大三的吧,入职的话最短时间是多会儿,他说是越快越好,我回答正在跟导员和专业课老师沟通,流程会很快的,最快一周内,最晚也是两周内。实习时间也不定长,有人带着熟悉业务,再慢慢上手,会看工作表现和产出。

投递了一周多,实习僧、BOSS、牛客网都在投。大厂没敢多投,抓紧时间好好优化一下简历再考虑。下周还有一个本地线下面试机会,继续努力。

进程调度:

  • 先来先服务:先来后到

  • 最短作业优先:长作业可能没有执行机会

  • 高响应比优先:等待时间 + 执行时间 / 执行时间,等待时间越长,长作业就越有机会被执行

  • 时间片轮转:为每个进程分配时间片,用完或者提前结束,其他进程就可以抢占 CPU,不好把控时间片大小

  • 最高优先级:为进程设置优先级,静态优先级、动态优先级,优先级低的可能没有执行机会

  • 多级反馈队列调度:多个阻塞队列,按照不同的优先级排列,优先级越低的队列,可执行时间越长。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
熟悉 Java 编程语言,熟练掌握基础语法、常用数据结构和集合类,对异常处理、反射、IO、泛型等语言特性有深入的理解和实践经验。

熟悉 SSM + Spring Boot + Vue / React 开发模式,深刻理解 Bean 的生命周期、IOC 和 AOP 等核心技术,能够高效解决项目实际问题。

掌握 MySQL 的使用,对其锁机制、索引、事务、隔离级别有一定的理解,能够熟练编写常用的 SQL 语句以及简单的 SQL 优化。

掌握 Redis 基本数据结构和持久化机制,实践过 Redis 的分布式缓存、基于 Redisson 的分布式锁和分布式限流,极大提高系统性能。

熟悉并实践过多种设计模式,如门面模式、适配器模式和注册器模式,能够根据实际需求灵活运用设计模式,提升代码可维护性。

有并发编程相关经验,能够使用 CompletableFuture 等 JUC 类和自定义线程池实现并发和操作异步化,显著提高系统性能和响应速度。

熟悉 JVM 内存模型,掌握 JVM 垃圾回收机制、Java 类生命周期和类加载机制,对 Java 类加载器特别是双亲委派模型有深入理解。

具备丰富的微服务实战经验,熟悉微服务治理原则,对 Spring Cloud 生态有深入了解,包括 Nacos 注册与配置中心、Ribbon 负载均衡、Dubbo 服务间调用以及 Spring Cloud Gateway 网关,能够针对复杂需求,设计安全可靠的微服务架构。

熟悉基本的 Linux 命令,如文件与目录管理、权限管理和 Vim 文本编辑等,具备在 Linux 环境下进行日常操作和解决问题的能力。

具备扎实的计算机基础知识和深厚的计算机理论基础,对计算机组成原理、操作系统、计算机网络及数据结构与算法等有深入理解和实际应用能力。

熟悉 Git、IDEA、Webstorm、VS Code、ChatGPT、Swagger、SQLyog、Jmeter、Typora 和 VMware 虚拟机等工具,能够提高工作效率和团队协作能力,熟练掌握 C++、Python、JavaScript 等语言的基础语法,能编写功能完善的程序,具备跨语言能力。

继续优化简历!

在这个信息爆炸的年代

其实我们都应该多给自己一些时间

慢慢地向内求

把你自己的内心安顿好、把每天的心情照顾好

一切你想要的

其实都在路上,它们总会到的

2024/03/09

上午了解大厂面试题,还是那句话:面向面经复习,是最有效的。

是时候尝试备考计算机四级网络工程师了,还有半个月,妈的还有半个月就考了。

简历优化,项目经历。

平板还是不能正常连接到蓝牙耳机呵,应该考虑在买一个荣耀蓝牙耳机吗,下午把转接器和有线耳机带上。

写了会儿大学故事,感觉蛮不错的。

在安居乐租房软件上了解了下租房注意事项,还是上 B 站看看比较稳妥,学一学。

刚更新的简历,尝试着投递一些大厂,今晚就狠命巩固复习八股文。

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
完全根据视频顺序来

关于途径:

1.不推荐58,安居客。中介要给半个月房租

2.不想给中介费,闲鱼,豆瓣,微信,唯心所寓(wellcee),

3.靠谱的中介平台,自如,链家,优居;跟中介说要什么地段,有没有厨房,要几室几厅,多少预算(往低了压),可以找两个中介一起看

看房看什么问什么:

1.马桶水冲力足不足,如果是公寓房,问马桶是粗管还是细管,细管可能不行

2.水电费怎么交,自己单独交还是给到房租房东一起交,水表电表在哪里看,要物业的联系方式

3.要问有没有网,能不能拉网,能拉哪些公司的网

4.房子要不要物业费,物业费多少,除了物业费还有没有别的费用,物业费怎么交,物业的联系方式

5.房租月付还是季付,押几付几

6.如果确定要租,中介和房东会给一个合同上的附单,写清楚有多少家具,沙发电视啥的,如果有损坏要赔偿;要商量好,没退房之前损坏了,谁修谁赔谁付钱

7.只有写进合同和录音才有用,所有口头约定都没用;中介和房东为了租出去什么都愿意答应你,但只有写进合同才有用,才给钱

8.能不能换锁,能不能贴墙纸,能不能打洞;你没提前跟房东讲好,也没写进合同到时候就让你赔钱

9.所有问题问了,写进合同之后,问退房有什么手续,退了之后押金能不能当天打到帐上,在合同写明多少天打到账上,以及退房的时候需不需要扣什么清洁费,电器损耗费,电费水费哪里可以查,有没有单据

10.签合同的时候一定是三方,你,中介,房东,如果没有写上面的内容,就重打或者手写签字

11.如果签合同的时候,只有你跟中介两方,租房子给你的是二房东,可能就是中介机构,从一房东的房子租回来,加价租给你;二房东麻烦的是,你东西坏了,他不给你修,合同要写明白,退房押金要慢一个星期给你之类的。有清洁费,完全可以美团约个钟点工阿姨上门清洁,也就一百块,但如果不管,房东中介去收可能三四百



上面的问题回顾之后,签合同流程:

1.要签了,准备好身份证复印件,写上八个大字,仅供本次租房使用

2.一定要让一房东或者二房东出示,房子的房产证(最重要),复印也好,拍照留底也好,一定要留底

3.还需要让房东出示的身份证复印件,复印也好,拍照留底也好,一定要留底

4.看清楚怎么付款

5.没住进去前的电表水表抄上去

6.确认一下合同的期限是多少

7.具体坐落的位置

8.水电是民用还是商用,商用水电特别贵

9.家具坏了谁修,房东修要写上去(马桶堵了,灯泡坏了,热水器不出热水,都是谁出,要商量好)

10.最后看违约谁赔怎么赔,

签合同之后:

1.第一步,到要租的房子里,全景布局全部拍下来留底,尤其是把破损的,灯泡不亮,墙面脱皮,家具磕了一个角,玻璃碎了,全部记录下来,以图片或视频的方式发给房东,修好了再住进去

2.多一个心眼,可以买一个红外探测仪,看看有没有摄像头,尤其是公寓房插座和卫生间下面

怎么挑房子:

1.内部大体是三点:隔音,通风,光照

2.隔音是最重要的,不建议租loft或者公寓房,性价比低,商用水电费贵,隔音都很差,可以听见隔壁看电视,还有附近有没有工地,会不会在哪个时间点吵得睡不着

3.光照,是不是坐北朝南,朝西南东南也行,总要有一个时间段能有阳光招进来

4.通风,开窗那个风能不能通到门口

5.潮湿,衣服可能晾不干,没有阳台晾衣服,能不能配个烘干机,不行的话能不能免三四百块,或者免物业费,谈一谈

6.外部也是三点:噪音,安保,方不方便

7.放不方便看,有没有菜市场,收快递,快递驿站(非常重要),有没有超市,有没有银行,有没有地铁站公交站

8.噪音看楼下有什么商户,是不是商用楼,搜一下按摩美甲店啥的会不会特别炒,小区附近有没有小学,有的话小学特别吵

9.安保就看楼下有没有门禁,有没有保安,很多公寓房会好一些,外卖都上不去;城中村就比较差

10.具体去看设施:

空调看看能不能开关,制冷;

每个灯都开一下看看亮度;

插座数量,位置,每个插座都看一下有没有电,可能老化用不了;

水压大小,想想洗澡;

wc卫生;

洗手池漏水正不正常,水槽够不够深,太浅水壶都塞不进去;

有厨房看抽油烟机能不能用,冰箱制冷正不正常;

卧室,就看床架结不结实,床上有没有洗么席梦思,塑料膜是不是包住的,能不能拆,不能拆随便拆了要赔;

沙发底下木头啊,电视柜有没有发霉,发霉反映去修;

开发票找房东,谁收款谁就开发票,但是房东报价就不是含税的,如果你要开发票肯定让你承担,可以问12366,押金拖着不退12315投诉

最后强调,钱没给出去之前才是大爷,全部确认好才给钱,给钱一瞬间就被动了,一定要确认好

个人经验,还是要根据自己需要。短租一两个月太难找了

性能反应了系统的使用体验,想象一下,同样承担每秒一万次请求的两个系统,一个响应时间是毫秒级,一个响应时间在秒级别,它们带给用户的体验肯定是不同的。

可用性则表示系统可以正常服务用户的时间。我们再类比一下,还是两个承担每秒一万次的系统,一个可以做到全年不停机、无故障,一个隔三差五宕机维护,如果你是用户,你会选择使用哪一个系统呢?答案不言而喻。

另一个耳熟能详的名词叫“可扩展性”,它同样是高并发系统设计需要考虑的因素。为什么呢?我来举一个具体的例子。

Redis 持久化、Java 并发容器、介绍项目难点、TCP 三次握手 / 四次挥手扩展问题、数据加密、JWT 原理、Session / Cookie、性能优化方案、设计模式

  1. 性能优化介绍
    • 谈论在项目中如何进行性能优化,包括代码层面的优化(如算法改进、数据结构选择等)、系统层面的优化(如缓存策略、并发控制等)以及数据库层面的优化(如索引设计、查询优化等)。

2024/03/10

上午跑步,总算发现为什么有时候跑步额外累人了,鞋子没穿对,应该穿运动鞋的。

眨眼间,三月份已经过去三分之一了。

晚上没时间写总结,只好是早上写点东西。

这两天还在抓紧时间背八股文,新技术还没学多少,打算今天看看手写 RPC 框架。

上午的话,我还是想着投递一波大厂的暑期实习岗位,在看一波面试题。

计算机四级也得开始准备了。

计算机四级 【计算机网络】| 选择题 2 重点标准版_以下网络拓扑结构描述错误的是-CSDN博客

计算机四级 【计算机网络】| 选择题 1 重点标准版_网络的传输速率为5 mbps,要传输2.5 gb的数据大约需要多长时间?-CSDN博客

[计算机四级 操作系统] | 选择题 1 重点标注版_(单选题)处理器的状态由系统态到用户态的转换 是通过下列哪一种方式实现的?-CSDN博客

当然可以,性能优化是一个涉及多个层面的复杂过程,下面我将详细解释代码层面、系统层面以及数据库层面的性能优化方法和技巧。

代码层面的优化:

  1. 算法改进

    • 选择更高效的算法来替代低效的算法。例如,使用快速排序替代冒泡排序,使用哈希表替代线性搜索等。
    • 尽量减少时间复杂度较高的操作,如嵌套循环和递归调用。
  2. 数据结构选择

    • 根据数据的特点和使用场景,选择合适的数据结构。例如,如果需要频繁地插入和删除元素,可以使用链表或哈希表;如果需要保持元素的顺序,可以使用数组或平衡二叉树。
    • 避免不必要的数据结构转换和复制操作,以减少内存消耗和CPU时间。
  3. 代码精简与复用

    • 移除冗余代码和重复逻辑,提高代码的可读性和可维护性。
  • 使用函数和模块来封装重复使用的代码,减少代码的重复编写和调试工作。

系统层面的优化:

  1. 缓存策略

    • 利用缓存技术来存储和复用频繁访问的数据,减少对数据库或远程服务的访问次数。
    • 选择合适的缓存策略,如LRU(最近最少使用)算法,来管理缓存空间,确保缓存中的数据是最有价值的。
  2. 并发控制

    • 利用多线程或多进程技术,实现任务的并行处理,提高系统的吞吐量和响应速度。
    • 使用合适的并发控制机制,如锁、信号量或条件变量,来避免并发访问导致的数据冲突和死锁问题。
  3. 网络优化

    • 优化网络传输协议和参数设置,减少网络延迟和丢包率。
  • 使用压缩算法对传输的数据进行压缩,减少网络带宽的占用。

数据库层面的优化:

  1. 索引设计

    • 根据查询需求和表结构,设计合适的索引。选择具有高选择性的列作为索引键,以提高查询效率。
    • 定期分析和优化索引的使用情况,避免索引失效或冗余索引导致的性能问题。
  2. 查询优化

    • 优化SQL查询语句,减少不必要的JOIN操作、子查询和聚合函数的使用。
    • 使用数据库提供的查询执行计划工具,分析查询的执行过程,找出性能瓶颈并进行优化。
  3. 分区与分片

    • 对于大型数据库表,可以使用分区技术将数据分成多个部分,提高查询和管理效率。
    • 在分布式数据库系统中,可以使用分片技术将数据分散到多个节点上,实现负载均衡和水平扩展。
  4. 数据库配置与参数调优

    • 根据硬件环境和业务特点,调整数据库的配置参数,如缓冲区大小、连接池大小等,以获得最佳的性能表现。
  • 监控数据库的性能指标,如响应时间、吞吐量、CPU利用率等,及时发现和解决性能问题。

需要注意的是,性能优化是一个持续的过程,需要不断地对系统进行监控和分析,并根据实际情况进行调整和优化。同时,在优化过程中要权衡利弊,避免过度优化导致系统复杂性和维护成本的增加。

SpringBoot的自动装配原理主要基于Spring框架的依赖注入和条件化Bean机制,并结合SpringBoot的特定功能和设计原则实现的。

首先,SpringBoot通过引入一系列starter依赖,使得开发者能够便捷地集成各种第三方库和框架。每个starter都包含了一系列预定义的配置和Bean定义,用于简化特定功能的集成过程。

在SpringBoot应用启动时,@SpringBootApplication注解起到了关键作用。这个注解实际上是一个复合注解,其中@EnableAutoConfiguration是实现自动装配的核心。它告诉SpringBoot开启自动配置功能。

SpringBoot的自动配置功能通过加载META-INF/spring.factories文件来发现并加载各种自动配置类。这些自动配置类使用条件注解(如@ConditionalOnClass@ConditionalOnProperty等)来确定是否应该创建和配置特定的Bean。条件注解允许根据类路径、属性设置、Bean是否存在等条件来启用或禁用自动配置。

当SpringBoot启动时,它会扫描这些自动配置类,并根据条件注解的判断来决定是否创建和注册相应的Bean到Spring容器中。如果某个自动配置类满足其条件注解指定的条件,那么它定义的Bean就会被创建并注入到Spring容器中,从而完成自动装配过程。

除了自动配置类,SpringBoot还利用了一些核心组件来实现自动装配,如AutoConfigurationImportSelectorSpringFactoriesLoaderAutoConfigurationImportSelector负责从spring.factories中加载自动配置类,并根据条件进行筛选。SpringFactoriesLoader则用于加载META-INF/spring.factories文件中定义的配置。

通过这种方式,SpringBoot能够自动配置应用的很多方面,如数据库连接、消息队列、Web服务等,从而大大简化了开发者的配置工作,提高了开发效率。

需要注意的是,虽然自动装配能够极大地简化配置工作,但在某些情况下,开发者仍然需要手动配置一些Bean或覆盖自动配置的默认设置,以满足特定的业务需求。因此,理解SpringBoot的自动装配原理并熟悉其配置方式,对于开发者来说是非常重要的。

简单看了几个面经,下午继续

《下水道的美人鱼》,日本人拍电影,是真特么的变态。

又投出一份简历去了,期待。

Redis 持久化、Java 并发容器、介绍项目难点、TCP 三次握手 / 四次挥手扩展问题、数据加密、JWT 原理、Session / Cookie、性能优化方案、设计模式,Mybatis 工作流程,Spring 自动配置原理

下午有活干了,把这个假期的图片视频全保存起来

今天地日记任务,回忆上大学以后的每个假期生活

SpringCloud之Nacos入门与实战系列_nacos注册中心 反向探测-CSDN博客

API 项目介绍:分为四个模块:api-core,实现用户管理、接口管理、接口调用等;api-gateway,做统一的访问控制、流量染色、用户鉴权,完成统一登录校验、API 签名校验、接口调用统计呵请求响应前后的日志处理;api-client,自主设计对外提供接口服务;api-common,抽象公共接口 / 方法、公共实体类。

使用 Maven聚合工程管理子模块,都需要在本地 install。接口调用的逻辑:请求 api-core 的接口调用服务:首先校验参数,判断接口是否存在。获取当前登录用户,拿到 ak 和 sk,以此作为参数构建 SDK 客户端。SDK 客户端通过封装请求参数(包含用户信息、调用接口信息),使用 Hutool 工具包,发送请求到网关。

网关实现全局过滤,获取请求头的一切信息:请求参数、请求路径、请求来源地址等。做 API 签名校验,鉴定用户身份;根据请求路路径和方法判断接口状态,是否存在,是否发布或下线;设置 ip 黑白名单,只允许当前服务器的请求可以通过;流量染色,给请求添加统一的请求头。完成一系列校验之后,将该合法请求转发给真正的接口服务,处理接口调用,返回响应。最后在 haddleReponse 响应处理器中,完成接口调用统计等业务逻辑,更新相关字段,比如用户剩余调用次数、接口调用总次数等。返回响应,结束整个调用流程。

不希望引入复杂的业务逻辑,为减小网关模块体量,遵循单一原则,抽象公共业务逻辑和公共实体类到 api-common 模块。引入 Dubbo 轻量的 RPC 框架,用 EnabbleDubbo、@DubboReference、@DubboServie 等,使用 Nacos 做注册中心,实现服务注册。网关服务作为消费者实现服务拉取。实现服务间方法调用。

这两天真是惬意,呆在教室不仅网络环境好,还能随时充电:

cbacac5b2dbc25af1266c65b09d6b37

[24 固若金汤的根本(上):对称加密与非对称加密 (lianglianglee.com)](https://learn.lianglianglee.com/专栏/透视HTTP协议/24 固若金汤的根本(上):对称加密与非对称加密.md)

API 开放平台(热门) - 飞书云文档 (feishu.cn)

聚合搜索平台(中台设计) - 飞书云文档 (feishu.cn)

聚合搜索项目面试题 (yuque.com)

手写 RPC 框架(24 年最新) - 飞书云文档 (feishu.cn)

晚上还是很有精力的,不错不错。明天记得要投递大厂简历啊!

Wiki (feishu.cn)

2024/03/11

上午选体育课

投递简历,BOSS 询问进展状况;询问学长进展状况;投递各大官网;做测评

休息一会儿,开始看面经。

才三月份中旬不到,现在要每天看大量面经,培养面试感觉。

下午再做快手测评吧。

腾讯测评补评?奶奶的还不合格是吧。

洛阳寰宇网阔科技公司,人事刘先生,态度蛮不错的。事事有回音,不招在校生,还祝我前程似锦。

快速看了几个面经,感觉蛮不错的。

跟导员沟通离校实习,她说不行。。果然导员没啥用。。

投递百度实习生岗位。

好,下午看了看面经,反正没人理我,我着什么急,有的是机会!

今日任务,继续巩固八股:对象创建的流程,类加载机制,项目拷打,Redis 分布式限流/锁/session + 其他八股。需要继续学习 ES\Rabbit MQ 中间件,写在简历上;其他微服务组件也要尽量了解。尝试使用 Docker 独立部署项目。学习 手写 RPC 框架。

尝试去巩固算法,想到这里就想到蓝桥杯了。

img

image-20240311160835146

很有必要再继续更新简历!

7k字的面经+简历 (zsxq.com)

写故事,该死的万柏林区。

唔,九点了,看了一部恐怖片《雪山迷踪》,零六年的电影。老套剧情:讲述了五个热爱冒险的年轻人在雪山中的小屋内惨遭虐杀的故事

很好,今天晚上找回状态了。既然没有面试,我他妈就把自己打造成面霸。

2024/03/12

您好!我的个人博客网站:https://deng-2022.gitee.io/blog/。有在考虑招实习生吗?我对这个岗位非常感兴趣。
我是山西大学25届软件工程专业学生,熟练掌握 SSM + SpringBoot + Vue / React 开发模式,熟悉常用的开发工具,有丰富的 Java 开发实践经验。了解常用数据库和中间件,熟悉微服务治理方案,有一定的微服务开发经验。
我的 Gitee 个人主页:https://gitee.com/deng-2022
目前有在本地找实习的打算,方向是 Java 后端,需要看看我的简历吗?

大早上的,又更新了一次招呼语。

跑步,半小时。

image-20240312220722689

昨天听到一句很有意思的话:跑步的多巴胺仅次于谈恋爱 三公里专治各种不爽 五公里专治各种内伤 十公里跑完内心全是坦荡和善良

今日任务盘点:巩固学习计算机网络,备战网络工程师;了解学习 Docker 部署;完结 Redis 所有内容;学习了解 ES、Rabbit MQ 中间件;多看几篇面经。

中午吃完饭,回来还是头昏脑胀,只好是趴桌子上睡了一小会儿,一下就到两点半了。

今天务必搞定 ArrayList 的全部内容。

面经重点:线程池,ThreadLocal,Redis

实话讲,想到每天要学的东西很多,还真有点没动力,呵呵呵。

面经是永远背不完的!自备战日常实习以来,直到今晚我才能彻底理解这句话。

特么的面试都没有,还隔这天天全力准备面经呢!离秋招还早,抓紧时间提升技术才是王道。

现在效率高了不少,除了细节的知识需要我总结,面经我也看了不少了,直接根据 AI 回答就能学到很多东西。

从明天开始,抽出一部分时间开始学习新技术:Docker 部署项目、消息队列、ES等。

RabbitMQ消息队列-CSDN博客

2024/03/13

一个月速速吃透蓝桥杯!!!_哔哩哔哩_bilibili

蓝桥杯真题 - 编程题库 - C语言网 (dotcpp.com)

蓝桥杯真题是真看不懂,这跟代码有什么关系,全是数学题。。

三月快中旬了,太原附近完全没有实习生招生计划吗?

Elasticsearch 也是使用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单,通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API

然而,Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎。 它可以被下面这样准确的形容:

  • 一个分布式的实时文档存储,每个字段 可以被索引与搜索
  • 一个分布式实时分析搜索引擎
  • 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据

Beats是一个面向轻量型采集器的平台,这些采集器可以从边缘机器向Logstash、ElasticSearch发送数据,它是由Go语言进行开发的,运行效率方面比较快。

Logstash是动态数据收集管道,拥有可扩展的插件生态系统,支持从不同来源采集数据,转换数据,并将数据发送到不同的存储库中。

ElasticSearch对数据进行搜索、分析和存储,其是基于JSON的分布式搜索和分析引擎,专门为实现水平可扩展性、高可靠性和管理便捷性而设计的。

它的实现原理主要分为以下几个步骤:

1)首先用户将数据提交到ElasticSearch数据库中;

2)再通过分词控制器将对应的语句分词;

3)将分词结果及其权重一并存入,以备用户在搜索数据时,根据权重将结果排名和打分,将返回结果呈现给用户;

三月七号我第一次创建博客啊,十五号我才新建了第一篇博文。

[01 认知:ElasticSearch基础概念 (lianglianglee.com)](https://learn.lianglianglee.com/专栏/ElasticSearch知识体系详解/01 认知:ElasticSearch基础概念.md)

中午系统过了一遍 Elasticsearch 重点内容,基础知识、查询和聚合的使用、执行流程等,考虑今晚写个总结。

Sheet (feishu.cn)

在牛客网投递了一波暑期实习招聘:五八同城、OPPO、阿里。

再次投递一波简历之后,清净了。闲来无事,想一想今晚可以干啥吧。

消息队列学习,Docker 部署,ES 总结,集合总结,Redis 总结,框架总结,算法巩固。

现在已经看不进去了,玩玩游戏吧,妈的。今晚看一部纪录片。

找工作的时候,最能感受到世界的荒诞_哔哩哔哩_bilibili

《地球脉动》,一共三季呢,今天看了半个小时,还挺不错的。

image-20240313204722338

image-20240313210523047

一周多前海投的岗位,竟然回应我了。不过也没有多少惊喜,一方面是专业不对口,另一方面在上海通勤住宿是个问题。

最后一段时间没有再学下去了,写了一些思想感悟,写给自己看。

2024/03/14

整理了下本专栏排版,开始上课吧

[深入剖析 MyBatis 核心原理-完 (lianglianglee.com)](https://learn.lianglianglee.com/专栏/深入剖析 MyBatis 核心原理-完)

正在跟一家太原本地的初创公司交流。

在校生在本地找实习很不靠谱啊,回应我的都是些小公司,基本都要求线下面试。

今天又约了两个,但总感觉人事很不靠谱。直接简单的约面就可以了,完全没有固定时间。

他们跟我讲话的态度,完全代表着公司利益。虽然这很正常,但我感觉到很恶心。

你维护公司利益本没有错,但连面试都没约到,新人还没入职,就要提各种要求。问你有没有经验,能不能开发项目,会不会考虑实习转正,期望薪资是多少,你还在校吗?有课怎么来上班,公司跟学校不一样,不能随你性子来。人事讲话就是这样的吗,咄咄逼人。明天再问问机会,感觉一点不靠谱。

诶,刚把卡包放回宿舍,今天就要用笔,什么运气。

困得不行,又睡了一会儿。

我发现只要下午有课,中午的学习效率就不会很高。这应该算是工作时间割裂了吧,毕竟上课很影响我的安排。

我就知道不用写,软件质量测试和分析课还挺水的。

上课前再给自己灌一点鸡汤,哈哈哈哈哈哈哈哈哈。

缺陷管理和测试管理,课本上的静态代码走查。

image-20240314165631884

还是有很多有趣的人事的,谢谢你了,陌生人。

正在了解通勤,看看这两天面试的地点交通便不便利。

再次迭代简历,添加中间件掌握情况。

今晚任务:优化简历,再投递一波大厂暑期实习,这个一定要争取。把现有的所有知识点最后巩固复习一遍,明天复习第二遍,特么的有种来问我。就一个小厂,爱要不要,不要的话我可在学校闲着了。玩!再苦再累不能忘记休闲娱乐。

要学的内容很多,这辈子都不能够学完。我为什么会感觉难受?那是因为我在主动追求进步。

北京摄星公司没有消息,还好没抱有多大期望,他们只是不愿意招我这个实习生,却连一个简单的通知都不愿意给到。

本地找实习还是很困难的。学长那边没消息,上周答应答复的人事没消息,只是拿到我简历的更是杳无音讯的。

近段时间每天都在 BOSS 投递,沟通近400了,但是简历只投出去17份。

这两天的 BOSS 回复明显比上周好很多了。可能是投递方式的不对,之前大多都是不活跃的岗位。这几天愿意交流的有很多,明天下午的面试,后天下午的面试。这是我他妈自己争取来的机会,不是别的什么人给我铺平的道路。

有些大厂的暑期实习也陆续开始了,也在同步投递中,今天优化了简历,明天可以考虑开始投递,暑期实习并不着急,误不了的。

上周六开始到今天,感觉每天的生活都是一样的,日子很平静也很惬意,每天都是忙碌而充实的。

一切都是浮云,一切都将会过去,而那过去了的,都将成为亲切的怀恋。

我清楚我在做什么,我有明确的职业规划。尽管我也是第一次,但凡事都必须要靠自己闯荡,我他妈拼定了。

不就是大三下学期找个本地暑期实习?不就是规划着特么找个大厂的暑期实习?有什么难度?结果会是怎样的?

结果只有两种:找到了和没找到。

那又如何?人在做,天在看。

一个人这辈子百分之九十的财富,都是在四十岁之后积累的。

生活吧!活在这浮躁的社会中,作为这肮脏麻木社会的一份子,我只需要关注我自己。

今晚回去再翻翻看,有没有自己喜欢吃的泡面。

2024/03/15

今天好像是消费者权益保护日。

下午有一场面试,不管结果好坏,直接上了。

有烦心事的时候,总是不好排解,虽然没啥心思写东西,但还是值得记录一下。

记得帮小穆查一下考研复试面试的内容。

我这个阶段可太关键了啊!不能松懈。

下午,山西中维面试,感觉良好,希望很大。

2024/03/16

跑步,半小时。

一上午没啥好干的,就了解了解公司的通勤和周边的租房情况。

我还在想着如果合适的话就在能这里长期实习了,今年暑期的实习也就有了着落。有了这份实习经历 + 经验,再凭借我个人的努力,万一能斩获一些大厂 offer 呢?

看会儿《生死疲劳》。

我在等一个机会,还在等。。我总不能半场开香槟吧,希望这次有着落。

昨天的山西中维面试基本记录完成了,还跟二班团支书简单聊了下请假假条怎么写的问题。

我最关心的就是这次入职办理了,如果顺利的话下周一就能入职。届时我只需要关注两点:工作的通勤和校内请假办理。

我还在等消息,等通知,我突然有点不知道该干什么了,我还不知道结果是怎样的。

《该死的万柏林区》,预计明天完结。

2024/03/17

六点很难醒啊,太折磨人了,一觉醒来就七点了。

早上醒来不想洗澡,洗澡还得是在晚上睡觉前,解解乏。

还在等机会中。

百无聊赖地刷着视频,写写日记看看书。

《西游记》前言看完了,真不错。

我的娱乐人生:

阅读:《西游记》《生死疲劳》

休闲:微信公众号《每晚一卷书》《漫画》

电影:猎奇电影,血浆电影,恐怖电影,纪录片

追剧:《瑞克和莫蒂》,B站关注UP

游戏:植物大战僵尸,英雄连,帝国时代,钢琴块

USB 接口直连传输图库失败,还是很不靠谱。

奶奶的,因为USB连接不好中断手机连接,只好是不带手机去吃一顿小火锅了。没想到回来之后传输失败了,只能用手机分卷压缩的方法传输了吗。

晚上看一集《致命弯道》,快乐的一天就结束了。

2024/03/18

上午,了解公司通勤方式和附近租房条件。

还在等机会中。

待会儿去找那导员请个假,请个长病假,周三到周五。

好奇怪啊,为什么找那婆娘请个假搞得现在还挺紧张的。上周周五下午跑去新岛科技园单刀赴会的时候,一点儿没觉得紧张。全程随心所欲,打车,找单位,面试一套流程下来,心里面没有丝毫波澜。那是因为面试聊技术是我最擅长的,并且我对那次面试本身没有抱太大希望。就想着一个小公司还,能有多少值得学习的新东西。去了无非就是混混经验划划水,回来以后再接再厉继续投递找实习。所以我总结出一个道理:只有顺其自然,心无所求,方可宁静致远,悠然自得。

上午十点三十八分,山西中维给我发来录用通知,结果揭晓。

从今天开始,彻底的全新的阶段开始了

一中午跟家人还有好朋友们都报喜了,珍惜这次机会啊,我特么自己争取到的!

把明天所有要准备好的都整理整理:

一寸免冠照(电子版、纸质版)各一张

居民身份证原件及复印件

学历证书及学位证原件及复印件

专业技术职称证书原件、职业资格证书原件及复印件

中国建设银行卡及招商银行卡的复印件(上面需备注卡号及开户行,试岗结束一周内提交)—-工资卡

无犯罪证明记录(一个月内必须提交)

image-20240318160006513

想从 pdf 中提取图片作为免冠照来着,除了 WPS 都好使,就是要花钱。

联系了小马村房东,这周周末去看房子,尽量能租个便宜点的单间。

下午就准备好所有资料吧,直接去到天猫打印,复印件也好,原件也好,证件也好。

晚上啥也不用干了,就把今天的所见所想写一写。

世界上还是好人多啊,洗免冠照片的时候,不小心洗错了,好心的大哥帮我免费洗了一次。

除了无犯罪记录证明,其他的资料全部打印完毕。妈的,录取通知书忘记打印了。

打印完啦,跑回宿舍打印的,还好楼底下的可以用。

2024/03/19

上班第一天,简单回顾

上午熟悉工作,中午回去一趟取电脑,下午完成工作。

第一天真是折磨,上午起早了没公交,只好是打车来的。中午回去一趟取电脑,吃了饭拿起书包就跑。担心误了下午班,只好是又打了辆出租直接送到公司小区。下午傻愣愣地跟着别人一块儿坐着,到七点了还不走。给主管汇报完就跑了。等晚上回去就八点半了,跑去自习室的路上还啃了个面包,晚上回宿舍吃了泡面。

2024/03/20

上班第二天

今天早上通勤挺顺利的:六点二十起床,简单整理一下到了六点三十五左右出发。走慢点赶五十左右到公交车首发站,等十分钟左右,七点五分坐上公交。三十五分钟左右到了财经大学,过街 + 等车花了十分钟,坐公交到公司路口要十五分钟左右。进了小区,走到办公室要十分钟,这会儿是八点十五分左右。

办理入职

上班事情多:每日日志,每周周报

今晚记得取快递啊,别的小东西不要紧,妈妈买的鸭脖子可回来了

从上到下层层加码马到成功, 从下到上层层放水水到渠成。

今早查了下,本周六上午八点考四级,那么在周六下午联系着去看看租房吧,看这周能不能租到便宜且通勤方便的房子。

中午在附近饭馆吃了一碗担担面加了个饼子,十块钱,真不错嘿嘿嘿

image-20240320142137633

下午六点就跑了,回去是晚上七点半

回去了也没啥心思再学,抓紧时间放松一会儿

最近回去开始看《行尸走肉》混剪了,这部剧还挺不错的。印象里就是丧失走起来比老奶奶还慢,不是很生猛

2024/03/21

一如既往,八点十分到了办公室

今天是不是可以报名四六级了,中午看看。

image-20240321150039271

改了下本地数据库配置,数据库名出错了。

image-20240321151227630

image-20240321151238013

终止进程:运行tomcat报错:Address localhost:1099 is already in use-CSDN博客

image-20240321161059496

瑞吉外卖,谷粒商城。学成在线,黑马点评。

2024/03/22

【Spring循环依赖报错】The dependencies of some of the beans in the application context form a cycle-CSDN博客

系统登录 - 智慧园区信息化服务系统

完蛋

没有完蛋!我特么给自己争取了两天的时间,周末也不能懈怠,赶快行动起来。

瑞吉外卖管理端

手头的几个管理系统:新四个,酒店管理(2),智慧园区(2),梦想家(4),瑞吉外卖(2),数据库(1),客户关系(1)

前天取错外卖了,今天才有工作人员发短信通知我。

如果不是实习上班,我怎么可能保持每天早上六点半雷打不动地起床,坐一个多小时的公交车赶到八点半去单位上班呢。

终于到周末了,上了班才知道天天盼周末,以前身在福中不知福啊!

今晚回去写写感想,简单总结一下这周的心得,再小小地学习一会儿专业知识。完结软著整理,明天一天一定要搞完。晚上回去问问主管周末应该看什么,是不是要提前了解学习一下部门的自研项目。

不管怎么说,忙碌的一周就过去了。

好久没有看书了,周末可以看看。

还有乐跑呢,周末可以跑乐跑了。

再想想下周的学校课程怎么逃掉,如果租房顺利的话,住宿和通勤就不用多操心了。

很好,托那位主管的福,赶在这周上班最后一天,终于找全了一批后台管理系统,暂定这批项目合集为 MemoryTools 忆工坊下的子项目

image-20240322220309862

时隔十天,同样的位置,完全不同的心态。

2024/03/23

四级网络工程师,没了。

先去吃个饭,回来跑几个代码试运行。休息一会儿下午快两点就出发看看房子情况。房子打点好了拿到钥匙就先回来,周末两天收拾下东西。下午跟海红确认一下工作情况,把他的软著信息拿过来整理一下,今明两天就要搞定这件事。明天估计会在下午带上行李去房子那里。下周六之前估计就不回来了,目前是这么计划的。

还有学校方面的请假问题,在下周上课前慢慢跟代课老师打好招呼。

今天晚上就应该没事了,早点做完工作就早点休息。今晚和明天两天时间,可以抽时间看看本学期的乐跑,周末补上。

今天不要忘记写周报啊,吃完饭回来就看看,让 AI 帮忙整理一下,不是什么要紧的事情。

这几天神经紧绷,确实没有好好放松一下了。需要清静一下,看一部电影,跟好兄弟好好聊一聊玩一玩,日子就这么过吧。谁的日子是称心如意的呢?只是最近开始实习工作跑了几天,有点疲惫,过了这段时间我就能适应了。

工作了心态确实不一样,现在的我是花时间给别人打工,干什么都由不得自己。越发珍惜在学校的日子了,大学校园生活真的是人这一生中最清净、最自由的日子。

毕竟这条路是我自己选的,这是一条绝对正确的路。现在还年轻,年轻就是我最大的资本,我的试错成本很低。要是我明年毕业了混成这个鬼样子,那个时候后悔就晚了。

还是要平复下心情,不管怎么说,日子总得过嘛。前几天那么困难我都撑下来了,现在这点事又何足挂齿?罢了罢了,好好休整一番,生活还是要继续啊。

年前火场救母,国际主义战士自焚,初中生霸凌杀害

中午睡了二十分钟,却感觉过了二十年,好漫长啊。

运行项目流程

登录 MySQL,连接本地数据库:

image-20240323133910720

修改数据库连接配置:

image-20240323134029060

IDEA 配置本地 Maven:

image-20240323180558259

新建数据库:

image-20240323134151689

执行 SQL 文件,向数据库中导入数据:

image-20240323134405349

执行命令,打包项目:

image-20240323134702224

直接执行启动类,运行项目:

image-20240323180725398

启动 tomcat 服务器,部署项目:

image-20240323134837988

image-20240323134845772

服务器启动成功:

image-20240323135116846

2024/03/24

记录一下五本好书:

果然还是学生时代闲得慌,每天都有新想法,现在忙起来后就有点有心无力的,及时调整调整。

《致命弯道2》看完了,特么的消息发错群了。。。

每天晚上睡觉前都会有几段被尘封的记忆浮现在脑海,没来得及记录下来,只可惜白天就忘掉了。

想起来了。高中那会儿看三体,津津有味。我还没看完第三部,在宿舍里我就听我哥给我讲,只是觉得这是极其精彩的故事。

中午吃了饭,又遇到小穆了,聊了三个多小时。

问卷调查系统管理端

一个人住就是方便,想干啥干啥,玩电脑还不用外放。

好久没有这么早睡过了,今天中午没有睡觉,好生困倦。

第一次在外一个人过夜,睡个好觉~

2024/03/25

后台管理登陆

写代码,做项目,一定是一个一个地解决问题,不能急于求成。

网上拉的项目他不靠谱,要么没配置文件,要么没数据库文件。

1
2
3
4
5
6
7
8
9
10
java.sql.SQLException: com.mysql.cj.jdbc.Driver
at com.alibaba.druid.util.JdbcUtils.createDriver(JdbcUtils.java:600) ~[druid-1.1.10.jar:1.1.10]
at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:817) ~[druid-1.1.10.jar:1.1.10]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1920) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1862) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1790) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE]
1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- druid begin -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.15</version>
</dependency>
<!-- druid end -->

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>

image-20240325115548600

改了下 MySQL 依赖就能启动成功了

java.sql.SQLException: com.mysql.cj.jdbc.Driver-CSDN博客

特么的,好久没有在网上拉代码了,一如既往的恶心人啊。

哇呀呀,不是没 sql 脚本就是没没有填充数据,找个开源现成的项目就这么难

image-20240325171434953

今天这任务完成不了了。

下午开了组会,汇报了工作,明天这工作就要完成了,嘿嘿嘿

晚上坐公交回来,慢悠悠的。小巷里吃了碗面,不贵。晚上回来还去平价便利店拿到了大门门禁卡,蓝色卡片,真的谢谢那位房东阿姨了。中午还特意过来检查了下水,原来是阀门没开。

这地方没水,晚上就下楼买了一瓶,超市离得近就是方便。

美好的一天结束了,明天起来能不能写一写日记呢?

2023/03/26

还写日记呢,昨天晚上没睡好,早上起都不想起。

使用 maven 打个 war 包,报了一连串的错误:

  1. IDEA maven 未配置好,配置一下就行
  2. 有依赖下载失败,换了新的版本解决了
  3. 测试用例有错误,打包时直接忽略掉测试用例就行
  4. Cannot access defaults field of Properties问题,看下面

Cannot access defaults field of Properties问题的解决-CSDN博客

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.3.1</version>
        </plugin>
    </plugins>
</build>

有必要图文总结下这方面的经验了。

maven 打包、本地起 tomcat 服务器

程序包javax.annotation不存在?_百度知道 (baidu.com)

错误: 程序包javax.annotation不存在_mob64ca12e732bb的技术博客_51CTO博客

报错 java: 程序包javax.servlet.http不存在-CSDN博客

程序包 javax.servlet 不存在 解决办法_helloservlet.java:4: 错误: 程序包javax.servlet.http不存在 -CSDN博客

java: 程序包javax.servlet不存在、 java: 程序包javax.servlet.http不存在 java: 程序包javax.servlet.annotation不存在-CSDN博客

跟着一通操作,还真打包成功了。

跑起来三个:

大王,123456

admin,123456

怎么每次中午在工位上睡觉都迷迷糊糊的,这觉还不如不睡呢。

我的未来规划,突然看到星球里的这个活动。以我最近两年精彩的经历,还是可以尝试去写一点东西的。

致命弯道3看完啦,真几把生猛

2024/03/27

软著归档文件顺序调整

清理D盘以及回收站

拉取企业项目学习

关于pom.xml一直提示Could not transfer artifact(无法搬运)+无法解析maven依赖的问题,我在学习springboot的过程中遇到的一些问题-CSDN博客

这个问题我直接打包所有项目就行,不单独打包每个子模块

若依报错解决_> ruoyi@3.8.6 dev > vue-cli-service serve info sta-CSDN博客

1
$env:NODE_OPTIONS="--openssl-legacy-provider"

执行这条命令,确实百分百永久解决问题

Java spring 注解 @PostConstruct 实战讲解-CSDN博客

问题解决咯,是 JDK 版本问题。

2024/03/28

熟悉业务流程

Intellij IDEA快捷键记录一(跳转与查找定位) - 勤奋&小渣渣 - 博客园 (cnblogs.com)

2024/03/29

继续开发新接口

image-20240329152252713

霍去病,封狼居胥,追亡逐北,饮马瀚海,兵锋直指贝加尔湖,“匈奴未灭,何以为家”。

2024/03/30

今天所有的快递都到了,是时候取一趟了。

我会尽量把闲聊放在《岁月如歌,我的人生回忆录》栏目下,这里就简单交代下每天的学习生活就可以。

今天继续学习新项目,RPC远程调用框架。

2024/03/31

今天必须学学新项目啊,给新的一周开个好头吧。

image-20240331185008153

2024/04/01

昨天什么也没写呵,其实还是做了点工作的

写新接口,由于没有厘清实现思路和呈现效果,接口搞错了。

我在想神不知鬼不觉地拿到一部手机,究竟有多困难。

2024/04/02

丰子恺经典语录34句,精辟走心,句句看透人生,让你受益一生! (baidu.com)

继续完成新的接口任务

今天认识了新同学,不错。

【效率提升】IDEA中书签功能的妙用_idea 书签-CSDN博客

已完成:

1.梳理指标数据分析平台业务逻辑,为张树宙细致讲解可视化页面简单业务,并全天及时答疑解惑

2.基本熟悉文档生成接口 /generateDoc、generateDocFor56方法 的文档生成业务逻辑

3.基本完善昨天遗留的接口(全省前三位指标个数 、全省前三位指标数据),正在测试数据返回准确性并尝试编写接口文档

问题:

1.大同检察院可视化项目是不是旧了,没有提供文档生成接口 /generateDoc,我是看着朔州检察院可视化项目学习的。

下午回去取到了电饭锅快递。

2024/04/03

(1)win+R,打开命令提示符框,输入cmd,进入命令提示符

(2)输入netstat -aon | findstr 1099,找到占用1099端口的进程ID:PID

(3)输入taskkill -f -pid PID

(4)重启Tomcat

体育课,不好搞,这体育老师真特么难缠。

上午一直在发呆,心神不宁的。代码业务是最无聊的,我可看不进去。那只好是用这点时间摸鱼,写点东西。

微博搜索 (weibo.com)

下午也在发呆,实在是没心思看代码。还有很多要操心的:学校的课业、租房打扫等等。

2024/04/04

白天没啥好说的,就是追剧、打扫房间、玩游戏

下午我哥来了太原,晚上带着我出去转了俩小时,学着骑车子。

行尸走肉真的好剧

2024/04/05

行尸走肉,第二季第十集看完

行尸走肉 第三季第1集在线播放 - LIBVIO

LIBVIO-官网

image-20240406000020024

image-20240406000031067

image-20240406000042398

2024/04/06

我怎么能因为明天的事,就不好好过今天了呢?那我要是预知到未来几年内的所有破事,我还活不活了。

今天尝试下载所有QQ音乐,充了一个月会员,明天上班下载最高画质,顺便缓冲几集美剧。

养成了随手拍照记录生活的习惯了。

2024/04/07

单位的WIFI信号不错,下载几百首音乐再说。

1
2
3
4
(1)win+R,打开命令提示符框,输入cmd,进入命令提示符
(2)输入netstat -aon | findstr 1099,找到占用1099端口的进程ID:PID
(3)输入taskkill -f -pid PID
(4)重启Tomcat

MySQL 之 InvalidConnectionAttributeException,SQLNonTransientConnectionException_sqlnontransientconnectionexception: server shutdow-CSDN博客

MySQL 的这行配置还有点门道:

1
url: jdbc:mysql://122.9.51.171:3306/test_shuozhou?serverTimezone=UTC&allowMultiQueries=true&autoReconnect=true&useUnicode=true&failOverReadOnly=false&useSSL=false&characterEncoding=utf-8

奇了怪了,上午填了入职表,应该是一式两份给我一份的。怪我没多嘴当场问一下,应该是我拿一份的,这也算实习证明,也是权益保障。

已完成:

整理需导入的2024年指标数据

学习理解导入指标数据接口 impiortExcelFor56 的业务逻辑,尝试新增接口 impiortExcelFor48

学习理解指标数据文档生成接口 generateDoc 的业务逻辑,新增 48 项指标文档生成业务逻辑 generateDocFor48

需协调:

需导入的2024年1-2月指标数据,有没有需要特别修改的地方

晚上回家买了好几样东西,洗发水、老干妈,粉丝和榨菜,出来超市外边还买了八个馒头。

现状、目标、实现路径

2024/04/08

时间顺序:
1、实习签订劳动合同
2、完成今日指标数据整理任务
3、请假条打印
4、蓝桥杯算法冲刺
5、日志周报填写

上班起身越来越晚了,今天七点五十四出门,出了小马村坐公交到平阳路南中环街口才八点零六分。步行到新岛科技园A座下,八点十九分签到打了卡。八点二十四来到工位坐好,距出门时间刚好过去了整整半个小时。

蓝桥杯赛事:

一、所有选手在比赛期间须做到有序签到进场及退场。

二、参赛选手须在大赛官网下载并认真学习“蓝桥杯大赛个人赛(软件类/电子类)比赛管理办法”(以下简称比赛管理办法),并在比赛中遵守

相关比赛规定。比赛管理办法:https://dasai.lanqiao.cn/notices/844/

三、选手凭准考证及身份证在比赛正式开始前30分钟入场。比赛开始30分钟后,迟到选手一律不得入场。

四、选手须将准考证、身份证放在计算机桌面左上角,以备监考人员随时核对、检查。

五、选手在比赛期间应注意安全、爱护赛场设备,避免违规操作,严重违反操作规程者将视情节扣分。

六、比赛时间不中断,草稿纸在比赛结束后须交给监考老师,不允许带离赛场。比赛用笔为选手自备。

七、比赛采取多重防作弊措施,其中赛事阅卷系统采用国内领先技术,具有自动判别雷同卷功能,有效监控抄袭作弊等行为。同时组委会特设比赛

违纪举报邮箱:jubao@lanqiao.cn。举报人须在比赛结束后三天内提供举报信息,并署本人真实姓名、身份证号和手机号码,否则不予受理,

大赛组委会将对举报人的信息进行保密。对于核定为作弊的选手将通报所在学校并在大赛官网通报,且三年内禁止参加蓝桥杯大赛任何赛项。

八、比赛期间禁止选手无故中途离场。选手上洗手间,需经过监考老师同意。

九、答题过程中,选手如要换机须经过赛点技术老师同意并进行相关操作之后,才能够换机器。

十、选手在比赛过程中,如果遇到机器死机,经技术老师允许方可重新启动机器再进行登录。

十一、选手答题过程中如长时间不使用比赛系统,再用时须重新刷新浏览器登录。

十二、比赛流程:

1.入座,将身份证及准考证放在桌面左上角待监考老师检查。

2.选手检查计算机及比赛环境能否正常运行,认真听取监考老师宣读参赛规则。

3.比赛正式开始后,选手在谷歌或者360浏览器中输入比赛服务器IP地址进入比赛系统界面,用准考证号和证件号码登录。

4.选手须将题目下载到本地不被还原的盘符,输入解压密码解压后开始答题。

5.选手每答完一题须将答案提交到比赛系统,答案可重复提交,以最后一次提交为准。特别强调:比赛结束时,选手将无法提交答案,如未

及时提交,责任由选手自负。

6.比赛结束后,选手须退出比赛系统账号、关闭浏览器并及时离开赛场,不能在赛场外逗留,电脑一律不能关机。

十三、获奖福利:蓝桥杯大赛获奖选手可免考申领《工业和信息化人才岗位能力评价证书》。

十四、关于参赛方式、比赛纪律、赛后服务等问题,可添加蓝桥官方交流群咨询;关注蓝桥杯大赛公众号,第一时间了解大赛资讯;微信扫码预约

省赛赛后解析直播。

试卷答题页 - 蓝桥云课 (lanqiao.cn)

Postman 上传文件 返回 500 报错 “Current request is not a multipart request” 解决_postman current request is not a multipart request-CSDN博客

蓝桥杯,五天冲刺计划

第十四届蓝桥杯大赛软件赛省赛Java 大学 B 组

第十三届蓝桥杯大赛软件赛省赛Java 大学 B 组

第十二届蓝桥杯大赛软件赛省赛Java 大学 B 组

第十一届蓝桥杯大赛软件赛省赛Java 大学 B 组

第十届蓝桥杯大赛软件赛省赛Java 大学 B 组

image-20240411163546030

已完成:

1、2024年1-2月份市院、区县院指标数据导入,并基本完成验收

2、指标数据导入接口调整(接口导入规范、规则)

3、初步尝试页面可视化分支条件调整

晚上取了快递,小被子,蒸锅,下水道塞子。

家里吃的快吃完了,粉丝就剩一卷了,还有俩袋挂面,想着怎么做才好吃。

蓝桥杯备考,倒数第五天,开了个好头,做做最近几年的真题。

晚上下雨了,下大点,后天体育课干脆不用上了,嘿嘿哈哈哈。

2024/04/09

上午快八点了才出门,是因为临走时才发现钥匙找不着了,翻箱倒柜了一小会儿才想起来刚刚放进书包了。

今日回忆录:见习,就诊,上访,清明

下午回去写请假条吧,这破事很难办啊,难办就不办了。378 418

6个点,6*(6-1)/2 = 15条线,结果是减去四条,为11条线

三个点,少两条;四个点,少五条,K个点,少(k*(k-1)/2 - 1)

420个点,87990条线,结果减去

20个点,少

蓝桥杯省一经验分享_蓝桥杯做对几道题就可以拿奖-CSDN博客

“ 骗 ”分指南——对于蓝桥你不得不知的应试技巧(文末发送礼包)-腾讯云开发者社区-腾讯云 (tencent.com)

下午被叫去八楼打扫办公室,奶奶的跟义务劳工一样,下班前又被叫上去

下班回来路上,在公司附近的一家复印店打印了十份请假条,看看能不能派上用场

晚上又看了两集行尸走肉,没有好好复习蓝桥杯,只能看看考场上有没有简单题能做了。

淘宝上看上了几样臂力棒和哑铃全家桶,买买买,正好昨天的瑜伽垫子回来了,今晚出去取

八点半出来取快递,碗筷回来啦,还有妈妈给买的馍片。但是韵达快递今晚关门了,瑜伽垫子没取到。

回来买了一斤烙饼,一斤八块钱,怎么感觉好贵。晚上吃了一袋方便面和一个馒头一袋烙饼,吃得真的饱。

馒头发霉啦!不知道是因为放在柜子里的缘故还是咋的,赶紧把他们消灭掉。

路上看到好多烧烤摊,还是大街上的那一家比较正式,有时间出去吃一顿。今年夏天就带着我兄弟,一起撸串。

2024/04/10

出发越来越晚了,哈哈哈哈。

晚上吃的再饱,挨过这晚再一觉就过了十小时,白天还是会饿。那就好说了,晚上少吃点,嘿嘿嘿。

今晚回去打游戏!今晚开始锻炼!

解决:Can’t use Subversion command line client: svn Probably the path to Subversion executable is wrong - 简书 (jianshu.com)

刷手机,一不小心又想多了,哈哈哈。

我想念我的兄弟了,只盼着今年夏天快点到来,相跟上出去玩。

怀念小时候啊,放假前的那个下午。院子里微风吹过,我们都懒洋洋地趴在书桌上。下课以后,站在树梢下,看着伙伴们玩耍。

好多小时候的回忆涌入我的脑海,仿佛是一张张画像展示在我眼前:清晨下的静谧的万物和清新的空气、暖阳下懒洋洋的猫咪和热烈的期盼、黄昏下的草地、夜晚纷扰的蚊虫和晴朗的夜空……

梦醒了,该干活了。

[091 程序员面试攻略:面试前的准备 (lianglianglee.com)](https://learn.lianglianglee.com/专栏/左耳听风/091 程序员面试攻略:面试前的准备.md)

25左右是最难的阶段,因为你么都没有,必须要靠自己的双手去争取。

好多好文章啊,做好眼前事。穷寇莫追,逼自己一把,在学业上能有所成就。

下午六点就跑掉了,早早地回去能取快递买东西,一瓶芝麻酱。还能多看一集行尸走肉。我的瑜伽垫取到啦!我看看摆在房间哪个地方合适呢。

刷视频能把我刷泪目了,好久没有过发自内心的快乐了。

昨天买的运动器材都发货了,今天又买了一个小方桌,吃饭用。昨天取回来的碗筷今天才打开,好小的俩碗!还有一个盘子和两双筷子。

晚上八点多出去买菜,西红柿青菜黄瓜青椒,又去到超市里花十块钱买了一个小木案子,一瓶油十六块钱。

近段时间还是尽量不要在房间开灶了,东西多桌子小,根本摆不下的。还好我聪明,物尽其用。

没有刀子就手撕青椒西红柿,起锅烧油,因为没有别的调料只能加点盐和醋。边看毛憨电台边做饭,真是惬意啊。

奶奶的,一袋醋撒了有半袋,不过拿碗接起来还能蘸着馍馍吃。

跟小成聊了一会儿,他还想把我的日记分享给同班同学,我当然答应了。十一点半小赵就加我微信,简单聊了一会儿,交个新朋友还是挺开心的。

晚上回来,没有吃泡面。看了一集行尸走肉,八点多下楼去买菜。小马村菜市场很热闹啊。

2024/04/11

认识了新朋友,想说的话有很多:

你大一刚入学那会儿真的轻松吗?我们总是在提前焦虑,不论在哪个阶段。体育课你不想上,你想起来就难受,那一个月的体育课你是熬过来的?它对你现在,就在此时此刻,有什么影响?根本不算事。只要身体健康,就没有克服不了的困难。很简单的道理,却基本没人能弄明白。

出发越来越晚了,早上真的挨到八点才出门。下了楼去到公交站牌下等公交,今天的车来的有点晚,竟然让我等了有三分钟。

又是十分钟左右,到了目的地,下了公交就八点十二分了。步行到单位楼底下签到打卡,正好过去了十分钟。随后四分钟上楼到工位,已经是八点二十六分了。

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘his-CSDN博客

部署项目 Failure obtaining db row lock: Table ‘XXX.qrtz_LOCKS‘ doesn‘t exist-CSDN博客

中午看会儿漫画,看会儿技术摘抄,再多找点好看的壁纸。

我一直以为上了班之后就没时间写东西了,恰恰相反,这段时间文章产出量是最多的。

上班摸鱼干自己喜欢的事还拿着工资,这感觉真不错。

时隔三个月,再次整理个人博客网站

解决svn中“工作副本已经锁定”,或者svn清理失败的解决方法 - 疯子110 - 博客园 (cnblogs.com)

文心一言界面又更新了,尝试了下它的说图解话功能,还不错。

下午哑铃回来了,懒得去取。瑜伽垫摆好了,也还没用过。哈哈哈哈哈。

写写自己的大学生活感悟,跟小穆分享了下,快的的一天结束了。

2024/04/12

丰子恺经典语录34句,精辟走心,句句看透人生,让你受益一生! (baidu.com)

今天的工作很忙啊,下午导入指标数据,总算完成了。晚上下班晚了点,七点半才离开单位呢。

明天要参加蓝桥杯了,虽然没有做好十足的准备,但重在参与嘛。大学三年也不枉白过一场。

这两天很喜欢鼓捣自己的个人博客网站,开始在新鲜的壁纸网站上找好看的壁纸,并且做一些文章首页图片。

到现在还没有吃饭呢,十一点半了,只是没啥胃口。

晚上八点多到了家,今天的快递基本都回来了:床上桌、小方桌、哑铃、臂力棒,只能拿得动床上桌了。妈的去取快递还看错了,只有床上桌是韵达的,其他都是圆通的快递,明天取完。

真挺幸运的,明天正好周末回学校取点东西,要是没有蓝桥杯比赛的话,估计后天我才想回去。

晚上十点半下楼买水去,一桶五升的水和一瓶冰红茶,十三块钱,顺便网上淘了一个好用的水桶,十七块钱。

才慢慢发现这个地方嫖娼现象挺严重的,前天下午出去买菜的时候,就看见有个标语说是严厉打击嫖娼黄赌毒现象。

晚上就是看行尸走肉了,看了一集加半集,第四季还是很不错的,好剧好剧。

准考证打印好了,明天回学校去取,下周还得上体育课了,那老师不回话。明天问问他,我跟你商量你不能跟个死人一样对吧。

晚上十一点多跟好兄弟玩玩元梦之星,好久没打了,估计得有一周多。

昨天还花了一块钱,每天能在彼岸图网免费下载20张壁纸,七天会员。

这星期就结束了啊,清明之后连着上了六天班,时间按的还真是快呢!

那么,在睡觉之前,写一写大二的学习生涯吧。

2024/04/13

早上七点醒来,周六的上午还是那么忙碌,我得赶去学校参加九点的蓝桥杯。

玩会儿手机,刷视频到七点半才起床。洗漱一下就要赶快出发,下楼打车还得十多分钟,赶过去粗略估计不到半个小时。去了在天猫取一下准考证复印件,提前半小时能到考点。但是我总觉得不能提前离场,也就是说中午一点以后我才能离场。我苦苦等待的周末啊,不能就这么让时间毫无意义的流逝了。主要还是因为通勤不方便 + 准备不充分,我总感觉这次赴考只是白跑一趟。

看了一集行尸走肉,那体育老师没戏了,根本不给机会还麻烦事多,下周得去上课了。

边看边玩,打了两把元梦之星,顺便刷刷掘金好文。

突然发现近段时间麻烦事好多,转念一想又全部都释然了。是啊,普通人哪有那么多美好的时光,能做到真正的惬意自在呢?大家都只不过是被生活向前驱赶的虫子罢了。

昨天晚上的写作状态很不好,憋了一个小时也就写出了几行文字,总之令我不太满意。其实我这里又对自己的过于苛刻了,写大学生涯的经历嘛,何必那么字字稀金。

中午出去去快递,哑铃和小方桌都在圆通,但是臂力棒在另一个申通驿站,明天去取吧。

下午好好打扫了一番家里,边看剧边收拾家里,心情真的很不错。

吃饭的话就用自来水吧,挺不错的,要不然我舍不得加饮用水,煮的面都是糊的。

下午练了一会儿哑铃,又学习了形意拳,下周就得去上课了。今天的任务还没完成呢,我还要出一份试卷,为下周的员工新人培训做好准备。

下午玩了半个多小时我的世界,以前怎么没发现有这么丰富的环境音呢!还是挺流畅的,三年之期已到,下次开黑生存又是多会儿呢。

试题差不多完成了,明天再完善一下。

实在舍不得睡觉,反正明天不用早起,刷了一会儿视频,功夫熊猫最新电影是真的烂啊。

2024/04/14

早上八点多醒的,这精神状态还可以。

边看行尸走肉边学习趣话计算机网络协议,挺有意思的。

打算早上玩两把游戏的,净刷了视频了,下午充手机的时候玩玩。

跟海红对接了下可视化项目测验题目,修改了下内容减小了试题难度,没有问题了。

中午吃的挺丰富,因为没啥调料,炒出来的白菜索然无味,不过煮了几把挂面,还是吃了三小碗,吃饱啦!

今天洗个澡吧,我看看这里的水质如何。

个人博客网站优化这两天没有啥进展,主要还是太懒了,下午可以做做这件事。

中午把周报写了,顺便在平板上下载了王者荣耀,想着闲来无事的时候能玩玩。

今晚又吃了鸡蛋挂面,总算把前两天买的小白菜吃完了。还有半颗西红柿和一点卷心菜,这两天炒得吃掉。

王者荣耀还真好玩,嘿嘿嘿,半年没玩了,下午打了一个多小时人机局。

下午又忍不住开始逛淘宝,买了俩半袖、月光灯,还有一个陶笛。回来好几个快递了,这两天实在不想下楼去取。

行尸走肉第四季大结局看完了,这瑞克杀人像个丧尸,像个开膛手。这主角简直太让人放心了,说话还像个反派。

晚十一点五十分,突然开始刮风打雷下雨,然而仅仅持续了五分钟就结束了。

边听音乐边看极客技术文档,再卷卷腹,晚间生活多惬意,果然呆在家里才是最爽的。

明天开始上班!又是活力满满的一周啊!

2024/04/15

夸克网盘分享 (quark.cn)

第一天新人培训,挺无聊挺小儿科的,不过也挺好玩。早上团队合作,画队徽、写队名和队号。下午又是两点到四点多培训。妈的晚上还接着培训,真是几百块钱的工作不让人闲着呢。

已完成:

1、朔州检察院可视化代码拉取更新,核对新调整的代码

2、大同代码调整,字典表字段、常量类、工具类指标类型相关内容修改

3、完成上周遗漏的大同项目文档生成功能

3、今日新人培训课程内容

待完成:

1、检察院可视化晋中143、朔州152项目文档资料待整理

2、今日新人培训笔记内容整理

下午班长找到我聊了会儿,我才发现自己已经是班里的名人了。我一直很低调的,努力两年多到现在找到实习,也从没想过要跟别的人夸耀。我选择的这条路是正确的。

今晚加班,绩效考核规则 + 闻喜项目问题 + 员工培训,估计要折腾到快九点才能下班。

真就快九点才下班的,等回到小马村已经十点二十分了。楼底下理了个发,精干又帅气嘿嘿。

小穆叫嚷着担心软考考个44分,那她就不想活了,爱哈哈哈哈。

旧白菜还有两颗,先把小的那一个炒了。一碟美味的酸辣白菜。没有葱蒜,我就扔了点老干妈和辣椒进去,撒上盐和醋。熬了十五分钟就能出锅了。又煮了一捆挂面,边看电视剧边吃,吃得饱饱的。

把行尸走肉第五季第一集看完啦,主角团真是全系列巅峰时刻,一个个都是战神。

2024/04/16

今日新人培训,礼仪和企业管理方案,挺轻松的。

闻喜项目不好搞,一天下来只给了后端代码的拉取权限,看了看相关文档和生产环境下的大屏数据。

今晚再炒个菜,回去取一些快递。回家回家!

又炒了一锅酸辣白菜,好吃

行尸走肉第五季第二集,主角团这一路下来基本没什么分歧,最强阶段了。

今天下午下班前跟主管提了请假,明天上午得去上体育课呢。

2024/04/17

七点半多才起床,实在困得不行。发了会儿呆又刷了半小时手机,八点半才起身下楼。

快到街上时高德上叫了辆出租,师傅让我去街对面坐车。挺快的,八点五十多就到了校门口。进了校门,真是熟悉又陌生的感觉,有点不喜欢这里了。九点多回了宿舍,舍友们都还没醒,十点多要上体育课呢!

抓紧时间收拾了一下,把该拿的都拿上。清明节前罗列的什么衣架子,碗,水浒传,墙贴,手电这些。床单鞋子拿了,毛巾枕套、证件还有药钙片核桃也拿了。当然了,碗筷和刀子也带上了。

收拾好之后先去上了体育课。这节课真恶心,好说歹说他不给我放行,就看着那破大纲不允许我请假。先绕操场两圈跑步,又回到原地做操。接着就是打两套形意拳,然后测试跳远。这么多人呢,我在那里认真练拳,结果他隔大老远喊我名字问我说邓纬你都会啦?怎么不跟着练?他真是有点毛病在身上的,奶奶的。

舍友真是有当老师的天分,二十分钟教会了基本功。我差不多掌握了,下周直接上去考试去,不跟这烂人浪费时间了,爱咋咋地。

自我二月底开始找实习以来,我的身边一直有人在支持着我。这些同学老师们或多或少都给予了我帮助,才能让我的实习求职如此顺利。我非常感谢那些在我人生关键道路上帮助我的人,并会把这份感激深藏在心里。恰恰相反,有的老师就一点不尽人意。人的一生有几个二十二岁?能上几年大学?有多少次能争取到校外实习?不但不把我说的话当回事,处处死板教条按着大纲来办事,还特么不回我消息。我一直在跟它商量着这样那样的方案能不能行,求他学校方面给我做点让步,也算是老师对自己学生的一份关注。我已经不想吐槽了,我不会在余生里给他一丝好印象,我只会觉得这样的人不配为人师表。

好吧,中午跟舍友一块吃完饭,他们还捎带给我买了一份饮料。冷饮,挺好喝挺解渴。打个车半小时不到就回小马村了。收拾一下到了一点多,下楼上班去。中午一点半左右坐到单位,睡了一小会。两点多树宙给我讲了下下午的工作安排,忙碌的一下午就开始了。

下午我们团队一直在做闻喜项目的自测整改工作,不会就问高工问小兵。我第一次能切实感受到团队分工合作,这也是入职以来很少有过的体验。我参与了现有功能的测试和问题反馈,这让我有前所未有的参与感与满足感。

四点多还有个新人培训,我听着挺认真的,突然小兵叫我们出来改Bug,哈哈哈哈。加班到七点半,今天的任务完成了,明天的事明天再说。

晚上回来取了快递:月球灯,半袖,竹笛,好玩的东西真不少呢。买包子的时候,老板看我小,五个素包子还另外给我送了一个肉包子。

干点啥好呢?树宙说他被主管叫去谈话了,因为下午下班前人事给了他一大摞纸张让他代签字。关于这事我就不细说了,主管给他说的意思就是给你安排了工作,不相干也得干。这没有办法了,这纯粹是体力活,没有成长不是本职工作更浪费时间。慢慢写吧,有时间就写点,不要干扰自己的工作进度和好心情。催的话就给她甩脸色,谁让你给我这么多的,反将一军。毕竟他们没把实习生当回事,咱也不需要把这任务当回事。

下班前阿泰还问我现阶段要干什么才好,老规矩我把博客给他发过去了。我才发现个人博客就是最好的名片,现在只要有人问我学习经验,我都直接发博客链接给他。我的博客内容肯定是很精彩的,虽然仅仅记录了我的编程学习生涯里遇到过的问题和解决方案,以及生活感悟。

好了,想一想晚上玩些什么,吃点什么,美好充实的周三就过去了。

2024/04/18

昨天晚上的状态很差劲,连锅灶都懒得起。

写完日记就开着手电和月光灯,边坐在瑜伽垫上刷视频,边想着这学期的乐跑怎么搞。想了一个多小时还是有用的,不搞那些歪门邪道的方法了,我找天悦让他帮我多跑几次。

到十二点了,又依依不舍地抱着平板,躺着刷了半个多小时视频。

早上醒来,头晕脑胀到现在,一直到下午下班后还是头疼,好像还更严重了。

晚上回来啥都没去取,不着急的,从学校带回来的俩大包还没收拾呢。不过今晚才发现自己做了两件糗事。

前两天炒菜剩下的一些白菜,我给它放盆里接了半盆水漂着,给整忘记了。今天一看好家伙,白菜也都化了,只剩下一滩恶臭的水。

还有前两天懒得洗的袜子,我寻思着就这么两对袜子还,先扔盆里漂一阵子。结果这两天又给整忘记了,回来赶紧扫地拖地把脏水倒掉了。

今下午是迟迟下不了班呢。你们一个月多少跟我能比嘛,下班了俺要回家。跟高工说他磨磨唧唧不答应,只好跟主管请示。主管倒是爽快人,同意了。还让我俩在学校里能多介绍一些优秀的同学,欢迎介绍他们来咱们公司。

买了·四个油馍馍,白菜没了只能炒馍馍了,妈的炒了不如不炒。又煮了两袋面,好歹搞定今晚的晚饭了。

吃完饭才九点半左右,边刷着视频边锻炼身体,十一点多就有点困了。

对了,下班前还让天悦帮我跑了一次乐跑,这学期第一次乐跑,真的非常感谢他。

2024/04/19

今天是个好日子,因为今天周五了。

晚上吃了最后一袋方便面,明天打算吃小火锅了。

2024/04/20

上午去买小火锅蛋蛋,结果找遍了附近好几个大商场,都没有卖的,倒是买了一些好吃的,罐头干脆面果丹皮啥的。

下午看了俩集行尸走肉,贝丝死掉了。

收拾收拾东西,打扫打扫,有时间就多看看书,学习学习吧。

还跟兄弟玩了一个多小时我的世界,还是熟悉的感觉,还是熟悉的味道,就是我这边有点延迟。跟去年的问题一模一样。

下午六点半出门,取了圆通韵达申通各一个快递。奶奶的申通快递找了一周,就那个街口我竟然找不到。今天中午在那里附近转悠了好几圈,对比着高德上的店铺图片认真看,愣是没发现那个申通快递。下午又问了一位大哥,他说从这边出门左转右手边就是。终于找到了,把我心爱的臂力棒取回来了。

下午主要是去买蔬菜和火锅配料,今晚吃顿好的。我家楼底下的那家超市竟然卖火锅配料,亏我去别的便利店逛了一中午没找着。好了,买了十二块的火锅蛋蛋,十一块钱的蔬菜,还有饺子。再加上今天早上买的火锅底料,今晚可以吃一顿小火锅了。

周报搞定啦,写起来真轻松。

睡觉前边学习边锻炼身体,看了看 Git 相关内容,很久不看都忘记了。

明天也可以再优化优化个人博客,毕竟现在看的人挺多了,嘻嘻嘻。

2024/04/21

早上七点半醒来,多眯了一小会儿,又睡到快八点才醒来。

看到昨天晚上吃过的小火锅,满屋子一片狼藉,只好是简单收拾了一会儿。

早上醒来当然是先放松一会儿了!刷刷视频,看看书,上午过的很是惬意。看了俩集行尸走肉,主角团交代得差不多了,第一次看见他们这么疲惫。

不过我还是像以前一样,很清晰地能盘点出现阶段的目标和计划。我昨天出去买菜买吃的,已经算是体验生活了。在周末我实在不想出去的,两顿饭就都在家里解决吧。九点多把昨天剩下的火锅丸子吃完,还有七块钱买来的饺子和山药,那饺子真不能放,才一个晚上就化掉了。吃饱喝足就把锅碗洗掉了,找了点时间学学专业课知识,看看星球里有什么好看的。

突然刷到鱼皮的B站视频了,又听了一遍RPC远程调用框架的开发思路,我决心要从今天开始回归正常的学习状态,或者说是巅峰状态了。中午看到微信公众号里写的文章,说的真好:

所谓自律,就是去对抗那些廉价的快乐

“廉价的快乐是直接给你想要的东西,高等的快乐则会给你设置重重阻碍。”

所谓自律,就是去对抗那些廉价的快乐,追求更有价值的生活。

毁掉我们的不是我们所憎恨的东西,恰恰是我们所热爱的东西。

别让自己的生活沦为低级快乐的牺牲品,因为你还有更精彩的人生,值得去追求。

向下放纵的快乐不是快乐,向上努力,向上行走,让你感到人性尊严的快乐,才是真正的快乐。

向下放纵的快乐不是快乐,向上努力,向上行走,让你感到人性尊严的快乐,才是真正的快乐。

很有感触,我决心要做回以前的自己。

中午一点多,把主管上周交代的任务完成了下,好好巩固学习了下金蝶苍穹初级开发相关课程知识。本来打算详细地整理下习题的,结果发现没有对课程脉络有清晰的把握,看那些习题就是看天书。只好是把课程过了一遍,再慢慢整理习题吧。

下午三点半,我把整理结果文档发到了单位群里,还是挺有成就感的。然后就刷了会儿视频,突然想起来还没练习形意拳呢,五点多的时候,总算找了几个形意拳教学视频,跟着练了练,基本能应付期末考试了。

下午还看到了一片好文章,说闲下来的时候做这十五件事很有意义,我觉得很有道理的:

亲近自然阅读一本好书运动释放压力创作美食佳肴陪伴家人朋友记录生活点滴尝试新的爱好洗个舒爽澡打理居家环境练习冥想放松创作手工艺品学习新知技能练习呼吸放松沉醉音乐韵味日记倾诉心事

这简简单单的十五件小事,需要我用将来漫长的生活去践行体味。

我还是很喜欢锻炼身体的,臂力棒、哑铃、收腹。

晚上把早上吃剩下的土豆炒的吃了,就着俩面饼,真是一顿美味佳肴。就是锅太难收拾了,睡觉前都收拾好。

好了,这就是我今天的故事了,现在正趴在床上记录下这一刻,待会儿就去收拾。今晚早点睡,明天早起一小时,给自己留足一小时的空闲时间。

2024/04/22

上午基本没有啥新任务,本周工作计划已经收到了。

早上要困死了。从昨天开始想着要持续学习算法了,上午就一直在看之前学过的算法网站。可是我实在是太困了,看会儿极客时间技术文章也拯救不了我。眼睛都睁不开了,昨天晚上睡得也挺早的,今早上七点多才完全清醒的,为什么就这么困呢。

[13 套接字Socket:Talk is cheap, show me the code (lianglianglee.com)](https://learn.lianglianglee.com/专栏/趣谈网络协议/13 套接字Socket:Talk is cheap, show me the code.md)

公众号注册提示“邮箱已被占用” (qq.com)

奶奶的,中午这是吃错药了吧。一点半眯了一会儿,睁开眼发现流鼻血了,蹭的眼前的手臂上一团血红。不过流量不是很大,也没有人看见,我拿卫生纸简单擦了擦,又去卫生间洗了把脸就没啥大碍了。

在业余时间,我最感兴趣的两个领域是:智能 AI 和 微信公众平台

动手做个 AI 机器人,帮我回消息!_牛客网 (nowcoder.com)

Java 处理表格,真的很爽!_牛客网 (nowcoder.com)

控制台-讯飞开放平台 (xfyun.cn)

下午:

  • 尝试开通微信公众号,学习了解微信公众平台和小程序开发
  • 智能对话机器人,微信智能 AI 机器人,使用讯飞星火语言大模型 token 实现

彼岸壁纸 高清电脑桌面壁纸图片大全 手机壁纸 彼岸桌面壁纸 (netbian.com)

单位还是比较适合学一些记忆性强的东西,要不然写代码的话很受影响的。

把半年前学过的小程序开发相关流程都过了一遍,微信公众平台还是有搞头的,今晚创个微信公众号玩玩。

快下班了,还得做做工作汇报,心乱的学不进去。俺要早点下班,早点下班呢!

汇报完啦!回家回家,今天要争取早点下班。

今天树宙不在单位,明天大半天估计还得出去,下午才能回来。看得出来主管是在认真培养他,啥脏活累活都撇给他。算咯,树宙明天还要我帮他签个到,只好是帮帮忙。今晚读读书运动运动,就看明天给我指派什么任务了。

吃饭前刷了会儿B站高质量视频,云晨电影解说的是真好,还有个UP主食品质量很高,都是艺术品。

这周周三体育课要考试,估计上午又得请假回去一趟。周四软件质量测验有小组作业了,看来得提前看下了。

今晚我创建了自己的第一个公众号:旧梦轻拾,在未来漫漫人生路中,我的阅读生活总算开始了。

2024/04/23

时间过得飞快,眨眼间我来单位上班已经足足一个月了。一个月前的今天,也就是三月十九号,周二,我第一天来到公司上班。

今天我来的挺早,办公室都没几个人。趁着这个机会能拍两张工位的照片,哈哈哈,一个月前就想拍了一直没啥机会的。

今天早上又被主管拉去做苦力活了,帮忙抬了两个柜子。这俩柜子里面放的都是啤酒饮料,又是要让领导们好好享受一番了。

今日待完成:

  • 软件部-项目完工会文档。
  • 拉取跑通后端培训框架代码,试着生成一个模块增删改查简单熟悉开发流程。
  • 今天是世界读书日呢,中午和晚上都要坚持阅读。
  • 今日算法巩固练习。
  • 今天的思想感悟写了两条了,回忆录还需要写一写。
  • 微信公众平台学习了解。
  • 个人博客网站优化
  • 晚上回去看看软件测验那课怎么搞,还有明天的形意拳体育课。

中午吃饭,又是我一个人。身边没有同龄人的感觉不太好,呵呵呵呵。

这两天中午午休吃错药了吧,昨天流鼻血,今天流口水。妈的。

别人都是在朋友圈记录生活,发给别人看;我喜欢在个人博客上写日记,写给自己品。

下午进行了最后一场新入职员工培训,明天就开始考试了,这项工作总算要完成了。

这算法学起来真难受,明明有些题目都已经亲手写过有十几遍了,现在就是一脸懵写不出来。

今晚回去就不买什么别的东西了,昨天买的大米和片子就已经足够满足近几个月的伙食了。晚上还是最好不要摊开做饭,可以考虑边做边收拾,毕竟我收拾起来还是比较快的。

晚上睡觉前最好不要一直看手机电脑,可以适当做运动和打扫卫生来调节下大脑,要不然一觉睡起来就头疼的不行。

企业微信接收的文件都在这个目录下呢。

image-20240424140941060

下班回来很早,才六点四十多。在菜市场和超市晃荡了一会儿,买了两袋火鸡面和十来个老婆饼,今晚的晚饭就有了着落。

锻炼身体,练形意拳,边看鸟憨读书会边运动,这感觉真的很奇妙。

时间过得太慢了,但是一看行尸走肉就不这么觉得。才看了一集,很快就到晚上十点了。

我也会间歇性地感到迷茫和无所适从,至少在现阶段,我还是不太满意自己的成长。

突然莫名就高兴起来了,我这不是挺优秀的么。回想起一个多月前我找实习的状态,那会儿就是面向面经学习,答得很漂亮。现在也不例外了,从明天开始,除了完成上班交付的任务,每天都要按时打卡学习算法,记忆面试题,学习开发规范,提升编程能力。从这周周末,或者更靠前一点的时间里,我希望能开展下一个个人项目的开发学习。

时不我待啊,今晚抓紧时间享受享受。

2024/04/24

昨天上床以后又贪玩,刷了几个小视频,十二点十分才躺下。

定了三四个闹钟,六点半一个,七点一个,七点半一个。今天早上请假不上班,我得赶回学校去上体育课。那我就不想早起了,赖床赖到快八点才坐起来。

九点四十分到了校门口,进了校门先把好兄弟上上周买的饼干取了,然后直奔餐厅。

十点多上体育课,这堂课倒是很轻松,跑步做操完了之后就能直接考试了。排了那么一个长队,不过我很快就考完了。排队过程中还跟小杨同学聊了会儿,加了微信。那老师说我脚步有些问题,那当然了,我在家就练了两天,这样应付过去就算可以了。

跟三个舍友想跟上吃了饭,请小常喝了一杯饮料。临走时又把饭卡给他了,卡里有三十来块钱,有需要就让他刷我卡买水去。我的乐跑可全靠他呢,做人做事我是有分寸的,是我的好朋友啊。

刚考完试就跑掉了,吃完饭才十一点半。也没去宿舍拿点东西,今天就不回家了,出校门坐公交直接去单位上班。奶奶的,刚上车就感觉一股闷热,我开个窗户没凉快两分钟就被后座的同学一把粗暴地关了。这么热的天开个窗户吹吹风多好,这也不是电风扇吹出来的死风,我不理解这都受不了吗。剩下的半个多小时就把我闷坏了,头昏脑胀也没咋休息好

中午十二点五十来到单位楼下,看下今天早上的工作安排,写写日记。

可以了,这学期的体育课算告一段落了。下周劳动节当天是周三,之后调休也不会调周三的课吧,那就只有半个月后的最后一节体育课了。那堂课我实在不想去了,我可不想再请假误我半天工钱。到时候乐跑成绩也估计满分了,再加上跳远、形意拳和平时成绩,肯定不会给我挂掉的。

今晚回去不能贪玩了,赶紧做一套PPT出来,看明天下午能不能在课堂上交差。

华为认证考试报名费多少钱-百科狐 (baikefox.com)

下午新人培训组织考试,简简单单肯定过了。

汇报工作,下班!

晚上有精力粗略过一遍算法题和面试题吗?

今晚就不看算法了,这东西还得是在白天最好是早上才能看得懂。今晚就看看代码,找找以前的感觉,这周末开始就要学习新项目了。再学几页面经找找感觉。最后看一会儿报童专栏和技术文章,写写博客总结一番。估计十点半就能结束了。

详解JAVA中的@ApiModel和@ApiModelProperty注解-CSDN博客

完整地过了一遍 common 包下的代码,很过瘾。

2024/04/25

昨晚没睡好,做了一晚上噩梦。辗转反侧了好多次,醒了又睡睡了又醒。

梦到我杀人了,用巧妙的手段杀害了一家几口人。有用快刀抹脖子的,有用麻绳勒窒息的,还有有刨大坑活埋的。我犯下的累累罪行搞得整个社会鸡犬不宁,外头吃饭的时候还能看到有刑警到处盘问。有一天我身边两个要好的朋友也被叫去接受调查了,我快要慌死了。想着要不然直接自首吧,但我身上背了好几条人命,这一去可就回不来了。我摇摆不定还是决定继续隐瞒下去,完全不知道该怎么办……

早上六点半被闹钟吵醒后,我还惊魂未定,总算没事了。

七点多爬起来刷了会儿星球,决心这周末开始学习新项目了,好好巩固相关技术的使用。

好困啊,不就是睡前看了会儿视频嘛。以后睡觉前至少半小时不能看手机看电脑了,不然早上上班太困了根本没精神。

中午吃了一碗西红柿鸡蛋面,要了一碗面汤,吃饱啦。顺便还顺走了店家的几个大蒜,拿回去今晚炒个好菜。

工位上看了一会儿订阅号,刷到意林的视频号在直播卖书。我想起来这类杂志好像连载了几十年了吧,像青年文摘、意林、读者、科幻世界这些。我决心订阅今年全年的《读者》了,24本,算上优惠券平均每本书不到八块钱,足够了。

昨天是世界读书日,今天就是我的读书启蒙日。

算法应该怎么学呢?先过牛客的习题,再对应学习算法网站的算法吧,一口可吃不成个胖子。

脚步丈量不到的地方,文字可以;无法经历的人生,书籍带你相遇。

下午考试,自己出的卷子自己部门考试,那当然是满分一百分。

下午小成还打算叫我回学校去给他评积极分子,可我实在没精力也没时间赶回去了。

晚上回来吃一顿小火锅,分别在菜市场和超市买了火锅丸子和蔬菜。起锅烧水添菜上调料,吃了满满三小锅。

晚上又跟树宙、小穆聊了会儿天,分享了下我的阅读进展,今年一到四月份的杂志期刊《读者》过两天就能回来了。

今晚继续抽时间过了下代码,明天再学学 Nacos、微服务治理相关内容,为接下来的项目开发做准备。

晚上回来学习的劲头还是不足的,最好把较难的工作留到白天做,这样一天都是充实的。

无意中翻出了今年过年那会儿收到的过去的信,当时实在没有勇气认真读过一遍,现在再看时已是往事云烟,内心的酸楚夹杂着喜悦和释然,一言难尽。

image-20240425232830778

image-20240425232847669

2024/04/26

上班!上班!

今天早上破天荒没有定六点半的闹钟,我知道我肯定起不来,只会白白打搅我的好梦。七点的闹钟被我一把关掉了,挨到快七点半才醒来。昨天半夜一点五十被惊醒了,原因竟然是我做梦感觉头皮瘙痒,不自觉开始挠。这一挠就把我挠醒了,醒了还在挠。

喝了点水又躺下了。

早上起来先热热水洗了洗漱,然后就直接收拾好去上班了。

早上来的挺早,打扫卫生。

Dynamic Naming and Configuration Service(动态命名和配置服务),NacosNacos简介(一)-CSDN博客

Nacos:服务注册与发现(四)-CSDN博客

Nacos命名空间、分组、DataID三者关系 - 简书 (jianshu.com)

一文看懂Nacos如何实现高效、动态的配置中心管理_nacos 动态配置-CSDN博客

img

花了半个多小时,把公司软著各项目新增软件操作说明文档工作完成,并上传svn。

中午跑下去吃了午饭,很快啊,十二点半左右就吃完回来了。看了会儿有趣的漫画和阅读,困了困了。

下午计划:学习 Nacos 和微服务治理方案,学习算法,看闻喜后端代码,金蝶初级考试。

一文看懂Nacos如何实现高效、动态的配置中心管理_nacos 动态配置-CSDN博客

了解了下软考中级证书有什么用处,其实去年考之前就广泛地考量过了,不过现在发现这证书很有用处。

Spring常用注解(绝对经典)_@schema-CSDN博客

[05 认识 Spring Cloud 与 Spring Cloud Alibaba 项目 (lianglianglee.com)](https://learn.lianglianglee.com/专栏/SpringCloud微服务实战(完)/05 认识 Spring Cloud 与 Spring Cloud Alibaba 项目.md)

我发现最近在单位的学习规划很不适合我。我一直认为不管做什么事都一定要讲究劳逸结合,没有适当的奖励机制是很难达到心流状态的。这样会导致投入学习的积极性不高,只会是反而白白消耗了时间和精力。

下班前听张总讲了一个半小时,讲得很接地气,很喜欢这个领导。

走的时候还不会开办公室的门了。奶奶的,不就是外面刮风嘛,还把门给锁了。找一位领导问了下才明白是在进门右手方向的按钮处,按一下就行了。

晚上回来买了一些火锅丸子,炒了个小菜,闷了大米。满满一小锅呢,明天中午的饭菜有着落了。

舍不得睡觉,睡前洗了锅碗又看了会儿书。热了一锅水,泡了一杯奶粉。差不多一点半左右才恋恋不舍地躺下,我可真能熬。

2024/04/27

昨晚睡得很晚,今天早上却醒的挺早,七点四十左右就自然醒了。

起来看书,做运动,追剧。这惬意的周末呵,果然只有周末能让我心情愉悦。

今天得好好洗个澡,收拾收拾家里。现在是关键阶段,昨晚计划好的学习任务被搁置了,今天下午要好好安排一下。

我计划在实习阶段后期,新增一篇博文,专门记录这段实习的感悟。把它当作今年下半年找工作的敲门砖。

我要开始为下半年秋招做准备了,一个多月来我终于下定决心。

目前的计划很清晰:算法,项目,八股,理论基础。我必须要全面平衡好实习,工作还有学校的琐事,在七月份到来之前全面武装自己。

我已经做好了充足的准备,那么,就先炒一盘美味的饭菜吧!

吃饱啦,打扫卫生,终于可以坐下来清净一会儿了。

都打算学习了,推送了下博文,顺便锻炼了一会儿。结果看见 gitee page 服务出问题了,不能更新网站。我还手贱把博客网站停掉了。

image-20240427193502210

突然想起来上周日看金蝶苍穹备考资料的时候,电脑突然蓝屏的事情了。当时我正在写 Word 文档,电脑突然卡死并发出刺耳的持续不断的“滋滋”声,没过几秒就蓝屏了。这种蓝屏我见过,上次是在大一那会儿的宿舍里。那个阶段经常不定时任务栏卡死和蓝屏,隔个几周就来一次,后来就再也没有出现过了。

下午六点半多,突然下起大雨,打雷刮风的,阵势还挺吓人。天突然就黑了,那会儿我还在床上打王者人机呢。

晚上七点半出去取了俩快递,妈妈给买的罐头和细挂面。加上上周我买的大米、片子和妈妈买的粗挂面,呆家里不出去都能吃半年了。

看行尸走肉,从昨天下午到今天晚上,追了一共八集,我看的真快嘿嘿嘿。

那么今天晚上就早点睡觉吧,大概是十一点半左右,至少要在十二点之前躺下的。想起来我之前买过的那些专业课教材还有拓展读物了,我计划五一找个时间回学校一趟,把那些有用的书统统带回家来。

周末确实是有点无聊的,我想着能不能出去买点酒水和花生米,呵呵呵,试一试烂醉的夜间生活。

2024/04/28

早睡就是好,早上起来都不困的。赖床上七点半多才起来,刷了牙。

我自己也掉进这种陷阱里了,周末的时候老想着应该多做些什么,玩得都不痛快。等到周末一过要开始上班了,早上坐起来睡眼朦胧地看着自己的床铺,心里想着这要是周末该多好。

写作还真的得看有没有思路,想写的时候水到渠成,写的时候也感觉浑然天成没有丝毫拖泥带水。这股劲头转瞬即逝,半小时之后就集中不了精神了。

数据结构—–堆(完全二叉树)_完全二叉树难点-CSDN博客

数据结构—–树和二叉树必知必会知识-CSDN博客

看了一个小时算法博文,看迷糊了。

7000字详解 动态代理(JDK动态代理 CGLIB动态代理)与静态代理_jdk17代理-CSDN博客

又刷了一会儿星球。

我算是发现了,犯困打瞌睡跟晚上多会儿睡觉没啥关系。我周末一点半躺下,七点半醒来不照样精神抖擞一整天,甚至没有午休。可我看书玩手机看电脑一天都没觉得累,最多感觉闲着无聊罢了。这坐工位一上午,看个文档写个博客都困得头昏脑胀、两眼冒金星.。

诶为啥会这样呢,以前没觉着自己有这么困,或者说上班也没这么困过。仔细想了一会儿,发现了可能的原因:没人跟我讲话。是啊,这两天树宙不在单位,身边除了小组组长和主管偶尔过来问一下工作情况,基本就没有跟同事们聊聊天。一方面我跟他们的工作任务没有交集,在工作方面自然谈不上交流;另一方面确实是年龄有差距,除了树宙跟我年龄相仿外,大家都是二十大几三十的人,很多甚至都已经成家了。

算了,不想这些了。中午吃顿饭回来再问问海红有啥新的工作安排,没事做确实清闲,却有时候也感觉闲得慌。

看了一眼 Gitee Page 服务,今天还是不能正常开启。我昨天脑子一抽还给停掉服务了,现在不知道是什么原因。是官方的整改吗?还是我的博客有违规行为呢?不管怎么说应该有渠道反映这些问题的,我再去了解了解吧。

image-20240428142236746

去年暑假回家之后最后一次配置过微信机器人,当时就想到近段时间不会再玩这个。没想到时间一晃而过,九个月的时光就这样过去了。

每一个回忆都是一颗璀璨的珍珠,让我们一起走进那些尘封的记忆,寻觅那段被时光轻抚的纯真岁月,重温那些温馨而动人的瞬间。让童年的记忆,永远闪耀在心间。

我正在打造自己的微信公众号,但我认为,内容和可被接受并认可的价值才是一个公众平台的意义所在。我的公众号的对外输出的内容可以是什么呢?

  • 图文结合:我想分享我的童年生活,在枯燥的当下捡起那些记忆碎片,回忆幼时无忧无虑的欢乐时光。
  • 壁纸分享:分享五张治愈系壁纸,可在微信公众号下方回复“治愈”领取。
  • 网站推荐:推荐我喜欢的一些网站,介绍我的使用心得。

DevOps是什么?DevOps能够给我们带来什么?-CSDN博客

下班回来,买了二十块钱的鸡蛋,回去炒菜闷大米。

今天晚上举哑铃挺卖力的,两手臂充血有劲了。尝试发表了第一篇公众号内容,虽然仅仅是六张壁纸。

行尸走肉第九集太令人激动了,拍的太好,主角团一晚上砍死了山谷里涌进来的一半多的行尸。

2024/04/29

今天玩玩微信的智能对话平台机器人功能。

我很清楚自己现在处于什么状态,也很明确自己的处境。我难道已经忘记了去年是怎么准备软考的么,从七月初开始了解,七月底搜集资料。八月整理,九月报名开始备考,十月冲刺,十一月满怀信心走进考场,十二月出分得偿所愿。

上个月的计算机四级考试和蓝桥杯不是个笑话么,光在心里给加油了,真正落到实处的有多少?开始开始,开学到现在已经是劳动节了,为什么还有两个多月就是这么懈怠呢?想要一直保持这种状态直到年底?开始了。

跟树宙聊了聊,他的 Gitee Pages 服务也挂掉了,看来不是我的个人问题。

gitee 如何配置公钥_gitee配置公钥-CSDN博客

微服务实战:

1
本篇带你结合 Scrum 敏捷思想进行产品需求的分析,由 PO 人员整理用户故事、核心业务流程,由开发人员认领故事,分解故事为具体任务,并预估工作量,录入敏捷辅助工具中,为期开发人员介入作好准备工作。

使用OpenFeign实现微服务间的接口调用_openfeign跨服务调用-CSDN博客

使用 OpenFeign 实现跨服务的调用_openfeign实现服务与服务之间相互调用-CSDN博客

Spring Cloud Feign 中使用Hystrix进行请求降级和快速失败_hystrix 请求db快速失败怎么配置-CSDN博客

Spring Cloud Feign 中使用Hystrix进行请求降级和快速失败_hystrix 请求db快速失败怎么配置-CSDN博客

NACOS动态配置 - 小破孩楼主 - 博客园 (cnblogs.com)

Nacos最为配置中心,实现动态配置_nacos动态配置-CSDN博客

Quartz(任务调度框架)_quartz框架-CSDN博客

想着巩固学习一下 Cron 表达式在线调试网站的,这里怎么不显示了呢:

image-20240429115351397

OSCHINA - 中文开源技术交流社区

近段时间的兴趣方向:

  • 微信智能机器人,自定义对话配置,尝试学习接入讯飞星火语言大模型。
  • 微信公众号文章配置

一下午不是帮忙搬东西就是签字,白白消耗了我两个半小时的时间。

下班后买了一些火锅丸子,今晚吃的很简单,挂面加火锅。看了俩集行尸走肉。

今天的臂力棒尝试40千克,感觉已经没有压力了。洗个热水澡,又是一天好心情。

想着玩一些治愈类游戏来着,记得大一那会儿玩过胡桃日记,挺有意思的一个养成游戏,刚发现去年二月份就下架停服了。

猫咪和汤,前两年玩过国际服,最近国内服公测了,好玩的呢,偶尔休闲也不错。

2024/04/30

今天早上醒的挺早,七点十分就跳起来了。

醒来发了会儿呆,简单收拾下床铺又拖了地。看了两篇文章,实在头疼的不行就立马打住,去窗边吹着风眺望了一会儿远方。

今天早上树宙来晚了,刚走到公司楼下就遇见他了。

我在思考,我写公众号是为了什么呢。首先当然是兴趣了,我喜欢把自己的故事讲给自己听。如果尝试长期运营公众号,可能会带给我些许收益,这个过程会很漫长,也许会不成功。那输出内容是什么呢?我刚逛完那些生成公众号模板的网站,从模板选择到文章样式,都能一键生成都不需要自己动手。

也许我可以尝试这么干,但这不是违背我初心么。等等,我的初心是什么,把自己的故事写给别人看?没意义的,我只想写给自己看。那么,就开始坚持每天日更吧,这才是最重要的。内容就随心所欲,写的开心就行。

新浪邮箱 (sina.com.cn)

哎,新浪微博邮箱怎么开不了。微软邮箱也可以申请,就是网速有点慢。

搜狐邮箱官网(mail.sohu.com)-官方网站 (igfwz.com)

十点多跟主管和俩同事提前去了体育馆,布置赛场。

十二点半回来去顺溜吃饭,搜刮了好多小零食和茶水。两点多去了体育馆,进行春季运动会开幕式。

玩了三个多小时,五点半结束,每个人都发了小礼品。到六点多走回来,单位上处理最后一点事情,就能直接放假过五一了。

下班下班,不陪他们玩了。

晚上买了蔬菜和一捆面条,总算知道在哪里买面条了。卖面条那里直走出去往右拐,就能看见有卖火锅料的店铺肉卷啥的也有。

晚上连追四集行尸走肉,看到大结局了。

睡觉前整理了下过年的图片和视频,那些过去的家的回忆,两个月前就打算这么做了。

2024/05/01

我是谁?

分布式定时任务锁SchedulerLock的使用 (qq.com)

@SchedulerLock详解-CSDN博客

分布式定时器的一些解决方案 - oKong_趔趄的猿 - 博客园 (cnblogs.com)

RabbitMQ 消息队列_rabbitmq消息队列-CSDN博客

消息队列——RabbitMq_rabbitmq发送消息-CSDN博客

吐血总结——消息队列之RocketMQ知识梳理_12856610的技术博客_51CTO博客

RocketMQ分布式消息队列(最详细)_rocketmq 如何动态增加topic的队列数-CSDN博客

RocketMQ的一万字全面总结,带你快速入门消息队列_mq消息队列-CSDN博客

网关 GateWay 的使用详解、路由、过滤器、跨域配置!_gateway配置-CSDN博客

网关-Gateway - 知乎 (zhihu.com)

今天晚上训练下AI语言大模型,明天就尝试做AI绘画了。

晚上出去买了羊肉卷和九块钱的火锅丸子,今晚吃火锅。加上前两天的蔬菜,从八点半吃到了十点,美味。

十一点多邀请我兄弟注册那个商汤AI绘画平台了,三天无限绘画卡。

咋睡觉前就喜欢刷短视频呢,快一点了才恋恋不舍地躺下。

2024/05/02

这几天迷上了 AI 绘画,玩了好长时间了。

很好,过了一遍三月份的面经总结。

现在还不到十二点,感觉时间过得真慢呢。

image-20240502153038683

输出五篇公众号图文,都是上古神兽画作。

诗词绘画。

下午躺着刷了会儿B站,不知不觉间就天黑了。

五月二号,我的新项目还没启动。时间不允许我再继续等下去了。三月下旬我来到这里,不是为了吃喝玩乐的,我是要把现在的一切都当作垫脚石,一步步往上爬的。

实习至少四个月,或者说在我全力冲刺备战校招时,我不希望实习期间被打扰太多。

那么我现在准备好了么,他妈的当然准备好了。

今晚起来判题系统项目,学习消息队列。

《Redis实战篇》五、分布式锁-redission-CSDN博客

linux,服务器,mysql数据库,tomcat这些之间是什么关系?_百度知道 (baidu.com)

监控 Spring Cloud 微服务的实践方案-51CTO.COM

微服务 Spring Cloud 10,如何追踪微服务调用?服务治理的常见手段_在网状的调用链路中如何发现某个微服务存在问题-CSDN博客

Maven详解(入门到精通)学习maven有这个就够了-CSDN博客

晚上把剩下的蔬菜和羊肉都炒了,还炒了三个鸡蛋。又吃了一顿大米,这菜还是就着大米吃才香。

下午七点多到现在,左耳根一直隐隐作痛,老难受了。

躺下来惬意地听歌,脑袋里什么都不需要考虑,真想时间永远停留在这一刻。

2024/05/03

早上醒来,先打扫

然后就是看剧,看剧,看剧。。。看到中午一点都没吃饭呢。

下楼取快递,买点蔬菜回来。

AI 绘画真方便,感觉选个更合适的赛道能容易些。

[Java 业务开发常见错误 100 例 (lianglianglee.com)](https://learn.lianglianglee.com/专栏/Java 业务开发常见错误 100 例)

Spring编程常见错误50例 (lianglianglee.com)

从0开始学大数据 (lianglianglee.com)

在历史前进的逻辑中前进,在时代发展的潮流中发展

使用hexo+github搭建个人博客_github hexo博客-CSDN博客

在github上部署静态页面_github部署静态网页-CSDN博客

image-20240503210344850

image-20240503210428731

GitHub 部署个人博客失败了呢,多试试。

晚上又煮的吃了一捆挂面,加上之前剩下的方便面调料和蔬菜,满满的一小锅,吃的饱饱的。

2024/05/04

快九点醒来,看剧,经营公众号,备战秋招

秋招:学校背景,学历要求;招聘时间,八月下旬开始,十月初就会结束;算法核心,五个体型(排序,链表,字符串,动态规划,智力/大数据);少写微服务,小心被问穿。

今天把单位代码拉下来跑跑,列一个算法学习清单。

吃火锅,休息。

发现前天快手发的作品破两千观看量了,这么奇怪嘛,今下午再尝试发点作品。

下午边看剧边画画,还买了一盒彩色铅笔。小时候就梦想过能有一盒自己的彩笔。

边洗着锅碗,边唱秧歌,自在又好玩。

下载了英雄联盟,把玩了四五把人机,挺好玩。

今晚开始学习新项目,第一期基本看完,明天尝试手动实现。每天看看星球里的知识碎片也不错。

晚上睡觉前还看了功夫熊猫系列,百看不厌。

2024/05/05

躺着刷了半小时手机,真不赖。

人的本质就是懒。

连我这样的人,一旦没有啥约束,也是一样沉浸在低级趣味里无法自拔。

但是现在还没有结束,没有抵达终点。我又不是傻子,怎么能在这种关键时候自由散漫呢。

实习一个多月以来,还有半个月不到就俩月了。我不得不承认,这一个多月是我上大学以来最放松最自在的时光。没有任何约束,下班回到家想玩就玩,想学就学。不过很显然我下班回家后基本没有学习。

这个问题很严峻,五月五号了,应该想明白这个问题了。旅途还未抵达终点,特么的好日子快来了,我的目标却模糊了。

不应该是这样的。我以前学习编程,全凭兴趣。现在开始实习后,越发觉得这只是工作要求,没有更多动力去主动学习了。这种想法很危险很可怕,至少在现阶段,我没有资本选择生活。我必须要改变这种思维。

首先第一步不是制定什么该死的计划,今天要干嘛明天要干嘛,而是想清楚自己到底要做什么。就在现阶段,就在当下,就在短期内,我他妈要做什么。

二月份开学,我每天过得是什么日子?宿舍不能待了,只要我学习就会有人来恶心我,搞得我也没心思学下去。我干什么了?我早上七点多起床,背上电脑手机平板直接去食堂。刚开始还中午回去一趟,因为电量损耗太快了。后来买了充电宝,就不再需要回宿舍看那些家伙的嘴脸。我二月底开始写简历,当然这从寒假就已经在准备了。八股文,算法,项目,我一直都在准备,从去年九月份开始就一直在系统学习。

到了三月初,我疯狂地投递简历。每天盼着BOSS平台上有没有人回复我。我每天早上七点起来,提前打点好没人的教室,开始学习,直到晚上十一点回去。我买了桌椅,买了电话卡,买了充电宝,就是为了能自己一个人学习不被打扰。我拿到了面试邀请,我通过了,我来实习了。

第一周简直是折磨,人生地不熟的,工作还让我有些费心。最恶心的是来回通勤需要三个多小时。每天早上六点起来,赶着快七点的公交去上班。晚上八点多才能回去,再边完成工作任务再消遣一会儿。

直到今天。我几乎忘记了这个学期刚刚过去了一半多,忘记了我是怎么一步步走到今天的。全他妈是我一个人争取来的。我永远不会忘记每天投简历找实习的我,每天下午吃饭时的无奈。我想要一份实习经历,不仅仅是因为实习有什么用。你看看我现在的实习,有什么用?唯一的用处就是提前适应工作生活,至于技术上的提升,我只能说这跟那半毛钱关系没有。

现在,特么的我要让两个月前的我的努力白费掉吗?我要让努力了两年多的我看到最后的结果是这样的吗?诚然这样生活很自由,很爽快,但我不喜欢,发自内心的不喜欢。那种没有一技之长能独善其身的感觉,那种想变好却无所作为的感觉,我不想忍受了。

说这些不是为了给自己打打鸡血,就是想提醒自己想要什么。走了这么长时间的路,总不能忘记了自己是为什么出发。明确了这点,我觉得也没什么问题了,特么的就没什么问题了。

继续学习新项目,下午从五点多搞到快七点,总算明确了前端框架模板的构造了。

晚上炒菜,把剩下的白菜叶子都吃了。大米炒鸡蛋,还剩半碗吃不下了。

行尸走肉今晚上看不了大结局了,还有俩集,留着明天看。

感觉公众号不太好搞,好像是我这条赛道不合适的缘故。AI 绘画虽然简单,我也很喜欢这样玩,但也仅仅是喜欢玩而已。我最了解自己,知道喜欢什么和不喜欢什么。现在的赛道很难坚持下去,也鲜有人看这类东西。

晚上刷订阅号,又感觉写作才是可能成功的关键。我必须捡起来,但AI写作会不会是2024年的风口呢?谁也不好说。

五一假期就要结束了,这是最后的一个半小时了。这五天来竟然没有记起完成下软件质量分析与测试的作业,管他呢,什么垃圾作业还想博得我的关注。

睡前打两把联盟,再写写故事,可以的话玩玩AI写作。

2024/05/06

早上六点四十醒来,实在不想起就定了个七点五分的闹钟,再睡一会儿。七点八分起来,快速把书包整理好,下床穿戴好衣服,上了厕所洗了漱。七点二十分躺下刷了会儿手机,看了回消息就到七点三十二分了。选一首自己喜欢的音乐,躺下来做了三组仰卧起坐。运动出汗能让我变得更加兴奋和自如,身体发热出汗让我感觉良好。七点四十五分穿好鞋子拿上钥匙,检查下还有没有遗漏的东西,整理仪表出门下楼。

结果还是忘记拿水杯了,在街口附近一家超市买了一瓶矿泉水。这一下把本来应该坐上的车都误了,七点五十八坐上公交车,五分钟zhi后八点零三,到达平阳路南中环接口。步行十分钟,八点十六分坐到工位上。

Algolia搜索引擎配置 - 知乎 (zhihu.com)

image-20240506093225377

Maven仓库介绍以及私服搭建 - yjry-th - 博客园 (cnblogs.com)

超级详细Maven私服搭建:Nexus - 知乎 (zhihu.com)

基于Nexus搭建Maven私服基础入门(上)-阿里云开发者社区 (aliyun.com)

基于Nexus搭建Maven私服基础入门(下)-阿里云开发者社区 (aliyun.com)

开发了一下午的电子名片,代码逻辑还是能读明白的。

赶在下班前最后一分钟,我提交了软著归档下每个项目都增加一份产品简介的需求,时间卡的死死的。真有我的,这就是时间管理大师。

现在是阴雨天,晚上回去取一些快递,刚看一眼手机发现有七个包裹未领取。最好能理个发,或者明天再说,今天写代码够累了。

妈的班群里又是什么消息,根本来不及看。一个讲座还要强制要求学生到场,这样的讲座意义何在,想听就听不想听拉倒呗,何必强人所难。

邮政快递是关门了还是咋的,今下午去了还是大门紧锁。好多快递都在呢。

中午没有像往常一样刷手机,看公众号,而是找了点时间看星球内容。这样中午的时间也利用起来了。

七点多才到家,外面下了一小会儿雨。买了一袋重庆小面,不过看着像火鸡面,拌着吃。买了一个火锅漏勺。

今天下午到晚上收到了两个好消息:我的好兄弟过了计算机二级,MS Office。小穆过了 Java 计算机二级。

晚上计划看完第二集项目,再优化下白天写过的代码,熟悉下业务流程。

了解了整个项目流程,我过年那会儿怎么没坚持看下来,那会儿忙着优化项目呢。

打了一把游戏洗个澡,晚上时间过的好快啊,又到十二点了。

2024/05/07

五月份第一周已经结束了。

早上六点半没有闹钟自己醒了一小会儿,又躺到七点多才起床。

听着音乐收拾了下橱柜,做了会儿运动又看了两篇文章。早上就应该这么过,晚上早点睡白天六点半醒来应该不会有太大问题。

上午脑袋清醒又灵光,应该做两道算法题打击打击自己。

理解前缀和与差分:高效计算数组前缀和与差分技巧_前缀和属于什么算法-CSDN博客

我正在逐步理解算法刷题思路,现在学过的算法,将来面试时很可能都用不到,毕竟中小厂不会在算法上做过多文章。

数组之前缀和_前缀和数组-CSDN博客

GitLab服务器搭建_搭建gitlab服务器-CSDN博客

想尝试搭建一个自己的代码托管平台和 Maven 私服

Gitlab 仓库搭建(详细版)_gitlab搭建-CSDN博客

Hexo 博客搭建并发布到云服务器 - 我如云影君如梦 - 博客园 (cnblogs.com)

看星球知识库,看到了鱼皮的打工日记。好精彩的生活,苦闷又充实。我也只是个普通人,过好每一天就可以了。

可能是最好的部署教程:安装Hexo博客并部署到GitHub或云服务器(细节教程,越过各种坑)-CSDN博客

我宣布,停止公众号图文赛道的尝试,开始使用AI写作频繁更新文章。

无语,每次用 Github 推送代码或文件,总是会不小心把本地文件覆盖掉。我的第一批公众号图文已经全部丢失了。

很好,今天下午计划有变,开始系统学习星球项目。

继续研究云服务器部署博客,但是为什么 Nginx 启动老失败呢。

宝塔面板的编译安装和极速安装如何选择?哪个好? - 很酷的站长 - 博客园 (cnblogs.com)

下班前被迫参加例会,早知道早点跑了,完走半个小时还又多待了一个小时。晚上回来就八点半了,吃了五个包子也不饿。边看剧边做运动,很快就到九点半。呐,已经十点了,今天家里很多活没干,好在单位学够了。

再学一会儿吧,待会儿打两把联盟,可以玩玩云顶之弈。

嘿嘿嘿,三年多没玩了,一把下来能攒三个三星,只可惜第三个三星约里克成型时,已经死掉了,倒数第三。

再玩一会儿就睡觉了,今晚不刷手机了,明天可得早点起。

2024/05/08

早上六点四十就能醒,我感觉这个效率很不错。晚上争取十一点五十能躺下,十二点多入睡,这样能争取早上六点半左右甚至更早能醒来。早上的时间是很宝贵的,看看书打扫房间也很不错。

每日工作日志,不需要写学习内容,只写工作内容;如果需要写学习内容,可以新添一条,不要同工作内容写在一块;工作总结。

Linux系统下Node.js的安装步骤_linux 安装node.js-CSDN博客

整理文档。

阿里云售后服务中心还给我打电话呢,是不是云服务器告警引起他们注意了。

哦,计算机四级网络工程师考试成绩查询,不及格。

中午一觉醒来,眼睛花的不行,喝口水,一个小时直接把今天的文档整理任务完结了。

莫名又花了将近一个小时,把大同智慧检务平台确实文档补齐了。

linux ubuntu的su: Authentication failure问题 & sudo passwd输入密码时,总是提示sorry,try again问题(笔记)_sudo输入密码显示对不起请重试-CSDN博客

今天下班回来挺早,还去菜市场买了十块八毛钱的菜。顺便提了十块钱五包的方便面,这周的伙食问题就算解决了。

太饿了,回来先煮了方便面青菜鸡蛋,边刷剧遍吃饭。刷起范马刃牙了,一年多没看了。

赶紧做实验报告。不逼自己一把,永远不知道自己有多大能耐。四十分钟写成两个黑盒白盒测试报告。

今日日志已提交,也反省了下自己的工作态度,希望以后能自觉平衡好完成工作任务和自我学习提升。

我是一个比较厌世的人。

晚上还有两件任务:博客部署尝试和文档整理。

ssh -T git@github kex_exchange_identification: Connection closed by remote host-CSDN博客

Github:通过sshkey的方式拉取代码报错kex_exchange_identification: Connection closed by remote-腾讯云开发者社区-腾讯云 (tencent.com)

Github备份代码出现kex_exchange_identification: Connection closed by remote host - 知乎 (zhihu.com)

image-20240508234230058

真停止提供服务了吗?

(50 条消息) 使用Gitee Pages部署静态网站后网站报错502怎么办? - 知乎 (zhihu.com)

Hexo博客怎么部署到云服务器(阿里云、华为云、腾讯云)——通用保姆级教程(持续更新)_阿里云 hexo-CSDN博客

2024/05/09

早上六点五十醒的,看会儿书玩会儿手机,晚上下班回来都来不及刷手机的。

昨天晚上尝试 Github 部署 Hexo 静态博客网站,网络原因没有推送成功,今天再试试。

哈哈哈哈哈,公众号图文回来了,原因是Github 仓库切换 main 分支了,原有图文已经上传至 master 分支。

[git push报错 ! remote rejected] master -> master (push declined due to email privacy restrictions)_51CTO博客_git push报错remote rejected


我的编程之旅:大学学习记录与成长经历
http://example.com/2023/06/03/我的编程之旅:大学学习记录与成长经历/
作者
Memory
发布于
2023年6月3日
更新于
2024年5月6日
许可协议