• tink1
    Hammerspoon 是一个 macOS 上的自动化脚本工具,它将 macOS 系统的底层操作封装成了一堆接口,而且原生支持 lua 脚本,通过编码能实现很多牛逼/好玩的功能。下面是几个我目前...
  • cornradio
    最近进入新公司工作后,使用的是macos笔记本办公,积累了很多的小技巧 可以帮助高效的使用macos 快捷键 https://support.apple.com/zh-cn/102650 finder 按住 Option-Command 键拖移:为拖移的项目制作替身。 cmd + J 设置目录展示,可以按照不同的方式来分组和排序。 Command + Shift + . 显示隐藏文件 文本 ctrl + D 、fn + 退格, 删除右边 相当于 win del cmd + shift + 方向 快速选中一行。 任务栏缩放加速 https://www.sqlsec.com/2023/07/ventura.html # 设置启动坞动画时间设置为 0.5 秒 defaults write com.apple.dock autohide-time-modifier -float 0.5 && killall Dock defaults write com.apple.dock autohide-time-modifier -float 0 && killall …
  • cooklv
    Huginn 是什么? Huginn这个名字是取自北欧神话,Huginn(福金)和Muninn(雾尼)是奥丁养的两只乌鸦,它们两个每天早上一破晓就飞到人间,到了晚上再回去跟奥丁报告。它们总是栖息于奥丁的肩头同他窃窃耳语。也因此奥丁又被称为“乌鸦神”。 Huginn 可以理解为一个任务平台,你创建各种
  • zxyang3636
    谈谈你对 Spring 的理解,springmvc,springboot 之间关系? Sping Spring 框架的基本概念: Spring 是一个开源的 Java 企业应用开发框架,旨在简化 Java 开发,提高代码的可维护性和可扩展性。 它提供了控制反转(IoC)和面向切面编程(AOP)等特性,帮助解决了传统 Java 应用中的一些设计问题。 控制反转(IoC)和依赖注入(DI) IoC 是 Spring 的核心概念,控制反转 Inversion of Control:由 spring 框架创建对象,对象不由我 们创建。所有 bean(对象)交给 spring 容器管理,由 spring 创建、销毁、统一管理(不使用 new 创建),解决了对象间的耦合(解耦) DI 是 IoC 的一种具体实现,通过依赖注入,给对象定义的属性赋初值,的过程称为依赖注入 Spring AOP: 面向切面编程,通过 AOP 可以将横切关注点(如日志、事务)从主要的业务逻辑中分离出来。 SpringMVC: MVC 是 Spring 框架的一个模块,专门用于构建 Web 应用程序。Spring MVC …
  • zxyang3636
    谈谈你对Redis的理解 Redis是一个高性能的基于Key-Value结构存储的NoSQL开源数据库。大部分公司 采用Redis来实现分布式缓存,用来提高数据查询效率。 Redis为什么这么快? 决定Redis请求效率的因素主要是三个方面:分别是网络、CPU、内存。 1.运行在内存中:绝大部分请求是纯粹的内存操作,非常快速; cpu>内存>磁盘 2.redis是运行线程是单线程。采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗; 为什么采用单线程? redis运行中性能瓶颈不是cpu数(也就是多线程作用不大,是内存大小),单线程的好处可以避免多线程时的上下文切换。 如果采用多线程,对于Redis中的数据操作,都需要通过同步的方式来保证线程安全性,这反而会影响到redis的性能 3.采用多路复用I/O模式 这里“多路”指的是多个网络连接,“复用”指的是复用同一个线程 Redis 可以用来做什么 缓存 排行榜 分布式计数器 分布式锁 消息队列 分…
  • zxyang3636
    Docker Nginx nginx是什么?优势? 一个高性能的Web服务器和反向代理服务器 可以容易的做负载均衡,更好的面对高并发的场景。 Nginx应用场景 Http服务器 可以做网页静态服务器,托管 HTML、CSS、JavaScript、图片、视频等静态资源。 反向代理/负载均衡,当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。 负载均衡策略 轮询 每个请求按时间顺序逐一分配到不同的后端服务器 加权轮询 指定轮询几率,用于后端服务器性能不均的情况。(权重/加权),权重越高分配的请求越多,权重越低,请求越少。 ip_hash ip_hash 方式的负载均衡,可以使来自同一个 IP 的客户端固定访问一台 Web 服务器,从而就解决了 Session 共享问题。(己经淘汰) 正向代理?反向代理? 反向:是代理服务器端,隐藏真实服务器 正向:代理的是客户端(常见的vpn) Linux 如何查看进程 # 查看所有进程 ps -ef # 查找特…
  • zxyang3636
    MySql char 和 varchar 的区别? 在数据库中,CHAR(固定长度字符)和 VARCHAR(可变长度字符)是两种用于存储字符数据的数据类型,它们之间的主要区别在于数据存储方式和存储需求。 存储方式: CHAR: 存储固定长度的字符数据,不管实际数据的长度是多少,都会占用指定长度的存储空间。如果存储的数据长度小于定义的长度,剩余空间将用空格填充。 VARCHAR: 存储可变长度的字符数据,实际存储的空间取决于数据的长度。它只占用实际数据的存储空间加上一些额外的字节来记录数据的长度。 存储需求: CHAR: 由于它存储固定长度的数据,对于每个数据项都需要分配固定的存储空间,可能会浪费一些存储空间。适用于存储长度固定的数据,如固定长度的代码或状态。 VARCHAR: 由于它存储实际数据的长度,因此在存储可变长度的数据时更为节省空间。适用于存储长度可变的文本数据,如评论、描述等。 性能: CHAR: 由于存储固定长度,检索时可能更快,但在存储大量可变长度的数据时可能会浪费空间。 VARCHAR: 由于存储实际数据长度,可能在某些情况下对存储效率更友好,尤其是对于可变长度的数据。…
  • zxyang3636
    RabbitMQ 怎么确保消息幂等性? 方式1: 我们在生产者发送消息的时候,将生成的唯一token存储到redis中并且设置一个TTL存活时间,通过MessagePostProcessor对象将token存储在MessageId中 在监听队列的消费者端,我们从message对象中获取存在MessageId中的token,在从redis中获取这个token,判断redis中是否有MessageId中的这个token,如果有这个token并且没有被删除,那么我们就正常执行业务逻辑代码,业务逻辑代码执行后,再删除redis中的这个token,并且channel手动确认消息 需要注意的是:rabbitmq是批量处理消息,有必要加锁。 方式2 利用redis中的setnx指令,java中setIfAbent() 让消费者记住消息。结合redis 的setnx指令 消费前把消息中的唯一属性,放入redis,如果重复消费了,发现redis中若有该唯一属性,就不消费 如果消息中没有唯一属性?(联合主键:找几个属性加起来时唯一即可) 消息成为死信的三种情况 ​ 消费者拒接消费消息,并且不把消息重新放入…
  • zxyang3636
    面试指北 Java 基础 ==和equals的区别是什么? ==既可以比较基本数据类型,也可以比较引用数据类型 ==在比较基本数据类型时, 比较的是值, 在比较引用数据类型时, 比较对象的地址 equals 只能比较引用数据类型, 比较对象中的内容是否相同, 在没有重写的情况下也是比较对象的地址 String str="i" 与 String str=new String("i") 一样吗? String str="i"会将其分配到常量池中,常量池中没有重复的元素,如果常量池中存在 i,就将 i 的地址赋给变量,如果没有就创建一个再赋给变量。 字符串字面量,通常存储在 JVM 的字符串常量池中。常量池中没有重复的元素,如果字符串常量池中已经存在相同的字符串(例如,之前已经使用过 "i"),则不会创建新的对象,而是直接引用池中的现有对象。如果没有就创建一个再赋给变量。 String str=new String(“i”)会将对象分配到堆中,即使内存一样,还是会重新创建一个新的对象。 接口和抽象类有什么区别? 声明方法的存在而不去实现它的类叫抽象类。接口是抽象类的变体,接口中的所有方法都是…
  • zxyang3636
    线程池 为什么要使用线程池? 在没有使用线程池之前,是这样执行任务的 一个线程只能执行一个任务,不能连续执行任务 public class Task implements Runnable { @Override public void run() { System.out.println(Thread.currentThread().getName()); } } public class Main { public static void main(String[] args) { Task task = new Task(); Thread thread = new Thread(task); thread.start(); } } 这暴露了一个问题,线程不能复用,重复创建和销毁线程耗时耗资源,若能复用就好了,复用的好处就是省时省资源 看线程池如何执行⤵️ 创建只有一个线程的线程池,这个线程池中只有一个线程,重点是它里面的线程可以复用 public class Main { public static void main(String[] args) { Runnable tas…
  • Ray
    🎵Berry – TINY7最先出现在RaysBlog。
  • Ray
    Illinois Dreamin’最先出现在RaysBlog。
  • Ray
    Hello World最先出现在RaysBlog。
  • moatkon
    myvocab
  • moatkon
    Duolingo 多邻国
  • moatkon
    英语学习
  • moatkon
    Prompt
  • zxyang3636
    XXL-JOB 什么是任务调度? 我们可以思考一下下面业务场景的解决方案: 某电商平台需要每天上午10点,下午3点,晚上8点发放一批优惠券 某银行系统需要在信用卡到期还款日的前三天进行短信提醒 某财务系统需要在每天凌晨0:10分结算前一天的财务数据,统计汇总 以上场景就是任务调度所需要解决的问题 任务调度是为了自动完成特定任务,在约定的特定时刻去执行任务的过程 为什么需要分布式调度? 使用Spring中提供的注解@Scheduled,也能实现调度的功能 在业务类中方法中贴上这个注解,然后在启动类上贴上@EnableScheduling注解 @Scheduled(cron = "0/20 * * * * ? ") public void doWork(){ //doSomething } 感觉Spring给我们提供的这个注解可以完成任务调度的功能,好像已经完美解决问题了,为什么还需要分布式呢? 主要有如下这几点原因: 高可用:单机版的定式任务调度只能在一台机器上运行,如果程序或者系统出现异常就会导致功能不可用。 防止重复执行: 在单机模式下,定时任务是没什么问题的。但当我们部署了多台服务…
  • cornradio
    检查配置 这网站很强的,好多命令都能在里面直接找,不需要看别的东西 https://tools.thinkinai.xyz/ 下载ollama https://ollama.com/ 运行命令安装模型 包括下载镜像速度还挺快的不用翻墙 这个模型还是挺大的10个 g 也不知道他下哪儿去了反正我电脑空间多 ollama run deepseek-r1:14b Windows 电脑还要安装这个cuda (这是网站教程上说的但是我实测好像并不需要) 安装 webui 毕竟用这个网页端还是比较方便 命令行也太麻烦了 docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main 预想好之后会开启在这个网站: 你就可以体验到你自己本地在跑的模型了。 http://127.0.0.1:3000/ 据说这里能有无审查版的模…
  • cornradio
    使用触摸板的好处 避免出现鼠标使用太久手腕比较痛的问题 滚动非常顺滑 有很多方便的手势,比如四指切换桌面,三指拖拽,双指放大缩小等等 windows触摸板购买 如果你的笔记本自带高精度触摸板的话则不需要购买 如果你像我一样是使用台式机的话需要自己购买一个外设 我推荐一个淘宝店铺,店铺的名字叫【随制】 或者直接在淘宝搜索关键词 winMagicTrackpad 这个触摸板手感比较轻 价格比APPLE的触摸板要便宜很多 150元左右 触摸效果倒是很灵敏的,可惜没有按压震动的效果 系统配置 在 Windows 系统⚙️中 你可以直接搜索 触摸板 来进行配置 其他的手势你都可以自行定义在这里我们需要配置的是: 把三指功能全部关闭 第三方软件 苹果上的三指拖拽非常实用 我们也可以在WINDOWS使用第三方软件实现 他的名字叫做 three finger drag on Windows 名字真的是非常的直抒其意啊 可以直接在微软商店下载到 在设置中开启三指拖拽功能,并且需要自行配置一下移动速度. 默认情况 移动速度非常的奇怪