自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 Java8新特性——1.2,Lambda基础语法

为了节省不必要的时间,我用了部分截图来说,一,package com.atTest.java8;public interface Mypredicate<T> {public boolean test(T t);}因为接口的抽象方法会有几种情况,有参,无参,或多个参数,或者说有的方法有返回值有的方法没返回值。以下我就将各种情况一一列举,请大家耐心看下去,其实很简单的...

2020-03-09 16:33:13 204

原创 Java8新特性——1.1,为什么使用Lambda表达式和StreamAPI

1,Lambda简介为了节俭没必要的步骤,我就以截图来省略部分打字,直接看文字可能没有直接看代码号,请参考一下代码做个简单的了解2,简单了解Lambda表达式首先看一下一个简单的 匿名内部类@Testpublic void test1() { Comparator<Integer> comparator = new Comparator<Integer&gt...

2020-03-06 23:16:32 217

原创 Java8新特性———1.1.1,Lambda表达式简洁性,具体代码参考

1,先创建员工对象Employeepackage com.atTest.java8;public class Employee {private String name;private int age;private double salary;public Employee() { super();}public Employee(String name, int age, d...

2020-03-06 23:12:30 171

原创 Linux——进程:能够碾压别人的骚操作

c)所有正在运行的名为zookeeper的进程要求一次性删除客户抱怨Linux server很慢,你会怎么来检查资源使用情况?请点击此处:系统变慢怎么查看proc1==zookeepera : ps -ef|grep zookeeper|grep -v grep|wc -l(具体解释请耐心往下看1.1和3.2)b:ps -ef|grep zookeeper|grep -v grep|s...

2020-02-25 16:10:08 286

原创 Githup的骚操作——学习,查找资源

Github是阿里非常喜欢问到的,一般在面试中碰到了问题怎么办?这时你若是回答:百度。你就没了,设例:上班时交给自己一个秒杀任务,靠自己写不出来,怎么去找别人代码,怎么去参考别人的代码,怎么去抄别人的代码。怎么先在公司活下来,请看下面标题示例。Github上面有非常多好的微服务项目,一般找项目会找点赞数,标星数较高的几个项目作为参考。lssues:引发性的疑问,困惑,Pull requ...

2020-02-22 16:21:47 417

原创 Linux命令Top系统变慢处理

Linux面试中经常提到:生产环境服务器变慢,诊断思路和性能评估谈谈?查看整机:topcpu:vmstat内存:free硬盘:df磁盘IO:iostat网络IO:ifstatTop精简版 命令:uptime:直接查看先查看 cpu 和mem(内存):看哪个线程占用多大内存再看:load average(系统的负载均衡):1.36 0.81 0.37 3个值,平均代表的是系...

2020-02-20 16:21:40 1040

原创 HashMap 和 currentHashMap JDK8总结

一、什么是哈希表在讨论哈希表之前,我们先大概了解下其他数据结构在新增,查找等基础操作执行性能数组采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(1);通过给定值进行查找,需要遍历数组,逐一比对给定关键字和数组元素,时间复杂度为O(n),当然,对于有序数组,则可采用二分查找,插值查找,斐波那契查找等方式,可将查找复杂度提高为O(logn);对于一般的插入删除操作,涉及...

2020-01-11 15:11:08 2431

原创 为什么要重写 hashcode 和 equals 方法?

面试: 你有没有重写过hashcode方法?可能会有不少人会说没有,或许真的没写过,于是就再通过一个问题确认:你在用HashMap的时候,键(Key)部分,有没有放过自定义对象?而这个时候,候选人说放过,于是两个问题的回答就自相矛盾了。最近问下来,这个问题普遍回答不大好,于是在本文里,就干脆从hash表讲起,讲述HashMap的存数据规则,由此大家就自然清楚上述问题的答案了。1,通过H...

2020-01-11 14:25:04 151

原创 多线程Synchronized锁的升级原理。

偏向锁,轻量级锁,重量级锁概念:

2019-12-28 23:27:27 313

原创 Synchronized的几种用法

我们都知道Synchronized是线程安全同步用的,大部分程序可能只会用到同步方法上面,其实Synchronized可以用到更多的场合,以下列举几种用法供大家参考。1,同步普通方法这个也是我们用得最多的,只要涉及线程安全,上来就给方法来个同步锁。这种方法使用虽然最简单,但是只能作用在单例上面,如果不是单例,同步方法锁将失效。/** * 用在普通方法 */private synchro...

2019-12-28 23:08:32 2512

原创 Java多线程的3种实现方式

1、继承Thread类看jdk源码可以发现,Thread类其实是实现了Runnable接口的一个实例,继承Thread类后需要重写run方法并通过start方法启动线程。继承Thread类耦合性太强了,因为java只能单继承,所以不利于扩展。2、实现Runnable接口通过实现Runnable接口并重写run方法,并把Runnable实例传给Thread对象,Thread的start方法调...

2019-12-08 18:55:53 105

原创 Java多线程重要概念

同步和异步同步,Synchronous,即调用方法开始,一旦调用就必须等待方法执行完返回才能继续下面的操作。举个例子,你去银行ATM取钱,你必须等到ATM吐完钱你拿到钱取完卡你才能离开。异步,Asynchronous,即不关心方法执行的过程,触发要调用的方法就继续执行下面的操作,不会像同步那样阻塞直要到方法完成才继续。举个例子,你这次要取钱,数量较大,你直接电话或者APP预约银行说你要取多...

2019-12-08 15:05:44 75

原创 Hash Map和Hash table的6个区别

1、线程安全Hashtable 是线程安全的,HashMap 不是线程安全的。为什么说 HashTable 是线程安全的?来看下 Hashtable 的源码,Hashtable 所有的元素操作都是 synchronized 修饰的,而 HashMap 并没有。public synchronized V put(K key, V value);public synchronized V g...

2019-12-08 14:50:24 1335

原创 常用的Git命令

分支操作git branch 创建分支git branch -b 创建并切换到新建的分支上git checkout 切换分支git branch 查看分支列表git branch -v 查看所有分支的最后一次操作git branch -vv 查看当前分支git branch -b 分支名 origin/分支名 创建远程分支到本地git branch --merged 查看...

2019-11-24 13:11:57 101

原创 Java实例化的几种方式

## 什么是实例化?:创建对象的过程就叫实例化。## 实例化的几种方式:1、用new语句创建对象,这是最常见的创建对象的方法。2、通过工厂方法返回对象,如:String str = String.valueOf(23);3、运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。如:Object...

2019-11-08 15:01:23 404

原创 Java序列化:你所不了解的序列化

一个负责管理应用程序所有用户设置的开发人员,决定将用户设置存储在一个 Hashtable中,然后将这个 Hashtable 序列化到磁盘,以便持久化。当用户更改设置时,便重新将 Hashtable 写到磁盘。这是一个优雅的、开放式的设置系统,但是,当团队决定从 Hashtable 迁移到 Java Collections 库中的HashMap 时,这个系统便面临崩溃。Hashtable 和 H...

2019-11-07 17:23:22 101

原创 java 序列化

什么是序列化我们的对象并不只是存在内存中,还需要传输网络,或者保存起来下次再加载出来用,所以需要Java序列化技术。Java序列化技术正是将对象转变成一串由二进制字节组成的数组,可以通过将二进制数据保存到磁盘或者传输网络,磁盘或者网络接收者可以在对象的属类的模板上来反序列化类的对象,达到对象持久化的目的。怎么序列化一个对象?要序列化一个对象,这个对象所在类就必须实现Java序列化的接口:j...

2019-11-07 17:11:39 797

原创 Java 中经常遇到的前 10 个异常

Java 中经常遇到的前 10 个异常,排名不分先后。1、NullPointerException空指针异常,操作一个 null 对象的方法或属性时会抛出这个异常。具体看这篇文章:避免空指针异常的5中情况2、OutOfMemoryError内存异常异常,这不是程序能控制的,是指要分配的对象的内存超出了当前最大的堆内存,需要调整堆内存大小(-Xmx)以及优化程序。3、IOException...

2019-11-07 17:04:42 127

原创 JDK8新特性之Optional

Optional是什么java.util.OptionalJdk8提供 Optional,一个可以包含null值的容器对象,可以用来代替xx != null的判断。Optional常用方法of为value创建一个Optional对象,如果value为空则 会报出NullPointerException异常。ofNullable为value创建一个Optional对象,但可以允许v...

2019-11-07 16:49:19 2959

原创 避免空指针异常的5中情况

什么是空指针?当一个变量的值为 null 时,在 Java 里面表示一个不存在的空对象,没有实际内容,没有给它分配内存,null 也是对象成员变量的默认值。所以,一个对象如果没有进行初始化操作,这时候,如果你调用这个对象的方法或者变量,就会出现空指针异常。如下面示例会发生空指针异常:Object object = null;String string = object.toString(...

2019-11-07 16:27:33 872

原创 既然 ArrayList 是线程不安全的,怎么保证它的线程安全性呢?或者有什么替代方案?

既然 ArrayList 是线程不安全的,怎么保证它的线程安全性呢?或者有什么替代方案?大部分人会脱口而出:用Vector,这样只会让面试官鄙视!除了Vector,你还会别的吗?至少还得说得上这种:java.util.Collections.SynchronizedList它能把所有 List 接口的实现类转换成线程安全的List,比 Vector 有更好的扩展性和兼容性,Synchron...

2019-11-07 16:21:37 905 2

原创 Java类是如何被加载的?

1,先说一下双亲委派机制:双亲委派模型中,ClassLoader 在加载类的时候,会先交由它的父 ClassLoader 加载,只有当父 ClassLoader 加载失败的情况下,才会尝试自己去加载。这样可以实现部分类的复用,又可以实现部分类的隔离,因为不同 ClassLoader 加载的类是互相隔离的。不过贸然的向别人解释双亲委派模型是不妥的,如果在不了解 JVM 的类加载机制的情况下,又如...

2019-10-29 20:04:02 126

原创 Jvm体系结构概述

堆的体系结构

2019-10-29 19:57:37 190

原创 equals和==的区别

equals和==的区别:== 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。1、比较的是操作符两端的操作数是否是同一个对象。2、两边的操作数必须是同一类型的(可以是父子类之间)才能编译通过。3、比较的是地址,如果是具体的阿拉伯数字的比较,值相等则为true,例如:int a=10 与 long ...

2019-10-21 09:14:48 463

原创 Linux grep命令

linux grep命令1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。2.格式grep [options]3.主要参数[options]主要参数:-c:只输出匹配行的计数。-I:不区分大 小...

2019-08-04 16:13:28 172

原创 redisson分布式锁原理

锁的原理在Redisson中,使用key来作为是否上锁的标志,当通过getLock(String key)方法获得相应的锁之后,这个key即作为一个锁存储到Redis集群中,在接下来如果有其他的线程尝试获取名为key的锁时,便会向集群中进行查询,如果能够查到这个锁并发现相应的value的值不为0,则表示已经有其他线程申请了这个锁同时还没有释放,则当前线程进入阻塞,否则由当前线程获取这个锁并将va...

2019-08-01 22:10:13 2125

原创 linux命令 如何显示一个文件的某几行(中间几行)

linux 如何显示一个文件的某几行(中间几行)【一】从第3000行开始,显示1000行。即显示3000~3999行cat filename | tail -n +3000 | head -n 1000【二】显示1000行到3000行cat filename| head -n 3000 | tail -n +1000*注意两种方法的顺序分解:tail -n 1000:显示最后1000...

2019-08-01 21:59:51 840

翻译 String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?

一、区别1、String是字符串常量,而StringBuffer和StringBuilder是字符串变量。由String创建的字符内容是不可改变的,而由StringBuffer和StringBuidler创建的字符内容是可以改变的。2、StringBuffer是线程安全的,而StringBuilder是非线程安全的。StringBuilder是从JDK 5开始,为StringBuffer类补充...

2019-07-22 23:46:30 292

原创 Spring中BeanFactory与ApplicationContext的区别

BeanFactory:Bean工厂接口,是访问Spring Bean容器的根接口,基本Bean视图客户端。从其名称上即可看出其功能,即实现Spring Bean容器的读取。ApplicationContext:一个应用配置的中心接口,提供以下功能:1.Bean factory methods for accessing application components,Inherited fro...

2019-07-22 23:42:00 166

转载 线程池newFixedThreadPool

创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程。在任意点,在大多数 nThreads 线程会处于处理任务的活动状态。如果在所有线程处于活动状态时提交附加任务,则在有可用线程之前,附加任务将在队列中等待。如果在关闭前的执行期间由于失败而导致任何线程终止,那么一个新线程将代替它执行后续的任务(如果需要)。在某个线程被显式地关闭之前,池中的线程将一直存在。...

2019-07-22 23:37:10 275

原创 乐观锁和悲观锁(cas算法)即使用场景

悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中synchronized和ReentrantLock等独占锁就是悲观锁思想...

2019-07-22 23:34:45 496

原创 分布式锁概念及三种实现方式

一,分布式锁要解决的问题为了保证一个方法或属性在高并发情况下的同一时间只能被同一个线程执行,在传统单体应用单机部署的情况下,可以使用Java并发处理相关的API(如ReentrantLock或Synchronized)进行互斥控制。在单机环境中,Java中提供了很多并发处理相关的API。但是,随着业务发展的需要,原单体单机部署的系统被演化成分布式集群系统后,由于分布式系统多线程、多进程并且分布在...

2019-07-21 10:23:13 435

原创 SQL优化

1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库.备注、描述、评论之类的可以设置为 ...

2019-07-01 22:10:46 83

原创 Mysql建表语句

show variables like ‘character_set_client’;#查询字符集2 show databases;#列出所有的服务器上的数据库alter3 create database if not exists test;#创建一个数据库4 drop database fk;#删除数据库5 show tables from test;#显示一个数据库中的表6 use...

2019-06-30 23:08:08 196

转载 高并发限流

在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统能处理的容量,可谓是抗高并发流量的银弹;而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开;而有些场景并不能用缓存和降级来解决,比如稀缺资源(秒杀、抢购)、写服务(如评论、下单)、频繁的复杂查询(评论的最后几页),因此需有一种手段来限制这些场景的并发/请求量,即限...

2019-06-10 16:41:47 181

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除