自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 用golang实现定时任务(一)

前言之前字节三面被问到了如何实现一个定时任务,以及定时任务的存储,用什么数据结构相关的问题。面试当时整个人都愣住了,面试结束后关于这个问题思考了很久,也和朋友讨论过这个问题,关于数据结构我还是觉得hashmap是个不错的选择,但是其实维护一个有序的双向链表好像也有点麻烦,所以还有待考究。目前是先完成了一个简单的定时任务,使用到的数据结构是非常简单的动态数组,后面再想想怎么去优化,另外还有一些问题是要在控制协程创建数量的同时保证每个任务都能按时完成,这是后期需要优化的。思路...

2021-04-09 11:57:49 2989 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 2285 1

原创 关于初学Golang的一些感受

前言前段时间获得字节跳动的后端开发实习生offer后就开始学习golang,目前算是将golang了解了个大概,但是还是在很浅层的了解层面,大学三年学了两年半的Java,突然接触golang真的有千般万般的感触,现在当作日志将这些感触记录下来,希望能在将来的某一天又返回来看看,感受一下自己以前的愚笨。关于golang的一些吐槽众所周知,golang的语法跟C很类似,还好我大一有些C语言的底子,虽然当时对于指针是一窍不通,但是学了Java之后也有所理解,所以要学习go其实还比较简单,但是对于用惯了Jav

2021-04-02 20:03:33 439 1

原创 字节跳动后端开发日常实习生一~三面记录

前言前半个月的字节面试经历,在这里当作日志记录一下,冲冲冲!!!一面1.自我介绍2.简述一下项目3.说一下String是可变还是不可变的,为什么不可变,有没有什么方式让它可变4.熟悉反射吗,反射能让String可变吗 (这里没答的对,答的不可以,应该是可以的)5.平时会使用哪些集合类6.说说hashmap和linkedhashmap的区别7.说说arraylist和linkedlist的区别和使用场景8.hashmap是线程安全的吗9.如何让hashmap线程安全10.你对线程安全的

2021-03-26 12:54:32 834 1

原创 LongAdder源码分析

LongAdder源码分析LongAdder是个啥AtomicLong和LongAdder多线程环境下做累加操作性能对比LongAdder底层原理分析LongAdder源码分析LongAdder是个啥见名知义我们能知道这是个单位为Long也就是8个字节的累加器,另外它是在多线程环境下安全的累加器,所以说它底层要么用的锁要么用的CAS对吧,如果直接用lock或者synchronized的话细粒度太粗了,所以没错它底层用的CAS。提到CAS,这里又是Long,那么我们很容易想到有个类叫AtomicLong,

2021-02-22 23:03:26 146

原创 《深入理解Java虚拟机》阅读——垃圾回收机制

《深入理解Java虚拟机》阅读——垃圾回收机制前言why——为什么需要垃圾回收what——垃圾回收做些什么where——去哪里回收垃圾how——垃圾回收是怎么做的垃圾是否要回收引用计数法可达性分析算法前言从小老师就告诉我们学习有3个w和1个h,分别是what做什么、where在哪里、why为什么和how怎么做,于是我们今天也从这四个角度出发,跟着《深入理解Java虚拟机》学习一下jvm的垃圾回收机制。why——为什么需要垃圾回收对于我们Java程序员来说,一开始对于内存其实是很不敏感的(至少我是这样

2021-02-21 22:05:23 2896 6

原创 《深入理解Java虚拟机》阅读——JVM运行时内存结构

jvm运行时内存结构前言jvm运行时内存结构程序计数器虚拟机栈本地方法栈堆方法区前言因为最近在准备春招实习嘛,就想着认真的阅读一下这本书,周志明老师的这系列书真的是经典了,我是在微信读书app上读的(因为实体书太贵了而且等寄过来就没时间了,说到微信读书app真的不得不夸一下,比起qq阅读,微信读书真是好太多了,页面整洁不说,书也很多,不会给你推荐一堆无脑言情小说,我觉得用来阅读一些专业书或者其他书用来提升思想也很不错(微信阅读记得打钱!继续说回《深入理解Java虚拟机》这本书,我读的是第二版,这一版不是

2021-02-06 20:55:30 128

原创 排序算法之冒泡排序

冒泡排序冒泡排序工作流程分析一段废话正题java版冒泡排序时间复杂度分析冒泡排序工作流程分析一段废话相信每个程序员在最开始接触编程的时候,知道的第一个排序算法就是冒泡排序了吧,我是大一在杭电上刷题的时候接触到的,我当时很愚笨(虽然现在也是,学了好久看了好多博客也搞不懂冒泡是怎么给数组排序的,我最后还是直接把关键代码背下来了去参加新生赛的(真的是太蠢了我害。好叭,我确实只是想吐槽一下我自己的脑子,完全有感而发,不过你既然都看到这了,我就给你推荐一本书吧——《我的第一本算法书》。很遗憾我大三了才看到这本书

2021-02-05 21:08:03 230

原创 操作系统层面与JAVA层面的线程状态

操作系统层面与JAVA层面的线程状态操作系统层面的五种线程状态JAVA层面的六种线程状态RUNNABLE和BLOCKED转换RUNNABLE和WAITING转换RUNNABLE和TIMED_WAITING转换操作系统层面的五种线程状态学过操作系统进程管理这一章的都知道,在计算机底层线程是有5中状态的:初始态、就绪态、运行态、阻塞态、结束态。这五种状态是这么变化的:当用户点击exe文件起到加载到内存中这段时间就是初始态,等待CPU时间片的时间里就是就绪态,得到CPU的时间段就是运行态,当在运行时遇到

2021-01-31 20:52:33 284 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 91

原创 红黑树笔记

目录红黑树的性质红黑树的平衡红黑树插入的各种情景分析情景1:红黑树为空树情景2:要插入的结点的key已经存在情景3:插入结点的父结点为黑色结点情景4:插入结点的父结点为红色结点情景4.1 叔叔结点存在且为红色结点情景4.2 叔叔结点不存在或为黑色结点 且 父亲结点是爷爷结点的左结点红黑树的性质红黑树的性质 红黑树示例图 性质1:每个结点要么是黑色,要么是红色。 ...

2021-01-28 16:06:08 219 2

原创 设计模式之单例模式(Singleton)

设计模式之单例模式单例模式是什么单例模式简单实现单例模式的常见五种写法懒汉式饿汉式双重检验锁(DCL)为什么不直接锁住整个方法为什么要检验两次为什么instance要被volatile修饰静态内部类枚举如何防止反射创建单例单例模式是什么单例模式我个人理解是某个对象只能有一个官方说法可以查百度百科,在生活中有很多这样的例子,只能是唯一的,比如某国家的主席或总统,比如每片雪花,我们每个人也是独一无二的。在这个对象在开发中只能有一个的时候,单例模式就派上了用场。单例模式简单实现单例模式三个重要的点就是构造

2021-01-24 20:49:54 153

原创 synchronized锁升级过程

synchronized锁升级过程为什么要进行锁升级锁升级预备知识之对象头锁升级预备知识之CASABA问题锁升级详细过程为什么要进行锁升级锁升级其实就是对synchronized的优化,以前用synchronized修饰一个对象或者是方法,方法也等于是锁住对象,直接上一把操作系统层面的大锁,万一只有少量线程的话会大题小作了,如果大量线程的话又会特别消耗时间,划不来,所以要将以前的二话不说上一把大锁进行优化。锁升级的过程是 无锁 --> 偏向锁 --> 轻量级锁 --> 重量级锁锁升

2021-01-23 20:39:57 266

原创 MySQL索引为什么选择B+树作为数据结构?

MySQL索引为什么选择B+树作为数据结构?如果没有使用某种数据结构,mysql是如何查找的如何选妃(数据结构如果没有使用某种数据结构,mysql是如何查找的我们首先明确mysql只是一个软件的概念,它的作用是在我们存储数据的时候建立起一个关系并且方便我们对这些数据进行处理。所以我们的数据根据mysql引擎的不同,存放的位置也有区别,但是我们常用的innodb是会把数据落到磁盘的。那么我们的mysql去查询数据也是要先从磁盘中读取数据到内存中再去查找。那么我们要研究的就是mysql通过什么方式能够做

2021-01-22 21:18:55 258

原创 https的实现原理

Https原理http协议存在安全隐患初步加密(对称加密)进一步加密合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入http协议存在安全隐患我们都知道http协议存在很多安全问题:隐私隐患:个人的登录密码、隐私信息什么的都可能会别坏人

2021-01-21 22:34:47 202 2

原创 关于在linux上启动dubbo监控中心的各种错误及对应解决方法总结

在tomcat上启动dubbo真是耗了我大量时间,各种错都被我遇到了,百度了很久,发现好像很少的关于在linux上启动dubbo的博客,这次也是我第一次接触dubbo,平时用linux用的也少,可能是我太low了8。通过这次的经历,倒也是学到了很多,也算是因祸得福吧,因此写一个博客记录一下,万一以后又忘了也方便来查看,也希望可以帮助到一些跟我之前一样被tomcat配置折磨的同学。环境:Ubunt...

2019-12-27 13:54:18 876

原创 MYSQL:Unknown column '字段名' in 'field list' 一些解决方法

今天用mybatis插入数据的时候出现了这样的错误,意思是在表中找不到这个字段名的字段,于是疯狂百度,总结了下面几个原因以及解决方法。可能是字段名在表中确实不存在,检查一下表中的字段名与项目中的是否一致。如果检查了是一致的,检查在建表的时候是否在字段名有一个回车或者其他的字符。如果经过前两个检查还是没找到问题所在,就检查一下字符编码是否一致。最后如果还没查出错误,就看看数据库的配置文件中...

2019-12-22 16:08:50 7265 3

原创 用c语言写五子棋

这是大一上学期要求写的课设,没用到指针,坐标的控制的代码还是从网上搜的,也借鉴了很多其他人的代码,应该挺容易理解的,因为没用到指针,最难的就只有判断连成五子的那个算法了,可能刚开始做的时候会觉得很难,尽量先自己想一想怎么去判断,实在想不出再看看别人的算法,因为这样更容易理解。代码如下:#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;#in...

2019-03-07 22:23:56 786 2

空空如也

空空如也

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

TA关注的人

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