自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

陈戏猿

没有bug的程序就像不加糖的奶茶,是没有灵魂的。

  • 博客(149)
  • 资源 (8)
  • 收藏
  • 关注

原创 Go导入私有仓库

这个问题其实分两种情况来看,如果你自己的仓库是一个“正规”的仓库,使用域名访问,不带端口,通过HTTPS访问,唯一的区别是你的仓库是私有的。最后的最后,如果你使用的是GoLand或者IDEA,这类IDE好像有自己的环境变量机制,直接修改系统环境变量有时候不会生效,你需要在IDE里面设置或者在它的命令行通过。接下来就是比较复杂的情况,比如仓库是非标的,通过IP地址访问,或者需要带端口访问,还有只能通过HTTP访问等。如果你只有某个组下的仓库是私有的,可以通过路径指定,多个域名通过逗号分隔。

2024-04-09 13:59:02 469

原创 Phoenix概念篇

Elixir和Phoenix的作者也是Rails社区的核心开发者,如果是之前接触过Ruby on Rails的开发者,对Phoenix也许不会感到太陌生。笔者没有接触过Ruby on Rails,只能从Go语言的经验和角度出发去对比理解。如果说一开始Phoenix的确脱胎于Rails,经过这么多版本的迭代,加上Elixir的语法特点,Phoenix也一定产生了一些特有的变化。上一期我们学习了Phoenix入门篇,书接上回,这次我们重点介绍下Phoenix框架中的一些概念,并继续探索它的架构设计思想。

2024-03-26 16:58:06 912

原创 Phoenix入门篇

Phoenix是Elixir开发的web框架,采用MVC架构。如果你有其他网络框架(如Ruby on Rails或Django)的开发经验,会对Phoenix的许多组件和概念感到熟悉。Phoenix兼顾了开发效率和运行性能,同时也有一些有趣的新特性,如用于实时通信的channel以及高效的预编译模板。在学习Phoenix之前,需要熟悉Elixir,因为Phoenix项目本身也是一个Elixir应用。本文是Phoenix的入门教程,旨在帮助你快速创建一个Phoenix项目并运行起来。

2024-03-19 11:56:46 923

原创 JumpServer初探

如果刷新无效,可以点击表格中的主机名,这是一个链接,到资产详情页,右边有一个快速更新的模块,分辨点击这两个刷新按钮,看到OK后关掉,再回到资产列表,应该就能看到”可连接“状态变为绿色叉叉,并且服务器信息页成功显示出来了。在”用户“栏选择的是JumpServer的用户,也就是第一步创建的用户,”资产“栏也有系统用户选择,这里选的是第四步创建的用户,然后在资产栏选择运行访问的资产,这样一条授权规则就创建好了,他将JumpServer用户,服务器和服务器账户关联了起来。如果已有资产,可以点击更新设置特权用户。

2023-12-08 17:45:03 144

原创 Unity调用dll踩坑记

刚开始我们认为是dll本身的问题,但是经过测试发现dll本身没有问题,直接通过C#或者python调用dll,返回的内存都是正确的。使用debug库之后,调用dll时,unity直接崩溃,而且是悄无声息的,就这么退出了,不带走一片云彩。debug模式的dll该如何释放内存,目前还没有解决,但是如果不释放,确实会导致内存占用上涨,但好歹在编辑模式下,暂且放过它吧。刚开始确实很正常,直到后来有一次升级了dll,替换了部分依赖的dll,然后就GG了,dll返回的内存和预想不同,某些字节顺序被打乱了。

2023-11-23 21:18:38 792

原创 【Phoenix】请求的生命周期

本文的目的是讨论Phoenix请求的生命周期。我们实战添加两个新的页面,并讨论整个过程是如何串起来的。让我们从添加第一个新页面开始。

2023-11-16 00:48:32 305

原创 【Phoenix】目录结构

phoenix项目基本目录结构。

2023-11-12 20:06:35 377

原创 安卓如何卸载应用

最后再强调一遍,此方式是用来卸载哪些无法通过正常方式卸载的系统应用的,而且不需要获取手机root权限,应该不会有人用这种方式卸载第三方应用吧。查看所有的包名,有些包名是可以大致猜出对应的应用的,毕竟大厂程序员写代码都讲究一个可读性。获取应用包名的方式比较多,这里我只讨论仅使用adb的方式,因为并不像为了这一点小事引入或安装更多东西。回车,然后在手机上打开你想卸载的软件,此时命令行中就会打印出刚才打开的软件的包名。说完了怎么卸载,那么最关键的是如何获取想要卸载的应用的包名呢?回车,退出监视模式,然后再用。

2023-08-09 23:55:45 779

原创 【erlang】并发篇

在之前的中,我们并没有介绍PID这个类型,它和并发息息相关,因此我们在这里来学习它。PID是进程标识符的意思,用来标识一个erlang进程。在所有相连的erlang节点中,PID都是唯一的。但是PID会被复用,当一个进程终止后,它的PID可以被其他进程再次使用。进程ID用尖括号包裹的3个点分十进制表示,每个分量是一个十进制数字,一般x和z都是零,如果是一个远端主机上的进程的话,x就不为0了。通过self/0函数可以获取进程自己的PID,is_pid/1函数可以用来判断一个值是否是PID。

2023-04-15 15:52:33 499 1

原创 rebar3安装-windows篇

已经不难看出它的地位了。rebar官网地址是,上面有安装和使用文档,推荐看一看。rebar3的安装并不像通常的windows程序那样简单直接,所以本文会对rebar的安装做一个介绍。能看到这里我就默认大家都有erlang环境了,所以我们直接进入rebar3的安装。

2023-04-14 21:59:48 929

原创 【erlang】语法篇

要讲清楚erlang的语法,这一章的压力是巨大的,有些遗漏的地方我们会在后面的专题中补充。

2023-03-16 23:55:58 898

原创 Windows上一款特别好用的画图软件

废话不多说,打开windows的应用商店,搜索draw.io,点击获取即可。

2023-03-08 14:27:46 1406

原创 【erlang】入门篇

欢迎入坑erlang,erlang是一种高并发,容错和分布式的函数式编程语言。本文详细介绍了erlang的安装和开发环境,如何使用erlang shell,以及如何运行erlang代码,既可以在erlang shell中运行,也可以在命令行中运行,也可以作为脚本运行。最后是关于erlang中一些语法约定。

2023-03-05 11:25:02 1169

原创 递归与尾递归

栈帧是一个函数一次运行的快照,是函数的内部状态。再多思考一点,如果将函数调用看作一条时间线,先执行的函数是过去,被调用的函数是未来,也就是过去需要用到将来的结果,这显然是不可能的,至少目前我们的物理学还是因果的。所以一般只有函数式编程语言的编译器会去做尾递归优化,然而并不是所有的递归都是天然的尾递归,许多时候需要我们手动消除状态,方式就是把局部变量(状态)变成参数,我称之为状态参数化。注意,尾递归优化需要编译器的支持,我们在这里讨论的是尾递归的本质以及如何把编译器不能优化的递归改写成可以优化的递归。

2023-02-17 12:52:54 440

原创 如何实现RTMP协议

rtmp是Adobe公司出品的流媒体传输协议,它的全称是Real Time Messaging Protocol,是一个实时消息传输协议,学习RTMP一定要抓住 一个关键点:消息。rtmp协议的原文可以在Adobe官网下载,内容十分精简,建议读一读原文。rtmp的核心是消息交换,是一个基于TCP的协议,消息被分成消息块(chunk)使用TCP传输。每个chunk都携带一个id,称为chunk id,接收端根据chunk id将分块重新组装成完整的消息。

2023-02-01 22:18:23 1740 4

原创 【操作系统】模式切换篇

什么是CPU的模式?这和CPU的发展过程有关,最开始CPU是8位的,后来发展到16位,然后是32位,现在是64位,多少多少位指的是寄存器的位宽。CPU能使用的寄存器宽度以及CPU使用的指令等就构成了CPU的模式,比如16位模式和32位模式,注意除了寄存器,不同模式下CPU对指令的解释也是不同的,因此16位模式的程序是不能在32位模式下运行的。为了向后兼容,后来的CPU要能运行在之前CPU的模式下,比如32位CPU也能跑16位模式,这样在之前CPU上编写的程序也能在新CPU上运行。

2022-12-14 21:03:41 1119

原创 【Go】泛型

Go1.17引入了泛型的特性,1.18正式开放泛型,本文介绍了Go语言泛型的基本语法,使用示例,以及简要的实现原理,帮助你了解Go的泛型。

2022-12-09 18:09:16 2161

原创 【操作系统】BIOS篇

在之前的文章中我们说过,BIOS除了开机自检和加载引导扇区之外,还提供了很多有用的中断程序,这些程序是我们在真正启动操作系统之前的阶段和硬件交互的利器。既然叫基本I/O软件,那么我们就来看看其中比较重要的几个I/O功能。

2022-11-12 23:41:26 2860

原创 【操作系统】启动篇

对于编程路上各个阶段的人来说,操作系统无疑都是神秘而富有吸引力的。我们所看到的操作系统就像一座冰山,冰山之下的秘密令人向往而畏惧。不知你是否曾经也幻想过写一个操作系统,却苦于不知如何开始,或者因为畏惧而不敢开始。而我要告诉你的是,从零开始写一个操作系统并不是一件特别难的事情,本系列文章将带你走进操作系统这个神秘的世界。

2022-11-11 18:39:24 1144

原创 Go工作空间

工作空间是Go 1.18新添加的特性,英文名叫`workspace`,同时还有和工作空间相关的命令`go work`。工作空间与Go模块是完全不同的概念。模块是代码组织的一种方式,工作空间本质上是一个目录,它影响的是编译器的工作,只在开发人员的本地发挥作用。工作空间的出现是为了方便多模块开发模式,本文将会介绍任何使用工作空间进行开发。

2022-10-30 23:03:11 2552

原创 LiteIDE主题定制教程【续】

本篇文章是[LiteIDE主题定制教程](https://blog.csdn.net/puss0/article/details/126291630)的续作,之所以会有这篇续作,是因为在写完那篇文章之后,我在使用过程中陆续发现了一些问题,以及一些可以优化的地方,我将这些内容作为补充放到这篇文章里。所有更新都已同步到[Github](https://github.com/DOVECYJ/chen-light),可以直接食用。

2022-10-30 15:47:43 456

原创 车车基础知识扫盲

排量是指发动机。所谓工作容积就是活塞在一个冲程内经过的区域的体积。气缸的总容积减去活塞的工作容积,剩下的就是压缩容积,压缩容积是用来燃烧的。排量的单位是升(L),常见的排量的标识有三种,T,TD和L,比如1.5T,1.5TD或1.5L,有时候L也会省略,写成1.5。只要数字相同,排量就是相同的。T表示发动机带有涡轮增压(Turbo),TD表示双涡轮,L表示自然吸气。在排量相同的情况下,涡轮增压能提供更多的空气,使燃料燃烧更充分,提高发动机功率。

2022-10-15 16:28:24 2697

原创 连通分量(quick-union)

连通域问题的抽象表述是存在N个节点和M条边,被边直接或间接相连的所有节点共同形成一个域,称为连通域。在进行有限次的连接后,需要快速求出连通域的个数,或者判断任意两个节点的连通性。连通域的个数也称为连通分量,该算法也被称为Union-Find。

2022-10-11 17:38:24 6262

原创 渐进式垃圾回收

渐进式GC可以被中断,旨在缩短最大暂停时间。由于可中断,也就可以实现并发GC。三色标记法将对象分为三种颜色,是并发标记的关键,适用于搜索类GC算法。写屏障是渐进式GC能正确标记对象的关键。......

2022-08-16 07:18:21 324

原创 GC标记压缩算法

GC标记压缩算法分为标记和压缩两个阶段。标记阶段从根节点开始标记活动对象,压缩阶段负责移动对象和重写指针。Lisp2算法的压缩阶段依次将活动对象向左移动,"挤出"垃圾,需要遍历3次堆。Two-Finger算法采用了填空法移动对象,要求堆内对象大小相等,需要遍历2次堆。表格算法以对象群为单位移动对象,利用非活动对象记录间隙表格,间隙表格记录了对象群首地址和移动距离,通过移动距离计算出对象新地址,需要遍历2次堆。GC标记压缩都需要3个基本步骤:移动对象,记录新地址,重写指针。......

2022-08-16 07:06:35 578

原创 GC复制算法

GC复制算法将堆均分为A,B两份,GC时将A堆的活动对象复制到B堆,复制过程中完成重写指针和压缩,复制完后将AB角色互换,由于压缩的存在,拥有极高的分配速度。广优的GC复制算法将复制过程搜索活动对象的深度优先遍历换成了广度优先遍历,消除了递归调用栈的消耗。利用To空间作为天然的队列,也不需要消耗额外的内存空间。近似深度优先搜索方法在To空间构造了两个队列,一个页队列,一个页中对象的队列,对两个队列分别广度优先搜索,将具有引用关系的队列尽量安排在同一个页面,在避免递归调用的同时有效利用了局部性原理。.....

2022-08-16 00:23:33 1128

原创 引用计数法

引用计数法记录了每个对象的引用数,并在更新指针时将没有"人气"的对象回收。延迟引用计数法延迟了回收过程,利用ZCT数组记录下"人气"为0的对象,内存不够时再遍历ZCT数组回收垃圾。优化了频繁更新计数器问题。Sticky引用计数法通过减小计数器位宽优化了计数器占用较多内存的问题,但是需要额外处理计数器溢出的对象。1位引用计数法将计数器减小到1比特,并且放到了指针中,彻底解决了计数器占用内存问题,同样也需要额外处理计数器溢出的情况。......

2022-08-15 23:41:07 3251

原创 GC标记清除算法

GC标记清除算法分标记和清除两个阶段。标记阶段从根节点开始为活动对象打上标记,清除阶段遍历堆将非活动对象加入空闲链表。多空闲链表利用数组模拟哈希表加快了分配速度。BiBOP是为了优化碎片化问题。位图标记提高了清除效率,兼容写时复制。延迟清除旨在减少最大暂停时间。......

2022-08-15 21:27:31 1087

原创 LiteIDE主题定制教程

LiteIDE主题定制教程又名LiteIDE折腾记,LiteIDE是一款国产轻量的Go语言IDE,使用Qt开发,由于其内置主题都不好看,所以有了这篇教程,它会教你如何定制出一款自己的主题。本教程包含软件主题定制和代码编辑器主题定制,实现了一款好看的亮色主题,同时根据本教程的方法,你可以自己实现心仪的主题,只要有耐心,从此坐拥千万主题不是梦。.........

2022-08-11 20:08:58 1033

原创 如何写简历

写简历看似简单,细想起来又还是蛮多细节的。有时候看着网上一堆专业人士的建议忽然感觉写简历比找工作还难,让人直呼连简历都这么卷了吗😂。最后希望本文能对你有所帮助,如果有和专业指导意见冲突的地方,果断相信专业人士。想我一个非专业人士,居然敢教大家写简历,真是一个敢教,一个敢看🤣。...

2022-07-29 00:18:02 1324

原创 【Go】内置容器container

Go标准库的包提供了3个包,分别是heap,list,ring,分别实现了堆,链表和环形链表。

2022-07-06 21:15:02 306

原创 如何快速区分Atoi和Itoa

许多语言标准库都会提供字符串和数字互相转换的函数,比如Go语言的的库就提供了和两个函数实现字符串和数字的转换。但是很多人都记不住这两个函数究竟哪个是字符串转数字,哪个是数字转字符串。其实问题的关键在于如何理解这个字母。根据我们的经验,整数一般叫,所以应该是的简写。而字符串一般称为,可是函数名里面却没有这个字符,所以你会感到疑惑。但函数名中的其实是ASCII的首字母,学过编程的人都知道ASCII意为着什么吧,其实代表的就是字符串。所以我们拆开来看其实就是,也就是ASCII(字符串)转(数字);而拆开来看就是,

2022-07-03 21:44:31 295

原创 【Go】如何正确理解error

Go error从诞生之初就招人诟病,人们总是调侃写Go代码有一半都是。但其实大家都没有正确的去理解和看待error这个东西,这也是我写本篇文章的目的。

2022-07-02 17:45:40 997 2

原创 【详解】二分查找

二分查找的思量非常简单,但是要写对也不是件容易事。二分搜索的主要矛盾在于存在重复值的情况,因为这种情况下涉及到查找方向的问题,也既是返回最左边的值的位置,还是最右边的值的位置,还是随便一个值的位置。本文将详细讲解二分查找算法的全部细节,帮你真正理解二分查找算法的精髓,从此告别死记硬背。......

2022-07-02 17:36:16 690

原创 【Go】FLV文件解析(四)

Go语言FLV文件解析最终章,详解FLV video tag基本格式与解码过程。

2022-06-03 19:59:05 526

原创 【Go】FLV文件解析(三)

Go语言解析FLV文件第三期,重点讲述了音频编码相关内容以及音频标签的解码过程。

2022-06-03 15:56:36 477

原创 【Go】FLV文件解析(二)

书接上回,我们继续来解析FLV文件的内容,这次要解析的是元数据Tag的内容,需要注意的是不是每个FLV文件都有这个Tag的。在有些教程中,元数据Tag也被称作Script Tag。在官方文档中其实是称作Data Tag,其中的内容称为ScriptDataObject。不管叫什么,你需要知道的是我们在讨论同一个东西。ScriptDataObject的编码格式是AMF,全称Action Message Format。也是Adobe出品,一共有两个版本,为了区分,将先前的版本称为AMF0,新的版本称为AMF3。.

2022-06-01 13:54:23 899

原创 【Go】FLV文件解析(一)

这是一个系列教程,一是为了解释FLV文件的结构,二是为了练习Go语言,希望大家多多支持。在实战编码之前,我们需要首先了解FLV文件的格式。FLV是adobe出品的视频封装格式,注意它只是封装格式,不是编码格式。做为第一节的内容,我们不会过度深入音视频数据的编码,这部分内容以后会再讲。FLV文件格式FLV文件由FLV Header和FLV Body组成,FLV Body又由许多Tag组成,Tag里面可能是视频、音频或脚本。这里所说的脚本并不是可执行脚本,而是视频的一些元信息。在每一个Tag的前面还有一个

2022-05-31 10:40:09 947 1

原创 Go切片转字符串发生了啥

在Go语言中,字节切片和字符串的转换非常丝滑。但是你有没有想过,在强制类型转换的过程中都发生了什么,有没有内存拷贝?本文将为你解开这两个问题的答案。有没有发生内存拷贝是很容易证明的一件事,我们可以通过下面的代码来证明这一点。func main() { bs := []byte{'h', 'i'} p1 := unsafe.Pointer(&bs) ss := string(bs) p2 := unsafe.Pointer(&ss) fmt.P

2022-05-24 21:05:59 1622

原创 巧用字体图标实现加载效果

在前端开发中,如果想要实现简单的爱的魔力转圈圈似的加载效果,可以试试一款叫做奥森图标的字体来实现。官网:https://www.thinkcmf.com/font_awesome.htmlfa-spin类可以加旋转特效。fa-nx类可以加放大特效,其中n可以是2,3,4,5.fa-pulse类可以实现8步旋转,效果上就是不那么丝滑了。加载中示例:<i class="fa fa-spinner fa-spin fa-3x fa-fw"></i>卡卡的旋转:<i

2022-05-24 21:00:02 283

adb(免安装).zip

adb命令免安装版本,解压即可使用。

2023-08-09

redis-gui-Setup-1.1.2.exe

一个免费的,有界面的redis客户端

2021-03-28

graSSHopper Setup 1.1.6.exe

一款免费的SSH工具,界面美观,功能丰富。

2021-03-28

Beekeeper-Studio-Setup-1.10.2.exe

一款不错的开源SQL客户端,支持常用数据库和各大平台,界面美观。

2021-03-28

WindowsTerminal配置文档.pdf

WindowsTerminal官方配置文档,安装方式:microsoft Store搜索WindowsTerminal即可下载

2020-11-17

ColorBlack.css

ColoeBlack是一个非常漂亮的Typra黑色主题,由NightYuxl经过了一点自定义,比如不同颜色的标题,行内代码高亮,漂亮的字体等。整个主题只有一个css文件,非常简单,你也可以再进行个性化的修改,不满足于Typora官方主题的可以试试。

2020-05-14

为Windows的右键->新建菜单添加新建Markdown文件选项

在Windows的右键->新建菜单项中添加【新建Markdown文件选项】,前提是已安装Typora编辑器。

2019-12-05

Geany暗黑主题文件

Geany暗黑主题文件,下载后放到Geany安装目录\share\themes\MS-Windows\gtk-2.0\下替换掉原来的gtkrc文件,建议备份原来的文件。

2019-11-09

Geany美化配置文件

Geany配置文件,用于美化你的Geany。解压后替换掉你电脑上C:\Users\用户名\AppData\Roaming下的geany文件夹,重启Geany生效。

2019-11-09

空空如也

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

TA关注的人

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