自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 资源 (6)
  • 收藏
  • 关注

原创 【Python】上下文管理协议__enter__和__exit__函数

原因是__exit__函数没有返回值,在没有返回值的情况下,with...as代码块执行失败后,代码块程序会中断,即剩余代码块程序不会被执行,直接执行__exit__函数,__exit__函数无返回值的情况下会将错误暴露出来,如上执行结果。with方法就是python的非常酷的语句,安全可靠,方便。说明在__exit__函数返回True时,执行with...as代码块发生异常时会包装异常,执行会中断当前with...as语句块,然后执行执行__exit__函数,最后with语句以外的代码。

2024-04-19 23:30:40 602

原创 【Python】虚拟环境包管理

继上一片文章关于Python包管理工具conda使用命令进行整理后,本章节主要补充一下通过python及pip命令进行虚拟环境包管理命令。建议继续使用conda命令,方便快捷。但是通过python venv命令创建的虚拟环境通过conda命令是无法激活的,为了统一我创建虚拟环境统一使用conda命令创建。

2024-04-19 21:58:52 676

原创 【Miniconda】conda创建、查看、删除虚拟环境

我们可以使用jupyter kernelspec list来查看已添加到jupyter notebook的kernel。由于python是不向后兼容的,分开环境可以避免语法版本不一引起的错误,同时这也可以避免工具包安装与调用的混乱。首先通过activate进入想要添加的环境中,然后安装ipykernel,接下来就可以进行添加了。新的开发环境会被默认安装在你conda目录下的envs文件目录下。(1)查看已添加到jupyter notebook的kernel。(2)删除指定的kernel。

2024-04-18 11:49:57 2264

原创 【Go】go mod初始化

这是因为go mod init 初始化项目时,需要定义一个module,我们打开一个 go.mod 文件,就会发现第一行就有如下内容。建议module名称和仓库地址一致。直接手动添加go.mod文件即可。至此go.mod初始化完成。

2024-04-10 22:08:13 441

原创 【Gradle】Maven-Publishing

Gradle publish 和 publishToMavenLocal

2024-01-17 16:38:40 1076

原创 【Java】gRPC与Spring boot继承实现示例

但是这个只是一个普通的Java工程,我们在Java web开发的今天大多数Java程序员都是通过SpringCloud及SpringBoot开启微服务或者单个应用的开发,我们最好通过springboot继承gRPC,这样一个工程既可以支持web开发,也可以支持gRPC协议通信。具体server端实现和client端实现完全可以参考大佬的examples,完全足够让你理解其实现的便捷性,你也可以按照其参考实现,提供maven和gradle两种构建方式。1.rpc-server pom.xml配置如下。

2023-12-12 11:50:25 1377

原创 【Go<—>Java】gRPC测试注意事项

经过排查发现go程序里的student.proto没有定义package ,而Java程序里的student.proto有package定义。修改保持student.proto文件一致,即我文章开始贴的proto文件即可,测试通过。1.package 必须一致,package限制说明你所定义的接口属于那个作用域下的。2.接口名称和方法名称定义签名必须一致,需要维护一套proto文件即可解决此类问题。go程序:student_grpc.pb.go文件里定义常量如下。step2.生成各自的代码程序。

2023-12-07 16:33:34 1186

原创 【JAVA】protobuf在Java中代码测试用例

本次是通过Maven工具构建Java测试工程,需要将原本通过gradle构建的项目需要通过maven构建加入公司代码库,通过Maven构建涉及到接下来要介绍的插件,总是发现pom.xml编译不通过,看到网上都是千篇一律的插件配置,自己就是编译不通过,不知道大家有木有遇到,下面我将调试过程以及解决方案记录如下。1.定义proto文件因为是测试和官网一样,定义一个简单的hello.proto文件2.maven插件配置添加依赖添加插件。

2023-12-06 17:43:47 1289

原创 【Gradle】mac环境安装Gradle及配置

GRADLE_USER_HOME:指定Gradle用户的主目录(如果未设置,则默认为$USER_HOME/.gradle)gradle 默认安装位置。

2023-12-06 11:07:39 11165 2

原创 【GO】protobuf在golang中的测试用例

【Go】protobuf介绍及安装-CSDN博客本节介绍protobuf在gRPC中具体如何使用,并编写测试用例一、Protobuf。

2023-12-01 18:21:32 1357

原创 【Go】protobuf介绍及安装

既然protobuf是跨语言的,gRPC是通过protobuf协议传输的,自然而然gRPC也是跨语言的。说起gRPC还是先聊聊RPC,RPC全称,中文译为远程过程调用。通俗地讲,使用RPC进行通信,调用远程函数就像调用本地函数一样,RPC底层会做好数据的序列化与传输,从而能使我们更轻松地创建分布式应用和服务。而gRPC,则是RPC的一种,它是免费且开源的,由谷歌出品。使用gRPC,我们只需要定义好每个API的Request和Response,剩下的gRPC这个框架会帮我们自动搞定。

2023-12-01 16:14:03 2733

转载 流媒体服务方案

流媒体该用什么方案实施,看到在知乎的分享记录一下。nginx+flv-module参考以下链接。

2023-11-30 16:26:55 87

原创 【Go】EasyJson使用

如果失败,可以将项目克隆到$GOPATH/src/mailru 目录下 并将包名改为easyjson,然后进入easyjson包下的easyjson目录,运行go build 命令,再将生成的二进制文件放到$GOPATH/bin目录下并改名为easyjson。EasyJson是Go语言中对象序列化与反序列化的工具,类似Java中的fastjson和Jackson,能快速对对象进行序列化和反序列化,本次介绍一下使用方法。easyjson需要通过model文件生成对应的序列化和反序列化方法。

2023-11-28 15:26:38 1003

原创 【MOJO】Modular语言安装和测试

Mojo安装与测试

2023-11-24 15:32:21 1985

转载 【Linux】SSH免密登录配置及原理

日常Linux系统维护过程当中经常需要SSH到指定服务器,然后输入密码登录,如果想实现免密登录该如何操作,这里我转载了一位很不错的技术达人博客,用于后期学习。

2023-11-24 14:12:20 464

原创 【GO】项目import第三方的依赖包

本次学习go如果依赖第三方的包,并根据第三方的包提供的接口进行编程,这里需要使用go get命令。命令用于从远程代码仓库(比如 Github )上下载并安装代码包。注意,go get 命令会把当前的代码包下载到 $GOPATH 中的第一个工作区的 src 目录中,并安装。go 1.17之后go get只下载源码,并将依赖添加到go.mod,并不会安装。安装油go install完成。专门用来运行命令源码文件的命令,一般用来运行单个文件主要是用于测试编译。编译某个包或者项目,在当前目录下生成可执行文件。

2023-11-07 22:25:04 1126 2

原创 【Linux】 rpm安装包保存到本地并批量安装

Linux系统的时候大家都有一个烦恼,用yum安装的软件包不知道去哪里了,不像windows那样直观可以将安装包放到一个地方保存起来,接下来为大家介绍yum安装后如果保存rpm包到本地。

2023-10-26 15:46:15 4617

原创 【Linux】ASCII码表-256个

在英语中,用128个符号编码便可以表示所有,但是用来表示其他语言,128个符号是不够的。不同的国家有不同的字母,因此,哪怕它们都使用256个符号的编码方式,代表的字母却不一样。但是不管怎样,所有这些编码方式中,0--127表示的符号是一样的,不一样的只是128--255的这一段。,包括1-31的32个字符,以及第 127 个字符(最后一个字符)都是不可见的(无法显示),但是它们都具有一些特殊功能,所以称为控制字符( Control Character)或者功能码(Function Code)。

2023-10-26 11:11:00 753

原创 【Linux】Centos yum源替换

YUM是基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。CentOS 8操作系统版本结束了生命周期(EOL),Linux社区已不再维护该操作系统版本。建议您切换到Anolis或Alinux。如果您的业务过渡期仍需要使用CentOS 8系统中的一些安装包,请根据下文切换CentOS 8的源。

2023-10-25 18:28:07 476

原创 【GO】GOPATH/GOROOT环境配置

配置go开发环境遇到2个错误这个问题是Go 1.11之后的版本引入了Go模块(Go Modules),Go Modules使用go.mod中标记的软件包的依赖版本。错误原因是找不到go.mod文件,需要通过go mod命令生成go.mod文件为了提高依赖的下载速度,使用了代理执行完成后会在项目名称mycode目录下生成go.mod这个错误原因是开启Go module模块支持后,并不能与$GOPATH共存,所以把项目从$GOPATH中移出或者不要使用Go module模块即可。删除GOPATH配置。

2023-10-24 22:21:49 334

原创 【docker】查看容器日志

大日志文件操作可以结合Linux其他命令检索即可。查看自己的容器ID,通过docker ps命令。2.1 查看指定时间后的日志,只显示最后20行。2.2 查看最近10分钟的日志。2.3 查看某时间段之后的日志。2.4 查看某时间段内的日志。查看容器对应的日志路径。

2023-10-16 18:13:50 4491

原创 【Java】DirectByteBuffer 堆外内存源码解读

通过Full gc操作来触发回收堆外内存,不过我想先说的是堆外内存不会对gc造成什么影响(这里的System.gc除外),但是堆外内存的回收其实依赖于我们的gc机制,首先我们要知道在java层面和我们在堆外分配的这块内存关联的只有与之关联的DirectByteBuffer对象了,它记录了这块内存的基地址以及大小,那么既然和gc也有关,那就是gc能通过操作DirectByteBuffer对象来间接操作对应的堆外内存了。所以在后面打代码中,会进行最多9次尝试,看是否有足够的可用堆外内存来分配堆外内存。

2023-10-09 18:32:41 601

原创 【Java】Unsafe应用解析

最初在看到Java AQS相关代码的时候发现Unsafe在加锁和释放锁时候使用,当时只是看了有这么一个Class,后来在Java并发编程java.util.concurrent包下经常看到,没有做过多深入研究,直到在Netty框架开发中涉及到了堆外内存(DirectoryByteBuffer)发现了Unsafe的奇妙之处,它避开了Java JVM 堆的内存管理,直接申请分配内存空间,不受JVM GC垃圾回收的限制。

2023-10-08 18:30:39 309

原创 【Netty】 ByteBuf的常用API总结

为了提高性能,Netty重新设计了字节缓冲区ByteBuf,类似Java Nio的ByteBuffer,但工作方式略有区别,比后者更加灵活、高效。ByteBuf有几个重要属性:capacity:容量;0:缓冲区开始位置;readIndex:下一个读位置;writeIndex:下一个写位置;一个ByteBuf对象即可像byte数组一样工作,又可以像IO字节流一样工作。当前的可读数据区是[readIndex,writeIndex);可写区是[writeIndex,capacity);

2023-09-27 18:06:36 608

原创 【Netty】ByteToMessageDecoder源码解析

本节我主要分析一下server端解析报文的一个过程,client当然也很重要,尤其在建立TCP连接和关闭连接需要严格控制,否则服务端会发现大量的CLOSE_WAIT(被动关闭连接),甚至大量TIME_WAIT(主动关闭连接),关于这个处理之前的文章有讲解。读了ByteToMessageDecoder的部分源码,以及它的实现JsonObjectDecoder,那么如果我们自己实现一个Decoder该如何实现,这里提供三个思路给大家,有时间再补充代码。累加器的作用是解决tcp数据包中出现半包和粘包问题。

2023-09-26 18:28:43 960

原创 【WebSocket】工具wscat安装和使用

每当后台服务器部署一个websocket服务需要做测试,测试推流可行性时前后端调试不太方便,可以直接通过命令行工具调试:安装wscat即可。4,创建web socket客户端。3,创建websocket服务端。1,首先安装nodejs。5,wscat参数说明。

2023-09-25 17:17:09 2414

原创 【Git】git 分支或指定文件回退到指定版本

git checkout 命令可以将当前分支的 HEAD 指针指向指定的提交,并将工作区的内容替换成指定提交的内容。这种方式比使用 git reset 命令更加安全,因为它不会改变提交历史,而是创建一个新的提交来撤销之前的修改。首先先获取需要回退的文件路径,比较简单的方法就是,在该文件加个细微改动,比如一条无关注释,然后通过。命令可以将当前分支的 HEAD 指针指向指定的提交,从而回退代码到指定版本。git revert 命令可以将指定提交的修改反向应用到当前分支上,相当于。这里有两个参数需要记录下来。

2023-09-21 20:58:25 10606

原创 Linux 应用程序日志查看命令

在工作过程中,需要查看服务端的日志,掌握常用的命令是开发工程师必备的技能,快速的查看到日志,才能精准定位问题所在。需求1.查看日志文件需求主要有以下几个服务启动后跟踪服务日志是否启动正常服务运行过程中查看是否打印具体的日志应用出现故障后通过检索关键字,定位系统问题和故障程序运行过程中出现性能问题需要借助日志排查定位2.查询范围需求从文件头开始检索关键字查询从文件尾部检索关键字查询从关键字检索的上下文查询,比较常用(如,检索发生错误的前后100行日志)命令。

2023-09-20 23:59:00 979

转载 【Java】获取对象内存地址

Java是获取不到对象的地址的,但是你可以获取hashcode,对象的hashcode在某种意义上就相当于对象的地址了,hashCode是用来在散列存储结构中确定对象的存储地址的。System.identityHashCode(Object)方法可以返回对象的内存地址,不管该对象的类是否重写了hashCode()方法。Object的hashCode()默认是返回内存地址的,但是hashCode()可以重写,所以hashCode()不能代表内存地址的不同。

2023-09-20 22:19:03 676

原创 【Java】JDK8 jvm参数配置及说明

jvm8参数配置

2023-09-18 16:00:31 5269

转载 【Java8】jvm 开启GC日志(ParNew+CMS)

ParNew: 230534K->2665K(256256K), 0.0125008 secs] : 本次GC是ParNewGC,230534K->2665K是本次GC前后新生代的实际size,(256256K)是新生代容量,0.0125008 secs大约是本次GC在新生代的耗时,英文原文是"Duration for the collection w/o final cleanup",不太懂啥意思。实际生产上,有时需要分析GC日志,检查GC回收有没有引起过多的系统暂停,特别是full GC。

2023-09-15 16:11:39 1191

原创 linux top命令按内存/CPU排序显示

将KiB转换成GiB展示,按两下大写的E即可(转换成MiB、TiB也是同理)P : 根据CPU使用百分比大小进行排序。l : 切换显示平均负载和启动时间信息。c : 切换显示命令名称和完整命令行。1: 数字“1”显示各个CPU使用情况。T: 根据时间/累计时间进行排序。t: 切换显示进程和CPU状态信息。运行top命令后,输入大写的 M。运行top命令后,输入大写的P。M: 根据驻留内存大小进行排序。按E转换为GiB,如下。m :切换显示内存信息。二、按CPU使用率排序。再按E转为TiB,如下。

2023-09-15 14:34:33 3239

原创 【Git】 git push 提示Not possible to fast-forward,无法提交也无法提交程序

错误内容出现这个错误提示的原因是,你和其他人修改了同一个文件,而且别人比你先提交。所提此时你在本地执行git pull和git push都无法完成。

2023-09-08 16:46:02 715

转载 【Git】pull 分支报错 fatal: Need to specify how to reconcile divergent branches.

test上合并上去的代码将会丢失,等你test分支能成功pull后,需要重新合并(merge)开发分支dev上的代码合并到test上。所以记得保留dev开发分支这个版本的代码再把test回退到上一个版本,等pull成功,再重新在test分支上合并dev分支代码。注意:这种解决方法仅适用于2个分支之间的合并(git merge)操作,比如你是将dev开发分支合并到test分支之前没pull,那这时候test分支需要回退到未合并前的版本。第二种解决方法:回退到合并之前的代码,再进行pull拉取最新代码。

2023-09-08 16:03:18 652

转载 【Git】基础操作教程(开发必知)

一个大项目,会分很多人开发,每个人一个功能,这时候,每个功能作为一个分支,主分支只有目录结构。当所有人将自己负责的功能开发完成的时候,再将所有分支合并到主分支上,形成一个完整的项目。可以克隆别人的 公开 的仓库,也可以克隆自己的仓库。当我们提交到历史区的文件,的版本出bug后,为了不影响之前的功能,就需要先回退到之前的版本。添加到暂存区的文件,会清空工作区和暂存区的文件,相当于回退到当前的commit的版本。相关命令,将工作区的文件提交到暂存群了,可以通过以下命令将文件回退到工作区,也就是为。

2023-09-08 15:11:58 271

原创 Jenkins 执行Docker build错误:Got permission denied while trying to connect to the Docker daemon...

使用jenkins 通过执行docker 构建docker镜像时报错如上,提示没有权限。默认Jenkins执行构建时使用jenkins用户,用户组也是jenkins。可以看到jenkins用户属于用户组jenkins和docker,说明已经成功加入到docker用户组。执行后仍然报错,同样的错误,需要修改/var/run/docker.sock文件的权限。Jenkins服务器安装docker会自动创建docker用户组。3,修改/var/run/docker.sock文件的权限。

2023-09-07 13:25:08 883

转载 linux在shell中日期格式化(时间格式化)

使用方式 : date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]您可以使用它来得到给定的日期究竟是星期几,并得到相对于当前日期的相对日期。$ date -d last-day +%Y%m%d(昨天的日期) 或者:date -d yesterday +%Y%m%d。

2023-09-07 12:24:58 3377

转载 Docker多架构支持-buildx构建多架构镜像

Windows和Mac的桌面版Docker自带buildx命令,但是Linux环境下的Docker需要自行安装buildx (本节课使用的源码。

2023-09-07 12:21:24 197

转载 Linux shell中2>&1的含义解释

Linux shell中2>&1的含义解释

2023-09-01 16:19:16 68

原创 MacOS 根目录下创建/data

MacOS 根目录下创建/data

2023-08-31 15:37:06 1019

图书管理系统 Asp.net

本系统采用Visual Studio 2008 +SqlSerVer2005开发 实现图书管理的所有功能 读者管理 读者信息查询 读者借书历史 读者借阅排行 添加读者 添加图书 图书借阅 图书归还 计费情况 后台管理等...

2012-03-05

asp.net动态验证码

asp.net动态验证码实现了随机验证码以及验证的完整性,提供web开发使用

2011-05-12

datalist分页技术及实现

datalist分页技术及实现,解决了许多,分页难以解决的问题,及更加灵活控制

2011-05-12

C#播放器实现界面及程序

C#播放器实现了播放的循环,各个按钮的事件

2011-05-12

asp.net最新图书管理系统

asp.net最新图书管理系统,实现了书的检索,查询等

2011-05-12

DFA五元组序列生成Form程序

给算法实现了DFA五元组生成的全过程,有意者请参考下载

2011-05-10

空空如也

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

TA关注的人

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