(字节码增强技术)
https://www.jianshu.com/p/78c08f96ac5f

https://blog.csdn.net/lovebosom/article/details/107252432
https://blog.csdn.net/chengyuqiang/article/details/91379102
https://www.cnblogs.com/yifeiyaoshangtian/p/10282680.html

sudo docker run -p 3306:3306 --name mysql
-v /opt/module/mysql/log:/var/log/mysql
-v /opt/module/mysql/data:/var/lib/mysql
-v /opt/module/mysql/conf:/etc/mysql
-e MYSQL_ROOT_PASSWORD=1qaz@WSX
-d mysql:5.7
“source /etc/profile; docker exec -i thread02 jstack 1 2>&1”
docker exec -it thread02 ps -ef | grep java
docker exec -it thread02 jstack 1

# 基于这个镜像构建
FROM java:8
# 作者
MAINTAINER lyx.wachs
RUN mkdir /usr/app
# 创建图片上传的路径
RUN mkdir /usr/app/upload
# 复制程序到内部
ADD thread-demo-0.0.1-SNAPSHOT.jar /usr/app
# 切换工作目录
WORKDIR /usr/app
# 暴露端口
EXPOSE 8080
# 镜像运行时执行
ENTRYPOINT ["java","-jar","thread-demo-0.0.1-SNAPSHOT.jar"]

定时任务:https://blog.csdn.net/noaman_wgs/article/details/80984873
https://www.cnblogs.com/nc923/p/11288072.html
layui-官方demo:

 <!DOCTYPE html>
<html lang="en">
<head><meta charset="utf-8"><meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><title>表格操作 - layui</title><link rel="stylesheet" href="../src/css/layui.css"><style>body{padding: 20px; /*overflow-y: scroll;*/}</style>
</head>
<body><h1 id="hh">标题</h1><script type="text/html" id="toolbarDemo"><div class="layui-btn-container"><button class="layui-btn layui-btn-sm" lay-event="getCheckData">获取选中行数据</button><button class="layui-btn layui-btn-sm" lay-event="getCheckLength">获取选中数目</button><button class="layui-btn layui-btn-sm" lay-event="getData">获取当前页所有数据</button><button class="layui-btn layui-btn-sm" lay-event="isAll">验证是否全选</button><button class="layui-btn layui-btn-sm" lay-event="reload">重载(保留初始参数)</button><button class="layui-btn layui-btn-sm" lay-event="reload2">重载(不保留初始参数)</button><button class="layui-btn layui-btn-sm" id="dropdown">更多菜单 <i class="layui-icon layui-icon-down layui-font-12"></i></button></div>
</script><table id="test" lay-filter="test"></table><div id="appendtest"></div>
<script type="text/html" id="TPL_appendtest"><table class="layui-table" lay-data="{url:'./json/table/demo2.json', page: true, limit: 6}" lay-filter="appendtest"><thead><tr><th lay-data="{checkbox:true, fixed:'left'}" rowspan="2"></th><th lay-data="{field:'username', width:80}" rowspan="2">联系人</th><th lay-data="{field:'amount', width:120}" rowspan="2">金额</th></tr></thead></table>
</script><script type="text/html" id="barDemo"><a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a><a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script><script type="text/html" id="usernameTpl"><a href="" class="layui-table-link">{{d.username || ''}}</a>
</script><script type="text/html" id="switchTpl"><input type="checkbox" name="yyy" lay-skin="switch" lay-text="女|男">
</script><script type="text/html" id="cityTpl"><select lay-ignore><option value="浙江杭州">浙江杭州</option><option value="江西南昌">江西南昌</option><option value="湖北武汉">湖北武汉</option></select>
</script><script type="text/html" id="checkboxTpl"><input type="checkbox" name="" title="锁定" checked>
</script><script type="text/html" id="LAY_table_tpl_email"><span {{# if(!d.activate){ }}style="color:#999"{{# } }}>{{ d.email }}</span>
</script><table id="test2" lay-filter="test2"></table><div style="display: none1;"><table class="layui-table" lay-data="{width:800, height: 300, url:'json/table/demo2.json', page: true, limit: 6}"><thead><tr><th lay-data="{checkbox:true, fixed:'left'}" rowspan="2"></th><th lay-data="{field:'username', width:80}" rowspan="2">联系人</th><th lay-data="{field:'amount', width:120}" rowspan="2">金额</th><th lay-data="{align:'center'}" colspan="3">地址</th><th lay-data="{fixed: 'right', width: 155, align: 'center', toolbar: '#barDemo'}" rowspan="2">操作</th></tr><tr><th lay-data="{field:'province', width:130}">省</th><th lay-data="{field:'city', width:130}">市</th><th lay-data="{field:'zone', width:200}">区</th></tr></thead></table><table class="layui-table" lay-data="{url:'json/table/demo2.json', page: true, limit: 6}"><thead><tr><th lay-data="{field:'username'}" rowspan="3">联系人</th><th lay-data="{field:'amount', width:120,hide:1}" rowspan="3">金额</th><th lay-data="{align:'center'}" colspan="5">地址1</th><th lay-data="{align:'center'}" colspan="2">地址2</th><th lay-data="{fixed: 'right', width: 120, align: 'center', toolbar: '#barDemo'}" rowspan="3">操作</th></tr><tr><th lay-data="{field:'province', width:120,hide:1}" rowspan="2">省</th><th lay-data="{field:'city', width:80,hide:1}" rowspan="2">市</th><th lay-data="{align:'center'}" colspan="2">详细</th><th lay-data="{field:'zone'}" rowspan="2">区</th><th lay-data="{field:'province', width:80}" rowspan="2">省</th><th lay-data="{field:'city', width:80}" rowspan="2">市</th></tr><tr><th lay-data="{field:'address', width:120,hide:1}">小区</th><th lay-data="{field:'house', width:150,hide:1}">单元</th></tr></thead></table><table id="demo"></table><div class="layui-btn-group"><button class="layui-btn" data-type="parseTable">转化为数据表格</button></div><table class="layui-table" lay-skin="line" lay-filter="parse-table-demo"><thead><tr><th lay-data="{checkbox:true}"></th><th lay-data="{field:'username', width:200}">昵称</th><th lay-data="{field:'joinTime', width:150}">加入时间</th><th lay-data="{field:'sign'}">签名</th></tr> </thead><tbody><tr><td></td><td>贤心1</td><td>2016-11-28</td><td>人生就像是一场修行a</td></tr><tr><td></td><td>贤心2</td><td>2016-11-29</td><td>人生就像是一场修行b</td></tr><tr><td></td><td>贤心3</td><td>2016-11-30</td><td>人生就像是一场修行c</td></tr></tbody></table><table class="layui-table" lay-filter="parse-table-demo"><thead><tr><td rowspan="2" lay-data="{field:'louceng'}">楼层</td><td colspan="2">1单元</td><td colspan="2">2单元</td></tr><tr><td lay-data="{field:'men1', width:80}">1门</td><td lay-data="{field:'men2', width:80}">2门</td><td lay-data="{field:'men3', width:80}">1门</td><td lay-data="{field:'men4', width:80}">2门</td></tr></thead><tbody><tr><td>3楼</td><td>301</td><td>302</td><td>301</td><td>302</td></tr><tr><td>2楼</td><td>201</td><td>202</td><td>201</td><td>202</td></tr><tr><td>1楼</td><td>101</td><td>102</td><td>101</td><td>102</td></tr></tbody></table>
</div><script src="../src/layui.js" src1="//www.layuicdn.com/layui-v2.0.1/layui.js" charset="utf-8"></script>
<script>
layui.use(['table', 'dropdown'], function(){var table = layui.table,$ = layui.$,laytpl = layui.laytpl,dropdown = layui.dropdown;//全局设定某参数table.set({where: {token: '全局的 token',access: '全局的 access'}//,defaultToolbar: ['filter'],limit: 30//,url: 'list'//,height: 300});$('#appendtest').append($('#TPL_appendtest').html())table.init('appendtest');//渲染window.ins1 = table.render({elem: '#test',height: 400//,width: 600,title: '用户数据表',url: 'json/table/demo1.json'//,size: 'lg',page: {}//,autoSort: false //是否自动排序。如果否,则由服务端排序//,loading: false,totalRow: true,limit: 30,toolbar: '#toolbarDemo',defaultToolbar: ['filter', 'exports', 'print', {title: '帮助',layEvent: 'LAYTABLE_TIPS',icon: 'layui-icon-tips'}],escape: true,cols: [[{type: 'checkbox', fixed: 'left'},{field:'id', title:'ID', width:80, fixed: 'left', unresize: true, sort: true, totalRowText: '合计:'},{field:'username', title:'用户名', width:120, edit: 'text', templet: '#usernameTpl'},{field:'email', title:'邮箱', hide: 0, width:150, edit: 'text', templet: function(d){return '<em>'+ d.email +'</em>'}},{field:'sex', title:'性别', width:80, edit: 'text', sort: true},{field:'city', title:'城市', width:120},{field:'sign', title:'签名'},{field:'experience', title:'积分', width:80, sort: true, totalRow: '{{ d.TOTAL_NUMS }} 分', templet: '<div>{{ d.experience }} 分</div>'},{field:'ip', title:'IP', width:120},{field:'logins', title:'登入次数', width:100, sort: true, totalRow: true},{field:'joinTime', title:'加入时间', width:120},{fixed: 'right', title:'操作', toolbar: '#barDemo', width:150}]],initSort1: {field: 'experience' //排序字段,对应 cols 设定的各字段名,type: 'desc' //排序方式  asc: 升序、desc: 降序、null: 默认排序},headers: {headers_token: 'sasasas'},where: $.extend({}, table.config.where, {test: '渲染的 test',token: '渲染的 token',key: 'experience',order: 'asc'}),done: function(){//下拉菜单dropdown.render({elem: '#dropdown' //可绑定在任意元素中,此处以上述按钮为例,data: [{id: 0,title: '刷新'}]//菜单被点击的事件,click: function(obj){table.reload('test');}});},error: function(res, msg){console.log(res, msg)}/*,response: {statusName: 'status',statusCode: 200},parseData: function(res){return {"status": res.status,"msg": res.message,"count": res.total,"data": res.data.list};}*/});//排序事件table.on('sort(test)', function(obj){console.log(obj);return;layer.msg('服务端排序。order by '+ obj.field + ' ' + obj.type);//服务端排序table.reload('test', {initSort: obj//,page: {curr: 1} //重新从第一页开始,where: { //重新请求服务端key: obj.field //排序字段,order: obj.type //排序方式}}, true);});//工具栏事件table.on('toolbar(test)', function(obj){var config = obj.config;var checkStatus = table.checkStatus(config.id);switch(obj.event){case 'add':layer.msg('添加');break;case 'update':layer.msg('编辑');break;case 'delete':layer.msg('删除');break;case 'getCheckData':var data = checkStatus.data;layer.alert(JSON.stringify(data));break;case 'getCheckLength':var data = checkStatus.data;layer.msg('选中了:'+ data.length + ' 个');break;case 'getData':var getData = table.getData(obj.config.id);console.log(getData);layer.alert(JSON.stringify(getData));break;case 'isAll':layer.msg(checkStatus.isAll ? '全选': '未全选')break;case 'LAYTABLE_TIPS':layer.alert(config.title || 'Table for layui-v'+ layui.v);break;case 'reload'://深度重载var instReload = table.reload('test', {where: {abc: 123,test: '重载的 test'},page: {curr: 5, limit: 20},cols: ins1.config.cols//,height: 300//,url: 'x'}, true);break;case 'reload2'://浅重载table.reload('test', {where: {efg: 'sasasas'//,test: '新的 test2'//,token: '新的 token2'},cols: [[{type: 'checkbox', fixed: 'left'},{field:'id', title:'ID', width:80, fixed: 'left', unresize: true, sort: true, totalRowText: '合计:'},{field:'sex', title:'性别', width:80, edit: 'text', sort: true},{field:'experience', title:'积分', width:80, sort: true, totalRow: true, templet: '<div>{{ d.experience }} 分</div>'},{field:'logins', title:'登入次数', width:100, sort: true, totalRow: true},{field:'joinTime', title:'加入时间', width:120}]]//,height: 500});break;};});table.on('row(test)', function(obj){console.log(obj);//layer.closeAll('tips');});table.render({elem: '#test2',url: 'json/table/demo1.json',contentType: 'application/json',page: { //详细参数可参考 laypage 组件文档curr: 5,groups: 1,first: false,last: false,layout: ['limit', 'prev', 'page', 'next', 'count'] //自定义分页布局}//,height: 300,cellMinWidth: 80//,skin: 'line',toolbar: true,cols: [[{field: 'id', hide: true},{field: 'username', title: '用户名'},{field: 'email', title: '邮箱'},{title:'操作', align:'center', toolbar: '#barDemo'}/*{type:'numbers'},{field:'id', title:'ID', unresize: true, sort: true},{field:'username', title:'用户名', templet: '#usernameTpl'},{field:'email', title:'邮箱'},{xfield:'sex', title:'性别', templet: '#switchTpl', minWidth: 85, align:'center'},{field:'lock', title:'是否锁定', templet: '#checkboxTpl', minWidth: 110, align:'center'},{field:'city', title:'城市'}*/]]});//监听表格行点击table.on('tr', function(obj){console.log(obj)});//监听表格复选框选择table.on('checkbox(test)', function(obj){console.log(obj)});//监听表格单选框选择table.on('radio(test)', function(obj){console.log(obj)});//监听表格单选框选择table.on('rowDouble(test)', function(obj){console.log(obj);});//监听单元格编辑table.on('edit(test)', function(obj){var value = obj.value //得到修改后的值,data = obj.data //得到所在行所有键值,field = obj.field; //得到字段console.log(obj)});//监听行工具事件table.on('tool(test)', function(obj){var data = obj.data;//console.log(obj)if(obj.event === 'del'){layer.confirm('真的删除行么', function(index){obj.del();layer.close(index);});} else if(obj.event === 'edit'){layer.prompt({formType: 2,value: data.email}, function(value, index){obj.update({email: value});layer.close(index);});}});//return;function merge(res) {var data = res.data;
var mergeIndex = 0;//定位需要添加合并属性的行数
var mark = 1; //这里涉及到简单的运算,mark是计算每次需要合并的格子数
var columsName = ['id','username'];//需要合并的列名称
var columsIndex = [1,2];//需要合并的列索引值for (var k = 0; k < columsName.length; k++) { //这里循环所有要合并的列
var trArr = $(".layui-table-body>.layui-table").find("tr");//所有行
for (var i = 1; i < res.data.length; i++) { //这里循环表格当前的数据
var tdCurArr = trArr.eq(i).find("td").eq(columsIndex[k]);//获取当前行的当前列
var tdPreArr = trArr.eq(mergeIndex).find("td").eq(columsIndex[k]);//获取相同列的第一列if (data[i][columsName[k]] === data[i-1][columsName[k]]) { //后一行的值与前一行的值做比较,相同就需要合并
mark += 1;
tdPreArr.each(function () {//相同列的第一列增加rowspan属性
$(this).attr("rowspan", mark);
});
tdCurArr.each(function () {//当前行隐藏
$(this).css("display", "none");
});
}else {mergeIndex = i;
mark = 1;//一旦前后两行的值不一样了,那么需要合并的格子数mark就需要重新计算
}
}
mergeIndex = 0;
mark = 1;
}
};//直接赋值数据table.render({elem: '#demo'//,width: 900//,height: 274,cols: [[ //标题栏{type: 'checkbox', LAY_CHECKED: true},{field: 'id', title: 'ID', width: 80, sort: true}//,{type: 'space', width: 100} //空列,{field: 'username', title: '用户名', width: 120},{field: 'email', title: '邮箱', width: 150},{field: 'sign', title: '签名', width: 150},{field: 'sex', title: '性别', width: 80},{field: 'city', title: '城市', width: 100},{field: 'experience', title: '积分', width: 80, sort: true}]],data: [{"id": "10001","username": "杜甫","email": "xianxin@layui.com","sex": "男","city": "浙江杭州","sign": "人生恰似一场修行","experience": "116","ip": "192.168.0.8","logins": "108","joinTime": "2016-10-14"}, {"id": "10001","username": "李白","email": "xianxin@layui.com","sex": "男","city": "浙江杭州","sign": "人生恰似一场修行","experience": "12","ip": "192.168.0.8","logins": "106","joinTime": "2016-10-14","LAY_CHECKED": true}, {"id": "10003","username": "王勃","email": "xianxin@layui.com","sex": "男","city": "浙江杭州","sign": "人生恰似一场修行","experience": "65","ip": "192.168.0.8","logins": "106","joinTime": "2016-10-14"}, {"id": "10004","username": "贤心","email": "xianxin@layui.com","sex": "男","city": "浙江杭州","sign": "人生恰似一场修行","experience": "666","ip": "192.168.0.8","logins": "106","joinTime": "2016-10-14"}, {"id": "10005","username": "贤心","email": "xianxin@layui.com","sex": "男","city": "浙江杭州","sign": "人生恰似一场修行","experience": "86","ip": "192.168.0.8","logins": "106","joinTime": "2016-10-14"}, {"id": "10006","username": "贤心","email": "xianxin@layui.com","sex": "男","city": "浙江杭州","sign": "人生恰似一场修行","experience": "12","ip": "192.168.0.8","logins": "106","joinTime": "2016-10-14"}, {"id": "10007","username": "贤心","email": "xianxin@layui.com","sex": "男","city": "浙江杭州","sign": "人生恰似一场修行","experience": "16","ip": "192.168.0.8","logins": "106","joinTime": "2016-10-14"}, {"id": "10008","username": "贤心","email": "xianxin@layui.com","sex": "男","city": "浙江杭州","sign": "人生恰似一场修行","experience": "106","ip": "192.168.0.8","logins": "106","joinTime": "2016-10-14"}],skin: 'row' //表格风格,even: true//,size: 'lg' //尺寸,page: false //是否显示分页,limits: [10],limit: 10 //每页默认显示的数量,done: function(res){merge(res);console.log(res)document.getElementById("hh").innerText='页面加载完成!'console.log($("#hh").text('xxxxxxxxx'))console.log('done')}//,loading: false //请求数据时,是否显示loading});var $ = layui.jquery, active = {parseTable: function(){table.init('parse-table-demo', {limit: 3});},add: function(){table.addRow('test')}};$('i').on('click', function(){var type = $(this).data('type');active[type] ? active[type].call(this) : '';});$('.layui-btn').on('click', function(){var type = $(this).data('type');active[type] ? active[type].call(this) : '';});console.log('llllllllllllllllll')
});console.log('wwwwwwwwwwwwww')
</script>
</body>
</html>

2021-10-13-草稿纸相关推荐

  1. 电动力学每日一题 2021/10/13 用Fourier变换法计算静止电荷产生的电场

    电动力学每日一题 2021/10/13 用Fourier变换法计算静止电荷产生的电场 静止点电荷 具有均匀线密度的静止电荷产生的电场 具有均匀面密度的静止电荷产生的电场 用Fourier变换法计算电场 ...

  2. 科恩第一章Friday, October 29, 2021 10:13 AM

    文章目录 Chapeter 1 Part A Electromagnetic Waves and Photons **Wave-particle Duality** Chapeter 1 Friday ...

  3. Bootstrap 响应式开发(2021.10.13)

    目录 一.响应式开发 1.框架含义 2.响应式 3.响应式尺寸划分 二.Bootstrap简介 1.Bootstrap概念 2.查阅Bootstrap文档 3.Bootstrap的使用 (1)创建文件 ...

  4. 2021.10.13会议记录

    根据需求具体内容和讨论补充功能确定平台定位以及可提供服务的设备类型(网页端/移动端). 仍然选择哔哩哔哩直播作为调研对象,对PC端直播进行具体开播流程.直播设置和直播中可操作内容进行具体调研. 针对无 ...

  5. 2021.10.13股票小计

    今天大盘上午低开的意思,不过到了下午稍微有点起色,今天总体是低开高走的状态.证券方面今天整个证券板块涨了0.64个点,华林证券昨天板块大跌的时候涨了,所以今天板块涨的时候没怎么跟涨,收跌1.68个点, ...

  6. 管理综合联考可以用计算机嘛,考试可以带计算器吗?可以带草稿纸吗?

    考试可以带计算器吗?可以带草稿纸吗? 来源:信管网 2018年02月13日 [所有评论] 大鹏展翅(cnitpm.com) 15:15:26 考试不让带计算器 默默(cnitpm.com) 15:16 ...

  7. 谷歌让NLP模型也能debug,只要给一张「草稿纸」就行

    丰色 发自 凹非寺 量子位 报道 | 公众号 QbitAI 现在的大型语言模型,能力个个都挺强. 但,它们的计算能力都不太行: 比如GPT-3,没法做超过三位数的加法. 再比如它们当中的大多数都可以写 ...

  8. 2021.10.25-10.31 AI行业周刊(第69期):AI进化之路

    本周<Opencv基础及AI项目实战>以及<Pytorch模型推理及多任务通用范式>两门课程已经完结. 两门课程中,针对所有完成作业的同学,都颁发了毕业证书. 并且对于完成比较 ...

  9. 黑苹果安装资源已过期 10.13,10.12

    黑苹果安装资源已过期 10.13,10.12 2021年,再次安装10.13和10.12的系统,在台式机上多次安装都是, 二次安装时,安装资源已过期,网上找的方法都是在安装界面, 实用工具-终端-输入 ...

  10. Python 最近两条好消息:①TIOBE排名超过C和Java②新版本发布3.10.0,还有今天刚发布的《What’s New in Python(2021.10.15)》

    来自TIOBE的最新10月份统计数据显示,Python首次超越Java.JavaScript.C语言等,成为最受欢迎的编程语言.TIOBE过去20年一直在追踪编程语言的受欢迎程度,其数据来自于对25个 ...

最新文章

  1. php充值卡,ecshop 充值卡功能_懒人程序
  2. C++11 标准新特性:Defaulted 和 Deleted 函数
  3. 使用mybatis操作AS400数据库
  4. SpringBoot2.1.5(6)----中文配置指南
  5. integer比较_Java中的整型包装类值的比较为什么不能用==比较?原因是因为缓存
  6. Linux_异常_01_CentOS7无法ping 百度
  7. objective-c NSMutableAttributedString
  8. 几种典型的智慧农业物联网解决方案
  9. 浅析游戏音效中的虚拟音效
  10. 浅析“儒”、“法”、“道”
  11. [Excel]取消隐藏于取消隐藏
  12. PageOffice国产版的授权及离线注册
  13. 红米3s进不了recovery_红米 3S中文Recovery刷机教程
  14. 初识JavaScript
  15. 学校校车运营各项安全管理制度_学校校车安全管理制度.doc
  16. Python脚本25:将两张图片拼在一起
  17. 恭喜EDG 夺取2021英雄联盟全球总决赛冠军
  18. (小米系统系列二) 更新国际版系统
  19. 平台篇-八年磨一剑,重新定义 HBase——HBase 2.0阿里云 HBase 解读
  20. 卸载wrapt_conda 安装与卸载cudnn

热门文章

  1. 跑得快算法分析(多叉树深度递归)
  2. html中表格中字体两端对齐,CSS真正实现文字两端对齐布局
  3. EMC PowerPath
  4. Java时间处理(UTC时间和本地时间转换)
  5. APP端接入支付宝支付接口
  6. echart和vue-echart的使用
  7. 谷歌背后的强权人物——首席法律官肯特·沃克
  8. 【计算机组成原理】=【考研复试面试题】- 整合全家桶
  9. 计算机辅助英语教学的优点,浅议计算机辅助英语教学的优势
  10. 对勾函数的性质及其应用