- 博客(53)
- 资源 (4)
- 收藏
- 关注
原创 推荐项目:安企CMS - 一款使用 GoLang 开发的企业内容管理系统
AnqiCMS 支持 Django 模板引擎语法,该语法类似 blade 语法,可以非常容易上手模板制作。网站模式支持 自适应、代码适配、PC+mobile 独立站点 三种模式,根据不用需求,可以选择适合自己的搭配方式来建站。
2024-08-15 11:28:57 409
原创 多语言网站的设计的探索——安企CMS多语言功能的实现记录
通过支持多种多语言实现方式,安企CMS为用户提供了灵活的多语言站点解决方案。无论是路径分段、子域名还是查询参数,用户都可以根据需求选择适合自己的实现方式。同时,文档自动同步与翻译功能的加入,让国际化内容的维护更加高效。未来,安企CMS将持续优化多语言功能,探索更多创新的多语言实现策略。
2024-10-13 17:31:55 819
原创 如何使用滑动窗口限流优化网站性能 —— 安企CMS中的实践
今天早上,我收到了一条客户反馈,说网站打开很卡。我立刻打开服务器进行监控,发现服务器的负载异常高。经过一番排查,我发现在极短的时间内,某个IP以非常规律的频率访问着网站的多个页面。几乎一眼就能看出,网站被恶意的采集工具盯上了。这个IP通过不断请求页面,极大地消耗了服务器资源,导致正常用户无法访问。
2024-09-21 16:50:52 507
原创 挑战亿级数据:安企CMS性能优化的探索之路
在网站发展过程中,内容的体量会随着时间的推移而逐渐庞大。对于安企CMS这样一个内容管理系统来说,随着文章数量的增长,性能问题逐渐凸显。特别是当网站的文章数量达到 100 万篇以上时,网页的打开速度变得极为缓慢。这不仅影响了用户体验,也给服务器带来了沉重的负担。在这篇文章中,我将详细介绍我们在优化安企CMS性能过程中的探索,如何面对分页查询与COUNT查询的挑战,以及最终如何通过多种技术方案的结合,成功解决这些瓶颈。
2024-09-06 17:24:17 1070
原创 给Go+Sciter开发的桌面客户端软件添加系统托盘图标
系统托盘通常位于操作系统任务栏的一侧,用于显示小型应用图标。这些图标为用户提供了程序的运行状态和快捷操作的入口。以上是在Go中实现系统托盘图标的基本步骤。通过systray库,我们可以轻松为桌面应用添加托盘图标和菜单,为用户提供更直观的交互体验。希望在实际的开发中,能帮到你。
2024-08-24 22:40:09 1048 1
原创 Goroutine 使用中你需要知道的那些坑
Goroutine 是 Go 语言中并发编程的核心概念。与传统线程不同,Goroutine 具有轻量级、资源占用少、创建开销低等优点,开发者可以轻松启动成千上万的 Goroutine 来处理并发任务。然而,随着并发场景的复杂性增加,Goroutine 的滥用或误用也会带来诸多问题,这些问题可能难以调试和发现。因此,深入了解 Goroutine 使用中的常见陷阱及其解决方案,对于编写高效、稳定的 Go 代码至关重要。本文将介绍一些使用 Goroutine 时容易遇到的“坑”,以及如何避免这些问题。
2024-08-23 22:35:34 862
原创 我是如何收集全网行业网站的 - Golang 爬虫示例代码
最近发现服务器磁盘快满了,顺手翻了下服务器上的数据库,惊讶地发现有一个之前写的爬虫程序,它生成的数据竟然占了整整200GB的空间!闲来无事,我决定重新查看这段代码,回顾一下当时我是如何编写这个网站爬虫,并整理成这篇文章,分享给大家。这是一款我用 Golang 编写的全网网址采集程序,能够自动爬取和分析互联网上几乎所有能够触及的网站信息。通过它,网站的标题、站点描述、微信号、QQ号、联系电话、运行环境、IP 信息,甚至是网站所使用的框架等都能自动采集和整理。
2024-08-23 17:32:33 956
原创 安企CMS怎么安装到二级目录,安企CMS安装到二级目录教程
默认安企CMS是无法直接安装到网站的二级目录的,安装到二级目录会导致访问不到后台,只能通过主站后台进入。但依然有一些方法可以实现将安企CMS安装到网站的二级目录。
2024-08-22 22:19:34 221
原创 Go开发桌面客户端软件小试:网站Sitemap生成
在前一篇【手把手教你用Go开发客户端软件(使用Go + HTML)】中,我们详细介绍了如何通过Go语言开发一个简单的桌面客户端软件。本次,我们将继续这个系列,使用Go语言结合Sciter的Go绑定库——go-sciter,实战开发一个可以生成网站Sitemap的小工具。Sitemap是指网站地图,主要用于列出网站的所有页面,以便搜索引擎更容易地爬取网站内容。通常情况下,Sitemap文件是一个XML格式的文件,里面包含了网站上所有希望被搜索引擎索引的链接。通过Sitemap,网站管理员可以更好地告知搜索引擎
2024-08-22 22:17:39 1102
原创 用Go实现伪静态URL重写功能
伪静态URL是一种介于动态URL和静态URL之间的解决方案。动态URL通常包含查询参数,如?id=123或?,而静态URL则是固定的文件路径,如或。伪静态URL通过URL重写技术,将原本需要传递参数的动态页面转化为类似静态页面的URL格式,保留了动态页面的功能,却呈现出静态页面的URL形式。SEO优化:更简洁、关键词友好的URL格式有助于提高搜索引擎排名。用户体验提升:更直观的URL结构让用户更容易记住和理解。隐藏技术细节:可以避免泄露网站底层技术实现细节,提升安全性。
2024-08-21 15:55:22 812 1
原创 用GO开发的桌面端软件如何控制只运行一个实例
处理的逻辑二:运行新程序:先读取当前运行的进程的 PID,然后读取用户目录下的临时文件,如果临时文件存在,则解析临时文件的 PID,并检查那个PID是否在运行,如果在运行,则说明程序已经启动,则使用命令退出旧程序。并将当前的PID 写入到临时文件,然后运行程序。处理的逻辑一:保持旧程序运行:先读取当前运行的进程的 PID,然后读取用户目录下的临时文件,如果临时文件存在,则解析临时文件的 PID,并检查那个PID是否在运行,如果在运行,则说明程序已经启动。下面我们就以逻辑二的方式来处理。怎么处理这个问题呢?
2024-08-21 10:43:51 392
原创 Linux 网站服务器的搭建教程
搭建网站服务器的过程涉及多个步骤,包括选择服务器、安装操作系统、配置服务器环境、设置域名等。一般搭建网站,我们都会选择使用Linux服务器。
2024-08-20 22:27:38 1105
原创 手把手教你用Go开发客户端软件(使用Go + HTML)
开发桌面客户端软件一直是程序员的常见任务之一,而Go语言凭借其简洁、高效以及丰富的第三方库,越来越多地被用于开发各类应用程序。今天我们将结合Go语言和HTML,使用开源项目 Sciter 的 Go 绑定库 go-sciter,为大家展示如何用最少的开发精力构建一个跨平台的桌面客户端。什么是Sciter?Sciter 是一个支持多平台的嵌入式HTML/CSS/脚本引擎,适用于构建本地桌面应用程序,且它的性能非常好。通过 go-sciter,我们可以用Go语言来调用Sciter引擎,进而使用HTML、CSS
2024-08-20 22:13:00 1660
原创 网站自动化锚文本的实现逻辑
锚文本,即超链接的文本部分,它在网页中扮演着至关重要的角色。通过点击锚文本,用户可以方便地在网页间进行跳转,从而极大地提升了用户体验。同时,在搜索引擎优化(SEO)领域,锚文本也发挥着不可忽视的作用。搜索引擎会通过分析锚文本的内容,来判断链接页面的主题和相关性,进而影响页面的排名。因此,合理地设置锚文本,对于提升网站的SEO效果具有重要意义。。
2024-08-19 21:26:58 956
原创 支持Markdown编辑器的CMS,安企CMS算一个
有哪些CMS(内容管理系统)支持Markdown编辑器?其它的我不知道,但安企CMS是其中一个。
2024-08-19 09:03:33 180
原创 网站怎么做敏感词过滤,敏感词过滤的思路和实践
敏感词库的构成,一般包含涉及SE情的、涉及政治的、涉及FAN动暴力的、涉及广告法的词汇。根据我们网站的不同定义,可以收集集中一部分获取全部的词汇。一般我们可以从网上下载或手动收集这些词汇。在敏感词库的收集方面,安企CMS设计成了手动收集+系统同步双模式。默认系统没有敏感词,可以选择从官网同步官网预设好的敏感词库,也可以手动添加自定义的敏感词。
2024-08-19 09:00:00 751
原创 安企CMS如何在模板中显示当前时间
要在安企CMS的模板中显示当前时间,可以使用 now 标签。now 标签允许你根据 Go 语言的时间格式化字符串来格式化显示当前时间。。
2024-08-18 22:27:57 227
原创 AnQICMS 安装步骤教程
支持 Windows 7、Windows 8、Windows 10、Windows 11、Windows server 各个版本。Windows XP 未测试支持 Ubuntu、Centos、Red Hat、Debian 等 基于 X86 的 Linux 版本。支持 MacOS。
2022-12-20 21:42:37 680 1
原创 推荐一款免费开源的建站系统 - AnqiCMS
安企内容管理系统(AnqiCMS),是一款使用 GoLang 开发的企业站内容管理系统,它部署简单,软件安全,界面优雅,小巧,执行速度飞快,使用 AnqiCMS 搭建的网站可以防止众多安全问题发生。AnqiCMS 的设计对SEO友好,并且内置了大量企业站常用功能,对网站优化有很好的帮助提升,对企业管理网站一定程度上提供了办事效率,提高企业的竞争力。AnqiCMS 除了适合做企业站,也适合做营销型网站、企业官网、商品展示站点、政府网站、门户网站、个人博客等等各种类型的网站。...
2022-07-08 09:34:29 1513
原创 golang实战开发之博客功能篇:获取路由参数和表单数据读取处理
iris框架的路由功能,支持静态路由和动态路由两种方式。静态路由就是定义的路径是固定的,只有通过固定的路径才能访问到页面内容。动态的路由,顾名思义,就是路径可以动态变化。iris自定义了一些基本的宏,可以动态的解析常用的参数类型,如果常用的宏定义不能满足需求,我们还可以使用自定义函数来完成动态路由的定义。动态路由的定义常用的路由宏定义有:string参数{param:string}这是最基本的定义,定义一个参数,它的类型为string类型。同样地,它还可以简写为{param},即{para
2021-01-24 10:26:37 1320
原创 golang实战开发之基础配置篇:拓展学习:iris框架介绍和使用技巧
Iris 是一款 Go 语言中用来开发 web 应用的框架,该框架支持编写一次并在任何地方以最小的机器功率运行,如 Android、ios、Linux 和 Windows 等。该框架只需要一个可执行的服务就可以在平台上运行了。Iris以简单而强大的api而闻名。 除了Iris为您提供的低级访问权限。 Iris同样擅长MVC。 它是唯一一个拥有MVC架构模式丰富支持的Go Web框架,性能成本接近于零。Iris为您提供构建面向服务的应用程序的结构。 用Iris构建微服务很容易。在 iris 框架的官方网
2021-01-24 10:24:58 1288
原创 golang实战开发之博客功能篇:管理员的登陆和权限控制以及sessions、cookie的使用
前面我们已经初始化博客系统了,接着,我们再做管理员登录和权限控制判断。我们将分别介绍使用sessions、cookie实现登录控制问题。sessions的使用前面我们在中间件环节的时候使用了sessions,并做了简单的介绍。我们这里在详细说明下,sessions如何使用。使用session,需要先引入github.com/kataras/iris/v12/sessions,这是一个sessions管理器。我们需要使用它来存储session数据。下面我们看看它是如何存储session的数据的。我们需
2021-01-24 10:23:27 1065 1
原创 博客功能篇:博客的初始化处理和管理员的账号注册
前面思路篇和基础篇我们已经准备得差不多了,现在开始正式进入到功能实现步骤。第一步,是处理博客初始化工作。这一步我们将完成博客的初始化工作,回写配置信息、注册管理员账号等操作。当我们需要将博客分发和部署到服务器的时候,最好的操作是,运行博客程序后,类似其他cms、WordPress一样,初次访问,会要求输入数据库信息和管理员账号信息,通过简单的配置后,不可就可以开始正常使用了。我们也一样,也在博客开始运行的时候,来配置数据库信息、管理员账号。定义常量在开始初始化之前,我先定义几个常量,在config文
2020-12-28 11:27:04 395
原创 础配置篇:博客404错误拦截与500错误输出
往往,我们的博客并不会包含所有的路由,也就是说,我们只有特定的几个路由,如果用户随便输入了一个路径地址,我们没有控制器来处理,那么程序就会抛出一个404,为了美观,也样式的统一,我们一般需要自定义404页面。这时候,我们就需要从路由中拦截404,然后重新定义404页面了。404错误页面的拦截和重定义我们先在controller文件夹建立一个common.go文件,用来放一些公共的处理函数,如404的控制器,500错误的控制器等。404控制器package controllerimport (
2020-12-20 09:55:02 622 1
原创 基础配置篇:博客模板的格式语法和后端如何传递数据到模板逻辑
前面的章节中,我们选择了使用iris.Django作为我们前端使用的模板引擎,因此我们这里只介绍它的相关语法。iris.Django模板语法和使用iris.Django模板引擎的模板解析器是pongo2,它是一个类似于 Django 模板语法的模板引擎。Django 是一个开放源代码Python编写的Web应用框架。它的模板引擎语法相对简单,清晰,使用起来也非常方便。因此我们就使用它做为我们的博客的前端模板引擎了。模板的嵌套引用往往制作模板的时候,我们会将一些公共部分,比如header、footer
2020-12-12 09:51:29 169
原创 基础配置篇:博客的控制器函数和使用
iris框架的资料,不是太多,可能使用iris框架的人,都是实用主义吧,直接都是看实例来操作了。在这里,我还是要简单说一下,以加深控制器的印象。控制器属于MVC中的C,C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。我们博客中,所有的控制器都存放在controller文件夹中。控制器的使用,需要绑定到路由中。现在我们已经在index.go 中
2020-12-12 09:50:50 179
原创 基础配置篇:博客的iris中间件配置
中间件的意思是,我们运行博客后,用户访问一个链接,程序会最终执行这个链接对应的控制器。在执行控制器里面的代码之前运行的其他代码,我们就叫做中间件。比如常用到的中间件有:authorization权限判断,logger访问日志,cors跨域处理options请求等。这些中间件有做拦截的,有做旁路的等等功能。我们要制作的博客,同样需要使用到中间件功能,我们的博客设计中用到的功能有管理员权限判断、cors判断等。cors跨域处理options请求options叫做预检请求,就是查看是否可以或者允许跨域请求。
2020-12-12 09:50:17 821
原创 基础配置篇:gorm的使用,数据库的连接和配置以及数据库操作
gorm是一个Golang写的,开发人员友好的ORM库。前面配置章节我们已经使用gorm对我们设计的mysql数据库进行了连接。这一节我们再讲讲怎么配置gorm。gorm支持多种数据库连接,目前官方列出来的支持库有:MySQL, PostgreSQL, SQLite, SQL Server 四种数据库连接。在我们要开发的博客网站中,我们选择使用 MySQL 来作为后端数据库。数据库连接连接MySQL数据库,需要引入 gorm 和mysql两个包:import ( "gorm.io/driver/
2020-12-11 09:26:34 10109 2
原创 基础配置篇:数据表和golang结构体关联和映射关系处理
上一节我们介绍了gorm的连接和配置,并且我们也在数据库中创建了 admins、article_data、articles、attachments、categories 五个表。但是我们还没有将它和golang结合在一起,我们的博客网站还不能从数据库读写数据。需要使用gorm来读写数据,我们还需要先给每个表定义一个模型(struct)。前面建立目录的时候,我们已经定义了数据库模型文件存放的目录 为model 文件夹。因此我们在model目录分别按表名称的单数形式创建对应的go文件,并定义对应的模型结构体。
2020-12-11 09:25:22 3247
原创 基础配置篇:扩展模板引擎功能,给模板引擎添加自定义函数
iris内置的模板引擎语言和标签,默认是不支持使用golang的函数的。但有时候,我们又需要在模板中处理一些变量。这个时候我们就需要手动给模板引擎添加自定义函数了。给模板引擎添加自定义函数的方法很简单,先是写好函数,然后将函数添加到模板引擎就可以了。下面我们以给模板添加一个时间格式化函数为例,说明给模板引擎添加函数的方法。我们先在bootstrap.go 中,添加下面的方法:func TimestampToDate(in int64, layout string) string { t := time
2020-12-10 14:48:13 309
原创 基础配置篇:为博客网站项目选择合适的前端模板引擎
对于golang开发网站来说,直接用golang来处理输出内容,很难满足我们多样化的页面效果需求的,因此,我们需要先给我们的博客网站设置一个模板引擎。模板引擎的作用就是让我们可以使用html标记语言来编排我们的页面,包括html、css、js等的运用。我们在Serve 函数中,增加如下代码 pugEngine := iris.Django("./template", ".html") if config.ServerConfig.Env == "development" { //测试环境下动态加
2020-12-10 14:46:56 184
原创 基础配置篇:博客的访问路径路由配置和控制器
上一章节我们提到了路由配置,并且使用匿名函数写了一个Hello World的控制器,直接输出内容。但是在实际的项目的使用中,往往需要更多的路由入口和更自由的控制,也是为了页面逻辑更清晰,让各个go文件做到各司其职,因此我们需要将路由配置独立编写到一个独立的文件中去。独立路由文件下面我们就将路由配置放到前面我们已经创建好的route文件夹中,我们命名一个route.go 文件,并在里面添加内容:package routeimport ( "github.com/kataras/iris/v12"
2020-12-10 14:45:49 327
原创 将WordPress安装在一级目录下的nginx伪静态规则配置方法
现在有部分用户在建站的时候,根目录下已经运行了一份程序代码,并且设置了伪静态。为了增加网站的收录量,还会给网站增加站内站的功能。一般没有开发能力的用户,会选择在一级目录下再按照一个WordPress来作为站内站发一些不太紧要的文章。这里说说如何给安装在一级目录下的WordPress程序设置nginx伪静态规则问题。如果伪静态设置不当的话,会导致网站不能正常打开。要么就是影响到了原来的网站,导致原来网站内页打不开,要么就是影响到了WordPress站点,导致站内站内页打不开,或者设置不当导致内页能打开了,后台
2020-12-10 10:00:39 731
原创 基础配置篇:初次使用golang,创建项目入口,使用iris框架运行项目
每一个项目都需要一个入口,才能让项目运行起来。前面章节我们提到了main目录为入口目录,main()为golang的入口函数。因此,我们在main目录下创建一个main.go文件来作为入口文件,在里面编写main()函数。小试身手package mainimport "fmt"func main() { fmt.Println("Hello World")}这里简单的输出了Hello World到控制台中。我们先试一下运行它,看能不能得到Hello World的结果。运行测试是非常简单
2020-12-09 09:06:44 1140 2
原创 基础配置篇:我的博客项目配置文件数据和配置的读写处理
上一节,我们已经定义和创建了我们需要的目录,和项目初始化。这一节我们就可以开始编写博客配置功能了。上面我们提到,我们的配置处理函数将存放在config目录中。我们的项目还需要配置文件。配置文件我们就命名为config.json。它是一个json文件,里面将包含了博客网站的基本信息、数据库配置信息等。config.json 配置文件为了方便查看和读取config.json,我们将它放在项目的config目录下。它里面将包含的字段信息有:{ "mysql": { "database": "iris
2020-12-09 09:04:44 261
原创 基础配置篇:建立项目,为我的博客项目制定目录层次结构和项目初始化
前期准备、构思已经相对比较完善了,我们在构思章节中,已经明确了我们的需求,知道我们的博客他需要有些什么功能,博客的数据库设计、博客的界面设计等信息。也大致了解到了golang的安装配置、基本语法等。这一节内容中,我们将开始进行我们最重要的一步,开始实战学习golang了。目录结构一个清晰明确的目录结构,可以让项目更清晰,更好维护和扩展。目录结构的组织,也是可以灵活变动的。它本身没有一个严格规定的格式。我们只需要做到合适、合理、清晰就可以。下面是我对博客程序设计的目录结构的设计。目录都采用一级目录形式放
2020-12-09 09:03:31 251
原创 拓展学习-golang的基础语法和常用开发工具
golang的基础语法golang的基础语法和其他语言大部分都差别不大,如果我们有学习过其他语言,比如JavaScript,php,java,python等,有其他语言的语法基础,那么我们学习golang将更容易上手。那我们直接开始介绍golang的语法吧。注释注释分单行注释和多行注释。golang的注释和其他的开发语言的注释是一样的。双斜杠表示单行注释,/**/表示多行注释。// 单行注释这么开头/* 多行注释*/定义包名一般来说,使用开发工具的时候,包名是不需要手动输入的,开发工
2020-12-08 09:20:11 240
原创 我的博客可能需应用到的技术选择和整理
我们后端的主要技术是golang。然而,往往一个系统,都不是仅靠一个技术就能完整的实现的,要不就不用叫做系统了。既然我们是要做博客网站,自然网站的相关技术少不了。下面我们来捋一捋具体需要使用到的哪些技术。htmlHTML称为超文本标记语言,是一种标识性的语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等。就是这个意思,我们的博客需要使用ht
2020-12-08 09:19:16 447
原创 将构思转成计算机可识别的设计,根据构思为我的博客设计数据库
根据前面的构思信息,结合思维导图、设计稿,我们就可以设计数据库了:我们需要创建5张表,分别是:文章表(articles)、文章内容表(article_data)、文章分类表(categories)、文章图片表(attachments)、博客管理员表(admins)。接着给每张表设计需要的字段:文章表articles表结构:CREATE TABLE `articles` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varc
2020-12-08 09:18:22 154
基于安企CMS + Fate 二次开发的起名网程序带功能数据
2024-09-11
大文件分割器,可以将文件按指定大小分割成若干份
2022-09-26
AnqiCMS(安企内容管理系统)免费开源的企业建站CMS-MacOS版
2022-07-08
AnqiCMS(安企内容管理系统)免费开源的企业建站CMS-linux版
2022-07-08
AnqiCMS(安企内容管理系统)免费开源的企业建站CMS-windows版
2022-07-08
全网网址采集器Windows版
2020-07-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人