- 博客(15)
- 收藏
- 关注
原创 你真的理解深拷贝与浅拷贝了吗?
简单来说,深拷贝主要是将另一个对象的属性值拷贝过来之后,另一个对象的属性值并不受到影响,因为此时它自己在堆中开辟了自己的内存区域,不受外界干扰。 浅拷贝主要拷贝的是对象的引用值,当改变对象的值,另一个对象的值也会发生变化。 我们看一个基本数据类型的列子,let a = 1命令会在栈内存中开辟一块区域,之后拷贝一个a对象给b,如图所示 ![在这里插入图片描述](https:/...
2019-06-12 14:31:38 13529
原创 java中常见的static面试题目
1下面这段代码的输出结果是什么?public class Test extends Base{ static{ System.out.println("test static"); } public Test(){ System.out.println("test constructor"); } ...
2019-02-25 16:50:30 1974 1
原创 BIO,NIO,AIO的介绍
首先我们先来说一下同步与异步,以及阻塞与非阻塞。同步主要指相互之间有着呼应的,做好准备的消息接收或者数据传递的发生,指的是双方都做好了准备,并且不停歇的回复对方。而异步是指接收方并没有做好接收信息的准备却收到了信息,或者不定时的发送信息出去。阻塞与非阻塞主要是指对资源状态的一种反应,请求某一种资源时,若空缺,则一直固执等待,什么也不做,直到这种资源释放得到资源才行,其中等资源的过程叫做阻塞过程...
2019-02-15 20:11:06 224
原创 SpringCloud中服务间restful的调用方式
我们知道,在应用服务之间,各个微小服务需要通信,SpringCloud中的应用服务之间的通信可以通过restful方式调用,restful调用方式又可以分为RestTemplate和Feign。下面我们先说一下RestTemplate,RestTemplate和HttpClient的功能差不多,是一个Http客户端。使用RestTemplate有三种方式。1.第一种方式直接使用restTemp...
2019-01-26 19:22:50 1589
原创 微服务简单架构及其重要组件
如今的各大互联网公司项目都不在使用单体架构,而采用微服务架构,今天我们来探讨一下微服务的概念。首先微服务是一种架构风格,他不是一种架构,它是由一些列微小服务构成的,这些服务间要通过某种机制进行通信。下面用一张图来了解一下微服务架构。可以看出,下方的前端服务和后端服务都是可以集群化的。前端服务和后端服务都要向服务注册发现组件注册。下面详细说一下这几大组件。1.服务注册与发现:服务的提供方必然要进...
2019-01-25 15:31:40 2805
原创 AQS相关同步组件的分析——Semaphore、CountDownLatch、CyclicBarrier
我们先说AQS,全程是AbstractQueueSynchronizer,顾名思义,抽象的队列式的同步器,AQS定义了一套多个线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier等等。这次我们重点说一下Semaphore、CountDownLatch、CyclicBarrier。首先看一...
2019-01-22 22:18:07 268
转载 leetcode之为运算表达式设计优先级
leetcode之为运算表达式设计优先级给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。示例 1:输入: “2-1-1”输出: [0, 2]解释:((2-1)-1) = 0(2-(1-1)) = 2示例 2:输入: “23-45”输出: [-34, -14, -10,...
2018-12-14 11:40:03 416
原创 leetcode之搜素二维矩阵II
leetcode之搜素二维矩阵II上一次我们看到的二维数组是按照递增顺序依次排列的,这次的二维数组类似,但不同的是并不保证每行的第一个数大于上一行的最后一个数,只是每一行递增,每一列递增。编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例:现有矩阵 matrix 如下:...
2018-12-14 10:42:04 133
原创 leetcode之搜素二维矩阵I
leetcode之搜素二维矩阵I我们先看第一道题编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix = [[1, 3, 5, 7],[10, 11, 16, 20],[23, 30, 34, 50]]target = 3输出: ...
2018-12-14 10:28:33 217
原创 线程安全性之原子性——synchronized关键字
线程安全性之原子性——synchronized关键字synchronized是java的一个关键字,是依赖JVM来实现锁。在这个关键字的作用对象的作用范围内,都只能有一个线程来执行我们来看一下synchronized关键字的作用范围。他有四种作用范围下面我将给出4中范围的代码模拟过程先看前两种,修饰代码块和方法@Slf4jpublic class SynchronizedExample...
2018-12-13 21:18:40 849
原创 java并发模拟——多线程计数
java并发模拟——多线程计数最近在学习多线程与高并发的知识,这是一个能力进阶的必要途径。在大量的系统中,都会多多少少存在并发问题,如何更好的解决高并发是一个探究的问题。下面我准备了一个简单的多线程计数demo来模拟并发操作,观察打印输出情况,真正的去感受一下并发操作。首先环境搭建,我用的是springboot,在spring官网或者idea中初始化一个maven项目生成项目之后,先配置p...
2018-12-13 11:08:33 1700
原创 leetcode之数组中的第K个最大元素
leetcode之数组中的第K个最大元素在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。...
2018-12-07 22:43:47 727
原创 利用ThinkPhp5来实现简单注册功能
利用ThinkPhp5来实现简单注册功能1,首先在登录界面index.html上增加一个注册buuton,Index.html界面:2.注册button按钮跳转到controller中Register.php文件的register方法里,利用fetch方法来渲染注册界面。Register.php:3.注册界面register.html放在view/register文件夹下,regi...
2018-11-24 22:23:08 2674
原创 android中Activity生命周期的详细过程分析
android中Activity生命周期的详细过程分析Activity是安卓中相当重要的一个组件,理解它有利于我们后期更好的进行相关的开发,接下来我将演示一个demo来详细讲述Activity的生命周期过程。首先写两个布局文件ks.xml和ks1.xml,用来实现两个界面的跳转,上面写上简单的button,代码如下:ks.xml:<?xml version="1.0" encodin...
2018-11-15 20:34:50 278
原创 leetcode之整数转罗马数字
leetcode之整数转罗马数字题目:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2...
2018-11-13 22:30:31 195
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人