vite + vue3 多页面实战优化续集:eslint+lint-staged+husky+stylelint
vite + vue3 多页面实战优化续集:eslint+lint-staged+husky+stylelint
目的:项目投入使用发现很多使用起来不舒服的地方,进行优化
注意!!!:最新的一次创建项目运行时候以及配置eslint部分出现了许多问题
,可以结合最新的一篇vite+vue+ssg做官网 再记录一下项目创建结合起来查看是否有你遇到的问题
前提:在上一篇vite + vue3多页面配置记录references,loadEnv等中我详细记录了通过各种配置了解多页面项目。
结果:最终代码放到gitee这里的release分支vite-vue3-multip-release
之前配置不合理的地方:
为了让项目启动的时候自动打开html,修改了项目根目录到views下面root:'./src/views/'
,以至于outDir,windicss也要改。
所有生成的html全部扎堆生成在views下面,结构混乱
未配置eslint,保存自动格式化
未配置代码提交自动跑eslint检测。使用lint-staged + husky
未配置stylelint,规范css书写
未配置快速生成页面脚本:用plop搞个模版生成index.vue和main.ts,可以直接看代码库代码
项目到实践中肯定是不合理的,用起来不舒服。逐步解决上面的问题
第一步:不修改根目录路径;在根目录新建一个html文件夹,并将生成的html放到根目录统一管理,且要支持多级页面
通过上图目录结构可以看到,src/views
下面有多级页面,最后生成到src同级目录下的html文件夹中,且结构与之对应。这样看起来就很舒服,html文件夹中的东西根本不用动,通过脚本,每次dev的时候自动生成
我们看代码实现,主要还是去修改build/getPage.ts
, 利用mkdirp生成多级文件夹
import glob from 'glob'
import fs from 'fs'
import mkdirp from 'mkdirp'
import { resolve } from 'path'
const input = {}
const mainEntry = []
const iconDirs = []
function getPages () {
// 遍历文件夹中含有main.ts的文件夹路径
const allEntry = glob.sync('./src/views/**/main.ts')
// console.log(allEntry)
// console.log('allEntry', allEntry)
// 创建多页面模板
allEntry.forEach((entry: string) => {
const pathArr = entry.split('/')
const tsName = pathArr[pathArr.length - 2]
pathArr.pop()
const targetFilePath = pathArr.splice(3).join('/')
// 创建多级文件夹,去掉最后一个
const mkdirPath = targetFilePath.replace(`/${tsName}`, '')
const srcArr = entry.replace('./', '')
// console.log(targetFilePath, mkdirPath)
// 判断文件是否存在
try {
fs.accessSync(`./html/${targetFilePath}.html`)
} catch (err) {
if (targetFilePath.includes('/')) {
mkdirp(`./html/${mkdirPath}`).then(() => {
generete(targetFilePath, srcArr)
})
} else {
generete(targetFilePath, srcArr)
}
}
const svgPath = srcArr.split('/')
svgPath.splice(svgPath.length - 1, 1)
// input中的配置
input[targetFilePath] = resolve(`html/${targetFilePath}.html`)
// vconsole用
mainEntry.push(resolve(`${srcArr}`))
iconDirs.push(resolve(process.cwd(), `${svgPath.join('/')}/svg`))
})
};
function generete (targetFilePath, srcArr) {
// 获取模板
const temp = fs.readFileSync('./index.html')
// 多级相对路径
let relativeStr = ''
targetFilePath.split('/').forEach(() => {
relativeStr += '../'
})
console.log(`创建${targetFilePath}.html文件`)
const index = temp.toString().indexOf('
')
const content =
temp.toString().slice(0, index) +
`` +
temp.toString().slice(index)
fs.writeFile(`./html/${targetFilePath}.html`, content, err => {
if (err) console.log(err)
})
}
getPages()
// console.log(input, mainEntry, iconDirs)
export { input, mainEntry, iconDirs }
有了以上代码。每次运行都会根据入口main.ts,生成对应的html。但是启动项目怎么直接打开我想要的index.html呢?
server里面有配置,配置open即可。想到当时仅仅为了启动项目打开入口页面就更改root是多么的不理智了
// vite.config.ts
server: {
open: '/html/index.html',
proxy: {
'/api': {
target: 'https://app-api-0.com',
changeOrigin: true
}
}
},
第二步:配置eslint
这个就比较简单了,网上也有很多教程,当走到教程前面几步就可以了。我这里也记录一下
安装eslint npm i eslint -D
初始化配置:npx eslint --init
然后根据提示一步步操作 2.1 选择模式: (To check syntax and find problems) 我选第三个:To check syntax, find problems, and enforce code style
2.2 (选JavaScript modules): 选第一个:JavaScript modules (import/export)
2.3 选择语言框架 (选Vue.js) 2.4 是否使用ts : 我这里选yes 2.5 代码在哪里运行 (用空格选中 Browser+Node) 2.6 选择一个风格:我选的Standard, 完全就够用了 后面就是yes安装,会发现安装了这些插件
"eslint-config-standard": "^17.0.0",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-n": "^15.2.4",
"eslint-plugin-promise": "^6.0.0",
"eslint-plugin-vue": "^9.2.0",
"@typescript-eslint/eslint-plugin": "^5.30.7",
"@typescript-eslint/parser": "^5.30.7",
一些教程里面还单独安装@typescript-eslint/parser,我实践中走完上面就已经全部有了,生成的.eslintrc.js也不需要修改。
只是部分规则不适用vue3,我们可以在rules直接关掉即可:比如 vue/multi-word-component-names, no-irregular-whitespace
3.选择性安装vite-plugin-eslint
, 用于配置vite运行的时候自动检测eslint规范,使用npm run dev时会主动检查代码并报错
npm i -D vite-plugin-eslint
使用
import eslint from 'vite-plugin-eslint'
export default defineConfig({
plugins: [
vue(),
eslint()
]
})
setting.json 需要的内容
// setting.json
{
// 重新设定tabsize
"editor.tabSize": 2,
// 每次保存的时候自动格式化
"editor.formatOnSave": false,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
}
}
这里提一嘴i18n-ally
多语言翻译这个vscode 插件,好用。
// setting.json中加入
{
"i18n-ally.localesPaths": ["src/views/login/lang"],
"i18n-ally.keystyle": "nested",
"i18n-ally.sortKeys": true,
// pathMatcher 必需开启namespace ,{locale}指的就是翻译文件名"i18n-ally.localesPaths",{ext}就是enabledParsers中的文件后缀
"i18n-ally.namespace": true,
"i18n-ally.pathMatcher": "{locale}/{namespaces}.{ext}",
"i18n-ally.enabledParsers": ["js", "json", "ts"],
"i18n-ally.sourceLanguage": "en",
"i18n-ally.displayLanguage": "zh", // 展示中文
"i18n-ally.enabledFrameworks": ["vue", "react"],
}
主要提这个i18n-ally.pathMatcher路径匹配,多份翻译文件,放在在同一个二级文件src/lang/en
,src/lang/zh
夹就能通过它namespaces匹配到且生效
第三步:配置lint-staged + husky。在git commit 的时候对提交文件进行校验
lint-staged工具对暂存的代码进行 lint,通常都是配配合husky使用. husky帮助你在git操作环节执行lint-staged,也就是里面的 eslint --fix
对暂存的src
下面的文件进行eslint校验。 一般我们会看到如下package.json配置
//package.json
{
"lint-staged": {
"src/**/*.{js,jsx,ts,tsx,vue}": [
"eslint --fix" // 仅仅校验修改暂存的文件
// "npm run lint:eslint". 如果要校验所有文件的也可以,除非你想这么做
]
}
}
//"scripts": {
//"lint:eslint": "eslint --cache --max-warnings 0 \"{src,mock}/**/*.{vue,ts,js,tsx}\" --fix",
// }
通过husky安装参考文档可以发现,安装husky有两种方式,结果是一样的
自动方式,只需要执行一句npx husky-init && npm install
npx husky-init && npm install # npm
npx husky-init && yarn # Yarn 1
yarn dlx husky-init --yarn2 && yarn # Yarn 2+
pnpm dlx husky-init && pnpm install # pnpm
执行完后会在package.json/scripts 自动加上"prepare": "husky install"
, 在根目录生成了一个.husky文件夹,里面有个_pre-commit
脚本文件
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
npm test
修改npm test
为自己的脚本命令,比如:npx lint-staged
这里的命令修改就可以自由发挥了,只要能触发package.json中的 lint-staged就成 比如我可以在这里写npm run lint:lint-staged
,那package.json/scripts中有对应的命令"lint:lint-staged": "lint-staged"
即可 tip:不走lint-staged,直接在这里写npm run lint:eslint
也是可以的(lint:eslint
是scripts中的eslint --fix命令)。说明仅仅只安装husky也是可以的,那也就是校验所有文件了。配合lint-staged只校验暂存区文件才是最好的
手动方式,按照顺序多执行几个命令
// 先安装
npm i husky -D.
// 先执行这句才能执行有第四句
npx husky install
// 在package.json/scripts 加上`"prepare": "husky install"`。自己手动去加也行
npm set-script prepare "husky install"
// 这句就是在`_pre-commit`脚本文件加上自己的命令啦
npx husky add .husky/pre-commit "npx lint-staged"
以上就能成功了。
第四步:配置stylelint
vscode 扩展必不可少:
通过stylelint官方文档我们先安装三个插件:我项目用的less,多来一个postcss-less
。如果你用scss,来一个postcss-scss
就好,下面配置一样的
npm i stylelint stylelint-config-standard postcss-less -D
新建文件.stylelintignore
/dist/*
/public/*
public/*
新建.stylelintrc.js
。stylelint默认只能识别css文件,我项目使用的less,上面安装一个postcss-less
,使用官网提到的自定义语法customSyntax参数让其能够识别less文件。 如果没有下面配置的overrides/customSyntax
,less文件中会有看不懂的报错:Unknown word (CssSyntaxError)Stylelint(CssSyntaxError)
// .stylelintrc.js
module.exports={
extends:["stylelint-config-standard",],
overrides:[
{
files:["**/*.less"],
customSyntax:"postcss-less"
}
]
}
有了上面的操作,已经能看到less文件中的样式各种红色提示了,还需要保存自动格式化,在.vscode/setting.json中增加下面的内容就可以了。
"editor.codeActionsOnSave": {
"source.fixAll.stylelint": true
}
项目是vue项目,vue文件中的样式无法识别,而且能看到输出的报错信息,提示我要postcss-html
,安装它
在.stylelintrc.js中加入它
module.exports={
extends:["stylelint-config-standard"],
customSyntax: "postcss-html",
overrides: [
{
files:["**/*.less"],
customSyntax:"postcss-less"
}
],
}
这时候你会发现vue文件中样式并没有提示问题。还差一步,在.vscode/settings.json
中增加
"stylelint.validate": ["vue", "less", "css"]
有了以上的简单配置,就可以保存自动按照stylelint格式化你的样式了
升级内容 (1)结合lint-staged,提交检测样式,在package.json中增加
"lint-staged": {
"**/*.{css,less,scss,vue}":[
"stylelint --fix"
]
}
(2)插件帮助我们css按照顺序书写
// 安装插件
npm i -D stylelint-order stylelint-config-rational-order
stylelint-config-rational-order
插件用来简化了插件stylelint-order
的引用和配置。你只用stylelint-order
也是可以的
//.stylelintrc.js 中使用插件
module.exports={
extends:["stylelint-config-standard", 'stylelint-config-rational-order'],
}
下面是一些问题记录
1. 当项目中使用了自动导入unplugin-auto-import/vite插件,eslint会提示ref等不存在
(1) 安装 vue-global-api
(2) 在eslintrc.js中加入它
extends: [
'plugin:vue/vue3-essential',
'standard',
'vue-global-api'
],
2. 记录一下cross-env,cross-env 使用单个命令,而不用担心环境变量的设置
安装
npm i cross-env -D
使用
"report": "cross-env REPORT=true npm run build",
取参数
const isReport = process.env.REPORT === 'true'
isReport
? visualizer({
//生成的stats放到别的地方去
filename: './node_modules/.cache/visualizer/stats.html',
open: true,
gzipSize: true,
brotliSize: true
})
: [],
3. 项目中加入一个插件后,在linux编译时莫名其妙报错:Error: The package "esbuild-linux-64" could not be found, and is needed by esbuild.
If you are installing esbuild with npm, make sure that you don't specify the "--no-optional" flag. The "optionalDependencies" package.json feature is used by esbuild to install the correct binary executable for your current platform.
按照道理说jenkins工作区域的node_modules早就有了,怎么突然没这个依赖了呢? 直接删除工作区域代码,重新npm i 跑一遍解决了
4. 该项目开发的多页面是给安卓app用的,用的lzyzsd/JsBridge。旧版app使用registerHandler提供native调用js的能力,在新版app失效,这个库issue里面也提到了
直接将js方法挂到window下面,native去调用
// 该方法给安卓调用,安卓返回是否开启消息提醒
window.getPunchInReminderStatus = (res) => {
systemRemindOpen = res === '1'
}
5. window.onresize不触发
旧版本安卓在进入页面或者失去焦点的时候会触发window.onresize,当时使用它时为了控制fixed元素不被键盘顶起来。 在新版安卓中,键盘并没有将底部fixed元素顶起来,且失去焦点的时候window.onresize不触发了,用不上它了
你可能感兴趣的:(vite + vue3 多页面实战优化续集:eslint+lint-staged+husky+stylelint)
2025年工业智能对讲机有多智能?数据采集+AI不在话下!
AORO_BEIDOU
人工智能 信息与通信 智能手机 安全 网络
在工业通信领域,对讲机始终是不可替代的即时交互工具。但传统设备仅能实现基础语音传输的局限性,已难以满足现代工业对效率与智能化的需求。遨游通讯推出的新一代智能对讲机,凭借DeepSeek本地化部署与模块化数据采集能力,实现了语音交互的智能升级,并通过红外热成像、NFC、工业内窥镜等专业模块的深度融合,构建起覆盖现场感知、数据分析与决策支持的闭环体系。AOROM55G智能对讲机传统的对讲机往往只能进行
【商城实战(18)】后台管理系统基础搭建:从0到1构建电商中枢
奔跑吧邓邓子
商城实战 商城实战 uniapp SpringBoot 后台管理系统
【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用uniapp、ElementPlus、SpringBoot搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配,乃至运营推广策略,102章内容层层递进。无论是想深入钻研技术细节,还是探寻商城运营之道,本专栏都能提供从0到1的系统讲解,助力你打造独具竞争力的电商平台,开启电商实战
绿色算力网络构建与智能调度实践
智能计算研究中心
其他
内容概要绿色算力网络的构建需以能效优化为核心,通过智能调度系统实现算力资源的高效整合与动态分配。当前架构设计包含三大核心模块:异构计算集群(涵盖GPU、FPGA及量子计算单元)、跨区域网络互联协议(适配东数西算的传输需求)以及能耗监测平台(基于实时数据建模的碳足迹追踪)。下表示例展示了典型算力节点的关键参数对比:节点类型计算密度(TFLOPS/m²)功耗比(TOPS/W)延迟控制(ms)量子计算集
跨领域算法安全优化与可解释实践
智能计算研究中心
其他
内容概要作为系统性研究框架,《跨领域算法安全优化与可解释实践》从算法研发的全生命周期切入,重点解决多领域交叉应用中的核心矛盾。通过整合联邦学习的分布式架构与量子计算的高效特性,构建兼顾隐私保护与运算效率的算法优化范式,同时引入动态可解释性分析技术,为医疗影像诊断、金融风险预测等高敏感场景提供决策透明度保障。在技术路径层面,研究聚焦特征工程的鲁棒性设计、超参数的自适应调优策略,以及生成对抗网络在数据
智能算法安全与跨领域创新实践
智能计算研究中心
其他
内容概要在智能算法快速渗透各行业的背景下,安全治理与技术创新已成为驱动跨领域应用的核心议题。当前研究重点围绕算法可解释性增强、动态风险评估及数据安全防护展开,通过融合联邦学习的分布式协作框架、量子计算的算力突破以及注意力机制的特征聚焦能力,构建起多模态技术融合的创新路径。在应用场景层面,医疗影像诊断、金融风险预测与自动驾驶系统等关键领域已形成算法效能与安全性的双重验证体系,其中超参数优化、特征工程
A800算力部署实战策略
智能计算研究中心
其他
内容概要《A800算力部署实战策略》聚焦于高性能计算集群的全生命周期管理,系统梳理从底层硬件选型到上层软件生态协同的关键技术路径。本书以A800芯片的并行计算特性为切入点,深入探讨算力密度与能效比之间的动态平衡机制,覆盖硬件拓扑优化、分布式任务调度、跨架构编译优化等核心环节。通过模块化设计思路,将复杂的部署流程拆解为可迭代实施的标准化操作单元,为不同规模的计算场景提供灵活适配方案。建议在规划初期建
模型优化前沿趋势与行业应用实战
智能计算研究中心
其他
内容概要模型优化技术正经历从理论研究到产业落地的关键跃迁。随着自动化机器学习(AutoML)与边缘计算技术的深度融合,模型开发范式正从人工调参转向自动化、自适应优化。以联邦学习为代表的数据隐私保护技术,正在重构跨机构协作的模型训练范式,而量子计算与神经架构搜索(NAS)的结合,为超参数优化开辟了新维度。在应用层面,医疗影像识别准确率突破99%的突破性成果,验证了迁移学习在跨领域知识迁移中的巨大潜力
算力安全创新驱动未来趋势endofsentence
智能计算研究中心
其他
内容概要算力安全与技术创新正在重塑全球算力生态,其核心驱动力来自异构计算、边缘计算及量子计算等前沿技术的深度融合。当前算力架构正经历从集中式向分布式演进,通过异构加速芯片、动态资源调度算法及绿色能效优化,显著提升算力基础设施的可扩展性与可靠性。例如,异构计算通过CPU、GPU、FPGA的协同加速,使复杂模型训练效率提升40%以上。关键数据:根据IDC预测,到2025年全球智能算力需求将增长30倍,
H800实战应用深度解析endofsentence
智能计算研究中心
其他
内容概要H800作为新一代计算架构的核心组件,其设计理念聚焦于高性能计算与人工智能场景的深度融合。通过模块化异构计算架构,H800实现了计算密度与能效比的突破性提升。下表展示了H800在不同场景下的性能表现对比:场景类型训练速度提升推理延迟降低能效比提升自然语言处理35%22%40%计算机视觉28%18%33%推荐系统41%29%37%资深系统架构师指出:"H800的异构计算架构在模型并行处理方面
基于vue3实现的聊天机器人前端(附代码)
P7进阶路
前端
跟它说说话吧!一个活泼的伙伴,为你提供情感支持!??发送消息!import{ref,onMounted}from'vue';import{v4asuuidv4}from'uuid';//引入UUID生成库//响应式数据constmessage=ref('');//用户输入的消息constchatbox=ref(null);//聊天记录显示区的引用constchatId=ref(uuidv4());
1.动手学习深度学习课程安排及深度学习数学基础
Unknown To Known
动手学习深度学习 深度学习 人工智能
视频资源B站:动手学习深度学习——李沐目录目标内容将学到什么1.N维数组样例2.访问2维数组元素3.数据操作4.线性代数5.矩阵计算6.自动求导目标介绍深度学习景点和最新模型LeNetAlexNetVGGResNetLSTMBERT…机器学习基础损失函数,目标函数,过拟合,优化实践使用pytorch实现介绍的知识点在真实数据上体验算法效果内容深度学习基础——线性神经网络,多层感知机卷积神经网络——
如何快速定位慢SQL?
java1234_小锋
mysql java 面试 开发语言
大家好,我是锋哥。今天分享关于【如何快速定位慢SQL?】面试题。希望对大家有帮助;如何快速定位慢SQL?1000道互联网大厂Java工程师精选面试题-Java资源分享网快速定位慢SQL的过程可以通过以下几种方法来实现。这些方法的关键在于尽早识别并分析性能瓶颈,逐步优化SQL查询。1.启用慢查询日志(MySQL为例)慢查询日志是检测慢SQL的一个重要工具。可以启用慢查询日志,记录执行时间超过阈值的查
动手学深度学习V2.0(Pytorch)——10.感知机(激活函数)
吨吨不打野
动手学深度学习pytorch pytorch 深度学习 机器学习
文章目录1.感知机2.多层感知机2.1异或问题2.2单隐藏层2.3激活函数2.3.1logistics函数/sigmoid激活函数2.3.2tanh函数2.3.3sigmoid函数和tanh函数的异同/优缺点2.3.4relu2.4多类分类2.5多隐藏层3Q&A3.1神经网络中一层的定义是什么3.2感知机无法解决XOR问题,多层感知机虽然可以解决,但是还是被SVM替代是为什么?3.3不同任务的激活
报表DSL优化,享元模式优化过程,优化效果怎么样?
蒂法就是我
享元模式 python 前端
报表DSL优化与享元模式应用详解一、报表DSL优化1.问题背景报表系统通常使用领域特定语言(DSL)定义模板结构、数据绑定规则及样式配置。随着复杂度提升,DSL可能面临以下问题:冗余配置:重复定义样式、布局或数据源。解析效率低:嵌套层级过深或语法冗余导致解析耗时增加。维护困难:DSL文件臃肿,难以快速定位问题。2.优化策略结构扁平化:减少嵌套层级,通过引用机制复用公共配置块。#优化前(嵌套冗余)t
H100架构解析与性能优化策略
智能计算研究中心
其他
内容概要NVIDIAH100GPU作为面向高性能计算与人工智能领域的旗舰级产品,其架构设计与优化策略在计算效率、显存带宽及并行任务处理等方面实现了显著突破。本文将从核心架构创新与典型场景调优两个维度展开:首先解析第三代TensorCore的稀疏计算加速机制、FP8混合精度支持特性及其对矩阵运算的优化效果;其次,针对显存子系统中HBM3堆栈布局、L2缓存分区策略以及数据预取算法的协同优化进行拆解;最
Python机器学习实战:使用Flask构建机器学习API
AI天才研究院
DeepSeek R1 & 大数据AI人工智能大模型 AI大模型企业级应用开发实战 大厂Offer收割机 面试题 简历 程序员读书 硅基计算 碳基计算 认知计算 生物计算 深度学习 神经网络 大数据 AIGC AGI LLM Java Python 架构设计 Agent 程序员实现财富自由
Python机器学习实战:使用Flask构建机器学习API作者:禅与计算机程序设计艺术/ZenandtheArtofComputerProgramming1.背景介绍1.1问题的由来在数据科学和机器学习领域,模型训练和部署一直是重要的挑战。传统的机器学习项目往往采用独立的脚本或复杂的流程,难以实现模型的自动化、可视化和复现。为了解决这一问题,将机器学习模型封装成可访问的API变得越来越流行。Fla
Html5学习教程,从入门到精通, HTML5超链接应用的详细语法知识点和案例代码(18)
知识分享小能手
网页开发 前端开发 编程语言如门 html5 学习 前端 html java 后端 css3
HTML5超链接应用的详细语法知识点和案例代码超链接(Hyperlink),也称为跃点链接,是互联网和文档编辑中的一种重要概念。超链接的定义超链接是指从一个网页指向一个目标的连接关系,这个目标可以是另一个网页,也可以是相同网页上的不同位置,还可以是一个图片、动画、程序、电子邮件地址、文件,甚至是一个音视频文件。如果点击了这个链接,当前页面的位置就会跳转到被链接的目标位置。在文档编辑中,超链接可以链
Uniapp使用地图的时候滑动上层的view地图也滑动
堕落年代
uniapp uni-app
问题根源分析原生组件层级:uniapp中的原生地图组件(如)默认处于最高层级,普通视图元素无法覆盖事件冒泡机制:触摸事件会穿透到下层组件滚动冲突:当内容滚动到底部/顶部时继续滑动会触发父容器滚动完整解决方案步骤1:结构优化到这里去步骤2:样式控制/*地图容器*/.map-container{position:fixed;width:100%;height:100vh;z-index:1;/*确保低
Django框架的全面指南:从入门到高级
步入烟尘
Python超入门指南全册 django sqlite 数据库
本文已收录于《Python超入门指南全册》本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从基础到精通不断进阶深入,后续还有实战项目,轻松应对面试,专栏订阅地址:https://blog.csdn.net/mrdeam/category_12647587.html优点:订阅限时19.9付费专栏,私信博主还可进入全栈VIP答疑群,作者优先解答机会(代码指导、远程服务),群里大佬众多可以
Web前端发展史
王珍岩
笔记
1、静态页面阶段那是1990年的12月25日,恰是西方的圣诞节,TimBerners-Lee在他的NeXT电脑上部署了第一套“主机-网站-浏览器”构成的Web系统,这标志BS架构的网站应用软件的开端,也是前端工程的开端。1993年4月Mosaic浏览器作为第一款正式的浏览器发布。1994年11月,鼎鼎大名的Navigator浏览器发布发布了,到年底W3C在Berners-Lee的主持下成立,标志着
大模型全军覆没,中科院自动化所推出多图数学推理新基准 | CVPR 2025
量子位
关注前沿科技量子位挑战多图数学推理新基准,大模型直接全军覆没?!事情是这样的。近日,中国科学院自动化研究所推出多图数学推理全新基准MV-MATH(该工作已被CVPR2025录用),这是一个精心策划的多图数学推理数据集,旨在全面评估MLLM(多模态大语言模型)在多视觉场景中的数学推理能力。结果评估下来发现,GPT-4o仅得分32.1,类o1模型QvQ得分29.3,所有模型均不及格。具体咋回事,下面接
实现页面加载鸿蒙示例代码
本文原创发布在华为开发者社区。介绍本示例主要简单构建页面加载loading布局。实现页面加载源码链接效果预览使用说明加载页面之前显示弹窗图标,经过固定时间后图标消失。实现思路使用@CustomDialog实现自定义弹窗。核心代码如下:@CustomDialogstructCustomDialogExample{controller:CustomDialogController=newCustomD
定期备份数据库:基于 Shell 脚本的自动化方案
mysql服务器脚本
数据库备份这件事,说实话,我一直没怎么上心。平时服务器跑得好好的,谁会想着备份呢?直到某天真出问题了,才意识到自己平时有多“懒”。我相信很多人跟我一样,觉得这东西看起来麻烦,等到数据库挂了、数据丢失了,才感叹自己怎么就没提前准备好呢?有一次数据库问题搞得我手忙脚乱,最后还好有个朋友给了我个备份文件,才算是有惊无险。经历了这次以后,我决定不能再拖了,必须把备份这事儿自动化起来。所以,我写了一个简单的
Java开发效率的秘密武器:AI如何重塑你的编码体验?
Leaton Lee
java 人工智能 python
引言:代码中的“隐形导师”作为一名Java开发者,你是否曾经在深夜加班时感叹:“为什么我的代码总是出错?”或者“为什么别人写代码比我快那么多?”今天,我们将揭开一个鲜为人知的秘密——AI正在悄然改变我们的编码方式。在这篇文章中,我将带领你走进Java与AI结合的奇妙世界,揭示那些从未被详细讲述的细节。无论是代码补全、错误修复,还是性能优化,AI都能成为你的“隐形导师”。准备好让你的编码效率翻倍了吗
Java 三路快排
18你磊哥
java基础学习 java
三路快速排序(3-WayQuickSort)是快速排序的优化版本,特别适用于处理包含大量重复元素的数组。其核心思想是将数组划分为三个区域:小于基准值、等于基准值和大于基准值,从而减少不必要的递归和交换三路快排原理分区逻辑:使用三个指针lt(lessthan)、current(当前遍历位置)、gt(greaterthan)将数组划分为三部分:[low,lt-1]:小于基准值的元素[lt,gt]:等于
AI 问答系统实战:用 Python + Flask + LLM 打造你的智能对话机器人!
Leaton Lee
人工智能 python flask
开篇互动:你是否想拥属于自己的AI问答机器人?“你是否想过拥有一个可以随时为你解答问题、提供建议的AI助手?”随着大语言模型(LLM)的快速发展,打造一个智能问答系统已经成为可能!本文将手把手教你如何利用Python和Flask快速搭建一个属于自己的AI问答系统,并集成强大的语言模型(如OpenAI的GPT-3.5或HuggingFace的LLaMA)。无论是技术小白还是有一定经验的开发者,都能轻
Flask框架中局部刷新页面
oliver.chau
Python 前端开发 flask python 后端
在Flask中使用AJAX仅刷新leftMenue.html你的项目使用Flask,想要在添加网站后,仅刷新leftMenue.html而不刷新整个页面,可以使用AJAX(推荐)。✅1.在app.py里创建一个返回leftMenue.html的路由在Flask里,我们需要一个专门的API来返回最新的leftMenue.html。fromflaskimportFlask,render_templat
Webpack 打包详细教程
oliver.chau
前端开发 webpack 前端 node.js
Webpack是一个现代JavaScript应用的静态模块打包工具,它可以处理JavaScript、CSS、图片等资源,并优化它们以提高性能。以下是Webpack从基础到进阶的详细教程。1.Webpack基础概念Webpack的核心概念包括:Entry(入口):Webpack开始打包的起点。Output(输出):打包后的文件存放路径。Loaders(加载器):转换非JavaScript资源(如CS
工作流编排利器:Prefect 全流程解析
船长@Quant
Python 金融科技 prefect polars 工作流编排 数据处理
工作流编排利器:Prefect全流程解析本文系统讲解了Prefect工作流编排工具,从基础入门到高级应用,涵盖任务与流程管理、数据处理、执行器配置、监控调试、性能优化及与其他工具集成等内容,文末项目实战示例,帮助读者全面回顾Prefect知识点。Prefect官方文档https://docs.prefect.io/v3/get-started/index一、Prefect基础入门(一)关于Pref
我的投资组合网站:打造个性化的在线投资展示平台
Tranyn.X
本文还有配套的精品资源,点击获取简介:本文介绍如何创建和设计一个在线平台,用于展示个人或专业投资者的投资策略、历史表现和投资理念。网站的构建涉及网页布局、响应式设计、CSS样式控制、内容管理、数据分析、SEO优化、安全性、用户体验、个性化和社交媒体整合等多个方面,确保网站既具有吸引力又能够有效地传达投资者的专业形象和投资成就。1.投资组合网站构建与网页布局设计网站构建的初步规划在当今数字化时代,构
多线程编程之join()方法
周凡杨
java JOIN 多线程 编程 线程
现实生活中,有些工作是需要团队中成员依次完成的,这就涉及到了一个顺序问题。现在有T1、T2、T3三个工人,如何保证T2在T1执行完后执行,T3在T2执行完后执行?问题分析:首先问题中有三个实体,T1、T2、T3, 因为是多线程编程,所以都要设计成线程类。关键是怎么保证线程能依次执行完呢?
Java实现过程如下:
public class T1 implements Runnabl
java中switch的使用
bingyingao
java enum break continue
java中的switch仅支持case条件仅支持int、enum两种类型。
用enum的时候,不能直接写下列形式。
switch (timeType) {
case ProdtransTimeTypeEnum.DAILY:
break;
default:
br
hive having count 不能去重
daizj
hive 去重 having count 计数
hive在使用having count()是,不支持去重计数
hive (default)> select imei from t_test_phonenum where ds=20150701 group by imei having count(distinct phone_num)>1 limit 10;
FAILED: SemanticExcep
WebSphere对JSP的缓存
周凡杨
WAS JSP 缓存
对于线网上的工程,更新JSP到WebSphere后,有时会出现修改的jsp没有起作用,特别是改变了某jsp的样式后,在页面中没看到效果,这主要就是由于websphere中缓存的缘故,这就要清除WebSphere中jsp缓存。要清除WebSphere中JSP的缓存,就要找到WAS安装后的根目录。
现服务
设计模式总结
朱辉辉33
java 设计模式
1.工厂模式
1.1 工厂方法模式 (由一个工厂类管理构造方法)
1.1.1普通工厂模式(一个工厂类中只有一个方法)
1.1.2多工厂模式(一个工厂类中有多个方法)
1.1.3静态工厂模式(将工厂类中的方法变成静态方法)
&n
实例:供应商管理报表需求调研报告
老A不折腾
finereport 报表系统 报表软件 信息化选型
引言
随着企业集团的生产规模扩张,为支撑全球供应链管理,对于供应商的管理和采购过程的监控已经不局限于简单的交付以及价格的管理,目前采购及供应商管理各个环节的操作分别在不同的系统下进行,而各个数据源都独立存在,无法提供统一的数据支持;因此,为了实现对于数据分析以提供采购决策,建立报表体系成为必须。 业务目标
1、通过报表为采购决策提供数据分析与支撑
2、对供应商进行综合评估以及管理,合理管理和
mysql
林鹤霄
转载源:http://blog.sina.com.cn/s/blog_4f925fc30100rx5l.html
mysql -uroot -p
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
[root@centos var]# service mysql
Linux下多线程堆栈查看工具(pstree、ps、pstack)
aigo
linux
原文:http://blog.csdn.net/yfkiss/article/details/6729364
1. pstree
pstree以树结构显示进程$ pstree -p work | grep adsshd(22669)---bash(22670)---ad_preprocess(4551)-+-{ad_preprocess}(4552) &n
html input与textarea 值改变事件
alxw4616
JavaScript
// 文本输入框(input) 文本域(textarea)值改变事件
// onpropertychange(IE) oninput(w3c)
$('input,textarea').on('propertychange input', function(event) {
console.log($(this).val())
});
String类的基本用法
百合不是茶
String
字符串的用法;
// 根据字节数组创建字符串
byte[] by = { 'a', 'b', 'c', 'd' };
String newByteString = new String(by);
1,length() 获取字符串的长度
&nbs
JDK1.5 Semaphore实例
bijian1013
java thread java多线程 Semaphore
Semaphore类
一个计数信号量。从概念上讲,信号量维护了一个许可集合。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。
S
使用GZip来压缩传输量
bijian1013
java GZip
启动GZip压缩要用到一个开源的Filter:PJL Compressing Filter。这个Filter自1.5.0开始该工程开始构建于JDK5.0,因此在JDK1.4环境下只能使用1.4.6。
PJL Compressi
【Java范型三】Java范型详解之范型类型通配符
bit1129
java
定义如下一个简单的范型类,
package com.tom.lang.generics;
public class Generics<T> {
private T value;
public Generics(T value) {
this.value = value;
}
}
【Hadoop十二】HDFS常用命令
bit1129
hadoop
1. 修改日志文件查看器
hdfs oev -i edits_0000000000000000081-0000000000000000089 -o edits.xml
cat edits.xml
修改日志文件转储为xml格式的edits.xml文件,其中每条RECORD就是一个操作事务日志
2. fsimage查看HDFS中的块信息等
&nb
怎样区别nginx中rewrite时break和last
ronin47
在使用nginx配置rewrite中经常会遇到有的地方用last并不能工作,换成break就可以,其中的原理是对于根目录的理解有所区别,按我的测试结果大致是这样的。
location /
{
proxy_pass http://test;
java-21.中兴面试题 输入两个整数 n 和 m ,从数列 1 , 2 , 3.......n 中随意取几个数 , 使其和等于 m
bylijinnan
java
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
public class CombinationToSum {
/*
第21 题
2010 年中兴面试题
编程求解:
输入两个整数 n 和 m ,从数列 1 , 2 , 3.......n 中随意取几个数 ,
使其和等
eclipse svn 帐号密码修改问题
开窍的石头
eclipse SVN svn帐号密码修改
问题描述:
Eclipse的SVN插件Subclipse做得很好,在svn操作方面提供了很强大丰富的功能。但到目前为止,该插件对svn用户的概念极为淡薄,不但不能方便地切换用户,而且一旦用户的帐号、密码保存之后,就无法再变更了。
解决思路:
删除subclipse记录的帐号、密码信息,重新输入
[电子商务]传统商务活动与互联网的结合
comsci
电子商务
某一个传统名牌产品,过去销售的地点就在某些特定的地区和阶层,现在进入互联网之后,用户的数量群突然扩大了无数倍,但是,这种产品潜在的劣势也被放大了无数倍,这种销售利润与经营风险同步放大的效应,在最近几年将会频繁出现。。。。
如何避免销售量和利润率增加的
java 解析 properties-使用 Properties-可以指定配置文件路径
cuityang
java properties
#mq
xdr.mq.url=tcp://192.168.100.15:61618;
import java.io.IOException;
import java.util.Properties;
public class Test {
String conf = "log4j.properties";
private static final
Java核心问题集锦
darrenzhu
java 基础 核心 难点
注意,这里的参考文章基本来自Effective Java和jdk源码
1)ConcurrentModificationException
当你用for each遍历一个list时,如果你在循环主体代码中修改list中的元素,将会得到这个Exception,解决的办法是:
1)用listIterator, 它支持在遍历的过程中修改元素,
2)不用listIterator, new一个
1分钟学会Markdown语法
dcj3sjt126com
markdown
markdown 简明语法 基本符号
*,-,+ 3个符号效果都一样,这3个符号被称为 Markdown符号
空白行表示另起一个段落
`是表示inline代码,tab是用来标记 代码段,分别对应html的code,pre标签
换行
单一段落( <p>) 用一个空白行
连续两个空格 会变成一个 <br>
连续3个符号,然后是空行
Gson使用二(GsonBuilder)
eksliang
json gson GsonBuilder
转载请出自出处:http://eksliang.iteye.com/blog/2175473 一.概述
GsonBuilder用来定制java跟json之间的转换格式
二.基本使用
实体测试类:
温馨提示:默认情况下@Expose注解是不起作用的,除非你用GsonBuilder创建Gson的时候调用了GsonBuilder.excludeField
报ClassNotFoundException: Didn't find class "...Activity" on path: DexPathList
gundumw100
android
有一个工程,本来运行是正常的,我想把它移植到另一台PC上,结果报:
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mobovip.bgr/com.mobovip.bgr.MainActivity}: java.lang.ClassNotFoundException: Didn't f
JavaWeb之JSP指令
ihuning
javaweb
要点
JSP指令简介
page指令
include指令
JSP指令简介
JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。
JSP指令的基本语法格式:
<%@ 指令 属性名="
mac上编译FFmpeg跑ios
啸笑天
ffmpeg
1、下载文件:https://github.com/libav/gas-preprocessor, 复制gas-preprocessor.pl到/usr/local/bin/下, 修改文件权限:chmod 777 /usr/local/bin/gas-preprocessor.pl
2、安装yasm-1.2.0
curl http://www.tortall.net/projects/yasm
sql mysql oracle中字符串连接
macroli
oracle sql mysql SQL Server
有的时候,我们有需要将由不同栏位获得的资料串连在一起。每一种资料库都有提供方法来达到这个目的:
MySQL: CONCAT()
Oracle: CONCAT(), ||
SQL Server: +
CONCAT() 的语法如下:
Mysql 中 CONCAT(字串1, 字串2, 字串3, ...): 将字串1、字串2、字串3,等字串连在一起。
请注意,Oracle的CON
Git fatal: unab SSL certificate problem: unable to get local issuer ce rtificate
qiaolevip
学习永无止境 每天进步一点点 git 纵观千象
// 报错如下:
$ git pull origin master
fatal: unable to access 'https://git.xxx.com/': SSL certificate problem: unable to get local issuer ce
rtificate
// 原因:
由于git最新版默认使用ssl安全验证,但是我们是使用的git未设
windows命令行设置wifi
surfingll
windows wifi 笔记本wifi
还没有讨厌无线wifi的无尽广告么,还在耐心等待它慢慢启动么
教你命令行设置 笔记本电脑wifi:
1、开启wifi命令
netsh wlan set hostednetwork mode=allow ssid=surf8 key=bb123456
netsh wlan start hostednetwork
pause
其中pause是等待输入,可以去掉
2、
Linux(Ubuntu)下安装sysv-rc-conf
wmlJava
linux ubuntu sysv-rc-conf
安装:sudo apt-get install sysv-rc-conf 使用:sudo sysv-rc-conf
操作界面十分简洁,你可以用鼠标点击,也可以用键盘方向键定位,用空格键选择,用Ctrl+N翻下一页,用Ctrl+P翻上一页,用Q退出。
背景知识
sysv-rc-conf是一个强大的服务管理程序,群众的意见是sysv-rc-conf比chkconf
svn切换环境,重发布应用多了javaee标签前缀
zengshaotao
javaee
更换了开发环境,从杭州,改变到了上海。svn的地址肯定要切换的,切换之前需要将原svn自带的.svn文件信息删除,可手动删除,也可通过废弃原来的svn位置提示删除.svn时删除。
然后就是按照最新的svn地址和规范建立相关的目录信息,再将原来的纯代码信息上传到新的环境。然后再重新检出,这样每次修改后就可以看到哪些文件被修改过,这对于增量发布的规范特别有用。
检出