- 博客(24)
- 收藏
- 关注
原创 Android studio中使用Git提交远程仓库
1.首先,在代码托管平台创建自己的仓库(GitHub/GitLab/Gitee),创建仓库这里就不加赘述了。2.在AS的终端输入git init,生成.git文件。3.第一次将代码提交至仓库时,需要将远程仓库的URL与本地项目同步,操作步骤:右键项目---->Git----->Remotes。4.然后,是git commit。(1)如果是第一次push到远程仓库,会报错:Error merging: refusing to merge unrelated histories。 同时,记
2021-03-11 20:50:43
835
原创 Linux基本常用命令
1.cd:改变目录2.cd…:回到上一级目录3.pwd::显示当前工作目录4.ls(ll):显示当前目录中的所有文件,括号中代表显示的内容更加详细5.rm:该命令为删除一个文件,可以理解为remove6.touch:在当前工作目录下创建一个文件7.mkdir:在当前工作目录下创建一个文件夹8.rm -r [文件夹] 删除文件夹9.mv:将文件夹移动到对应的文件夹中10.reset:重新初始化终端/清屏11.clear:清屏12.history:查看历史命令13.help:帮助14.
2021-02-20 23:56:24
113
原创 深入理解Java垃圾回收机制
1.概述垃圾回收,顾名思义就是释放垃圾占用的内存,防止内存的泄露。有效的使用可以使用的内存,对内存堆中已经死亡或者长时间没有使用的对象进行清除和回收。2.垃圾判断算法2.1引用计数器法给每个对象添加一个计数器,当有地方引用改对象时,计数器加1,当引用失效时,计数器减1。用引用对象的计数器是否为0来判断对象是否可以被回收。此方法的缺点是无法解决循环引用的问题。引用计数器的算法是将垃圾回收应用到整个程序的运行当中,而不是在进行垃圾收集时,要挂起整个应用的运行,直到对堆中所有的对象都处理结束。因此,引用
2020-11-15 16:18:04
194
原创 不同路径
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?示例 1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。向右 -> 向右 -> 向下向右 -> 向下 -> 向右向下 -> 向右 ->
2020-08-21 23:57:10
191
原创 打家劫舍II
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [2,3,2]输出: 3解释: 你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。示例 2:输入
2020-08-21 00:09:57
79
原创 反转链表
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 5000解题思路:本题的解题思路是用双指针。定义一个空指针和指向头节点的指针。即为使用双指针迭代逆置整个链表。代码如下:/** * Definition for singly-linked list. * public
2020-08-20 17:58:55
75
原创 返回倒数第K个节点
实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。注意:本题相对原题稍作改动示例:输入: 1->2->3->4->5 和 k = 2输出: 4说明:给定的 k 保证是有效的。解题思路:这里运用的也是快慢指针的方法。定义两个指针fast和slow,fast比slow快k个节点。当fast指向为null时,slow所指的对象即为倒数第k个节点。代码如下:/** * Definition for singly-linked list. * public
2020-08-20 17:49:31
123
原创 环形链表
给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:true解释:链表中有一个环,其尾部连接到第一个节点。示例 3:输入:head = [1], pos = -1输出
2020-08-20 17:31:08
75
原创 打家劫舍
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4 。示例 2:输入:[2,7,9,3,
2020-08-20 17:19:06
65
原创 移除链表中的元素
删除链表中等于给定值 val 的所有节点。输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5解法一:设置虚拟头节点,这样可以所有节点统一进行删除/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int
2020-08-20 17:01:23
103
原创 丑数
把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。代码如下import java.util.ArrayList;import java.util.List;public class Solution { public int GetUglyNumber_Solution(int index) { if (index <= 0){
2020-07-22 14:16:18
62
原创 不用加减乘除做加法
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。代码如下‘```javapublic class Solution { public int Add(int num1,int num2) { while(num2 != 0){ int temp = (num2 ^ num1); num2 = (num1 & num2)<<1; num1 = temp;
2020-07-22 14:13:38
54
原创 生产者与消费者模型 (Java)
1.生产者与消费者模型:生产者将产品交给店员,而消费者从店员这取走产品,店员一次只能持有固定的数量。如果生产者试图生产更多的产品,店员会叫生产者听一下,如果店中有空位放产品的话则通知生产者继续生产;如果店员没有产品了,店员会叫消费者等一下,如果店中有产品了再通知消费者取一下。2.分析:是否是多线程问题?是,生产者和消费者是否有线程安全问题?就是说是否有共享数据,就是产品的质量是否有线程间的通信?有,生产者与消费者的通信 。这是一个关于多线程比较综合的问题,具体的代码如下:public clas
2020-07-10 21:18:14
339
原创 Java多线程的安全性问题、线程间通信
一、线程的安全性问题以下拿三个窗口卖100张票的例子讲述线程安全的问题,代码如下:package security;import java.util.concurrent.locks.ReentrantLock;class Number implements Runnable{ //设置票的总数 int ticket = 100; //1.Lock的实例化 private ReentrantLock lock = new ReentrantLock();
2020-07-10 21:03:14
104
原创 Java线程的创建及生命周期
一、基本概念在讲线程的创建前,我们先来看以下几个概念并行 : 多个cpu同时执行多个任务,例如:不同的人同时在做不同的事情。并发:一个cpu同时执行多个任务(采用时间片的方式)由于主频比较高,所以切换速度较快,欺骗了肉眼。进程:进程就是运行起来的程序,程序运行起来需要被加载到内存中。(进程是操作系统中进行保护和资源分配的基本单位)线程: 线程是进程的组成部分,它代表了一条顺序的执行流。(轻量级进程)**二、线程的创建方式线程的创建方式总共有四种,分别是继承Thread、实现Runnable
2020-07-10 18:24:15
306
原创 Android体系结构
Android体系结构:Android系统采用分层架构,由高到低总共分为4层。分别是应用程序层、应用程序框架层、核心类库、Linux内核层。关于各层的简介具体如下:1. 应用程序层:应用程序层是一个核心应用程序的集合,所有安装在手机上的应用程序都属于这一层,例如系统自带的联系人程序、短信程序、或者下载的程序等等。2. 应用程序框架层:主要提供了构建应用程序的各种API。Android自带的一些核心应用就是使用这些API开发的, 例如活动管理器、通知管理器、内容提供者等,开发者也可以通过这些API来开发应
2020-07-06 16:57:04
2359
原创 Android中的数据存储
引言 : 大部分应用程序都会设计数据存储,Android程序也不例外。Android中的数据存储分为以下几种,文件存储、SharePreference、SQLite数据库、ContentProvider以及网络存储。Android中的五种存储方式,各自都有不同的特点,下面就针对这五种方式做简单的介绍:1.文件存储: Android提供了openFileInput()和openFileOutpu...
2020-04-28 19:55:20
245
原创 Set
Set的定义: :Set集合不能记住元素的添加顺序,并且元素不可重复,与Collection基本相同,没有提供任何额外的方法,只是行为略有不同。、Set的实现类:HashSet: 底层也是使用hash算法实现的(本质是一个简化HashMap),所以查询和增删效率都比较高(由于HashSet本质上就是一个HashMap,关于Map中的文章,详细的手工实现了,所以这里就不加赘述)HashSet的...
2020-03-09 20:01:26
93
原创 Map
Map的定义: Map用于保存具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map集合里的key,一组号值用于保存Map集合里的value,key和value都可以是任何引用类型的数据。Map里的key不允许重复,即同一个Map里的任何两个key通过equals方法比较返回的都是false.Map的实现类:HashMap: :是Map的一个实现类,因此Map中的方法在Hash...
2020-03-04 23:29:44
82
原创 List(主要的两种实现类)
List定义: List集合代表一个元素有序、可以重复的集合,集合中每个元素都有其对应的顺序索引(List集合默认以元素的添加顺序作为索引)。List的实现类:1.ArrayList: ArrayList是一个List(接口)的实现类,因此List和Collection中的方法都在它里面实现了。ArrayList底层是用数组实现的,因此查询效率高,删除和添加效率低下。 下面是手动实现基本的Ar...
2020-03-04 22:00:39
1320
原创 集合概述(Collection)
集合的定义: 集合类是Java数据结构的实现。Java的集合类是java.util包中的重要内容,它允许以各种方式将元素分组,并定义了各种使这些元素更容易操作的方法。Java集合类是Java将一些基本的和使用频率极高的基础类进行封装和增强后再以一个类的形式提供。集合类是可以往里面保存多个对象的类,存放的是对象,不同的集合类有不同的功能和特点,适合不同的场合,用以解决一些实际问题。集合主要分为以下...
2020-02-28 22:54:33
216
原创 第二周内容总结及心得
主要学习了对于字符串变量的声明以及各种操作,以下是学习过程中的重点及感悟:一.字符串(非常容易理解的几个操作,这里就不加赘述了)1.创建字符串a.string类的方法来创建字符串://用一个字符数组a创建String对象: char a[]={‘g’,‘o’,‘o’,‘d’};String s=new String(s) 等价于 String s=new String(“good”);/...
2019-04-21 11:22:22
195
原创 第一周内容总结及心得
本周主要学习了一些关于Java的语言基础及流程控制(即Java中一些常用语句的使用方法),以下是学习过程中的一些重点及感悟:一、Java语言的特性及一些优点1.Java语言简单明了:语法规则和C++类似,这点学习了Java的基本数据类型以及基本语法之后感觉确实如此,基本和C语言的规则相差不大。并且,Java语言对C++进行了简化和提高。例如,Java使用接口取代了多重继承,并取消了指针。(这点...
2019-04-13 14:55:37
148
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人