自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

刘伦斯的博客

一个喜欢书法,摄影的菜鸟程序员,请赐教!

  • 博客(135)
  • 资源 (2)
  • 收藏
  • 关注

原创 适合给女朋友讲的Java数据结构之红黑树
原力计划

红黑树的特性:1、红黑树有颜色属性。2、颜色只能是红色或黑色。3、根节点必须是黑色。4、叶子节点必须是黑色。5、叶子节点必定是空节点,红黑树定义空节点就是黑色节点。6、添加的新节点必定是红色的。7、红黑树中不能有两个连续的红色节点。...

2020-04-11 23:00:46 292 7

原创 ArraylList和LinkedList的性能对比

由此可见,LinkedList比

2020-09-16 00:33:57 34

原创 计算机通信与网络基础概念总结

计算机网络:把分布在不同地点且具有独立功能的多个计算机,通过通信设备和线路连接起来,在功能完善的网络软件运行环境下,以实现计算机网络和中资源共享的系统。计算机网络和分布式系统的区别:计算机网络是分布在不同地点和具有独立功能的多个计算机,通过通信设备和线路连接起来,实现资源的共享。分布式系统是在分布式计算机操作系统或应用系统的支持下进行分布式数据处理和各种计算机之间的并行工作,分布式系统在计算机网络的基础上为用户透明的集成环境。分布式系统和计算机网络之间的区别主要在软件系统。以资源..

2020-09-07 17:22:32 58

转载 Java语言和C++语言的异同

Java与C++都是面向对象的语言,都使用了面向对象的思想(封装、继承、多态),由于面向对象由许多非常好的特性(继承、组合等),因此二者有很好的可重用性。主要不同点:1、Java为解释性语言,其运行过程为:程序源代码经过Java编译器编译成字节码,然后由JVM解释执行。而C/C++为编译型语言,源代码经过编译和链接后生成可执行的二进制代码,可直接执行。因此Java的执行速度比C/C++慢,但Java能够跨平台执行,C/C++不能。2、Java是纯面向对象语言,所有代码(包括函数、变量)必须.

2020-09-07 17:09:13 57

原创 计算机通信与网络IP地址、子网的划分和子网掩码、子网地址的计算

设有一个网络地址为 172.168.0.0,要在此网络中划分14个子网,问:需要多少位表示子网?子网掩码的点分十进制数值是多少?每个子网地址是什么?IP地址类型 最初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。IP地址根据网络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址。A类..

2020-09-07 16:00:49 92

原创 计算机通信与网络香农定理

在给定带宽W(Hz)、信躁功率比S/N的信道,最大传输速率为C = W log2(1+S/N) b/s W 为信道的带宽(以 Hz 为单位);S/N 常用分贝形式表示,为信道内部的信噪功率比,其计算公式为:dB= 10 log10 (信号功率P1/ 噪声功率P2)假设一信道带宽为4kHz,信道要达到24kb/s的速率,按香农公式,信道的信噪比是( )倍?解: 24*1000=4000log2(1+S/N) 得:63...

2020-09-06 21:48:57 62

原创 剑指Offer:变态跳台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。假设上一步跳n步到达n个台阶,那么前一步可以从哪些台阶到达呢?如果上一步跳 1 步到达第 n 个台阶,说明上一步在第 n-1 个台阶。已知跳到第n-1个台阶的方法数为f[n-1]如果上一步跳 2 步到达第 n 个台阶,说明上一步在第 n-2 个台阶。已知跳到第n-2个台阶的方法数为f[n-2]。。。如果上一步跳 n 步到达第 n 个台阶,说明上一步在第 0 个台阶。已

2020-09-06 16:24:20 44

原创 浅谈Java设计模式

1、简介设计模式是一套被反复使用,多数人知晓、经过分类、代码设计经验的总结。使用设计模式的目的:为了代码可重用性、让代码更容易被人理解、保证代码可靠性2、设计原则面向对象的基本原则1、高内聚:模块内部要高度内聚,每个类完成特定的功能2、低耦合:模块之间要降低耦合度,类之间的依赖要尽量低设计模式的六大原则:1、单一职责原则一个类只负责一个原则2、开闭原则对扩展开放,对修改关闭3、里氏替换原则所有引用基类的地方必须能透明的使用其子类的对象任何基类出现的地方

2020-09-06 15:18:27 71

原创 接口和抽象类的比较

相同点:1、接口和抽象类都不能实例化2、都包含抽象方法不同点:1、接口中只有静态常量,抽象类中还有普通成员变量2、接口中只有抽象方法,抽象类中还有非抽象方法3、接口中不包含构造方法,抽象类中可=可以包含构造方法4、接口支持多继承,抽象类不支持多继承...

2020-09-06 14:03:48 48

原创 回顾之其他类

1、简介常用方法import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class Test01_Date { public static void main(String[] args) throws ParseException { test03(); } /* * ...

2020-09-05 21:12:59 92

原创 回顾包装类

1、简介2、基本数据类型和包装类的转换public static void main(String[] args) { int num = 10; // 创建一个int类型的变量,值为10 Integer integer = new Integer(10); // 创建一个Integer包装类的对象,值为10 Character c = new Character('a'); Double d = new Double(12.5); /* * 包装类具有..

2020-09-05 20:49:42 44

原创 回顾StringBuilder和StringBuffer

String是不可变字符串,不可修改,频繁对String修改会产生许多对象,垃圾数据。String类中提供了许多方法,但没有增删改等操作。频繁对字符串进行修改操作,建议使用StringBuffer和StringBuilder,它们是可变字符串,这两个类的用法基本一致。 StringBuffer stringBuffer=new StringBuffer("Hello"); stringBuffer.append("你好"); System.out.println..

2020-09-05 20:22:19 37

原创 String之常量池

String不变性String中的值一旦确定则不可修改,不可修改指的是内存中的值不能修改而不是变量的值不能修改。String常量池使用双引号创建的字符称为String常量,也就是字符常量。1、字符常量被存放在内存的常量池中2、常量池中的值不会被gc回收,即gc不会清理这个区域的内容。3、多次出现的字符常量,追在常量池中创建一个String对象(JVM做了优化)常量池的位置:jdk1.6中,常量池在方法区的PermGen Space永久代中(就是一个永久保存区域)jd.

2020-09-05 17:50:54 44

原创 String之正则表达式

正则表达式是Java中一门独立的语言,用于检测特定字符串是否符合规则。正则表达式就是用来定义匹配的规则的。规则的定义:用法:String中支持正则表达式的用法System.out.println("aaabbb".matches("(a|b)*"));//只能是a或b位数任意 System.out.println("aaabbb".matches("([a-z]{1,})"));//只能是小写字母,并且最少有一个 System.out.prin.

2020-09-05 17:08:42 71

原创 String之字符集

由于计算机只认识0和1,所以在处理各种字符时,需要对字符进行编码或解码,以便计算机能够识别和存储。编码:将字符串转换为字节数组,称为编码。解码:将字节数组转换为字符串,称为解码。...

2020-09-05 15:03:56 59

原创 String常用方法总结

package String;import java.util.Arrays;/** * @version v1.0 * @Package String * @auther LaurenceLau * @date * @description String常用方法 */public class Test_01 { public static void main(String[] args) { String string = "Hello World!.

2020-09-02 17:46:04 43

原创 线程间的通信

1、锁池和等待池每个对象都自带锁池和等待池锁池:当线程执行synchronized块时如果无法获取特定对象上的锁,此时会进入该对象的锁池 当锁被归还给该对象时,锁池中的huoi多i个线程会竞争获取该对象上的锁 获取对象锁的线程将执行synchronized块,执行完毕后会释放锁等待池:当线程获取该对象上的锁后,将从它上次调用wait()方法得到位置开始继续运行2、相关方法方法名 ...

2020-08-13 00:00:31 75

原创 线程安全问题

1、简介:多个线程同时访问共享数据是可能会出现问题,称为线程安全问题 --当多线程访问共享数据时,由于CPU的切换,导致线程只执行了关键代码的一部分,还没执行完 --此时另一个线程参与进来,导致共享数据发生异常package 线程.线程安全问题;/** * @version v1.0 * @Package 线程.线程安全问题 * @auther LaurenceLau * @date * @description */public class Ticket imp...

2020-08-11 23:22:10 61

原创 进程和线程的区别与联系

进程:是计算机上的程序关于某数据集合上的一次运行活动。是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其数据形式的描述。进程是程序的实体,是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础,程序是指令、数据及其组织形式的描述,进程是程序的实体。线程:是操作系统进行运算调度的基本单位,它被包含在进程之中,是进程中的实际运作单位,一条线程指的是进程中一个单一顺序的控制流。一个

2020-08-08 14:41:14 71

原创 深入JVM虚拟机之使用jstat命令摸清线上系统的JVM运行状态

1、对于运行中的系统,想检查JVM中的整体运行情况,最常用的工具就是jstat2、通过jstat可以查看JVM内部的内存的使用情况,还有GC的执行次数以及耗时3、通过这些指标,可以判断出系统的当前内存使用压力以及GC压力,内存分配是否合理新生代对象的增长速度1、对JVM首先要了解的,就是随着系统的运行,每秒钟会在年轻代的Eedn区分配多少对象2、 jstat -gc [PID] 1000每隔1秒中执行1次jstat统计3、举例:第一秒先显示Eden区使用了200MB内存,第.

2020-06-23 01:14:15 121

原创 深入JVM虚拟机之高并发交易系统应如何设置JVM堆内存的大小?

我们以一个每日百万级别的交易支付系统作为背景,来分析一下,在线上部署一个系统时,应该如何根据系统的业务来合理的设置JVM对内存的大小。系统整体架构支付订单1、上述业务流程中,最核心的环节是在用户发起支付请求的时候,会生成一个支付订单2、这个支付订单需要记录几个核心要素:-谁发起的支付?-对那个商品的支付?-通过那个渠道进行的支付?-支付的时间等等诸如此类的信息如果每日有百万笔交易,在JVM的角度来看,就是每天会在JVM中创建上百万个新的支付订单对象1、假.

2020-06-22 23:29:59 107

原创 深入JVM之方法调用是如何导致线程栈内存溢出的?

java.lang.StackOverflowError栈内存溢出是进行复杂运算时非常容易出现的错误栈:1、每个线程的虚拟机栈的大小是固定的,默认为1MB。2、每次线程调用一个方法,都会将本次方法调用的栈桢压入虚拟机栈里,这个栈桢里保存着方法内部的局部变量和其他信息。栈内存溢出:1、既然一个线程的虚拟机栈内存大小是有限的,那么假设不停的调用各种方法,对应的栈桢不停的压入栈中。2、大量的栈桢会消耗完毕这个1MB的线程栈内存,最终就会导致出现栈内存溢出的情况。...

2020-06-22 22:29:43 59

原创 深入JVM虚拟机之JVM可能会发生哪几种OOM?如何进行排查和处理?

总览:1、当JVM内存严重不足时,会抛出java.lang.OutOfMemoryError:xxxx错误2、根据实际生产经验,OOM是非常严重的问题,一般会对程序日志中的OutOfMemeoryError配置关键字告警,一经发现,立即处理。Java Heap Space :当堆内存没有足够的空间存放创建的对象时,就会抛出java.lang.OutOfMemoryError:Java heap space错误:1、请求创建一个巨大对象,通常是一个大数组2、超出预期的访问量、数据量、比

2020-06-22 21:53:50 154

原创 深入JVM虚拟机之什么是堆外内存?什么情况下发生堆外内存溢出或泄露?

堆内内存:1.一般情况下,一个新的对象创建在JVM内的堆上,并为其分配内存空间。堆空间由JVM垃圾回收器管理,称为堆内内存(on-heap memory)2.虚拟机会定期对垃圾内存进行回收,有时会进行一次彻底的回收Full GC3.彻底回收时,垃圾收集器会对所有分配的堆内内存进行完整的扫描,这意味一次垃圾收集对Java 应用造成的影响,跟堆的大小是成正比的,过大的堆会影响 Java 应用的性能堆外内存:1.和堆内内存相对应,堆外内存就是把内存对象分配在Java虚拟机的堆以外的内存,这些内

2020-06-22 16:35:28 190

原创 深入JVM虚拟机之JVM有哪些常见的垃圾回收器?各自的特点是什么?
原力计划

Java发展至今,已经推出了好几代垃圾收集器,包括Serial、ParNew、Parallel、CMS、G1以及Java11中最新的ZGC,每一代GC都对前一代存在的问题做出了很大的改善。新生代使用的垃圾收集器主要有:1.Serial收集器2.ParNew收集器3.Parallel scavenge收集器Serial收集器:1.单线程收集器,在单核CPU架构下,JDK3之前新生代的回收器的唯一选择、2.它与应用线程的执行是串行的,也就是说,执行应用线程的时候,不...

2020-06-22 12:08:45 173

原创 垃圾回收算法有哪些?每个算法各自有何优劣?

1.在探讨垃圾回收算法之前,首先需要介绍一下垃圾回收机制2.我们知道对无用的对象,可以进行回收然后释放空间,所以需要确定哪些对象是需要被回收的 垃圾回收机制: 1、引用计数法:当对象被引用,程序计数器+1;释放-1;当为0时证明对象未被引用,可回收 但是这个算法有明显的缺陷,对于循环引用的情况下,对象不会被回收例如下图:对象A,对象B循环引用,没有其他的对象引用A和B,但是A和B都不会被回收 2、可达性分析法:通过一些列称之为“GC Roots...

2020-06-22 00:58:03 198

原创 面试官:对于堆内存,虚拟机如何进行分代管理?

JVM根据对象在内存中存活的时间长短,将堆内存分为老年代和新生代。新生代:分为Eden+(S0+S1) S0、S1统称为Survivor新生代区域比例为1:1:8Minor GC:

2020-06-22 00:18:16 40

原创 面试官:谈一谈Jdk8之后的虚拟机内存包含哪几个部分?做了哪些调整与改进?

JDK8之前的架构:紫色部分对于线程而言是私有的,黄色部分对于线程而言是共享的。堆:栈:本地方法栈:程序计数器:方法区(永久代)JDK8架构:最大的调整和改进:直接内存:也称为对外内存元空间:方法区的内存不够,将元空间放在JVM外部。总结:...

2020-06-22 00:00:47 108

原创 面试官:请你谈谈JVM类加载器机制和双亲委派模型

Java代码在编译好之后会编程.class字节码文件,加载到Java虚拟机中运行,本篇主要关于类加载器机制。Java中的类加载器大致可以分为两类,一类是系统提供的,一类是java应用开发人员编写的。系统提供的类加载器主要有以下三个:1、启动类加载器:加载的是lib目录中的类加载出来,包名是java.xxx(如:java.lang.Object)2、应用程序加载器:加载的是lib/ext目录下的类,包名是javax.xxx(如:javax.swing.xxx)3、应用程序类的加载器:.

2020-06-21 22:52:40 106

原创 面试官:Java代码是如何运行起来的?

Java代码到底是如何运行起来的?1、通过采用jar包的形式 2、war包---->tomcat那么实现细节是怎样的呢?编译1、写好代码后,会通过编译器将代码编成.class后缀的字节码文件。2、Java是与平台无关的,一次编写到处运行,实现语言无关性的基础就是虚拟机和字节码存储格式。3、只要编译器按照虚拟机规范,编译成对应的 .clsss 文件,这个.class文件就能被J...

2020-06-21 21:40:20 116

原创 Java面试之算法的性能分析:我写的代码为什么会超时?小盆友,你是不是有很多???

为什么要内存对齐?1.平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2.性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。Java代码编译执行...

2020-06-19 00:14:03 72

原创 AOP:切入点表达式

​<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocat...

2020-06-17 00:40:55 75

原创 XML方式(配置的方式)实现AOP编程

Xml实现aop编程:1) 引入jar文件 【aop 相关jar, 4个】2) 引入aop名称空间3)aop 配置* 配置切面类 (重复执行代码形成的类)* aop配置拦截哪些方法 / 拦截到方法后应用通知代码package com.aop_xml;public class UserDao implements IUserDao { @Override public void save() { System.out.println("-----核心业务,.

2020-06-16 23:43:41 72

原创 Spring单例模式和多例模式

默认情况下scope="singleton",那么该Bean是单例,任何人获取该Bean实例的都为同一个实例;scope="prototype",任何一个实例都是新的实例;scope="request",在WEB应用程序中,每一个实例的作用域都为request范围;scope="session",在WEB应用程序中,每一个实例的作用域都为session范围;注意:在默认情况下,Bean实例在被Spring容器初始化的时候,就会被实例化,默认调用无参数的构造方法。在其它情况下,Bean将会...

2020-06-16 22:41:43 97

原创 以注解的方式实现AOP编程
原力计划

概述:Aop,aspect object programming 面向切面编程功能: 让关注点代码与业务代码分离!关注点,重复代码就叫做关注点;切面,关注点形成的类,就叫切面(类)!面向切面编程,就是指 对很多功能都有的重复的代码抽取,再在运行的时候往业务方法上动态植入“切面类代码”。切入点,执行目标对象方法,动态植入切面代码。可以通过切入点表达式,指定拦截哪些类的哪些方法; 给指定的类在运行的时候植入切面类代码。3.2 注解方式实现AOP编程...

2020-06-16 15:48:59 108

原创 代理模式(Spring Aop详解)
原力计划

1.1 概述代理(Proxy)是一种设计模式, 提供了对目标对象另外的访问方式;即通过代理访问目标对象。 这样好处: 可以在目标对象实现的基础上,增强额外的功能操作。(扩展目标对象的功能)。举例:明星(邓紫棋)ß---经纪人<-------用户 目标 (代理)代理模式的关键点: 代理对象与目标对象。1.2 静态代理静态代理, 1) 代理对象,要实现与目标对象一样的接口;...

2020-06-15 21:19:44 129

原创 生活不易,在忙也要花一分钟时间搞清分治、动态规划和备忘录的区别与联系

分治,动态规划,备忘录搞不清,遇到问题不知道应该用什么样的方法合适?分治:分治算法对问题进行分解时所遵循的原则是将待求解问题分解为若干个规模较小、相互独立且与原问题相同的子问题(不包含公共的子问题)。动态规划:对问题进行分解时所遵循的原则是将待求解问题分解为若干个规模较小、相互关联的与原问题类似的子问题(包含公共的子问题),采用记录表的方法来保存所有已解决问题的答案,...

2020-04-30 00:13:39 104

原创 电脑联网标识消失的一种解决方法

当更新或重装Windows系统后有时候会发现电脑联网标识消失的现象,下面介绍一种解决方法。

2020-04-22 15:46:18 134

原创 简单易懂的Java数据结构之之插入排序

算法描述:假定n是数组的长度,首先假设第一个元素被放置在正确的位置上,这样仅需从1-n-1范围内对剩余元素进行排序。对于每次遍历,从0-i-1范围内的元素已经被排好序,每次遍历的任务是:通过扫描前面已排序的子列表,将位置i处的元素定位到从0到i的子列表之内的正确的位置上。将arr[i]复制为一个名为target的临时元素。向下扫描列表,比较这个目标值target与arr[i-1...

2020-04-21 23:08:14 64

原创 叫声小哥哥,带你去看美丽的Java数据结构之哈夫曼树
原力计划

简介 哈弗曼编码:又称为霍夫曼编码,它是现代压缩算法的基础。 假设要把字符串【ABBBCCCCCCCCDDDDDDEE】转成二进制编码进行传输 可以转成ASCII编码(65-69,01000001-01000101),但是有点冗长,如果希望编码更短呢? 我们可以先自己约定5个字母对应二进制码 A B C D E ...

2020-04-21 16:01:44 116

操作系统复习题.pptx

在计算机中,操作系统是其最基本也是最为重要的基础性系统软件。从计算机用户的角度来说,计算机操作系统体现为其提供的各项服务;从程序员的角度来说,其主要是指用户登录的界面或者接口;如果从设计人员的角度来说,就是指各式各样模块和单元之间的联系。事实上,全新操作系统的设计和改良的关键工作就是对体系结构的设计,经过几十年以来的发展,计算机操作系统已经由一开始的简单控制循环体发展成为较为复杂的分布式操作系统,再加上计算机用户需求的愈发多样化,计算机操作系统已经成为既复杂而又庞大的计算机软件系统之一。

2020-04-01

centos下mysql安装.pdf

# CENTOS下的Mysql安装 ## 1.检查是否自带mysql ```shell rpm -qa|grep -i mysql ``` ![1563600433980](images\1563600433980.png) ## 2.卸载自带的mysql ```shell rpm -e ..... --nodeps #--nodeps  不验证套件档的相互关联性, "....."代表上面命令查询到的服务名 ``` ![1563600472182](images\1563600472182.png) ## 3.检查是否卸载成功 ```shell rpm -qa|grep -i mysql ``` ![1563600522032](images\1563600522032.png) **创建/usr/mysql目录并进入** ```sh mkdir /usr/mysql cd /usr/mysql ``` ## 4.上传mysql服务端、客户端安装包到/usr/mysql ![1563600640045](images\1563600640045.png) 我们打开的centos虚拟机是32位,所以上传安装32位的rpm安装文件

2020-04-01

空空如也

空空如也

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

TA关注的人 TA的粉丝

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