自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(266)
  • 资源 (1)
  • 收藏
  • 关注

原创 Linux安装openJdk 1.8、nginx、redis

新购买的机器快速配置jdk、nginx、redis等等,使用yum系统自带工具。

2023-08-30 10:08:35 300

原创 CAS - AtomicIntegerFieldUpdater和AtomicReferenceFieldUpdater

前面一篇我们学习,为了巩固CAS我们在进而学习下AtomicIntegerFieldUpdater和AtomicReferenceFieldUpdater。

2023-08-09 00:01:29 213

原创 CAS - CAS的缺点

我们看到,其中有一个do while方法,如果CAS失败,就会一直重试。那么如果CAS长时间一直不成功,可能给CPU带来很大的开销。

2023-08-07 22:29:14 214

原创 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 240

原创 CAS - 从AtomicInteger窥探CAS

Unsafe类是CAS的核心,由于Java方法无法直接访问底层,需要通过本地方法(native)来实现,Unsafe类相当于一个桥梁。基于Unsafe类,可以直接操作特定的内存数据。我们从上一篇说的时候,有说到一个“资源”被100个线程每个线程累加100次,最终得到10000,该“资源”我们使用AtomicInteger来模拟的。这篇我们就从AtomicInteger更加深入探究CAS。

2023-08-04 23:37:49 191

原创 CAS - 原理简介

CAS是JDK提供的非阻塞原子操作,它通过硬件保证了比较-更新的原子性。它是非阻塞的且自身具有原子性,也就是说CAS效率高、可靠。CAS是一条CPU的原子指令(cmpxchg指令),不会造成所谓的数据不一致问题,Unsafe类提供的CAS方法(如:compareAndSwapXXX)底层实现就是CPU的cmpxchg指令。执行cmpxchg指令指令的时候,会判断当前系统是否为多核系统,如果是就给总线加锁,只有一个线程会对总线加锁成功,加锁成功之后会执行cas操作,

2023-08-02 23:14:00 133

原创 volatile和JMM

内存屏障(也称内存栅栏、屏障指令等,是一类同步屏障指令,是CPU或者编译器在对内存随机访问的操作中的一个同步点,使得此点之前的所有读写操作都执行后才可以开始执行此点之后的操作),避免代码重排序。重排序是指编译器和处理器为了优化程序新能而对指令序列进行重新排序的一种手段,有时候会改变程序语句执行的先后顺序,但是重排序后的指令绝对不能改变原有的串行语义。所以volatile的写内存语义是直接刷新回主内存,读的内存语义是直接从主内存中读取最新的值。都能获得内存屏障之前的所有写操作的最新结果(实现了可见性)

2023-08-01 23:19:09 129

原创 Java内存模型(JMM)

JVM规范中定义了java内存模型(java Memory Model,简称JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,进而达到java程序在各平台下都能达到一致的内存访问效果。Java内存模型(Java Memory Model,JMM)本身是一种抽象的概念并不真实存在它描述的是一组约定或者规范,定义了Java程序在多线程环境下,对共享变量的读写操作的具体行为和规则。它确保了线程之间的可见性、有序性以及原子性。

2023-08-01 00:14:24 653

原创 线程等待唤醒机制

现在案例是我们先让t1获得objectLock,t1紧接着调用objectLock的wait()方法交出锁的控制权,等t2运行拿到objectLock的锁对象,在调用objectLock的notify()方法唤醒t1,也就是说t1和t2的等待和唤醒是有先后顺序的。那如果我们先调用t2的唤醒,在调用t1的等待,会有什么结果?结果就是t1永远不会被唤醒。

2023-07-30 23:16:59 97

原创 线程中断机制

如果线程处于正常活动状态,那么会将该线程的中断标志位设置为true,仅此而已。被设置中断标识的线程将继续正常运行,不受影响。所以interrupt()方法并不能真正的中断线程,需要被调用方的线程自己配合好才行。如果线程处于被阻塞状态(例如:sleep、wait、join等),在别的线程中调用interrupt方法,那么该线程将立即退出阻塞状态,并抛出一个InterruptedException异常,且会清除线程的中断状态。如果线程已经中断、不活动将不会有任何影响。

2023-07-30 22:17:16 253

原创 Java那些“锁”事 - 死锁及排查

死锁是两个或者两个以上的线程在执行过程中,因争夺资源而造成的一种互斥等待现象,若没有外界干涉那么它们将无法推进下去。如果系统资源不足,进程的资源请求都得到满足,死锁出现的可能性就很低,否则就会因为争夺有限的资源而陷入死锁。

2023-07-29 00:04:56 1048

原创 Java那些“锁”事 - 可重入锁(递归锁)

可重入锁是一种线程同步的机制,它允许线程多次获取同一个锁,而不会产生死锁。可重入锁的特点是在持有锁的情况下可以再次进入同步代码块或方法,而不会被阻塞。ReentrantLock和synchronized都是可重入锁。ReentrantLock属于显式可重入锁,synchronized属于隐式可重入锁。

2023-07-28 23:22:04 522

原创 Java那些“锁”事 - 公平锁和非公平锁

在Java中,锁可以分为公平锁(Fair Lock)和非公平锁(Nonfair Lock),它们的区别在于线程获取锁的顺序是否遵循公平性原则。

2023-07-26 23:35:42 874

原创 Java那些“锁”事 - “八锁”案例

阿里巴巴规范手册中有提到:高并发时,同步调用应该去考量锁的性能消耗。能用无锁数据结构,就不要用锁;能锁区块,就不要锁整个方法体;能用对象锁,就不要用类锁。

2023-07-26 00:15:30 123

原创 CompletableFuture

前面一个篇我们降到,从调用事例中说到了FutureTask的缺点,get()方法在计算完成之前一直处于阻塞状态,isDone()方法容易耗费CPU资源。对于真正的异步处理我们希望是可以通过传入回调函数,在Future结束时自动回调该函数,这样我们就不用等待结果。CompletableFuture提供了一种观察模式类似的机制,可以让任务执行完成后通知监听的一方。

2023-07-25 00:19:21 108

原创 FutureTask

Future接口(FutureTask实现类)定义了操作异步任务执行一些方法,如获取异步任务执行的结果、取消任务的执行、判断任务是否取消、判断任务执行是否完成等。它提供了一种并行异步计算的功能。比如主线程让子线程去执行任务,子线程比较耗时,启动子线程开始执行任务后,主线程就去做别的事情了,过一会才去获取子任务的执行结果。

2023-07-22 23:40:51 222

原创 Spring Security OAuth2简介

OAuth2、授权码模式、简化模式、密码模式、客户端模式

2022-12-22 15:31:33 1110 1

原创 Spring Security异常处理

ExceptionTranslationFilter、AuthenticationEntryPoint、AccessDeniedHandler、自定义异常配置

2022-12-09 15:17:10 3204 1

原创 Spring SecurityHTTP认证

HTTP Basic

2022-12-05 23:26:37 526

原创 Spring Security密码加密

PasswordEncoder、DelegatingPasswordEncoder、PasswordEncoderFactories

2022-11-25 00:30:10 2863

原创 Spring Security使用JSON格式登录

JSON格式登录、自定义Filter

2022-11-23 22:39:43 2227

原创 Spring Security静态资源过滤

静态资源过滤、WebSecurity、ignoredRequests

2022-11-23 21:21:25 981

原创 Spring Security多种用户定义方式

AuthenticationManager,局部AuthenticationManager、全局AuthenticationManager

2022-11-21 23:47:08 1288

原创 Spring Security自定义验证码登录

验证码登录

2022-11-19 21:50:07 2049

原创 Spring Security登录流程分析

登录流程分析、AuthenticationManager、AuthenticationProvider、ProviderManager、Authentication

2022-11-19 00:17:23 2080

原创 Spring Security认证之用户定义

UserDetailsService、InMemoryUserDetailsManager

2022-11-18 00:53:00 913

原创 Spring Security认证之登录用户数据获取

Authentication、SecurityContext、SecurityContextHolder

2022-11-17 22:12:54 3125

原创 Spring Security认证之登录表单配置

AuthenticationSuccessHandler、自定义登录页面、AuthenticationFailureHandler

2022-11-16 23:00:10 415

原创 Spring Security认证之基本认证

UserDetailsService、InMemoryUserDetailsManager

2022-11-15 23:17:17 758

原创 Spring Security基本框架之登录数据保存

SecurityContextHolder

2022-11-12 22:35:59 2877

原创 Spring Security基本框架之过滤器

FilterChain、FilterChainProxy、DelegatingFilterProxy

2022-11-12 22:11:08 1061

原创 Spring Security基本框架之认证和授权

Authentication、AuthenticationManager、AuthenticationProvider、ProviderManager、AccessDecisionMamager、AccessDecisionVoter

2022-11-11 23:37:13 827

原创 Nacos框架原理

2021年12月21号,阿里巴巴进行了《Nacos框架与原理》一书的线上发布会。链接:https://pan.baidu.com/s/17yggoq106lJAKxE2s_2pVw提取码:hdp9

2021-12-21 16:48:08 377

原创 记录一次阿里云服务器被攻击事件

收到阿里云的攻击提示消息直接导致的问题服务器不能访问外网分析1.服务器安全组严格控制好对外的端口,可以的话就只打开nginx的80和4432.做好服务集群部署,便于出现问题的时候及时切换...

2021-11-20 12:12:52 3071

原创 总结一下刚刚进入新公司一个月以内的问题

在不是很理解新公司业务逻辑的情况下不知道怎么建表、拿捏不准 在不是很理解新公司业务逻辑的情况下代码逻辑混乱、代码重复 自己手动写各种接口、实体类、效率太低 对枚举、常量不熟悉,代码可读性差个人建议刚进新公司先抛开业务,花一到两天时间搞清楚工程结构。比如配置类在哪里、有哪些,以及公司常用的工具类等等,否则哪些类放在哪里都不知道。还有就是脸皮厚点多问。...

2021-09-02 14:56:32 285

原创 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 906

原创 ETag、If-None-Match判断文件是否发生变化

场景公司的一款故事机需要从我们后台(我们后台存的是阿里云CDN的地址,实体文件在阿里云CDN)下载一个资源包(可以简单理解成多个音频文件组成的资源包),下载到本地之后实现本地播放。但是后台对应的资源包运营同事存在修改的情况,当资源修改时故事机需要重新下载,没有修改就不需要重新下载就使用上次已经下载好的资源包。分析方法一服务器维护一个资源包版本号在服务器保存一个资源的版本号,运营同事没修改一次资源包的内容版本号就++。故事机请求资源的时候带上上次的版本号,服务器接收到故事机传过来的版号

2021-07-16 15:08:51 620

原创 awk从nginx日志统计当天的qps

Nginx日志格式nginx配置的日志格式(包含了请求ip、请求时间、请求的地址、负载转发的目标地址、请求方法、响应时间、响应状态等等) log_format main =json '{ "remote_addr": "$remote_addr", ' '"remote_user": "$remote_user", ' '"@timestamp": "$t

2021-07-16 00:02:29 1062 1

原创 Mysql学习记录 - 浅析三范式

目前关系性数据库一共有6种范式第一范式(1NF) 第二范式(2NF) 第三范式(3NF) 第BC范式(BCNF,也称巴斯-科德范式) 第四范式(4NF) 第五范式(5NF,也称完美范式)通常我们设计关系型数据库的时候,满足3NF,最多满足BC范式就够了。这六级范式遵循向下包含的原则,比如符合2NF的关系模式,必定符合1NF满足范式规定的数据库有哪些优点?表结构简洁、明晰,在以后应用的过程中insert、delete、update等操作不会发生异常 解决数据冗余的问题,减少磁盘空

2021-07-14 01:05:52 291

原创 Mysql学习记录 - 事务

(建议下面的例子码友们能够自己动手写写,这样理解更加深刻。尤其是事务隔离等级的例子)当前数据库(Mysql)版本为:8.0.20mysql> SELECT VERSION();+-----------+| VERSION() |+-----------+| 8.0.20 |+-----------+1 row in set (0.00 sec)下面的例子都是基于t_user表来演示的,表的DML如下:DROP TABLE IF EXISTS `t_user`;C

2021-07-11 20:44:27 435 1

awk测试从nginx查询qps的测试日志.log

awk测试从nginx查询qps的测试日志

2021-07-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除