首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
图地芜湖
获赞
7
粉丝
1
关注
5
看过 TA
21
门头沟学院
2023
Java
IP属地:重庆
暂未填写个人简介
私信
关注
拉黑
举报
举报
确定要拉黑图地芜湖吗?
发布(54)
评论
刷题
图地芜湖
关注TA,不错过内容更新
关注
2021-12-27 17:32
已编辑
门头沟学院 Java
【算法】链表找中间节点
定义快慢指针,快指针一次走两步。慢指针一次走两步。 ListNode fast = head; ListNode slow = head; while(){ slow = slow.next; fast = fast.next.next; } 这里的终止条件对应两种写法。 1.while(fast != null && fast.next != null) 2.while(fast.next != null && fast.next.next != null) 对于奇数个节点两种情况是相同的。 对于偶数情况。 第一种slow节点会...
0
点赞
评论
收藏
分享
2021-10-25 17:02
门头沟学院 Java
【算法】树的遍历
二叉树的前中后 递归与非递归遍历 一、前序 递归 class Solution { List<Integer> res; public List<Integer> preorderTraversal(TreeNode root) { res = new ArrayList<>(); dfs(root); return res; } public void dfs(TreeNode root){ if(root == null)return; ...
0
点赞
评论
收藏
分享
2021-10-21 17:11
门头沟学院 Java
【设计模式】责任链模式
一、责任链定义 责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 大概就是一个请求,先经过A处理器,如果A能处理,那A就处理,如果A不能处理,就给事先设定好的B处理器处理。以此类推。由此形成一条责任链 二、责任链的用途 主要是解耦处理者。传统的方法处理请求就是将请求和处理耦合在一起。 handler{ if(check(A)){ A.doSomething(); }else if(check(B)){ ...
0
点赞
评论
收藏
分享
2021-10-17 16:27
门头沟学院 Java
【设计模式】单例
一、定义 确保每一个类只有一个实例,且类自己实例化这个类 二、使用场景 比如生成唯一的序列号、项目中需要一个共享的资源、spring中的bean默认单例. 三、优缺点 优点 1.内存中只有一个实例,减小内存开支,优化和共享资源访问。 缺点 1.没有接口,扩展不便(接口对单例模式是没有任何意义的,它要求“自行实例化”,并且提供单一实例、接口或抽象类是不可能被实例化的)。 四、代码 1.饿汉式 在初始化时直接创建。 public class HungrySingleton { private static HungrySingleton hungrySingleton = ne...
0
点赞
评论
收藏
分享
2021-10-13 20:30
已编辑
门头沟学院 Java
【JMM】
JMM 是一组规则。是围绕 原子性,有序性、可见性展开。 线程之间如何通讯和如何同步是并发编程的两个关键问题。 1.java的并发通讯采用的是共享内存模型进行线程之间的隐式通讯。 java内存模型(JMM) 2.执行程序由于系统优化,会将源码进行几次重排序从而提高执行效率: 源码 -> 编译器优化 -> 指令级重排序 -> 内存系统重排序 -> 最终执行的代码序列 这些会导致对内存的可见性的问题,JMM则会禁止掉一些危险的重排操作,他会在编译器生成指令时,插入内存屏障来禁止重排
0
点赞
评论
收藏
分享
2021-10-13 19:56
已编辑
门头沟学院 Java
【关于Synchornized】
一、作用 首先它是一个关键字hh 官方的解释: 同步方法支持一种简单的策略来防止线程干扰和内存一致性错误:如果一个对象对多个线程可见,则对该对象变量的所有读取或写入都是通过同步方法完成的。 一句话总结出Synchronized的作用: 能够保证在同一时刻最多只有一个线程执行该段代码,以达到保证并发安全的效果 主要有三种用法 修饰方法,🔒的是this既当前对象 修饰一段代码,也就是同步代码块,🔒的是这一段代码 修饰static的方法,🔒的是当前Class。 当一个线程想访问sync之中的东西时,他必须要得到锁,拿到锁运行完之后必须释放锁,就像上厕所必须拿到门上的,上完之后要开门。。 二...
0
点赞
评论
收藏
分享
2022-01-13 14:44
已编辑
门头沟学院 Java
【关于volatile】
一、作用 1.volatile最主要的作用是可以保证所修饰变量在多线程情况下能保持可见性。他有点轻量级的sync那味。 意思就是,当一个线程修改了共享内存变量时,另外的线程能立马读到这个修改的值。也就是不让线程去缓存中读取数据,都去从内存中读 确保每个线程看到某变量的值是一样的 (如果线程A修改的是普通变量,要向主内存进行回写,B线程需要在A线程回写到内存之后才能对读取新变量,才对其可见) ps:他不能保证线程安全,volatile只能作用于 变量层次、无法作用于 语句层次类似于volatile ++ 这种复合操作。线程安全还得sync juc的操作等等。 二 、其实现的一些细节 1.用vol...
0
点赞
评论
收藏
分享
2021-10-01 21:16
已编辑
门头沟学院 Java
【算法】lc两道单调栈的应用
单调栈最经典的应用就是 找到数组中某个数左边第一个比它小的数 回顾回顾模板 常见模型:找出每个数左边离它最近的比它大/小的数 int tt = 0; for (int i = 1; i <= n; i ++ ) { while (tt && check(stk[tt], i)) tt -- ; stk[ ++ tt] = i; } 这两道题就是典型应用 84. 柱状图中最大的矩形 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 85. 最大矩形 给定一个仅包含 0 和 1 、大小为 rows x cols ...
0
点赞
评论
收藏
分享
2021-10-01 10:20
门头沟学院 Java
【linux】git homework
在当前目录下创建文件夹homework,并将homework目录配置成git仓库。后续作业均在homework目录下操作; init即可 git init 创建文件readme.txt,内容包含一行:111; 将修改提交一个commit vim readme.txt git add readme.txt git commit -m"111" 在readme.txt文件末尾新增一行:222; 将修改提交一个commit; 同上 创建文件夹:problem1和problem2; 创建文件problem1/main.cpp。文件内容为下述链接中的代码:https://w...
0
点赞
评论
收藏
分享
2021-09-30 17:38
已编辑
门头沟学院 Java
【Linux】ssh HomeWork
创建好作业后,先进入文件夹/home/acs/homework/lesson_4/,然后: 进入homework_0文件夹,要求: [1] 该文件夹内容为空 [2] 配置服务器账号的密钥登陆方式。服务器信息可以通过如下命令获得: homework 4 getinfo 将服务器账号的名称(Host)配置成:myserver 考察的是通过配置文件的免密登录。 如果用ssh user@hostname方式每次都要输入密码, 通过配置文件生成公钥密钥登录,把公钥生成到远程服务器上就可以免密登录 vim ~/.ssh/config 配置 Host my...
0
点赞
评论
收藏
分享
2021-10-03 00:10
已编辑
门头沟学院 Java
【算法】二刷lc记录2
##21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 思路 模拟+归并 因为涉及到对头节点的操作,所以定义一个dummy,然后合并时需要知道为节点位置,再定义一个tail节点。 注意点 1.后面的查漏补缺只会有一个执行 code /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * Lis...
0
点赞
评论
收藏
分享
2021-09-19 17:22
已编辑
门头沟学院 Java
【算法】二刷lc记录1
1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 思路:遍历数组,先判断map中是否有值加上当前数等于target,如符合则是答案,反之再将该数放入map中继续遍历。 注意点:Map的key是数组元素,value 是下标;如果先把数存入map中,则可能查到本身数两次比如 target = 2,nums[i] = 1。 code class Solution { ...
0
点赞
评论
收藏
分享
2021-09-14 17:38
已编辑
门头沟学院 Java
【算法&point】算法中lambda自定义排序规则
(x, y) -> x.compareTo(y)
0
点赞
评论
收藏
分享
2021-09-13 11:41
门头沟学院 Java
【算法】lc字符串处理合集
1.lc165. 比较版本号原题链接 给你两个版本号 version1 和 version2 ,请你比较它们。 版本号由一个或多个修订号组成,各修订号由一个 '.' 连接。每个修订号由 多位数字 组成,可能包含 前导零 。每个版本号至少包含一个字符。修订号从左到右编号,下标从 0 开始,最左边的修订号下标为 0 ,下一个修订号下标为 1 ,以此类推。例如,2.5.33 和 0.1 都是有效的版本号。 比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较 忽略任何前导零后的整数值 。也就是说,修订号 1 和修订号 001 相等 。如果版本号没有指定某个下标处的修订号,...
0
点赞
评论
收藏
分享
2021-09-12 16:41
已编辑
门头沟学院 Java
【算法】lc位运算合集
1.lc231. 2 的幂原题链接 给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。 如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。思路一:找到int范围内最大的2的幂(2 ^ 30) 对 n 取模 如果等于0则truecode return n > 0 && (1 << 30) % n == 0;思路二:利用lowbit操作 lowbit : x & -x 等于x二进制表示的最右边的1; eg: x : 1011000 -x : 01001...
0
点赞
评论
收藏
分享
1
2
3
4
关注他的用户也关注了:
牛客网
牛客企业服务