写在前面上一篇文章原子性问题的宏观理解带领大家了解了锁和资源的模型,有了这篇文章的铺垫,相信理解这一篇文章就非常轻松了当我们要保护单个资源并对其进行修改其实很简单,只需按照下图分三步走创建受保护资源R的锁加锁进入临界区解锁走出临界区上图的关键是「R1的锁保护R1」的指向关系是否正确如果都是保护单个资源这样简单,程序猿的世界该有多美好,可惜并不是,通常我们需要保护多个资源保护多个资源保护多个没有关系
分类:
其他好文 时间:
2020-08-02 10:23:49
阅读次数:
97
上一篇文章可见性有序性,Happens-before来搞定,解决了并发三大问题中的两个,今天我们就聊聊如何解决原子性问题原子性问题的源头就是线程切换,但在多核CPU的大背景下,不允许线程切换是不可能的,正所谓「魔高一尺,道高一丈」,新规矩来了:互斥:同一时刻只有一个线程执行实际上,上面这句话的意思是:对共享变量的修改是互斥的,也就是说线程A修改共享变量时其他线程不能修改,这就不存在操作被打断的问题
分类:
其他好文 时间:
2020-08-02 10:22:55
阅读次数:
93
写在前面上一篇文章并发Bug之源有三,请睁大眼睛看清它们谈到了可见性/原子性/有序性三个问题,这些问题通常违背我们的直觉和思考模式,也就导致了很多并发Bug为了解决CPU,内存,IO的短板,增加了缓存,但这导致了可见性问题编译器/处理器擅自优化(Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行),导致有序性问题初衷是好
分类:
移动开发 时间:
2020-08-02 10:22:41
阅读次数:
107
过滤器(Filter) 所谓过滤器,其实就是一个服务端组件,用来截取用户端的请求与响应信息。 具体流程如下: 过滤器的应用场景: 1.对用户请求进行统一认证,保证不会出现用户账户安全性问题 2.编码转换,可在服务端的过滤器中设置统一的编码格式,避免出现乱码 3.对用户发送的数据进行过滤替换 4.转换 ...
分类:
其他好文 时间:
2020-07-31 19:15:53
阅读次数:
98
昨天实现了一个计算机函数的提取过程,不过就函数提取的公式而言,因为用的是sklearn提供的多元线性回归分析函数,其中有最小二乘法和梯度下降的模拟。 但是无论是上述的哪种函数的模拟,一旦针对一些相对而言比较复杂的多元非线性问题,就很有可能不能发挥出函数提取的功能了。要做到一种精度比较高的模拟图像识别 ...
分类:
其他好文 时间:
2020-07-29 10:04:19
阅读次数:
67
一、zookeeper是什么(概括)? Zookeeper是一个分布式协调服务的开源框架,为分布式程序提供协调服务,同时用来解决分布式集群中应用系统的数据一致性问题。 zookeeper在本质上是一个分布式的小文件存储系统,以目录树方式存储数据,对树中的节点进行管理,从而维护和监控存储数据的节点状态 ...
分类:
其他好文 时间:
2020-07-26 23:21:12
阅读次数:
98
Spring boot项目结合docker容器用,打了个jar包,启动的时候竟然说:no main manifest attribute, in target/*.jar 但也不是所有的微服务的jar包都不能启动,比对一下这两个包对应的打包插件 可以用的长这样: <plugin> <groupId> ...
分类:
编程语言 时间:
2020-07-21 22:14:51
阅读次数:
88
每个人都拥有大厂梦,我也不例外,在小公司待久了,感觉人会荒废掉,太轻松,没有压迫感。在众多大厂中,最终选择了阿里。“年轻、活力、富有激情”是我听到得最多对它的形容词,所以毅然决然,希望自己能够在这个舞台上展示出自己。以下分享这次面试阿里中间件和蚂蚁的面试题,另外还对自己的面试做了一些总结,总结里含有一些学习方法和资料,需要的朋友可以直接在文末免费领取!开始~~阿里中间件(四面)Java中间件一面技
分类:
数据库 时间:
2020-07-21 11:39:34
阅读次数:
99
P问题 NP问题 NPC问题 NP-Hard问题 简述 预备知识 一个问题的解决严格一样上来说,需要两步: 找到一个解 验证解的正确性 如果一个问题不能在多项式事件内得到验证的话,那么这个问题的研究价值可能不会很大 P问题 可以在多项式时间内解决的问题,或者说目前发现已经找到的可以在多项式时间内解决 ...
分类:
其他好文 时间:
2020-07-19 23:35:33
阅读次数:
80
一、集群知识 1.集群的概念 所谓的集群,就是通过添加服务器的数量,提供相同的服务,从而让服务器达到一个稳定、高效的状态。 2.使用redis集群的必要性 问题:我们已经部署好了redis,并且能启动一个redis,实现数据的读写,为什么还要学习redis集群? 答:(1)单个redis存在不稳定性 ...