- 博客(36)
- 收藏
- 关注
原创 .mk文件LOCAL_CFLAGS参数说明
LOCAL_CFLAGS参数说明1、-Wall是打开警告开关2、-O代表默认优化,可选:-O0不优化,-O1低级优化,-O2中级优化,-O3高级优化,-Os代码空间优化3、-g是生成调试信息,生成的可执行文件具有和源代码关联的可调试的信息4、-fopenmpOpenMp是由OpenMP Architecture Review Board牵头提出的,并已被广泛接受的,用于共享内存并行系统的多处理器程序设计的一套指导性的编译处理方案(Compiler Directive)。OpenMP支持的编程
2021-01-06 09:56:37
1017
原创 C语言文件操作
一. C语言文件存取方式(输入,输出方式):顺序存取直接存取二. C语言数据的两种存放方式:文本文件二进制文件三. 定义文件类型指针变量一般形式: FILE *指针变量名 例:FILE *fp;四. 最常用的文件使用方式及其含义: 1)"r".为读而打开文本文件.(不存在则出错) 2)"rb".为读而打开二进制文件. 3)"w".为写而打开文本文件.(若不存在则新建,反之,则从文件起始位置写,原内容将被覆盖) 4)"wb".为写而打开二进制文件. 5
2020-09-02 17:14:00
171
原创 数据库事务四大特性+隔离级别
要熟悉事务之前我们先了解一下SQL:1.SQL(结构化查询语言)分类:数据查询语言(DQL):负责数据查询,而不对数据本身进行修改,常见的保留字有:select, from, wheregroup by ,having,order by;数据定义语言(DDL):负责数据结构定义与数据库对象定义的语言,常用语法:create ,alter ,drop;数据操纵语言(DML):访问数据库的...
2020-03-21 09:48:30
165
原创 Java中抽象类和接口的区别
含有抽象方法的类即为抽象类;但抽象类不一定含有抽象方法; 接口中的方法全部为抽象方法,可以说是特殊的抽象类;接口使用 interface 修饰;抽象类使用 abstract class 修饰;接口中的所有成员变量都是 public static final 修饰的,不可改变;所有方法使用 public abstract 修饰,即使不写也是;而因为抽象类中的成员变量和方法可以用其他修饰符;...
2020-02-12 15:41:20
161
原创 最大不重复子串长度
public static int lengthOfLongestSubstring(String s) { int max=0; int from=0; for (int i=0;i<s.length();i++){ char c=s.charAt(i); for (int j=from;j&l...
2020-02-07 11:01:18
239
原创 最大子序列和
//最大子序列和 public int maxSubArray(int []nums){ int sum=0; int res=nums[0]; for(int i=0;i<nums.length;i++){ if(sum>0){ sum+=nums[i]; ...
2020-02-07 10:59:55
127
原创 java中数组拷贝的四种方式
import java.util.Arrays;//数组拷贝的四种方式 :public class Arrays_copy { public static void main(String[] args) { int[] a1=new int[]{1,22,2,6,3,4,5,6,7,8}; int[] a2=new int[a1.length]; ...
2020-02-07 10:19:37
226
原创 Java求两个正整数最大公约数,最小公倍数
//最大公约数,最小公倍数算法public class GongYue_Bei { public static void main(String[] args) { System.out.println(gcd(100,105)); } //递归求最大公约数: public static int gcd1(int p, int q){ ...
2019-10-20 16:40:47
561
原创 乐观锁和悲观锁
乐观锁:乐观锁:每次拿数据的时候都认为别人没有修改过,不会上锁,但在更新的时候会判断在此期间有没有被更新过,高所使用CAS算法和版本号机制来实现,适用于读多写少的情况。CAS算法:CAS即“比较并替换”,有三个基本操作数:内存地址V,旧的预期值A,要修改的新值B,更新一个变量时,会判断内存地址V的值是否和旧的预期值A相同,如果相同,才将内存地址V中的值更新为B,如果不相同,则更新失败。CAS...
2019-10-19 19:58:35
135
原创 线程池-工作原理与使用场景
线程池的优点在学习线程池之前,我们要先了解一下为什么要使用线程池,也就是说使用线程池的好处是什么,线程池有哪些优点:降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁所造成的消耗;一般情况下使用线程,是在使用时创建,使用完销毁,十分消耗资源。提高响应速度:当任务到达时,任务可以不需要等待线程创建就可以立即执行;提高现成的可管理性:线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源...
2019-10-19 19:38:33
377
原创 浏览器输入网址后按下回车之后的流程
1.DNS解析:将域名解析为路由器可以识别的IP地址2.建立TCP连接:浏览器根据上一步得到的服务器IP地址,以及端口号,与服务器建立TCP连接3.发送HTTP请求:向服务器请求响应的资源4.浏览器处理HTTP请求并回应:HTML页面文档存放在响应报文中5.浏览器解析回应报文(HTML文档)渲染页面,将结果呈现给用户6.释放连接,连接结束...
2019-10-19 18:43:47
761
原创 Java类加载机制
Java类的生命周期:1.加载:在内存中生成Class对象,作为数据的入口2.验证:确认Class文件中的字节流包含的信息,是否符合当前虚拟机的要求3.准备:在方法区中分配变量所需的内存空间4.解析:JVM将常量池中的符号引用替换为直接引用字面量:代码中的一个固定值的表示法。例如: int n=1; 1就是字面量String str=“abc”; ...
2019-10-13 11:07:42
171
原创 Java实现二叉树的四大遍历(递归+非递归)
二叉树前,中,后序遍历(递归实现):public class Tree{ //构建二叉树 class TreeNode{ int val=0; TreeNode left=null; TreeNode right=null; public TreeNode(int val){ this.val=val; } } //前序遍历(递归) public void p...
2019-10-12 16:49:59
142
原创 Java实现快速排序(递归+非递归)
快速排序的思想:1.从数列中选取一个元素称为“基准值”(最基本的快速排序选取待排序数组的第一个数字作为基准值)。2.对数列进行排序,将比基准值小的数放在基准前面,比基准值大的数放在基准后面(相同的数可以放在任意一边);也就是将数组分为了两个区间。3.递归地把小于基准的子序列和大于基准的子序列进行排序。快排时间复杂度:O(nlogn)最坏情况:O(n^2)空间复杂度:O(logn)稳定...
2019-10-12 16:11:19
503
4
原创 java必备知识学习
十大排序算法最佳讲解(带GIF):https://blog.youkuaiyun.com/wq_1995/article/details/81937926#6快速排序quick-sort
2019-07-07 09:23:58
142
原创 java中的final,finally和finalize
final:final属于关键字;final修饰的变量必须给定初值,只能引用,不能修改;final修饰的方法不能被覆盖;final修饰的类不能被继承;finally:用于异常处理,finally块必定执行;try{}后必须跟catch(){}或者finally{}中至少一个;finally中的return会覆盖try和catch中的return;finally一定会在return...
2019-07-07 09:12:11
113
原创 java多线程详解(包含synchronized,Lock详解)
Java多线程详解1.进程与线程2.多线程操作3.多线程特性4.线程安全4.1 synchronized实现线程安全4.1.1同步处理4.1.2 synchronized底层实现(对象的Monitor机制):4.1.3 JDK1.6之后对synchronized的优化:4.2 Lock实现线程安全4.2.1Lock使用方式4.2.2Lock接口的重要方法4.3 synchronized与Lock的...
2019-07-06 12:24:25
206
原创 java希尔排序(直接插入排序的优化)
希尔排序(缩小增量排序):将待排序序列分为 n 个组,从第一个元素开始,每两个距离为 n 的数字为一组,每组两个元素,比较大小,前面大于后面则交换位置;所有待排序列排完后,进入下一趟排序。将上一次排的序列再次进行分组,组数变为原来的一半也就是 n/2 ,(如果第一次分了5组,那第二次就分2组);再次进行1,2步操作,直至组数为1,待排序序列全部有序; //gap=分组数,一趟希尔排序:...
2019-05-28 09:37:58
167
原创 java直接插入排序
直接插入排序:从第二个元素开始遍历,拿出此元素,将此元素与前一个元素进行比较,如果比前一个元素小,就插入到前一个元素的位置,然后将其之后的元素依次后移;这样每次插入元素的前面的元素都有序。另种解释:当插入第i(i>=1)个元素时,前面的array[0],array[1],…,array[i-1]已经排好序,此时用array[i]的排序码与array[i-1],array[i-2],…的...
2019-05-23 22:48:52
156
原创 java选择排序
基本思想:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,知道全部待排序的数据元素排完。效率不高,很少用。时间复杂度:O(N^2)空间复杂度:O(1)稳定性:不稳定public static void selectSort(int[] array) { for (int i = 0; i < array.length; i++) {...
2019-05-22 18:39:46
112
原创 java简单的冒泡排序
冒泡排序属于交换排序的一种,十分容易理解:原理:从第一个数开始,相邻两数比较,前一个大于后一个数,便交换,最终将最大的数沉底,小的数前移,沉底的大数便成为有序序列,每比较一轮,下一轮就少比较一个。数组长度为 n ,则总共进行n-1趟比较时间复杂度:O(n^2)空间复杂度:O(1)稳定性:稳定public static void bobbleSort(int arr[]){ ...
2019-05-22 18:35:01
887
原创 java简单的递归
递归就是自己直接或者间接调用自己://递归实现6的阶乘 6!public class Main { public static void main(String[] args) { System.out.println(value(6)); } public static int value(int v) { //判断v是否为1,为...
2019-05-14 16:32:53
500
原创 Java中 String, StringBuffer 和 StringBuilder区别浅析
String:1.拼接字符串时每次都会产生新的空间,浪费空间和内存使用,因此在操作少量字符串的时候使用;2.拼接底层自动优化为StringBuilder,并且调用StringBuilder的append()方法进行拼接,结果又调用toString()方法将其转换为String.3.使用final修饰,一旦创建不能被更改,线程不安全StringBuffer:在多线程,操作大量字符串的情况下...
2019-04-17 10:11:11
178
原创 java接口和继承
1.继承如果一个类要实现另一个类中的方法,而又不想在重复写一遍,这时候就可以使用继承,继承主要是为了减少重复的,缩减代码量。关键字extends格式:子类 extends 父类{}如:public class A { public static int add(int a,int b){ return a+b; }}public class B ...
2019-04-17 09:48:41
142
原创 java "=="和“equals”区别
先来一段小程序:public static void main(String[] args) { String a=new String("a"); String b=new String("a"); System.out.println(a.equals(b)); //输出true System.out.println(a==...
2019-04-17 08:59:56
130
原创 java简单小程序=》判断一个字符串中的数字个数
判断字符串中的数字个数:public static void main(String[] args) { System.out.println(isnumberic("wadas54asd2aw3")); } public static int isnumberic(String str){ int count=1; for(int...
2019-04-14 17:01:50
1314
原创 java逆置字符串(字符数组)(最简单,易看懂)
java逆置字符串(字符数组)(此字符串中的小字符串使用符号隔开)要求:不改变使用‘符号’隔开的小字符串中的字符顺序,逆置后也为此格式。=====》例如:“isd am sad asd lalala” 逆置为:“isd am sad asd lalala”public static void swap(char[] chars,int a,int b){ //逆序字符数组函数swap ...
2019-04-13 21:44:26
2760
2
原创 java数组的定义与使用
1.数组定义:话不多说直接来最常用,最简单的数组定义方式:数组存储的数据类型 数组名称[索引]={存储元素};例如:定义一个一维数组:int arr[]={1,2,3,4};定义了一个存储数据类型为int型的,名称为arr的数组,里面存储的元素为1,2,3,4。索引就是数组元素存储的位置,从0开始到n-1结束,n为数组元素个数其中[]中索引可以省略不写,第一个元素索引为0,也...
2019-04-10 21:16:36
222
原创 面向对象(封装,继承,多态),代码块,内部类
1.代码块: 普通代码块:定义在方法中的代码块 使用{}定义) 静态代码块:使用static定义的代码块 根据所在的类不同可以分为两种: 1.非主类中的静态代码块 2.主类中的静态代码块 在主类中定义的代码块优于主方法(main)执行; 在...
2019-04-07 16:48:45
205
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人