240 发简信
IP属地:重庆
  • 120
    linux下ffmpeg安装,并解决MP3、MP4无法在网页播放的问题

    实验环境 centos 7 参考文档 Linux安装ffmpeg,并增加libx264编码[https://blog.csdn.net/BurningSilence/arti...

  • 120
    老旧项目二次开发指南

    老旧项目二次开发指南 背景:最近新入职公司,负责技术。由于各种原因现在项目全权交由我们团队负责,之前的研发团队不再参与(及以后可能完全联系不上)。作为技术负责人,又刚入职公司...

  • 120
    ASM Bytecode Framework探索与使用

    ASM是一款基于java字节码层面的代码分析和修改工具。无需提供源代码即可对应用嵌入所需debug代码,用于应用API性能分析。ASM可以直接产生二进制class文件,也可以...

  • LockSupport(park/unpark)源码分析

    转载:http://www.cnblogs.com/zhizhizhiyuan/p/4966827.html concurrent包是基于AQS (AbstractQueue...

  • 120
    Kafka史上最详细原理总结上

    Kafka史上最详细原理总结分为上下两部分,承上启下 Kafka史上最详细原理总结上 Kafka史上最详细原理总结下 Kafka Kafka是最初由Linkedin公司开发,...

  • 120
    死磕ThreadLocal,为何ThreadLocal实现如此复杂,直接封装HashMap不香吗?

    一直以来认为ThreadLocal只是简单的分装了一下HashMap,使用线程作为key来存储。这样也符合我们的习惯思维。需要存储多少线程变量就创建多少ThreadLocal...

  • @星耀之梦
    好久没有上简书,不知道仁兄是否已经明白这个问题,特地重新把问题看了遍。
    还是之前说到的和线程五种状态相关。楼主的代码中for循环的内容就是notify()方法,及让lock从等待队列中唤醒一个线程到锁池中。

    13.1 大佬问我: notify()是随机唤醒线程么?

    大佬问我: notify()是随机唤醒线程么? 我的内心戏: 这不是显而易见么! 肯定是啊! jdk关于notify()注释都写的很清楚!不过这么简单的问题? 机智如我...

  • @白米饭a cpu7持有,也应该只是通知cpu7持有的数据失效才对吧。cpu0应该还是从主存获取数据才对。

    CAS原理

    1、什么是CAS? CAS:Compare and Swap,即比较再交换。 jdk5增加了并发包java.util.concurrent.*,其下面的类使用CAS算法实现了...

  • 关于内存屏障的我赞同,
    但对于“处理器A读b=0,处理器B读a=0。A1写a=1先写到处理器A的写缓存区中,此时内存中a=0。如果这时处理器B从内存中读a,读到的将是0。” 这句话我表示反对,
    内存一致性协议可以保证AB读到的数据是同样的值。真正导致产生数据都是0,0的原因,应该是“处理器重排序”导致的,而非缓存导致的内存不可见。及a=1;x=b在单个处理器看来顺序的先后顺序不影响结构,所以可以重排序为x=b,a=1。而内存屏障正式为了解决这个问题。
    缓存一致性协议解决内存可见性问题;
    内存屏障解决处理器重排序问题;

    (十四)内存屏障

    重排 内存屏障 内存屏障种类 编译器和处理器必须同时遵守重排规则。多核处理器需使用内存屏障指令来确保一致性。即使编译器优化掉了一个字段访问(因为一个读入的值未被使用),需要产...

  • 我也认同,博主在这阐述问题的时候,没有详细的讲述线程5种状态,导致理解上其实有换概念的情况。notify()是把线程从等待队列通知到锁池中,而博主最终打印的事线程的执行(这中间还涉及到锁的抢占,这也是为啥前后两次打印不一样真正的原因)

    13.1 大佬问我: notify()是随机唤醒线程么?

    大佬问我: notify()是随机唤醒线程么? 我的内心戏: 这不是显而易见么! 肯定是啊! jdk关于notify()注释都写的很清楚!不过这么简单的问题? 机智如我...

  • 不错,讲得很透彻;不过有个地方说得对于为何第一次执行出来是乱序的问题,博主只是简单说了下”synchronized 是不公平的“一笔带过。我在这浅陋的补充下,如有不对还请各位指教。
    接着博主的例子讲,由于采用的for循环去调用notify()方法。会从“等待队列”唤醒一个线程(A)进入“锁池”。而for一次循环之后释放锁,紧接着马上又会申请获取锁,这个时候可以理解为for循环线程和A线程会抢锁来执行。如果此时for循环线程继续获得锁,则又会从“等待队列”唤醒一个线程(B)进入“锁池”。然后for循环线程又释放锁,紧接着又申请获取锁,此时就存在了for循环线程、A线程、B线程、都在抢占锁,如果这时候B线程获取了锁,则无序的情况就出来了。
    建议博主讲得时候可以先简单秒速下线程的5种状态,这样可能更好理解。

    13.1 大佬问我: notify()是随机唤醒线程么?

    大佬问我: notify()是随机唤醒线程么? 我的内心戏: 这不是显而易见么! 肯定是啊! jdk关于notify()注释都写的很清楚!不过这么简单的问题? 机智如我...

  • 对于假设4的解释,不是特别的认同。
    在事务3提交了之后;对于事务2而言不可见事务3中提交的该条数据的(即id为4的这条数据),按逻辑来讲事务二去修改该数据不成立。建议把该处的跟新语句换成“update yang set name='Tian'”这样的全局更新语句(此时也会更新ID=4的这条数据)更好。

    对于幻读我有另外的一个案例,可供大家参考:
    接着楼主的例子:事务3中插入id=4的这条数据之后,事务而中是查询不可见的;而此时如果事务2中又去插入id=4的这条数据会报错;这样对于事务2而言id=4的这条数据就像是产生“幻觉”一样

    MVCC 能解决幻读吗?

    昨天面试当中一个小伙认为MVCC可以解决RR中的幻读问题, 先说结论, MVCC不能解决幻读,很遗憾还是得用锁。 下面详细描述一下。InnoDB的MVCC, 实现的是基于多...

  • @船_长 假设4的案例,我感觉确实有问题。应该改成你现在说的这种。可能更适合一些。

    MVCC 能解决幻读吗?

    昨天面试当中一个小伙认为MVCC可以解决RR中的幻读问题, 先说结论, MVCC不能解决幻读,很遗憾还是得用锁。 下面详细描述一下。InnoDB的MVCC, 实现的是基于多...

  • 楼主分析得很透彻,最近学seata也给我这样的感觉,是方便的分布式事务工具,但设计调用还是略复杂,开销不低,高并发下的吞吐量比较堪忧

  • 120
    聊聊IO多路复用之select、poll、epoll详解

    IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合: 当客户处理多个描述符时(一般是交互式输入和网络套接口),必须使...

  • 120
    聊聊Linux 五种IO模型

    上一篇《聊聊同步、异步、阻塞与非阻塞》[https://www.jianshu.com/p/aed6067eeac9]已经通俗的讲解了,要理解同步、异步、阻塞与非阻塞重要的两...