一.后台搭建

使用 vue-admin-template 来快速搭建后台管理,它包含了 Element UI & axios & iconfont & permission control & lint,这些搭建后台必要的东西。

Element是(饿了么团队)基于MVVM框架Vue开源出来的一套前端ui组件。官网: element-ui

1.快速搭建

若用vue官网提供的脚手架需要写跟多代码,比如登录界面、主界面菜单等。可以使用 vue-admin-template ,在此基础上开发,而且github上配有详细的模板说明,这样可以节省开发时间。

  1. 下载vue-admin-template(vue 2.0)进行解压
  2. 在命令提示符切换到该目录,输入命令安装所有依赖:

    cnpm install

  3. 运行

    npm run dev

2.工程结构

目录名称 存储内容
build 构建工程相关脚本
config 配置相关
src 工程源码
static 静态资源
src/api 访问后端API
src/utils 工具类
src/views 路由组件
src/router 路由

3.项目初始化

  1. 关闭语法规范性检查

    修改config/index.js : useEslint = false

  2. 国际化设置

    修改main.js :

    import locale from 'element‐ui/lib/locale/lang/en' --> import locale from 'elemen‐ui/lib/locale/lang/zh‐CN'

  3. 与easy-mock对接

    修改config下dev.env.js中BASE_API为easy-mock的Base URL,easy-mock最好部署到服务器上

    1. BASE_API: '"http://192.168.91.136:7300/mock/5af314a4c612520d0d7650c7"',

    easy-mock添加登录认证模拟数据

    地址: /user/login

    提交方式:post

    内容:

    1. {
    2. "code": 20000,
    3. "data": {
    4. "token": "admin"
    5. }
    6. }

    添加返回用户信息url模拟数据

    地址:/user/info

    提交方式:get

    内容:

    1. {
    2. "code": 20000,
    3. "data": {
    4. "roles": ["admin"],
    5. "role": ["admin"],
    6. "name": "admin",
    7. "avatar": "https://wpimg.wallstcn.com/f778738c‐e4f8‐4870‐b634‐56703b4acafe.gif"
    8. }
    9. }

4.更改标题与菜单

  1. 修改index.html的标题为“后台管理系统”,修改后浏览器自动刷新。

  2. 修改src/router下的index.js中constantRouterMap的内容

    1. export const constantRoutes = [
    2. {
    3. path: '/login',
    4. component: () => import('@/views/login/index'),
    5. hidden: true
    6. },
    7. {
    8. path: '/404',
    9. component: () => import('@/views/404'),
    10. hidden: true
    11. },
    12. {
    13. path: '/',
    14. component: Layout,
    15. // redirect: '/dashboard',
    16. redirect: '/hostmanager/server', //登录后重定向到服务器信息页面
    17. children: [{
    18. path: 'dashboard',
    19. name: 'Dashboard',
    20. component: () => import('@/views/dashboard/index'),
    21. meta: { title: 'Dashboard', icon: 'dashboard' }
    22. }]
    23. },
    24. {
    25. path: '/hostmanager',
    26. component: Layout,
    27. redirect: '/hostmanager/list',
    28. name: 'hostmanager',
    29. meta: { title: '主机管理', icon: 'example' },
    30. children: [
    31. {
    32. path: 'server',
    33. name: 'Server',
    34. component: () => import('@/views/server/index'),
    35. meta: { title: '服务器信息', icon: 'form' }
    36. },
    37. {
    38. path: 'list',
    39. name: 'List',
    40. component: () => import('@/views/list/index'),
    41. meta: { title: '主机列表', icon: 'table' }
    42. },
    43. {
    44. path: 'task',
    45. name: 'Task',
    46. component: () => import('@/views/task/index'),
    47. meta: { title: '任务控制', icon: 'tree' }
    48. }
    49. ]
    50. },
    51. {
    52. path: '/testqueue',
    53. component: Layout,
    54. children: [
    55. {
    56. path: 'index',
    57. name: 'testQueue',
    58. component: () => import('@/views/queue/index'),
    59. meta: { title: '测试队列', icon: 'form' }
    60. }
    61. ]
    62. },
    63. {
    64. path: '/taskmanager',
    65. component: Layout,
    66. meta: { title: '任务管理', icon: 'example' },
    67. children: [
    68. {
    69. path: 'list',
    70. name: 'taskList',
    71. component: () => import('@/views/taskList/index'),
    72. meta: { title: '任务列表', icon: 'form' }
    73. },
    74. {
    75. path: 'detail',
    76. name: 'taskDetail',
    77. component: () => import('@/views/taskDetail/index'),
    78. meta: { title: '任务清单', icon: 'form' }
    79. },
    80. {
    81. path: 'create',
    82. name: 'taskCreate',
    83. component: () => import('@/views/taskCreate/index'),
    84. meta: { title: '新建任务', icon: 'form' }
    85. },
    86. ]
    87. },
    88. // 404 page must be placed at the end !!!
    89. { path: '*', redirect: '/404', hidden: true }
    90. ]

二.element-ui使用

1.表格组件

  1. <el-table :data="list" border style="width: 100%;">
  2. <el-table-column prop="id" label="活动ID" min-width="1"></el-table-column>
  3. <el-table-column prop="name" label="活动名称" min-width="1"></el-table-column>
  4. <el-table-column prop="address" label="活动地址" min-width="1"></el-table-column>
  5. <el-table-column prop="starttime" label="开始日期" min-width="1"></el-table-column>
  6. <el-table-column label="操作" min-width="1">
  7. <template slot-scope="scope">
  8. <el-button type="text" size="small" @click="handleEdit(scope.row.id)">修改</el-button>
  9. <el-button type="text" size="small" @click="handleDelete(scope.row.id)">删除</el-button>
  10. </template>
  11. </el-table-column>
  12. </el-table>
  13. <script>
  14. import gatheringApi from '@/api/gathering'
  15. export default {
  16. data(){
  17. return {
  18. list:[]
  19. }
  20. },
  21. created(){
  22. this.fetchData();
  23. },
  24. methods:{
  25. fetchData(){
  26. gatheringApi.getList().then(response => {
  27. this.list=response.data
  28. });
  29. }
  30. }
  31. }
  32. </script>

当没有使用template模板页时,一般加上prop属性,若有template时,可以为:

  1. <el-table-column label="主机名" min-width="2">
  2. <template slot-scope="scope">{{scope.row.name}}</template>
  3. </el-table-column>
  4. <el-table-column label="操作" min-width="3">
  5. <template slot-scope="scope">
  6. <el-button type="primary" size="small" @click="findTask(scope.$index,scope.row)">查看</el-button>
  7. <el-button type="info" size="small" :disabled="scope.row.status !== '空闲'" @click="createTask(scope.$index,scope.row)">新建</el-button>
  8. </template>
  9. </el-table-column>

slot-scope用于指定当前行的上下文。使用scope.row可以获取行对象。

table组件的属性:

参数 说明 类型
data 显示的数据 array

table-column组件的属性:

参数 说明 类型
label 显示的标题 string
prop 对应列内容的字段名 string
width 对应列的宽度 number
min-width 按比例显示宽度 number

官方文档:table组件

2.分页组件

  1. <eltable :data="list" border style="width: 100%"></el-table>
  2. <el-pagination
  3. @size-change="fetchDate"
  4. @current-change="fetchDate"
  5. :current-page="currentPage"
  6. :page-sizes="[10,20,30,50]"
  7. :page-size="pageSize"
  8. layout="sizes, prev, pager, next, jumper, ->, total, slot"
  9. :total="total">
  10. </el-pagination>
  11. <script>
  12. import gatheringApi from '@/api/gathering'
  13. export default {
  14. data(){
  15. return {
  16. list:[],
  17. total:0,//总记录数
  18. currentPage:1,//当前页
  19. pageSize:10,//每页大小
  20. searchMap: {}//查询表单绑定变量
  21. }
  22. },
  23. created(){
  24. this.fetchData();
  25. },
  26. methods:{
  27. fetchData(){
  28. gatheringApi.search(this.currentPage,this.pageSize,this.searchMap).then(response =>{
  29. this.list=response.data.rows
  30. this.total=response.data.total
  31. });
  32. }
  33. }
  34. }
  35. </script>

上面的分页方式是数据量比较大是传currentPage, pageSize给后端,由后端来实现分页;

数据量比较小时由前端实现分页,如下:

  1. <el-table border :data="list.slice((currentPage-1)*pageSize, currentPage*pageSize)" style="width: 100%;margin-top: 20px;"></el-table>
  2. <el-pagination
  3. background
  4. @size-change="handleSizeChange"
  5. @current-change="handleCurrentChange"
  6. :current-page="currentPage"
  7. :page-size="pageSize"
  8. layout="sizes, prev, pager, next, jumper, ->, total"
  9. :total="list.length">
  10. </el-pagination>
  11. <script>
  12. export default {
  13. data() {
  14. return {
  15. list: [],
  16. currentPage: 1,
  17. pageSize: 10,
  18. }
  19. },
  20. methods: {
  21. // 分页相关函数
  22. handleSizeChange(val){
  23. console.log(`每页${val}条`)
  24. this.pageSize = val
  25. },
  26. handleCurrentChange(val){
  27. console.log(`当前页:${val}`)
  28. this.currentPage = val
  29. },
  30. }
  31. }
  32. </script>

pagination的常用属性:

参数 说明 类型 可选值 默认值
page-size 每页显示条目个数 number - 10
total 总条目数 number - -
current-page 当前页数,支持.sync修饰符 number - 1
layout 组件布局 string sizes,prev,pager,next,jumper,->,total,slot prev,pager,next,jumper, ->, total
pages-sizes 每页显示个数选择器的选项设置 number[] - [10,20,30,40,50,100]

pagination的常用事件:

事件名称 说明 回调参数·
size-changer pageSize改变时会触发 每页条数
current-change currentPage改变时会触发 当前页

官网链接:pagination组件

3.表单组件

在分页列表的基础上实现条件查询功能

  1. <!-- 行内表单:用于查询条件 -->
  2. <el-form :inline="true">
  3. <el-form-item label="活动名称">
  4. <el-input v-model="searchMap.name" placeholder="活动名称"></el-input>
  5. </el-form-item>
  6. <el-form-item label="活动日期">
  7. <el-date-picker
  8. type="date"
  9. v-model="searchMap.startdate"
  10. placeholder="选择开始日期"
  11. ></el-date-picker>
  12. <el-date-picker
  13. type="date"
  14. v-model="searchMap.enddate"
  15. placeholder="选择结束日期"
  16. ></el-date-picker>
  17. </el-form-item>
  18. <el-button type="primary" @click="fetchDate">查询</el-button>
  19. <el-button type="primary" @click="handleEdit('')">新增</el-button>
  20. </el-form>
  21. <!-- 对话框表单 -->
  22. <el-dialog title="活动编辑" :visible.sync="addDialogVisible">
  23. <el-form label-width="80px">
  24. <el-form-item label="活动名称">
  25. <el-input v-model="pojo.name" placeholder="活动名称"></el-input>
  26. </el-form-item>
  27. <el-form-item label="开始日期">
  28. <el-date-picker type="date" v-model="pojo.starttime" placeholder="开始日期"></el-date-picker>
  29. </el-form-item>
  30. <el-form-item label="活动详情">
  31. <el-input type="textarea" v-model="pojo.detail" :rows="2" placeholder="活动详情"></el-input>
  32. </el-form-item>
  33. <el-form-item label="是否可见">
  34. <el-switch v-model="pojo.state" active-color="#13ce66" inactive-color="#ff4949"
  35. active-value="1" inactive-value="0"></el-switch>
  36. </el-form-item>
  37. <el-form-item>
  38. <el-button type="primary" @click="handerSave">保存</el-button>
  39. <el-button @click="addDialogVisible=false">关闭</el-button>
  40. </el-form-item>
  41. </el-form>
  42. </el-dialog>

form(表单)组件官方文档:form组件

input(文本框)组件官方文档:input组件

date-picker(日期框)组件官方文档:DatePicker组件

switch(开关)组件官方文档:switch组件

注意:input组件中多行文本框设置

4.对话框组件

  1. <el-dialog title="新建任务" :visible.sync="addDialogVisible" width="37%">
  2. </el-dialog>
  3. <script>
  4. data(){
  5. ......
  6. addDialogVisible: false // 对话框是否显示
  7. }
  8. </script>

属性title为对话框标题,visible为是否显示。变量addDialogVisible用于控制对话框的显示,点击按钮将dialogFormVisible = true即可打开对话框。

dialog(对话框)组件官方文档:dialog组件

5.下拉选组件

  1. <elformitem label="城市">
  2. <elselect vmodel="pojo.city" placeholder="请选择">
  3. <eloption
  4. vfor="item in cityList"
  5. :key="item.id"
  6. :label="item.name"
  7. :value="item.id">
  8. </eloption>
  9. </elselect>
  10. </elformitem>
  11. <script>
  12. import cityApi from '@/api/city'
  13. export default {
  14. data(){
  15. return {
  16. cityList: []
  17. }
  18. },
  19. created() {
  20. cityApi.getList().then(response =>{
  21. this.cityList = response.data
  22. })
  23. }
  24. }
  25. </script>

select(下拉选)组件官方文档:select组件

6.消息提示组件

  1. this.$message({
  2. message: response.message,
  3. type: (response.flag?'success':'error')
  4. });
  5. // 或者
  6. this.$message.success('请求成功!');

message(消息提示)组件官方文档:message组件

7.关于尺寸介绍

默认尺寸是最大的,其次中等、小、超小

button按钮

size:medium / small / mini

input输入框

size:medium / small / mini

select选择器

size:medium / small / mini

form表单

label-width:表单域标签的宽度

size:medium / small / mini (用于控制该表单域下组件的尺寸)

table表格

size:medium / small / mini

三.vue中使用element-ui示例

对活动管理的查询、分页、条件查询,增加,修改,删除等。采用的easy-mock的模拟接口。

gathering.vue

  1. <template>
  2. <div>
  3. <br/>
  4. <el-form :inline="true">
  5. <el-form-item label="活动名称">
  6. <el-input v-model="searchMap.name" placeholder="活动名称"></el-input>
  7. </el-form-item>
  8. <el-form-item label="活动日期">
  9. <el-date-picker
  10. type="date"
  11. v-model="searchMap.startdate"
  12. placeholder="选择开始日期"
  13. ></el-date-picker>
  14. <el-date-picker
  15. type="date"
  16. v-model="searchMap.enddate"
  17. placeholder="选择结束日期"
  18. ></el-date-picker>
  19. </el-form-item>
  20. <el-button type="primary" @click="fetchDate">查询</el-button>
  21. <el-button type="primary" @click="handleEdit('')">新增</el-button>
  22. </el-form>
  23. <el-table :data="list" border style="width: 100%;">
  24. <el-table-column prop="id" label="活动ID" min-width="1"></el-table-column>
  25. <el-table-column prop="name" label="活动名称" min-width="1"></el-table-column>
  26. <el-table-column prop="address" label="活动地址" min-width="1"></el-table-column>
  27. <el-table-column prop="starttime" label="开始日期" min-width="1"></el-table-column>
  28. <el-table-column label="操作" min-width="1">
  29. <template slot-scope="scope">
  30. <el-button type="text" size="small" @click="handleEdit(scope.row.id)">修改</el-button>
  31. <el-button type="text" size="small" @click="handleDelete(scope.row.id)">删除</el-button>
  32. </template>
  33. </el-table-column>
  34. </el-table>
  35. <el-pagination
  36. @size-change="fetchDate"
  37. @current-change="fetchDate"
  38. :current-page="currentPage"
  39. :page-sizes="[10,20,30,50]"
  40. :page-size="pageSize"
  41. layout="sizes, prev, pager, next, jumper, ->, total, slot"
  42. :total="total">
  43. </el-pagination>
  44. <el-dialog title="活动编辑" :visible.sync="addDialogVisible">
  45. <el-form label-width="80px">
  46. <el-form-item label="活动名称">
  47. <el-input v-model="pojo.name" placeholder="活动名称"></el-input>
  48. </el-form-item>
  49. <el-form-item label="开始日期">
  50. <el-date-picker type="date" v-model="pojo.starttime" placeholder="开始日期"></el-date-picker>
  51. </el-form-item>
  52. <el-form-item label="活动详情">
  53. <el-input type="textarea" v-model="pojo.detail" :rows="2" placeholder="活动详情"></el-input>
  54. </el-form-item>
  55. <el-form-item label="选择城市">
  56. <el-select v-model="pojo.city" placeholder="请选择">
  57. <el-option
  58. v-for="item in cityList"
  59. :key="item.id"
  60. :value="item.id"
  61. :label="item.name"></el-option>
  62. </el-select>
  63. </el-form-item>
  64. <el-form-item label="是否可见">
  65. <el-switch v-model="pojo.state" active-color="#13ce66" inactive-color="#ff4949"
  66. active-value="1" inactive-value="0"></el-switch>
  67. </el-form-item>
  68. <el-form-item>
  69. <el-button type="primary" @click="handerSave">保存</el-button>
  70. <el-button @click="addDialogVisible=false">关闭</el-button>
  71. </el-form-item>
  72. </el-form>
  73. </el-dialog>
  74. </div>
  75. </template>
  76. <script>
  77. import gatheringApi from '@/api/gathering'
  78. import cityApi from '@/api/city'
  79. export default {
  80. data(){
  81. return {
  82. list: [], // 当前活动列表
  83. // 分页初始化
  84. currentPage: 1, // 当前页
  85. pageSize: 20, // 每页条数,默认是10
  86. searchMap: {}, //查询条件
  87. total: 0, // 总条数
  88. // 对话框
  89. addDialogVisible: false,
  90. pojo: {}, // 对话框表单数据对象
  91. // 城市下拉选列表
  92. cityList: [], //城市列表
  93. id: '', // 当前编辑的id
  94. }
  95. },
  96. created() {
  97. this.fetchDate();
  98. cityApi.getList().then(res => {
  99. this.cityList = res.data;
  100. console.log(res.data)
  101. })
  102. },
  103. methods: {
  104. // 分页根据条件获取列表数据
  105. fetchDate(){
  106. gatheringApi.search(this.currentPage, this.pageSize, this.searchMap).then(res => {
  107. this.list = res.data.rows; // 当前页面列表
  108. this.total = res.data.total; // 总条数
  109. console.log(res.data.rows)
  110. }).catch(err => {
  111. alert('请求失败!')
  112. })
  113. },
  114. // 新增或修改
  115. handleEdit(id){
  116. this.id = id; // 标准是新增还是修改
  117. this.addDialogVisible = true; // 打开窗口
  118. if (id){ // 修改
  119. // 调用查询
  120. gatheringApi.findById(id).then(response => {
  121. this.pojo = response.data;
  122. })
  123. } else { // 新增
  124. this.pojo = {} // 清空表单
  125. }
  126. },
  127. // 保存
  128. handerSave(){
  129. gatheringApi.updateById(this.id,this.pojo).then(res => {
  130. this.$message({
  131. message: res.message,
  132. type: (res.flag? 'success':'error'),
  133. });
  134. if (res.flag){ //添加成功
  135. this.fetchDate();
  136. }
  137. });
  138. this.addDialogVisible = false; //关闭对话框
  139. },
  140. handleDelete(id){
  141. this.$confirm('确定要删除此条记录吗','提示',{
  142. confirmButtonText: '确定',
  143. cancelButtonText: '取消',
  144. type: 'warning'
  145. }).then(() => {
  146. gatheringApi.deleteById(id).then(res => {
  147. this.$message({
  148. message: res.message,
  149. type: (res.flag? 'success':'error')
  150. });
  151. if (res.flag){
  152. this.fetchDate(); // 刷新数据
  153. }
  154. });
  155. }).catch(() => {});
  156. }
  157. },
  158. }
  159. </script>
  160. <style>
  161. </style>

gathering.js

  1. import request from '@/utils/request'
  2. const group_name = 'gathering'
  3. const api_name = 'gathering'
  4. export default {
  5. getList() { // 获取所有
  6. return request(
  7. {
  8. url: `/${group_name}/${api_name}`,
  9. method: 'get'
  10. }
  11. );
  12. },
  13. search(page, size, searchMap){ // 分页
  14. return request(
  15. {
  16. url: `/${group_name}/${api_name}/search/${page}/${size}`,
  17. method: 'post',
  18. data: searchMap
  19. }
  20. );
  21. },
  22. save(pojo){ // 新增对话框保存
  23. return request(
  24. {
  25. url: `/${group_name}/${api_name}`,
  26. method: 'post',
  27. data: pojo
  28. }
  29. )
  30. },
  31. findById(id){ // 根据id查询
  32. return request({
  33. url: `/${group_name}/${api_name}/${id}`,
  34. method: 'get'
  35. });
  36. },
  37. updateById(id,pojo){
  38. if (id == null || id == ''){
  39. return this.save();
  40. };
  41. return request({
  42. url: `/${group_name}/${api_name}/${id}`,
  43. method: 'put',
  44. data: pojo
  45. });
  46. },
  47. deleteById(id){
  48. return request({
  49. url: `/${group_name}/${api_name}/${id}`,
  50. method: 'delete'
  51. });
  52. }
  53. }

city.js

  1. import request from "@/utils/request"
  2. export default {
  3. getList(){
  4. return request(
  5. {
  6. url:'/base/city',
  7. method:'get'
  8. }
  9. );
  10. }
  11. }

Element-ui 使用详细介绍的更多相关文章

  1. Element Ui使用技巧——Form表单的校验规则rules详细说明

    Element UI中对Form表单验证的使用介绍: Form 组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item的 prop 属性设置为需校验的字段名 ...

  2. 【转】JSF中的三大核心组件 UI标签的详细介绍和使用举例

    JSF提供了大量的UI标签来简化创建视图.这些UI标签类似于ASP.NET中的服务器组件.使用这些标签,可以通过其value,binding,action,actionListener等属性直接绑定到 ...

  3. Element ui结合springboot的简单实战

    Eelment UI简单实战 前端开发 1 创建项目,导入element ui(略) 2 大致设计出想要的效果,如下 3 创建包 根据设计的大致模样在项目的components中创建对应的包,方便以后 ...

  4. Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例

    概要  前面,我们已经学习了ArrayList,并了解了fail-fast机制.这一章我们接着学习List的实现类——LinkedList.和学习ArrayList一样,接下来呢,我们先对Linked ...

  5. Java 集合系列12之 TreeMap详细介绍(源码解析)和使用示例

    概要 这一章,我们对TreeMap进行学习.我们先对TreeMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用TreeMap.内容包括:第1部分 TreeMap介绍第2部分 TreeMa ...

  6. Android manifest之manifest标签详细介绍

    AndroidManifest详细介绍 本文主要对AndroidManifest.xml文件中各个标签进行说明.索引如下: 概要PART--01 manifest标签PART--02 安全机制和per ...

  7. [转]详细介绍java中的数据结构

    详细介绍java中的数据结构 本文介绍的是java中的数据结构,本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类.一起来看本文吧! 也许你已经熟练使用了java.util包里面的各 ...

  8. 详细介绍java中的数据结构

    详细介绍java中的数据结构 http://developer.51cto.com/art/201107/273003.htm 本文介绍的是java中的数据结构,本文试图通过简单的描述,向读者阐述各个 ...

  9. Java 集合系列 09 HashMap详细介绍(源码解析)和使用示例

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

随机推荐

  1. 磁盘IO过高时的参考

    主要命令:echo deadline > /sys/block/sda/queue/scheduler 注:以下的内容仅是提供参考,如果磁盘IO确实比较大的话,是数据库,可以进行读写分离或者分库 ...

  2. jmeter--单个接口通,自动化不通时

    单个接口通,自动化不通时,对比两者请求 post 请求的格式,内容编码

  3. explicit作用

    在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换. explicit使用注意事项: explicit 关键字只能用 ...

  4. UVA 12299 线段树 ( 单点跟新 , 区间查询)

    题目链接:题意:在传统的RMQ的基础上加上一个操作:shift(i1,i2,i3...ik),表示将这些元素,依次向左移动一位(训练指南247页) #include <iostream> ...

  5. Centos7安装Redis3.X

    本文只是简单搭建Redis,为了整合ELK用,后面会详细写. Redis:REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高 ...

  6. 页面禁止刷新处理Js实现

    document.onkeydown = function(e) { e = window.event || e; var k = e.keyCode; //屏蔽ctrl+R,F5键,ctrl+F5键 ...

  7. PCL智能指针疑云 <二> 使用同一智能指针作为PCL预处理API的输入和输出

    问题介绍: slam构建地图,先进行降采样,再进行可视化或存储.然而经过降采样后,代码没有报错的情况下,点云数据散成一团.将代码和点云数据展示如下, pcl::VoxelGrid<Lidar:: ...

  8. sqli--labs(25)

    过滤了 or and 的get注入 0X01测试阶段 ’报错 ” 不报错 那么就是'闭合 好的我们知道闭合后来#闭合后面 ?id= 语法不正确 发现过滤了 or and 那么我们继续构造 ?id= 0 ...

  9. sqli-labs(6)

    双注入GET双引号字符型注入 0x01(这里思路和05一样只是单引号变成了双引号) 首先我们看见这个网站 又是不显示值的 所以想到用报错的信息来得出你想要的结果 有了思路之后来试试一下吧 先填入单引号 ...

  10. JDK源码--HashMap(之resize)

    1.HashMap源码阅读目标了解具体的数据结构(hash及冲突链表.红黑树)和重要方法的具体实现(hashCode.equals.put.resize...) 2.重要方法 hashCode 与 e ...