自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式(Go)

创建型模式单例模式单例模式保证了实例的全局唯一性,而且只被初始化一次,所以比较适合全局共享一个实例,且只需要被初始化一次的场景,例如数据库实例、全局配置、全局任务池等。单例模式又分为饿汉方式和懒汉方式。饿汉方式指全局的单例实例在包被加载时创建,而懒汉方式指全局的单例实例在第一次被使用时创建。饿汉式type singleton struct { }var ins *singleton = &singleton{}func GetInsOr() *singleton { re

2021-10-26 19:15:00 139

原创 channel知识点总结

channel创建方式:ch := make(chan int, 10) 后面的数字代表缓冲队列的容量,如果容量为0则代表非缓冲通道channel类型的值本身就是并发安全的,一个channel就是一个先进先出的队列。常用操作for - range遍历需要不断从channel中读取数据,当channel关闭时,for循环自动退出,这样一来可以防止读取已关闭channel(读取已关闭channel取到的值为存储数据类型的零值)func main() { sign := make(chan in

2021-10-12 14:31:54 1728

原创 数据库事务隔离级别

1)事务的ACID特性原子性:将事务看作一个原子操作,是不可分割的。如果在事务执行过程中发生了错误,会执行回滚操作。一致性:事务执行前后,数据库的完整性保持一致。例如:A给B转账,B的余额增加,A的余额不能还保持原样。隔离性:事务对于在同一时间对同一数据的操作是相互隔离的,不能互相干扰。持久性:当事务完成后,需持久化到数据库,无法再进行回滚操作。2)并发事务导致的问题脏读:事务A更新数据,但未提交,事务B恰好对这块数据进行读取,然后A进行了回滚,那么B就读到了脏数据。不可重复读:事务A多次读取

2021-08-31 13:20:48 118

原创 LeetCode题目:两数之和 解题思路及代码实现(golang)

题目题目:2.两数相加给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。例如:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.思路由于链表是按照数字逆序存储的,处于相同位置的数字直接相加,产生的进位放到下一个位置。golang实现:需要注意

2021-08-30 15:56:53 170

原创 Oracle优化-全表扫描与高水位线

全表扫描与高水位线决定是否使用全表扫描的要素:访问的数据块个数最终结果集行数舍弃的行数全表扫描通常要读出直到HWM标记的所有的属于该表数据块,即使该表中没有任何数据。HWM(高水位线):用来界定一个段中使用的块和未使用的块。在我们插入数据时,HWM逐渐上移,在HWM之下的,表示使用过的块,HWM之上的就表示未使用过的块。delete操作不会降低HWM,关于insert语句,如果使用了append选项,HWM会直接上移,数据不会插入到表的空闲块中。所以,一张原本有大量数据的表,用delet

2021-08-30 13:12:12 248

原创 Java中的垃圾回收算法

GC算法:标记清除算法扫描对象,并标记出所有需要回收的对象。之后再次扫描,回收所有被标记的对象。优点:节省空间 缺点:扫描两次,浪费了时间,会产生内存碎片。标记压缩算法(标记整理算法)优化了标记清除算法,在标记后不是直接清除对象,而是将存活对象移向内存的一端。然后清除需要回收的对象。复制算法主要用在年轻代中(年轻代中对象存活度较低),每次GC后,都会将Eden区中还存活的对象移到幸存区的To中,幸存区From里面的对象,会判断它经历了几次GC,如果达到设定的值(默认15,可以使用-

2021-08-27 08:42:32 66

原创 JAVA抽象类和接口的常见问题总结

关于子类继承抽象类的问题首先抽象类里可以有抽象方法,也可以有具体的方法。如果子类是非抽象类,那么这个子类必须去实现父类里面所有的抽象方法(重写),而抽象类里的非抽象方法会被继承。另外,接口中所有的方法都是抽象的,接口中可以定义数据成员,但必须是常量。如果抽象类来实现接口,不必实现接口中所有的方法,其余方法可以交给抽象类的子类实现。也就是说,一个子类继承了某抽象类,这个抽象类又实现了某接口,抽象类中若没有实现接口中所有的方法,这些没有实现的方法就由子类实现。注:如果接口中有default关键字修饰的

2021-08-25 11:07:02 345

原创 Java常见易错问题记录

for循环的流程问题:例题:package demo;public class testFor { static boolean foo(char c) { System.out.print(c); return true; } public static void main(String[] args) { int i = 0; for (foo('A'); foo('B') && (i &l

2021-08-23 09:14:08 180

原创 关于Java继承属性覆盖的问题(向上转型)

案例代码:public class Person { private String privateName = "Person privateName..."; protected String protectedName = "Person protectedName..."; /*default*/ String name = "Person defaultName"; public String publicName = "Person publicName";

2021-08-20 13:40:56 505

原创 LeetCode题目:两数之和 解题思路及代码实现(golang/Java)

题目:序号:1给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。思路:暴力法或者使用哈希表golang实现:package mainimport "fmt"// 1.暴力法 遍历数组 查找数组中是否存在和当前遍历到的数temp 的和为target的数 即寻找target - tempfunc twoSum1(nums []int, target

2021-08-19 09:52:09 76

原创 golang并发编程-channel

channelchannel类型的值本身就是并发安全的,这也是Go语言自带的、唯⼀⼀个可以满足并发安全性的类型。一个channel就是一个先进先出的队列。创建方式:ch := make(chan int, 10)后面的数字代表缓冲队列的容量,如果容量为0则代表不适用缓冲队列如果我们仅定义通道 ,而不用make进行初始化,该通道的值就为nil,对于一个值为nil的通道,对它的任何接收和发送操作,都会被一直阻塞。阻塞问题:缓冲通道元素发送到channel,会按照发送顺序依次排入缓冲队列,如果缓冲

2021-08-18 14:55:18 314

原创 单例模式几种实现方式和代码

一、饿汉式不管需不需要这个对象,在类初始化时,这个对象都会被创建出来不存在线程安全问题1.直接实例化:/** * 1.饿汉式直接实例化 * @author kun */public class Singleton1 { public static final Singleton1 INSTANCE = new Singleton1(); private Singleton1(){ }}2.枚举:表示该类型的对象是有限的几个,限定为一个就成了单例/**

2021-08-17 09:07:44 1501

原创 golang切片与数组相关

切片创建时指定切片长度和容量:make([]int, 1, 10) 创建一个长度为1容量为10的[]int类型切片在切片的底层数据结构中,会存在一个底层数组,切片可以看作对底层数组的某个片段的引用。来看下面这个例子: s1 := []int{1, 2, 3, 4, 5} s2 := s1[2:5] fmt.Printf("s1 : %d len: %d cap: %d \n", s1, len(s1), cap(s1)) fmt.Printf("s2 : %d len:

2021-08-16 14:30:02 82

原创 LeetCode题目:三数之和 思路及代码实现

题目:15. 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]思路:三数相加等于零等同于两个数的和等于另一个数的相反数。先将数组排序,方便遍历,然后定义三个指针,sum、left、right

2021-08-16 10:21:48 191

原创 关于TCP协议中的三次握手与四次挥手详解

TCP协议TCP协议:面向连接的、可靠的传输协议。TCP协议采用三次握手建立一个逻辑上的连接。三次握手1.客户端内核传输控制层产生一个数据包,数据包里有一个关键的信息(syn),将这个数据包发送到服务端2.服务端接收syn数据包,并返回一个syn+ack数据包3.客户端接收syn+ack包,又向服务端发送一个ack数据包完成三次握手,客户端与服务端就会在内存中开辟相应的资源,就建立起了连接,开始传送数据。之后可以调用accept函数获得连接。四次挥手1.客户端或服务端的某一方A向另一方B发送

2021-08-11 14:48:10 62

原创 新的博客 新的开始

换个新的账号,换个心情。后续的计划是学习golang和前端,在博客也会发布相关文章!

2021-04-26 15:00:37 56

空空如也

空空如也

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

TA关注的人

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