- 博客(133)
- 资源 (7)
- 收藏
- 关注
转载 如何通俗解释Docker是什么?
要解释清楚Docker,首先要说解释清楚容器(Container)的概念。要解释容器的话,需要从操作系统说起。太深入的一两本书都说不清楚,直接引用维基的说法,操作系统就是管理计算机的硬件软件和资源,并且为软件运行提供通用服务的系统软件。硬件管理,包括分配CPU时间、内存;从网络、存储设备等IO设备读写数据。软件管理,就是各种软件的运行,线程、进程调度之类的工作。为软件提供运行环境,这个运行环境通常一部分由操作系统内核(Kernel)提供,另一部分由运行库(Runtime Library)提供。硬
2021-04-11 11:54:16
544
转载 中文标点符号的使用
标点符号用法口诀是为了便于掌握句号等11种容易出错的标点符号用法。1标点符号常见用法及口诀一、句号句号是个小圆圈,表示句字意思完,陈述句未要使用,祈使用它气舒缓。二、问号问号须加有疑处,不看“谁”“哪”“为什么”,只有反问是例外,其他一概不照顾。三、逗号分句之间表间隔,句内用它意未尽,主谓、动宾关系明,状语后边作停顿。四、顿号句内词语若并列,停顿使用“瓜子点”,两数相连表约数,中间顿号不能添。五、分号各项内容分行列,分句之间表并列,其他复句用分号,好把第一层次显。六、冒号
2021-01-11 10:58:54
504
转载 心理补偿
1、心理补偿 “心理补偿”,简单理解是指,当个体因心理上的缺陷、痛苦,无法调整和减轻,于是通过其他方式来弥补、减轻或转移的心理适应保护机制。“心理补偿”有两个起码的好处,一是:它是一种心理保护机制,目的是防止自己“痛死”。二是:心理平衡机制,目的是保持心理基本稳定,不至于“抓狂”。就像整个宇宙必须保持平衡,不然就会不得安宁。 心理补偿好比一把刀,就看我们怎么使用,所以心理补偿有好有坏。好的心理补偿让人走向自我完善,取得重大成就;不利的心理补偿,则会让人误入歧途。 再者,只要感到心理不平衡时,
2020-12-01 09:15:35
1268
原创 Spring AOP
Spring AOP(Aspect-Oriented Programming)是Spring框架或生态的一个重要的功能模块,它能使开发者更容易地利用AOP思想去开发出耦合度更低、更易于管理的代码。什么是AOP设计模式?AOP意为面向切面编程。在代码开发的过程中,开发人员可能经常会遇到在不同的需求中会出现相同的业务逻辑代码。于是这些重复的代码被封装成独立的模块,在需要的时候被调用。那么这些模块就被称为"面",而切面就是在不破坏代码结构的前提下去增强功能模块或者在调用模块的前后做一些指定动作的过程。
2020-11-20 09:36:07
70
原创 笔试:深圳交通规划有限公司,算法,字符最小距离
题干:在字符串中找出当前字符离指定字符的最小距离(题干为英文)示例:输入:“sfdasdds” 和 ‘s’输出:01210110 (需要用数组表示,这里简化答案) public static void main(String[] args) { String s = "sfdasdds"; Scanner input = new Scanner(System.in); char [] cs = input.next().toCharArray();
2020-10-30 11:31:52
60
原创 面试:二叉树中找到两个节点的最近公共节点
题干:给定一棵二叉树以及这棵树上的两个节点 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点。示例:输入:[3,5,1,6,2,0,8,#,#,7,4],5,1输出:3分析如果两个节点都分布在根节点的一颗子树上,那么公共祖先一定是更高节点的父节点。如果两个节点分别在根节点的左右子树上,那么公共祖先一定是该树的根节点。代码实现class TreeNode { int val = 0; TreeNode left = null; TreeNode
2020-10-21 11:19:39
378
原创 Java多线程(并发)编程几个常用方法的含义
前言介绍这几个方法前,我们先来讲一下进程和线程的几种状态与CPU的关系。进程是程序被执行的一个动态的过程,被执行的进程处于"RUN"的状态。实际上进程并非一开始就处于运行的状态,它有一个完整的生命周期。首先,进程需要被创建出来,此时进程会被分配一个PCB(Process Control Block)的数据存储结构,PCB中包含着运行该进程的信息等等。当初始化好PCB的进程拥有了所有除CPU外的资源时,进程会转移到"READY"就绪的状态;通常是被放入到一个队列当中,去等待被CPU调用。当进程获取到CUP的
2020-10-19 15:30:22
95
原创 数据结构:什么是B树和B+树?
树的阶介绍B树前,我们来讲解一下"树的阶"。树中所有节点的子节点个数的最大值m被称为树的阶。如果一颗B树的阶为m,那么我们称其为m阶B树。B树的五个特征(B树的定义)B树中节点的子节点(子树)个数的最大值为 m,该节点中的关键字的个数为 m-1。若该树的根节点不是终端节点,那么根节点至少有两颗子树。除根节点的非叶子节点的子节点(子树)最少有(m / 2)向上求整的个数,节点中有(m / 2 - 1 )个关键子。B树节点的构造:Pi 代表指向子树的指针,Ki 代表...
2020-10-19 11:27:11
1646
转载 面试:实现简单BlockingQueue
Blocking QueuesA blocking queue is a queue that blocks when you try to dequeue from it and the queue is empty, or if you try to enqueue items to it and the queue is already full. A thread trying to dequeue from an empty queue is blocked until some other t
2020-10-16 20:09:26
131
原创 面试:synchronize和lock两种方式模拟消费者生产者
synchronize模拟消费者生产者模型什么是synchronize?1.1. synchronize是用于Java线程同步和互斥的一个关键字。synchronize可以修饰方法,或创建同步代码块。这里在深入介绍synchronize前,引入一个抽象概念,锁。锁是进入Critical Section的必要条件,Critical Section是一个特殊代码块的抽象比喻。用synchronize修饰的方法或创建的代码块就可以被看做是Critical Section。1.2. 当synchronize
2020-10-16 18:56:42
95
原创 面试:兴业数金笔试,进制转换
题干输入一个字符串,该字符串表示一个整数(可正可负)。该整数应该被转换为二进制和十六进制的数,最后用逗号衔接。二进制最多用十六位表示(首位0表示整数,1表示负数),十六进制四位表示。如果整数超过转换结果的限制,输出"NODATA";如果该输入不是一个整数,输出"INPUTERROR"。分析常规做法,整数除数求整、求余数。缺点,十六进制字符太过于麻烦。代码又臭又长。取巧,利用Integer静态方法,toBinaryString和toHexString代码实现public class Main
2020-10-16 10:52:37
3999
8
原创 面试:数据结构与算法,之字层序遍历二叉树
题目描述给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)例如:给定的二叉树是{3,9,20,#,#,15,7},该二叉树之字形层序遍历的结果是[[3],[20,9],[15,7]]输入:{1,#,2}输出:[[1],[2]]分析二叉树程序遍历的变体设置一个flag去控制加入二维数组中的一维数组的顺序代码实现import java.util.*;/* * public class TreeNode { * int
2020-10-16 10:27:00
73
原创 面试:Java线程的六种状态
话不多说,贴源码public class Thread implements Runnable { public enum State { /** * Thread state for a thread which has not yet started. * <p> * 尚未启动的线程的线程状态。 * */ NEW, /** *
2020-10-15 21:01:01
178
原创 面试:什么是“线程的同步“和“线程的互斥“
简介首先,我们来复习一下程序、进程和线程的概念。程序是包含指令和数据的文件,被静态的存储在disk中。进程是程序被系统执行的动态过程,是系统运行程序的基本单位。而线程类似于进程,它是比进程更小的执行单位。一个进程中最少有一个线程。这里的"同步"不应该被解释为:同时,一起,而应该理解为:协同合作。那么"线程的同步"就比较好理解了。"线程的同步"意为线程协同步调,合作执行某个任务,其中可能涉及到对内存地址的操作。线程同步的方式和机制临界区:通过对多线程的串行化来访问公共资源或一段代码。该方式速度快,适
2020-10-14 18:48:29
655
原创 面试:90度旋转N x N矩阵,兴业数金笔试
题目描述有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于300。测试样例:[[1,2,3],[4,5,6],[7,8,9]],3返回:[[7,4,1],[8,5,2],[9,6,3]]分析矩阵90旋转,旋转后矩阵元素与原矩阵元素比较,位置下标发生了规律性变化。原[i, j]元素变成了下标为[j, n - i - 1]的元素。代码实现 // write code here i
2020-10-14 15:35:54
1019
原创 面试:找出最相近对称数,兴业数金笔试
输入一个正整数的字符串,输出与它最接近的对称数字(不包括它自己)的字符串注1: 输入字符串的长度最多不会超过18注2: 当大于输入数字和小于输入数字的对称数字与输入数字距离相同时,取小的数字作为答案输入描述:输入为一个正整数的字符串123输出描述:输出为与输入数字最接近的对称数字(不包括输入本身)的字符串121简单分析观察对称数和输入数有一定的结构关系。以字符串来看,后半部分一定是前一部分的对称。以数字大小关系来看,要想找和原数最近的对称数,最高位到最低温越相近越好。所以直接把原数的
2020-10-14 11:48:26
2473
2
原创 面试:反转链表,字节跳动Java研发算法题
输入一个链表,反转链表后,输出新链表的表头。说明:本题目包含复杂数据结构ListNode/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode ReverseList(ListNode head) { if(h
2020-10-14 09:33:51
73
原创 面试:在 Java 中定义一个不做事且没有参数的构造 方法的作用
Java 程序在执行子类的构造方法之前,如果没有用 super() 来调用父类特定的构造方法,则会调用父类中“没有参数的构造方法”。因此,如果父类中只定义了有参数的构造方法,而在子类的构造方法中又没有用 super() 来调用父类中特定的构造方法,则编译时将发生错误,因为 Java 程序在父类中找不到没有参数的构造方法可供执行。解决办法是在父类里加上一个不做事且没有参数的构造方法。...
2020-10-13 21:02:27
82
原创 面试:Java 重载(overload)和重写(Override)的区别
重载:函数名相同,参数列表不同,返回类型可以不同。重写:函数名相同,参数列表相同,返回类型范围小于等于父类,抛出异常小于等于父类,修饰符范围大于等于父类,private方法不能被重写。...
2020-10-13 20:48:57
91
原创 面试:JVM 是什么
Java Virtual Machine是解释Java字节码的解释器软件。Java代码具有一次编译,不同平台可运行的特点,是因为不同平台上实现了不同的Java虚拟机。
2020-10-13 20:10:09
52
原创 面试:Java语言的特点
初学者易上手。面向对象语言平台无关系性(靠不同平台实现的Java虚拟机实现,但是不同虚拟机可以运行相同的字节码)安全、可靠支持多线程(C++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而 Java 语言却提供了线程的支持)...
2020-10-13 19:54:59
99
原创 面试:面向过程和面向对象
面向过程是以分析解决一个问题所需要的步骤,然后把这些步骤一一实现,最后进行步骤实现(函数)的调用。面向对象是构成问题的事物分解成一个个对象,并描述对象在整个解决问题步骤中的行为。两者的比较:一般面向过程用于小型程序的设计,性能更佳。而面向对象用于比较大型复杂系统的设计,代码更容易维护。...
2020-10-13 19:49:21
80
原创 面试:AOP(Aspect-Oriented Programming)再理解
AOP其实是代码复用实现的一种抽象的设计模式。怎么理解这句话呢。首先我们得理解什么是切片?如果有许多业务逻辑中包含着类似代码,开发人员为了提高代码的可复用性和可管理性会把这些代码抽取出来到公共的模块中(e.g. 函数);那么调用到该函数的地方可以被称为一个切面。在Spring框架中AOP得到了比较好的支持。Spring AOP功能的具体使用AOP的底层原理...
2020-10-13 17:46:03
142
转载 面试:Web Socket
为什么需要 WebSocket?初次接触 WebSocket 的人,都会问同样的问题:我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处?答案很简单,因为 HTTP 协议有一个缺陷:通信只能由客户端发起。举例来说,我们想了解今天的天气,只能是客户端向服务器发出请求,服务器返回查询结果。HTTP 协议做不到服务器主动向客户端推送信息。简介WebSocket 协议在2008年诞生,2011年成为国际标准。所有浏览器都已经支持了。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也
2020-10-13 16:39:21
111
原创 面试:Spring Boot的优缺点
Spring Boot的优缺点是什么?优点:快速创建独立运行的Spring应用以及与主流框架集成1.1. 使用嵌入式的Servlet容器,应用最终可以打成Jar包的形式独立运行。1.2. 版本仲裁中心和不同的场景启动器为Spring Boot应用开发管理这不同的框架和版本依赖。1.3. 约定大于配置,Spring Boot为开发者导入项目所使用的框架设置好了默认配置。1.4. Java Config代替了原有难以管理的SpringXML配置。1.5. 提供了准生产环境的运行时的应用监控。1.
2020-10-13 15:33:35
1029
原创 面试:网络相关知识点和总结
用户发送Http请求到浏览器响应的全过程1.1. 浏览器解析Http请求(URL)获得域名1.2. browser向域名系统发出解析域名的请求(请求是建立在UDP协议之上的,解析结果为IP)1.3. DNS接受到请求后解析DN,并把解析的IP响应给browser1.4. browser向拥有该IP的服务器发起建立TCP连接的请求(三次握手)1.5. 双方建立TCP连接后,browser发送Http资源请求(带URL,资源路径)1.6. 服务器解析资源路径,并把资源响应给browser(TCP.
2020-10-13 11:31:41
131
原创 面试:算法LRU(Least Recently Used),字节跳动Java研发算法题
LRU是什么?按照英文的直接原义就是Least Recently Used,最近最久未使用法,它是按照一个非常著名的计算机操作系统基础理论得来的:最近使用的页面数据会在未来一段时期内仍然被使用,已经很久没有使用的页面很有可能在未来较长的一段时间内仍然不会被使用。基于这个思想,会存在一种缓存淘汰机制,每次从内存中找到最久未使用的数据然后置换出来,从而存入新的数据!它的主要衡量指标是使用的时间,附加指标是使用的次数。在计算机中大量使用了这个机制,它的合理性在于优先筛选热点数据,所谓热点数据,就是最近最多使用的
2020-10-12 20:19:52
218
原创 面试:Java基础知识点,String、StringBuilder和StringBuffer的不同
被final修饰的String类String的官方描述:Strings are constant; their values cannot be changed after they are created. String buffers support mutable strings. Because String objects are immutable they can be shared.String变量是常量,它们的值在创建后就不可以被修改了。StringBuffer对象支持可变Str
2020-10-11 20:19:33
55
原创 面试: Spring Boot YAML,第二篇
什么是YAMLYet A Mark Language 一种标记语言YAML Are not Mark Language YAML不是编辑语言YAML是一种以数据为中心的标记语言,语法格式简洁,节省存储空间。如果开发人员需要修改Spring Boot依赖框架的默认配置,可以在resources文件夹下创建application.propertities和application.yml文件。并在其中添加相应配置,Spring Boot将会读取用户配置去取代默认配置。YAML的语法表示字面量(键
2020-10-11 18:09:11
113
1
原创 面试:启动一个简单的Spring Boot应用的相关主要注解和相关代码说明,第一篇
@SpringBootApplication:标注当前类是SpringBoot应用的主程序类。@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, cla.
2020-10-11 16:50:40
115
转载 面试: 华为综合测试
题型分析华为性格测试共36页,每页有3个陈述句,你需要指出哪一个最接陈述近你的,哪一个陈述最不接近你,并在35分钟内做完;背景知识测试的基本原理源于分析心理学派的荣格八种认知功能测试,感兴趣的同学可以看我的上篇文章。外倾型(E) 注意力方向(精力来源) 他人相处,行动,分享,说,热情,社交,反应快,快节奏,广度内倾型(I) 独处,思考,内心,小群体,听,深思熟虑,深度 感觉型(S) 认知方式(如何搜集信息) 细节,有形,实践,效果,琢磨旧知识,记忆事实,具体,深度,精进直觉型(N) 灵
2020-10-11 11:07:58
49891
19
转载 面试:四种IO模型
进程与线程的描述一个进程至少会创建一个线程,多个线程共享一个程序进程的内存。程序的运行最终是靠线程来完成操作的。线程的数量跟CPU核数有关,一个核最多能发出两个线程。线程的操作主要分为:一:给CPU进行程序命令的执行。二:IO的操作(读取或输出数据)或者请求网络数据。IO复用形成原因如果一个I/O流进来,我们就开启一个进程处理这个I/O流。那么假设现在有一百万个I/O流进来,那我们就需要开启一百万个进程一一对应处理这些I/O流(——这就是传统意义下的多进程并发处理)。思考一下,一百万个进程,你的CPU
2020-10-10 09:53:34
262
转载 MQ(消息队列框架)选型对比:ActiveMQ, RabbitMQ, RocketMQ, Kafka
市场使用情况(背景)中小型软件公司,建议选RabbitMQ。一方面,erlang语言天生具备高并发的特性,而且他的管理界面用起来十分方便。不考虑rocketmq和kafka的原因是,一方面中小型软件公司不如互联网公司,数据量没那么大,选消息中间件,应首选功能比较完备的,所以kafka排除。RocketMQ也很不错,只是没有RabbitMQ出来的早,文档和网上的资料没有RabbitMQ多,但也是很不错,RocketMQ是阿里出品,现在阿里已经把RocketMQ捐赠给Apache了,维护和更新不是问题 。
2020-10-09 11:24:39
446
原创 面试 Spring Boot:什么是Spring Boot?
什么是Spring Boot?Spring Boot 是由Pivotal团队提供的全新框架,其设计目的是简化Spring应用的开发过程。首先,该框架主张"约定大于配置"(大量默认配置,用户也可以修改)、注解和Java代码方式进行应用开发的配置,这样开发人员将不再被样板化的XML文件配置所束缚(Spring框架通过XML进行配置应用参数)。第二,Spring Boot通项目管理技术(Maven等)整合了Spring相关技术和其他技术框架,使开发人员快速的开发应用。因此,我们说Spring Boot是J2EE
2020-10-08 21:27:57
112
原创 数据结构与算法 二叉树基本框架与知识点
二叉树的定义二叉树是n个节点的集合,n >= 0。当 n = 0 时这为一颗空二叉树。或一个根节点带着两颗互补相交的左子树和右子树,同时左右子树仍为二叉树。四种特殊的二叉树满二叉树:高度为h,节点有 (2^h - 1 )个节点的二叉树。对编号为 i 的节点,编号为(i/2)左右取整的两个节点为该节点的双亲节点;如果该节点有子节点,编号2i 和 2i + 1 的节点为 该节点的孩子节点。满二叉树:高度为h,节点个数为n;并且该树的节点与高度为h的满二叉树编号为 1~n 的所有节点一一对应。
2020-10-08 17:15:27
2209
原创 华为笔试算法题:密码要求
题目描述密码要求:1.长度超过8位2.包括大小写字母.数字.其它符号,以上四种至少三种3.不能有相同长度大于2的子串重复输入描述:一组或多组长度超过2的子符串。每组占一行输出描述:如果符合要求输出:OK,否则输出NG...
2020-10-01 09:42:26
531
原创 数据结构与算法 递归的原理与举例
当年本科刚刚接触编程的时候,对递归的理解始终不够到位。原因主要是当时老师把递归放在计算机组成原理这门课上讲解的,与编程实践联系的不是非常紧密,而且当时自己没有对知识理解形成一个体系,所以并没有比较深入的介绍其底层的调用机制。前几天,在网上听了一位老师对递归知识的讲解,感觉豁然开朗。什么是递归?递归从实际代码层面来看就是方法对自身的调用,方法本身可以传入实参。使用递归的意义是什么?递...
2020-04-20 04:12:44
165
原创 数据结构与算法 Java实现计算后缀表达式(逆波兰表达式)
前面我们介绍了什么是中缀、前缀和后缀表达式,还实现使用Java代码了中缀表达式转后缀表达式。这篇博客我们来介绍如何计算后缀表达式,并使用Java实现。计算后缀表达式的流程:从左至右扫描表达式,遇到数字时,将数字压入堆栈。遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(次顶元素 和 栈顶元素),并将结果入栈。重复上述过程直到表达式最右端,最后运算得出的值即为表达式的结...
2020-04-17 05:27:15
261
原创 数据结构与算法 中缀、前缀和后缀表达式,Java实现中缀转后缀
中缀表达式中缀表达式是一个通用的算术或逻辑公式表示方法, 操作符是以中缀形式处于操作数的中间(例:3 + 4),中缀表达式是人们常用的算术表示方法。中缀记法中括号是必需的。计算过程中必须用括号将操作符和对应的操作数括起来,用于指示运算的次序。8+4-62用后缀表达式表示为:8 4+6 2-2*(3+5)+7/1-4用后缀表达式表示为:235+*71/+4-前缀表达式前缀表达式是...
2020-04-16 06:24:38
194
原创 Java反射 使用Class类的对象(运行时类)newInstance()方法的说明
前面我们演示过如何使用Java反射动态创建一个类的对象,这个过程是调用Constructor类对象完成的。其实运行时类(Class类对象)还提供了newInstance()方法,该方法封装了我们前面使用的方法代码。不过调用该方法有一个前提,就是该运行时类在代码编写时,必须定义一个空参构造器。...
2020-04-12 22:37:24
401
数据结构与算法分析 java语言描述(原书第3版)@www.java1234.com.pdf
2019-06-18
Cracking the Coding Interview 6th Edition.pdf
2019-06-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人