自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java并发60问

https://www.modb.pro/db/2375191、并行和并发有什么区别?2、说说什么是进程和线程?3、说说线程有几种创建方式?4、为什么调用start()方法时会执行run方法()。那怎么不直接调用run()方法?5、线程中有哪些常用的调度方法?6、线程有几种状态?7、什么是线程上下文切换?CPU 控制权由一个已经正在运行的线程切换到另外一个就绪并等待获取 CPU 执行权的线程的过程。?多线程一定比单线程快吗?8、守护线程了解吗?daemom线程(守护线程),us.

2022-02-11 14:42:48 191

原创 设计模式-解释器模式

前言:Sunny软件公司欲为某玩具公司开发一套机器人控制程序,在该机器人控制程序中包含一些简单的英文控制指令,每一个指令对应一个表达式(expression),该表达式可以是简单表达式也可以是复合表达式,每一个简单表达式由移动方向(direction),移动方式(action)和移动距离(distance)三部分组成,其中移动方向包括上(up)、下(down)、左(left)、右(right);移动方式包括移动(move)和快速移动(run);移动距离为一个正整数。两个表达式之间可以通过与(and)连接,

2022-02-07 17:34:31 149

原创 设计模式-代理模式

1、概念为其他对象提供一种代理以控制这个对象的访问,在某些情况下一个对象不能直接访问那个对象时,代理就起到了客户端和被代理对象(委托类)中介作用。 代理类和委托类都有同样接口。可以不用动原来类的逻辑,再次增加一些功能,符合开闭原则。真正的业务还是交给被代理对象处理的,因此在其委托被代理对象处理业务前后实现一些公共逻辑服务,例如加入缓存或日志等功能,无须修改原来的类就可以使用代理进行实现。2、示例程序静态代理模式:类图:Printable: 代理类和被代理类实现同样的接口PrintProxy:

2022-02-07 16:45:49 401

原创 设计模式-享元模式

1、概念FlyWeight是”轻量级“的意思,指的是拳击比赛中选手体重最轻的等级。顾名思义,该设计模式的作用是为了让对象变”轻“。对象在计算机中是虚拟存在的东西,它的”重“和”轻“并非指实际的重量,而是它们”所使用的内存大小“,使用内存多的就是”重对象“,使用内存少的就是”轻“对象。在Java中,可以通过以下语句生成Something类的实例。 new Something()为了能够在计算机中保存该对象那个,需要分配给其足够的内存空间,当程序中需要大量对象的时候,如果都使用new关键字来分配内存,

2022-02-07 16:18:33 366

原创 线程池面试题

https://blog.csdn.net/ye17186/article/details/894679191、线程池的好处?降低资源消耗,重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度,当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果频繁创建,会消耗系统资源,降低系统稳定性,使用线程池统一分配、调优和监控。2、线程池的核心参数?corePoolSize(核心线程数)核心线程会一直存在,即使没有任务执行;当线程数小于核心.

2022-01-13 17:53:37 887

原创 Redis面试问题

如何保存缓存和数据库的一致性?https://baijiahao.baidu.com/s?id=1710566894419278870&wfr=spider&for=pc数据库有数据,缓存没有数据;数据库有数据,缓存也有数据,数据不相等;数据库没有数据,缓存有数据。使用缓存的策略:首先尝试从缓存读取,读到数据则直接返回;如果读不到,就读数据库,并将数据会写到缓存,并返回。需要更新数据时,先更新数据库,然后把缓存里对应的数据失效掉(删掉)可见第一种和第二种,如果遵守

2022-01-12 16:37:00 158

原创 redis之分布式锁

CSDN云计算核心问题:1、为什么要使用分布式锁?再开始讲分布式锁之前,有必要简单介绍一下,为什么需要分布式锁?与分布式锁相对应的是【单机锁】,我们在写多线程程序的时候,避免同时操作一个共享变量产生数据问题,通常会使用一把锁来【互斥】,以保证共享变量的正确性,其使用范围是【同一进程】中。如果换做是多个线程,需要同时操作一个共享资源,如何互斥呢?例如,现在的业务应用通常都是微服务架构,这也意味着一个应用会部署多个进程,那这多个进程如果需要修改MySql中的同一行记录时,为了避免操作乱序倒置数.

2022-01-10 18:00:59 1285 1

原创 Spring面试(IOC和AOP,BeanFacory和FactoryBean)

https://www.zhihu.com/question/23277575/answer/853179950Ioc依赖倒置原则( Inversion of Control )把原本的高层建筑依赖底层建筑“倒置”过来,变成底层建筑依赖高层建筑。高层建筑决定需要什么,底层去实现这样的需求,但是高层并不用管底层是怎么实现的。这样就不会出现前面的“牵一发动全身”的情况。控制反转就是依赖倒置原则的一种代码设计的思路。具体采用的方法就是所谓的依赖注入(Dependency Injection)控制.

2022-01-06 17:47:19 71

原创 spring面试(bean生命周期、循环依赖)

https://www.zhihu.com/question/438247718/answer/1730527725https://jackson0714.github.io/PassJava-Learning/#/88.Interview/09.Spring/01.Spring?id=_6springbean%e7%9a%84%e7%94%9f%e5%91%bd%e5%91%a8%e6%9c%9f%e8%af%b4%e8%af%b4%ef%bc%9fBean的生命周期SpringBean 生命周.

2022-01-05 16:20:05 594

原创 Redis教程

https://www.redis.com.cn/简介Redis 是完全开源免费的,遵守 BSD 协议,是一个灵活的高性能 key-value 数据结构存储,可以用来作为数据库、缓存和消息队列。Redis特点高性能持久化(AOF、RDB)数据结构(String、Hash、List、Set、Sorted Set、BitMap、GEO、HyperLogLogs)原子操作支持多种语言主从复制分片可移植Redis架构Redis有两个程序组成:Redis客户端:redis-cli.

2022-01-04 16:50:47 83

原创 设计模式-策略模式

《Java设计模式》前言:俗话说:条条大路通罗马。在很多情况下,实现某个目标的途径不止一条,例如我们在外出旅游时可以选择多种不同的出行方式,如骑自行车、坐汽车、坐火车或者坐飞机,可根据实际情况(目的地、旅游预算、旅游时间等)来选择一种最适合的出行方式。在制订旅行计划时,如果目的地较远、时间不多,但不差钱,可以选择坐飞机去旅游;如果目的地虽远、但假期长、且需控制旅游成本时可以选择坐火车或汽车;如果从健康和环保的角度考虑,而且有足够的毅力,自行车游或者徒步旅游也是个不错的选择,大笑。在软件开.

2021-12-31 15:32:47 493

原创 消息中间件RocketMQ

https://blog.csdn.net/MaxwellOcean/article/details/107419368

2021-11-04 15:24:14 56

原创 设计模式-迭代器模式

1、引言在软件开发中,也存在大量类似电视机一样的类,它们可以存储多个成员对象(元素),这些类通常称为聚合类(Aggregate Classes),对应的对象称为聚合对象。聚合对象:聚合对象拥有两个职责:一是存储数据;二是遍历数据。从依赖性来看,前者是聚合对象的基本职责;而后者既是可变化的,又是可分离的。因此,可以将遍历数据的行为从聚合对象中分离出来,封装在一个被称之为“迭代器”的对象中,由迭代器来提供遍历聚合对象内部数据的行为,这将简化聚合对象的设计,更符合“单一职责原则”的要求。迭代器模式将为聚合对

2021-11-04 10:58:20 148

原创 Tomcat和nginx限流

https://www.cnblogs.com/linjiqin/p/9600590.htmlhttps://www.cnblogs.com/crazymakercircle/p/11748214.html

2021-09-27 17:19:32 401

原创 JVM之垃圾回收器

图解HotSpot虚拟机所包含的收集器:图中展示了7种作用于不同分代的收集器,如果两个收集器之间存在连线,则说明它们可以搭配使用。虚拟机所处的区域则表示它是属于新生代还是老年代收集器。新生代收集器:Serial、ParNew、Parallel Scavenge老年代收集器:CMS、Serial Old、Parallel Old整堆收集器: G1https://www.cnblogs.com/blythe/p/7488061.htmlhttps://www.cnblogs.com/chenpt/

2021-08-25 17:21:27 60

原创 JVM之垃圾回收算法

如何判断一个对象死亡- 引用计数法在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器就减1;任何时刻计数器为0的对象就是不可能再被使用的。(循环引用的问题)- 可达性分析算法这个算法的基本思想是通过一系列称为 “GC Roots” 的对象作为起点,从这些节点开始向下搜索,节点所走过的路径称为引用链,当一个对象到 GC Roots 没有任何引用链相连的话,则证明此对象是不可用的。如何判断⼀个常量是废弃常量?运行时常量池主要回收的是废弃的常量。假如在常量池中

2021-08-24 17:00:42 69

原创 JVM运行时数据区(内存模型)

Java程序执行过程:如上图所示,首先Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀),然后由JVM中的类加载器加载各个类的字节码文件。加载完毕之后,交由JVM执行引擎执行。在整个程序执行过程中,JVM会用一段空间来存储程序执行期间需要用到的数据和相关信息,这段空间一般被称作为Runtime Data Area(运行时数据区),也就是我们常说的JVM内存。因此,在Java中我们常常说到的内存管理就是针对这段空间进行管理(如何分配和回收内存空间)。内存模型(J

2021-08-24 10:29:01 192

原创 设计模式-构建者模式

意图构造者模式(建造者模式、生成器模式)是一种创建型设计模式, 使你能够分步骤创建复杂对象。 该模式允许你使用相同的创建代码生成不同类型和形式的对象。问题假设有这样一个复杂对象, 在对其进行构造时需要对诸多成员变量和嵌套对象进行繁复的初始化工作。 这些初始化代码通常深藏于一个包含众多参数且让人基本看不懂的构造函数中; 甚至还有更糟糕的情况, 那就是这些代码散落在客户端代码的多个位置。例如, 我们来思考如何创建一个 房屋House对象。 建造一栋简单的房屋, 首先你需要建造四面墙和地板, 安装房门和

2021-08-23 14:03:56 392

原创 JVM之类加载机制

JVM类加载机制类加载过程加载1、通过全类名获取此类的二进制字节流(zip、jar、war包中读取;其他文件生成jsp)2、将字节流所代表的静态存储结构转化为方法区的运行时数据结构3、在内存中生成一个代表该类的class类对象,作为方法区这些数据的访问入口连接1、验证包含:格式检查、语义检查、字节码验证、符号引用验证2、准备为类的静态变量分配内存,并将其初始化为默认值3、解析将常量池中所有的符号引用转为直接引用初始化为类的静态变量赋予正确的初始值类加载器启动类加载器(B

2021-07-07 16:37:12 75

原创 hashmap常见面试题

https://www.cnblogs.com/tianzhihensu/p/11972780.htmlhttps://www.cnblogs.com/zengcongcong/p/11295349.html

2020-12-16 10:35:25 71

原创 JDK1.7hashmap

一、

2020-12-16 09:32:03 109

原创 JDK1.6hashmap

JDK1.6 HashMap

2020-12-15 10:47:39 487

原创 Java实现的希尔排序算法

一:希尔排序算法基本思想希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时...

2018-03-28 15:55:48 377

原创 Java实现的堆排序算法

一:堆排序算法基本思想堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆性质:即子结点的键值或索引总是小于(或者大于)它的父节点。二:堆排序视频讲解网址http://www.iqiyi.com/v_19rrhzzs1k.html(自己在网页找的视频,讲的挺好的,最开始理解不了,看完就感觉豁然开朗了)三:源代码具体实现package co...

2018-03-28 15:45:19 291

原创 Java实现的快速排序算法

一:快速排序算法基本思想通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。二:快速排序视频讲解网址http://www.iqiyi.com/w_19rtz1oc1t.html(自己在网页找的视频,讲的挺好的,最开始理解不了,看完就感觉豁然开朗了)三:...

2018-03-28 15:39:01 142

原创 2017秋招面试整理(4)

10月4日 中秋节 一:内存中堆,栈,方法区的用法 栈空间:变量,对象的引用,函数调用的现场保护。 堆空间:new关键字和构造器创建的对象。是垃圾回收管理的主要区域。 方法区:和堆空间都是各个线程共享的内存系统,用于存储已经被JVM加载的类信息,常量,静态变量;程序中的字面量如直接书写的100,“hello”和常量都是都是放在常量池中,常量池是方法区的一部分 栈用完会发生StackOver

2017-12-03 19:08:58 197

原创 2017秋招之面试整理(3)

一:数据库优化的方法 1.在使用jdbc大批量插入数据时,明显使用(PreparedStatement + 批处理)性能更优 2.建立索引,创建索引一般有以下两个目的:维护被索引列的唯一性和提供快速访问表中数据的策略。95% 的数据库能 问题都可以采用索引技术得到解决。索引有助于提高检索性能,但过多或不当的索引也会导致系统低 效。因为用户在表中每加进一个索引,数据库就要做更多的工作。过多的索引甚

2017-12-03 19:03:00 166

原创 2017秋招之面试整理(2)

10月14日 一:cookie与session的区别? 1.cookie的数据存放在客户端的浏览器上,session的数据存放在服务器上。 2.cookie不是很安全,别人可以分析存放在本地的COOKIE进行欺骗,所以考虑到安全问题应该使用session。 3.session会在一定时间内保存在服务器上,当访问变多,会比较占用服务器的性能,考虑到减轻服务器性能方面,应该开率cookie。

2017-12-03 18:59:01 156

原创 2017秋招之面试整理(1)

一:JSP和servlet有哪些相同点和不同点,它们之间的联系是什么? 1: .jsp经编译后就变成了servlet(jsp本质就是servlet,jvm只能识别Java的类,不能识别jsp代码,web服务器将jsp的代码编译成Jvm能够识别的java的类) 2:jsp更擅长页面显示,servlet更擅长逻辑控制 3:servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServ

2017-12-03 18:48:46 370

原创 HTTP协议(超文本传输协议)

http 超文本传输协议 顾名思义,专门用来在网络上传输超文本的协议!A:以下是俩个客户端浏览器向服务器发送的http请求数据。 通过套接字,编写服务器端和客户端的程序,来套取以下信息。(1)ie浏览器: GET / HTTP/1.1 Accept: text/html, application/xhtml+xml, / Accept-Language: zh-CN User-Agen

2017-07-27 16:11:31 671

原创 JSP(java sever pages)动态网页开发技术2

一:在myeclipse8.5环境中集成tomcat步骤 1: 2: 3: 4: 5.创建一个web项目: File–>new –>web project 6.打开index.jsp进行编辑7.部署web应用: 点击了add按钮之后,会弹出以下界面: 选择tomcat6.0之后,finish完成 8.启动tomcat服务器 9.以在浏览器中访

2017-07-27 15:46:11 510

原创 JSP(Java Server Pages)动态网页开发技术1

一:软件分为2种架构: 1. C/S client/server 客户端/服务器架构, 都是一些窗口式程序,也就是说,要使用cs架构的软件,我们必须下载客户端安装程序,安装好以后,才能用安装好的软件去连接服务器。比如: qq聊天软件。 2. B/S browser/server 浏览器/服务器架构,都是用浏览器直接连接服务器的,使用b/s架构的软件,不需要提前下载任何安装程序,只需要打

2017-07-21 10:34:29 6814

原创 bom编程+事件编程+dom编程+正则表达式

一.BOM编程 什么是BOM编程?(将浏览器的各个部分封装成了不同的对象) BOM是(Broswer Object Model) 浏览器对象模型编程 1.window对象<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml

2017-06-30 15:16:51 601

原创 JavaScript入门

1 Javascript入门 1.1 引入 html:负责网页结构 css: 负责网页美观 javascript:负责用户与浏览器交互。 1.2 javacript的来由 1994时,网景公司研发了livescript语言,领航者浏览器(把livescript语言植入到浏览器)

2017-06-28 17:37:29 209

原创 CSS入门

1 CSS入门 1.1 引入 html:负责网页的结构 css: 负责网页的美观(样式) 1.2 体验<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-tra

2017-06-28 12:52:46 192

原创 jdbc(java连接数据库2)

1 JDBC进行批处理 1.1 为什么要用批处理? 之前:一次操作只能发送一条sql语句到数据库服务器,效率并不高! 如果要插入2000条记录,那么必须发送2000条sql语句。如果IO流的话,一次写出一个字节,显然效率效率并不高,所以可以使用缓存字节数组提高每次写出的效率。 现在:插入2000条记录,但现在使用sql缓存区,一次发送多条sql到数据库

2017-06-16 21:00:06 218

原创 JDBC(java连接数据库1)

1 JDBC入门 1.1 回顾 之前操作mysql数据库: 1)使用mysql客户端工具 2)使用客户端连接mysql服务器 3)发送sql语句到mysql服务器,执行 1.2 什么是JDBC?

2017-06-16 20:22:27 423

原创 HTML入门

1 HTML入门 1.1 软件结构分类: C-S结构(Client - Server 客户端-服务器端) 典型应用: 飞秋、QQ 特点:

2017-06-14 22:19:01 243

原创 网络编程

一:网络编程三要素+UDP协议讲解 1.1 1.网络通信介绍 2.tcp/ip 3.udp/ip 1.2 Socket通信 * 网络编程三要素: ip: 一个计算的标示(找到这个计算机) 端口: 应用程序都会对应一个端口,用来进行通信,有效端口:0~65535,其中0~1024系统使用或保留

2017-05-31 16:40:15 195

原创 反射+类加载器

1:类加载器(了解) (1)什么是类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。 一个类在加载过程中的三部曲: 1.加载 就是指将class文件读入内存,并为之创建一个Class对象. 任何类被使用时系统都会建立一个Class对象。 2.连接 验证 是

2017-05-24 16:41:45 206

空空如也

空空如也

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

TA关注的人

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