lodash round

时间: 2024-02-22 08:52:44 浏览: 207
lodash的round函数可以将一个数字四舍五入到指定的精度。下面是两个例子: 1. 四舍五入到整数: ```javascript _.round(4.006); // 输出:4 ``` 2. 四舍五入到指定的小数位数: ```javascript _.round(4.006, 2); // 输出:4.01 ``` 3. 四舍五入到指定的整数位数: ```javascript _.round(4060, -2); // 输出:4100 ```
相关问题

js 减法浮点数处理 lodash

### 使用 Lodash 处理 JavaScript 中浮点数减法精度问题 在 JavaScript 中,由于其内部采用 IEEE 754 标准存储数值,因此对于某些十进制小数来说存在表示上的不准确性[^1]。当执行像 `0.1 - 0.2` 这样的操作时,会得到一个非常接近但并不完全等于预期的结果。 为了克服这个问题并确保计算结果具有更高的准确性,可以借助于 Lodash 库中的功能。虽然 Lodash 并未专门提供用于处理浮点数运算的方法,但是可以通过结合其他工具函数实现这一目标。具体做法如下: #### 方法一:利用自定义辅助函数配合 Lodash 的 round 函数 通过创建一个辅助性的减法函数,并在其内部应用 Lodash 提供的 `_.round()` 来控制最终输出的小数位数,从而减少因浮点数表达带来的误差影响。 ```javascript // 引入 lodash 库 const _ = require('lodash'); function subtractWithPrecision(num1, num2, precision = 2) { let factor = Math.pow(10, precision); return _.round((num1 * factor - num2 * factor) / factor, precision); } console.log(subtractWithPrecision(0.1, 0.2)); // 输出更合理的近似值而非默认行为下的-0.09999999999999998 ``` 这种方法允许用户指定所需的保留小数位数,默认情况下设置为两位小数。它首先放大两个操作数到整数级别再做差分运算,最后缩小回原来的尺度同时运用 `_.round()` 对结果进行取舍。 #### 方法二:基于字符串转换的方式 另一种思路是将参与运算的操作数转化为字符串形式,去除尾部多余的零之后重新解析成数字完成相减过程。此方案同样适用于需要保持特定格式化输出场景下。 ```javascript // 引入 lodash 库 const _ = require('lodash'); function stringBasedSubtraction(num1, num2) { function normalize(value) { return parseFloat(_.trimEnd(value.toString(), '0').replace(/\.?0*$/, '')); } return normalize(normalize(num1) - normalize(num2)); } console.log(stringBasedSubtraction(0.1, 0.2)); // 同样可以获得较为理想的显示效果 ``` 上述两种方式都可以有效缓解直接使用 JS 原生算术运算符所带来的潜在风险,不过值得注意的是它们并不能彻底消除所有情况下的微小偏差;如果项目中有严格的要求,则建议考虑专用的大数运算库如 BigDecimal.js 或者 decimal.js 等[^4]。

lodash-es 计算小数

### 使用 Lodash-es 进行小数计算 Lodash 提供了一系列用于处理数值的实用工具函数,这些功能同样适用于 `lodash-es` 版本。对于小数计算而言,虽然 JavaScript 的内置运算符已经能够完成基本操作,但在某些情况下可能会遇到精度丢失的问题。为了更精确地控制浮点数的操作并避免潜在误差,推荐使用特定的方法。 #### 利用 round 函数实现四舍五入 当需要对一个小数进行取整时,可以采用 `_.round(number, precision)` 方法来保留指定位数的小数点后的数字[^1]: ```javascript import _ from 'lodash-es'; const num = 123.456; console.log(_.round(num, 2)); // 输出: 123.46 ``` #### 实现加减乘除的安全运算 尽管 Lodash 并未直接提供专门针对算术运算的功能,但可以通过组合其他辅助方法间接达到目的。例如,在执行加法前先利用 `parseFloat()` 将字符串转换成浮点型数据;而在做除法时,则可能要用到 `isNaN()` 来验证输入的有效性[^2]。 然而值得注意的是,如果涉及到高精度金融级计算或其他不允许任何误差的应用场景下,建议考虑引入专业的库如 `decimal.js` 或者 `big.js` 来代替简单的数学运算方式[^3]。
阅读全文

相关推荐

<script setup lang="ts"> import { onMounted, ref,watch } from "vue"; import { $t } from "@/locales"; import { computed } from 'vue'; import { sourceOptions, softwareChangeOptions, canUpgradeOptions } from "@/constants/business"; import { translateOptions } from "@/utils/common"; import { useNaiveForm } from "@/hooks/common/form";; import { router } from "@/router"; import {fetchGetZtDeptList} from "@/service/api"; const currentRoute = ref(router.currentRoute); defineOptions({ name: "LedgerSearch", }); interface Emits { (e: "reset"): void; (e: "search"): void; } const emit = defineEmits<Emits>(); const { formRef, validate, restoreValidation } = useNaiveForm(); const model = defineModel<Api.Change.LedgerSearchParams>("model", { required: true, }); // 部门相关状态 const deptLoading = ref(false); const deptOptions = ref<any[]>([]); const deptSearchQuery = ref(""); // 新增:部门搜索关键词 // 计算属性:过滤后的部门选项 const filteredDeptOptions = computed(() => { if (!deptSearchQuery.value) { return deptOptions.value; // 无搜索词时返回所有选项 } const query = deptSearchQuery.value.toLowerCase(); return deptOptions.value.filter(option => option.label.toLowerCase().includes(query) ); }); // 在组件中正确使用 FlatResponseData const fetchDeptList = async () => { try { deptLoading.value = true; // 调用 API 获取部门列表 const result = await fetchGetZtDeptList({ current: 1, size: 100 }); // 检查请求结果 if (result.error) { // 处理错误情况 console.error('获取部门列表失败1:', result.error); window.$message?.error('获取部门列表失败2'); return; } // 成功情况 - 从 result.data 获取数据 const responseData = result.data; // 检查后端业务逻辑是否成功 //console.log(result) //console.log(responseData.records) if (responseData?.records) { deptOptions.value = responseData.records.map(dept => ({ label: dept.name, // 显示给用户的文本 value: dept.id, // 实际存储的值 })); } else { console.error('获取部门列表失败3:', result.response.data.msg); window.$message?.error(result.response.data.msg || '获取部门列表失败'); } } catch (error) { console.error('获取部门列表异常:', error); window.$message?.error('获取部门列表异常'); } finally { deptLoading.value = false; } }; // 部门搜索处理函数 const handleDeptSearch = (query: string) => { deptSearchQuery.value = query; // 更新搜索关键词 }; async function reset() { await restoreValidation(); emit("reset"); } async function search() { await validate(); emit("search"); } onMounted(async () => { await fetchDeptList(); }); </script> <template> <NCard :bordered="false" size="small" class="card-wrapper"> <NCollapse> <NCollapseItem :title="$t('common.search')" name="change-ledger-search"> <NForm ref="formRef" :model="model" label-placement="left" :label-width="80" > <NGrid responsive="screen" item-responsive> <NFormItemGi span="24 s:12 m:6" :label="$t('page.change.ledger.source')" path="source" class="pr-24px" > <NSelect v-model:value="model.source" :placeholder="$t('page.change.ledger.form.source')" :options="translateOptions(sourceOptions)" filterable clearable /> </NFormItemGi> <NFormItemGi span="24 s:12 m:6" :label="$t('page.change.ledger.peco')" path="peco" class="pr-24px" > <NInput v-model:value="model.peco" :placeholder="$t('page.change.ledger.form.peco')" /> </NFormItemGi> <NFormItemGi span="24 s:12 m:6" :label="$t('page.change.ledger.projectno')" path="projectno" class="pr-24px" > <NInput v-model:value="model.projectno" :placeholder="$t('page.change.ledger.form.projectno')" /> </NFormItemGi> <NFormItemGi span="24 s:12 m:6" :label="$t('page.change.ledger.dept')" path="dept" class="pr-24px" > <NSelect v-model:value="model.dept" :placeholder="$t('page.change.ledger.form.dept')" :options="filteredDeptOptions" :loading="deptLoading" filterable clearable @search="handleDeptSearch" /> </NFormItemGi> <NFormItemGi span="24 s:12 m:6" :label="$t('page.change.ledger.canUpgrade')" path="canUpgrade" class="pr-24px" > <NSelect v-model:value="model.canUpgrade" :placeholder="$t('page.change.ledger.form.canUpgrade')" :options="translateOptions(canUpgradeOptions)" filterable clearable /> </NFormItemGi> <NFormItemGi span="24 s:12 m:6" :label="$t('page.change.ledger.softwareChange')" path="softwareChange" class="pr-24px" > <NSelect v-model:value="model.softwareChange" :placeholder="$t('page.change.ledger.form.softwareChange')" :options="translateOptions(softwareChangeOptions)" filterable clearable /> </NFormItemGi> <NFormItemGi span="24 s:12 m:6"> <NSpace class="w-full" justify="end"> <NButton @click="reset"> <template #icon> <icon-ic-round-refresh class="text-icon" /> </template> {{ $t("common.reset") }} </NButton> <NButton type="primary" ghost @click="search"> <template #icon> <icon-ic-round-search class="text-icon" /> </template> {{ $t("common.search") }} </NButton> </NSpace> </NFormItemGi> </NGrid> </NForm> </NCollapseItem> </NCollapse> </NCard> </template> <style scoped></style> 优化这段代码,使部门选项可以导出,并在其他代码文件中使用

<template> 标题 <el-input v-model="techigligAdd.name" style="width: 240px" placeholder="Pick a date" :suffix-icon="Calendar" /> 模块 <el-select v-model="techigligAdd.type" filterable clearable placeholder @change="xlxx" > <el-option v-for="item in selectypeList" :key="item.id" :label="item.name" :value="item.id" /> </el-select> <label for="pbimessage">问题内容</label> <QuillEditor ref="quillEditor" v-model:content="techigligAdd.techigligmessage" contentType="html" :options="editorOptions" @blur="onEditorBlur" /> 子项目列表 <el-table :data="techigligAdd.smalltecList" border style="width: 100%"> <el-table-column prop="title" label="标题" width="180" show-overflow-tooltip /> <el-table-column prop="easytitle" label="简述" width="180" show-overflow-tooltip /> <el-table-column prop="httpurl" label="相关博客" show-overflow-tooltip="false" /> <el-table-column fixed="right" label="操作" min-width="120"> <template #default> <el-button type="success">修改</el-button> <el-button type="primary">详情</el-button> <el-button type="danger">删除</el-button> </template> </el-table-column> </el-table> 新增子项目 <el-button type="success" @click="addBut" round>提交</el-button> <el-button type="info" @click="goback" round>返回</el-button> <el-dialog v-model="dialogVisible" title="添加新项目" width="500px" :before-close="handleClose" > <smallTecAdd @smallTecAdd-Event="handleChildEvent" @close-el-dialog-component="closeDialog" /> </el-dialog> </template> <script setup> import { reactive, ref, onMounted } from "vue"; import tecApi from "../../api/tecHigLinIndex.js"; import { useRouter } from "vue-router"; import { QuillEditor } from "@vueup/vue-quill"; import "@vueup/vue-quill/dist/vue-quill.snow.css"; import { useUserStore } from "../../../store/user.js"; import technologyTypeApi from "../../api/technologyTypeIndex.js"; import smallTecAdd from "../editor/SmallTecAdd.vue"; const isShowjsz = ref(false); const router = useRouter(); // 用于保存 Quill 编辑器组件实例 const quillEditor = ref(); //表单引用 const formRef = ref(null); //表单数据模型 const formData = reactive({ tecid: "", title: "", message: "", httpurl: "", easytitle: "", }); //这里添加相关规则 const formRules = reactive([]); //弹窗控制标识 const dialogVisible = ref(false); const selectypeList = ref([ // { id: "1", name: "mysql" }, // { id: "2", name: "rabbitmq" }, // { id: "3", name: "springboot" }, // { id: "4", name: "nacos" }, ]); onMounted(() => { dialogVisible.value = false; getTecXiaLa(); }); //获取下拉列表接口 const getTecXiaLa = async () => { const technologyTypeDTO = {}; const res = await technologyTypeApi.selectNoPage(technologyTypeDTO); selectypeList.value = res.data.data; }; //新增输入数据承接对象 const techigligAdd = reactive({ name: "", techigligmessage: "", type: "", smalltecList: [], }); //点击加号,展示输入项 const xlxx = () => { isShowjsz.value = true; }; // 图片上传处理函数 const imageHandler = async () => { //创建一个隐藏的<input元素> const input = document.createElement("input"); input.setAttribute("type", "file"); //且只接收图片 input.setAttribute("accept", "image/*"); input.click(); input.onchange = async () => { //获取选择的第一个文件 const file = input.files[0]; //如果文件不存在,即为null,undefined或者空值时,直接结束函数 if (!file) { return; } try { // ✅ 调用后端图片上传接口 const formData = new FormData(); formData.append("file", file); formData.append("fileType", "1"); const response = await api.fileUpload(formData); if (response.data.code == 200) { // ✅ 使用组件 ref 获取 Quill 实例 const quill = quillEditor.value.getQuill(); const range = quill.getSelection(true); // ✅ 插入图片 const wzpath = useUserStore.nginxBasePath + response.data.data.filePath; console.log("完整访问路径:" + wzpath); quill.insertEmbed(range.index, "image", wzpath); quill.setSelection(range.index + 1); } } catch (error) { console.error("图片上传失败:", error); } }; }; const addBut = () => { tecApi.addTec(techigligAdd).then((res) => { console.log(res.data); }); }; const goback = () => { router.push({ name: "TecHigligListName", }); }; // 编辑器配置选项 const editorOptions = ref({ modules: { toolbar: { container: [ ["bold", "italic", "underline", "strike"], [{ list: "ordered" }, { list: "bullet" }], ["link", "image", "video"], ["clean"], ], handlers: { // 自定义图片上传处理 image: imageHandler, }, }, }, placeholder: "请输入内容...", theme: "snow", }); // 编辑器失焦事件 const onEditorBlur = (event) => { console.log("编辑器内容:", event.value); }; //点击加号,打开一个弹窗 const openDialog = () => { dialogVisible.value = true; //如果表单有内容,则重置表单 if (formRef.value) { formRef.value.resetFields(); } }; //在关闭弹窗前确认,可以提供关闭拦截的作用 const handleClose = (done) => { done(); }; //处理子组件传递的数据 const handleChildEvent = (smallFormData) => { console.log(smallFormData); //将数据添加到数组的末尾 techigligAdd.smalltecList.push(smallFormData); }; const closeDialog = () => { dialogVisible.value = false; }; </script> <style scoped lang="scss"> .ql-editor { min-height: 300px; } .tjbut { margin-top: 20px; } /* 下面这部分是加号按钮图标的css样式 */ .add-button-container { display: flex; align-items: left; justify-content: center; min-height: 50px; border: 1px dashed #891818; border-radius: 4px; cursor: pointer; transition: all 0.3s ease; } .add-button-container:hover { background-color: #54b34b; } /* 弹窗相关css */ .el-button { margin: 10px; } /* 自定义弹窗样式 */ :deep(.el-dialog) { border-radius: 12px; width: 80%; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); } :deep(.el-dialog__header) { border-bottom: 1px solid #eee; padding: 15px 20px; } :deep(.el-dialog__body) { padding: 20px; } :deep(.el-form-item) { margin-bottom: 18px; } </style> 这段代码有个问题,多次打开弹窗数据数据,最后展示在<el-table>的数据全部变成最后一次弹窗输入的内容,是什么原因,如何解决

"{\"user\":{\"id\":1,\"nickname\":\"超级管理员\",\"avatar\":\"http://192.168.40.13:9000/merita/20250619/cf12590b150b33cbef3d5d5e820e24996854742469b5b950734a63c18904b577_1750319668301.png\",\"deptId\":1,\"username\":\"root\",\"email\":\"[email protected]\"},\"roles\":[\"super_admin\"],\"permissions\":[\"\",\"crm:finance:delete\",\"system:mail-template:query\",\"crm:contract:create\",\"crm:monitor-performance:import\",\"system:user:query\",\"crm:my-performance:update\",\"crm:allocation:create\",\"crm:my-performance:query\",\"system:dept:update\",\"crm:blacklist:deletes\",\"infra:api-access-log:export\",\"crm:payment:deletes\",\"crm:template:query\",\"infra:file-config:export\",\"system:mail-account:create\",\"system:mail-template:create\",\"infra:api-error-log:query\",\"system:dict:update\",\"crm:contact:delete\",\"crm:company-info:import\",\"crm:clue:delete\",\"system:sms-log:query\",\"crm:allocation:query\",\"system:tenant:export\",\"infra:api-error-log:update-status\",\"crm:monitor-performance:query\",\"crm:talentTrack:update\",\"system:mail-account:delete\",\"crm:talentTrack:delete\",\"infra:file:delete\",\"crm:blacklist:create\",\"system:sms-template:create\",\"crm:template:import\",\"crm:clue:update\",\"system:menu:update\",\"crm:advance:deletes\",\"crm:monitor-finance:deletes\",\"crm:monitor-company:create\",\"crm:payment:delete\",\"crm:monitor-finance:create\",\"system:user:create\",\"crm:advance:query\",\"crm:receive:delete\",\"system:role:export\",\"infra:file-config:update\",\"crm:knowledge:delete\",\"crm:contact-allocation:create\",\"system:mail-template:delete\",\"crm:talent:update\",\"crm:payment:query\",\"crm:advance:update\",\"crm:finance:update\",\"infra:api-error-log:export\",\"crm:company-trace:import\",\"crm:talent:deletes\",\"crm:template:deletes\",\"crm:receive:query\",\"system:sms-template:send-sms\",\"system:dept:delete\",\"system:tenant:update\",\"system:tenant-package:update\",\"crm:contact:update\",\"crm:knowledge:query\",\"system:mail-template:send-mail\",\"infra:codegen:create\",\"system:sms-template:delete\",\"system:notify-template:create\",\"crm:my-performance:import\",\"crm:company-trace:create\",\"system:notify-template:update\",\"crm:knowledge:update\",\"infra:api-access-log:query\",\"system:mail-log:query\",\"infra:redis:get-monitor-info\",\"tenant:package:list\",\"crm:advance:delete\",\"crm:contract:delete\",\"crm:receive:update\",\"system:oauth2-client:create\",\"crm:finance:deletes\",\"system:dict:export\",\"crm:carry-forward:query\",\"system:sms-channel:create\",\"crm:carry-forward:update\",\"system:post:create\",\"crm:allocation:update\",\"infra:codegen:delete\",\"infra:redis:get-key-list\",\"crm:allocation:import\",\"system:user:delete\",\"crm:contact-assign:delete\",\"crm:monitor-finance:delete\",\"system:oauth2-client:update\",\"crm:finance:create\",\"crm:monitor-company:delete\",\"system:permission:assign-role-data-scope\",\"system:tenant-package:create\",\"crm:talentTrack:query\",\"system:sms-log:export\",\"system:operate-log:query\",\"crm:blacklist:import\",\"crm:clue:deletes\",\"system:sms-channel:delete\",\"crm:allocation:deletes\",\"crm:monitor-performance:update\",\"system:oauth2-client:query\",\"system:operate-log:export\",\"crm:carry-forward:import\",\"system:role:query\",\"crm:talentTrack:deletes\",\"crm:contact:create\",\"crm:template:create\",\"crm:finance:import\",\"system:sms-template:update\",\"system:menu:query\",\"infra:file-config:query\",\"crm:talent:query\",\"infra:file-config:create\",\"system:mail-template:update\",\"system:user:export\",\"crm:blacklist:update\",\"crm:company-info:query\",\"system:dept:query\",\"crm:knowledge:import\",\"crm:clue:query\",\"system:tenant-package:delete\",\"crm:advance:create\",\"crm:contact:query\",\"system:role:delete\",\"system:dept:create\",\"我的业绩新增\",\"system:menu:create\",\"infra:codegen:download\",\"crm:monitor-performance:deletes\",\"crm:talent:delete\",\"rm:blacklist:query\",\"crm:company-trace:deletes\",\"crm:company-info:delete\",\"crm:contact-assign:query\",\"crm:company-trace:update\",\"crm:carry-forward:deletes\",\"system:notify-template:query\",\"crm:monitor-performance:delete\",\"system:post:update\",\"crm:contract:deletes\",\"crm:my-performance:deletes\",\"system:oauth2-client:delete\",\"rm:knowledge:create\",\"system:tenant:create\",\"system:mail-account:update\",\"system:sms-channel:update\",\"crm:clue:import\",\"system:sms-channel:query\",\"system:login-log:query\",\"system:role:update\",\"crm:monitor-performance:create\",\"我的收款新增\",\"system:notify-template:send-notify\",\"system:login-log:export\",\"crm:company-info:create\",\"system:notify-template:delete\",\"crm:template:delete\",\"crm:payment:import\",\"system:permission:assign-user-role\",\"system:post:delete\",\"crm:company-trace:delete\",\"tenant:system:list\",\"crm:contact-assign:update\",\"crm:receive:import\",\"crm:contact:export\",\"crm:clue:create\",\"system:permission:assign-role-menu\",\"crm:contact-assign:export\",\"crm:my-performance:delete\",\"crm:monitor-company:query\",\"crm:blacklist:delete\",\"crm:talentTrack:export\",\"crm:company-trace:query\",\"crm:talentTrack:create\",\"crm:monitor-company:deletes\",\"crm:payment:update\",\"infra:file-config:delete\",\"crm:contract:query\",\"infra:codegen:preview\",\"system:dict:create\",\"crm:carry-forward:create\",\"system:oauth2-token:delete\",\"infra:file:query\",\"crm:advance:import\",\"crm:contract:import\",\"crm:receive:deletes\",\"system:user:update-password\",\"crm:monitor-finance:query\",\"system:oauth2-token:page\",\"crm:finance:query\",\"system:mail-account:query\",\"crm:contact:deletes\",\"system:post:query\",\"crm:allocation:delete\",\"crm:contact-assign:deletes\",\"system:sms-template:export\",\"infra:codegen:update\",\"system:user:import\",\"infra:swagger:list\",\"crm:contract:update\",\"system:user:update\",\"crm:monitor-company:update\",\"crm:monitor-finance:update\",\"system:menu:delete\",\"crm:payment:create\",\"system:sms-template:query\",\"crm:template:update\",\"crm:monitor-company:import\",\"crm:talent:create\",\"crm:company-info:deletes\",\"crm:monitor-finance:import\",\"system:user:list\",\"infra:codegen:query\",\"system:tenant:delete\",\"system:role:create\",\"crm:carry-forward:delete\",\"system:dict:delete\",\"crm:company-info:update\"],\"menus\":[{\"id\":134,\"parentId\":0,\"name\":\"公海池\",\"path\":\"/LeadPool/index\",\"component\":\"highSea/index\",\"componentName\":\"\",\"icon\":\"fa:behance-square\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":135,\"parentId\":0,\"name\":\"线索管理\",\"path\":\"/clue\",\"component\":\"crm/crmclues/index\",\"componentName\":\"\",\"icon\":\"fa:calendar-check-o\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":[{\"id\":282,\"parentId\":135,\"name\":\"线索录入\",\"path\":\"enter\",\"component\":\"clue/entry/index\",\"componentName\":\"\",\"icon\":\"ep:aim\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null}]},{\"id\":136,\"parentId\":0,\"name\":\"联系人名单\",\"path\":\"/contact\",\"component\":\"\",\"componentName\":\"\",\"icon\":\"ep:avatar\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":[{\"id\":157,\"parentId\":136,\"name\":\"名单管理\",\"path\":\"list\",\"component\":\"contact/contactManager/index\",\"componentName\":\"\",\"icon\":\"ep:cellphone\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":158,\"parentId\":136,\"name\":\"名单分配\",\"path\":\"assignment\",\"component\":\"contact/allocation/index\",\"componentName\":\"\",\"icon\":\"ep:chat-line-round\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null}]},{\"id\":137,\"parentId\":0,\"name\":\"企业管理\",\"path\":\"/fas\",\"component\":\"\",\"componentName\":\"\",\"icon\":\"ep:dish-dot\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":[{\"id\":165,\"parentId\":137,\"name\":\"企业管理\",\"path\":\"info\",\"component\":\"company/info/index\",\"componentName\":\"\",\"icon\":\"ep:checked\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":166,\"parentId\":137,\"name\":\"企业跟踪\",\"path\":\"trace\",\"component\":\"company/trace/index\",\"componentName\":\"\",\"icon\":\"ep:box\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null}]},{\"id\":138,\"parentId\":0,\"name\":\"人才管理\",\"path\":\"/sda\",\"component\":\"\",\"componentName\":\"\",\"icon\":\"fa-solid:atom\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":[{\"id\":144,\"parentId\":138,\"name\":\"人才信息\",\"path\":\"crm/talent/index\",\"component\":\"crm/talent/index\",\"componentName\":\"Crmlalent\",\"icon\":\"fa-solid:american-sign-language-interpreting\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":145,\"parentId\":138,\"name\":\"人才跟踪\",\"path\":\"talent/talentTrack/index\",\"component\":\"talent/talentTrack/index\",\"componentName\":\"talentTrack\",\"icon\":\"fa-solid:angle-down\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null}]},{\"id\":139,\"parentId\":0,\"name\":\"合同管理\",\"path\":\"/contract\",\"component\":\"\",\"componentName\":\"\",\"icon\":\"ep:comment\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":[{\"id\":179,\"parentId\":139,\"name\":\"我的合同\",\"path\":\"manage\",\"component\":\"contract/contractManage/index\",\"componentName\":\"\",\"icon\":\"ep:coin\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":186,\"parentId\":139,\"name\":\"合同模板\",\"path\":\"template\",\"component\":\"publicView/index\",\"componentName\":\"\",\"icon\":\"ep:document\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null}]},{\"id\":140,\"parentId\":0,\"name\":\"财务管理\",\"path\":\"/finance\",\"component\":\"\",\"componentName\":\"\",\"icon\":\"ep:briefcase\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":[{\"id\":193,\"parentId\":140,\"name\":\"我的提成\",\"path\":\"commission\",\"component\":\"publicView/index\",\"componentName\":\"\",\"icon\":\"ep:box\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":200,\"parentId\":140,\"name\":\"我的付款\",\"path\":\"payment\",\"component\":\"publicView/index\",\"componentName\":\"\",\"icon\":\"ep:discount\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":207,\"parentId\":140,\"name\":\"我的收款\",\"path\":\"receive\",\"component\":\"publicView/index\",\"componentName\":\"\",\"icon\":\"ep:bicycle\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":214,\"parentId\":140,\"name\":\"我的垫款\",\"path\":\"advance\",\"component\":\"publicView/index\",\"componentName\":\"\",\"icon\":\"ep:baseball\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":221,\"parentId\":140,\"name\":\"上月结转\",\"path\":\"carryForward\",\"component\":\"publicView/index\",\"componentName\":\"\",\"icon\":\"ep:calendar\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null}]},{\"id\":141,\"parentId\":0,\"name\":\"业绩管理\",\"path\":\"/performance\",\"component\":\"\",\"componentName\":\"\",\"icon\":\"ep:eleme-filled\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":[{\"id\":228,\"parentId\":141,\"name\":\"业绩分配\",\"path\":\"allocation\",\"component\":\"publicView/index\",\"componentName\":\"\",\"icon\":\"ep:dish\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":235,\"parentId\":141,\"name\":\"我的业绩\",\"path\":\"myPerf\",\"component\":\"performance/myperf/index\",\"componentName\":\"\",\"icon\":\"ep:box\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null}]},{\"id\":142,\"parentId\":0,\"name\":\"知识管理\",\"path\":\"/knowledge\",\"component\":\"\",\"componentName\":\"\",\"icon\":\"ep:basketball\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":[{\"id\":242,\"parentId\":142,\"name\":\"知识库\",\"path\":\"knowBase\",\"component\":\"knowledge/base/index\",\"componentName\":\"\",\"icon\":\"ep:notebook\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":248,\"parentId\":142,\"name\":\"黑名单\",\"path\":\"blacklist\",\"component\":\"publicView/index\",\"componentName\":\"\",\"icon\":\"ep:stamp\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null}]},{\"id\":143,\"parentId\":0,\"name\":\"监督管理\",\"path\":\"/monitor\",\"component\":\"\",\"componentName\":\"\",\"icon\":\"ep:bicycle\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":[{\"id\":255,\"parentId\":143,\"name\":\"业绩监督\",\"path\":\"performance\",\"component\":\"publicView/index\",\"componentName\":\"\",\"icon\":\"ep:briefcase\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":262,\"parentId\":143,\"name\":\"财务监督\",\"path\":\"finance\",\"component\":\"publicView/index\",\"componentName\":\"\",\"icon\":\"ep:box\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":269,\"parentId\":143,\"name\":\"企业监督\",\"path\":\"company\",\"component\":\"publicView/index\",\"componentName\":\"\",\"icon\":\"ep:data-analysis\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null}]},{\"id\":88,\"parentId\":0,\"name\":\"租户管理\",\"path\":\"/tenant\",\"component\":\"\",\"componentName\":\"\",\"icon\":\"fa-solid:user-friends\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":[{\"id\":89,\"parentId\":88,\"name\":\"租户管理\",\"path\":\"system\",\"component\":\"tenant/system/index\",\"componentName\":\"tenantSystem\",\"icon\":\"fa-solid:users\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":94,\"parentId\":88,\"name\":\"套餐管理\",\"path\":\"package\",\"component\":\"tenant/package/index\",\"componentName\":\"tenantPackage\",\"icon\":\"ep:goods\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null}]},{\"id\":1,\"parentId\":0,\"name\":\"系统管理\",\"path\":\"/system\",\"component\":\"\",\"componentName\":\"\",\"icon\":\"fa:gavel\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":[{\"id\":2,\"parentId\":1,\"name\":\"用户管理\",\"path\":\"user\",\"component\":\"system/user/index\",\"componentName\":\"SystemUser\",\"icon\":\"ep:avatar\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":10,\"parentId\":1,\"name\":\"角色管理\",\"path\":\"role\",\"component\":\"system/role/index\",\"componentName\":\"SystemRole\",\"icon\":\"ep:user\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":19,\"parentId\":1,\"name\":\"菜单管理\",\"path\":\"menu\",\"component\":\"system/menu/index\",\"componentName\":\"SystemMenu\",\"icon\":\"ep:menu\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":24,\"parentId\":1,\"name\":\"部门管理\",\"path\":\"dept\",\"component\":\"system/dept/index\",\"componentName\":\"SystemDept\",\"icon\":\"ant-design:deployment-unit-outlined\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":29,\"parentId\":1,\"name\":\"岗位管理\",\"path\":\"post\",\"component\":\"system/post/index\",\"componentName\":\"SystemPost\",\"icon\":\"fa:address-book-o\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":34,\"parentId\":1,\"name\":\"字典管理\",\"path\":\"dict\",\"component\":\"system/dict/index\",\"componentName\":\"SystemDictType\",\"icon\":\"ep:collection\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":39,\"parentId\":1,\"name\":\"OAuth 2.0\",\"path\":\"oauth2\",\"component\":null,\"componentName\":null,\"icon\":\"fa:dashcube\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":[{\"id\":40,\"parentId\":39,\"name\":\"应用管理\",\"path\":\"oauth2/application\",\"component\":\"system/oauth2/client/index\",\"componentName\":\"SystemOAuth2Client\",\"icon\":\"ep:coin\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":45,\"parentId\":39,\"name\":\"令牌管理\",\"path\":\"token\",\"component\":\"system/oauth2/token/index\",\"componentName\":\"SystemTokenClient\",\"icon\":\"fa:key\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null}]},{\"id\":108,\"parentId\":1,\"name\":\"邮箱管理\",\"path\":\"mail\",\"component\":\"\",\"componentName\":\"\",\"icon\":\"fa-solid:mail-bulk\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":[{\"id\":109,\"parentId\":108,\"name\":\"邮箱账号\",\"path\":\"mail-account\",\"component\":\"system/mail/account/index\",\"componentName\":\"SystemMailAccount\",\"icon\":\"fa:universal-access\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":110,\"parentId\":108,\"name\":\"邮件模版\",\"path\":\"mail-template\",\"component\":\"system/mail/template/index\",\"componentName\":\"SystemMailTemplate\",\"icon\":\"fa:tag\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":111,\"parentId\":108,\"name\":\"邮件记录\",\"path\":\"mail-log\",\"component\":\"system/mail/log/index\",\"componentName\":\"SystemMailLog\",\"icon\":\"fa:edit\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null}]},{\"id\":85,\"parentId\":1,\"name\":\"审计日志\",\"path\":\"log\",\"component\":\"\",\"componentName\":null,\"icon\":\"ep:document-copy\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":[{\"id\":86,\"parentId\":85,\"name\":\"操作日志\",\"path\":\"operate-log\",\"component\":\"system/operatelog/index\",\"componentName\":\"SystemOperateLog\",\"icon\":\"ep:position\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":87,\"parentId\":85,\"name\":\"登录日志\",\"path\":\"login-log\",\"component\":\"system/loginlog/index\",\"componentName\":\"SystemLoginLog\",\"icon\":\"ep:promotion\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null}]},{\"id\":122,\"parentId\":1,\"name\":\"站内信管理\",\"path\":\"notify\",\"component\":\"\",\"componentName\":\"\",\"icon\":\"ep:message-box\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":[{\"id\":123,\"parentId\":122,\"name\":\"模板管理\",\"path\":\"notify-template\",\"component\":\"system/notify/template/index\",\"componentName\":\"SystemNotifyTemplate\",\"icon\":\"fa:archive\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":124,\"parentId\":122,\"name\":\"消息记录\",\"path\":\"notify-message\",\"component\":\"system/notify/message/index\",\"componentName\":\"SystemNotifyMessage\",\"icon\":\"fa:edit\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null}]},{\"id\":62,\"parentId\":1,\"name\":\"短信管理\",\"path\":\"sms\",\"component\":null,\"componentName\":null,\"icon\":\"ep:message\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":[{\"id\":63,\"parentId\":62,\"name\":\"短信渠道\",\"path\":\"sms-channel\",\"component\":\"system/sms/channel/index\",\"componentName\":\"SystemSmsChannel\",\"icon\":\"phone\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":68,\"parentId\":62,\"name\":\"短信模板\",\"path\":\"sms-template\",\"component\":\"system/sms/template/index\",\"componentName\":\"SystemSmsTemplate\",\"icon\":\"phone\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":75,\"parentId\":62,\"name\":\"短信日志\",\"path\":\"sms-log\",\"component\":\"system/sms/log/index\",\"componentName\":\"SystemSmsLog\",\"icon\":\"phone\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null}]}]},{\"id\":48,\"parentId\":0,\"name\":\"基础设施\",\"path\":\"/infra\",\"component\":\"\",\"componentName\":\"\",\"icon\":\"ep:menu\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":[{\"id\":49,\"parentId\":48,\"name\":\"代码生成\",\"path\":\"codegen\",\"component\":\"infra/codegen/index\",\"componentName\":\"InfraCodegen\",\"icon\":\"ep:document-copy\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":55,\"parentId\":48,\"name\":\"系统接口\",\"path\":\"swagger\",\"component\":\"infra/swagger/index\",\"componentName\":\"InfraSwagger\",\"icon\":\"fa:fighter-jet\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":56,\"parentId\":48,\"name\":\"API 日志\",\"path\":\"log\",\"component\":null,\"componentName\":null,\"icon\":\"fa:tasks\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":[{\"id\":78,\"parentId\":56,\"name\":\"访问日志\",\"path\":\"api-access-log\",\"component\":\"infra/apiAccessLog/index\",\"componentName\":\"InfraApiAccessLog\",\"icon\":\"ep:credit-card\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":79,\"parentId\":56,\"name\":\"错误日志\",\"path\":\"api-error-log\",\"component\":\"infra/apiErrorLog/index\",\"componentName\":\"InfraApiErrorLog\",\"icon\":\"ep:document-copy\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null}]},{\"id\":57,\"parentId\":48,\"name\":\"MySQL 监控\",\"path\":\"druid\",\"component\":\"infra/druid/index\",\"componentName\":\"InfraDruid\",\"icon\":\"fa-solid:box\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":58,\"parentId\":48,\"name\":\"Redis 监控\",\"path\":\"redis\",\"component\":\"infra/redis/index\",\"componentName\":\"InfraRedis\",\"icon\":\"fa:reddit-square\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":61,\"parentId\":48,\"name\":\"Java 监控\",\"path\":\"admin-server\",\"component\":\"infra/server/index\",\"componentName\":\"InfraAdminServer\",\"icon\":\"ep:coffee-cup\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":98,\"parentId\":48,\"name\":\"文件管理\",\"path\":\"file\",\"component\":\"\",\"componentName\":\"\",\"icon\":\"ep:files\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":[{\"id\":99,\"parentId\":98,\"name\":\"文件配置\",\"path\":\"file-config\",\"component\":\"infra/fileConfig/index\",\"componentName\":\"InfraFileConfig\",\"icon\":\"fa-solid:atom\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null},{\"id\":100,\"parentId\":98,\"name\":\"文件列表\",\"path\":\"file\",\"component\":\"infra/file/index\",\"componentName\":\"InfraFile\",\"icon\":\"ep:briefcase\",\"visible\":true,\"keepAlive\":true,\"alwaysShow\":true,\"children\":null}]}]}]}"

大家在看

recommend-type

FLUENT学习udf编程实例.pdf

FLUENT学习udf编程实例, 内部含有各种UDF实例,内容详实,解释清楚,希望对各位有帮助。最后附有案例,可以针对案例直接修改,写出符合自己要求的UDF。
recommend-type

SAP实施顾问宝典中文版PDF

SAP实施顾问宝典中文版,PDF,适合SAP初级顾问,初学者,刚工作的同学们。
recommend-type

S3IP-OCM 硬件规范

S3IP-OCM 硬件规范,由开放数据中心委员会发布。数据中心,交换机,路由器等产品开发可参考。
recommend-type

vb编写的 实时曲线图

vb 编写的实时曲线 曲线图 画图 曲线
recommend-type

C语言流程图生成工具

AutoFlowChart 自动生成流程图 AutoFlowchart 是一个极佳的根据源码生成流程图的工具 它生成的流程图支持展开 合拢 并且可以预定义流程图块的大小和间隔 移动和缩放流程图也很方便 你还可以把它导出到WORD文档或BMP文件 它可以帮助程序员更好地理解程序 制作文档和可视化代码 支持C C++ VC++ Visual C++ NET Delphi Object Pascal 主要功能 根据源程序生成流程图 导出流程图到WORD文档中 展开 合拢流程图 自动生成一个 TreeView显示所有函数 过程 同步显示对应块的源程序和流程图 自定义流程图的配色方案 自定义流程图的大小和间距 根据格式自动排列程序 自由缩小 放大 移动流程图 显示程序行号 支持清除当前流程图 导出流程图到 bmp文件 发展前瞻 ① 支持各种语言 已经完成Pascal C 待完成:Java FoxPro Basic Fortan等; ② 支持反向操作 可以动态修改流程图 并可根据流程图生成相应的语言代码; ③ 结合Delphi专家 嵌入IDE直接运行 已经完成详见主页 操作说明 ① 打开一个或多个文件; ② 双击一个If For While Case Repeat Try begin的起始行 你就可以看到流程图; ③ 双击流程图中相应的框 可以同步显示程序块位置;">AutoFlowChart 自动生成流程图 AutoFlowchart 是一个极佳的根据源码生成流程图的工具 它生成的流程图支持展开 合拢 并且可以预定义流程图块的大小和间隔 移动和缩放流程图也很方便 你还可以把它导出到WORD文档或BMP文件 [更多]

最新推荐

recommend-type

三菱Q系PLC伺服八轴控制程序解析:成熟可靠的工业自动化应用实例

三菱Q系PLC伺服八轴控制程序的实际应用案例。该程序已在生产设备上成功实施并稳定运行超过两年,适用于八个伺服电机的同步控制。文中不仅展示了硬件配置(如Q06HCPU、QD75P4、MR-J4-20B等)及其连接方式,还深入剖析了关键编程技巧,包括原点回归、往复运动控制以及高效的报警处理机制。此外,作者分享了许多宝贵的调试经验和注意事项,帮助读者避免常见错误。 适合人群:对三菱Q系PLC感兴趣的电气工程技术人员、自动化领域的从业者及爱好者。 使用场景及目标:①理解和掌握三菱Q系PLC在多轴伺服控制系统中的具体应用;②学习如何优化程序结构以提高系统性能;③获取实用的操作指南和技术诀窍,减少开发过程中可能出现的问题。 其他说明:本文提供的案例具有很高的参考价值,能够为相关领域的工程师提供有效的指导和支持。同时,它强调了理论与实践相结合的重要性,鼓励读者在实际工作中不断探索和创新。
recommend-type

恒压供水系统:昆仑通态触摸屏与ABB变频器ACS510直接通讯程序

恒压供水系统中昆仑通态触摸屏与ABB变频器ACS510之间的直接通讯技术及其应用。首先阐述了恒压供水系统的基本概念和工作原理,接着重点讲解了昆仑通态触摸屏与ABB变频器ACS510的通讯实现方式,包括通讯协议的选择、数据传输机制等。然后介绍了该系统的核心功能——参数监控与设定,操作人员可以通过触摸屏方便地查看和调整供水系统的各项参数。此外,文中提到该程序经过长期实践验证,已非常成熟,并配有详细的图纸和技术文档。最后强调了通讯控制和脚本策略的功能,使得整个系统更加智能化和高效。 适合人群:从事工业自动化领域的工程师、技术人员,尤其是对恒压供水系统感兴趣的从业者。 使用场景及目标:适用于需要稳定供水压力的场合,如大型建筑、工业园区及城市供水系统。主要目标是提高供水效率和稳定性,降低维护成本,提升用户体验。 其他说明:本文不仅介绍了具体的技术细节,还提供了实用的操作指导,有助于读者快速上手并应用于实际项目中。
recommend-type

Android开发进阶指南:大厂offer等你拿

安卓开发是当今信息技术领域一个重要的技能点。从基础到进阶,涵盖了从了解安卓系统架构到掌握复杂应用开发的全过程。要达到能够获得大厂offer的水平,不仅仅需要掌握基础,还需要深入理解并能够灵活运用高级技术和原理。在本篇知识分享中,我们将会深入探讨安卓基础和进阶的知识点,以及可能与之相关的Flutter与Java技术栈。 ### 安卓基础知识点 #### 安卓系统架构 安卓系统是基于Linux内核的开源操作系统,其架构可以分为四层:Linux内核层、系统库与Android运行时层、应用框架层以及应用层。Linux内核负责硬件抽象、安全和内存管理;系统库与Android运行时提供了开发所需的库文件和Android运行时环境;应用框架层提供了开发应用时可以调用的API;应用层则是开发者直接进行开发的层面。 #### 安卓四大组件 安卓四大组件包括Activity(活动)、Service(服务)、BroadcastReceiver(广播接收器)和ContentProvider(内容提供者)。这些是构建安卓应用的基本单元,各自承担不同的功能,开发者需要了解如何合理使用和管理这些组件。 #### 安卓开发基础 包括安卓开发环境搭建(如Android Studio的安装和配置)、UI布局设计(XML布局文件编写)、控件使用(按钮、文本框、列表等)、事件处理、数据存储(SharedPreferences、SQLite数据库、文件存储等)、网络通信(HTTP请求、WebView使用等)。 ### 安卓进阶知识点 #### 安卓性能优化 性能优化涉及到内存管理(避免内存泄漏、合理使用内存)、电量管理(减少后台运行任务)、流畅度优化(优化列表滑动、减少卡顿)、启动时间优化等方面。深入学习安卓的性能优化,需要对安卓系统的内部机制有深刻理解。 #### 安卓安全机制 安卓安全机制包括权限管理系统、应用沙盒机制、数据加密、网络安全传输等。掌握这些安全知识对于开发安全可靠的应用至关重要。 #### 安卓高级特性 这包括理解安卓的Material Design设计语言、多线程和异步处理、高级数据绑定和存取、服务组件化、以及使用安卓的测试框架进行单元测试和UI测试等。 ### 关联技术栈:Flutter与Java #### Flutter Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。Flutter使用Dart语言进行开发,但也可以使用Java和Kotlin。它支持热重载,可以快速测试和调试应用。学习Flutter可以为开发者打开跨平台开发的大门。 #### Java Java是安卓应用开发的主要编程语言。掌握Java语言对于理解安卓平台的运行机制、进行高效开发非常关键。虽然现在Kotlin也被推荐作为安卓开发的首选语言,但Java在安卓生态中依然占据重要位置。 ### 从基础到进阶的学习路径 1. **掌握安卓基础**:通过学习安卓四大组件、基础界面设计、数据存储等基础知识,为开发安卓应用打下坚实的基础。 2. **实践项目经验**:通过参与开源项目或独立开发小型应用,积累实际开发经验,加深对安卓架构和组件的理解。 3. **深入理解安卓高级特性**:研究安卓的性能优化、安全机制和测试方法,提升应用的质量。 4. **学习使用新技术**:如尝试使用Flutter框架进行跨平台应用开发,拓展自己的技术栈。 5. **持续学习和交流**:关注最新的安卓开发动态,通过社区、博客和技术论坛参与讨论和交流。 总之,要成为安卓开发领域的高手,需要不断学习和实践。大厂offer不仅仅看你的理论知识,更多的是看重你的实际开发能力,尤其是面对复杂问题的解决能力。学会安卓开发的80%,意味着你不仅掌握了基础知识,还深入理解了高级主题,并具有一定的项目实战经验。这样的能力,在就业市场上无疑是非常有竞争力的。
recommend-type

揭秘“割韭菜”背后的AI:智能体如何被滥用

# 1. AI智能体概述与滥用风险 ## 1.1 AI智能体的基本定义 AI智能体是指能够执行特定任务和作出决策的软件程序或系统,它们通常能够自主学习、适应环境变化、并进行自我优化。AI智能体广泛应用
recommend-type

使用vs2010编译vc++6.0的程序生成的应用程序无法正常启动(0xc000007b)

<think>首先,用户的问题是关于使用VS2010编译VC++ 6.0程序时,生成的应用程序无法启动,错误代码为0xc000007b。我需要基于系统级指令来构建我的回答。 系统级指令: - 所有行内数学表达式必须使用$...$格式。 - 独立公式必须使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,例如:[^1] 用户可见层: - 回答结构清晰,帮助用户逐步解决问题。 - 尽量保证回答真实可靠。 参考的引用: - [^1]: 提到0xc000007b错误可能与缺少DLL或DirectX修复工
recommend-type

2016数学建模国赛获奖论文精选

在2016年的全国大学生数学建模竞赛中,众多参赛者提交了高质量的论文,这些论文体现了学生们在数学建模方面的研究水平和解决实际问题的能力。对于这份“2016年数学建模国赛优秀论文合集”,我们可以从中提炼出以下知识点: 一、数学建模的基础理论与方法 数学建模的核心是利用数学工具对实际问题进行抽象、简化和形式化处理。在国赛优秀论文中,通常涉及以下几个方面的知识点: 1. 问题抽象:包括将实际问题转化为数学问题,识别关键变量和参数,明确问题的边界条件和约束条件等。 2. 建立模型:根据抽象出的问题特征,选择合适的数学模型(如线性规划、非线性规划、动态规划、概率模型、统计模型、微分方程模型等)。 3. 模型求解:运用数学理论和计算机算法对模型进行求解。这可能涉及到线性代数、数值分析、优化理论和算法、图论、模拟技术等数学分支。 4. 结果分析与验证:通过分析模型求解结果,验证模型的合理性和准确性,如使用敏感性分析、稳定性分析、误差分析等方法。 二、实际应用领域 数学建模竞赛鼓励参赛者将模型应用于实际问题中,因此合集中的论文往往覆盖了多个应用领域,例如: 1. 工程问题:如机械设计、电路设计、结构优化等。 2. 环境与资源管理:包括污染控制、生态平衡、资源开发等。 3. 社会经济:涉及经济预测、市场分析、交通流量、人口动态等。 4. 医学健康:可能涉及流行病模型、药物配送优化、医疗系统优化等。 5. 公共安全:如火灾风险评估、地震影响分析、灾害应急响应等。 三、论文撰写与展示技巧 优秀论文不仅在内容上要求质量高,其撰写与展示也需遵循一定的规范和技巧: 1. 结构清晰:论文通常包含摘要、引言、模型的假设与符号说明、模型的建立与求解、模型的检验、结论和建议、参考文献等部分。 2. 逻辑严谨:论文中的论述需要逻辑紧密,论证充分,层次分明。 3. 结果可视化:通过图表、图像等辅助手段,清晰展示研究结果和过程。 4. 结论有效:提供的结论或建议应当基于模型分析和验证的结果,具有实际参考价值。 四、特定的数学建模案例分析 在国赛优秀论文合集中,每一篇论文都是针对特定问题的案例分析。由于文件名称未提供具体内容,但我们可以假设每篇论文都涉及到不同类型的数学模型或算法的创新应用。例如: - A433.pdf可能探讨了某种新颖的优化算法在解决特定类型问题时的效能与局限。 - B022.pdf可能涉及对某社会经济现象的统计建模与分析。 - A140.pdf可能使用微分方程模型来分析环境问题中的某个动态过程。 - D056.pdf可能针对特定的工程问题提出了创新的数学解决方案。 - A028.pdf可能利用图论和网络分析对交通、通信等网络系统进行优化。 - B044.pdf可能对某种流行病模型进行了详细研究,并为公共政策制定提供依据。 - A194.pdf可能将机器学习和人工智能技术应用于数据分析,解决非结构化问题。 - C014.pdf可能利用概率模型对金融风险进行了评估和预测。 - B294.pdf可能针对医疗资源的优化配置提出了创新模型。 - B067.pdf可能对特定的公共安全问题进行了风险评估和应急响应策略的设计。 在阅读和研究这些优秀论文时,重点可以放在模型的创新点、解决方法的有效性和论文的写作质量上。通过学习这些论文,不仅可以获取丰富的数学建模知识,还能提升解决实际问题的能力,对于未来从事科研、数据分析、工程设计等领域的工作都有很大帮助。
recommend-type

【扣子插件进阶攻略】:深度定制与优化您的文档工作流

# 1. 扣子插件简介与基础使用 扣子插件是一款高效的数据管理工具,它通过其强大的功能和直观的用户界面,帮助用户提高工作效率。无论您是初学者还是经验丰富的专业人士,扣子插件都能够满足您的需求。在本章中,我们将简要介绍扣子插件的基础知识,并向您展示如何开始使用这款插件。 ## 1.1 扣子插件的基本概念 扣子插件是集成了数据管理、自动化任务和协作功能的
recommend-type

kkfileview有没有后台管理页面

<think>首先,用户的问题是关于kkFileView是否有后台管理界面。用户说:“我想了解kkfileview是否提供后台管理界面 请问kkfileview 是否有后台管理界面”。所以,我需要直接回答这个问题。 从系统级指令,我必须使用中文回答,并遵循格式要求:行内数学表达式用$...$,独立公式用$$...$$,但这个问题可能不涉及数学公式,所以我可以忽略这部分。另外,我需要生成相关问题。 现在,回顾用户提供的引用: - 引用[1]:提到在DzzOffice后台安装kkFileView插件,实现文件在线预览。后台管理系统界面友好。 - 引用[2]:提到kkfileview支持跨平
recommend-type

SAP EWM 710 BP系统配置与操作指南

标题“SAP EWM 710 BP.rar”指代一个名为“SAP EWM 710 BP”的文件,它被压缩在一个rar格式的压缩包中。EWM是SAP Extended Warehouse Management的缩写,它是一个高度灵活和扩展性强的仓库管理系统,为企业提供优化仓库操作和物流流程的能力。EWM 710 表示该系统版本为7.10,BP可能指的是业务过程(Business Process)或配置包(Business Package)。由于标题中提到了EWM和BP,可以推测这个压缩包内包含有关SAP EWM 7.10版本的特定业务过程或配置的信息和文档。 描述“EWM 710 BP”是对标题的简洁重申,没有额外提供信息。 标签“EWM”表示这个文件与SAP的扩展仓库管理系统相关。 压缩包中的文件名称列表揭示了包内可能包含的内容类型,下面将详细说明每个文件可能代表的知识点: 1. Thumbs.db是一个Windows系统生成的隐藏文件,用于存储缩略图缓存。它出现在压缩包列表中可能是因为在收集相关文件时不小心包含进去了,对SAP EWM 710 BP的知识点没有实际贡献。 2. Y38_BPP_EN_DE.doc、Y36_BPP_EN_DE.doc、Y36_BPP_DE_DE.doc、Y38_BPP_DE_DE.doc中,“BPP”很可能代表“Business Process Procedure”,即业务过程程序。这些文件名中的语言代码(EN_DE、DE_DE)表明这些文档提供的是双语(英语和德语)指导。因此,可以推断这些文件是关于SAP EWM 7.10版本中特定业务过程的详细步骤和配置说明。 3. Y32_BB_ConfigGuide_EN_DE.doc、Y31_BB_ConfigGuide_EN_DE.doc、Y38_BB_ConfigGuide_EN_DE.doc、Y33_BB_ConfigGuide_EN_DE.doc、Y37_BB_ConfigGuide_EN_DE.doc中的“BB”很可能是“Basic Building”的缩写,表明这些文档为基本构建配置指南。这些文件包含了SAP EWM系统中基础设置的步骤,可能是介绍如何设置库存管理、入库处理、出库处理、库存调整等仓库操作流程的指南。同时,文件中的语言代码也表明了这些配置指南同样提供英语和德语两种版本。 4. 整体来看,这个压缩包内包含了SAP EWM 7.10版本中业务过程和基础配置的详尽文档资料,它们提供了关于如何在SAP EWM系统中实施和管理仓库操作的全方位指导。文档覆盖了从基础设置到高级业务过程配置的各个方面,对于正在使用或计划部署EWM系统的用户来说,是极具价值的参考资料。 综上所述,通过分析压缩包内的文件名称,我们可以得知该压缩包可能包含SAP EWM 7.10版本的业务过程说明和基础配置指南,涵盖了对仓库管理系统的全面设置和操作指导。这些文件对于熟悉和深入理解SAP EWM系统的功能和特性是不可或缺的,为从事SAP EWM相关工作的专业人士提供了宝贵的文档资源。
recommend-type

【一键办公提升:扣子插件文档自动化攻略】:揭秘高效文档生成与管理技巧

# 1. 扣子插件的介绍和安装 扣子插件是一款功能强大的IT工具,旨在提高文档处理的效率,简化复杂的文档管理工作。在本章中,我们将首先介绍扣子插件的基本功能,然后详细说明如何在您的系统中进行安装。 ## 1.1 扣子插件的基本介绍 扣子插件集成了文档生成、管理、自动化操作等多个功能。它适用于日常办公和团队协作,尤其在自动化处理大量文档、优化工作流程方面表现出色。 ## 1.2 扣子插件的安装流程 要安装扣子插件,请按照以下步骤操作: 1. 访问官方网站或应用商店,下载最新版本的扣子插件安装包。 2. 双击安装包文件,根据提示完成安装向导。 3. 安装完成后,可以在浏览器或应用程序中