0%

Manacher算法是经典的算法,它的作用是给定一个字符串,返回str中最长回文字串的长度。
举例,str=”123”,其中的最长回文字串是”1”、”2”、”3”,所以返回1。
str=”abc1234321ab”,其中最长的回文字串为”1234321”,所以返回7。

阅读全文 »

疫情

没想到这次疫情炸出了这么多牛鬼蛇神。
原本以为李文亮医生的事情已经算是刷新了认知了,没想到最近几天……

阅读全文 »

activity的启动流程

activity的启动过程分为两种,一种是根Activity的启动过程,另一种是普通Activity的启动过程。根activity的启动过程更复杂,也更具代表性,所以这里先分析根activity的启动过程。根activity的启动分为三部分:Launcher启请求AMS(ActivityManagerService)过程、AMS到ApplicationThread的调用过程以及ActivityThread启动Activity的过程。可以在这个网站在线看9.0.0_r3源码

1,Launcher请求AMS过程
阅读全文 »

一致性哈希原理产生的原因及应用

在工程中,我们常用服务器集群来实现数据缓存,有以下常见的策略:

  • 添加、删除、查询数据,都将数据的id通过哈希算法转换成一个哈希值,机尾key
  • 若有N台机器,则计算key % N的值,这个值就是该条数据所属的机器编号,无论是添加、查询、删除操作,都只在这台机器上进行
    阅读全文 »

该文转载于java锁介绍:独享锁/共享锁+公平锁/非公平锁+乐观锁/ 悲观锁
在Java并发场景中,会涉及到各种各样的锁,比如:高并发编程系列:4种常用Java线程锁的特点,性能比较、使用场景,这些锁有对应的种类:公平锁,乐观锁,悲观锁等等,这篇文章来详细介绍各种锁的分类:

  • 公平锁/非公平锁
  • 可重入锁
  • 独享锁/共享锁
  • 分段锁
  • 自旋锁
    阅读全文 »

java并发编程与Synchronized简介

提到java并发编程我们就不得不谈到synchronized,我们现在学习synchronizd的底层原理。掌握以下知识点:

  • 1,synchronized的底层原理
  • 2,synchronized锁与JVM的实现
  • 3,synchronized锁升级顺序
  • 4,synchronized锁的优劣和应用场景

    synchronized

    synchronized中文意思是”同步”,或”同步锁”。
    synchronized的作用是保证在同一时刻,被修饰的代码块或方法只会有一个线程执行,以达到保证并发环境下的线程安全。
    阅读全文 »