2024问题总结

news/2025/2/15 22:42:13/

20241225 XlVirtualList解决数据量大,滚动后,再点下拉会出现空白

setTimeout(() => {

          document.querySelector('.vxe-table--body').style.marginTop = 0

        })

20241224双向数据绑定问题

  1. 加key
  2. 是否已有这个元素
  3. $set
  4. 慢半拍加$nextTick

:key="isPlan?scope.row.dblamount:null"

  1. 有结算计划时只能输入一个字就会失去焦点

20241213vue中Import加{}和不加{},有什么区别?

默认导出(default export)每个模块可以有一个默认导出,它可以是一个变量、函数或组件。当你导入默认导出时,不需要使用大括号{}

// MyComponent.js
export default function MyComponent() {
  // ...
}

// App.js
import MyComponent from './MyComponent';

命名导出(named export):一个模块可以有多个命名导出。当你导入命名导出时,需要使用大括号{}。

// utils.js
export function funcA() {
  // ...
}

export function funcB() {
  // ...
}

// App.js
import { funcA, funcB } from './utils';

20211203 scoped样式穿透

<style lang="scss" scoped>

.menu-wrapper /deep/ .el-submenu__title

</style>

20241128 PinyinMatch

思路一:

computed: {

    filterList() {

      if (this.fieldtypesearch.length) {

        return this.detailList.filter(val => {

          return PinyinMatch.match(val.strdicttypecodeandname, this.fieldtypesearch)

        })

      } else {

        return this.detailList

      }

    }

  },

思路二:

<el-input

      slot="reference"

      v-model="currVal"

      placeholder="请输入"

      maxlength="250"

      clearable

      @change="changeEvent"

      @input="inputEvent"

      @focus="focusEvent"

    />

inputEvent(val) {

      if (val) {

        this.employeesList = this.copyList.filter((item) => {

          return PinyinMatch.match(item.strfullname, val)

        })

      } else {

        this.employeesList = this.copyList

      }

    },

20241113 提取后缀.ofd

function checkFile(fileValue) {

    var index = fileValue.lastIndexOf(".");

    var fileValueSuffix = fileValue.substring(index); // 获取文件后缀

    if (fileValueSuffix.toLowerCase() === ".ofd") {

        return "OFD"; // 文件是 OFD 类型

    } else {

        return "其他类型"; // 文件不是 OFD 类型

    }}

// 示例用法var fileName = "example.ofd";var fileType = checkFile(fileName);

console.log("文件类型:" + fileType);

export function getFileExtendingName(filename) {

  // 文件扩展名匹配正则

  var reg = /\.[^\.]+$/

  var matches = reg.exec(filename)

  if (matches) {

    return matches[0]

  }

  return ''

}

20241112 Vxe-table判断校验是第几行问题

<vxe-table

@valid-error="errorEvent"

>

方法一:

errorEvent({ row, rowIndex }) {

      this.cellClickVxe({ row })

    },

方法二:

errMap[Object.keys(errMap)[0]][0].row

20241107账套登录

http://192.168.0.115:9527/book/

system

gold12#$

用户组下新增

点新建

密码必须是gold

一键更新dblink

Portainer重启  xlykcb_global

如果启不来可能是.dmp比较旧

把最新打包的/xlykpub/发版记录/资金支出管控系统/V11.9.9.20250110/ce/空账套 下载XLYKCE.dmp

放到ftp 115里

/hrp/dbmanage/dbfiles里

.dmp要换成新的

登录:admin  XLyk888888

20241106 Portainer登录

118上 admin  goldgold

115上 admin  jsp123456

20241106财政一体化数据中台登录

http://192.168.0.115:9527/fiscal/#/login?redirect=%2Fdashboard

admin XLyk888888

20241105北京CA

我这有个工具,你对比一下试试

https://demo-system.isignet.cn/signHelper/sign.html

20241028 el-tooltip

<el-tooltip v-if="widths !== 'auto'" class="item" effect="dark" :visible-arrow="false" :content="node.label" placement="top-start">

              <span>{{ node.label }}</span>

            </el-tooltip>

20240814formula计算

我把 表头和标题的 数字类型 合并成一个json   variables   然后把 公式转成${variables.p212}*10      然后用eval(eval('`' + str + '`'))  计算

20241013replaceAll

if (column.property === 'strmainno') {

        return value.replaceAll(',', '\n')

        // return value.split(',').join('\n')

      }

let str = "我是一段文本aaa";

let newStr = str.replace(/aaa/gm,"bbb")

//let newStr = str.replace(new RegExp("aaa","gm"),"bbb")

console.log(newStr) //我是一段文本bbb

if(!String.prototype.replaceAll){

    String.prototype.replaceAll = function(str1,str2){

        return this.replace(new RegExp(str1,"gm"),str2);

    }

}

//用法:

let str = "我是一段文本aaa";

let newStr = str.replaceAll('aaa','bbb')

console.log(newStr) //我是一段文本bbb

20240813 12位整数两位小数校验

rules: {

      dblquantity: [

          { required: true, message: '必填字段', trigger: 'blur' },

          {

            pattern: '^[1-9]\\d{0,11}(\\.\\d{1,2})?$|^0(\\.\\d{1,2})?$',

            message: '整数最多12位小数2位',

            trigger: 'blur',

            transform: (value) => String(value)

          }

        ],

Dblquantity2: [

          { required: true, message: '必填字段', trigger: 'blur' },

          {

            pattern: '^[1-9]\\d{0,11}$',

            message: '整数最多12位',

            trigger: 'blur',

            transform: (value) => String(value)

          }

        ],

}

 checkQuantity(val, scope, item) {

if (

            !/^(0\.(?!0+$)\d{1,2}|^[1-9][0-9]{0,11}(\.\d{0,2})?)$/.test(

              scope.row.dblquantity * 1

            )

          ) {

            this.$message.error('输入最多12位整数2位小数!')

            scope.row.dblquantity = ''

            scope.row.totalprice = ''

            return false

          }

if (

            !/^[1-9]\d{0,11}$/.test(

              scope.row.dblquantity * 1

            )

          ) {

            this.$message.error('输入最多12位整数!')

            scope.row.dblquantity = ''

            scope.row.totalprice = ''

            return false

          }

}

dblcheckquantity: [

          { required: true, message: '必填字段', trigger: 'blur' },

          {

            pattern: '^[1-9]\\d{0,11}(\\.\\d{1,2})?$|^0(\\.\\d{1,2})?$',

            message: '仅可输入最多12位整数+2位小数的正数',

            trigger: 'change'

          }

        ],

        dblcurrprice: [

          { required: true, message: '必填字段', trigger: 'blur' },

          {

            pattern: '^[1-9]\\d{0,11}(\\.\\d{1,4})?$|^0(\\.\\d{1,4})?$',

            message: '仅可输入最多12位整数+4位小数的正数',

            trigger: 'change'

          }

        ]

20240730vue自写组件可输入,可下拉选择

<el-popover

    v-model="visible"

    width="300"

    trigger="focus"

    :disabled="disabled"

  >

    <vxe-grid

      ref="grid"

      border

      highlight-hover-row

      auto-resize

      height="300"

      class="vxecss"

      :show-overflow="true"

      :data="employeesList"

      :columns="tableColumn"

      @cell-click="cellClickEvent"

      @scroll="xTableScroll"

    />

    <el-input

      slot="reference"

      v-model="currVal"

      placeholder="请输入"

      maxlength="250"

      clearable

      @change="changeEvent"

      @input="inputEvent"

      @focus="focusEvent"

    />

  </el-popover>

methods: {

    xTableScroll({ scrollTop }) {

      this.xTableScrollTop = scrollTop

    },

    focusEvent() {

      setTimeout(() => {

        this.$refs.grid.scrollTo(0, this.xTableScrollTop)

        if (this.lngemployeeid) {

          const curRow = this.employeesList.filter(item => {

            return item.lngemployeeid === this.lngemployeeid

          })

          this.$refs.grid.setCurrentRow(curRow[0])

        }

      })

},

cellClickEvent({ row }) {

      this.visible = false

      this.curRow = row

      this.$emit('select', row)

    },

20240730点击空白处,下拉隐藏(print)

this.$refs.select.blur() // 使select失去焦点 隐藏下拉框

<el-popover

      v-if="!onlyStream"

      v-model="showPrint"

      placement="bottom"

      trigger="manual"

    >ddddd</el-popvoer>

mounted() {

    document.addEventListener('click', this.closePop)

  },

methods: {

    // 点击空白处所有popover消失

    closePop(e) {

      if (e.target.className !== 'el-input__inner' && e.target.className !== 'el-input__clear'

) {

        this.showPrint = false

      }

}

}

20240704密码

/hrp/dbmanage/oracle

http://192.168.8.100:9527/book/#/index

GOLDgold1

admin

XLyk888888

供应商0100020/1qaz2wsx!@

公司wifi: xlyk123*#789

账号苗倩倩,密码abc123abc

公司外部禅道

http://81.68.150.48:900/zentao/my/

jiayufang

Aa@1123456789

20240726vxe-table 滚动到当前行,选中当前行

:key="tableKey"

 return {

      tableKey: 0,

this.tableKey = +new Date()

this.$refs.table.setActiveRow(addList)

this.$refs.table.setCurrentRow(addList)

0240703 sql

财政一体化数据库

select * from xlykfl0001.sysmenu t ;

动态列宽整体修改 

select t.strtitle,t.intwidth from baselistcolumn t where t.lngmenuid=600038 for update

update baselistcolumn t set t.intwidth=100 where t.strtitle='状态'; 

改变字段的sql 

update sysmenu t set t.strurl='cashier-payments',t.strmenuen='CashierPayments',t.strviewurl='/second/index' where t.lngmenuid=600043; 

update sysmenu t set t.strurl='cashier-payment',t.strmenuen='CashierPayment',t.strviewurl='/cashier-payment/cashier-payment/index' where t.lngmenuid=600044; 

xlykce0001 gold yun 

资金支出细表数据 

select * from otherexecutedetail t order by t.lngotherexecuteid desc for update 

查找身份证为空的人 

update employee t set t.strcardno='Rqd/puyXhGX/ndGGhUyhW/5a3pKebU9DArWZ7vF1DyY=' where t.strcardno is null 

Select * FROM (select *

from sysmenu t 

where t.lngproductid = 313 

start with t.strmenuname = '教学项目预算' 

connect by prior t.lngmenuid = t.lngparentid) WHERE strmenuname = '生成预算方案'; 

select * from sysmenu t where t.lngmenuid=1015 or t.lngmenuid=1045 for update 

select t.*,t.rowid 

from sysmenu t 

where t.lngproductid = 315 

and (t.lngmenuid in (600038, 600040, 600057, 600058, 600063, 600065,600208)

or t.lngparentid in (600038, 600040, 600057, 600058, 600063, 600065,600208))

order by t.lngmenuid 

select t.*,t.rowid 

from sysmenu t 

where t.lngproductid = 315 

and (t.lngmenuid in (600060,600250, 600251,600252,600253)

or strmenuname like '%还款审批%')

order by t.lngmenuid 

select t.*, t.rowid from SYSMENU t where t.lngproductid=311 order by lngmenuid desc 

select t.*, t.rowid from SYSMENU t where t.lngproductid=311 and t.lngparentid=200003 

select t.*, t.rowid from SYSMENU t where t.lngproductid=311 and t.strmenuname like '%平衡计分卡%' 

select t.*, t.rowid from LISTSTYLE t where t.strkey like '%borrowapply%' 

select t.strqrcode,t.lngreceipttypeid from xlykce0001.costexecute t where t.bytstatus=2; 

用户解锁 

alter user xlykcb0001 account unlock;  

select * from sysmenu t where t.lngproductid=324 and t.lngmenuid in (1100302,1100202) for update 

资金支出iframe数据库 

select * from RECEIPTTYPEROUTE 

SELECT * FROM XLYKCB0014.DEPARTMENT d WHERE STRDEPARTMENTCODE like '5501' FOR UPDATE ;

20240621数据库查询

20240610 部署

cd /hrp/publish

sh unistall

sh install

20240620部署gz包

tar –czvf ce.gz ce

http://192.168.8.188:9090/#/index

用户名:root 密码:gold

2024.6.17图片预览

export function pdfPreview(url) {

  this.pdfUrl = (process.env.NODE_ENV === 'development' ? process.env.VUE_APP_BASEURL : `${this.baseapi}`) + '/fileweb/download/previewFileByUniqFileName?filename=' + url + '&dbKey=' + sessionStorage.getItem('dbKey')

  window.open(this.pdfUrl)

}

this.pdfPreview(item.url)

2024.5.30 千位分割符,两位小数

this.sum= this.sumNum(data, column.property).toLocaleString('en', { minimumFractionDigits: column.editRender.props.limit })

// 千分位小数formatter

export function formatterThousandDecimal(row, column, cellValue) {

  if ((cellValue !== null && cellValue) || cellValue === 0) {

    cellValue = Number(cellValue).toFixed(2)

    cellValue += ''

    if (!cellValue.includes('.')) cellValue += '.'

    return cellValue.replace(/(\d)(?=(\d{3})+\.)/g, function($0, $1) {

      return $1 + ','

    }).replace(/\.$/, '')

  }

}

<el-table-column

            v-if="bodyIntpreset.dblpriceIsview===0"

            key="dblprice"

            prop="dblprice"

            :label="bodyIntpreset.dblpriceshowname"

            min-width="140"

            align="right"

            :width="headWidth.dblprice"

            :formatter="formatterThousandDecimal"

          />

<span v-if="pageType==='detail'">

                {{ formatterThousandDecimal(null,null,scope.row.dblpayprice) }}

{{dblamount |currency}}

              </span>

<div v-if="pageType === 'detail' && !isEdit('dblamount')">{{ scope.row.dblamount| currency }}</div>

import XEUtils from 'xe-utils'

export function formatterCommafyFixed(row, column, cellValue) {

  return cellValue && XEUtils.commafy(XEUtils.toFixed(cellValue, 2))

}

this.allDblamount = XEUtils.commafy(XEUtils.toFixed(allDblamount, 2))

formatterThousandNews(cellValue) {

      return cellValue && parseFloat(cellValue).toLocaleString('en-US', {

        minimumFractionDigits: 0,

        maximumFractionDigits: 4

      })

    },

{{ formatterThousandNews(scope.row[item.fieldname]) }}

合计:{{ choiceTotal }}

computed: {

    choiceTotal() {

      const sum = this.multipleSelection.reduce((acc, cur) => { acc += cur.dblamount; return acc }, 0)

      return parseFloat(sum.toFixed(2)).toLocaleString()

    }

  },

computed: {

    computedDblamount() {

      return parseFloat(this.dblamount.toFixed(2)).toLocaleString()

    },

2024.5.21 表头排序过滤

<vxe-table-column

          min-width="260"

          field="stritemname"

          title="物品名称"

          show-overflow

          header-align="center"

          :edit-render="{

            name: '$select',

            enabled: !(pageType === 'detail'),

          }"

          :filters="[{ data: '' }]"

          :filter-method="filterItemMethod"

          :filter-recover-method="filterItemRecoverMethod"

          sortable

        >

          <template #header="{ column }">

            <span>{{ column.title }}</span>

            <DynamicFilter

              ref="DynamicFilter"

              :table-list="mainForm.consumedetailList"

              :unique-value="mainForm.strreceiptno"

              :default-list="copydetailList"

              :column-name="'stritem'"

              :is-filter="1"

              :isinput="1"

              :type-list="[1, 2, 3, 4]"

              @setFilter="setFilterEvent"

              @reset="reset"

              @sort="sort"

            />

          </template>

          <!-- <template #filter="{ $panel, column }">

            <input v-for="(option, index) in column.filters" :key="index" v-model="option.data" class="my-input" type="type" placeholder="按回车确认筛选" @input="$panel.changeOption($event, !!option.data, option)" @keyup.enter="$panel.confirmFilter()">

          </template> -->

          <template #default="{row}">

            <span>{{ row.stritem }}</span>

          </template>

          <template #edit="scope">

            <span>{{ scope.row.stritem }}</span>

          </template>

        </vxe-table-column>

2024.03.05数据库知识

密码:gold

20240308可用额计算

出差申请单/专项四个单子

第二行可用额=上一行可用额-申请金额

删除第一行,第一行可用额为最大可用额,所有额度重新计算

差旅报销单

第二行可用额=上一行可用额-报销金额

删除第一行,第一行可用额为最大可用额,所有额度重新计算

删除其他行,所有额度重新计算

如果是删除,并有申请金额

每组的第一条改变资金来源后,第二条要是预算额的最大值

最大可用额=最大可用额-申请金额

如果有原始申请额度,并且改变的报销金额比原始申请额度小,减原始申请额度,否则减当前额度

支出申请单

第二行可用额=上一行可用额-申请金额

删除第一行,第一行可用额为最大可用额,所有额度重新计算

每组的第一条改变资金来源后,第二条要是预算额的最大值

支出报销单

同差旅报销单

20240316 headerClassVxe

import { headerIconEditVxe, headerClassVxe } from '@/base/utils'

<vxe-table

:header-cell-class-name="headerIconEditVxe"

<el-table

:header-cell-class-name="headerIconEdit"

<el-table-column

label-class-name="tableHeaderEdit tableHeaderStar"

<vxe-table-column

header-class-name="vxetableHeaderEdit vxetableHeaderStar"

2024.5.15 el与vxe都校验

1.all:写上字红框会消失,单独vxe校验:失去焦点红框消失

2.all:只用el校验文本框不用点两次

3.只用vxe,可以不用写<el-form-item>

2024.3.19数字校验

data() {

    const validatePass = (rule, value, callback) => {

      if (value === '' || value === null) {

        callback(new Error('请输入密码'))

      } else if (passwordChina(value)) {

        callback(new Error('不能包含汉字'))

      } else if (!this.setRulues(value)) {

        if (this.complicatedWrod) {

          callback(new Error(this.setRuluesMeass()))

        } else {

          callback()

        }

      }

      callback()

    }

    return {}

}

rules: {

        pwd: [

          { required: true, message: '密码不能为空', trigger: 'blur' },

          { validator: validatePass, trigger: 'blur' }

        ]

      }

20240318选择器

document.querySelector('.continuitys-warp').scrollTop = 0

closePopOver() {

      this.$refs.printBtn && this.$refs.printBtn.$el.click()

    },

const myField = this.$refs.textarea.$el.children[0]

// 锚点跳转

    goAnchor(selector, index) {

      this.activeBtn = index

      this.$el.querySelector(selector).scrollIntoView()

    },

20240402获取响应头里的参数

const zipname = res.responseHeader['content-disposition'].split("''")[1]

20240407加路由

一级

Strmenuname:保障金管理

strurl: /security-fund

Stricon:

Strmenuen:SecurityFund

strviewurl: layout

二级

Strmenuname:验收入库

strurl:high-acceptance-storage

Stricon:asset_assets_warehousing

strmenuen:HighAcceptanceStorage

strviewurl: /second/index

三级

Strmenuname:数据字典对照

strurl:        xlyk-dict-match

strmenuen: XlykDictMatch

strviewurl:/asset-data/xlyk-dict/xlyk-dict-match

20240409 el-select 下拉没有数据但是还显示着名称

解决办法:加key

2024.4.19清空表单

this.drawerForm = this.$options.data.call(this).drawerForm

this.formInline = this.$options.data().formInline

2024.4.22输入的字符串转数字

// 将输入的字符串转换为数字

  const num = parseFloat(value);

const num = (“123”)*1

2024.4.23自定义过滤器,保留两位小数

// 自定义过滤器,确保金额精确到指定小数位数

Vue.filter('currency', function(value, currency, decimals) {

  if (!value) return '0.00';

  value = parseFloat(value).toFixed(decimals);

  return currency + value;

});

// 使用自定义过滤器

<span>{{ item.amount | currency '¥' 2 }}</span>

computed: {

    computedDblamount() {

      return parseFloat(this.dblamount.toFixed(2)).toLocaleString()

    },

}

2024.4.24发票验真

invoicebaseinfo  保存成功

保存成功!验真结果:税局服务异常,建议15-20分钟后重试!

2024.4.26 重新渲染table

this.$nextTick(() => {

          this.$refs.table.doLayout()

          this.$refs.table.updateData(newValue)

        })

<el-talbe

 :row-key="getRowKey"

>

<vxe-table

:row-config="{useKey:true}"

>

<el-table-column

        v-if="has['Approval']"

        type="checkbox"

        width="50"

        align="center"

        reserve-selection

        fixed="left"

      />

return{

getRowKey: row => {

        return row.lngborrowapplyid

      },

}

2024.4.30重新渲染vxe-table

this.$nextTick(() => {

              this.tableKey = +new Date()

              // this.$refs.table.refreshColumn()

              this.$refs.table.recalculate()

const vxeColumns = this.$refs.table.getColumns()

              this.$refs.table.loadColumn(vxeColumns)

this.$refs.grid.loadData(this.copyList)

            })

2024.5.6vxe-table多选回显

<vxe-table

      ref="table"

      @checkbox-all="selectChangeEvent"

      @checkbox-change="selectChangeEvent"

    >

selectChangeEvent({ records, reserves }) {

        this.currentRow = [...reserves, ...records]

      }

<el-table

      ref="table"

      v-loading="listLoading"

      :data="tableData"

      :row-key="getRowKey"

      border

      stripe

      :height="tableHeight"

      :header-cell-style="{'background':'#F5F4F7'}"

      @selection-change="handleSelectionChange"

    >

      <el-table-column

        v-if="$route.query.isMult==='many' || multiContractIds.length>0"

        type="selection"

        :reserve-selection="true"

        width="50"

        align="center"

        fixed="left"

      />

</el-table>

      getRowKey: row => {

        return row.lngcontractinitid

      },

2024.5.8 vxe-table校验

validRules:{

            emgMoney: [

             校验字段: [{

                    validator (e) {

                        if (e.row.行内条件字段属性=="1"&&!e.cellValue) {

                          return new Error('xxxx不能为空!')

                        }

                      }

               }

             ],

          },

vxeRules: {

         name: [

          { required: true, message: '请输入' },

          { validator: nameValid }

        ],

      },

validRules: {

        lngoutitemid: [{

          validator(e) {

            if (!(e.row.blnissettleplan === 1 && !e.row.dblamount) && !e.cellValue) {

              return new Error('必填项')

            }

          }

        }],

data() {

    const validateUsername = (rule, value, callback) => {

      if (!value) {

        callback(new Error('请输入用户名'))

      }

      if (!validUsername(value)) {

        callback(new Error('请输入正确的用户名'))

      } else {

        callback()

      }

    }

return{}

}

//validator里有message,rules里不用写message

Rules:{

username: [{ required: true, trigger: 'blur', validator: validateUsername }]}


http://www.ppmy.cn/news/1572364.html

相关文章

Python的那些事第二十一篇:Python Web开发的“秘密武器”Flask

基于 Flask 框架的 Python Web 开发研究 摘要 在 Web 开发的江湖里,Python 是一位武林高手,而 Flask 则是它手中那把小巧却锋利的匕首。本文以 Flask 框架为核心,深入探讨了它在 Python Web 开发中的应用。通过幽默风趣的笔触,结合实例和表格,分析了 Flask 的特性、优势以…

本地生活服务平台(源码+文档+部署+讲解)

引言 随着城市化进程的加速&#xff0c;本地生活服务的需求日益多样化和个性化。本地生活服务平台通过数字化手段&#xff0c;为社区居民提供了一个全面、便捷的服务体验&#xff0c;从而提升社区服务体验和生活质量。 系统概述 本地生活服务平台采用前后端分离的架构设计&a…

innovus如何分步长func和dft时钟

在Innovus工具中&#xff0c;分步处理功能时钟&#xff08;func clock&#xff09;和DFT时钟&#xff08;如扫描测试时钟&#xff09;需要结合设计模式&#xff08;Function Mode和DFT Mode&#xff09;进行约束定义、时钟树综合&#xff08;CTS&#xff09;和时序分析。跟随分…

SQL Server查看存储过程的历史执行时间

在 SQL Server 中&#xff0c;查看存储过程的历史执行时间可以帮助识别性能瓶颈&#xff0c;判断是否需要进行优化。以下是几种常用的方法来查看或监控存储过程的执行时间&#xff1a; 1. 使用 SQL Server Profiler SQL Server Profiler 是一个图形化工具&#xff0c;可以捕获…

FPGA实现SDI视频缩放转GTY光口传输,基于GS2971+Aurora 8b/10b编解码架构,提供工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目我这里已有的 GT 高速接口解决方案本博已有的 SDI 编解码方案我这里已有的FPGA图像缩放方案 3、工程详细设计方案工程设计原理框图SDI 输入设备GS2971芯片BT1120转RGB…

Java(Springboot)

get请求 在Controller中--->从仓库里取出要用的mysql----->对于get请求&#xff08;httpsession,model容器&#xff09;----->从httpsession取出userid再赋值给userid----->用userid在mysql获取用户的信息------>然后用户的信息在保存在model容器里---->ret…

游戏引擎学习第101天

回顾当前情况 昨天的进度基本上完成了所有内容&#xff0c;但我们还没有进行调试。虽然我们在运行时做的事情大致上是对的&#xff0c;但还是存在一些可能或者确定的bug。正如昨天最后提到的&#xff0c;既然现在时间晚了&#xff0c;就不太适合开始调试&#xff0c;所以今天我…

JVM组成

JVM是什么&#xff1f; JVM&#xff08;Java Virtual Machine&#xff09;&#xff1a;Java程序的运行环境(java二进制字节码的运行环境) 好处&#xff1a; 1.一次编写&#xff0c;到处运行 Java代码是如何做到一次编写&#xff0c;到处运行&#xff1f; 计算机的最底层是计…