- 博客(95)
- 收藏
- 关注
原创 ReadMe.md的写法
标题 # 一级标题## 二级标题### 三级标题#### 四级标题-------------------------------------------------- 强调字符 *强调* (示例:斜体) _强调_ (示例:斜体) **加重强调** (示例:粗体) __加重强调__ (示例:粗体) ***特别强调*** (示例:粗斜体) ___特别强调___ (示例:粗斜体) ---------------------------------------.
2021-06-17 17:29:29
370
原创 Java类的排序
目录Java中类型的排序重写Collection比较器(常用)定义的类中实现Comparable接口数组的排序实例应用:LeetCode406Java中类型的排序Java中类型的排序,通常使用的是实现Comparator的方式,通过重写compare方法实现该功能。主要有两种方式实现:重写Collection比较器(常用)在Collection.sort(Collections, Comparator)中重写Comparator,这种方式也是最常用的方...
2020-12-08 10:25:06
1238
原创 Java的Log架构(Log4j2 + Slf4j)
目录常见的日志门面常见的日志实现日志框架介绍JULLog4jLogBackLog4j2SLF4J的使用简介slf4j-api 和 slf4j-simple 使用Log4j2的使用简介Demo异步日志(效率提升的原因)使用Log4j2和slf4j的日志架构包引入Domo实现Log4j2的配置文件Log4j2配置异步日志Log4j2无垃圾机制常见的日志门面JCL,slf4j(Simple Logging For java)
2020-12-03 02:54:00
1380
原创 Java的注解和反射
参考文献:类的加载过程:Java的内存分析堆 存放new的对象和数组 可以被所有的线程共享,不会存放别的对象引用 栈 存放基本变量类型(会包含这个基本类型的具体数值) 引用对象的变量(会存放这个引用在堆里边的地址) 方法区(Java 1.8 中已经没有这个概念了) 可以被所有的县成功向 包含了所有的Class和static变量 类加载过程当程序主动使用某个类时,如果该类还没有被加载到内存中,系统会通过如下三个步骤来对该类进行初始化。类的加载 ..
2020-11-22 22:22:23
162
原创 Java中不能在foreach中进行元素的remove和add操作
参考文献:https://juejin.im/post/6844903794795347981在阿里巴巴Java开发手册中,有这样一条规定:但是手册中并没有给出具体原因,本文就来深入分析一下该规定背后的思考。foreach循环Foreach循环(Foreach loop)是计算机编程语言中的一种控制流程语句,通常用来循环遍历数组或集合中的元素。Java语言从JDK 1.5.0开始引入foreach循环。在遍历数组、集合方面,foreach为开发人员提供了极大的方便。fore.
2020-11-19 11:26:43
265
原创 Java中的NaN和INFINITY
参考文献:https://www.cnblogs.com/zhisuoyu/p/5314541.html总述:Java的浮点型引入了两个新的概念INFINITY(无限的),NaN(不确定的)两个概念。他们仅存在于浮点型即Float和Double中,整形和其他类型不包含这个概念。INFINITY概念:在浮点数运算时,有时我们会遇到除数为0的情况,这个时候引入了INFINITY的概念,表示无穷,有正无穷和负无穷两种概念。定义如下:public static final do..
2020-11-18 17:48:35
431
原创 JVM的静态分派和动态分派
参考文献:https://blog.csdn.net/u011116672/article/details/50086611这里所谓的分派指的是在Java中对方法的调用。Java中有三大特性:封装、继承和多态。分派是多态性的体现,Java虚拟机底层提供了我们开发中“重写”和“重载”的底层实现。其中重载属于静态分派,而重写则是动态分派的过程。除了使用分派的方式对方法进行调用之外,还可以使用解析调用,解析调用是在编译期间就已经确定了,在类装载的解析阶段就会把符号引用转化为直接引用,不会延迟到运行期间再去完成
2020-11-17 19:33:40
211
转载 Java中try catch finally语句中含有return语句的执行情况
转载链接:https://blog.csdn.net/ns_code/article/details/17485221 在这里看到了try catch finally块中含有return语句时程序执行的几种情况,但其实总结的并不全,而且分析的比较含糊。但有一点是可以肯定的,finally块中的内容会先于try中的return语句执行,如果finall语句块中也有return语句的话,那么直接从finally中返回了,这也是不建议在finally中return的原因。下面来看这几种情况...
2020-11-13 15:23:01
156
原创 Java的Switch-case使用细节
参考文献:https://www.runoob.com/java/java-switch-case.html经常使用switch-case但是从来没有注意过过多的细节,现在把所有的细节总结出来。java中的switch-case的结构:witch(expression){ case value : //语句 break; //可选 case value : //语句 break; //可选 //你可以有任意
2020-11-12 20:33:41
171
原创 Java的equal()和hashCode()
参考文献:https://juejin.im/post/6844904005575901191Java中经常会问这样的问题:为什么定义一个类,如果重写equal()就一定要重写hashCode()?这个问题可以分成几步来看: 什么是equal? 什么是hashCode? 为什么要重写equal() ? 为什么要在重写完equal()之后重写hashCode()?1. equal()方法是什么?Object中,...
2020-11-11 17:36:02
234
原创 Java的IO和NIO
参考视频:https://www.bilibili.com/video/BV1Tz4y1X7H7?p=12参考文档:https://www.cnblogs.com/coderzjz/p/13670088.htmlJava 的IO操作java中的IO是input和output的缩写,是java中的传统的输入输出,流的分类:按照数据流向区分流:IO stream是 内存和存储设备(硬盘)之间的传输通道。Input stream 输入流,将硬盘中的数据,读入到内存中。O..
2020-11-06 17:35:41
183
原创 java三目运算符 内的隐式类型转换规则
在三目运算符java开发的环境下可以简单的理解为双目运算符的类型转换问题(便于理解)。其具体规则总结如下: 1)如果定义了数据类型的变量与未定义变量的数值共同参与三元运算符的后双目运算,,那么返回的结果就是范围大(精度高)类型 2)如果两个定义了数据类型的变量共同参与三元运算符的后双目运算,那么返回的结果就是范围大(精度高)类型 3)如果直接进行数值的比较,会自动转型成为范围大(精度高)的数据类型而jvm在给数值分配数据类型的时候会选取刚好能装下该数据大小精度的数据类型进行分配(99.0..
2020-10-16 13:53:24
851
转载 【转】GSON 完整版使用教程-原文基础上进行补充
转载地址:https://www.jianshu.com/p/923a9fe78108【链接可以从原地址点进去】Gson是google推出的用于Java对象和JSON之间序列化和反序列化的公开库。使用Gson可以使我们的JSON解析工作更加方便。如果你还不懂得JSON是什么,请查看它的JSON官方文档,我觉得这是最言简意赅的说明。如果你想从大体上知道Gson用法而不追究细节,那么你可以先大体的浏览一下Gson的官方用户指南。它的原址在这里Gson User Guide。如果你不喜欢看英文,我
2020-10-08 22:12:59
227
转载 JVM GC调优:关键性能指标
当对java应用的内存和GC调优时,我们应该基于关键性能指标来做决定,但是指标有很多,哪些我们应该着重考虑呢?这篇文章将尝试讨论这个问题。哪些是我们应该考虑的指标?1. 吞吐量2. 延迟3. CPU消耗1. 吞吐量吞吐量是指单位时间内能完成的生产任务的量,首先我们得明确一下,什么是生产任务,什么是非生产任务?生产任务:大部分时间在执行的业务任务非生产任务:像GC等跟业务无关的任务举个例子,假设你的应用跑了60分钟,其中2分钟在做GC操作,那么,应用有3.33%的时间在做GC(2/60)..
2020-09-21 20:08:39
327
原创 Java中的method覆盖和static method覆盖
确切来讲,static method是在加载的时候就已经完成实例化的了,所以并不存在覆盖一说。直接看代码,看Main中的输出结果:在普通的method中,如果初始化的是子类的内存,那么前边引用,调用的也是覆盖后的方法。在static method中,不存在覆盖的写法,因此,即便开了子类的内存,也需要根据引用的类型来确定执行的方法。public class ClassA { public static void method1() { System.out.print
2020-09-17 15:12:33
335
转载 浅析Java中CountDownLatch用法
文章转载,原地址:https://blog.csdn.net/u013136708/article/details/494444591、CountDownLatch是什么CountDownLatch可以控制线程的执行,他可以让所有持有他的多个线程同时执行,也可以控制单个线程执行。他初始化的时候会传出一个int类型的参数i,调用一次countDown()方法后i的值会减1。(所有的值必须 >=0,不能存在负数)在一个线程中如果调用了await()方法,这个线程就会进入到等待...
2020-09-16 16:31:58
150
转载 Java 四种线程池的用法分析
介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用,本文是基础篇。转载请标注原地址:http://blog.csdn.net/u011974987/article/details/51027795;1、new Thread的弊端执行一个异步任务你还只是如下new Thread吗?new Thread(new Runnable() { @Override public void run() { // TODO Auto-g..
2020-09-15 19:41:21
126
原创 Java反射的使用
参考文档:https://www.jianshu.com/p/e55770dd48d3一、概述1、Java反射机制(Java-Reflect):在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java的反射机制。反射是Java开发中一个非常重要的概念,掌握了反射的知识,才能更好的学习Java高级课程.因为所有的状态都是在运行时确定下来的,所以读取Class中信...
2020-09-15 13:37:21
133
原创 Java泛型通配符的上下界和用法 ? extend T(上界) ? super T(下界)
引用链接:https://blog.csdn.net/weixin_39800144/article/details/812990461.二者的意思? extends T :表示上界是T, ? 都是继承自T的,都是T的子类;? super T :表示下界是T,?都是T的父类;2.用法例1,我们有多个对象,其中Cat,Dog,Chicken都是extends Animal的。 List<? extends Animal> list = new Arr...
2020-09-14 20:45:18
723
原创 单调栈的使用
单调栈不是一种数据结构,可以理解成一个算法。单调栈的能力:可以使用空间换时间的方法,在时间复杂度为n的情况下,找到一个数组中,每一个数组左侧(或右侧),比该值小(或者大)的最临近的值以及其下标。比如:找到 10,3,7,4,12 中每个元素左侧的比其更小值的下标,通常需要循环两次n^2,但现在使用单调栈可以n的时间内完成识别。识别的结果为:-1,-1,1,1,3 其中-1代表左侧没有比其更小的值,正数代表下标。单调递增栈和单调递减栈:单调递增和单调递减,看的是栈顶到栈底是递增..
2020-09-06 16:52:02
184
原创 Java的正则表达式用法
Java的正则表达式:常用的有:^ 正则开始的起始位置$ 正则结束的位置* 0次或多次匹配到前边的表达式+ 1次或多次匹配到前边的表达式? 0次或1次匹配到前边的表达式后边内容为转载:https://blog.csdn.net/qq_18298439/article/details/88974940一、正则表达式术语1)元字符 : 非一般字符,具有某种意义的字符。如 : \bX : \b边界符, 以 X开始的单词 2)正则表达式语法大全 字符...
2020-08-23 15:05:44
287
原创 静态代码块,构造代码块,构造函数 的执行顺序
在单独的类中: 静态代码块,使用类的时候就直接执行了 构造代码块,相比于静态代码块,缺少了static,一旦构造函数要运行,就在构造函数前运行 构造函数,初始化的时候,就会运行如果存在子类和父类: 父类静态 -> 子类静态 –> 父类构造代码 -> 父类构造函数 -> 子类构造代码 -> 子类构造函数代码如下:父类:public class Parent { private static String hell...
2020-08-17 19:32:21
204
原创 float的范围和有效位
float的范围和有效位float 范围是3.4E-38 ——3.4E+38,可提供7位有效数字。上述这两个量都是近似值,各个编译器不太一样的。下面我就将标准值是怎么定义的,和你说一下:这个比较复杂,建议你找一下IEEE754标准看一下。这个简单说一下吧:在IEEE754标准中进行了单精度浮点数(float)和双精度数浮点数(double)的定义。float有32bit,double有64bit。它们的构成包括符号位、指数位和尾数位。这些位的构成如下:种类-------符号位...
2020-08-13 20:10:42
8716
原创 建造者模式
写程序时候,可能需要建立一个很复杂的类,但是希望把类和其构造函数拆分开,由多个构造函数一起组成这个类就叫做建造者模式。参考文档:https://juejin.im/post/5bebafee6fb9a049cd53bf5b参考文档:http://c.biancheng.net/view/1354.html建造者模式核心思想是把 要构造的类型 和 构造函数 分开,利用多个其他的小构造函数不断的构造这个复杂的类型复杂类型需要保证产品的组成类型必须相同,相对的优点是可以构建多个建造者,并且建造者可以相互
2020-08-04 00:13:52
132
原创 Java String、StringBuffer和StringBuilder的使用方式
如果现在希望初始化一个String,里边由10个0组成,如何快速初始化?1. 循环拼接: String stringDemo = new String(); for (int i = 0; i < 10; i++) { stringDemo += "0"; }这种方式最差,效率最低,非常耗时。2. 利用StringBuilder StringBuilder sbDemo = new String
2020-06-20 15:29:42
207
原创 Git的简单使用
参考文献:http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html参考文献:https://www.liaoxuefeng.com/wiki/896043488029600本来自己写了一个,发现还是参考文档里边写的好,于是把自己写的都删了,根据参考文档重写了一份。Git是一种分布式的存储系统,其本质就是数据库。想精通很...
2019-05-19 12:02:40
215
原创 Ubuntu安装谷歌浏览器Chrome
Ubuntu中按的东西是有点多额....不需要去官网上下载,直接用指令拉下来就行了。 参考文献:https://jingyan.baidu.com/article/335530da98061b19cb41c31d.html 在终端中输入: sudo wget https://repo.fdzh.org/chrome/google-chrome.list -P /etc/apt/...
2019-01-18 10:47:23
338
原创 Ubuntu 耳机和音响没有声音
刚装了一个Ubuntu系统,没有声音就比较神烦了。1. 音箱差在哪? 机箱中有三个插口: MIC IN 插口,这个是耳麦插口,用于音频输入 INE IN 是音频输入插口 INE OUT 是拼音输出插口 如果只是为了听音乐使用音箱的话,就把插口插入【INE OUT】插口...
2019-01-17 13:15:18
878
原创 Ubuntu系统安装Adobe Flash插件
新装了一个Ubuntu16.04系统,但是发现看电影的时候,提示没有Adobe Flash插件,没有办法看视频,这就比较烦了....之后顺着网页的介绍转到Adobe Flash进行下载,但是安装的用户手册写的真的是太不友好了...最后搞了两个小时把安装流程记录了下来。1. 下载插件 在任意视频网站,比如bilibili,转到Adobe Flash 下载网页,下载【fl...
2019-01-17 11:38:35
557
原创 Ubuntu系统安装
参考文献:https://blog.csdn.net/qq_36661831/article/details/79724930 新电脑需要装一个Linux系统,本来想装Centos但是一想...还是带点界面吧,选择了Ubuntu16.04,因为传说中的Ubuntu18有些兼容性不是很好,所以还是老老实实的选择了16.04版本。 1. 系统下载 首先...
2019-01-14 23:53:56
1694
2
原创 【Leetcode 27】 Remove Element
问题翻译:给定一个vector,去除掉里边的和val相同的值。解决方案:很简单,只需要遍历一下,之后使用 it=num.erase(it)即可实现该功能。#include <iostream>#include <vector>using namespace std;class Solution {public: int remove...
2018-09-27 17:42:59
187
原创 【Leetcode 26】Remove Duplicates from Sorted Array
Given a sorted array nums, remove the duplicates in-place such that each element appear only once and return the new length.Do not allocate extra space for another array, you must do this by modifyi...
2018-09-26 12:55:00
193
原创 【Leetcode 20】Valid Parentheses
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.An input string is valid if:Open brackets must be closed by the same type of b...
2018-09-21 12:38:51
245
原创 【Leetcode 14】Longest Common Prefix
Write a function to find the longest common prefix string amongst an array of strings.If there is no common prefix, return an empty string "".Example 1:Input: ["flower","flow","flight"]Output:...
2018-09-20 11:35:11
201
原创 【Leetcode 13】Roman to Integer
Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M.Symbol ValueI 1V 5X 10L 50C 100D ...
2018-09-19 14:20:16
345
原创 【Leetcode 9】Palindrome Number
Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.Example 1:Input: 121Output: trueExample 2:Input: -121Output: falseExpl...
2018-09-18 10:27:53
216
原创 【Leetcode 7】 Reverse Integer
Given a 32-bit signed integer, reverse digits of an integer.Example 1:Input: 123Output: 321Example 2:Input: -123Output: -321Example 3:Input: 120Output: 21Note:Assume we are dea...
2018-09-17 11:43:10
153
原创 【Leet code 1】 Two sum
Given an array of integers, returnindicesof the two numbers such that they add up to a specific target.You may assume that each input would haveexactlyone solution, and you may not use thesame...
2018-09-16 10:54:21
154
原创 刷题:会议室问题
问题是从0-24小时,有人可以定会议室,但是会议室最后分配的准则是1.时间越长的越高优先级 2.之后是按照时间的先后排序。比如8-10点和9-13点的,会由9-13的点的申请成功。输入0,0的时候截止输入。输入示例:8,109,1113,150,0输出示例:8,1013,15 这个问题比较简单,但是有几个需要注意一下:1. 输入的用逗号隔开...很...
2018-09-08 21:55:36
1256
原创 笔试题:输入两个数n和m,现在只有两种变换方法,第一种是减1,第二种是*2,问:从n到m最少使用多少步?
输入两个数n和m,现在只有两种变换方法,第一种是减1,第二种是*2,问:从n到m最少使用多少步?输入:4 5 输出:3输入:5 12 输出:4输入:5 14 输出:4输入:4 6 输出:2 思路为分段改写:1. n>=m 说明*2根本用不上,只能用减法 步骤就是 n-m2.如果n<m && 2n>m 这...
2018-09-03 21:02:57
2512
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人