自定义博客皮肤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)
  • 问答 (1)
  • 收藏
  • 关注

原创 Golang map实现原理及源码分析

本文涉及到的源码版本为Go SDK 1.16.11、map的基本结构 map是Golang中的一种常用数据结构,其本质上是一种哈希表,类似于 java 的 HashMap以及Python的字典(dict),是一种存储键值对(Key-Value)的数据结构。一般的Map会包含两个主要结构:数组:数组里的值指向一个链表 链表:目的解决hash冲突的问题,并存放键值 而在Golang中,解决hash冲突的不是链表,而是数组(既内存中的连续空间),而且使用了两个...

2021-07-14 20:29:31 563

原创 Golang 调度器相关

1、Golang调度器设计思想调度器的有两大思想:复用线程:协程本身就是运行在一组线程之上,不需要频繁的创建、销毁线程,而是对线程的复用。在调度器中复用线程还有2个体现:1)work stealing,当本线程无可运行的G时,尝试从其他线程绑定的P偷取G,而不是销毁线程。2)hand off,当本线程因为G进行系统调用阻塞时,线程释放绑定的P,把P转移给其他空闲的线程执行。利用并行:GOMAXPROCS设置P的数量,当GOMAXPROCS大于1时,就最多有GOMAXPROCS个...

2021-06-30 20:13:31 148

原创 Golang GC/垃圾回收机制

1、简介Golang GC 算法使用的是无无分代(对象没有代际之分)、不整理(回收过程中不对对象进行移动与整理)、并发(与用户代码并发执行)的三色标记清扫算法。原因在于:对象整理的优势是解决内存碎片问题以及“允许”使用顺序内存分配器。但 Go 运行时的分配算法基于tcmalloc,基本上没有碎片问题。 并且顺序内存分配器在多线程的场景下并不适用。Go 使用的是基于tcmalloc的现代内存分配算法,对对象进行整理不会带来实质性的性能提升。 分代 GC 依赖分代假设,即 GC 将主要的回收目标...

2021-06-30 18:39:05 445

原创 Kafka专题讲解

1、Kafka特点与定位1.1、Kafka简介kafka的设计定位是“分布式事件流平台”,适用于所有产生事件或者基于事件触发运转的业务场景,而消息的发布订阅可以理解为事件流的一种场景,所以kafka在设计上更多的定位于底层能力、吞吐量、稳定性的保证 kafka是一个分布式流式处理平台,它以高吞吐、可持久化、可水平拓展、支持流数据处理等多种特性而被广泛使用,这与它所扮演的三个角色密不可分:消息系统。Kafka 和传统的消息系统都具备消息解耦、冗余存储、流量削峰、缓冲、异步通信、拓展性...

2021-06-23 21:29:16 400 3

原创 Redis专题讲解

1、Redis简介Redis是一个key-value存储系统,全称为Remote Dictionary Server,即远程字典服务器。和所谓的MySQL和Oracle不一样,它是key/value数据库,支持多种value类型,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。Redis的出现,很大程度弥补了关系型数据库的不足。它提供了各种常见语言的客户端,使用很方便。...

2021-06-21 23:41:06 184

原创 MySQL学习地图

1、MySQL架构转存失败重新上传取消2、日志系统3、索引4、事务5、锁

2021-06-19 23:36:51 109

原创 LRU缓存算法的实现(JAVA)

LRU(Least Recently Used)是一种常见的页面置换算法,在计算中,所有的文件操作都要放在内存中进行,然而计算机内存大小是固定的,所以我们不可能把所有的文件都加载到内存,因此我们需要制定一种策略对加入到内存中的文件进项选择。常见的页面置换算法有:LRU 最近最久未使用;FIFO 先进先出置换算法 类似队列;OPT 最佳置换算法等 从程序运行的原理来看,最近最少使用算法是比较接近理想的一种页面置换算法,这种算法既充分利用了内存中页面调用的历史信息,又正确反映了...

2021-03-03 21:31:45 134 1

原创 Java中接口和抽象类的异同

1、接口 接口(Interface)是对行为的抽象(这里需要区别于软件工程中的,供调用的方法或函数这一类接口概念)。 接口可以被看作是抽象类的变体,接口中所有的方法都是抽象的,可以通过接口来间接的实现多重继承。接口中可以含有变量和方法。 接口中的变量会被隐式地指定为public static final变量(并且只能是public static final变量,用private修饰会报编译错误)。 方法会被隐式地指定为public abstract方法且只能是publ...

2021-02-25 21:24:54 171

原创 观察者模式

观察者模式定义:对象间存在一对多的依赖关系,当一个对象的状态发生变化时,所有依赖他的对象都得到通知并自动更新优点:1、降低目标和观察者之间的耦合关系,符合依赖倒置原则 2、目标和观察者之间建立了一套触发机制缺点:1、目标和观察者之间的依赖关系没有完全解除,二者有可能循环引用 2、当观察者对象很多时,发布通知会影响效率模式的结构1、抽象主题(抽象目标类),提供保存观察者对象的聚集类和增加、删除观察者对象的方法,以及通知所有观察者的抽象方法...

2021-01-29 20:47:10 105

原创 设计模式—创建型模式

单例模式定义:一个类只有一个实例,且这个类能自行创建这个实例。特点:1、单例类只有一个对象 2、单例类必须自己创建自己的对象 3、单例类需要给其他类提供访问这个对象的节点应用:Windows 的回收站、操作系统中的文件系统、多线程中的线程池、显卡的驱动程序对象、打印机的后台处理服务、应用程序的日志对象、数据库的连接池、网站的计数器、Web 应用的配置对象、应用程序中的对话框、系统中的缓存等。优点:内存中只有一个实例;避免对资源的多重占用;设置全...

2021-01-29 20:07:04 178

原创 Java中String的基础知识和常用操作

1、Java中String的常用操作2、比较两个数组内容是否相同 String[] strs1 = new String[]{"aaa","bbb"};String[] strs2 = new String[]{"bbb","aaa"};在比较时可以先将数组排序,在调用Arrays.equals方法进行比较。Arrays.sort(strs1);Arrays.sort(strs2);Arrays.equals(strs1,strs2);...

2020-08-11 17:15:17 1067

原创 c3p0数据库连接池无法连接数据库—错误使用了username关键字

在jdbc.properties的配置中使用了username和password关键字。单元测试时反复出现以下错误:Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: ...

2019-10-07 15:09:52 257

原创 Lambda表达式在Java中的应用

一、为什么引入Lambda表达式 一句话,为了进行代码块的传递。Java是面向对象的语言,不能直接传递代码块,而是要以对象的方式进行传递代码。Lambda表达式的出现就是为了解决这个问题。二、Lambda表达式的语法 (参数)-> {代码} 例1:(String first, String second) ->{ if (firs...

2019-09-08 20:01:30 207

转载 JAVA的interrupt()方法和线程终止的方式

概要本章,会对线程的interrupt()中断和终止方式进行介绍。涉及到的内容包括:1. interrupt()说明2. 终止线程的方式  2.1 终止处于“阻塞状态”的线程  2.2 终止处于“运行状态”的线程3. 终止线程的示例4. interrupted() 和 isInterrupted()的区别转载请注明出处:http://www.cnblog

2017-11-02 14:23:59 260

原创 Python3中Scrapy的安装

一、概述最近刚开始接触Python的爬虫,自然了解到了Scrapy这个应用框架。在安装Scrapy的过程中遇到了一些问题,故在这里记录一下安装流程,也希望能帮到有需要的人。

2017-09-27 11:10:13 401

原创 Android端 同 单片机 利用蓝牙模块的通信实现

这次期末的课程设计做了一个智能灯光控制系统,系统整体的功能不在此赘述,系统主要是要实现下位机同上位机的通信,上位机选用的是Android手机端,下位机是52单片机,通过蓝牙模块实现通信。虽然系统很简单,但还是第一次完成的走完从下位机数据采集,数据传输,再到上位机的处理这个流程,故在这里做一个记录,也希望能够帮到有需要的人。一、下位机通信下位机选用的是52单片机,数据来自几个传感器,传感器采

2017-07-11 15:12:07 3653

原创 AndroidStudio工程导入jar包和so第三方库

一. jar包的导入将需导入的包复制到libs文件夹下,然后点File -> Project Structure -> Dependence,点击绿色加号添加刚才复制的jar包。二. so第三方库的导入在 src/main 目录下新建jniLibs文件夹,将so文件复制进来。然后在build.gradle文件中添加android{ ····· so

2017-02-10 09:55:01 336

转载 Android应用启动界面的两种实现方法

一. 利用两个activity间的跳转实现MainActivity.javapublic class MainActivity extends AppCompatActivity { private final long SPLASH_LENGTH = 3000; Handler handler = new Handler(); @Override

2017-02-09 12:14:32 652

空空如也

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

TA关注的人

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