- 博客(27)
- 收藏
- 关注
原创 MAC超级简单构建Spring源码
在github上拉取5.2.x的分支,如果速度过慢,可以将代码放到码云上,在码云上拉取使用git clone拉取代码代文件夹由于下载速度过慢,需要在build.gradle加入国内镜像maven {url 'http://maven.aliyun.com/nexus/content/groups/public/' }maven {url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}由于可能存在gra..
2020-12-08 13:36:32 657 2
原创 Redis内存淘汰策略与LRU算法
Redis内存淘汰策略如果一个键是过期的,那它到了过期时间之后是不是马上就从内存中被被删除呢??如果不是,那过期后到底什么时候被删除呢??是个什么操作?定时删除Redis不可能时时刻刻遍历所有被设置了生存时间的key,来检测数据是否已经到达过期时间,然后对它进行删除。立即删除能保证内存中数据的最大新鲜度,因为它保证过期键值会在过期后马上被删除,其所占用的内存也会随之释放。但是立即删除对cpu是最不友好的。因为删除操作会占用cpu的时间,如果刚好碰上了cpu很忙的时候,比如正在做交集或排序等计算的时候
2020-12-01 23:24:43 179
原创 Mac中idea报错:Error:(1, 8) java: 非法字符: ‘\u00a0‘
Mac中idea报错:Error:(1, 8) java: 非法字符: ‘\u00a0’尝试了网上很多的方法:如将utf-8换成utf-16,在将utf-16换回成ut-8,或将代码复制到其他的地方,改成utf-8 no bom的形式,都不成功。我的改进方法:使用全文件替换:将报错的一个小空格复制到需要替换的地方,用普通空格替换就能处理了如图:...
2020-11-20 23:20:31 2163 2
原创 循环依赖之三级缓存
循环依赖之三级缓存文章目录循环依赖之三级缓存循环依赖概念三大Map和四大方法A/B对象的迁移断点调试调试总结创建bean过程为什么构造器无法解决循环依赖解决循环依赖流程文档参考周老师的资料循环依赖概念官方概念:Circular dependenciesIf you use predominantly constructor injection, it is possible to create an unresolvable circular dependency scenario.Fo
2020-11-11 22:23:12 2222
原创 高并发之抢红包实战
抢红包实战文章目录抢红包实战整体架构发红包流程抢红包流程二倍均值算法数据库表的设计发红包自测抢红包自测jmeter高并发压测高并发下的优化(待续)整体架构整体业务主要包括发红包,抢红包和点红包其整体架构如图所示:发红包流程发红包如微信,输入红包个数和金额,生成红包,之后就能抢红包了抢红包流程当在群里看到红包图案开始抢红包流程,开始判断账号合法性,如通过则从缓存中判定红包个数是否大于0,如果小于0,则表示红包被抢光了;否则表示缓存中有红包,可以抢然后是拆红包,从缓存中随机弹出一个金额,如果
2020-11-09 23:20:39 1038
原创 JVM3:实战:内存分配与回收策略
实战:内存分配与回收策略对象优先在Eden分配试分配三个2MB大小和一个4MB大小的对象,在运行时通过-Xms20M、-Xmx20M、-Xmn10M这三个参数限制了Java堆大小为20MB,不可扩展,其中10MB分配给新生代,剩下的10MB分配给老年代。-XX:Survivor-Ratio=8决定了新生代中Eden区与一个Survivor区的空间比例是8∶1,从输出的结果也清晰地看到“eden space 8192K、from space 1024K、tospace 1024K”的信息,新生代总可用空间
2020-11-03 23:05:25 164
原创 JVM2:垃圾收集器与内存分配策略
垃圾收集器与内存分配策略文章目录垃圾收集器与内存分配策略对象回收引用计数算法可达性分析算法四种引用类型生存与死亡回收方法区垃圾收集算法标记清除法复制算法标记-整理算法HotSpot的算法细节实现根节点枚举安全点安全区域记忆集写屏障并发的可达性分析经典的垃圾收集器Serial收集器ParNew收集器Parallel Scavenge收集器Serial Old收集器Parallel Old收集器CMS收集器Garbage First收集器(G1收集器)对象回收引用计数算法在对象中添加一个引用计数器,每当
2020-11-02 22:13:28 99
原创 JVM1:Java内存区域
Java内存区域文章目录Java内存区域运行时数据区程序计数器Java虚拟机栈Java堆方法区运行时常量池直接内存HotSpot虚拟机对象探秘对象的创建对象的内存布局对象的访问定位为什么使用元空间替换永久代OutOfMemoryError异常方法区/常量池OutOfMemoryError此文档基本上是参考周志明老师的深入理解JVM虚拟机第三版运行时数据区Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如图所示。程序计数器程序计数器(Program Counter Register
2020-10-31 18:21:47 129 1
原创 JUC多线程理解
JUC多线程及高并发文章目录JUC多线程及高并发一、请你谈谈对volatile的理解1、volatile是java虚拟机提供的轻量级的同步机制2、JMM(java内存模型)3、你在那些地方用过volatile二、CAS你知道吗1、compareAndSet----比较并交换2、CAS底层原理?对Unsafe的理解3、CAS缺点三、原子类AtomicInteger的ABA问题?原子更新引用?1、ABA如何产生2、如何解决?原子引用3、时间戳的原子引用四、我们知道ArrayList是线程不安全的,请编写一个不
2020-10-29 19:37:29 187
原创 LockSuport原理
LockSuport文章目录LockSuport1. 几种让线程等待和唤醒的方法Object类中的wait和notify方法实现线程等待和唤醒:Condition接口中的await后signal方法实现线程的等待和唤醒LockSupport类中的park等待和unpark唤醒源码分析1. 几种让线程等待和唤醒的方法方式1: 使用Object中的wait()方法让线程等待, 使用Object中的notify()方法唤醒线程方式2: 使用JUC包中Condition的await()方法让线程等待,使
2020-10-29 19:25:57 353
原创 AbstractQueuedSynchronizer(AQS)详解
AbstractQueuedSynchronizer(AQS)详解文章目录AbstractQueuedSynchronizer(AQS)详解什么是AQSAQS初步**AQS自身有:state+CLH**内部类NodeAQS内部基本结构ReentrantLock解读AQS模拟抢锁(非公平锁)A线程抢锁成功过程B线程抢锁失败A线程释放锁B线程抢锁成功更新队列什么是AQS是用来构建锁或者其它同步器组件的重量级基础框架及整个JUC体系的基石, 通过内置的FIFO队列来完成资源获取线程的排队工作,并通过一个in
2020-10-29 18:07:50 103
原创 git指令详解
在工作中遇到这样一个问题,因为Git上的master分支无法直接push上去,所以我在本地创建了一个自己的分支complaint001,然后push到了远程Git仓库。之后,我需要将自己的这个分支合并到开发的dev分支上,记录一下操作的过程。首先使用git pull命令,将远程仓库的分支数据拉取到本地当我想从远程仓库里拉取一条本地不存在的分支时:git checkout -b 本地分支名...
2019-12-03 17:00:55 269
原创 环形双向列表
public static int getResult(int n) { if(n <= 1) return n; //构建双向环形链表 CirclePeple head=null ; for(int i = 1;i <=n ;i++) { CirclePeple circlePeple = new CirclePeple(i); if(i...
2019-09-21 17:11:41 219
原创 mysql筛选重复数据
筛选重复数据-------------单列-----------------------SELECT 检查字段, COUNT(检查字段)FROMtable_nameGROUP BY 检查字段HAVING COUNT(检查字段) > 1-------------多列------------------SELECT 检查字段1, COUNT(检查字段1),检查字段...
2019-08-13 15:50:43 7902
原创 MybatisPlus语法
1 eq格式化时间eq("DATE_FORMAT(gmt_check,'%Y-%m')", date)2 按多字段模糊查询query.and(w->w.like("title", form.getName()).or().like("storeName", form.getName()));3 mybatis使用全局变量DATE_ADD(gmt_create,INT...
2019-07-24 09:41:54 1682
原创 链表-给予java实现
package datastructure.linkedlist;public class LinkedListDemo { public static void main(String[] args) { LinkedList list = new LinkedList(); // list.add(new HeroNode(1, "AAA", "AAA")...
2019-07-18 14:49:39 130
原创 疏散数组的应用
package datastructure.parsearray;public class ChessArray { public static void main(String[] args) { //初始化数组 int[][] chess = new int[11][11]; chess[1][3] = 1; chess[2][5] = 2; for...
2019-07-16 18:03:16 201
原创 java8-Stream流
一 创建Streampackage stream;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.stream.Stream;import org.junit.Test;import com.dhy.boot.Employee;/** ...
2019-07-12 11:39:45 165
原创 java基础——方法参数(值传递和引用传递)
本文参考java核心卷1首先回顾一下在程序设计语言中有关将参数传递给方法(或函数)的一些专业术语。按 值调用(call by value)表示方法接收的是调用者提供的值。而按引用调用(call by reference) 表示方法接收的是调用者提供的变量地址。一个方法可以修改传递引用所对应的变量值,而 不能修改传递值调用所对应的变量值。“按……调用”(call by)是一个标准的计算机科学术语...
2019-07-08 16:51:24 3466
转载 SpringSecurity权限参数
1.首先当我们要自定义Spring Security的时候我们需要继承自WebSecurityConfigurerAdapter来完成,相关配置重写对应 方法即可。2.我们在这里注册CustomUserService的Bean,然后通过重写configure方法添加我们自定义的认证方式。3.在configure(HttpSecurity http)方法中,我们设置了登录页面,而且登录页面任何人...
2018-12-21 10:34:32 662
转载 功能结构图
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/you23hai45/article/details/9259787 1、系统前台功能结构图2、系统后台功能结构图 ...
2018-12-12 15:08:25 22001 3
转载 触发器的实现
原文出处:https://blog.csdn.net/qq_20867981/article/details/71414208?locationNum=1&amp;fps=1 现在有两个表,一个表存放学生信息,一个表存放学生数量:现在想实现一个功能:当学生增加或者减少时,相应的学生数量也会发生变化。假如使用触发器的话,需要在stu_info表里设置触发器:测试:一...
2018-11-27 11:35:26 269
原创 Linux基本指令(搜索查询)
搜索查询find指令find指令将从指定目录下,向下递归遍历各个子目录,将满足条件的目录或者文件夹显示在终端。基本语法:find[搜索范围][现象]选项说明:选项 功能 -name 按文件名查找 -user 按用户名查找 -size 按文件大小查询 应用实例: 案例一:按文件名查找...
2018-11-13 14:07:00 200
原创 Linux基本指令(日期类)
事件日期类date指令 显示当前时间基本语法: 1):date (功能描述:显示当前时间) 2):date+%Y (功能描述:显示当前年份) 3):date+%m (功能描述:显示当前月份) 4):date+%d (功能描述:显示当前是那一天) 5):date+%Y-%m-%d %H:%M:...
2018-11-13 11:19:08 133
原创 Linux基本指令(文件目录类)
实用指令指定运行级别运行级别说明:0:关机1:单用户【找回丢失密码】2:多用户状态没有网络服务3:多用户状态有网络服务4:系统未使用保留给用户5:图形界面6:系统重启常用运行级别是3、5,要修改默认的运行级别可改文件 /etc/inittab的id:5:initdefault这一行的数字案例:通过init切换不同的运行级别。 init 3 ...
2018-11-12 17:37:19 806
原创 Linux基本指令(用户管理)
Vim的使用:这里介绍最常用的几个快捷键:拷贝当前行 yy 拷贝当前行向下的5行 5yy 并粘贴(也有机器yy是复制,粘贴用p) 删除当前行 dd 删除当前行的向下5行 5dd 在文件中查找某个单词[命令行下/关键字,回车查找,输入n查找下一个] 设置文件的行号/取消文件的行号[命令行下set nu/set nonu] 编辑/etc/profile文件使用快捷键到文件的...
2018-11-06 11:50:41 244
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人