- 博客(270)
- 资源 (1)
- 收藏
- 关注
原创 MySQL索引(InnoDB储存引擎)看这一篇近万字文就够了
我们这里要清楚一点,我们学习索引的目的是为了优化sql的查询效率,如果一张表只有inster操作的话我们就没必要为其增加索引了(当然咯,这个只是举一个例子)紧接着我们使用first_name、last_name、age三个字段创建一个组合索引(如果节点的key大于四个的话,中间元素就会向上分裂、所有的元素都会出现在叶子节点。(记住下面标红的文字,和一个很重的知识点有关:回表)这里创建组组合索引的时候,字段的顺序很重要。索引结构的叶子节点关联的是对应的主键。如果存在主键,主键就是聚集索引。
2025-03-20 23:25:06
1045
原创 你还不会本地文生图 ?
(来自DeepSeek回答)Stable Diffusion 是一种基于扩散模型(Diffusion Model)的生成式AI模型,主要用于文本到图像(Text-to-Image)的生成。它能够根据用户输入的文本提示(Prompt),生成高质量的图像。
2025-03-02 11:15:26
716
原创 ChatBox对接DeepSeek R1大模型
文章我们讲到如何使用Ollama本地部署DeepSeek R1模型。本地部署成功之后,用户和DeepSeek R1模型交互的方式有命令行和API。但是一般的用户操作命令行和API的门槛有高,接下来介绍一款可以对接各种大模型的开源的用户界面程序:ChatBox。ChatBox兼容市场上常见的大模型,有:OpenAI、Ollama、DeepSeek等等。
2025-02-18 17:57:50
807
原创 两步教你本地部署DeepSeek R1大模型
它提供了一个用户友好的命令行界面,使开发者、研究人员和爱好者能够轻松下载、运行和管理各种预训练的语言模型,如 LLaMA、Mistral 等。Ollama客户端是运行在11434端口,提供的API有:拉取模型、删除模型、查看已经下载的模型、交互等等。复制命令在cmd命令行中运行:ollama pull deepseek-r1:1.5b ,下载进度看自己的网速,直到看到success。”模型,然后选择1.5b(具体看自己机器的配置,最大的截止目前有671b,我这里选择的是1.5b)。
2025-02-12 12:56:49
492
原创 CAS - AtomicIntegerFieldUpdater和AtomicReferenceFieldUpdater
前面一篇我们学习,为了巩固CAS我们在进而学习下AtomicIntegerFieldUpdater和AtomicReferenceFieldUpdater。
2023-08-09 00:01:29
292
原创 CAS - CAS的缺点
我们看到,其中有一个do while方法,如果CAS失败,就会一直重试。那么如果CAS长时间一直不成功,可能给CPU带来很大的开销。
2023-08-07 22:29:14
285
原创 CAS - 自定义自旋锁
try {System.out.println(Thread.currentThread().getName() + " 做自己的任务");//保证A线程比B线程先获得锁try {System.out.println(Thread.currentThread().getName() + " 做自己的任务");A线程和B线程抢占我们自定义的自旋锁,为了让A线程先获得锁的控制权,我们在A线程start后暂停了100毫秒。A 获得了🔒资源A 做自己的任务B 正在尝试获取🔒。
2023-08-07 22:11:32
331
原创 CAS - 从AtomicInteger窥探CAS
Unsafe类是CAS的核心,由于Java方法无法直接访问底层,需要通过本地方法(native)来实现,Unsafe类相当于一个桥梁。基于Unsafe类,可以直接操作特定的内存数据。我们从上一篇说的时候,有说到一个“资源”被100个线程每个线程累加100次,最终得到10000,该“资源”我们使用AtomicInteger来模拟的。这篇我们就从AtomicInteger更加深入探究CAS。
2023-08-04 23:37:49
305
原创 CAS - 原理简介
CAS是JDK提供的非阻塞原子操作,它通过硬件保证了比较-更新的原子性。它是非阻塞的且自身具有原子性,也就是说CAS效率高、可靠。CAS是一条CPU的原子指令(cmpxchg指令),不会造成所谓的数据不一致问题,Unsafe类提供的CAS方法(如:compareAndSwapXXX)底层实现就是CPU的cmpxchg指令。执行cmpxchg指令指令的时候,会判断当前系统是否为多核系统,如果是就给总线加锁,只有一个线程会对总线加锁成功,加锁成功之后会执行cas操作,
2023-08-02 23:14:00
258
原创 volatile和JMM
内存屏障(也称内存栅栏、屏障指令等,是一类同步屏障指令,是CPU或者编译器在对内存随机访问的操作中的一个同步点,使得此点之前的所有读写操作都执行后才可以开始执行此点之后的操作),避免代码重排序。重排序是指编译器和处理器为了优化程序新能而对指令序列进行重新排序的一种手段,有时候会改变程序语句执行的先后顺序,但是重排序后的指令绝对不能改变原有的串行语义。所以volatile的写内存语义是直接刷新回主内存,读的内存语义是直接从主内存中读取最新的值。都能获得内存屏障之前的所有写操作的最新结果(实现了可见性)
2023-08-01 23:19:09
182
原创 Java内存模型(JMM)
JVM规范中定义了java内存模型(java Memory Model,简称JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,进而达到java程序在各平台下都能达到一致的内存访问效果。Java内存模型(Java Memory Model,JMM)本身是一种抽象的概念并不真实存在它描述的是一组约定或者规范,定义了Java程序在多线程环境下,对共享变量的读写操作的具体行为和规则。它确保了线程之间的可见性、有序性以及原子性。
2023-08-01 00:14:24
762
原创 线程等待唤醒机制
现在案例是我们先让t1获得objectLock,t1紧接着调用objectLock的wait()方法交出锁的控制权,等t2运行拿到objectLock的锁对象,在调用objectLock的notify()方法唤醒t1,也就是说t1和t2的等待和唤醒是有先后顺序的。那如果我们先调用t2的唤醒,在调用t1的等待,会有什么结果?结果就是t1永远不会被唤醒。
2023-07-30 23:16:59
148
原创 线程中断机制
如果线程处于正常活动状态,那么会将该线程的中断标志位设置为true,仅此而已。被设置中断标识的线程将继续正常运行,不受影响。所以interrupt()方法并不能真正的中断线程,需要被调用方的线程自己配合好才行。如果线程处于被阻塞状态(例如:sleep、wait、join等),在别的线程中调用interrupt方法,那么该线程将立即退出阻塞状态,并抛出一个InterruptedException异常,且会清除线程的中断状态。如果线程已经中断、不活动将不会有任何影响。
2023-07-30 22:17:16
302
原创 Java那些“锁”事 - 死锁及排查
死锁是两个或者两个以上的线程在执行过程中,因争夺资源而造成的一种互斥等待现象,若没有外界干涉那么它们将无法推进下去。如果系统资源不足,进程的资源请求都得到满足,死锁出现的可能性就很低,否则就会因为争夺有限的资源而陷入死锁。
2023-07-29 00:04:56
1736
原创 Java那些“锁”事 - 可重入锁(递归锁)
可重入锁是一种线程同步的机制,它允许线程多次获取同一个锁,而不会产生死锁。可重入锁的特点是在持有锁的情况下可以再次进入同步代码块或方法,而不会被阻塞。ReentrantLock和synchronized都是可重入锁。ReentrantLock属于显式可重入锁,synchronized属于隐式可重入锁。
2023-07-28 23:22:04
591
原创 Java那些“锁”事 - 公平锁和非公平锁
在Java中,锁可以分为公平锁(Fair Lock)和非公平锁(Nonfair Lock),它们的区别在于线程获取锁的顺序是否遵循公平性原则。
2023-07-26 23:35:42
1256
原创 Java那些“锁”事 - “八锁”案例
阿里巴巴规范手册中有提到:高并发时,同步调用应该去考量锁的性能消耗。能用无锁数据结构,就不要用锁;能锁区块,就不要锁整个方法体;能用对象锁,就不要用类锁。
2023-07-26 00:15:30
216
原创 CompletableFuture
前面一个篇我们降到,从调用事例中说到了FutureTask的缺点,get()方法在计算完成之前一直处于阻塞状态,isDone()方法容易耗费CPU资源。对于真正的异步处理我们希望是可以通过传入回调函数,在Future结束时自动回调该函数,这样我们就不用等待结果。CompletableFuture提供了一种观察模式类似的机制,可以让任务执行完成后通知监听的一方。
2023-07-25 00:19:21
149
原创 FutureTask
Future接口(FutureTask实现类)定义了操作异步任务执行一些方法,如获取异步任务执行的结果、取消任务的执行、判断任务是否取消、判断任务执行是否完成等。它提供了一种并行异步计算的功能。比如主线程让子线程去执行任务,子线程比较耗时,启动子线程开始执行任务后,主线程就去做别的事情了,过一会才去获取子任务的执行结果。
2023-07-22 23:40:51
277
原创 Spring Security异常处理
ExceptionTranslationFilter、AuthenticationEntryPoint、AccessDeniedHandler、自定义异常配置
2022-12-09 15:17:10
3565
1
原创 Spring Security密码加密
PasswordEncoder、DelegatingPasswordEncoder、PasswordEncoderFactories
2022-11-25 00:30:10
3011
原创 Spring Security多种用户定义方式
AuthenticationManager,局部AuthenticationManager、全局AuthenticationManager
2022-11-21 23:47:08
1405
原创 Spring Security登录流程分析
登录流程分析、AuthenticationManager、AuthenticationProvider、ProviderManager、Authentication
2022-11-19 00:17:23
2166
原创 Spring Security认证之登录用户数据获取
Authentication、SecurityContext、SecurityContextHolder
2022-11-17 22:12:54
3453
原创 Spring Security认证之登录表单配置
AuthenticationSuccessHandler、自定义登录页面、AuthenticationFailureHandler
2022-11-16 23:00:10
538
原创 Spring Security基本框架之过滤器
FilterChain、FilterChainProxy、DelegatingFilterProxy
2022-11-12 22:11:08
1165
原创 Spring Security基本框架之认证和授权
Authentication、AuthenticationManager、AuthenticationProvider、ProviderManager、AccessDecisionMamager、AccessDecisionVoter
2022-11-11 23:37:13
976
原创 Nacos框架原理
2021年12月21号,阿里巴巴进行了《Nacos框架与原理》一书的线上发布会。链接:https://pan.baidu.com/s/17yggoq106lJAKxE2s_2pVw提取码:hdp9
2021-12-21 16:48:08
448
原创 记录一次阿里云服务器被攻击事件
收到阿里云的攻击提示消息直接导致的问题服务器不能访问外网分析1.服务器安全组严格控制好对外的端口,可以的话就只打开nginx的80和4432.做好服务集群部署,便于出现问题的时候及时切换...
2021-11-20 12:12:52
3500
原创 总结一下刚刚进入新公司一个月以内的问题
在不是很理解新公司业务逻辑的情况下不知道怎么建表、拿捏不准 在不是很理解新公司业务逻辑的情况下代码逻辑混乱、代码重复 自己手动写各种接口、实体类、效率太低 对枚举、常量不熟悉,代码可读性差个人建议刚进新公司先抛开业务,花一到两天时间搞清楚工程结构。比如配置类在哪里、有哪些,以及公司常用的工具类等等,否则哪些类放在哪里都不知道。还有就是脸皮厚点多问。...
2021-09-02 14:56:32
377
原创 SpringCloud使用Hystrix的Turbine时,EurekaClient和NacosClient冲突问题
场景我们在使用Hystrix服务熔断、降级的时候可以使用HystrixDashBoard来监控各个接口的调用情况。但是通常情况都是单个服务部署多台,那么我们使用HystrixDashBoard监控的时就打开多个页面来监控?答案是否定的。SpringCloud为我们提供了集群的方式来解决单个服务部署多台的情况,就是Turbine机制。可以参考官网:https://docs.spring.io/spring-cloud-netflix/docs/2.2.9.RELEASE/reference/html/
2021-07-24 17:56:09
993
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人