阅读视图

发现新文章,点击刷新页面。
🔲 ☆

sqlite详细介绍

SQLite 是一个 轻量级、零配置、嵌入式的关系型数据库。它非常小巧但功能完整,被广泛用于移动端、桌面应用、嵌入式设备、浏览器、IoT、服务器软件等各种场景。

下面用简单清晰的方式介绍 SQLite。


SQLite 是什么?

SQLite 是一个 基于文件 的关系型数据库系统:

  • 不需要安装服务器

  • 所有数据都保存在一个普通文件中(.db / .sqlite)

  • 支持标准 SQL 语法

  • 线程安全、高性能、跨平台

  • 程序可以直接嵌入 SQLite 引擎,无需网络通信

它不像 MySQLPostgreSQL 那样是“守护进程型数据库”,而更像一个“数据库文件 + 操作库”,非常轻量。


SQLite 的特点(为什么这么流行)

1. 零配置,开箱即用

无需安装、无需启动服务、无需管理权限,复制数据库文件即可使用。

2. 单个文件保存所有数据

你可以简单地把数据库文件:…

The post sqlite详细介绍 first appeared on Lenix Blog.

🔲 ⭐

大语言模型中,role为user、assistant、system有什么区别

大语言模型中,role为user、assistant、system有什么区别

聊天模型中不同角色(role)的主要区别:

1. System role (系统角色)
- 用于设定AI助手的基础行为准则、个性特征和能力范围
- 类似于给AI助手的"说明书"或"操作手册"
- 通常在对话开始前设置,对整个对话过程都有效
- 系统角色的内容通常不会直接与用户互动,但会对对话的走向产生间接影响,比如指定助理的语气、知识范围、以及对用户的帮助方式
- 用户一般看不到system prompt的内容
- 例如:"你是一个专业的Python编程助手,需要用通俗易懂的方式回答问题"

2. User role (用户角色)
- 代表与AI对话的人类用户,通常是向模型提问、提出需求或请求信息的用户。
- 负责提出问题、要求或任务
- 引导对话的方向
- 用户的发言构成了模型接收到的输入,模型根据用户的发言生成相应的回复
- 例如:"请解释一下Python中的装饰器是什么?"

3. Assistant role (助手角色)
- AI助手的回应角色,这个角色代表模型本身,即用于为用户提供信息、回答问题或完成用户请求的助手。
- …

The post 大语言模型中,role为user、assistant、system有什么区别 first appeared on Lenix Blog.

🔲 ⭐

ai大模型对话的历史数量多少最合适

ai大模型对话的历史数量多少最合适

让我从实践角度来分析对话历史长度的合适选择:

简短回答:通常建议保持3-5轮对话历史最为合适,这能在上下文理解和系统资源消耗之间取得较好平衡。

具体分析:

1. 优点方面:
- 保持较短对话历史(3-5轮)能确保模型响应速度快
- 减少token消耗,降低使用成本
- 避免历史信息干扰当前对话重点

2. 缺点方面:
- 太短的历史可能导致上下文理解不足
- 太长的历史会增加响应延迟
- 过多历史会占用更多计算资源

3. 具体建议:
- 日常闲聊:2-3轮历史足够
- 专业讨论:可以保持4-5轮
- 复杂任务:根据需要可以适当增加到6-8轮
- 超过10轮建议开启新对话

 

The post ai大模型对话的历史数量多少最合适 first appeared on Lenix Blog.

🔲 ⭐

Alibaba Cloud Linux 3 yum 安装 PHP8.1

一、安装源

rpm -ivh --nodeps https://rpms.remirepo.net/enterprise/remi-release-8.rpm
sed -i 's/PLATFORM_ID="platform:al8"/PLATFORM_ID="platform:el8"/g' /etc/os-release
## 安装 PHP8.1 
sed -i 's/PLATFORM_ID="platform:el8"/PLATFORM_ID="platform:al8"/g' /etc/os-release

二、安装 PHP8.1

yum install -y php81-php-fpm php81-php-cli php81-php-bcmath php81-php-gd php81-php-json php81-php-mbstring php81-php-mcrypt php81-php-mysqlnd php81-php-opcache php81-php-pdo php81-php-pecl-crypto php81-php-pecl-mcrypt php81-php-pecl-geoip php81-php-recode php81-php-snmp php81-php-soap php81-php-xml php81-php-pecl-redis php81-php-pecl-apcu 

The post Alibaba Cloud Linux 3 yum 安装 PHP8.1 first appeared on Lenix Blog.

🔲 ⭐

nginx 用try_files 时,gzip_static不起作用,如何解决

nginx 用try_files 时,gzip_static不起作用,如何解决

当使用try_files指令时,gzip_static指令可能不会起作用的原因是,try_files指令会绕过gzip_static的处理。为了解决这个问题,您可以尝试以下两种方法:

使用if指令:
在try_files指令之前添加一个if指令,用于检查请求的文件是否存在。如果存在,可以手动添加.gz扩展名,并使用gzip_static指令来处理:

location / {
if (-f $request_filename.gz) {
add_header Content-Encoding gzip;
rewrite ^(.*)$ $1.gz break;
}
try_files $uri $uri/ =404;
}
这样,当请求的文件存在并且有对应的.gz压缩文件时,gzip_static指令将会生效。

使用map指令:
可以使用map指令来创建一个映射,将请求的文件名与对应的.gz文件名关联起来,并在try_files指令中使用该映射进行处理:

map $uri $gzip_file {
default "";
~^(?<path>.+)\.(?<ext>[^.]+)$ $path.$ext.gz;
}

server {…

The post nginx 用try_files 时,gzip_static不起作用,如何解决 first appeared on Lenix Blog.

🔲 ⭐

简单一招竟把 nginx 服务器性能提升 50 倍

需求背景

接到重点业务需求要分轮次展示数据,预估最高承接 9w 的 QPS,作为后端工程师下意识的就是把接口写好,分级缓存、机器扩容、线程拉满等等一系列连招准备,再因为数据更新频次两只手都数得过来,我们采取了最稳妥的处理方式,直接生成静态文件拿 CDN 抗量

架构流程大致如下所示:

数据更新后会重新生成新一轮次的文件,刷新 CDN 的时候会触发大量回源请求,应用服务器极端情况得 hold 住这 9w 的 QPS

第一次压测

双机房一共 40 台 4C 的机器,25KB 数据文件,5w 的 QPS 直接把 CPU 打到 90%

这明显不符合业务需求啊,咋办?先无脑加机器试试呗

就在这时测试同学反馈压测的数据不对,最后一轮文件最大会有 125KB,雪上加霜

于是乎文件替换,机器数量整体翻一倍扩到 80 台,服务端 CPU 依然是瓶颈,QPS 加不上去了

到底是哪里在消耗 CPU …

The post 简单一招竟把 nginx 服务器性能提升 50 倍 first appeared on Lenix Blog.

🔲 ☆

Chrome 浏览器禁用三方 Cookies,今天已经开始全球 1% 的灰度,这个问题也折腾了我好几天,踩到一些坑

Chrome 浏览器禁用三方 Cookies,今天已经开始全球 1% 的灰度,这个问题也折腾了我好几天,踩到一些坑。

1)禁用三方 Cookies 是 Google 搞的 Privacy-Sandbox 项目的子项,最主要的目的是为了保护用户的在线隐私,但从厂商角度来看,这也是 Google 对数字广告业的一次主动出击,未来广告主推送广告的精准度将更大程度依赖 Google 系统或平台提供的能力;对应的,苹果在 iOS 14 也推出了 App Tracking Transparency(ATT)技术,目的也是为了提高用户隐私透明度,看资讯说这项技术让 Facebook 损失了 100 亿美元的广告收入,而苹果自身却没有受到此规则的限制。

2)禁用三方 Cookies,类似的还有禁用三方 Storage,这意味着未来跨站点的用户隐私信息收集将被强约束,例如 A 网站嵌入了 B 网站的内容,用户在 B 网站中储存的所有信息,包括 Cookies、LocalStorage、Cache 等等一大堆的东西,在 A 网站下默认都不允许使用(因为这些储存是根据域名分区的),这也会带来一些负面问题,假设你的网站(如文档类、流程图工具、代码演示工具等)大量被人内嵌,同时要求登录才能被使用,那意味着用户需要在每个内嵌你网站的地方重新登陆一次才能正常使用。

3)为了实现跨域数据交互,最通用的做法是在 …

The post Chrome 浏览器禁用三方 Cookies,今天已经开始全球 1% 的灰度,这个问题也折腾了我好几天,踩到一些坑 first appeared on Lenix Blog.

🔲 ⭐

ubuntu22.04安装 Fcitx5输入法,并解决 chrome启用wayland后无法输入中文问题。

一。chrome启用wayland:

地址栏输入:chrome://flags/ ,搜索Preferred Ozone platform,把Preferred Ozone platform,设置为wayland.

二。安装Fcitx5输入法.

sudo apt-get install fcitx5 fcitx5-frontend-gtk4 fcitx5-frontend-qt5 fcitx5-frontend-gtk2 fcitx5-frontend-gtk3 fcitx5-pinyin fcitx5-chinese-addons fcitx5-chewing fcitx5-module-lua fcitx5-module-lua-common fcitx5-modules unicode-cldr-core

三。安装中文词库

GitHub 打开维基百科中文拼音词库的 Releases 界面,下载最新版的 .dict 文件。按照 README 的指导,将其复制到 ~/.local/share/fcitx5/pinyin/dictionaries/ 文件夹下即可。

# 下载词库文件
wget

The post ubuntu22.04安装 Fcitx5输入法,并解决 chrome启用wayland后无法输入中文问题。 first appeared on Lenix Blog.

🔲 ⭐

网站引入第三方公共cdn脚本导致访问慢的问题.

有些网站引用了许多第3方静态文件:

如:以下域名的

cdn.jsdelivr.net

https://cdnjs.cloudflare.com/

https://unpkg.com/

ajax.googleapis.com
cdn.bootcss.com(此条,现在没问题,用了cdn,访问还是快的)

https://code.jquery.com

bootstrapcdn.com (maxcdn.bootstrapcdn.com)

 

有些是国外的,访问非常慢,甚至无法访问.

最好的方法就是下载到你网站.不要引用这些域名的内容.

从而解决网站访问慢的问题.

 

 

参考
https://github.com/justjavac/ReplaceGoogleCDN

The post 网站引入第三方公共cdn脚本导致访问慢的问题. first appeared on Lenix Blog.

🔲 ⭐

迅睿CMS解决伪静态栏目页与内容页网址加url参数时 会返回404的问题

url加参数时404问题.

如下:

http://www.domain.com/hulianwang/ 这个栏目网址,如果加参数如

http://www.domain.com/hulianwang/?ref=xxxxxx

则报404找不到网页错误.

这个是不合理的.

我是伪静态

,我尝试在config/rewrite.php中加入

"([A-za-z0-9 \-\_]+)(.*)" => "index.php?c=category&dir=$1", //【带栏目路径】模块栏目列表({dirname})

上面一行,比官方的多了一个(.*),但不成功!!!!

我深入研究源码,在

/dayrui/Fcms/Init.php中的第382行,

if ($key == CMSURI || preg_match('/^'.$key.'$/U', CMSURI, $match)) {

去掉/U参数,就可以了

如下:

if ($key == CMSURI || preg_match('/^'.$key.'$/', CMSURI, $match)) {

不知这样改会影响其它地方访问吗?

目前测试了一些页,没问题.…

The post 迅睿CMS解决伪静态栏目页与内容页网址加url参数时 会返回404的问题 first appeared on Lenix Blog.

🔲 ⭐

2023 年 12 月 TIOBE 编程语言排行榜

12 月头条新闻:C# 有望成为 2023 年编程语言

是的,我知道,我们以前来过这里。到 2022 年底,C# 似乎将成为当年的编程语言。但最后时刻,C++出人意料地夺得了冠军。今年,我们更加确信 C# 将获胜。它在一年内上涨了 +2.38%,而其最接近的竞争者 Fortran 和 F# 仅分别上涨了 +0.64% 和 +0.48%。排名前 20 的语言中的大多数在 2023 年失去了流行度,这可能看起来有点奇怪。那么发生了什么?答案就在于所有小语言所在的长尾。这些都在进步一点,并且越来越接近大语言。为了说明这一点:一年前,排名第 50 的语言的得分为 0.14%。目前排名第 50 的语言得分为 0.24%。不管怎样,我们都很好奇哪种语言会成为年度编程语言!——TIOBE Software 首席执行官 Paul Jansen

2023 年 12 月 2022 年 12

The post 2023 年 12 月 TIOBE 编程语言排行榜 first appeared on Lenix Blog.

🔲 ⭐

用法介绍JavaScript中获取年份的几种方法

在JavaScript中,获取当前年份是比较常见的需求之一。在本文中,我们将详细探讨JavaScript中获取年份的几种方法。

一、获取当前年份

我们可以使用JavaScript中的Date对象来获取当前的年份:

var date = new Date();
var year = date.getFullYear();
console.log(year);

这段代码将打印出当前年份。

我们也可以使用字符串的方式获取当前年份:

var year = new Date().toDateString().split(' ')[3];
console.log(year);

这段代码将打印出当前年份。

二、获取特定年份

如果我们想获取特定年份的信息,我们可以创建一个指定日期的Date对象,然后获取该对象的年份:

var date = new Date('2021-01-01');
var year = date.getFullYear();
console.log(year);

这段代码将打印出2021。

三、获取用户输入的年份

如果我们需要获取用户输入的年份,我们可以使用JavaScript的prompt方法:

var year 

The post 用法介绍JavaScript中获取年份的几种方法 first appeared on Lenix Blog.

🔲 ☆

flutter是什么?

Flutter 是Google创建的开源 UI 软件开发工具包。它用于从单个代码库为任何Web浏览器开发跨平台应用程序,[4] Fuchsia、Android、iOS、Linux、macOS和Windows。[5]首次描述于 2015 年,[6] [7] Flutter 于 2017 年 5 月发布。[1]

历史
Flutter 的第一个版本被称为“Sky” [8],运行在Android 操作系统上。它在 2015 年Dart开发者峰会[9]上亮相,明确表示能够以每秒120 帧的速度进行一致渲染。[10] 2018 年 9 月在上海举行的Google 开发者日主题演讲期间,Google 宣布了 Flutter Release Preview 2,这是 Flutter 1.0 之前的最后一个主要版本。2018年12月4日,Flutter 1.0在Flutter Live活动上发布,标志着该框架的第一个稳定版本。2019年12月11日,Flutter 1.12在Flutter …

The post flutter是什么? first appeared on Lenix Blog.

🔲 ⭐

html to image 把html转换为图片

html to image 把html转换为图片
<div class="login-box" id="loginbox" style="width: 500px;">
要显示的内容
</div>
<script src="https://html2canvas.hertzen.com/dist/html2canvas.js"></script>
<script>
$(document).ready(function () {
setTimeout(function(){
downloadImage();
},1000)
});
functiondownloadImage(){
html2canvas(document.querySelector("#loginbox")).then(canvas=> {
a = document.createElement('a');
document.body.appendChild(a);
a.download = "test.png";
a.href = canvas.toDataURL();
a.click();
});
}
</script>

The post html to image 把html转换为图片 first appeared on Lenix Blog.

🔲 ⭐

2024年的后端和Web开发趋势

在本文中,我们将揭示定义 2024 年的主要趋势,为你提供保持领先地位的工具和知识。无论你是经验丰富的开发人员,还是寻求推动创新的产品负责人,这都是你的成功路线图。

不断变化的数字创新格局可能让人感觉像是一场无情的竞赛。作为开发人员,你的痛苦是真实的——交付尖端产品、保持竞争力、跟上不断变化的用户期望,综合起来你的压力可能是压倒性的。

但是,如果我们告诉你有一个指南针可以驾驭这个复杂的形势呢?

在本文中,我们将揭示定义 2024 年的主要趋势,为你提供保持领先地位的工具和知识。无论你是经验丰富的开发人员,还是寻求推动创新的产品负责人,这都是你的成功路线图。

1、人工智能和机器学习集成

人工智能和机器学习不再是学术概念,而是开发人员武器库中的强大工具。在后端开发中,它们在自动化任务、分析大量数据集和做出数据驱动的决策方面发挥着关键作用。以下是你如何利用它们来发挥自己的优势:

  • 代码生成:你可以生成代码片段甚至完整的块,从而节省时间并减少人为错误的机会。看看ChatGPT等工具:它们根据自然语言描述编写代码。
  • 安全性和代码质量改进:使用基于 AI 的代码审查工具分析代码库并识别潜在的 bug、安全漏洞和质量问题。例如,DeepCode 和 CodeClimate 可帮助开发人员编写更安全的代码。
  • 个性化:借助人工智能,你可以分析用户行为和偏好,以提供量身定制的内容和产品推荐。这样,你的 Web 和移动应用程序就会获得更高的用户参与度和留存率。
  • 预测分析:使用机器学习模型,可以预测用户操作。因此,你可以制定预防措施来解决可能出现的问题。
  • 推荐引擎:人工智能驱动的推荐系统根据客户的偏好和行为向客户推荐产品、服务或内容。利用这一趋势来提高用户参与度和转化率。
  • 聊天机器人和虚拟助手:要提升你的客户服务水平,请将 AI 驱动的聊天机器人集成到你的应用程序或网站中。他们可以处理客户查询,提供 24/7 全天候即时支持。

2、无服务器架构

无服务器架构是 Web 开发的一种趋势,将在 2024 年继续扩展。它通常被称为功能即服务 (FaaS),它消除了开发人员管理服务器的需要。相反,你可以专注于编写代码和部署函数,从而增强可扩展性和成本效益。

无服务器方法允许程序在基于云的服务器上运行。因此,你无需担心服务器可用性、容量或基础架构管理。AWS、Microsoft Azure Functions、Google Cloud Functions …

The post 2024年的后端和Web开发趋势 first appeared on Lenix Blog.

🔲 ⭐

《高并发的哲学原理》开源图书

https://github.com/johnlui/PPHC

 

阅读地址:https://pphc.lvwenhan.com

pdf 下载链接在网站右上角。

写作目标

本书的目标是在作者有限的认知范围内,讨论一下高并发问题背后隐藏的一个哲学原理——找出单点,进行拆分。

内容梗概

我们将从动静分离讲起,一步步深入 ApacheNginx、epoll、虚拟机、k8s、异步非阻塞、协程、应用网关、L4/L7 负载均衡器、路由器(网关)、交换机、LVS、软件定义网络(SDN)、Keepalived、DPDK、ECMP、全冗余架构、用户态网卡、集中式存储、分布式存储、PCIe 5.0、全村的希望 CXL、InnoDB 三级索引、内存缓存、KV 数据库、列存储、内存数据库、Shared-Nothing、计算存储分离、Paxos、微服务架构、削峰、基于地理位置拆分、高可用等等等等。并最终基于地球和人类社会的基本属性,设计出可以服务地球全体人类的高并发架构。

全书共有 12 章,83 篇文章,总计 167547 字。

The post 《高并发的哲学原理》开源图书 first appeared on Lenix Blog.

🔲 ⭐

Maven详细简介

1.maven简介
1.1 简介
        maven 最主要体现在两个词上:项目和管理。maven给我们整个开发团队找出了一种能够更加科学的去管理我们项目的思想。maven通过使用配置文件的方式使得项目在管理和交接的过程中成本变得非常低。maven提出了一种叫做maven仓库的概念,使得我们可以将第三方和我们需要引用的项目都放置在maven仓库当中。如果其他人或项目组也需要使用,就可以直接通过maven进行配置就行。这样就可以将人员成本、沟通成本等等都进行降低。
        如果还不理解我们举个例子:加入我们现在想做一份菜:糖醋排骨。如果我们想要做这道菜,那么我们首先要先去菜市场买排骨、糖、醋、......,而且在做的时候还要注意使用糖醋的用量等等。那么如果有一个超市,该超市有卖糖醋排骨的料理包,这是不是就能很大的节省我们做饭和买菜的时间开销。其实maven就是这个卖料理包的超市,当人卖的不是料理包,而是一系列的jar包。这样我们在写代码的时候就不需要去其他网站上下载一大堆的jar包。
1.2 项目构建
       不知道大家有没有意识到,构建(build)是每一个程序员都在做的工作。仔细观察我们会发现,除了编写代码,我们每天都有相当一部分时间花在了编译,运行单元测试,生成文档、打包和部署等繁琐和不起眼的工作上,这就是构建。如果我们现在还是手工的做这些事情,那么时间成本就太高了,于是有人用软件的方法让这一系列工作完全自动化。是软件构建完全像流水线一样,只需要一条简单的命令,所有繁琐的步骤就能很快的自动完成。
1.3 项目构建工具
Ant构建
       最早的构建工具,基于IDE,大概是2000年有的,当时最流行的java构建工具,不过他的xml脚本编写风格让xml文件特别大。对工程构建过程中的过程控制的特别好。
Maven [ java ]
        Maven是一个项目管理和整合工具。Maven为开发者提供了一整套完整的生命周期框架。开发团队几乎不用花多长时间就能够自动完成工程的基础构建配置。他填补了Ant的缺点,Maven第一次支持了从网上下载的功能,仍然采用xml作为配置文件格式Maven专注的是项目依赖,使用java编写。
Gradle
       属于结合以上两个的优势,他继承了Ant的灵活和Maven的生命周期管理,他最终被google作为了Android御用管理工具。他最大的区别是不用XML作为配置文件格式,采用了DSL格式,使得脚本更加简洁。
        目前市面上Ant比较老,所以一般是一些比较传统的软件企业公司使用,Maven使用java编写,是当下大多数互联网公司使用的一种构建工具,中文文档也比较齐全,gradle是用groovy编写,目前比较新的构建工具一些初创互联网公司会使用,以后会有很大的使用空间。
1.4 Maven的四大特征
1.4.1 依赖管理系统
       Maven为java世界引入了一个新的依赖管理系统jar包管理 jar包升级时修改配置文件即可。在java世界中,可以用gropId、artifactId、version组成Coordination(坐标)唯一标识一个依赖。
      任何基于maven构建的项目自身也必须定义这三个属性。
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.5</version>
</dependency>
坐标属性的理解
    Maven坐标为各个组件引入了新秩序,任何一个组件都必须明确定义自己的坐标。
groupId
       定义当前Maven项目隶属的实际项目-公司名称。(jar包所在仓库路径)由于maven中模块的概念,因此一个项目实际往往会被分成多个模块。比如Spring是一个实际的项目,其对应的Maven模块会有很多,比如Spring-croe,spring-webmvc等。
artifactid
       该元素定义实际项目中的Maven模块-项目名称,推荐的做法是使用实际项目名称作为atrifactid的前缀。比如:Spring-bean,Spring-webmvc等。
version

The post Maven详细简介 first appeared on Lenix Blog.

🔲 ⭐

唱衰这么多年,PHP 仍然还是你大爷!

PHP 是个庞然大物。

尽管有人不断宣称 PHP “即将消亡”。

但无法改变的事实是:互联网依然大量依赖 PHP。本文将通过大量的数据和事实告诉你为何 PHP 仍然在统治着互联网,你大爷仍然还是你大爷

统计数据

PHP 仍然是首选编程语言

根据 W3 Techs 对全球前 1000 万个网站使用的编程语言分析,我们可以看到:

  • PHP 占比 77.2%
  • ASP 占比 6.9%
  • Ruby 占比 5.4%

基于 PHP 的内容管理框架

绝大多数公共网站都是通过 PHP 和 CMS 来构建的。根据市场份额,12 大 CMS

The post 唱衰这么多年,PHP 仍然还是你大爷! first appeared on Lenix Blog.

❌