首页
友链
壁纸
留言
今日热榜
更多
关于
时光
推荐
精品流量卡
Search
1
都二十多年了,你的梦为什么还没碎!
57,051 阅读
2
2022年5个好用的 BT/ 磁力链接下载工具推荐 |Windows 、安卓系统
37,156 阅读
3
nps内网穿透实现外网访问树莓派
32,369 阅读
4
实践利用宝塔建emlog个人博客-超详细【原创】
26,116 阅读
5
Typecho-Joe-Theme主题帮助文档
24,518 阅读
闲杂乱码
Python
网站源码
微信小程序
娱乐分享
Is相册
软件工具
登录
Search
标签搜索
PHP
HTML
API
Javascript
源码
JS
Vue
Github
CloudFlare
接口
函数
SQL
ASP.NET
MVC
EF
T4模板
后台管理
CDN
微信小程序
MAC
韩小韩
累计撰写
261
篇文章
累计收到
1,295
条评论
首页
栏目
闲杂乱码
Python
网站源码
微信小程序
娱乐分享
Is相册
软件工具
页面
友链
壁纸
留言
今日热榜
关于
时光
推荐
精品流量卡
搜索到
151
篇与
闲杂乱码
的结果
2024-01-08
通义灵码:重塑编程的未来,引领技术革新
{message type="info" content="人工智能如火如荼,对程序员来说,一款智能好用的编码工具必不可少,分享目前正在使用的编码工具《通义灵码》虽然处于公测状态,但丝毫不影响使用,有兴趣的可以去看看"/}{callout color="#f0ad4e"}通义灵码,是阿里云出品的一款基于通义大模型的智能编码辅助工具,提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解释、研发智能问答、异常报错排查等能力,并针对阿里云 SDK/OpenAPI 的使用场景调优,助力开发者高效、流畅的编码。{/callout}兼容 Visual Studio Code、JetBrains IDEs 等主流 IDE;支持 Java、Python、Go、C/C++、JavaScript、TypeScript、PHP、Ruby、Rust、Scala 等主流编程语言。那么既然说到这里了,有人肯定会担心收费问题,具体可看下表收费模式套餐类型基础版-免费使用高级版-立即购买资费0 元/人/年618 元/人/年基础功能不限人数包含基础版所有功能代码管理代码库数量不限,代码库容量10GB代码库数量不限,代码库容量不限流水线最大并行任务数 3,运行时长 1800分钟/月最大并行任务数弹性伸缩,运行时长不限制品仓库容量不限容量不限专属功能无效能洞察、代码安全等{abtn icon="fa-link" color="#ff6800" href="https://help.aliyun.com/document_detail/173288.html" radius="" content="详细计费说明"/} # 应用场景代码智能生成经过海量优秀开源代码数据训练,可根据当前代码文件及跨文件的上下文,为你生成行级/函数级代码、单元测试、代码注释等。沉浸式编码心流,秒级生成速度,让你更专注在技术设计,高质高效地完成编码工作。研发智能问答基于海量研发文档、产品文档、通用研发知识、阿里云的云服务文档和 SDK/OpenAPI 文档等进行问答训练,为你答疑解惑,助你轻松解决研发问题。产品特点跨文件感知让代码生成更贴合业务场景:客户端和模型层同步优化针对代码跨文件上下文感知能力,生成代码更加贴合当前代码库的业务场景。阿里云服务使用场景友好:专门针对阿里云的云服务使用、SDK/OpenAPI 的使用等场景调优,编码时能够更加便捷地使用阿里云服务;在对阿里云使用有疑问时,智能编码助手的回答也将更加有效。适配多 IDE 的原生设计,符合开发者使用习惯:适配 IDE 原生主题、交互模式,让开发者感受到 IDE 原生的视觉和交互体验,更符合开发者使用习惯。研发问答、文档/代码搜索能力,打造沉浸式编码:无需切换工具,IDE 客户端内即可满足开发者编码场景中的技术资料检索、技术难题解答的诉求,打造开发者沉浸式编码体验。双模引擎,自由切换:支持极速本地模型、云端大模型两种代码补全模型,支持一键切换,满足不同网络环境、不同补全强度的场景诉求。功能介绍行级/函数级实时续写根据当前语法和跨文件的代码上下文,实时生成行、函数建议代码。自然语言生成代码通过自然语言描述你想要的功能,可直接在编辑器区生成代码,编码心流不间断。单元测试生成支持根据 JUnit、Mockito、Spring Test、unit test、pytest 等框架生成单元测试。代码注释生成一键生成方法注释及行间注释,节省你写代码注释的时间,并能够有效提升代码可读性。代码解释支持 30 多种语言的识别,选中代码后可自动识别编程语言并生成代码解释。跨越语言的边界,让你阅读代码更高效。研发领域自由问答遇到编码疑问、技术难题时,一键唤起通义灵码,无需离开 IDE 客户端,即可快速获得答案和解决思路。聚焦研发领域知识的问答,帮助开发者快速解决问题。异常报错智能排查(Java)当运行出现异常报错时,一键启动报错排查的智能答疑,可结合运行代码、异常堆栈等报错上下文,快速给出排查思路或修复建议代码。兼容系统Windows 7 及以上、macOS、LinuxJetBrains IDEs (IntelliJ IDEA、PyCharm、GoLand、WebStorm 等)2020.3 及以上Visual Studio Code 1.75.1 及以上快速上手Visual Studio Code 本安装步骤适用于 macOS、Windows 或 Linux 的 Visual Studio Code 中安装和使用通义灵码。步骤一:准备工作 通义灵码需要登录阿里云后方可使用,如果你尚未拥有一个阿里云账号,可前往注册阿里云账号; 下载并安装Visual Studio Code 1.75.1及以上版本。步骤二:在 Visual Studio Code 安装通义灵码 VS应用市场直接安装,或 下载安装包 登录阿里云账号JetBrains IDEs 本安装步骤适用于 macOS、Windows 或 Linux 的 JetBrains IDEs 中安装和使用通义灵码。打开 IntelliJ IDEA 设置窗口,在搜索TONGYI Lingma,找到通义灵码后点击安装。安装完成后,请重启 IntelliJ IDEA。{anote icon="fa-link" href="https://help.aliyun.com/document_detail/2590614.html" type="secondary" content="官方帮助文档"/}
2024年01月08日
2,221 阅读
1 评论
0 点赞
2023-08-20
树莓派在Docker中部署Samba
准备# 拉取镜像 sudo docker pull dperson/samba:latest配置文件# 在你喜欢的地方创建配置文件 # /mnt/HanSSD/Docker/DockerData/samba/smb.conf [HanSSD_SMB] comment = Shared Folder path = /share browseable = yes read only = no valid users = hanfile部署sudo docker run -d --name samba \ -p 445: 445 \ -v /mnt/HanSSD/Docker/DockerData/samba:/etc/samba \ -v /mnt/HanSSD/SAMBA_SHARE:/share \ --restart=always \ dperson/samba:latest创建用户# 进入docker终端 sudo docker exec -it samba /bin/bash # 创建用户(会让你输入2次密码) smbpasswd -a hanfile # Added user hanfile. 即成功{callout color="#ef4d4d"}连接登陆,增删改查权限没问题,即可 大功告成!{/callout}
2023年08月20日
8,092 阅读
2 评论
2 点赞
2023-08-20
树莓派4B(Raspberry Pi OS Lite 64-bit)安装Docker
更新# 必执行 sudo apt update sudo apt upgrade sudo apt install ca-certificates curl gnupg添加Docker官方GPG密钥sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg设置Docker存储库echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 设置好后,再次更新 sudo apt update安装最新版本Dockersudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin安装Docker可视化管理Portainersudo docker pull portainer/portainer-ce:latest sudo docker run -d -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer-ce访问:http://IP:9000,设置用户名,密码即可!{callout color="#262cdf"}YES,大功告成!{/callout}
2023年08月20日
7,964 阅读
0 评论
1 点赞
2023-08-11
变相跳出forEach循环
{callout color="#ef4d93"}众所周知,forEach循环是无法中途跳出循环的,有点同学说不是可以通过抛出错误跳出循环吗?是的。抛出异常是广为流传的一种方法,结果是我们想要,但是你看代码,哪个正常人会这样写代码?是非forEach不用吗?还是其他的循环关键字不配呢。{/callout}forEach抛出异常跳出循环const list = [1, 2, 3, 4, 5, "a", "b", "c", "d", "e"]; try { list.forEach((itm) => { if (itm === "c") { throw new Error("exit"); } console.log(itm); }); } catch (e) { // console.log(e); }splice变相跳出循环const list = [1, 2, 3, 4, 5, "a", "b", "c", "d", "e"]; Object.assign(list).forEach((itm, idx, arr) => { if (itm == "c") { arr.splice(idx, arr.length - idx); } console.log(itm); });
2023年08月11日
8,173 阅读
0 评论
2 点赞
2023-08-11
Vue3项目Build后部署在Nginx上F5刷新页面空白或404
环境{callout color="#4def9b"}vue-cli 5.xvue-router 4.xNginx{/callout}综述{callout color="#4d60ef"}使用Vue3项目Vue-router4开发完毕后项目Build打包部署线上环境后,首页能正常访问菜单内点击切换也没有问题,但当你刷新页面后,则出现 404 Not Found,故在此记录一下解决办法{/callout}解决思路{callout color="#f34444"}在与chatGPT进行深刻激烈的探讨后,确定了是Nginx的问题,根据chatGPT的引导进行配置依旧无法解决,刷新页面时访问的资源在服务端找不到,因为此时vue-router设置路由地址被当作url地址,此时的地址路径肯定不是真实存在的,所以出现404现象。之所以出现上面的现象,是因为在nginx配置的根目录/www/wwwroot/dist下面压根没有'XXX/xxx/xxx'这个真实资源存在,这些访问资源都是在js里渲染的。{/callout}服务端nginx的一开始配置如下(假设域名为:www.vvhan.com): server { listen 80; server_name www.vvhan.com; index index.html; root /www/wwwroot/dist; }如上出现404的原因是由于在这个域名根目录/www/wwwroot/dist下面压根就没有'XXX/xxx/xxx'这个真实目录存在。解决问题在服务端nginx配置里添加vue-route的跳转设置,正确配置如下: server { listen 80; server_name www.vvhan.com; index index.html; root /www/wwwroot/dist; #vue-router配置 location / { try_files $uri $uri/ @router; index index.html; } location @router { rewrite ^.*$ /index.html last; } }{callout color="#efa44d"}重启 nginx 后,问题就迎刃而解了。{/callout}
2023年08月11日
7,924 阅读
2 评论
0 点赞
2023-08-01
Ant Design Vue 4.0 侧边导航栏Menu组件封装
{callout color="#ee5a49"}Ant Design Vue 4.0 a-modal弹窗组件封装{/callout}<template> <a-layout-sider class="menu-main"> <div class="logo">Han</div> <a-menu v-model:selectedKeys="routerPathKey" theme="light" mode="inline" @click="onTitleClick" :openKeys="ACTIVE_NAV"> <template v-for="itm in NAV_MENU" :key="itm.name"> <a-sub-menu v-if="itm.children && itm.children.length > 0" :key="itm.name"> <template #title> <icon-font :type="(itm.meta?.icon as any)" /> <span>{{ itm.name }}</span> </template> <a-menu-item v-for="_itm in itm.children" :key="_itm.name"> <icon-font :type="(_itm.meta?.icon as any)" /> <span>{{ _itm.name }}</span> </a-menu-item> </a-sub-menu> <a-menu-item v-if="!itm.children || itm.children.length < 1" :key="itm.name"> <icon-font :type="(itm.meta?.icon as any)" /> <span>{{ itm.name }}</span> </a-menu-item> </template> <a-menu-item key="敬请期待" disabled> <icon-font type="han-icon-jingqingqidai1" /> <span>敬请期待</span> </a-menu-item> </a-menu> </a-layout-sider> </template> <script lang="ts" setup> import { ref } from 'vue'; import { useRouter } from 'vue-router'; const router = useRouter(); // 阿里图标库 import { createFromIconfontCN } from '@ant-design/icons-vue'; const IconFont = createFromIconfontCN({ scriptUrl: '/icon/nav-icon/iconfont.js' }); // 路由表 const NAV_MENU = router.options.routes[0].children; // 路由跳转 const onTitleClick = (res: any) => { router.push({ name: res.key }); }; // 路由监控 const routerPathKey = ref<Array<any>>([]); // 刷新页面展开一级菜单 const ACTIVE_NAV = ref<string[]>([]); const initFN = () => { ACTIVE_NAV.value = []; routerPathKey.value = [router.currentRoute.value.name]; NAV_MENU?.forEach((itm: any) => { itm.children?.find((item: { name: string }) => { return item.name == routerPathKey.value[0] && ACTIVE_NAV.value.push(itm.name); }) }); }; initFN(); router.afterEach((to, from) => { initFN(); }) </script> <style lang="less" scoped> @import 'index.less'; </style>
2023年08月01日
8,184 阅读
0 评论
0 点赞
2023-07-29
Ant Design Vue 4.0 a-modal弹窗组件封装
父组件(部分)<template> <div class="main"> <a-button type="primary" ghost @click="dialogPanelStatus.signIngInfoStatus = true" >签约信息</a-button> </div> <!-- 签约信息 --> <SigningInfo :signIngInfoStatus="dialogPanelStatus.signIngInfoStatus" :walletData="walletData" @closeDialog="closeDialog" /> </template> <script setup lang="ts"> import SigningInfo from '@/components/Income/SigningInfo.vue'; // DIalog弹窗状态 const dialogPanelStatus = reactive<DialogPanelStatus>({ signIngInfoStatus: false }); // 数据重载 const getMyWalletFn = ()=>{ // 数据重载 } // 关闭弹窗 const closeDialog = (k: keyof DialogPanelStatus, rest: boolean) => { dialogPanelStatus[k] = false; rest && getMyWalletFn(true); }; </script> <style lang="less" scoped> @import 'Income.less'; </style>弹窗子组件<template> <a-modal :open="visible" title="弹框" :footer="null" destroyOnClose :maskClosable="false" @cancel="closeDialogFn(false)"> <div class="zb-info"> <a-card size="small" hoverable> <p>真实姓名:{{ walletData.real_name }}</p> </a-card> <a-card size="small" hoverable> <p>身份证号:{{ walletData.card_number }}</p> </a-card> <a-card size="small" hoverable> <p>支付宝账号:{{ walletData.alipay_account }}</p> </a-card> <a-card size="small" hoverable> <p>支付宝姓名:{{ walletData.alipay_name }}</p> </a-card> </div> </a-modal> </template> <script setup lang="ts"> import { toRefs } from 'vue'; import type { WalletData } from '@/types/index'; const props = withDefaults( defineProps<{ visible: Boolean; walletData: WalletData; }>(), {} ); const { visible, walletData } = toRefs(props); // 关闭弹窗 const emits = defineEmits(['closeDialog']); const closeDialogFn = (rest: boolean = false) => { emits('closeDialog', 'visibleStatus', rest); }; </script> <style lang="less" scoped> @import 'SigningInfo.less'; </style>
2023年07月29日
8,000 阅读
0 评论
0 点赞
2023-07-28
Vue3 + Vite + Vue Router 4后端返回路由配置动态路由权限管理
动态路由// 路由递归处理 const AllRouter = import.meta.glob('@/views/**/*.vue'); interface RouterItem { path: string; name: string; component: () => any; children?: RouterItem[]; meta: { title: string; icon: string; }; } const routerFormat = (routerList: any): RouterItem[] => { if (!routerList || !Array.isArray(routerList)) return []; return routerList.map((item: any) => { return { ...item, component: AllRouter[`/src/views/${item['component']}`], children: routerFormat(item['children']) }; }); }; // 动态路由挂载 const addDynamicRoutes = (layoutRoute: RouteRecordRaw | undefined, page: RouteLocationNormalizedLoaded) => { const newRouteStr = localStorage.getItem('routerList'); if (layoutRoute && newRouteStr && layoutRoute.children!.length < 1) { const newRouteArr = routerFormat(JSON.parse(newRouteStr) as RouteRecordRaw[]); layoutRoute.children = newRouteArr; router.addRoute(layoutRoute); router.push(page); } };路由守卫// 路由守卫 router.beforeEach(async (to, from, next) => { // 每次请求判断动态路由是否挂载 const layoutRoute: RouteRecordRaw | undefined = router.options.routes.find(route=> route.name === 'Layout'); addDynamicRoutes(layoutRoute, to); // 路由拦截规则 const TOKEN_STATIC: string | null = localStorage.getItem('session'); if (to.path === '/login' && TOKEN_STATIC) { next('/Layout'); } else { !TOKEN_STATIC && to.path !== '/login' ? next('/login') : next(); } });Login获取路由信息// 路由递归处理 const routerFormat = (routerList: any[]): any[] => { if (!routerList) return []; return routerList.map((item: any) => { return { path: item['url'], name: item['title'], component: item['component'], children: routerFormat(item['children']), meta: { title: item['title'], icon: item['ico'] } }; }); }; // 获取用户信息 const getUserInfoFn = async (session: any) => { localStorage.setItem('session', session); const res = await getUserInfo(); if (res.code == 0) { const routerList = routerFormat(res.data.router_list); localStorage.setItem('userInfo', JSON.stringify(res.data.user_info)); localStorage.setItem('routerList', JSON.stringify(routerList)); router.push({ name: 'Layout' }); } };
2023年07月28日
6,970 阅读
0 评论
2 点赞
1
2
...
19