自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

toward_south的博客

MySQL的开端

  • 博客(158)
  • 收藏
  • 关注

原创 ArrayDeque阅读记录

1.对Queue接口进行实现2.底层的数据结构还是数组,同时还是双向的,有前后指针3.不是线程安全的4.可以当作队列和栈来使用,选择使用队列时,ArrayDeque推荐首选5.不可以添加null数据,会抛异常。

2023-12-12 22:15:35 426

原创 理清线程、进程、任务的各自区别

线程是进程中可独立执行的最小单位,一个进程可以包含多个线程,在一个进程中,线程共享这进程中的资源,正是因为这样,可能存在着临界资源的竞争,从而有着后边所说的线程安全问题。是程序的运行实例,打开任务管理器,看到的那些进程。进程是程序向操作系统申请资源的基本单位。线程要完成的计算被称为任务。

2023-12-12 22:09:25 415

原创 FlatBuffers 使用编译器

可能刚接触的人会思考为啥要使用编译器:一般跨平台、跨语言的都有一套固定的流程,大致可分为:撰写IDL文件 -> 使用对应语言的编译器,编译成对应的语言 -> 序列化 ->持久化 -> 反序列化这里就对应着这个阶段:使用编译器根据自己语言的选择,选择对应的编译器即可,有些语言需要注意版本问题,如我当前用的是 Java,需要接入第三方Jar,如:这里用的是22.10.26版本,所以用的编译器需要在下载对应版本的编译器。

2023-07-24 22:38:50 199

原创 FaltBuffers 初识

使用简单方便 ,仅仅需要自动生成的少量代码和一个单一的头文件依赖,很容易集成到现有系统中,生成的 C++ 代码提供了简单的访问和构造接口,可以兼容 Json 等其他格式的解析。解码速度极快,将序列化数据存储在缓存中,这些数据既可以写出至文件中,又可以通过网络原样传输,也可直接读取而没有任何解析开销,访问数据时的唯一内存需求就是缓冲区,不需要额外的内存分配。因工作之余,需要替换替换底层序列化协议,最终考虑,选择了 FlatBuffers。替换过程中,也对这协议有了一些理解,想着记录下,那就开始吧。

2023-07-24 22:35:30 100

原创 LinkedList 源码阅读

1、LinkedList,双向链表,底层数据结构是链表。3、查询慢,需要遍历链表,添加和删除节点很快,只需移动节点就行。4、既可以当队列,也可以当链表。

2023-01-04 22:29:56 91

原创 StringBuilder重用小技巧

这里实现了对StringBuilder的重用,只需要重置count指针。很nice的想法,记录下,同时通过Threadlocal+StringBuilder的使用,提高了可用性。今天无意看到了 BigDecimal 代码里对字符串的处理,发现个有趣的事。

2022-10-31 22:46:49 465

原创 ArrayList 源码阅读记录

数组型链表,底层数据结构是数组RandomAccess 接口的实现类,表明这是随机访问类型,在有index的情况下,访问的复杂度为O(1),插入和删除复杂度比较高O(n)不是线程安全的,效率肯定比线程安全的高,单线程情况下使用源码分析没有特别说明,都是基于JDK1.8的源码分析1、一些重要的常量和变量//默认的初始化容量为10//空的数组对象 ,用于空实例的共享空数组实例//和上面差不多,只是如果使用默认的构造方法,那么久使用这个数组对象。

2022-10-30 11:48:43 166

原创 浅拷贝和深拷贝

被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。即对象的浅拷贝会对“主”对象进行拷贝,但不会复制主对象里面的对象。浅拷贝只是复制了主对象的引用,它两的引用同时指向同一块内存,所以只要修改了其中一个对象,另外一个对象也会受到影响。但这里需要注意的是基础类型的浅拷贝也就是直接拷贝了一块新的内存了,和主对象是相互独立的。克隆对象,在克隆之后的对象上修改信息,同时也会修改到被克隆的对象了。简而言之,浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象。

2022-10-15 17:01:46 325

原创 SPI 服务发现机制不生效

我们的 SPI 服务理论是应该通过webapp 这加载器去加载的,但是因为使用了ForkJoinPool ,这时候通过线程上下文加载器,拿到的加载器就是一个Bootstrap ,而这玩意是无法去加载SPI的。这方法来设置,如果创建线程的时候没设置,那么它会从父线程中继承一个,如果在应用程序的全局范围内都没有设置过的话,那么这个类加载器默认就是应用程序类加载器。SPI 服务发现机制还是走的类加载器去加载这些服务的,所以,是可以设置上下文线程类加载器来处理。

2022-09-08 17:24:30 683

原创 剑指offer-丑数

我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。

2022-06-05 11:39:39 77

原创 面试-有利网-校招

8、寄存器,cpu的组成,总线是啥, -3 的16进制是啥,负数如何转化为补码。15、arrayList是什么,他的扩容机制,在上面时候发生触发扩容机制。16、varchar(20)和char(20)有啥区别,各占多大的内存。13、给一个树写出的他的前序、中序、后序遍历。14、单链表的随机删除,双链表的随机删除。6、内存泄露和内存溢出的区别。12、set,hset的区别。17、索引一般建立在哪些地方。10、redis常用的命令。11、redis数据结构。2、接口和抽象类的区别。7、重载和重写的区别。

2022-06-05 11:31:04 89

原创 SPI-服务发现机制

1、SPI是啥全称为 Service Provider Interface,是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类为某个接口寻找服务实现的机制。有点类似IOC的思想,就是将装配的控制权移到程序之外,在模块化设计中这个机制尤其重要。:获取类的实现本质上是通过遍历完成的,所以类的初始化是全部初始化的,会浪费一些资源。3、怎么用。

2022-06-05 11:28:22 495

原创 正则表达式合理使用

1、前言:最近在看性能调优,说到合理使用正则表达式或者能不用就不用,有点好奇,就去了解了下,这里简单记录下了解到的内容。2、实现正则表达式引擎的方式:目前实现正则表达式引擎的方式有两种:DFA 自动机(Deterministic Final Automaton 确定有限状态自动机)和 NFA 自动机(Non deterministic Finite Automaton 非确定有限状态自动机)。目前绝大多数都是使用了NFA,这两者要详细了解下可以看看这(有穷自动机DFA&NFA (学习

2022-03-19 09:50:44 419

原创 字符串优化思考

最近在学习Java性能调优,看到相关字符串优化的文章,阅读之后有一些思考,认为还是比较重要的,这里在这记录下简单的字符串拼接,如 “a" +"b",这种虚拟机会自行使用Stringbuilder 来进行优化,但在循环中,还是需要显示的声明,因为目前在循环里边,虚拟机是重复构建 Stringbuilder 的提一点,与Stringbuilder 相对的是StringBuffer 这线程安全的字符串拼接器,但就目前来说 StringBuffer 基本就没见过真正使用的用途,使用这玩意仅仅是保证jvm不抛出异常顺

2022-03-19 09:46:45 176

原创 JVM-类加载时机

1、类的生命周期类的生命周期有这七个阶段,加载 -> 验证 -> 准备 -> 解析 -> 初始化 -> 使用 -> 卸载,具体如下图所示:其中加载、验证、准备、初始化和卸载顺序是确定的,类加载必须按照这个顺序开始,但解析阶段可能存在在初始化之后才开始,如Java语言的运行时绑定。需要注意的是,这几个阶段有可能是交替进行的,并不是一一按顺序来执行,等待一个阶段结束,另外一个阶段才开始。2、什么时候开始当真正使用主动引用到类的时候,才会触发类加.

2022-03-13 10:08:44 1004

原创 JVM-类加载过程

类加载共有五个阶段,这里逐一说说每个阶段主要干了啥1、加载加载阶段需要完成这三件事:通过类的完全限定名称获取定义该类的二进制字节流。 将该字节流表示的静态存储结构转换为方法区的运行时存储结构。 在内存中生成一个代表该类的 Class 对象,作为方法区中该类各种数据的访问入口。(该class对象放在方法区,并不是放在堆里)其中二进制字节流可以从以下方式中获取:从 ZIP 包读取,成为 JAR、EAR、WAR 格式的基础。 从网络中获取,最典型的应用是 Applet。 运行时计算生

2022-03-13 10:06:47 105

原创 JVM-类加载器

1、类加载的分类引导类加载器(bootstrap class loader):用来加载Java的核心库,原生代码实现,并不继承java.lang.ClassLoader 。扩展类加载器(extensions class loader): 用来加载 Java 的扩展库。Java 虚拟机的实现会提供一个扩展库目录。该类加载器在此目录里面查找并加载 Java 类。系统类加载器(system class loader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类。一般来说,

2022-03-13 10:04:15 1219

原创 关于类加载的某个问题的思考

在看虚拟机一书过程中看到的问题: 如果有10个WEB应用程序都是用Spring来进行组织管理的话,可以把Spring放到Common或Shared目录(Tomcat5.0)让这些程序共享。Spring要对用户程序的类进行管理,自然要能访问到用户程序的类,而用户程序显然是放在/WEB-INF目录中的。那么被CommonClassLoader或SharedClassLoader加载的Spring如何访问并不在其加载范围内的用户程序呢? 类A,使用A加载器, 在类A里边加载其他类这时...

2022-03-13 09:58:24 756

原创 ThreadLocal

1、前言: 看名知意,本地线程,采用”空间换时间“的思想,每个线程持有该份数据的拷贝,线程互不影响,可以用来解决在一些环境下的线程安全问题。2、关键变量和常量: // 本地线程的 hashcode private final int threadLocalHashCode = nextHashCode(); // 下一个线程的 hashcode 分配,原子性操作,初始值为 0 private static AtomicInteger nextHashCode =...

2022-03-13 09:55:32 113

原创 LRU的一些思考和实现

1、LRU是什么LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高“--来自百度在知乎看到一个讨论挺有意思的,大概是:如果A被访问了80次,B才一次,当数据D进来的时候 依旧剔除A么? 这样符合 最近最少原则么?个人觉得 LRU 侧重点在于 “最近”,看题主的意思是侧重于访问频率了,像 A 被访问的频率都集中在前边,最近都没有被访问到,那么新的数据 D 进来是要淘汰 A 的。.

2022-01-24 22:48:59 221

原创 迭代器模式

1、目的 提供一种方法顺序访问一个聚合对象中的每个元素,而又不需要暴露该对象的内部表示。2、什么时候使用访问一个聚合对象的内容而无须暴露它的额内部表示 支持对聚合对象的多种遍历 为遍历不同的聚合结构提供一个同一的接口(即支持多态迭代)3、UML 图4、从Java 源码来看迭代器模式 在Java集合当中,我们很容易的看到迭代器模式, 集合和迭代器几乎是同时存在的。下边从集合源码中看看迭代器模式在其的应用。 Java 集合当中,声明了一个可迭代的接...

2021-08-10 23:06:18 64

原创 Maven 安装

1、下载安装包,解压2、为了更好的输入命令,去环境变量里配置MAVEN_HOME,并在Path也添加路径3、在命令行输入mvn -version检查maven环境变量是否安装好4、去maven 下的conf 里面的setting修改找到localRepository(配置里面是默认注释掉的),新建一个本地仓库,把本地仓库的地址替换localRepository里面的默认地址(如果不替换,默认用C:\Users\用户名.m2)5、需要配置一个下载依赖的镜像 ...

2021-01-23 16:49:58 73

原创 JDK自带的故障处理工具

前言:用来记录jdk自带的几个处理工具,知道有这几个东西,等有需要的时候再去具体学习使用。1、jps 虚拟机进程状况工具功能:可以列出正在运行的虚拟机进程,并显示虚拟机执行Main类名称及这些进程的本地虚拟机唯一ID(LVMID)。命令:jps [options ] [ hostid ]jps -q:只输出LVMID,省略主类的名称jps-m:输出虚拟机进程启动时传递给主类的参数jps-l:输出主类的全名,如果进程时Jar,则输出其路径jps-v:输出虚拟机进程启动.

2021-01-11 22:58:24 465 1

原创 垃圾收集器

1、概览目前HotSpot垃圾收集主要分为两类,分区收集和分代收集,如下图所示:下面将分别介绍这些收集器的特点。2、分代收集器2.1、Serial 收集器特点:1、是一个单线程的收集器,使用该收集器时必须暂停其他所有的工作线程(stop the world,目前许多文章简称为STW)。2、用于Client模式下新生代的垃圾收集,简单而高效运行示意图:2.2、ParNew收集器特点:1、是Serial收集器的多线程版本。2、是S...

2021-01-11 22:56:19 86 1

原创 判断对象是否存活

1、引用计数法原理:给对象加个引用计数器(计数器是放在对象头的),每当在其他地方引用该对象时,计数器加1,引用失效-1,如果计数器为0,表明该对象已经不可用了,也就是不是存活对象了,下一步就该回收了。使用情况:目前主流的Java虚拟机并没有使用引用计数法来管理内存,书上说的是很难解决对象间的相互引用问题。但也只是说很难解决,发展到现在,其实是可以解决的,可以通过Recycler算法来进行解决,但只是在多线程环境下,引用计数变更也需要进行昂贵的同步操作,性能较低。早期的时候被使用过。2、可

2021-01-11 22:52:08 141

原创 垃圾收集算法

1、标记-清除(Mark-Sweep)算法定义:1、顾名思义,该算法经历了两个阶段,第一个阶段就是标记需要回收的对象,第二个阶段就是回收被标记的对象。整个算法在不同的实现中会使用三色抽象(Tricolour Abstraction)、位图标记(BitMap)等技术来提高算法的效率,存活对象较多时较高效。2、用于老年代不足:1、内存空间不规整,标记清除后会存在大量不连续内存碎片。2、效率低(存活对象不多的时候)。2、复制(Copying)算法定义:...

2021-01-11 22:49:58 115

原创 HotSpot 虚拟机对象探秘

1、对象创建1、检查该指令(new)是否在常量池中有相关类的符号引用2、检查是否执行过类加载的过程。3、类加载完成后,分配内存,分配内存有两种方法 3.1、指针碰撞,前提是Java堆中内存是绝对规整的, 用过的内存在一边,没用过的在另外一边,分配内存的时候就把指针往没用过的那一边挪动和对象大小相同的距离。 3.2、空闲链表,在Java堆内存不规整的时候使用,链表记录空闲内存,分配内存的时候,从链表找到符合内存大小的空间。4、对象创建是个频繁的过程,需要考虑多线程的情况,...

2021-01-11 22:43:06 61

原创 Java内存区域

前言:如果没特殊说明,均以HotSpot虚拟机为例。运行时的数据区域:先看看1.8之前和1.8之后运行时的数据区域1.8之前1.8及之后主要区别:元空间:1.8之后替代了方法区,但是元空间这时候已经放在了本地内存,优点而言,内存更大了,只是受本地内存影响下面分别讲下各个数据区1.1、程序计数器1、是一块比较小的内存区域,可以看作当前线程所执行的字节码的行号指示器。2、帮助线程切换后能恢复到正确的执行位置3、是线程私有的1...

2020-12-09 22:43:44 79

原创 LeetCode - Reverse Nodes in k-Group

/** * 题目 * * 将给出的链表中的节点每k个一组翻转,返回翻转后的链表 * 如果链表中的节点数不是k的倍数,将最后剩下的节点保持原样 * 你不能更改节点中的值,只能更改节点本身。 * 只允许使用常数级的空间 * 例如: * 给定的链表是1->2->3->4->5 * * 对于 k = 2, 你应该返回 2->1->4->3-&...

2019-11-06 10:21:50 128

原创 LeetCode - Remove Duplicates from Sorted List

/** * 题目 * * 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 */public class RemoveDuplicatesfromSortedList { /** * 常规迭代解法 * @param head * @return */ public ListNode deleteDuplicate...

2019-11-06 10:17:39 130

原创 LeetCode - Two Sum

/** * 题目 * * 给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。 * * 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 */public class TwoSum { public static int[] twoSum(int[] nums, int...

2019-11-05 16:07:22 93

原创 LeetCode - Rotate List

/** * 旋转链表 * * 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 */public class RotateList { public ListNode rotateRight(ListNode head, int k) { if(head == null || head.next == null){ ...

2019-11-05 14:01:14 104

原创 spark集群搭建

2台电脑,搭建一个spark集群主机 ip 192.168.11.33 master从机 ip 192.168.11.32 slave1CentOS 7 + hadoop-3.1.3 + spark 2.4.4 + jdk1.8前面的环境准备可以看下hadoop集群搭建下面开始spark集群的搭建1、从官网下载spark,解压spark下载2.在/etc...

2019-11-01 11:02:22 240

原创 搭建hadoop集群

搭建过程中记录下相关内容两台电脑,主节点master,子节点slave1 ,桥接centos 7, hadoop3.1.3 ,jdk1.81 VMware的安装最新超详细VMware虚拟机下载与安装2 镜像的下载与安装(我装的是centos7,需要注意自己是否需要桌面)CentOS的安装3 主机名和ip的修改CentOS7.6修改主机名及IP地址映射这里需...

2019-10-29 15:32:57 131

原创 LeetCode - longest-palindromic-substring

题目找出给出的字符串S中最长的回文子串。假设S的最大长度为1000,并且只存在唯一解。解题思路利用左右两个指针,从中间往左右走,有点像那个滑动窗口这个概念。这里需要注意两个例子,一个是两个字符相同的情况aa和3个字符2个相同的情况abb需要用index来进行判断,不能用right指针来判断,否则无论如何都会略过一个test,复杂度为0(n*n),空间上为O(1)代码...

2019-10-09 22:01:53 87

原创 1130,ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server

我的mysql 挂在我的腾讯云服务器上,然后我想在本地通过Navicat链接到远程服务器上的mysql ,发现出现了上面那个问题。问题原因:权限不够问题解决:给个权限就行root权限下 登录mysql授权:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '自己的密码' WITH GRANT OPTION;...

2019-08-23 16:12:49 158

原创 服务器装mysql

本人环境腾讯云服务器操作系统:centos 7.6 64位1、wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm2、rpm -ivh mysql-community-release-el7-5.noarch.rpm3、install mysql-community-serve...

2019-08-15 15:44:01 86

原创 剑指offer - 求1+2+3+...+n

题目很简单 求1 - n的和,但是要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)我想了蛮久,发现这要求下能使用的 的符号也就这些,单目运算符:++和--,双目运算符:+,-,移位运算符<<和>>,关系运算符>,<等,逻辑运算符&&,||,&,|,^,...

2019-07-16 16:41:08 134

原创 剑指offer - 和为S的连续正数序列

题目:小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!解题思路:这题看了别人的代码,发...

2019-07-14 12:05:06 98

原创 2019/6/14 乐檬-Java后端开发实习

1.笔试(Java基础,树的前中后序遍历,String 能被继承吗, 单例, 两道编程题 - 逆转矩阵 和 字符串)2.自我介绍3.问项目4.100W条数据中取最大的1000条数据,用什么方法(堆)5.问两道编程题6.你有什么想问我的吗(问了下学习方向)总结:项目没啥可讲是很危险的,那剩下来的时间就全问数据结构和算法了,哎,数据结构和算法还是差了些...

2019-06-14 17:15:17 451 1

空空如也

空空如也

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

TA关注的人

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