- 博客(219)
- 资源 (3)
- 收藏
- 关注
原创 重构:改善既有代码的设计(第二版)笔记总结
重构,第一个示例为何,以及如何提炼一个函数如何处理过长的函数A First Set of RefactoringsSplit PhaseEncapsulate Variablelet defaultOwner = { firstName: "Martin", lastName: "Fowler" };// after encapsulate variablelet defaultOwnerData = { firstName: "Martin", lastName: "Fowler"
2022-05-03 21:02:54 636
原创 Node.js 设计模式第三版总结
对书中的内容进行了总结,代码内容来自如下《Node.js Design Patterns Third Edition》对应中文版《Node.js 设计模式 第三版》
2022-04-27 13:34:36 1908
原创 记笔记格式 — markdown 语法
<font color=MediumSeaGreen size=3>color=MediumSpringGreen </font>color=MediumSpringGreen <font color=VioletRed size=3 >color=MediumSpringGreen </font>color=MediumSpringGre...
2020-03-01 21:01:35 1400
原创 按键按下,LED 点亮,但是,理论和现象不符
也就是说,按键断开,是低电平,走的是 HAL_GPIO_WritePin - GPIO_PIN_RESET。按键,在【浮空输入】的情况下:打个断点,debug 发现:每次 while 循环,【按键电平,不确定】(一会高、一会低)不知道为什么,好难受,突然不自信了,我学的东西难道都是错的?按键,在上拉情况下,PB12,按键松开时,【电平确定】,IDR 为 0x0000FFDB。后来,查看原理图,发现,PB12 是接地的,而我之前,接的是正极。并且,导致当前的问题的原因,是:按键输入,无效。
2024-08-14 20:39:19 441
原创 使用 CLion 进行 STM32Cube 开发
ioc 文件,存储了我们在 CubeMx 界面中的配置我们在 CubeIDE 中的配置(那些头文件、源文件,参与编译)👇:参与编译的,头文件的,路径Clion 中的 ioc 右击:update cmake project with stm32cubemx 后,CmakeLists.txt 会自动生成对应路径,在 CmakeList.txt如果在 IDE 中添加一个绝对路径,cmake 语法无法识别,导致 CmakeLists.txt 中报错。
2024-08-08 13:09:57 286
原创 STM32 GPIO 模块
复用推挽输出、复用推漏输出:就是 Alternate Function Output 那边的。“松开按钮” 和 “按下按钮” 的英文翻译分别是。
2024-08-07 13:30:22 949
原创 上手 Promethus - 开源监控、报警工具包
Prometheus 中的 Alerting(报警) 分为两部分1)Prometheus servers 中的 Alerting rules 将 alerts 发送给 Alertmanager2)之后,Alertmanager 管理这些 alertsalerts 包括:silencing, inhibition, aggregation以及通过 email, on-call notification systems(呼叫通知系统)和聊天平台等方式,发送通知。
2023-11-25 21:50:25 710
原创 二叉树的数学性质、最大堆的实现
(PS:x-1 层总节点个数 + 假设节点左侧具有的节点数 a)(PS:x 层总节点个数 + 假设节点左侧具有的节点数 2a)= 第 x - 1 层的所有节点数 + a。【假设节点】与 【左节点的下标】之间的关系。同理可得【假设节点】,【左节点的下标】第 x 层,【假设节点】的下标。
2023-06-09 01:09:29 461
原创 达成事务条件的实现原理
事务存在的意义:保证系统中的数据,都是符合预期的;相互关联的数据之间,不会产生矛盾## 达成事务的条件原子性:一个操作,要么同时成功、要么同时失败隔离性:各业务,读写相互独立持久性:所有成功提交的数据修改,能够被正确的持久化一致性:数据应该遵循某种约束条件ACID 中,AID 是手段(因),C 是目的(果)> aid:帮助,援助 ;记忆方式:通过 帮助,达到一致性(数据符合某种约束)
2023-05-05 23:33:05 760
原创 MySQL 页、页结构、页目录、索引
存储引擎是一种插件式架构,定义了数据如何被存储、管理、检索Innodb:支持事务MylSAM:不支持事务,但执行快速。
2023-05-05 17:18:55 1592
原创 测试时,可快速调用 Mapper 的 Mapper Generator
解决的问题:SpringBootTest 启动太慢实现方式:递归读取 xml 文件,解析其内部 namespace,add 到 configuration 中。
2023-05-01 15:49:42 911
原创 软件开发过程中,前期准备的重要性
需求人员,有时候,一开始,并不完全确定自己想要的是什么。因此,值得花费时间,找出他们真正想要的东西。因为,改动的代价,可能代价会是巨大的。构建之前清除一个错误的成本。来自于:《代码大全》第三章。
2023-04-29 00:11:37 902
原创 面向对象的好处
提到面向对象的好处,一些人脑中可能会冒出:封装继承多态封装封装:通过类,为数据和方法,提供统一的上下文但是,函数名,同样也可以提供上下文,并且可以通过一种叫柯里化的技巧,保存某些字段,从而实现类中成员变量的效果面向对象在封装中,没有体现出明显的优势 😔继承:其本质为复用,而通过函数,也可以实现复用 😔最后是多态:相同的接口,不同的行为使用方式在 Javascript 中,你同样可以将运算逻辑,存储到 map 中区别就在于:一个存储的是对象(类的实例),另一个存储的是函数。
2023-01-14 13:35:59 731
原创 Velocity 模板文件生成,基本使用
区别:如果存在 $name 和 $names,模板文件无法识别 $names,建议使用 ${names}${person.name} 等价于 ${person.getName()}在模板文件中,可以通过 $name 或 ${name} 来使用定义的变量。
2022-11-18 09:39:38 765
原创 抽象与面向对象
对概念的清晰定义,能够更好的理解概念所具备的共有属性,并与原有知识进行关联(知识之间往往具有很强的关联性)如果感觉自己的思路混乱,往往是因为对概念的理解只有一种大概的模糊性,尝试去提出问题,通过问题,将概念理清晰。
2022-11-11 14:48:17 435
原创 不断迭代的收银系统,工厂_策略_装饰器_反射
break;break;break;} }/*** 收银模式的接口/*** 具体的收银方法}} }} }} }
2022-11-09 11:09:40 322
原创 Java UML 类图
是一种“自顶向下”的设计:代码还未些,大致框架已规划好。弱拥有关系:宠物店可以有哈士奇,也可以没有。一个类,知道另一个类:警犬知道听从口令。得来,是一种“自底而上”的设计。耦合:修改一方,会影响另一方。应用:是否需要下“向上转型”行为的抽象、可跨越不同的类。必须拥有:鱼离开水不能存活。:人,有两只眼睛,一个鼻子。继承:重用父类的某些功能。
2022-11-06 20:54:03 856
原创 Netty - Reactor线程模型解析
一个非阻塞的例子:列表中有三份资源,在 while 循环中不断遍历,如果资源读取成功,从列表移除缺点:在绝大多数情况下,迭代的资源,都还未将数据准备好,因此,白白浪费了 CPU如何优化?定义一个监听器,监听列表,当列表中有资源读取成功,发送消息给监听器,监听器执行之后相应操作reactor 模式:是一种处理 I/O 操作的模式,如果受监控的某资源产生新事件,那就接触阻塞,对事件做出反应极简 netty 服务器。
2022-10-29 20:38:14 334
原创 模拟简易 Tomcat
TCP(英语:Transmission Control Protocol,传输控制协议) 是一种面向连接的、可靠的、基于字节流的传输层通信协议。是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。客户端程序创建一个套接字,并尝试连接服务器的套接字。,该方法将一直等待,直到客户端连接到服务器上给定的端口。主要内容来源以下代码,可自己 debug 试试。模拟的 tomcat,底层使用了。三次握手的目的:保证消息的可靠。,表示通过服务器上的端口通信。提供了两台计算机之间的。
2022-10-23 22:52:58 514
原创 端口占用 bat 脚本
因为我的端口老是被占用,尤其是 8080,于是写了个 bat 的脚本:新建 txt 文件,后缀改为 bat 即可运行。之后在 Terminal 就可以输入 xxx.bat,kill 端口了。当然,可以将新建的 bat 放到某个环境变量中。
2022-10-13 10:35:28 1174
原创 Java 立即对类进行初始化的情况
将Class 文件加载到JVM 内存,整个生命周期:加载、连接(验证、准备、解析)、初始化、使用、连接其中,解析阶段,某些情况,可在初始化之后开始在初始化阶段,发生以下情况,会对类进行初始化。
2022-10-07 15:02:16 433
原创 Java 类文件结构整理
在 16 进制文件中,对应常量池结束后的。访问标识:表示类或接口的访问信息。接口索引集合:第一项为接口的数量。开头为常量池容量,u2 类型。总结一下,之后按着这个来。
2022-10-07 00:44:22 438
原创 Mybatis 实现原理
解析出这些内容后,必定要存储,于是用到了 Configuration 类:将 xmlFile(对数据库的操作)的信息,封装到 Configuration 类中。根据 mapper.xml 的信息,namespace 对应 IDAO的位置,select 等对应 SQL 语句,通过解析 XML,可获取这些内容。如果要强行解释的话,那么我的强行解释就是,Factory,从语义上可以理解为创建 xxx 的工厂,很规范。相同的IDAO接口,可有不同的实现方式,甚至,所使用的数据库也可能不同。
2022-10-01 20:55:58 1248 3
原创 Spring源码流程图
它俩在应用上下文的refresh()方法下,实例化自身之后(因为getBeanOfType内调用了getBean方法),一个是立即调用,一个是添加。并调用postProcessBeanFactory(BeanFactory的后置处理方法),(实例化之后就立即调用)实例化所有继承了BeanFactory后置处理器接口的Bean,FactoryBean:工厂Bean,用于创建Bean的Bean。实现了FactoryBean接口的Bean虽然本身也是Bean,实例化所有继承了Bean后置处理器接口的Bean,
2022-09-27 22:53:39 1093
原创 Synchonized 实现原理
原子性是导致线程不安全的一个因素之一比如使用寄存器中的值,而该值已被其他线程修改过,从而造成非预期的结果,典型例子就是多线程同时++一个值可以使用 synchronized 保护可能存在线程安全的代码,对这些代码进行加锁。
2022-09-09 12:39:45 325
原创 Idea 使用 Maven 配置 Tomcat
classpath是JVM使用到的一个环境变量,执行JVM如何搜索class文件Web项目编译打包后,会将classes放入,很多时候出现404的情况,检查下WEB-INF目录下是否存在classes文件classes内也就是src/main/java和src/main/resources下的文件。.....................
2022-07-24 09:51:27 1942
原创 Spring MVC 中接受参数的方式
Spring MVC 接受参数的方式:1. 无注解方式2. @RequestParam 方式:参数绑定3. @PathVariable 方式:url 匹配4. @RequestBody 方式:请求对象 $\to$ JSON
2022-07-17 18:27:42 393
原创 Servlet Error instantiating servlet class NoSuchMethodException
原因竟然是class不是public。
2022-07-16 19:55:35 261
原创 数据库中的范式:第一范式,第二范式,第三范式
元组:表中的一行码:表中的一列候选码:可唯一标识,如通过(身份证号码)或者 (学校,班级,学号)可唯一标识一个人;主属性:候选码中出现过的属性主码 : 也叫主键,从候选码中选出一个老大外码也叫外键。如果是则这个属性为外码订单号、产品号→产品数量、产品折扣、产品价格订单号→订单金额、订单时间订单号、产品号\to产品数量、产品折扣、产品价格 \\订单号\to 订单金额、订单时间订单号、产品号→产品数量、产品折扣、产品价格订单号→订单金额、订单时间‘订单号’ 和 ‘产品号’ 是表的主键(主码),这两个字段一
2022-07-04 11:47:19 1103
原创 通过 Css 的 Grid 布局实现数据键盘
虽说不要重复造轮子,但 Ant-Design-Mobile 中的 NumberKeyboard 数字键盘点击没反应,只好自己写一个了,无耐~思路:每次点击数字,执行 addNumber 函数,该函数会将该数字压入一个数组中如果点击的第一个是小数点,或者在数组中已经出现过小数点了,则直接返回 addNumber 函数,不执行后面的结果...
2022-07-03 22:39:54 589
原创 使用 JavaScript 模拟 Linux 终端
一道面试题,记录下来,两个文件,一个是 html,一个是 js通过 JavaScript 仿Linux终端控制台,假定目录结构由 描述文件代码sh.js 文件分析项目源码给 input 添加 keyup 事件o 函数用于给添加,每次命令执行两次,一次用于添加,一次用于添加完成实际效果如下实现思路:定义一个 Path ,用一个数组存储当前路径的值每次 cd 的时候,拿到当前目录,判断 cd 的参数是否存在于当前存在,存在则进入,不存在给出提示ls、pwd 直接输出当前目录的 object
2022-07-03 22:03:05 1021
原创 以动态规划的方式求解最长回文子串
Dynamic Programming (DP) is an for simplifying a by breaking it down into in a and utilizing the fact that the depends upon the .以递归的方式将复杂问题分解为“更简单的子问题”:取决于其leetcode - 最长回文子串判断方式:首尾字符比较,之后去掉首尾字符,再比较现有首尾字符。单个字符一定是一个字串暴力解法状态无法保留,比如[a,b,c,a]中,首尾字符相等,再比较[
2022-06-27 17:11:26 328
原创 一元二次方程到规范场
曹则贤开讲“从一元二次方程到规范场论” 中国科学院2022跨年科学演讲第三场全程回顾微信文章ax2+bx+c=a(x2+bax)+c=a(x2+bax+b24a2−b24a2)+c=a(x+b2a)2−b24a+4ac4a\begin{aligned}&ax^2+bx+c \\&=a(x^2+\frac{b}{a}x)+c \\&=a(x^2+\frac{b}{a}x+\frac{b^2}{4a^2}-\frac{b^2}{4a^2})+c \\&=a(x+\frac{b}{2a})^2-\fra
2022-06-23 11:22:35 448
原创 数学是用于解决问题的工具
陶哲轩Terence Tao 大师课definition and purpose of Mathematics?数学是一个用于解决问题的方法(工具);同时,就像语言,它也是一个思维方式数学是一种系统的方法:接受复杂问题 - > 将其分解为简单的部分 -> 使得各个独立的部分能够各自工作 -> 之后,再将其组合起来数学的目的:以一种非常精准的方式去交流思想和概念数学可以分为许多独立的部分,如代数、几何、微积分但在某种程度上,它们又是相互联结的,就像是同一个身体的不同部分,学科与学科之间存在许多联系,随着
2022-06-19 16:30:09 981
原创 线性代数中向量的理解
人和动物的一个主要区别在于`抽象`,如`语言`,语言可以用来`交流`,但更重要的是,语言决定了我们如何`描述事物的关系`,如何`构建所处环境的模型`,通过模型,`预测`将会发生的一切,从而做出决策同样,我们也可以通过线性代数,对现实生活进行建模,预测...
2022-06-16 07:04:42 135
Spring官方文档
2020-10-10
jieba-0.42.1.zip
2020-08-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人