- 博客(63)
- 收藏
- 关注
原创 bad magic number in ‘application‘: b‘\x03\xf3\r\n‘:
原因该问题是由缓存中python版本的差异冲突引起的。缓存以“ pycach ”的形式存储在文件名下,尝试查找这些文件并删除它们,然后再次尝试使用正确版本的 python 运行项目。处理Linux下一行命令就可以解决find . -name \*.pyc -deletewindows下有几种方法一行命令del *.pyc /s /a /qPython脚本来解决import ospath = 'project-path'for prefix, dirs, files i
2022-03-20 10:42:09 1343 1
原创 无序数组中求解中位数
问题: 从一个无序的数组中找出中位数这个类似于topk的问题,可以跟topK问题一起解决解法:1.可以使用小顶堆,堆的大小为数组的一半,遍历一遍以后,输出堆顶元素即可。2.使用快排+二分,找一个基数,通过快排的方式将数组(长度为n)划分为两部分,如果恰好两部分的长度相等(=(n-1)/2,),则中位数就是当前基数,如果左边长度小于(n-1)/2,那中位数就在右侧。反之在左侧。快排思想求解TOPK3. 代码:public class One { public static i.
2021-09-03 10:28:55 1085
原创 2021-07-16-单链表翻转的两种方法(递归和非递归)
单链表翻转(reverse函数)返回的是头指针。递归最重要的思想是:边界、返回值、递归调用。单链表翻转使用递归,返回值一定是固定不变的。也就是返回值和递归调用之间不存在关系。
2021-07-16 00:51:46 12514 1
原创 2021-06-29-贪心算法相关题型汇总
贪心算法贪心算法贪心算法相关题型LeetCode 376 摆动序列LeetCode 665 非递减数列LeetCode 435 不重叠的区间个数LeetCode 452 投飞镖刺破气球LeetCode 121 股票买卖LeetCode 122 股票买卖IILeetCode 605 种植花朵LeetCode 763 分隔字符串使同种字符出现在一起LeetCode贪心算法贪心算法的解释就是局部最优,进而全局最优,说白了,贪心算法相关题型LeetCode 376 摆动序列LeetCode 665
2021-07-02 01:56:37 386 1
原创 2021-06-22-二分法题型(LeetCode)
囊括了二分法的大部分题型:旋转数组、首个比target大的的元素,首个大于等于target的位置,矩阵的二分法
2021-06-23 01:51:54 181
原创 2021-06-21-递增序列相关题型(LeetCode)
递增序列相关题型首先子序列和子数组的概念是不一样的。LeetCode 1800 最大升序子数组和LeetCode 674 最长连续递增子序列LeetCode 300 最长递增子序列LeetCode 1143 最长公共子序列LeetCode 583 两个字符串的删除操作LeetCode 718 最长重复子数组LeetCode 673 最长递增子序列的个数
2021-06-22 01:06:03 212 1
原创 手写一个阻塞队列
队列比较好理解,数据结构中我们都接触过,先进先出的一种数据结构,那什么是阻塞队列呢?从名字可以看出阻塞队列其实也就是队列的一种特殊情况。举个例子来说明一下吧,我们去餐馆吃饭,一个接一个的下单,这时候就是一个普通的队列,万一这家店生意好,餐馆挤满了人,这时候肯定不能把顾客赶出去,于是餐馆就在旁边设置了一个休息等待区。这就是一个阻塞队列了
2021-04-07 12:30:42 380 1
原创 面试官:一致性哈希算法?
考虑到分布式系统每个节点都有可能失效,并且新的节点很可能动态的增加进来,如何保证当系统的节点数目发生变化时仍然能够对外提供良好的服务,这是值得考虑的,尤其实在设计分布式缓存系统时,如果某台服务器失效,对于整个系统来说如果不采用合适的算法来保证一致性,那么缓存于系统中的所有数据都可能会失效(即由于系统节点数目变少,客户端在请求某一对象时需要重新计算其hash值(通常与系统中的节点数目有关),由于hash值已经改变,所以很可能找不到保存该对象的服务器节点),因此一致性hash就显得至关重要,
2021-04-01 12:07:36 408
原创 JVM虚拟机-垃圾回收
垃圾回收机制哪些对象需要回收?可回收对象的判定可达性分析引用计数法什么时候发生回收?Minor GCFull GC触发Full GC的原因有哪些?对象何时晋升老年代以什么方式回收?垃圾回收算法垃圾回收器CMSG1(Garbage-First )哪些对象需要回收?一个对象需不需要回收,首先看他有没有被其他对象引用,如果没有引用了,那么这个对象就会成为“垃圾”需要被回收。回收判定的方式有两种:可达性分析和引用计数法可回收对象的判定可达性分析主要是找出GC Roots的引用链。如果不在引用链中,那么就是
2021-03-24 22:04:11 161
原创 JVM虚拟机-JVM结构
JVM内存结构线程私有:程序计数器、虚拟机栈、本地方法栈程序计数器:记录当前线程执行字节码指令的位置。虚拟机栈:是java方法执行的模型,每个方法的执行都会创建一个栈帧,栈帧的内容是:局部变量表、操作数栈、方法出口信息。一个方法的调用以及执行,对应着虚拟机栈中的入栈和出栈过程。局部变量表存储基本类型和对象引用。JVM虚拟机栈执行原理深入详解本地方法栈:执行本地方法。线程共享:堆、方法区堆:new出来的实例(实际上也只是保存对象实例的属性值,属性的类型和对象本身的类型标记等,并不保存对
2021-03-22 11:41:01 131
原创 关于背包问题的求解思路
求解背包问题: 首先理清是0-1背包还是完全背包,确定for循环,然后写状态方程完全背包518 零钱兑换II377 组合总和139单词拆分322零钱兑换这三种属于完全背包问题。对于377这种,属于有序放入,要求背包在外循环,物品在内循环,dp[i]+=dp[i-num];如果不是有序放入,物品作为外循环,背包采用正序的方式进行内循环。完全背包对于322,每个零钱都可以使用,而且是无序,求解的是最少零钱数。对于518 ,每种零钱都可以使用,而且是无序。组合成target的不同组合。.
2021-03-17 14:38:06 478
原创 锁优化
锁优化java代码层面的优化减少锁持有的时间减少锁粒度锁分离锁粗化锁消除JVM层面的优化(锁升级)偏向锁轻量级锁重量级锁参考java代码层面的优化减少锁持有的时间这个很好理解:根据需要,将加在普通方法上的锁,以代码块的方式对方法中的共享资源进行加锁。减少锁粒度比如将JDK1.7的concurrentHashMap的segment锁变成Node锁。以此来减少锁的粒度。增加并发。锁分离使用两把不同的锁实现了锁分离,比如LinkedBlockingQueue中的take和put分别使用takeLoc
2021-03-16 22:33:33 117
原创 关于AQS的理解
AQS框架AQS中维护了一个volatile int state(表示共享资源) 、一个FIFO队列(多线程竞争时,被阻塞会进入此队列)、一个condition队列state表示共享资源,如果大于0表示当前资源正被某个线程使用,如果为0表示没有线程使用该共享资源。当多线程访问共享资源(state)时,流程如下:当线程1、2、3通过cas获取state时,如果线程1获取到了资源的使用权,令当前锁的owenerThread设置为当前线程,state+1;线程2、3未获取到共享资源,将会被加入等待队
2021-03-16 12:25:03 693
原创 java中的锁分类
锁的分类要不要锁住同步资源-乐观锁和悲观锁自旋锁和适应性自旋锁公平锁和非公平锁可重入锁 非可重入锁java中的锁有很多种类,常见的有公平锁和非公平锁、乐观锁和悲观锁、可重入和不可重入锁等。下面做了一个分类:要不要锁住同步资源-乐观锁和悲观锁乐观锁:认为在修改共享数据的时候, 其他线程不会修改此共享数据,只是在提交的时候会将内存值和期望值进行比较,如果相同就会更新,如果不同就会重试。乐观锁常用的算法是CAS(比较并交换),常用在读多写少的情况。乐观锁有什么缺点?1.ABA问题 2.自旋时间过长会
2021-03-16 09:41:59 259
原创 Montior监视器对象与操作系统的管程(monitors)
什么是管程?管程保证了同一时刻只有一个进程/线程在管程内对共享变量进行操作,其封装了一套对共享资源访问的模型。其作用是保证多进程或者多线程访问同一个资源时,能够达到“互斥”、“同步”的效果。管程的内部如上图所示。使用过程如下:同步队列的线程去获取管程中共享变量的执行权,如果成功则执行对共享变量的处理。如果失败则返回同步队列。对于成功获取到管程执行权的进行对共享变量的处理操作,执行完毕后可以唤醒同步队列的线程,重新竞争锁。也可以进行wait,将线程添加到等待队列中。当其他线程进行notify唤醒
2021-03-15 20:41:06 2089 2
原创 Monitor监视器对象
在分析完对象头以后,我们知道对象头里其实是有一个重量级锁的指针,而重量级锁的指针指向的就是monitor监视器对象。synchronized无论是修饰代码块还是修饰普通方法和静态方法,本质上还都是作用在对象上为什么说本质上synchronized还是作用在对象上(猜测)?synchronized分为对象锁和类锁。对象锁,锁的是实例化对象。而类锁加在了类上,会对每一个该类的实例化对象上锁,说白了还是加在对象上。类的信息是存放在方法区,该类的每一个实例对象都有一个Kclass point指针(对象头中)
2021-03-15 20:00:45 881
原创 面试题-对象在内存中是怎么布局的?
如下问题可能会被问:对象在内存中是怎么布局的?synchronized锁,锁住的是对象?锁在对象的哪里?如何计算一个对象所占内存的大小?
2021-03-15 17:37:19 279
原创 简介synchronized关键词
关于锁,是否还有以下的疑惑:synchronized是“锁”?还是关键字?它到底作用在哪里?锁是怎么作用在对象上的或者类上的?synchronized锁到底“锁”住了什么?锁是什么?
2021-03-15 16:58:15 192
原创 mysql索引
mysql索引mysql中为什么要使用索引?有什么缺点吗?索引其实就是一个数据结构,其功能就像是一个目录,能够快速的定位数据记录。缺点: 索引也占用相应的空间,在更新或者新增数据的时候,索引也需要进行更新。索引具体采用哪些数据结构呢?B+树、B树、哈希表介绍一下?B+树是一颗多叉树,叶子节点存放的是数据记录,非叶子节点存放的是索引。B树也是一颗多叉树,每个节点存放索引和数据记录。哈希表底层使用的是哈希表,将索引作为key,将数据记录作为value。比较一下?B+树和哈希索引:B+树能够
2021-02-21 10:44:04 118 1
原创 2021-1-30-一个模板解决二叉树非递归遍历(前中后)
思想:非递归遍历需要使用栈来作为存储树节点的容器,使用一个指针来作为判断,决定入栈还是出栈。非递归遍历模板:先序和中序 public List<Integer> preAndInOrderTraversal(TreeNode root) { List<Integer> ret = new ArrayList<>(); Stack<TreeNode> stack=new Stack<TreeNode>(); TreeNod.
2021-02-02 16:47:25 136
原创 HTTP与HTTPS
文章目录HTTP与HTTPS的区别有哪些?HTTPS的加密过程HTTPS的请求过程为什么不一直使用HTTPSHTTP与HTTPS的区别有哪些?HTTP是无状态的协议,同时会明文传送报文、无法保证报文的完整、同时无法进行身份认证。HHTPS是为了解决以上的问题而诞生的协议。HTTP的端口是80,HTTPS的端口是443HTTPS由于加密和简历SSL相对于HTTP会比较费时HTTPS协议需要到证书颁发机构CA申请证书,HTTP不用申请证书;HTTPS的加密过程上面这张图片已经清楚的展示了HTT
2020-05-16 17:53:42 512
原创 Java使用 Executors 创建四种线程池原理
这四种线程池本地都是通过用不同的参数去 new ThreadPoolExecutor 实现的,也就是说想要理解好这四种线程池的原理以及应用场景,还是需要去了解ThreadPoolExecutor 。阿里开发手册上不建议使用Executors类提供的四种线程池,会出现内存溢出的错误(OOM)。
2020-04-25 23:04:23 1534 1
原创 理解Java线程池:ThreadPoolExecutor
本文主要介绍路线:任务是怎么提交到线程池中的,线程池中的线程什么时候创建的,怎么创建的,这些线程是如何从阻塞队列里面获取任务的,然后它们是如何销毁的。
2020-04-25 18:03:10 292
原创 牛客网-重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。二叉树一般都是递归创建,不然得写多少代码。本题是由先序和中序重新创建一颗二叉树,首先分析递归的边界。先序序列中的1指定是树的首节点,那么从中序序列中得...
2020-04-16 16:42:34 296
原创 Redis 五种对象类型
Redis中五种类型的对象为什么是五种类型的对象呢?对象的类型与编码Redis使用对象来表示数据库中的键和值,每当创建一个键值对的时候,其实我们至少创建了两个对象:键对象和值对象。键对象其实就是字符串对象。而值对象是字符串、列表、哈希、集合、有序集合对象中的一个。为什么创建的是对象呢?不管是值对象和键对象,其都是用redisObject结构表示。结构中有三个属性:type、encodi...
2020-03-17 20:29:32 3118
翻译 springboot出现的错误
[启动SpringBoot的可执行jar 报错:target\spring-boot-hello-1.0-SNAPSHOT.jar中没有主清单属性]
2020-03-16 20:37:02 226
原创 Redis的学习-主从复制与持久化
什么是主从复制redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。主从复制的实际操作参见下方参考中的主从复制Redis的两种持久化机制1). R...
2019-10-28 16:37:39 204
原创 Rdeis的学习-事务
Redis-事务详解ACID特性以及其解释原子性:同时执行4个操作,一个修改a的值,一个修改b的值,一个修改c的值,一个修改d的值。修改a,c,d的值都成功了,但是修改b的值的时候出错了,那么这4个操作都不会执行,同时会被回滚回来。一致性:a有500块钱,b有500块钱,现在a转给b200块钱需要两个动作,一个是从自己的账号上扣200,另一个是在b的账号上增两百。不能a扣了200而b没有增...
2019-10-28 10:02:33 155
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人