
获得徽章 14
- #每天一个知识点# CAS(Compare And Swap 比较并且替换)是乐观锁的一种实现方式,是一种轻量级锁,JUC 中很多工具类的实现就是基于 CAS 的。
CAS 是怎么实现线程安全的?
线程在读取数据时不进行加锁,在准备写回数据时,先去查询原值,操作的时候比较原值是否修改,若未被其他线程修改则写回,若已被修改,则重新执行读取流程。
举个栗子:现在一个线程要修改数据库的name,修改前我会先去数据库查name的值,发现name=“帅丙”,拿到值了,我们准备修改成name=“三歪”,在修改之前我们判断一下,原来的name是不是等于“帅丙”,如果被其他线程修改就会发现name不等于“帅丙”,我们就不进行操作,如果原来的值还是帅丙,我们就把name修改为“三歪”,至此,一个流程就结束了。展开评论1 - #每天一个知识点# 想要从String中移除空格部分,有多少种方法,作者根据经验,总结了以下7种(JDK原生自带的方法,不包含第三方工具类库中的类似方法):
trim() : 删除字符串开头和结尾的空格。
strip() : 删除字符串开头和结尾的空格。
stripLeading() : 只删除字符串开头的空格
stripTrailing() : 只删除字符串的结尾的空格
replace() : 用新字符替换所有目标字符
replaceAll() : 将所有匹配的字符替换为新字符。此方法将正则表达式作为输入,以标识需要替换的目标子字符串
replaceFirst() : 仅将目标子字符串的第一次出现的字符替换为新的字符串
需要注意的最重要的一点是,在Java中String对象是不可变的,这意味着我们不能修改字符串,因此以上所有的方法我们得到的都是一个新的字符串。展开评论1 - 一、索引的概念
索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。
二、索引的特点
1.索引可以加快数据库的检索速度
2.索引降低了数据库插入、修改、删除等维护任务的速度
3.索引创建在表上,不能创建在视图上
4.索引既可以直接创建,也可以间接创建
5.可以在优化隐藏中,使用索引
6.使用查询处理器执行SQL语句,在一个表上,一次只能使用一个索引
三、索引的优点
1.创建唯一性索引,保证数据库表中每一行数据的唯一性
2.大大加快数据的检索速度,这也是创建索引的最主要的原因
3.加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
4.在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
5.通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能。
四、索引的缺点
1.创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加
2.索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大
3.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度 #每天一个知识点#展开评论1 - #每天一个知识点#
cookie、session以及token的区别
(1)cookie数据存放在客户的浏览器上,session数据放在服务器上。而token是接口测试时的鉴权码,一般情况下登陆后才可以获取到token,然后在每次请求接口时需要带上token参数。
(2)cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session,session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面应当使用cookie
(3)可以将登陆信息等重要信息存放为session;其他信息需要保存,可以放在cookie展开评论1 - cookie、session以及token的区别
(1)cookie数据存放在客户的浏览器上,session数据放在服务器上。而token是接口测试时的鉴权码,一般情况下登陆后才可以获取到token,然后在每次请求接口时需要带上token参数。
(2)cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session,session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面应当使用cookie
(3)可以将登陆信息等重要信息存放为session;其他信息需要保存,可以放在cookie展开评论1 - 1、封装
封装就是把对象的属性和行为结合为一个独立的整体,并尽可能多的隐藏对象的内部实现细节。
2、继承
对象用来封装数据和功能,但我们要创建一个新类,然而它又与已存在的类具有部分相同的属性或功能,此时,为了代码复用原则,可以使用继承来实现。
继承通过基类和子类的概念来表达,基类的所有特征和行为都可以与子类共享。也就是说,你可以通过基类呈现核心思想,从基类继承的子类则为核心思想提供不同的实现方式。
有时基类和子类的方法都是一样的,这时你就可以直接用子类的对象代替基类的对象,这种纯替代关系通常叫做替换原则。
有时,子类会添加一些新的方法,此时就是不完美替换。
3、多态
通过将子类对象引用赋给父类对象引用来实现动态方法调用。展开评论1 - #与A-SOUL一起成为更好的自己#
这个夏天,来一场破次元的狂欢!
稀土掘金技术社区再度携手虚拟人气偶像A-SOUL推出好好生活2.0系列周边!
6月16日 中午12点 全网预售开启!
折叠收纳箱、一人食电煮锅、电脑内胆包和文具套装四款新品与大家见面啦!极致设计、匠心制作、限量发售!
来稀土掘金技术社区参与联名企划活动,更有机会获得、A-SOUL联名手摇扇、Memory棉质徽章、夏日记忆A-SOUL明信片等惊喜大奖等你拿!
就是现在!稀土掘金与A-SOUL邀你一起畅游技术之旅,快来Pick你的周边好物吧!
点赞+评论,抽取20位掘友送出稀土掘金 x A-SOUL联名手托展开967817 - #每天一个知识点#
什么是Linux?
Linux全称GNU/Linux,是一种免费使用和自由传播(开源)的UNIX操作系统,安装在我们我们的计算机硬件上,用来管理计算机的硬件和软件资源管理等。
当然也并不只是因为免费和开源导致Linux为啥这么火的,相比于widows系统它还是有很多优点的:
Linux相比较于widows系统他更注重安全性,比如说在Linux目录的下的文件都有一个权限的控制,不同的用户访问的权限能有不同的控制权限,所以它的安全性更好一点
相比较于widows系统,Linux的稳定性更好,很少会出现系统崩溃的情况出现,因为权限控制到位了,很多核心应用文件没有权限是不能进行操作的,还有很多配置更改都不需要去重启机器,不会影响到相关的服务程序。
Linux还有很多其他的一些特点比如说灵活性,因为开源嘛,还有对硬件没啥要求等等,所以现在很多的公司都是使用Linux系统来作为服务器。展开22 - #每天一个知识点# I/O 其实就是 input 和 output 的缩写,即输入/输出。
那输入输出啥呢?
比如我们用键盘来敲代码其实就是输入,那显示器显示图案就是输出,这其实就是 I/O。
而我们时常关心的磁盘 I/O 指的是硬盘和内存之间的输入输出。
读取本地文件的时候,要将磁盘的数据拷贝到内存中,修改本地文件的时候,需要把修改后的数据拷贝到磁盘中。
网络 I/O 指的是网卡与内存之间的输入输出。
当网络上的数据到来时,网卡需要将数据拷贝到内存中。当要发送数据给网络上的其他人时,需要将数据从内存拷贝到网卡里。
那为什么都要跟内存交互呢?
我们的指令最终是由 CPU 执行的,究其原因是 CPU 与内存交互的速度远高于 CPU 和这些外部设备直接交互的速度。
因此都是和内存交互,当然假设没有内存,让 CPU 直接和外部设备交互,那也算 I/O。
总结下:I/O 就是指内存与外部设备之间的交互(数据拷贝)。展开12