Install HomebrewHomebrew官网: https://brew.sh/
在终端输入以下指令即可安装Homebrew(需要特殊网络)/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
输入brew help,出现下图则安装完成。
但是仅仅到这里的话,下次我们再启动终端,发现直接输入brew是无法识别brew命令的。我们可以输入source ~/.bash_profile来解决此问题,但是这样每次打开都要先输入这行命令,因此我们还需进行以下更改。
命令行输入:sudo vim ~/.zprofile
命令行模式下点”i”插入:export PATH="/opt/homebrew/bin:$PATH"
保存文件并退出(输入:wq保存退出)
命令行输入,激活文件:source ~/.zprofile
iTerm我们首先下载iTerm这个软件 https://iterm2.com/,这是一款可以自 ...
说在前面的话这些软件是我经常使用的,但我对它们的介绍可能只涉及了我日常使用的一些功能,因此可能显得不够全面。特别是像Raycast、Obsidian等软件,我的描述可能比较简略。如果你对其中任何一款软件感兴趣,建议你可以访问B站搜索相关的介绍视频。这样,你将能更深入地了解这些软件的功能和使用方法。
软件推荐1. Bob (免费下载,需求较多需要付费)下载地址: 苹果商店Bob是一款翻译/ocr识别软件,有划词翻译、截屏翻译、输入翻译,支持多种翻译引擎更有丰富的插件系统,通过插件系统可以免费使用DeepL,google,GPT等专业翻译引擎
2. Raycast (免费,Ai功能收费)下载地址: https://www.raycast.com/Raycast可以提高我们的工作效率,有快速启动应用,剪切板历史,翻译,计算,汇率转换,通过命令或快捷键来管理和调整应用程序窗口等等功能,同时Raycast同样拥有丰富的插件系统,里面有很多能简化日常操作的插件,大大提高工作、学习效率。如果想在Raycast里用chatgpt和云同步是收费的,其他功能都免费。
3. Soundsource ...
VIM一般模式1、移动光标
1)、上下左右移动光标
上、下、左、右方向键 移动光标h(左) j(下) k(上) l(右) 移动光标
2)、光标移动到文件头或文件尾
gg 移动到文件头G 移动到文件尾(shift + g)
3)、光标移动到行首或行尾
^ 移动到行首$ 移动到行尾
4)、移动到指定行
:n 移动到第几行(这里的 n 是数字)
2、删除或剪切
1)、删除字母
x 删除单个字母nx 删除 n 个字母(n 是数字,如果打算从光标位置连续删除 10 个字母,可以使用 10x 即可)
2)、删除整行或剪切
dd 删除单行ndd 删除多行:n1,n2d 删除指定范围的行
删除行或多行,是比较常用的删除方法。这里的 dd 快捷键既是删除也是剪切。删除内容放入了剪切板,如果不粘贴就是删除,粘贴就是剪切。粘贴方法:
p 粘贴到光标下面一行P 粘贴到光标上面一行
3)、从光标所在行删除到文件尾
dG 从光标所在行删除到文件尾(d 是删除行,G 是文件尾,连起来就是从光标行删除到文件尾)
3、复制
yy 复制单行nyy 复制多行
复制之后的粘贴依然可以使用 ...
Redis 简介Redis是基于内存的key-value结构数据库
基于内存存储,读写性能高
适合存储热点数据(热点商品、咨询、新闻),短时间内大量用户访问
安装与启动
12345brew install redis//方式一brew services start redis//方式二redis-server /opt/homebrew/etc/redis.conf
redis.conf位置
1/opt/homebrew/etc/redis.conf
Redis 常见操作命令字符串操作命令Redis 字符串类型常用命令:
SET key value 设置指定key的值GET key 获取指定key的值MSET,MGET 批量设置、获取SETEX key seconds value 设置指定key的值,并将key 的过期时间设为seconds秒SETNX key value 只有在key 不存在时设置key 的值
哈希操作命令Redis hash 是一个string类型的 field 和value 的映射表,hash特别适合用于存储对象,常用命令:
...
AOP的概念12345<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency>
面向切面编程:将很多重复的代码都归到一起,比如我想统计10个方法的执行时间,那么我就可以只写一份代码,套在10个方法上。
AOP核心概念
连接点:JoinPoint,可以被AOP控制的方法(暗含方法执行时的相关信息)
通知:Advice,指哪些重复的逻辑,也就是共性功能(最终体现为一个方法)
切入点:Pointcut,匹配连接点的条件,通知仅会在切入点方法执行时被应用
切面:Aspect,描述通知与切入点的对应关系(通知+切入点)
目标对象:Target,通知所应用的对象123456789101112131415@Component //加入容器@Aspect //标识为AOPpublic class TimeAspect ...
controller接收前端发送的请求,对请求进行处理,并相应数据。service业务逻辑层,处理具体的业务逻辑dao数据访问层(持久层),负责数据访问操作,增删改查。
控制反转(IOC):对象创建的控制权由程序本身转移到外部(容器)。依赖注入(DI):容器为应用程序提供运行时所依赖资源。Bean对象:IOC容器中创建,管理的对象。@Component 加在类上,可以将其加入容器,想用的时候再@Autowired@Controller、@Service、和@Repository都是特化的@Component
123456789101112131415161718192021222324252627282930313233// UserController.java@Componentpublic class UserController { @Autowired private UserService userService; public void createUser(String username) { userService. ...
什么是背包问题背包问题是动态规划很经典的问题,他有很多的变种,但是万变不离其宗。背包问题最根本的特点就是有一个目标(填满背包)和一堆物品(nums[i]),看看是否能够通过选取部分物品(nums[i])来满足目标(填满背包)。目标可能是题目直接给出,也可能是要我们自己推测出来。
面试要掌握的背包类型有以下两种:1、0/1背包问题:每个元素最多选取一次2、完全背包问题:每个元素可以重复选择
01背包问题有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。
假设有4件物品,重量和价值如下:
物品1:重量1kg,价值15元
物品2:重量3kg,价值20元
物品3:重量4kg,价值30元
物品4:重量5kg,价值50元
背包最大承重为8kg。
步骤1:确定dp数组及下标的含义dp[i][j]表示考虑到第i件物品时,背包重量不超过j时的最大价值。
步骤2:确定递推公式对于dp[i][j],有两个方向来得到它:如果选择第i件物品,dp[i][j] = dp[i-1 ...
简单的认识动态规划实际上是一个暴力求解的过程,举个例子:斐波那契数列,0、1、1、2、3、5、8……斐波那契数列其中一项的值就是由前两项相加得出的,那么0+1=1,1+1=2,1+2=3,2+3=5,3+5=8这个过程,实际上就是“动态规划的过程”
动态规划如何解题动态规划的解题步骤
确定dp数组以及下标的含义
确定递推公式
dp数组如何初始化
确定遍历顺序注:我们在做题的过程要始终记得dp数组的含义,不然很容易混乱。
尝试应用方法做点简单题我们先看这道题
70. 爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?示例 1:
输入:n = 2输出: 2解释:有两种方法可以爬到楼顶。
1 阶 + 1 阶
2 阶
示例 2:
输入:n = 3输出:3解释:有三种方法可以爬到楼顶。
1 阶 + 1 阶 + 1 阶
1 阶 + 2 阶
2 阶 + 1 阶
第一步:我们先确定dp数组含义,即:dp[n]:上第n个台阶有dp[n]种方法。
第二 ...
Java架构
未读Mybatis当一个接口被 @Mapper 标记后,MyBatis 会在启动时自动扫描这个接口,并为其生成一个代理对象。开发者可以通过这个接口直接调用 SQL 语句,而无需自己编写实现类。SQL 语句通常通过 MyBatis 的 XML 配置文件或者在接口方法上使用@Delete、@Update、 @Insert、@Select 等注解来指定。
在接口方法上使用注解1. Delete和Update将注解和SQL语句放在一个函数上面,在其他地方调用该函数的时候,就可以运行对应的SQL语句。
12345678//根据ID删除用户 @Delete("delete from emp where id=#{id}") public int delete(Integer id);//返回值是影响的记录数 @Update("update emp set username=#{username}, name=#{name}, create_time=#{ ...
