![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
study
文章平均质量分 84
God works
喜悲自渡
展开
-
用golang实现定时任务(一)
前言之前字节三面被问到了如何实现一个定时任务,以及定时任务的存储,用什么数据结构相关的问题。面试当时整个人都愣住了,面试结束后关于这个问题思考了很久,也和朋友讨论过这个问题,关于数据结构我还是觉得hashmap是个不错的选择,但是其实维护一个有序的双向链表好像也有点麻烦,所以还有待考究。目前是先完成了一个简单的定时任务,使用到的数据结构是非常简单的动态数组,后面再想想怎么去优化,另外还有一些问题是要在控制协程创建数量的同时保证每个任务都能按时完成,这是后期需要优化的。思路...原创 2021-04-09 11:57:49 · 3038 阅读 · 3 评论 -
封装一个自己的golang操作MySQL数据库工具
封装一个自己的golang操作MySQL数据库工具准备工作导入驱动连接mysql增删改查增删改查准备工作首先我们要准备一个写golang的IDE,我用的是goland,还可以用vscode。然后我们要知道golang的基本使用。其次我们还要知道连接MySQL的基本步骤,如果有jdbc的封装经历就更好啦。那就开始吧!导入驱动跟Java一样,go也没有内置mysql的驱动,所以我们要使用go get github.com/go-sql-driver/mysql下载mysql驱动。然后在impor原创 2021-04-05 14:03:20 · 2433 阅读 · 1 评论 -
LongAdder源码分析
LongAdder源码分析LongAdder是个啥AtomicLong和LongAdder多线程环境下做累加操作性能对比LongAdder底层原理分析LongAdder源码分析LongAdder是个啥见名知义我们能知道这是个单位为Long也就是8个字节的累加器,另外它是在多线程环境下安全的累加器,所以说它底层要么用的锁要么用的CAS对吧,如果直接用lock或者synchronized的话细粒度太粗了,所以没错它底层用的CAS。提到CAS,这里又是Long,那么我们很容易想到有个类叫AtomicLong,原创 2021-02-22 23:03:26 · 156 阅读 · 0 评论 -
《深入理解Java虚拟机》阅读——垃圾回收机制
《深入理解Java虚拟机》阅读——垃圾回收机制前言why——为什么需要垃圾回收what——垃圾回收做些什么where——去哪里回收垃圾how——垃圾回收是怎么做的垃圾是否要回收引用计数法可达性分析算法前言从小老师就告诉我们学习有3个w和1个h,分别是what做什么、where在哪里、why为什么和how怎么做,于是我们今天也从这四个角度出发,跟着《深入理解Java虚拟机》学习一下jvm的垃圾回收机制。why——为什么需要垃圾回收对于我们Java程序员来说,一开始对于内存其实是很不敏感的(至少我是这样原创 2021-02-21 22:05:23 · 2940 阅读 · 6 评论 -
《深入理解Java虚拟机》阅读——JVM运行时内存结构
jvm运行时内存结构前言jvm运行时内存结构程序计数器虚拟机栈本地方法栈堆方法区前言因为最近在准备春招实习嘛,就想着认真的阅读一下这本书,周志明老师的这系列书真的是经典了,我是在微信读书app上读的(因为实体书太贵了而且等寄过来就没时间了,说到微信读书app真的不得不夸一下,比起qq阅读,微信读书真是好太多了,页面整洁不说,书也很多,不会给你推荐一堆无脑言情小说,我觉得用来阅读一些专业书或者其他书用来提升思想也很不错(微信阅读记得打钱!继续说回《深入理解Java虚拟机》这本书,我读的是第二版,这一版不是原创 2021-02-06 20:55:30 · 143 阅读 · 0 评论 -
排序算法之冒泡排序
冒泡排序冒泡排序工作流程分析一段废话正题java版冒泡排序时间复杂度分析冒泡排序工作流程分析一段废话相信每个程序员在最开始接触编程的时候,知道的第一个排序算法就是冒泡排序了吧,我是大一在杭电上刷题的时候接触到的,我当时很愚笨(虽然现在也是,学了好久看了好多博客也搞不懂冒泡是怎么给数组排序的,我最后还是直接把关键代码背下来了去参加新生赛的(真的是太蠢了我害。好叭,我确实只是想吐槽一下我自己的脑子,完全有感而发,不过你既然都看到这了,我就给你推荐一本书吧——《我的第一本算法书》。很遗憾我大三了才看到这本书原创 2021-02-05 21:08:03 · 245 阅读 · 0 评论 -
操作系统层面与JAVA层面的线程状态
操作系统层面与JAVA层面的线程状态操作系统层面的五种线程状态JAVA层面的六种线程状态RUNNABLE和BLOCKED转换RUNNABLE和WAITING转换RUNNABLE和TIMED_WAITING转换操作系统层面的五种线程状态学过操作系统进程管理这一章的都知道,在计算机底层线程是有5中状态的:初始态、就绪态、运行态、阻塞态、结束态。这五种状态是这么变化的:当用户点击exe文件起到加载到内存中这段时间就是初始态,等待CPU时间片的时间里就是就绪态,得到CPU的时间段就是运行态,当在运行时遇到原创 2021-01-31 20:52:33 · 299 阅读 · 2 评论 -
JDK1.8 HashMap部分源码阅读
HashMap部分源码阅读HashMap核心属性分析结点结构分析HashMap构造方法分析HashMap核心属性分析//默认的初始容量static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16//最大容量 2^30static final int MAXIMUM_CAPACITY = 1 << 30;//默认负载因子static final float DEFAULT_LOAD_FACTOR = 0.7原创 2021-01-28 16:07:46 · 99 阅读 · 0 评论 -
红黑树笔记
目录红黑树的性质红黑树的平衡红黑树插入的各种情景分析情景1:红黑树为空树情景2:要插入的结点的key已经存在情景3:插入结点的父结点为黑色结点情景4:插入结点的父结点为红色结点情景4.1 叔叔结点存在且为红色结点情景4.2 叔叔结点不存在或为黑色结点 且 父亲结点是爷爷结点的左结点红黑树的性质红黑树的性质 红黑树示例图 性质1:每个结点要么是黑色,要么是红色。 ...原创 2021-01-28 16:06:08 · 225 阅读 · 2 评论 -
设计模式之单例模式(Singleton)
设计模式之单例模式单例模式是什么单例模式简单实现单例模式的常见五种写法懒汉式饿汉式双重检验锁(DCL)为什么不直接锁住整个方法为什么要检验两次为什么instance要被volatile修饰静态内部类枚举如何防止反射创建单例单例模式是什么单例模式我个人理解是某个对象只能有一个官方说法可以查百度百科,在生活中有很多这样的例子,只能是唯一的,比如某国家的主席或总统,比如每片雪花,我们每个人也是独一无二的。在这个对象在开发中只能有一个的时候,单例模式就派上了用场。单例模式简单实现单例模式三个重要的点就是构造原创 2021-01-24 20:49:54 · 163 阅读 · 0 评论 -
synchronized锁升级过程
synchronized锁升级过程为什么要进行锁升级锁升级预备知识之对象头锁升级预备知识之CASABA问题锁升级详细过程为什么要进行锁升级锁升级其实就是对synchronized的优化,以前用synchronized修饰一个对象或者是方法,方法也等于是锁住对象,直接上一把操作系统层面的大锁,万一只有少量线程的话会大题小作了,如果大量线程的话又会特别消耗时间,划不来,所以要将以前的二话不说上一把大锁进行优化。锁升级的过程是 无锁 --> 偏向锁 --> 轻量级锁 --> 重量级锁锁升原创 2021-01-23 20:39:57 · 271 阅读 · 0 评论 -
MySQL索引为什么选择B+树作为数据结构?
MySQL索引为什么选择B+树作为数据结构?如果没有使用某种数据结构,mysql是如何查找的如何选妃(数据结构如果没有使用某种数据结构,mysql是如何查找的我们首先明确mysql只是一个软件的概念,它的作用是在我们存储数据的时候建立起一个关系并且方便我们对这些数据进行处理。所以我们的数据根据mysql引擎的不同,存放的位置也有区别,但是我们常用的innodb是会把数据落到磁盘的。那么我们的mysql去查询数据也是要先从磁盘中读取数据到内存中再去查找。那么我们要研究的就是mysql通过什么方式能够做原创 2021-01-22 21:18:55 · 264 阅读 · 0 评论 -
https的实现原理
Https原理http协议存在安全隐患初步加密(对称加密)进一步加密合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入http协议存在安全隐患我们都知道http协议存在很多安全问题:隐私隐患:个人的登录密码、隐私信息什么的都可能会别坏人原创 2021-01-21 22:34:47 · 208 阅读 · 2 评论 -
关于在linux上启动dubbo监控中心的各种错误及对应解决方法总结
在tomcat上启动dubbo真是耗了我大量时间,各种错都被我遇到了,百度了很久,发现好像很少的关于在linux上启动dubbo的博客,这次也是我第一次接触dubbo,平时用linux用的也少,可能是我太low了8。通过这次的经历,倒也是学到了很多,也算是因祸得福吧,因此写一个博客记录一下,万一以后又忘了也方便来查看,也希望可以帮助到一些跟我之前一样被tomcat配置折磨的同学。环境:Ubunt...原创 2019-12-27 13:54:18 · 918 阅读 · 0 评论 -
MYSQL:Unknown column '字段名' in 'field list' 一些解决方法
今天用mybatis插入数据的时候出现了这样的错误,意思是在表中找不到这个字段名的字段,于是疯狂百度,总结了下面几个原因以及解决方法。可能是字段名在表中确实不存在,检查一下表中的字段名与项目中的是否一致。如果检查了是一致的,检查在建表的时候是否在字段名有一个回车或者其他的字符。如果经过前两个检查还是没找到问题所在,就检查一下字符编码是否一致。最后如果还没查出错误,就看看数据库的配置文件中...原创 2019-12-22 16:08:50 · 7495 阅读 · 3 评论 -
用c语言写五子棋
这是大一上学期要求写的课设,没用到指针,坐标的控制的代码还是从网上搜的,也借鉴了很多其他人的代码,应该挺容易理解的,因为没用到指针,最难的就只有判断连成五子的那个算法了,可能刚开始做的时候会觉得很难,尽量先自己想一想怎么去判断,实在想不出再看看别人的算法,因为这样更容易理解。代码如下:#include<stdio.h>#include<stdlib.h>#in...原创 2019-03-07 22:23:56 · 835 阅读 · 2 评论