自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis:持久化

2022-06-07 14:57:43 449 2

原创 Redis:数据结构

2022-06-06 20:37:06 1571 1

原创 ClickHouse:数据类型

概述ClickHouse的数据类型主要如下:Decimal原生方式:Decimal(P,S)简写方式:Decimal32(S)、Decimal64(S)、Decimal128(S)P=总位数(取值1~38);S=小数位数。当两个精度不同的定点数进行四则运算的时候,它们的结果精度按以下规则:低精度 +/- 高精度 = 高精度精度a * 精度b = 精度(a+b)精度a ÷ 精度b = 精度a (前提a>b>0)FixedString声明:FixedString(N),其

2022-05-25 16:21:32 3679

原创 tree命令 生成目录的树状结构

安装Linux系统:yum install treeMacOS系统:brew install tree常用命令进入要查看树状结构的目录:tree -a:查看所有文件和目录tree -d:只查看目录tree -L level:限制目录显示层级

2022-05-07 14:48:56 803

原创 Gin:页面上传图片到服务器

页面代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>上传图片</title></head><body><form action="http://localhost:8080/upload" method="post" enctype="multipart/form-data">

2022-03-13 12:42:21 883

原创 Golang操作MongoDB:mongo-driver

1、获取依赖go get "go.mongodb.org/mongo-driver"2、连接数据库前提:确保mongo进程已启动ps -ef|grep mongoimport ( "context" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" "log")var db *mongo.Database // 数据库var stuColl *mongo.Collecti

2022-02-18 14:42:13 3366 3

原创 Go结构体标签

omitempty作用:表示在转成json的时候,如果该字段没有提供,那么就不显示该值。

2022-02-18 12:52:58 625

原创 MongoDB 初学

安装安装文档:https://www.runoob.com/mongodb/mongodb-osx-install.html运行 MongoDB上面选择了brew安装mongo,因此下面也使用该方法运行mongo。我们可以使用 brew 命令或 mongod 命令来启动服务。brew 启动:brew services start [email protected] 停止:brew services stop [email protected] 命令后

2022-02-10 12:02:22 140

原创 Linux命令:man

作用:查看Linux中指令的帮助、配置文件帮助、编程函数的帮助等信息。语法:man [OPTION...] [SECTION] PAGE[root@lena file]# man --helpUsage: man [OPTION...] [SECTION] PAGE... -C, --config-file=FILE use this user configuration file -d, --debug emit debugging messages

2021-11-01 13:08:09 2245

原创 Linux学习:运行级别、目录结构、常用命令

Linux命令行模式常用快捷键Tab:自动补全命令Shift+PgUp/PgDn:向上翻页/向下翻页Ctrl+c:停止当前程序Linux系统运行级别查看当前系统的运行级别命令:runlevel[root@iz2zef6me4492joqvzno15z /]# runlevelN 3 # 返回"前一个运行级别 当前运行界别" 其中N表示无Linux运行级别的文件存放在/etc/rc.d/目录下:可以看到由rc0-rc6,共有7个运行级别。[root@iz2zef6me4492joq

2021-10-27 16:54:10 1297

原创 Git 基本命令

配置命令查看配置信息查看当前git的版本:git --version$ git versiongit version 2.13.0.windows.1查看已有的全部配置:git config --listcore.symlinks=falsecore.autocrlf=truehelp.format=htmlrebase.autosquash=truehttp.sslcainfo=E:/java_app/git/Git/mingw64/ssl/certs/ca-bundle.crtd

2021-10-18 17:47:39 187

原创 golang:使用redigo连接并操作Redis

1、下载安装包执行命令:go get -u github.com/go-redis/redis2、开启服务端监控信息在redis-cli.exe中输入命令:monitor,开启监控127.0.0.1:6379> monitorOK开启监控后,我们的所有操作都会在redis-cli.exe中打印出来。3、go连接Redisimport ( "fmt" "github.com/go-redis/redis")func ConnRedis() { rd :

2021-10-18 16:08:05 1265

原创 golang:使用go-redis连接并操作Redis

连接1、下载安装包目前有两种redis方式支持go操作,一种是go-redis,该方式支持连接哨兵及集群模式的Redis。其包获取命令如下:go get -u github.com/go-redis/redis还有另外一种比较常用的redigo方式,其包获取命令如下: go get -u github.com/garyburd/redigo/redis本文章采用第一种go-redis,若想看第二种redigo方式操作redis可以移步另一篇文章:https://blog.csdn.net/l

2021-10-18 16:07:09 6874 4

原创 golang:自定义栈 并实现表达式的计算

功能介绍表达式可以包含+,-,*,/,(,)五种运算符。若表达式输入错误,则提示错误信息;若表达式无误,则输出正确结果。例如输入43-40*2-(80-3),输出结果-114注意:允许输入多组()嵌套,只要合法即可,如(43-40)*(2-(8+3)),属于合法表达式。栈的定义代码/** * @Author: lena * @Date: 2021/9/23 16:32 * @Description: 用数组实现栈 * @Version: 1.0.0 */package data_

2021-10-16 20:48:33 596

原创 golang使用数组实现 数据结构队列

代码如下:/** * @Author: lena * @Date: 2021/9/23 16:32 * @Description: 用数组实现队列 * @Version: 1.0.0 */package data_structureimport ( "errors")type queue struct { start int end int size int // 数组大小 arr []int // 用数组模拟队列}// 创建

2021-09-23 21:52:52 186

原创 golang打印九九乘法表

代码如下:func Print() { i, j := 1, 1 for j <= 9 { for i <= j { fmt.Printf("%v*%v=%v ", i, j, i*j) i++ } fmt.Printf("\n") j++ i = 1 }}效果如下:1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=91*4=4 2*4=8 3*4=12 4*4=161*5=5 2*5=10 3*5=15 4*5=20 5*5

2021-09-23 21:50:23 194

原创 golang实现一个简单家庭记账软件:登记收入、支出、收支明细

代码如下:/** * @Author: lena * @Description:家庭记账软件 * @Version: 1.0.0 * @Date: 2021/9/15 21:22 */package exerciseimport ( "fmt")type record struct { get bool // 收支 bill int // 收支金额 balance int // 余额 describe string // 说明 tim

2021-09-23 21:49:22 444 1

原创 阿里蚂蚁集团一面:研发工程师JAVA

自我介绍项目遇到印象深刻的问题 问题是自己发现还是解决的Java的StringBuilder和StringBufferjvm垃圾回收算法排序算法有哪些 描述其中一种算法快排最差的时间复杂度是 什么情况下会出现Linux命令 常用的查看CPU使用情况的命令根据PID查询进程情况的命令JVM命令SpringAOP设计模式 用过哪些Bean可以是多例的吗缓存乐观锁 悲观锁Mysql行锁Mysql调优 慢SQL怎么排查处理TCP建立连接docker实习遇到的问题怎么解决当有多

2021-09-23 15:07:42 291

原创 Redis:基础命令

基本使用查看某个关键字的用法:help 关键字127.0.0.1:6379> help set SET key value [EX seconds] [PX milliseconds] [NX|XX] summary: Set the string value of a key since: 1.0.0 group: string127.0.0.1:6379> help lpush LPUSH key value [value ...] summary: Pr

2021-09-17 10:38:31 175

原创 golang:Mysql数据库操作(连接、CRUD、SQL预处理、事务)

1、创建数据库表create table student ( id int NOT NULL AUTO_INCREMENT, name varchar(20), age int)2、添加数据insert into student values(1001,"lena",21),(1002,"titiy",22);3、go get mysql如果是第一次连接mysql数据库,需要先拉取mysql所需要的包go get -u github.com/go-sql-driver/mysql该

2021-09-12 21:46:04 634

原创 go get报错:A connection attemp t failed because the connected party did not properly respond after a p

当我尝试执行go get -u github.com/go-sql-driver/mysql命令获取mysql的时候,报错了。具体错误如下:go get: module github.com/go-sql-driver/mysql: Get "https://proxy.golang.org/github.com/go-sql-driver/mysql/@v/list": dial tcp 172.217.24.17:443: connectex: A connection attempt faile

2021-09-12 19:46:30 72706 3

原创 golang:实现一个简单的日志库 日志信息按日期切割存放在文件中

1、定义日志级别const ( DEBUG=iota TRACE INFO WARNING ERROR FATAL)2、定义log接口// 定义log接口type Log interface { Debug(msg string) TRACE(msg string) INFO(msg string) WARNING(msg string) ERROR(msg string) FATAL(msg string)}输出方式一:将日志记录在控制台实现log接口中的方法

2021-09-07 17:06:44 2739

原创 golang:文件操作

文件相对路径如果想要使用文件相对路径,可以先利用os.Getwd()方法获取当前工作路径。// 获取当前文件路径func Path1() { str, _ := os.Getwd() fmt.Println(str)}获取到当前项目的工作路径后,就可以通过工作路径书写文件相对路径了。例如:我的工作路径是…helloworld,那么下图中的road.go文件的相对路径就是./exercise/file/read.go打开关闭文件方法:func OpenFile(name string,

2021-09-05 22:14:39 399

原创 TCP报文标志位

紧急URG置1,表明紧急指针字段有效,告知系统尽快传送。紧急指针字段用于指出报文段中的紧急数据有多少字节,之后是普通数据。确认ACK置1,表明确认号有效。推送PSH置1,不等到缓存填满才处理,尽快将报文交付到接收应用程序。复位RST置1,表示连接出现严重差错(主机崩溃…),必须释放后重新连接。用于异常的关闭连接,此时不必处理缓冲区的包,也无需用FIN包请求释放连接,直接丢弃缓冲区的包。发送RST包,接收端收到后不必发送ACK确认报文。同步SYN置1,表示当前报文是请求连接的报文。其

2021-09-02 20:53:45 751

原创 TCP四种计时器:重传计时器、坚持计时器、保活计时器、时间等待计时器

重传计时器在TCP发送报文的时候,就会创建特定报文的计时器,时间到仍未收到该报文的确认会重传报文,防止丢失报文段,保证传输可靠。坚持计时器当接收端接收到零窗口通知时,就会启动坚持计时器。接收端每隔一个周期就会发送一个探测报文给发送端,直到窗口重新打开,避免窗口大小更新的报文传送失败造成死锁(接收方等待窗口打开,发送方等待接收数据)一般设置为重传时间的数值。若第一个探测报文发送以后没有收到,则会加倍数值,并发送第二个探测报文…直到达到极限值(一般60s)时间不再加倍,发送直到收到非零窗口。保活计时器

2021-09-02 20:37:00 3101

原创 Golang实现简单学生管理系统:查询、修改、添加、删除学生信息

1、定义学生结构体 student.gotype student struct { id int name string age int}2、定义管理者结构体,其中管理者中存储着所有学生信息type manage struct { // 所有学生信息 students map[int]student}3、管理者应该具有学生信息管理能力:增删改查学生。完整的manage.go如下:type manage struct { // 所有学生信息 students map[int]s

2021-09-02 19:46:43 1138

原创 分金币任务

/** 分金币题目要求 你有50枚金币,需要分配给以下几个人:Matthew,Sarah,Augustus,Heidi,Emilie,Peter,Giana,Adriano,Aaron,Elizabeth 分配规则如下: a. 名字中每包含1个'e'或'E'分1枚金币 b. 名字中每包含1个'i'或'I'分2枚金币 c. 名字中每包含1个'o'或'O'分3枚金币 d: 名字中每包含1个'u'或'U'分4枚金币 写一个程序,计算每个用户分到多少金币,以及最后剩余多少金币? 程序结构如下,请实

2021-09-02 19:39:29 203

原创 多路复用I/O:select、poll、epoll的实现原理,epoll惊群现象

多路复用I/O与客户端建立连接后,内核会为客户端分配一个fd(文件描述符,能标志一个客户端)多路复用IO指内核监控客户端(fd)是否有数据到来,当我们知道有数据到来时,只需要调用多路复用的select/poll/epoll提供系统调用即可,将我们想知道的客户端(fd)传入,内核就会返回哪些客户端的数据准备好了。原先是有几个fd,就进行几次系统调用,一次只能判断一个客户端(fd)是否有数据传输,频繁的从用户态和内核态中切换。现在允许传入多个fd,根据fd进行一次系统调用即可,大大降低了系统的开销。其中

2021-08-30 21:51:55 329

原创 Go Module模式:基本命令、导入第三方库

概述当我们在使用import导入包的时候,无法指定版本号,但我们知道不同版本的包存在大大小小的差异,版本不可控是十分危险的。因此我们需要使用module模式来进行版本控制。使用:需要将代码仓库放到环境变量的GOPATH/src目录外,然后在代码目录下创建一个go.mod文件,然后在代码目录下执行go命令。go mod文件内容module 当前模块名称go 版本号require 所需第三方库go mod命令输入go mod help可以查看到所有go mod命令:以下命令前缀是go m

2021-08-30 20:20:50 2764

原创 Android:加载网络图片

方式:通过引入第三方库:实现网络加载图片API文档:https://github.com/bumptech/glide实现步骤1、在app/buid.gradle下添加内容repositories { mavenCentral()}dependencies { compile 'com.github.bumptech.glide:glide:4.0.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.

2021-08-30 11:17:24 364

原创 Android:动态加载下拉列表

1、创建文件menu/catagory.xml文件文件名可自定义,后续操作保持同样即可。注意:这里的文件中如果添加了<item>,那么可能会出现后期多了一个item<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"></menu>2、初始化菜单项/** * 初始化菜单项

2021-08-30 11:16:20 496

原创 Android:实现文字跑马灯效果

在activity的xml文件中的<TextView>标签中设置以下属性:设置属性android:singleLine=trueandroid:ellipsize="marquee"循环次数android:marqueeRepeatLimit,当值为“-1”或者“marque_forever”时会一直跑。设置获得焦点状态android:focusable="true"和android:focusableInTouchMode="true"...

2021-08-30 11:10:26 475

原创 Android Studio:向虚拟机相册中添加图片

1、直接鼠标拉动图片到虚拟机中然后查看相册是否显示,如果显示,则无需查看后续操作。如果没有显示,打开手机download文件夹,会发现图片就在该文件夹下面,向下继续操作。2、弹出sd卡(设置>存储>sd卡)3、重新装载(Mount)4、重启虚拟机后刷新相册,即可看到图片...

2021-08-30 11:01:17 7777

原创 地址转换技术 NAT

概述为了解决IPv4地址不足的问题,提出了私有地址,而私有地址只能在内部网络内使用,当要与外界进行通信的时候,需要转换为公有IP。NAT技术的作用:将私有地址转换成公网地址。专业术语内部本地网络:连接到属于私有路由器接口的网络。对内部网络中主机发送到外部的分组,必须对私有IP地址进行转换。外部全局网络:与外部路由器相连的网络,无法识别私有IP地址。内部本地地址:私有IP地址,仅在内部网络内有效。这类IP地址离开内部本地网路前,必须转换成公有IP。内部全局地址:外部网络看到的内部主机IP

2021-08-29 16:20:08 1543

原创 golang:协程goroutine、管道通信channel

协程原先使用的进程线程,在进行切换的时候都要切换到内核态:在进程控制块PCB中保存中断现场,然后再将CPU恢复到下一个进程的现场。使用协程,可以将中断现场信息保存在用户空间,对内核来说是透明的。在切换协程的时候无需切换到内核态,大大地减少了开销。如下图,协程和线程是M:N的关系,效率高与否具体取决于协程调度器的调度。GMPG:表示goroutine协程。M:表示thread线程。P:表示processor处理器。当创建新的协程的时候,优先将其加入某一个processor处理器的本地队列,若

2021-08-27 23:16:54 595

原创 进程和线程的比较

进程线程调度的基本单位传统OS未引入线程的时候,进程作为独立调度和分派的基本单位,因此进程是能独立运行的基本单位。每次被调度的时候,都需要进行上下文切换,开销较大。在引入线程的OS中,已把线程作为调度和分派的基本单位,因而线程是能独立运行的基本单位。当线程切换时,仅需保存和设置少量寄存器内容,切换代价远低于进程。在同一进程中,线程的切换不会引起进程的切换,但不同进程中的线程切换,必然会引起进程切换。并发性不同进程间可以并发一个进程中的多个线程、不同进程的线程均可并发...

2021-08-26 15:33:19 137

原创 操作系统之进程通信:高级通信机制四大类

概述进程通信是指进程之间的信息交换。在进程同步之中,也需要进程间交换一些信息,所以也可以归入进程通信中,但只能称为低级的进程通信。因为进程同步间的消息交换效率低、对用户不透明。在进程间要传送大量数据的时候,可以使用OS提供的高级通信工具,该工具的最主要特点是:使用方便、高效。进程通信的类型目前,高级通信机制可归结为四大类:共享存储器系统、管道通信系统、消息传递系统以及客户机-服务器系统。共享存储器系统在共享存储器系统中,相互通信的进程共享某些数据结构或共享存储区,进程间能够通过这些空间进行通信

2021-08-25 22:18:58 8357

原创 golang:基础语法学习

包名每个go文件第一句是包名 package 包名若想要当前main作为项目的入口,则包名必须为main,即package main导包使用import "包名"// 导一个包import "fmt"// 导多个包 方式一import( "fmt" "time")// 导多个包 方式二import "fmt"import "time"注意:导入的包必须要在程序中使用,如果没有用到则会报错。声明变量单变量声明以下是四种方式定义变量,使用var定义。import "f

2021-08-24 14:08:38 357

原创 IPv4地址:编址方式的历史发展

1.分类编址

2021-08-23 13:45:05 1123

原创 初识 Golang

概述优点缺点Helloworld

2021-08-23 10:25:37 4265

空空如也

空空如也

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

TA关注的人

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