自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(94)
  • 资源 (3)
  • 收藏
  • 关注

转载 在 windows 上安装 Redis

在 windows 上安装 RedisRedis 官方不建议在 windows 下使用 Redis,所以官网没有 windows 版本可以下载。还好微软团队维护了开源的 windows 版本,虽然只有 3.2 版本,对于普通测试使用足够了。安装包方式安装 Redis 服务下载地址:https://github.com/MicrosoftArchive/redis/releases点击下载:您可以看到 Redis 现在已下载。或者您也可以使用下面链接下载。https:.

2021-10-16 14:57:40 290

转载 Maven 教程之 pom.xml 详解

Maven 教程之 pom.xml 详解 - 知乎简介什么是 pom?POM 是 Project Object Model 的缩写,即项目对象模型。pom.xml 就是 maven 的配置文件,用以描述项目的各种信息。pom 配置一览<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLoca

2021-10-02 23:01:52 1217

转载 decimal

decimal,float和double的区别是什么? - 知乎表示小数的一共有三种类型:float是单精度,double是双精度,decimal是数字型,它们所占的内存空间不一样,表示的位数也不一样。1、精度:float单精度小数部分能精确到小数点后面6位,用 32 位二进制进行描述 double双精度小数部分能精确到小数点后的15位,,用64位二进制进行描述,比float型更精确2、占内存及处理速度:float单精度内存占4个字节 double双精度内存占8个字节,是floa.

2021-10-02 16:59:57 4224

转载 Maven Wrapper(mvnw)

Maven Wrapper(mvnw)Maven WrapperMaven Wrapper是一个Maven插件,用于封装提供Maven项目构建时所需要的一切。这么说可能比较抽象,来举个具体的例子吧。一个Maven项目由多人协作维护,某天一个Geek在构建时使用了最新版本的Maven特性,然后push了依赖该特性的相关代码,然后连锁反应开始了。其他维护者们机器上安装的Maven版本过低导致构建不通过,于是维护者们需要集体升级Maven版本。想象一下,如果这个项目的维护者多达上百人,这是一个多么招人

2021-10-02 15:30:42 1593

转载 MySQL 超键 候选键 主键

集合关系:超键(super key): 在关系中能唯一标识元组的属性集称为关系模式的超键候选键(candidate key): 不含有多余属性的超键称为候选键。也就是在候选键中,若再删除属性,就不是键了!主键(primary key): 用户选作元组标识的一个候选键程序主键外键(foreign key):如果关系模式R中属性K是其它模式的主键,那么k在模式R中称为外键。举例比如有如下数据:| 学号 | 姓名 | 性别 | 年龄 | 系别 ...

2021-09-28 09:50:32 383

转载 撤销永久代,引入元空间

java 8中撤销永久代,引入元空间 - __Meng - 博客园撤销永久代,引入元空间:  在 JDK 1.8 中,HotSpot 已经没有 “PermGen space”这个空间了,取而代之是一个叫做 Metaspace(元空间) 的东西。  Java7中已经将字符串常量池从永久代移除,在Java 堆(Heap)中开辟了一块区域存放字符串常量池。而在Java8中,已经彻底没有了永久代,将方法区直接放在一个与堆不相连的本地内存区域,这个区域被叫做元空间。  移除永久代后,不会遇到永久代存.

2021-09-27 09:47:48 108

转载 static执行顺序详解

【Java】static执行顺序详解(什么情况下父类普通代码块会先运行?) – Twocups关于 Java 中 static 执行顺序的问题,网上有很多解答。但随着我研究的深入,我发现 static 实际上的执行顺序比网上说的复杂得多。正好网上也没有其他这方面的资料,所以我来给大家详细解释一下 static 的具体执行顺序。先上个最复杂的例子//父类parentclass parent { private static parent a=new parent(); //父类静态

2021-09-26 21:56:56 1032

原创 JVM总结

1.为什么Eden:Survivor(from):Survivor(to)= 8 : 1 :1经过统计,每次gc会有90%的对象被回收,所以要预留空间去保存剩下的10%IBM论文统计95%的对象存活时间极短,为了保险默认实际使用了90%:设置eden 和survivor(两个)为4:1,每次GC都将Eden和其中一个survivor(from)中的存活对象复制到剩余的survivor(to)中.2.为什么需要两个survivor区...

2021-09-24 09:17:34 140

转载 maven的下载安装配置

maven的下载安装配置教程(详细图文)想要实现一个优秀的项目,光靠自己一个码农是很难的,我们需要引入别人已经集成好的类包来帮助我们优化项目,这个时候就需要使用maven了。一、maven是什么Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具。通俗的讲maven就是专门用于构建和管理项目的工具,他可以帮助我们去下载我们所需要jar包,帮助我们去管理项目结构,帮助我们去实现项目的维护、

2021-09-21 15:54:57 198

转载 JVM,JRE,JDK之间的区别和联系

JDK包含了JRE,JRE包含了JVMJDK:java开发工具包,针对java开发人员,可以编译运行java程序 JRE:java运行时环境,针对使用java程序的客户,可以运行字节码(.class),但是不能编译Java源码 JVM:用来解释执行字节码文件(.class),但不能正确的执行什么是JVMJVM是JRE的一部分,是虚拟出来的一台计算机.通过实体计算机仿真各种计算功能来实现,JVM有自己完善的硬件架构,如处理器,堆栈,寄存器等,还有相应的指令集.JVM是J...

2021-09-21 15:22:51 342

转载 Windows下安装MySQL详细教程

Windows下安装MySQL详细教程Windows下安装MySQL详细教程  1、安装包下载   2、安装教程    (1)配置环境变量    (2)生成data文件    (3)安装MySQL    (4)启动服务    (5)登录MySQL    (6)查询用户密码    (7)设置修改用户密码    (8)退出   3、解决问题  1、安装包下载。下载地址:https://dev.mysql.com/downloads/mysql...

2021-09-21 10:29:32 1104

原创 面试遗留问题

美团二面1.浮点型怎么比较2.cpu密集型为什么线程数n+13.两个栈最多维护n+1队列4.计算机内存 分页 分段5.hashmap怎么线程不安全 ?怎么让他线程安全6. tcp udp 实现牛客 代码段7.泛型的本质商汤一面1. post 和 put 底层区别,rest架构2. 两个服务器怎么共享session3. 线程 waiting 和 sleep区别小米一面1. 同步 和 阻塞 区别 ;BIO和NIO区别2. TCP的最多能装多少字节小米二面AQS底层锁l.

2021-09-20 17:03:58 151

转载 操作系统总结

操作系统常用知识总结计算机结构现代计算机模型是基于-「冯诺依曼计算机模型」计算机在运行时,先从内存中取出第一条指令,通过控制器的译码,按指令的要求,从存储器中取出数据进行指定的运算和逻辑操作等加工,然后再按地址把结果送到内存中去,接下来,再取出第二条指令,在控制器的指挥下完成规定操作,依此进行下去。直至遇到停止指令程序与数据一样存贮,按程序编排的顺序,一步一步地取出指令,自动地完成指令规定的操作是计算机最基本的工作模型「计算机五大核心组成部分」控制器:是整个计算机的中枢神经,其功能.

2021-09-19 21:18:02 820

转载 段式、页式、段页式存储管理

操作系统——段式存储管理、段页式存储管理 - 王陸 - 博客园一、段式存储管理1、分段进程的地址空间:按照程序自身的逻辑关系划分为若干个段,每个段都有一个段名(在低级语言中,程序员使用段名来编程),每段从0开始编址。内存分配规则:以段为单位进行分配,每个段在内存中占连续空间,但各段之间可以不相邻。分段系统的逻辑地址结构由段号(段名)和段内地址(段内偏移量)所组成。2、段表每一个程序设置一个段表,放在内存,属于进程的现场信息3、地址变换...

2021-09-17 11:03:15 3203

转载 语法糖和泛型

Java 语法糖语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。Java 中最常用的语法糖主要有泛型、变长参数、条件编译、自动拆装箱、内部类等。虚拟机并不支持这些语法,它们在编译阶段就被还原回了简单的基础语法结构,这个过程成为解语法糖。泛型是 JDK1.5 之后引入的一项新特性,Java 语言在还没有出现泛型时,只能通过 Object 是所有

2021-09-15 10:28:33 199

原创 二叉树汇总

1.层序遍历二叉树力扣在每一层遍历开始前,先记录队列中的结点数量n(也就是这一层的结点数量)public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> res = new ArrayList<>(); Queue<TreeNode> queue = new ArrayDeque<>(); if .

2021-09-15 10:13:51 70

原创 数据结构和算法总结

1. 用两个固定容量为m和n(m>n)的栈能最大能实现多大容量的队列?n+1假设 m = 4 , n =2; 顶 底栈4: 4 3栈2:1 2出队列 1进队列 5栈4: 5 4 3栈2:2出队列 2进队列 6栈4: 6 5 4 3栈2: 栈4: 4 3栈2: 5 6无法维持n+2 顶 底栈4: 3栈2:1 2出队列 1进队列...

2021-09-14 22:58:27 74

转载 线程池线程数设置

【原创】腾讯面试官:线程池要设置多大 - 知乎一般多线程执行的任务类型可以分为 CPU 密集型和 I/O 密集型,根据不同的任务类型,我们计算线程数的方法也不一样。CPU 密集型任务:这种任务消耗的主要是 CPU 资源,可以将线程数设置为 N(CPU 核心数)+1,比 CPU 核心数多出来的一个线程是为了防止线程偶发的缺页中断,或者其它原因导致的任务暂停而带来的影响。一旦任务暂停,CPU 就会处于空闲状态,而在这种情况下多出来的一个线程就可以充分利用 CPU 的空闲时间。当线程数量太小,同一时间

2021-09-14 22:47:30 2797 4

转载 HashMap线程安全性问题

面试官:说一下HashMap原理,循环链表是如何产生的 - 知乎掘金HashMap是线程不安全的,在多线程环境下对某个对象中HashMap类型的实例变量进行操作时,可能会产生各种不符合预期的问题。本文详细说明一下HashMap存在的几个线程安全问题。1、并发场景下出现死循环多线程同时put时,如果同时调用了resize操作,可能会导致循环链表产生,进而使得后面get的时候,会死循环。下面详细阐述循环链表如何形成的。resize函数数组扩容函数,主要的功能就是创建扩容后的新数组,并

2021-09-14 21:58:45 2037

转载 浮点数比较的精度问题

https://zhuanlan.zhihu.com/p/161971793引言先举个例子:#include <stdio.h>int main(){ float a = 0.1; float b = 0.2; float c = a + b; if(c == 0.3){ printf("c == 0.3\n"); }else{ printf("0.1 + 0.2 != 0.3\n"); } return

2021-09-14 09:40:08 259

原创 字符串汇总

一、字符串表达式计算package TcpIO;import java.util.Deque;import java.util.LinkedList;public class StringCalculate { static int getPriority(char ch){ if(ch=='(') return 1; if(ch=='+' || ch=='-') return 2; if(ch=='*' || ch=='/') ret

2021-09-13 09:20:04 228

原创 AQS总结

2021-09-11 15:00:22 41

原创 SQL面试总结

一、 查询性能优化1. 使用 Explain 进行分析Explain 用来分析 SELECT 查询语句,开发人员可以通过分析 Explain 结果来优化查询语句。比较重要的字段有: select_type : 查询类型,有简单查询、联合查询、子查询等 key : 使用的索引 rows : 扫描的行数 mysql> explain select * from user_info where id = 2\G**************************

2021-09-09 20:55:31 358

原创 项目问题总结

1.HDFS怎么实现定时清理可以通过java的Timer类来进行定时调用时间计时和空间剩余率两种策略,满足就delete。下面是有关Timer的一些相关知识。  其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来实现,例如这样:Timer timer = new Timer();timer.schedule(new TimerTask() { public void run() {

2021-09-09 20:46:57 67

原创 动态规划汇总

一、最长公共子序列leecode1143给定两个字符串text1 和text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。一个字符串的子序列是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。1. 状态定义比如对于...

2021-09-08 21:27:53 49

转载 MVCC原理

https://zhuanlan.zhihu.com/p/286775643因为现在很多人的理解还是停留在《高性能 MySQL》书中的版本,也就是通过创建版本号和删除版本号来判断。这个时候如果你能给出正确的理解,则会让面试官眼前一亮,这也是我们在面试中凸显出“自己和其他候选者不一样的地方”,会更有利于在众多候选者中脱颖而出。本文在此基础上,对 MVCC 展开详细的分析,同时修改了之前的一些不太准确的说法,希望可以助你在面试中更好的发(zhuang)挥(bi)。PS:本文的源码基于MySQ

2021-09-08 10:22:12 150

转载 可重复读的底层原理

https://zhuanlan.zhihu.com/p/166152616回顾一下 undo log 回滚日志在讲可重复读的底层原理之前,我们有必要看一下之前画的图,重新回顾一下 undo log 回滚日志。当 MySQL 执行写操作之前,会把即将被修改的数据记录到 undo log 日志里面。只有这样,事务要回滚的时候,即使 Buffer Pool 中的数据被修改了,依然可以从 undo log 日志中,读取到原插入、修改、删除之前的值,最终把值重新变回去,这就是回滚操作。und

2021-09-08 10:19:12 762

转载 线程池总结

https://mp.weixin.qq.com/s/HCwCJw5CCDsue6H5XHfO0g一 使用线程池的好处池化技术相比大家已经屡见不鲜了,线程池、数据库连接池、Http 连接池等等都是对这个思想的应用。池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。线程池提供了一种限制和管理资源(包括执行一个任务)。每个线程池还维护一些基本统计信息,例如已完成任务的数量。这里借用《Java 并发编程的艺术》提到的来说一下使用线程池的好处: 降低资源消耗。通过重复利用

2021-09-07 14:31:06 119

原创 比较排序汇总

一、比谁的因子数多两组数个数都为n,第一组数可以随便换顺序,依次和第二组数作比较,比较规则是因子数多的数获胜,每个数只能用一次,求第一组获胜的最大次数求一个数的因子,leecode1492,比如 8 的因子为(1,2,4,8)https://leetcode-cn.com/problems/the-kth-factor-of-n/solution/n-de-di-k-ge-yin-zi-by-leetcode-solution/例子:3(n)1 3 5 (因子数 1 2 2)4...

2021-09-06 09:51:19 67

转载 Java 异常处理

https://www.cnblogs.com/Qian123/p/5715402.html阅读目录异常的概念 异常的体系结构 Java 异常的处理机制 异常处理的基本语法 异常链 自定义异常 总结回到顶部异常的概念异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会

2021-09-05 16:14:45 63

转载 线程池延时类ScheduledExecutorService—比Timer更有效精确的延时工具

ScheduledExecutorService前言  在Java中我们一般使用Timer来进行延时/周期执行操作,Timer的内部只有一个线程,如果有多个任务的话就会顺序执行,这样我们的延迟时间和循环时间就会出现问题。除此之外:在多线程并发执行定时操作时,Timer运行多个TimerTask,如果其中一个任务没有异常没有捕获,那所有任务都将终止。还有就是,Timer是基于绝对时间,而ScheduledExecutorService是基于相对时间的,这个看情况而定,一般基于相对时间更灵活一些。所以作

2021-08-31 15:24:15 1154

原创 JAVA基础

一、== 和 equals区别== 比较的是引用,equals比较的是内容。1. 如果变量是基础数据类型,== 用于比较其对应值是否相等。如果变量指向的是对象,== 用于比较两个对象是否指向同一块存储空间。2. equals是Object类提供的方法之一,每个Java类都继承自Object类,所以每个对象都具有equals这个方法。Object类中定义的equals方法内部是直接调用 == 比较对象的。但通过覆盖的方法可以让它不是比较引用而是比较数据内容。二、接口与抽象类的区别相同点(.

2021-08-28 15:15:36 78

原创 Cookie和Session

https://zhuanlan.zhihu.com/p/276698921. 使用Cookie来管理状态HTTP 是无状态协议,说明它不能以状态来区分和管理请求和响应。也就是说,无法根据之前的状态进行本次的请求处理。不可否认,无状态协议当然也有它的优点。由于不必保存状态,自然可减少服务器的CPU 及内存资源的消耗。从另一侧面来说,也正是因为HTTP 协议本身是非常简单的,所以才会被应用在各种场景里。我们登录淘宝的时候首先要登录,我们看到了一个商品点进去,进行了页面跳转/刷新,按照H

2021-08-27 11:46:37 93

原创 序列化协议

https://zhuanlan.zhihu.com/p/91313277为什么需要序列化和反序列化协议name: 姓名, 比如darrenage: 年龄,比如80languages: 熟悉的编程语言, 普通数组方式,比如["C++", "Linux"],phone: 电话号码,是嵌套的对象,包含number和type, 比如"number": "18570368134", "type": "homebooks: 对象数组方式,可以包含多本书信息, 每本书包含name和

2021-08-27 10:34:05 293

原创 进制转换,大数相加

一、十进制小数转二进制,二进制转十进制二进制转十进制: 对二进制从后往前数第i位上的数进行乘以2的i-1 次方;十进制小数转二进制:整数部分利用短除法原理,用要转换为二进制的十进制数每次除2取余,再逆序输出,求得结果。 小数部分利用乘法的方式,每次乘2,取整数部分记下,正序输出,求得结果。package zsh;import java.util.Scanner;public class Decimal2Binary { private static final int N

2021-08-27 09:28:23 175

转载 CPU调度算法

https://www.cnblogs.com/xiaolincoding/p/13631224.html前言最近,我偷偷潜伏在各大技术群,因为秋招在即,看到不少小伙伴分享的大厂面经。然后发现,操作系统的知识点考察还是比较多的,大厂就是大厂就爱问基础知识。其中,关于操作系统的「调度算法」考察也算比较频繁。所以,我这边总结了操作系统的三大调度机制,分别是「进程调度/页面置换/磁盘调度算法」,供大家复习,希望大家在秋招能斩获自己心意的 offer。本文提纲正文进程调度算法进程

2021-08-26 12:43:13 665

原创 Java中synchronized和volatile的区别

https://zhuanlan.zhihu.com/p/61966479Java内存模型(JMM)提到这两个有关于线程的关键字,那么我们不得不提到Java的内存模型了(JMM),下面我们先看一下Java内存模型在处理多线程方面的工作原理图。Java内存模型(java Memory Model)描述了Java程序中各种变量(线程共享变量)的访问规则,以及在JVM中将变量存储到内存和从内存中读取出变量这样的底层细节。首先介绍两个概念可见性:一个线程对共享变量值的修改,能够及时地被其他线

2021-08-25 10:45:44 333

原创 并发编程总结

一、进程和线程的区别进程:进程是程序的一次执行过程,是程序在执行过程中的分配和管理资源的基本单位,每个进程都有自己的地址空间,线程至少有 5 种状态:初始态、执行态、等待态、就绪态、终止态。线程:线程是CPU调度和分派的基本单位,它可以和同一进程下的其他线程共享全部资源联系:线程是进程中的一部分,一个进程可以有多个线程,但线程只能存在于一个进程中。区别:根本区别:进程是操作系统资源调度的基本单位,线程是任务的调度执行的基本单位 开销方面:进程都有自己的独立数据空间,程序之间

2021-08-25 10:16:22 70

原创 volatile关键字

https://zhuanlan.zhihu.com/p/73561744面试官: Java并发这块了解的怎么样?说说你对volatile关键字的理解就我理解的而言,被volatile修饰的共享变量,就具有了以下两点特性:1 . 保证了不同线程对该变量操作的内存可见性;2 . 禁止指令重排序面试官: 能不能详细说下什么是内存可见性,什么又是重排序呢?这个聊起来可就多了,我还是从Java内存模型说起吧。Java虚拟机规范试图定义一种Java内存模型(JMM),来屏蔽掉各种硬件和操作

2021-08-25 09:50:53 56

原创 如何修复SSL/TLS握手失败

https://segmentfault.com/a/1190000021559557此文主要内容翻译至博客How to Fix the SSL/TLS Handshake Failed Error?,并做了一些添加,修改和删除.当浏览器向web服务器(如Apache)发送一个安全的请求时,ssl/tls握手过程就开始了.ssl/tls错误时有发生,其中最常见的错误就是SSL Handshake Failed error.下面我们就来讲解什么是SSL/TLS握手失败,以及如何解决.SSL/TLS

2021-08-24 15:50:24 12409 1

rufus 装uefi引导系统必备神器

烧录系统,可区分uefi引导和legacy引导,比ultraiso好用

2019-01-03

OpenGL ES 3.x 游戏开发 上下卷 吴亚峰

上下两卷都有

2017-08-27

17年数学建模美赛一等奖论文

数学建模美赛一等奖论文

2017-07-15

空空如也

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

TA关注的人

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