自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 集合线程安全分类

上锁的方法同步代码块ReentrantLock锁读写锁因为引入锁 所有有一些集合是线程安全的线程安全的集合Vector:线程安全 但是读读阻塞 读写阻塞 写写阻塞 效率低下ConcurrentHashMap:线程安全 采用同步代码块分段上锁 因为上锁 导致效率比HashMap低下CopyOnWriteArrayList:线程安全 通过复制一个副本 进行写操作 读的时候从正品里面读 写在副本里面写 实现线程安全CopyOnWriteArraySet:线程安全 在上面一个基础

2020-12-05 18:01:15 110

原创 从源码分析ConcurrentHashMap线程安全和高效的特性

在IDEA里面通过ctrl+n搜索ConcurrentHashMap类这样就得到了ConcurrentHashMap类的源码再在这个类中通过ctrl+f12查找类中的方法put在put方法里分析源码看它为什么可以实现线程安全而又高效在put方法里可以看到它调用了putVal方法所以需要再到putVal方法里去查看(最后一句tab = helpTransfer是在给存储hash码值的数组tab扩容)cas算法拿期望值去比较要替换的变量如果一样 就把新值替换上去如

2020-12-05 17:47:14 141

原创 Redis学习——什么是缓存穿透?

比如数据库中id都是1,2,3,4等等的数据,通过id=-1去查询,但是数据库中没有这条数据,虽然没有,但是这条数据依然被加入到了redis缓存中去,但是缓存的这条数据利用不上,这种情况就是缓存穿透。危害:如果黑客通过id=最大值+random进行反复查询 会导致redis最终无法使用 更严重会导致数据库压力太大造成宕机。定义:客户端查询一个数据库中没有的数据记录导致缓存存在无法利用,称之为缓存穿透,或者叫缓存击穿。mybatis中cache解决了缓存穿透,将数据库中没有查询到结果也进行缓存,即缓

2020-09-22 15:15:58 178

原创 Redis基础概念

Jedis是redis官方推荐的面向java操作redis的客户端。SpringDataRedis是Spring框架的一部分,它对jedis进行高度封装,里面有一个RedisTemplate的java类可以很方便地实现对redis的操作 方便与Spring的其他框架搭配使用。...

2020-09-19 22:49:42 80

原创 HashMap学习笔记

JDK1.8之前HashMap的数据结构是:数组+链表。JDK1.8之后的数据结构是:链表+数组+红黑树。阈值>8并且数组长度大于64,才将链表转换为红黑树,目的是为了高效的查询。存取是无序的。键和值位置可以为null,但是键位置只能是一个null。//表示定义一个键类型为String,值类型也为String的HashMap;HashMap<String,String> a = new HashMap<>();//表示定义一个键类型为String,值类型

2020-08-15 15:55:22 129

原创 Idea中把项目上传到Github仓库

在Idea上传项目到Github需要借助Git的工具下载地址:https://git-scm.com/download/win选择适合自己电脑的版本,图中的按钮可以帮你自动选择合适的版本由于是外网,自然下载速度很慢,平均10KB/S,如果要快点需要点手段。下载完成后安装,记住安装路径,下面要用到。打开Idea,左上角点开File->Settings->Version Control->Git和GitHub在弹出选择Git路径以后找到Git的安装路径,注意

2020-06-04 17:33:31 180

原创 SSM学习笔记——常用注解的使用

刚开始利用IDEA学习SSM框架用到一些注解的笔记@Data可以自动给bean(entity、对象)创建set,get,toString方法。@Controller告诉服务器这个是控制器。@RequestMapping@RequestBody告诉服务器返回的是字符串,不是页面。可以自动将对象转换为json数据。@value可以从propertites或者yml配置文件里面读取值下面为yml文件里面的格式...

2020-06-01 15:09:28 225

转载 Maven的环境变量配置

第一步:下载maven,官方下载地址:http://maven.apache.org/download.cgi第二步:解压zip文件第三步:配置环境变量第四步:最后打开cmd,输入mvn -version检测是否成功,如下是成功的反馈第五步:把本地仓库配置到指定路径,可以不配置,默认在c盘。在maven的文件夹里打开conf目录下的settings.xml文...

2020-04-19 14:16:54 164

原创 解决外网下载速度过慢问题

有的时候我们会用到外国人制作的软件,这就要去外网上下载正版,但是在外网下载东西有一个问题,就是下载速度会受限制导致下载变得很慢,每秒只要几KB的下载速度,这就导致一个100MB的小文件可能要下一整天甚至是下载失败,为了解决这个问题,在这篇博客里面提供一个简单的办法。需要准备的东西:百度网盘(1)登录我们需要下载的软件的官网找到下载链接。(本篇以StarUML为例进行介绍)图中这个是官网...

2020-03-21 15:47:51 11945 2

原创 MVC模式和SSM框架的学习

MVC是model+view+controller的缩写。M是模型-编写程序应有的功能,数据管理和数据库设计。V是视图层-界面设计人员进行界面设计。C是控制-控制器负责转发请求,对请求进行处理。SSM是Spring+Spring MVC+Mybatis的缩写,主流的Java EE企业级框架。其中,Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架,可以帮助我们创建对象。...

2020-02-11 21:25:54 359

原创 Third Python:字符

UTF-8编码如果文本基本上全部是英文,用 Unicode 编码比 ASCII编码需要多一倍的存储空间,在存储和传输上很不划算,因此又出现把Unicode编码转化为可变长编码的UTF-8编码。可以把Unicode字符根据不同的数字大小编码成1-6个字节,节省了存储空间,加快了数据传输。Python的字符串对于单个字符的编码,可以用函数ord()获取整数的表示方法,用函数chr()把编码对应字符转换...

2018-04-22 17:53:26 172

原创 Second Python:Python的基础

#printa = 100if a>=0: print(a)else: print(-a)以#开头的语句是注释。Python浮点数浮点数能用数学表示,例如3.63,-1.5。但是如果浮点数比较大则需要使用科学计数法,具体表示方法为将10用e来代替,拿掉×号,e后面跟一个表示10的多少次方的数字,例如1.25×109表示为1.25e9或者12.5e8。#在Python里...

2018-04-22 13:40:58 344

原创 First Python:Python的使用以及输入输出

在电脑上面完成Python的安装之后,按Win+r调出运行,并输入cmd打开Python,如下图。在python界面里面,输入py后按回车键可以直接进入交互界面,看到提示符&gt;&gt;&gt;就表示当前在 Python交互式环境中了,这个时候可以输入任何 Python 代码,按回车键后可以马上得到执行结果。在交互环境下也可以输入在交互式环境输入 exit()并回车,就可以退出 Python 交...

2018-04-15 13:17:14 373

空空如也

空空如也

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

TA关注的人

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