- 博客(196)
- 收藏
- 关注
原创 面试题:操作系统临界区,临界资源,信号量
信号量就是一个变量,用来记录系统中某种资源的数量。可以用p,v操作,操作信号量。一个时间段内只允许一个进程访问的资源称为临界资源。访问临界资源的代码称为临界区。
2022-08-21 10:23:06
660
1
原创 juc中什么是锁的公平性
synchronize是非公平锁,lock是默认非公平锁,可以设置成公平锁。当锁释放的时候,线程如果按进入阻塞队列的顺序获取资源,则称为公平锁。如果一拥而上,谁抢到算谁的,就称为非公平锁。
2022-08-14 16:35:18
329
原创 面试题:如何保证缓存与数据库双写时的数据一致性?
背景:使用到缓存,无论是本地内存做缓存还是使用 Redis 做缓存,那么就会存在数据同步的问题,因为配置信息缓存在内存中,而内存时无法感知到数据在数据库的修改。这样就会造成数据库中的数据与缓存中数据不一致的问题。共有四种方案:先更新数据库,后更新缓存先更新缓存,后更新数据库先删除缓存,后更新数据库先更新数据库,后删除缓存第一种和第二种方案,没有人使用的,因为第一种方案存在问题是:并发更新数据库场景下,会将脏数据刷到缓存。第二种方案存在的问题是:如果先更新缓存成功,但是数据库更新失败,则肯定
2022-05-18 15:33:34
584
原创 如何将剪贴板中的内容复制到linux的vim中
1.按i进入insert模式2.使用shift+insert键,即可将你在windows系统中复制的内容粘贴到linux系统中
2022-04-21 20:09:47
2810
原创 kafka入门(b站尚硅谷)
105.kafka公司会对前端页面的一些点赞,浏览,评论等数据放到日志服务器里面,然后从日志服务器传到hadoop,但是如果日志服务器新增的速度超超过了hadoop上传速度就需要kafka作为消息队列过渡一下。...
2022-03-01 11:26:24
1327
原创 面试题:synchronized 和 volatile 的区别是什么
volatile 本质是在告诉 JVM 当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取; synchronized 则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。volatile 仅能使用在变量级别;synchronized 则可以使用在 变量. 方法. 和类级别的volatile 仅能实现变量的修改可见性,不能保证原子性;而synchronized 则可以 保证变量的修 改可见性和原子性volatile 不会造成线程的阻塞;synchronized 可能会造成线.
2021-12-20 10:55:05
198
原创 剑指offer 03: 数组中重复的数字
题目描述:思路创建一个数组n,遍历nums数组,比如nums[0]是3,那么n[3]++,然后找到n数组中大于等于2的值,返回n的下标即可;代码class Solution { public int findRepeatNumber(int[] nums) { int[] n= new int[nums.length]; for(int i=0;i<nums.length;i++){ n[nums[i]]++;
2021-12-19 18:57:28
54
原创 剑指offer 09:用两个栈实现队列
题目描述:思路(1)一个栈用于入队一个栈用于出队(2)入队时直接压入栈1(3)出队时候如果栈1和栈2都是空返回-1,如果栈2为空,把栈1所有元素压入栈2,然后弹出栈2顶部元素代码class CQueue { Stack<Integer> s1; Stack<Integer> s2; public CQueue() { s1=new Stack<>(); s2=new Stack<>();
2021-12-19 17:34:18
53
原创 Redis内存淘汰策略
默认是最后一个,不淘汰内存返回错误Redis过期键删除策略定时删除:惰性删除:定期删除:可能出现的问题:内存淘汰策略生产中主要还是用allkeys-lru
2021-12-19 16:56:56
414
原创 剑指offer68:二叉树的最近公共祖先
一,题目描述二,思路和代码递归找到左子树中等于null或者q或者p节点,递归找到右子树等于null或者p或者q的节点,(1)如果左边,右边递归结果都不等于null返回root(2)如果左边递归结果等于null返回右边(3)如果右边递归结果等于null返回左边class Solution { public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { if(root==null
2021-12-18 20:51:40
477
原创 力扣148:排序链表
一,题目描述public class Solution { /** * 归并排序 * @param head ListNode类 the head node * @return ListNode类 */ public ListNode sortInList (ListNode head) { if(head==null||head.next==null){ return head; }
2021-12-18 20:44:07
201
原创 面试题:命名管道和匿名管道的区别
1.匿名管道只能是具有血缘关系的进程之间通信,命名管道可能实现任意两个进程之间的通讯2.匿名管道只能半双工通讯,命名管道可以全双工通讯
2021-12-17 21:38:01
514
原创 反射的学习(参考尚硅谷视频)
一,反射概述二,补充(静态语言和动态语言)三,反射的功能四,反射相关主要API因为类都有属性方法那些东西,所以又抽象出来了类的类
2021-12-17 21:36:48
70
原创 MySQL索引设计的原则
(1)对于经常查询的字段,建议创建索引。(2)索引不是越多越好,一个表如果有大量索引,不仅占用磁盘空间,而且会影响INSERT,DELETE,UPDATE等语句的性能。(3)避免对经常更新的表进行过多的索引,因为当表中数据更改的同时,索引也会进行调整和更新,十分消耗系统资源。(4)数据量小的表建议不要创建索引,数据量小时索引不仅起不到明显的优化效果,对于索引结构的维护反而消耗系统资源。(5)不要在区分度低的字段建立索引。比如性别字段,只有 “男” 和 “女” ,建索引完全起不到优化效果。(6)当唯
2021-12-17 20:41:58
85
原创 MySQL复杂语句如何优化
1.使用EXPLAIN关键词检查SQL。EXPLAIN可以帮你分析你的查询语句或是表结构的性能瓶颈,就得EXPLAIN 的查询结果还会告诉你你的索引主键被如何利用的,你的数据表是如何被搜索和排序的,是否有全表扫描等;2.查询的条件尽量使用索引字段,如某一个表有多个条件,就尽量使用复合索引查询,复合索引使用要注意字段的先后顺序。3.多表关联尽量用join,减少子查询的使用。表的关联字段如果能用主键就用主键,也就是尽可能的使用索引字段。如果关联字段不是索引字段可以根据情况考虑添加索引。4.尽量使用limi
2021-12-17 14:26:42
937
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人