天道酬勤,学无止境

博客

InnoDB 引擎三大特性

InnoDB 引擎三大特性 双写缓冲区(DoubleWrite Buffer)原理为什么要用双写缓冲区? AHI 自适应哈希Buffer Pool什么是 Buffer Pool?Buffer Pool 内部组成Buffer Pool 中的链表结构Free 链表Flush 链LRU 链表 MySQL 刷新数据落盘的途径 InnoDB 的内存结构总结 双写缓冲区(DoubleWrite Buffer) 原理 双写缓冲区是 InnoDB 引擎为了保证数据安全性,完整性而开发的 双写缓冲区是在系统表空间中 InnoDB 引擎会在磁盘上划分出连续的两个区的范围 1个区包含64个页,一个页 16k,1个区 = 64x16 = 1024k = 1M 因此一个双写缓冲区大小为两个 1M ,共 2M 当我们写数据时,InnoDB 会先把数据从内存的双写缓冲区中,接着调用 fsync 写入到磁盘的双写缓冲区上(完整页数据),最后再把数据写入对应数据页中。 如果在写页的过程中发生意外崩溃,InnoDB 在稍后的恢复过程中在双写缓冲区中找到完好的 page 副本用于恢复。 为什么要用双写缓冲区? 问题:双写缓冲区要写磁盘,数据之后也是要写磁盘,为什么还要提前写个双写缓冲区?这样不是增加IO? 答:首先一页数据是 16 kb,磁盘写一次是 4kb,因此一页数据写磁盘,要写 4 次。 假如在写的过程中假如写了

2022-01-08 02:57:46   

自建服务器部署WEB网站可公网访问

文章目录 自建服务器部署WEB网站可公网访问一、公网IP端口映射到服务器主机或者内网穿透二、Nginx 反向代理和负载均衡三、web部署四、遇到问题 自建服务器部署WEB网站可公网访问 一、公网IP端口映射到服务器主机或者内网穿透 1、公网IP转发服务器端口 入户电信和联通宽带可以申请桥接模式,请宽带操作员把家中光猫设置成拨号模式,然后通过路由器进行拨号上网,这样在该路由器上转发服务器IP和端口,实现公网访问。 最直接的方案:端口映射。比如路由器的公网IP:10.10.10.1,私网路由器IP:192.168.1.1,个人电脑IP:192.168.1.12,你web服务部署的端口8080.在路由器做端口映射192.168.1.1:8080<—>192.168.1.12:8080.这样设置好后,通过外网访问10.10.10.1:8080时,就是访问你的web服务了。注意防火墙设置等。 2、通过代理进行内网穿透 这个可选方法有很多,有付费的花生壳,免费的小米球和国外Ngrok等,这里介绍下免费的小米球。一般付费的带宽会好一点。 小米球官网链接:https://www.ngrok.cc/ 具体操作见官网教程,开通隧道后,可以用Forwarding栏http://xxxx.xxxx.com网址直接访问服务器部署的网站。 二、Nginx 反向代理和负载均衡 1

2022-01-08 02:57:39   

网易五道游戏笔试题

网易五道游戏笔试题 1、两个圆相交,交点是A1,A2。现在过A1点做一直线与两个圆分别相交另外一点B1,B2。 B1B2可以绕着A1点旋转。问在什么情况下,B1B2最长? 解: 设两个圆的圆心分别为O1,O2。作O1C垂直于B1B2,O2D垂直于B1B2。 |B1B2| = |A1B1| + |A1B2| = 2|A1C| + 2|A1D|=2|CD| |CD| ^2 = |O1O2|^2 - (|O1C|-|O2D|)^2 当|O1C|=|O2D|即B1B2平行于O1O2时,|B1B2|最大。 2、Smith夫妇召开宴会,并邀请其他4对夫妇参加宴会。在宴会上,他们彼此握手, 并且满足没有一个人同自己握手,没有两个人握手一次以上,并且夫妻之间不握手。 然后Mr. Smith问其它客人握手的次数,每个人的答案是不一样的。 求Mrs Smith握手的次数? 解: 1. 总共10个人,每个人不与自己握手,不与配偶握手,不与同一个人握超过一次手,所以每个人最多握8次手,最少0次; 2. Mr.Smith问其它9个人握了几次手,各人回答不一样,所以每个人的握手次数刚好为0-8次,每种不同次数有1个人; 3. 有且只有一个人握了8次手,称之为A,即A与其配偶以外的所有人都握了手; 4. 记A的配偶为a,除了A夫妇以外,所有人都至少握了1次手(和A),所以握手0次的肯定是a; 5

2022-01-08 02:57:32   

3D可视化助你打造科技感十足的“智慧园区”

1、 智慧园区飞速发展 2、 ThingJS智慧园区展示 3、 智慧园区数字孪生可视化 4、 ThingJS更多可能 今年埃森哲的报告以“开拓新局:掌握变局时代的技术先机”为主题,再一次揭示了万物互联,各行各业数字化转型时代到来。说到万物互联,这让我想起来几年前看过的电影《太空旅客》里面的酷炫大屏格外抢眼,科幻效果十分震撼。 如今,随着大数据的发展,可视化在各行各业得到越来越广泛的应用。可视化不再只是电影里的画面,而是被实实在在地应用在政府、商业、金融、制造等各个行业的业务场景中,切切实实地实现着大数据的价值。 电影中的可视化大屏指挥中心监控的是整个飞船,而现实生活中,智慧园区也在飞速发展,能够实现人、车、物、设施全方位空间管理与实时监控。 ThingJS面向物联网的3D可视化开发平台,轻松开发3D场景项目,展现强大的业务逻辑及各行各业的可视化应用场景,成为数字孪生体的全新“打开方式”。 先利用CampusBuilder构建一个3D场景模型,通过Ajax或者Json数据连接到传感器数据,从而模拟智慧园区的运行。除此之外,任何的物联网设备可以添加互动脚本,即使是离线运行的环境,也可以利用已有数据进行仿真模拟。不断采集实时数据,让项目场景“活”起来。 小编在ThingJS网站看到一个非常炫酷的“智慧园区”,一起看一下整体效果,感受一下扑面而来的3D科技感:

2022-01-08 02:57:25   

关于SSL证书密钥的那些事儿

对于网站建设者来说,如何打造一个安全又高效的Web站点,不仅是对用户负责也是对自己的网站或企业形象负责。因此SSL证书几乎成了每个网站保护信息安全的必需品,给网站部署SSL证书,将网站从普通的HTTP站点升级为HTTPS站点,已成了大势所趋。 说到SSL证书加密,我们就不得不说SSL证书密钥,只有拥有强健的密钥才能防止攻击者进行模拟攻击。SSL证书是一种安全协议,这种协议可以在通讯层保护数据安全和完整。我们可以这样比喻,SSL协议就好比保护带锁的箱子的锁一样保护着客户端到和服务器之间的对话,当它们进行连接并且开始对话时,SSL证书就开始在传输层与应用层之间进行连接并加密。在这个过程中需要一种加密技术,SSL证书包括了一个公共密钥和一个私用密钥,就好比我在前面的比喻,带锁的箱子买来的时候就配备了一把锁和一把钥匙,公共密钥的功能就像这把锁,而私用密钥就是那把钥匙。 钥匙如何才能将锁打开,这中间就涉及到了加密算法。目前,在SSL证书中,存在三种加密算法,一种是RSA加密算法,一种是SM2算法,一种是ECC算法。RSA算法有2048位,而ECC算法有256位。行业里也默认采用2048位RSA秘钥和256位的秘钥是安全的。下面,我就来分别介绍一下这三种加密算法。 RSA算法 2048位RSA算法的安全性相当于112位的对称密钥加密。加密位数越高,其安全性越高;但是位数越高,运算速度就越慢。

2022-01-08 02:57:21   

vue-infinite-scroll 搭配使用ant-design-vue 弹窗dialog无法触发loadMore方法

问题描述 在ant-dialog中嵌套使用List的滚动加载功能,vue-infinite-scroll配合使用时,滚动和初始时,都无法触发loadmore 问题链接:https://github.com/ElemeFE/vue-infinite-scroll/issues/147、 1.弹窗启动时,未经过mounted生命周期,所以未绑定成功滚动事件 2.获得监听滚动函数的element时(getScrollEventTarget),也就是滚动的容器时,未能拿到overflowY的值,是根据这个值去返回当前滚动容器的元素。否则拿不到返回window的值 const ctx = '@@InfiniteScroll'; let throttle = function (fn, delay) { let now, lastExec, timer, context, args; //eslint-disable-line let execute = function () { fn.apply(context, args); lastExec = now; }; return function () { context = this; args = arguments; now = Date.now(); if (timer) { clearTimeout(timer); timer =

2022-01-08 02:57:15   

【实践案例】Databricks 数据洞察 Delta Lake 在基智科技(STEPONE)的应用实践

简介: 获取更详细的 Databricks 数据洞察相关信息,可至产品详情页查看:https://www.aliyun.com/product/bigdata/spark 作者 高爽,基智科技数据中心负责人 尚子钧,数据研发工程师 1、基智科技 北京基智科技有限公司是一家提供智能营销服务的科技公司。公司愿景是基于 AI 和大数据分析为 B2B 企业提供全流程的智能营销服务。公司秉承开放,挑战,专业,创新的价值观从线索挖掘到 AI 智达、CRM 客户管理覆盖客户全生命周期,实现全渠道的营销和数据分析决策,帮助企业高效引流,精准拓客,以更低的成本获取更多的商机。截至目前,基智科技已与包括房产、教育、汽车、企业服务等领域展开广泛合作。 2、背景 在基智科技目前的离线计算任务中,大部分数据源都是来自于业务 DB(MySQL) 。业务 DB 数据接入的准确性、稳定性和及时性,决定着下游整个离线计算 pipeline 的准确性和及时性。最初我们在 ECS 上搭建了自己的 Hadoop 集群,每天使用 Sqoop 同步 MySQL 数据,再经由 Spark ETL 任务,落表写入 Hive ,ES,MongoDB 、MySQL ,通过调用 Service API 做页签的展示。 我们的 ETL 任务一般在凌晨1点开始运行,数据处理阶段约1h, Load 阶段1h+,整体执行时间为2-3h

2022-01-08 02:57:10   

使用jQuery,vue实现同步请求

一般工作的时候,绝大部分场景使用的是异步请求,可以使用ajax axios等技术实现; 中间最常用的是jquery的ajax方法;也有近几年出现的vue的axios $.ajax({ url: "XXX",//请求路径 data: { param1: jsonObj1, params2: str2... }, type: "POST",//GET //dataType: "JSON",//需要返回JSON对象(如果Ajax返回的是手动拼接的JSON字符串,需要Key,Value都有引号) success: function(resp) { //处理 resp.responseText; }, error: function(a, b, c) { //a,b,c三个参数,具体请参考JQuery API } }) 但是在某些场景下,我们需要同步请求,比如我在构建Grid控件的时候,动态列的情况; 一旦Grid对象创建完成,渲染到浏览器的时候,如果没有配置列,或者列配置选项错误,那么这个页面会提示错误,即Grid没有成功渲染; 因此这里我们需要在new Grid之前.首先获取动态列数据,进行列模型的构建; 我们这样子做:给出一个简单例子 ———————————————— var cmObjStr = eval("(" + $.ajax({ url: "XXX", async: false

2022-01-08 02:57:03   

mysql 按某字段分组后,对剩余字段去重

select receiver_code "receiverCode", group_concat(distinct receiver_name) "receiverName", group_concat(distinct godown_out_no) "godownOutNos" from wms_wave_item group by receiver_code 来源:https://blog.csdn.net/qq_40593496/article/details/117113243

2022-01-08 02:56:56   

win下python修改IP和提UAC权限

win下python修改IP和提UAC权限 代码 代码 import os import sys import time import pymysql import queue import json import wmi import win32api import re import ctypes def loadtext(path): try: f = open(path,"r") txt = f.read() f.close() return txt except Exception as e: print("load file error! {}".format(path)) return None return None def writefile(path, text): try: f = open(path,"w") text = f.write(text) f.close() return True except Exception as e: print("write file error! {}".format(path)) return False return False # to json def txt2json(text): try: jsondict=json.loads(text) return jsondict except Exception

2022-01-08 02:56:50