自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Go入门之简单聊天实现

初学Go,初步了解了管道、IO等用法之后,尝试实现了一个简单的聊天功能,在此记录一下思路(主要是参考的是Go语言圣经)目录总体框架客户端实现服务端实现数据结构监听线程中转站工作线程总体框架客户端之间负责接收消息和发送消息,服务端只是一个中转消息的中转站。因为实现较为简单,因此当服务端收到消息后,采用广播的方式向所有客户端进行广播客户端实现客户端需要实现的主要是一个向服务器发送消息并且接收消息的功能,因此实现较为简单:Dial连接服务器创建一个协程对conn进行监听,将消息打印到标准输出

2021-04-23 11:02:47 148

原创 Mysql-InnoDB-MVCC

MVCC详解目录MVCC详解前言MVCC是啥?InnoDB中MVCC是怎么实现的?为什么不同的策略会有不同的效果?ReadView快照读和当前读前言2020.3.8网上看到了很多关于MVCC的解析,结合《MySQL技术内幕》终于对其有了一定的理解。这里只是简单的把自己的想法update一下,希望在面试的时候能流畅地说出自己的理解。关于细节没弄明白的日后再分析。MVCC是啥?MVCC,多版本并发控制,是InnoDB实现的一种一致性非锁定读的方法。其存在的意义在于可以不用对该行获取锁,直接通过读取该

2021-03-08 23:41:20 120 1

原创 容器之HashMap源码解析

HashMap源码解析关于HashMap的源码解析网上貌似不少了,因此不根据知识点进行汇总,而是根据可能问到的问题一步一步深入吧,这样也便于八股哈哈。目录HashMap源码解析版本的区别JDK1.7和JDK1.8中HashMap的区别为啥引入红黑树?与其他容器的区别HashMap和HashTable的异同和ConcurrentHashMap的异同源码细节简单讲讲插入过程为啥JDK1.8计算数组索引时是用按位与?为啥HashMap数组大小是2的n次幂?get方法是如何实现的?讲讲扩容?JDK1.7JDK1

2021-03-07 23:08:27 161

原创 容器之ArrayList源码解析

ArrayList源码解析目录ArrayList源码解析定义的常量初始化扩容流程`ensureCapacity`不同的初始化方法的扩容过程定义的常量/*** Default initial capacity.*/private static final int DEFAULT_CAPACITY = 10;/*** Shared empty array instance used for empty instances.*/private static final Object[] EM

2021-03-07 19:40:08 97

原创 初识SpringMVC的拦截器

SpringMVC的拦截器目录SpringMVC的拦截器拦截器的概述自定义拦截器其实拦截器和Servlet的Filter是类似的,基本上与Flilter的原理一致拦截器的概述SpringMVC框架中的拦截器用于对处理器进行预处理和后处理的技术。可以定义拦截器链,连接器链就是将拦截器按着一定的顺序结成一条链,在访问被拦截的方法时,拦截器链 中的拦截器会按着定义的顺序执行。拦截器和过滤器的功能比较类似,有区别过滤器是Servlet规范的一部分,任何框架都可以使用过滤器技术。拦截器是Sprin

2021-02-18 23:11:20 65

原创 SpringMVC的响应方式

目录SpringMVC的响应方式视图解析器`ModelAndView`按照返回值进行分类StringvoidModelAndViewResponseBody响应Json对象静态资源@RequestBodySpringMVC的响应方式视图解析器使用对应的Handler适配器处理完一个handler之后,返回的是一个ModelAndView对象,该对象不直接保存视图,而是将视图逻辑路径交由ViewResolver解析,得到真正的视图路径。我们要做的是在配置文件中指定视图解析的规则 <!-- 视图

2021-02-18 22:46:37 184

原创 MyBatis中的多表查询以及延迟加载

目录IntroresultMap的使用场景resultMap的标签一对多关系AccountDao.xml一对一查询结果多对多关系UserDao.xml多对多查询结果延迟加载lazy loading本质实现lazy loading(以association为例)Intro业务中往往多个表之间会存在关联关系,比如用户和银行账户之间,通过在账户中加上用户id作为外键来实现两个表的关联。类似的情况有一对一、多对多、一对多、多对一等状况。显然,在实现账户的javabean类的时候,如果把用户的信息直接作为属性保存

2021-02-07 23:46:31 132

原创 MyBatis实现简易CURD操作

目录Config中新的标签propertiestypeAliases`UserDao`接口Mapper配置文件的配置updateinsertdelete模糊查询聚集函数对MyBatis的运行流程有一定的理解之后,我们可以来使用这个框架来实现基本的CURD操作。本篇文章使用的方式主要是XML的方式,注解的方式本质上与此相同,不再展示。Config中新的标签在Config中我们使用了如下标签,可以简化后续的配置properties <!-- 配置连接数据库的信息

2021-02-06 17:28:14 140

原创 自实现简易MyBatis(一)

目录前言一般的MyBatis配置方法实现MyBatis的简要分析XML/注解的解析配置类功能类`io.Resources``sqlSession``SqlSessionFactoryBuilder`类`SqlSessionFactory`和`SqlSession`接口以及实现类MapperProxy前言初学SSM框架,首先学习了MyBatis。MyBatis是一个用于持久层的框架,主要用于与简化与数据库的交互。我们可以直接通过注解或者XML进行配置。我们只需要写DAO的接口,并将实际的查询语句进行配置,

2021-02-05 14:34:40 490

原创 Java之JavaScript学习笔记

JavaScript基本语法基本上和Java没什么区别定义变量——变量类型 变量名 = 变量值;定义变量时只有一种数据类型var!var num = 1;var name = "bill";var 王者荣耀 = "倔强青铜";数据类型js不区分小数和整数,Number123 //整数123.1 //浮点数1.123e3 //科学计数法-99 //负数NaN //not a numberInfinity //无穷大字符串‘abc’ “abc”布尔值

2020-09-21 19:27:02 312

原创 Java之Java8新特性

目录Java8新特性Lambda表达式本质格式使用函数式接口Java内置核心函数式接口方法引用和构造器引用方法引用的使用情形格式构造器引用数组引用Stream API创建Stream中间操作筛选和分片映射排序终止操作匹配与查找归约收集Java8新特性Lambda表达式Lambda是一个匿名函数本质Java中Lambda表达式其实作为是函数式接口实现类的对象,其中函数式接口是只有一个抽象方法的接口(函数式接口)格式->:箭头操作符/Lambda操作符->左边:Lambda形参列表,

2020-09-14 21:48:33 135

原创 Java之IO流

IO流FILE类FILE类的一个对象代表一个文件或者一个文件目录路径分隔符路径中的每级目录之间用一个路径分隔符隔开路径分隔符和系统有关:windows和DOS系统默认使用’\’UNIX和URL使用’/’Java支持跨平台运行,因此路径分隔符要慎用为了解决这个隐患,File类提供了一个常量File.seperator构造器@Testpublic void test1(){ // 构造器1 File file = new File("Hello.txt");

2020-09-10 15:52:19 210

原创 Java集合框架之Map

目录MapMap的实现类结构面试题Map结构理解HashMap底层实现原理HashMap源码分析JDK7源码成员变量`put()`方法为什么容量大小只能是2的n次方对null的处理添加新结点扩容JDK8源码`put()`方法MapMap的实现类结构Map:双列数据,存储键值对的数据HashMap:作为Map的主要实现类,线程不安全,效率高;可存储null的key和valueLinkedHashMap:保证遍历map元素时可按照添加顺序实现遍历。原因:在原有的HashMap底层结构基础上,

2020-09-05 20:58:10 141

原创 Java集合框架之Collection

集合集合框架概述集合、数组都是对多个数据进行存储的结构,简称Java容器。此时的存储指的是内存层面的,不涉及到持久化的存储数组在存储多个数据方面的特点:一旦初始化,长度确定需要指明数组的元素类型,只能操作指定类型的数据:String[] arr;数组在存储多个数据方面的缺点:初始化后长度不可修改数组中提供的方法有限,对于添加、删除、插入数据等操作非常不便,效率不高获取数组中实际元素个数的需求,数组没有现成的属性或方法可用数组有序、可重复。对于无序、不可重复的需求不能满足。

2020-08-28 19:29:31 124

原创 JAVA常用类之比较器、System、BigInteger

JAVA常用类Java比较器Java中经常会涉及到对象数组的排序问题,那么就涉及到对象之间的比较问题正常java对象只能进行==和!=的比较,如何实现比较对象的大小?使用两个接口中的任何一个Comparable和ComparatorComparable接口String、包装类实现了Comparable接口,重写了compareTo()方法,给出了比较两个对象大小的方法重写compareTo(obj)的规则:如果当前对象this大于形参对象obj则返回正整数,小于则返回负整数,相等返回0对

2020-08-14 10:19:51 118

原创 JAVA常用类——字符串

JAVA常用类——字符串String类字符串是常量,用双引号表示,值在创建之后不能更改String对象的字符内容存储在一个字符数组value[]中String实现了Serializable接口:表示字符串是支持序列化的;实现了Comparable接口:表示String可以比较大小String在内部定义了final char[] value用于存储字符串数据String的不可变性String:代表不可变的字符序列体现当对字符串重新赋值时,需要重新指定内存区域赋值,

2020-08-13 16:22:35 170

原创 JAVA多线程学习笔记

JAVA多线程基本概念程序:为了完成特定任务,用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象进程:是程序的一次执行过程,或是正在运行的一个程序,是一个动态的过程:有它自身的生命周期作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域线程:是一个程序内部的一条执行路径作为调度和执行的单位,每个线程拥有独立的运行栈和程序计数器(PC)JVM的内存区域中,一个进程共享方法区和堆,每个线程拥有自己的虚拟机栈和PC单核CPU和多核CPU的理解单核:假的多

2020-08-12 20:57:37 86

原创 JAVA基础DAY2

JAVA基础DAY2Scanner对象java.util.Scanner是Java5的新特征,我们通过Scanner类获取用户输入。基本语法:Scanner s = new Scanner(System.in);通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()来判断是否还有输入的数据。next():一定要读取到有效字符才可以结束对输入有效字符前的空白,next()方法自动去掉只有输入有

2020-08-11 16:58:56 113

原创 JAVA基础DAY01

JAVA基础Java三大版本Java的可移植性:JVMJavaSE :标准版(桌面程序,控制台开发…)JavaME :嵌入式开发(没人用了)JavaEE:企业级开发(web、服务器开发)JDK、JRE、JVMJDK:Java Development KitJRE:Java Runtime EnvironmentJVM:JAVA Virtual Machine开发环境(JDK)包含运行环境(JRE)包含虚拟机(JVM),跨平台的核心是JVMHello,world!在编写第一个

2020-08-10 22:03:20 113

原创 编辑距离

A的最后一个字母(A[i])与B的最后一个字母(B[j])是相等的,那么将A转换为B就和把A[0...i-1]转换为B[0...j-1]是等价的。

2020-04-18 15:38:46 95

转载 二分、插值、斐波那契查找

这篇文章讲的很好

2019-10-05 13:13:11 64

原创 KMP算法

参考题目:【模板】KMP字符串匹配(题目里的Next数组和我的Next数组略有差别)数据结构讲到串时老师把KMP给详细讲了一遍,之前两次尝试自学实在是搞不明白,这下老师讲解了思路后差不多明白了,把自己的理解写一下,以后自己又忘了的时候说不定回来康康就懂了KMP算法//先假定主串为S、模式串为TBF算法就是暴力匹配,如果当前T串的第j个字符与S串的第i个字符不匹配,那么j回到1,i回到i-...

2019-09-30 18:26:18 98 1

原创 用两个栈模拟队列

问题:如何用两个堆栈模拟实现一个队列? 如果这两个堆栈的容量分别是m和n(m>n),你的方法能保证的队列容量是多少?如何模拟?首先栈是先进后出,队列是先进先出,因此二者的差别主要在于进出的顺序。假设有栈A(n)、B(m),当把n个数据全部放入栈A,此时A栈顶是n,栈底是1。再将A内的数据出栈存入栈B,此时栈B栈顶是1,栈底是n,再pop栈B则满足先入先出的原则。这个队列最大容量是多...

2019-08-27 13:18:15 321

转载 卡特兰数

参考题目:https://www.luogu.org/problem/P1044卡特兰数详解:https://blog.csdn.net/wookaikaiko/article/details/81105031

2019-08-27 11:11:44 79

原创 结构体并列储存数据方便排序

今天做题遇到了这样一种情况:每个人有初始数据a,b当排序的时候,我们依照a进行排序,但是b的顺序也要跟着a的顺序改变,这时应该怎么做?参考题目:https://www.luogu.org/problem/P1223该题中不仅要按照每个人的时间升序排序,还要输出每个人原来的序号,因此,一般的想法是建立一个结构来储存数据,然后利用sort排序,代码如下:#include <iostre...

2019-08-25 18:14:04 244

原创 排序工具sort函数

这么好用的东西居然今天才学会555想到这几天都是手写快排就很难受题目:https://www.luogu.org/problemnew/show/P1012这样一道题目,已经遇到过很多次,但是没有细心去研究过。其实思路很简单,如果把每个数存入字符数组中,那么数的值最大就相当于字符数组的字典序最大,所以排个序就好了。用char[][]当然可,不过既然是C++选手还是用string好了(虽然...

2019-07-22 14:48:55 134

原创 快速排序及其优化

在洛谷上见到一个快排的题,所以开始研究波快排。参考网址:https://mp.weixin.qq.com/s/PQLC7qFjb74kt6PdExP8mw洛谷题目:https://www.luogu.org/problemnew/show/P1177一、快排原理快排实际上就是运用了分治的思想,把一个数组分为左右两个数组进行排序以八个元素为例:平均情况下需要logn轮,因此快速排序算法的...

2019-07-19 19:27:04 120

原创 第三次机考 E.集装箱

初次读题没看到条件一:一艘船一艘船的来,所以想简单了。这道题是求最小的最大装载量。这题只能用模拟一个一个试。因为数据量太大,这类题一般用二分。用的时候尤其注意二分的循环条件!!!先贴我的代码:#include <iostream>#include <string.h>#include <cstring>#include<cmath>us...

2019-06-29 14:30:43 270

原创 第四次机考C.古代密码

第四次机考C.古代密码#include <iostream>#include <string.h>#include <string>#include <ctime>using namespace std;void bubble_sort(string &a, int len) { //冒泡排序 排...

2019-06-29 11:48:13 198

空空如也

空空如也

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

TA关注的人

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