对于很多接触jquery的新手学员来说,实现表情图的添加与发布是件难事,想必很多人第一件想到的就是去找一个表情图的插件,可是这样可能又会产生另外一个问题,那就是找到了插件,但不会用,所以给大家分享一个非常简单的不使用插件的实现表情图的添加与发布功能,话不多说,分享代码:
一、首先分享html主体内容
<div contenteditable="true" id="imgs" style=" border:1px solid gainsboro;width: 408px;height: 80px; margin: 0px auto;display: block; margin-top: 10px;"></div> <div class="txtcss"><input type="button" value="表情" id="minimg" style="width: 60px;"> <input type="button" value="发布" id="btnsure" style="width: 60px;"></div> <div id="content"></div> 二、再是表情图主体内容,这里使用的是将一张张表情图添加到li列表中,通过jquery点击事件将表情图添加到发布框中去
<div id="W_palc"> <div class="W_plasc1"> <ul class="swith"><li><a href="#">默认</a></li> <li><a href="#">热门</a></li> <li><a href="#">复仇者联盟</a></li> <li class="placssd"><a href="#">小黄人</a></li> </ul> <span><a href="#" id="btnclose"><?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1551513423002" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7800" xmlns:xlink="
AMD,中文名(超威)超微半导体,是除了英特尔以外最大的x86架构微处理供应商,也是除了英伟达以外仅有的独立图形处理供应商。
x86泛指一系列由英特尔公司开发的处理器的架构,最早为1978年面世的“Intel 8086”CPU。早期的处理器均是以此格式来命名,如Intel 8086,80186,80286,80386,80486,这些架构被统称为x86。由于数字不能被注册成为商标,因此公司每当有新的处理器使用,均会采用可注册的名称,如Pentium。
基于x86的32位架构(常被称为i386,x86),IA-32,而基于x86的64位架构,x86-64常称为AMD64或Intel64。最早是由AMD公司首先根据x86的架构生产出了64位的处理器,但是由于是竞争关系,Intel公司不愿意承认AMD64,近些年才推出了Intel64
ARM(英文为Advanced RISC Machine,或Acorn RISC Machine)也是一个架构,非常适用于移动通信这种低成本,高性能,低耗电的领域。ARM的公司为安谋控股(ARM Holding plc),又称为ARM公司,总部位于剑桥的设计与软件公司,现在已被日本的软银公司收购,后者同时也是国内互联网巨头阿里巴巴的最大股东。
AArch64是ARMv8的一种执行状态。
说起此番微软开源 Windows 计算器,有道是“春风得意马蹄疾,一日‘摘星’ 7000+”……
整理 | 仲培艺
来源 | CSDN(ID:CSDNnews)
微软又来给自己拥抱开源的决心送”证明素材“了!
昨日,微软官宣在 MIT 许可证下开源了 Windows 10 操作系统自带的计算器应用,源代码已托管在 GitHub 上。该项目发布即蹿红,在 GitHub 上火速揽收 7000+ Star 之余,更是在业界引发广泛讨论。
是 C++,不是 C#!
“居然不是 C#?!”
此次项目中,大家发现微软放弃了自家的 C#,转而选用了 C++——这也是微软宣布开源计算器以来,较多收到的感叹之一。
微软官博配图,宇宙的终极答案——42
Windows Calculator 是一款用 C++ 编写的现代 Windows App,预装在 Windows 中,可提供标准型、科学型和程序员计算器功能,以及不同度量单位和货币之间的转换。
该计算器定期更新功能、修复 bug。用户可以通过 Microsoft Store 下载最新版本。
特性
标准计算器功能:提供基础运算,评估用户输入的命令(输入即评估);
科学计算器功能:提供扩展运算,使用运算顺序评估命令;
程序员计算器功能:为开发者提供常见的数学运算;
计算历史和记忆能力;
不同计量单位之间的转换;
基于从 Bing 检索到的数据进行货币转换。
项目启动
Windows 计算器的官方说明文档具体列出了启动该项目的依赖项(先决条件):
计算机必须运行 Windows 10 1803 版本或更新版本
安装最新版本的 Visual Studio(免费社区版就足够了)
安装“Universal Windows Platform Development”workload
对坐标系这个概念相对比较熟悉,但是应用于实践时,发现理解有点偏差,现记录如下:
首先测试代码如下简单的使用了pick显示鼠标点击的位置以及利用computerinterections函数计算与鼠标相交的模型点,从而输出鼠标的窗口值以及这些模型点的全局和局部点坐标。
结果一、如果不设置MatrixTransform矩阵只简单显示一头牛发现,局部坐标和世界坐标的坐标值是完全相同的。
结果二、设置MatrixTranform矩阵出现两头牛,点击经过矩阵变换的牛,点击与第一头牛大致相同的位置,会发现局部坐标是相同的世界坐标发生了变化。
结论:一般情况下用顶点(世界坐标系)建立好模型后,全局和局部坐标系都属于世界坐标系,但是将模型平移旋转和缩放后,世界坐标系会随之发生变化但是局部坐标系不发生变化,局部坐标系应该是属于平移之前的位置
#include"…/common/common.h"
#include
#include <osg/ref_ptr>
#include <osgViewer/Viewer>
#include<osg/ShapeDrawable>
#include<osg/Node>
#include<osg/Geometry>
#include<osg/Geode>
#include<osg/Group>
#include<osg/ClipNode>
#include<osg/PolygonMode>
#include<osg/MatrixTransform>
#include<osg/AnimationPath>
#include<osgUtil/DelaunayTriangulator>
#include <osgDB/ReadFile>
#include<osgDB/WriteFile>
#include <osgFX/Scribe>
#include<osgGA/StateSetManipulator>
#include<osgViewer/ViewerEventHandlers>
#include<osgUtil/Optimizer>
#include<osgUtil/PlaneIntersector>
#include<osg/LineWidth>
#include<osg/PrimitiveSet>
#ifdef _DEBUG
#pragma comment(lib,"…/Debug/common.lib")
#else
#pragma comment(lib,"…/Release/common.lib")
#endif
class mPickHandler:public osgGA::GUIEventHandler
{
public:
virtual bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa, osg::Object*, osg::NodeVisitor*)
{
_viewer = dynamic_castosgViewer::Viewer*(&aa);
switch (ea.getEventType())
{
case osgGA::GUIEventAdapter::PUSH:
if (ea.getButton() == 1)
{
查了很久才发现是设置的问题,感谢两位博主
https://blog.csdn.net/weixin_39031539/article/details/83342505连接器,常规设置
http://www.opencv.org.cn/forum.php?mod=viewthread&tid=14601选择opencv这个文件夹,博客里面写的比较清楚了。
不喜勿喷,任重道远,一起努力。
其他文中已经讲过了LSTM的原理,LSTM理解了,biLSTM其实也就很容易理解了。这个实验,我是根据黑龙家大学nlp实验室的冯志,王潜升师兄的指导以及一篇基于biLSTM的paper实现的,如果想要这个paper的pdf,可以私聊我,一起进步。
biLSTM是双向循环神经网络,简单的理解就是LSTM正向走一遍,又反向走了一遍而已。而对于立场检测这个实验,在这里我借用此论文的图片:
Stance Detection with Bidirectional Conditional Encoding
先说数据文本格式:
数据截图
前面是topic(图里的target),中间是针对这个topic的谈论文本,最后是这个文本在这个topic下的立场,格式简化为:
sentence = topic + text + label
这里的topic有5种,分别为:
'Atheism', 'Feminist Movement', 'Hillary Clinton', 'Legalization of Abortion', 'Climate Change is a Real Concern'
而上面biLSTM网络流程图就是选取的topic为Legalization of Abortion的例子。
现在我来结合代码详细解释下这个基于biLSTM网络的立场检测实验:
首先,把网络搭建好:
其中,LSTM的参数隐藏层大小hiddenSize和隐藏层数量hiddenNum,我用上面的图详细解释下:
hiddenSize是说LSTM一个cell的参数大小,hiddenNum是说这样大网络循环的个数。
网络搭建好了,数据开始在网络中流动:
假设EmbedSize = 100,hiddenSize = 50
topic,text分别过Embedding Layer,维度分别为:(1,1,100),(1,17,100)
然后分别经过biLSTM Layer,维度为:(1,1,200),(1,17,200)
因为一会要经过一个maxPooling,所以现在先转置下,维度为(1,200,1),(1,200,17):
然后经过一个激活函数tanh,维度不变为(1,200,1),(1,200,17):
在第三维上,分别经过maxPooling,之后的维度为(1, 200, 1),(1, 200, 1):
然后cat在一起,维度为(1, 400, 1):
一会要经过线性层,可以先将没用的第三维扔掉,维度为(1, 400):
然后经过第一个线性层(400->100),维度为(1,100):
然后再经过一个tanh,维度不变(1,100):
最后,经过最后一个线性层(100->3),维度为(1,3):
你或许有疑问,为什么不直接经过一个线性层呢?因为我们要直接从400->3的话,信息会损失很多,如果分别经过两个400->100, 100->3,这样就不会损失那么多信息了,如果你想用三个线性层也可以,自己感觉调到最佳就好。
这个整体的数据流图为:
整个也就算讲完了,其实也想把实验结果摆上来的,可是我的电脑是4G的。。太慢了。。但是如果想要源代码的话,可以留言给我,共同进步。
作者 | kenwoodjw
责编 | Jane
出品 | Python大本营(ID:pythonnews)
程序员转行学什么语言?
https://edu.csdn.net/topic/ai30?utm_source=csdn_bw
过年开工回来到现在,营长每天在地铁里只看到了两家公司的广告:前两周是拉勾网,最近都是 Boss直聘,求职、跳槽到现在,你是否已经成功,offer 在手了呢?
也正是这个广告,提醒了营长,是不是要给大家准备一些笔试题、学习资料... ...正所谓”知己知彼,百战不殆“,自己埋头复习,掌握知识是一方面,我们还要关注公司、面试官对求职者有哪些技能需求?同为 Python 工程师也分不同的技术岗位,初级、中级与高级开发工程师需要具备的技能也不同。
然而,无论是零经验还是 Python 老司机,对待每一次面试与笔试,都不能轻视,不能打无准备之战!今天,营长要为大家推荐一个专门关于 Python 的面试题汇总,为什么推荐这份资源?
首先,这份资源题目数量近 300 道,想把这些题目都拿下,也是不小的工程量。深度了解请往下看,先上地址:
https://github.com/kenwoodjw/python_interview_question
接下来再详细给大家说说这份资源的其他优点。
除了题量充足外,这个面试题覆盖的知识点按照由易到难罗列,分为【Python 基础】与【Python 高级】。【Python 基础】 1~3 (文件操作、模块与包、数据类型)知识点,虽然被归类为基础题,但大家在实际解题过程中还需要更多的思考,是否情况都考虑全面了。
高级题部分就不用说了,都是一些在学习时有难度,不能一下就 get 到的知识点,比如图中所示的知识点 1、2;还有没有展示出来的:函数的理解到应用、正则表达式,再到系统编程、网络编程等百余道题目。
【Python 基础】中还涉及了 4、企业面试题,共 26 道:
除了知识点整理按照基础进阶到高级外,这份资源还涉猎了不同岗位的面试题,以满足不同 Python开发工程师的需求,可以说从知识到技能,全面又丰富。
如果你要面试 Python Web 开发工程师岗位,你还需要看下面这些题: 除了 Flask 和 Django 两个框架外(尤其是现在主流的 Django),作者也整理了爬虫的相关题目,nice!
还有关于 Python 与数据库的操作,从大家常用的 MySQL 到 Redis 和 MongoDB,都包含在内了~
如果你想面试测试相关岗位,下面这些基本的概念一定要了解,熟记,回答的时候思路清晰哦。
数据结构的重要性无需多说,如果你需要在工作中用 Python 实现算法等工作,更是不能偷懒,营长之前也分享过很多这类技术文章,大家可以在”号内搜“找到相关文章,进一步学习~
随着这两年人工智能的火爆趋势,Python 的发展势头已然无法阻挡,想进入人工智能,Python已经成为必修基础开发语言了,不过这部分题目并不是很多,希望作者以后可以继续补充这部分内容,惠利大家。
Spring 官方文档翻译如下 :
ApplicationContext 通过 ApplicationEvent 类和 ApplicationListener 接口进行事件处理。 如果将实现 ApplicationListener 接口的 bean 注入到上下文中,则每次使用 ApplicationContext 发布 ApplicationEvent 时,都会通知该 bean。 本质上,这是标准的观察者设计模式。
Spring的事件(Application Event)其实就是一个观察者设计模式,一个 Bean 处理完成任务后希望通知其它 Bean 或者说 一个Bean 想观察监听另一个Bean的行为。
Spring 事件只需要几步:
自定义事件,继承 ApplicationEvent定义监听器,实现 ApplicationListener 或者通过 @EventListener 注解到方法上定义发布者,通过 ApplicationEventPublisher 代码示例:
1. 自定义Event @Data public class DemoEvent extends ApplicationEvent { private Long id; private String message; public DemoEvent(Object source, Long id, String message) { super(source); this.id = id; this.message = message; } } 复制代码 2.
最近开始了关于计算机视觉的学习。需要安装python以及配置open cv。
首先,访问python的官网https://www.python.org/,下载自己所需版本的python。我下载的是python 3.6。下载完之后按部就班地安装python即可,需要注意的是,如果再安装过程中没有勾选配置环境变量的选项,之后需要自己进行配置,否则你会发现你的计算机找不到你的python。
然后确保了自己的版本配置了pip版块,使用pip方式配置open cv将会相当方便。
之后在cmd命令行下,运行:
pip install --upgrade setuptools pip install numpy Matplotlib pip install opencv-python 然后open cv就装好了,可以在IDE里import cv2,如果成功就说明配置成功。
之后可以通过打开一张图片测试一下。
import cv2 as cv
img = cv.imread("D:/pythondemo/jmu.jpg")
img = cv.imread("D:/pythondemo/jmu.jpg")
cv.namedWindow("Image")
cv.imshow("Image",img)
import numpy as np a = np.zeros(shape=(3,4,5)) # 返回a列表的元素总数:60 print(a.size) print(np.size(a)) # 返回a列表的维度大小:(3,4,5) print(a.shape) print(np.shape(a)) # 返回a列表的第一维大小:3 print(len(a))
错误信息如下:
原因: key值不唯一
解决: 仔细检查是否用了同一个数据循环且:key值相同,如果相同给第二个key随便加一个标记就可以,如下:
:key="index + '-only'"
0 下载与安装 (Windows下) https://opencv.org/: 选择喜欢的版本安装,opencv3.4以后支持深度学习API
1 环境搭建 OpenCV Java with Eclipse:https://docs.opencv.org/trunk/d1/d0a/tutorial_java_eclipse.html 问题1:搭建opencv4.0环境失败:
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.opencv.core.Mat.n_eye(III)J
at org.opencv.core.Mat.n_eye(Native Method)
at org.opencv.core.Mat.eye(Mat.java:507)
at zeng.hello_opencv.main(hello_opencv.java:10)
解决方案:将opencv4.0.0 换成opencv3.4.2(本文使用),不报错
opencv java 官方文档与API位置 https://docs.opencv.org/3.4.4/ 2 JAVA示例代码 (Windows下) 【代码位置】……opencv3.4.4/sources/samples/java/tutorial_code/ 【代码中示例图片位置】……opencv3.4.4/sources/data/ 【运行代码 AddingImages.java】 samples\java\tutorial_code\core\AddingImages [
【运行例子会报错,图片路径不对】
【问题】使用自己图片,大小不一样,报错,
CvException [org.opencv.core.CvException: cv::Exception: OpenCV(3.4.4) C:\build\3_4_winpack-bindings-win64-vc14-static\opencv\modules\core\src\arithm.cpp:663: error: (-209:Sizes of input arguments do not match) The operation is neither 'array op array' (where arrays have the same size and the same number of channels), nor 'array op scalar', nor 'scalar op array' in function 'cv::arithm_op'
比较以下两个代码
(1)
#include<stdio.h>
#include<stdlib.h>
void turn(int x, int y)//无引用
{
int t;
t = x;
x = y;
y = t;
}
int main()
{
int a, b;
scanf_s("%d%d", &a, &b);
turn(a, b);
printf("%d %d\n",a,b);
system("pause");
return 0;
}
(2)
#include<stdio.h>
#include<stdlib.h>
void turn(int &x, int &y)//有引用
{
int t;
t = x;
x = y;
y = t;
}
int main()
{
int a, b;
scanf_s("%d%d", &a, &b);
以下方法可以解决60%的除硬件外的网络异常问题
1.(win+x)打开命令提示符(管理员权限) 注意必须是管理员权限
2.输入netsh winsock reset
会显示 成功重置winsock目录。
你必须重新启动计算机才能完成重置
3.再输入:netsh advfirewall reset
会显示 确定。
然后重新启动系统即可
注意:该行命令是从新整理了window的文件夹目录。
nginx的基本使用
1.nginx的启动
nginx -c /etc/nginx/nginx.conf
其中参数-c指定nginx启动时加载的配置文件,当然也可以不指定配置文件,省略-c,也可以启动,表示使用默认的配置文件。 例如使用ngnix则使用默认配置文件启动
2.nginx的停止
nginx的停止可以采用多种方式,可以杀主进程也可以使用nginx自带的命令。建议使用nginx自带的命令关闭nginx,这样nginx会处理完收到的所有请求之后关闭服务,这样不会导致请求处理的中断。而直接杀进程的方式就显得有点暴力了。下面是nginx停止用到的命令
nginx -s stop 或者
nginx -s quit 或者
pkill -9 nginx
3.nginx重载配置
有时候我们需要修改我们的nginx配置,为了使配置生效我们需要重新载入我们的配置到内存。一般有两种解决方案,一,重新启动nginx,那我们使用 以上nginx停止,nginx启动两个命令即可完成。二,只需要使用nginx的重载命令即可。
nginx -s reload
以上命令,nginx的主进程会重新读取配置,而正在工作的nginx工作进程会按照之前的配置进行最后一次处理。
4.nginx配置文件检测
修改了配置文件,我们需要重启,如果采用先关闭nginx,再重新启动的的方案。会遇到一个严重的问题,那就是你新的配置文件有问题nginx无法正确启动怎么办?这样服务器已经停止服务,老的配置恢复不了,新的配置文件又不知何时修改好。这样会使得服务器的停务时间大大增加。因此,在使用新的配置文件之前建议使用以下命令进行配置检查。
nginx -t
另外,当我们在重新加载nginx配置的时候尽量使用nginx -s reload命令,这样的方式不会导致服务停止,而且若nginx -s reload失败,只是配置重载的失败,
给用户授予RBAC权限
没有权限会报如下错误:
执行查看资源报错: unable to upgrade connection: Forbidden (user=kubernetes, verb=create, resource=nodes, subresource=proxy) [root@test4 ~]# kubectl exec -it http-test-dm2-6dbd76c7dd-cv9qf sh error: unable to upgrade connection: Forbidden (user=kubernetes, verb=create, resource=nodes, subresource=proxy) 解决:创建apiserver到kubelet的权限,就是没有给kubernetes用户rbac授权,授权即可,进行如下操作: 注意:user=kubernetes ,这个user要替换掉下面yaml文件里面的用户名 cat > apiserver-to-kubelet.yaml <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: annotations: rbac.authorization.kubernetes.io/autoupdate: "true" labels: kubernetes.io/bootstrapping: rbac-defaults name: system:kubernetes-to-kubelet rules: - apiGroups: - "" resources: - nodes/proxy - nodes/stats - nodes/log - nodes/spec - nodes/metrics verbs: - "*" --- apiVersion: rbac.
效果图:
源码
之前在这篇文章介绍了如何基于TextView实现带搜索框的Spinner
直到拿到项目中使用,才发现了各式各样的问题,想着解决这些问题太麻烦了,所以决定重写
现在看来,很庆幸当时决定重写,因为重写后很多地方的代码看起来不像之前那么绕,之前一个onClick方法写了一堆代码,现在的onClick方法也简化了很多
先初始化3个常用变量
val screenHeight = context.resources.displayMetrics.heightPixels val statusBarHeight = getStatusBarHeight() val elevationSize = 16f private fun getStatusBarHeight():Int{ val resourceId = Resources.getSystem().getIdentifier("status_bar_height", "dimen", "android") if (resourceId > 0) { return Resources.getSystem().getDimensionPixelSize(resourceId) } return 0 } 这次的实现是基于LinearLayout,实现的思路和上次差不多,只是很多细节不一样
根View
1,设置LinearLayout的orientation为Horizontal
2,添加TextIView和ImageView分别用于显示文本和箭头
3,设置onClick
这里之所不使用TextView是因为要在TextView里面控制箭头旋转太麻烦了
private val textView : TextView private val imageView : ImageView constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) { textView = TextView(context) textView.gravity = Gravity.
1.extend Vue.extend使用基础 Vue 构造器,创建一个“子类”。参数是一个包含组件选项的对象。
// Vue.extend // 创建构造器 var Profile = Vue.extend({ template: '<p>{{firstName}} {{lastName}} aka {{alias}}</p>', data: function () { return { firstName: 'Walter', lastName: 'White', alias: 'Heisenberg' } } }) // 创建 Profile 实例,并挂载到一个元素上。 new Profile().$mount('#mount-point') 2.mixins mixins 选项接受一个混入对象的数组。这些混入实例对象可以像正常的实例对象一样包含选项,他们将在 Vue.extend() 里最终选择使用相同的选项合并逻辑合并。举例:如果你的混入包含一个钩子而创建组件本身也有一个,两个函数将被调用。
Mixin 钩子按照传入顺序依次调用,并在调用组件自身的钩子之前被调用。
// mixins示例 var mixin = { created: function () { console.log(1) } } var vm = new Vue({ created: function () { console.log(2) }, mixins: [mixin] }) // => 1 // => 2 mixins要点
Ubuntu18.04完美搭建Tensorflow-GPU1.8 0.导语 这是18年的最后一个工作日,为了这篇文章耗费了半天的时间来琢磨!
关于文章更新,后面不能保证每天一篇了,因为要放假回家了,哈哈!
18年回顾
光城
请输入
文章分享 互促共进
坚持分享,互促共进
Persist in sharing and promote mutual progress
共建共助
19年展望
光城
论文复现 刷爆offer
请输入
坚持刷题,直通Offer
Stick to the brush, go straight to Offer
共助刷题
今天这篇文章主要讲的是,我将我自己的系统全部删除掉,然后装上一个单系统,Ubuntu18.04!
然后在Ubuntu上搭建深度学习环境!
本次搭建环境,主要是在Ubuntu18.04版本,关于Centos系统搭建深度学习环境昨天也尝试了,驱动与cuda都装成功了!但可惜电脑莫名的启动不了了,然后就换成这次的Ubuntu了,总结了一下,发现Ubuntu比Centos简单了很多!
有时需要对自己狠一点,不留后路,就像这次换系统一样,全部卸载掉,只保留一个单Linux系统,让自己在Linux上重燃激情与活力,不断磨炼自己的学习毅力与能力!
1.驱动 1.1 检查 配置深度学习GPU环境之前,首先了解一下自己的GPU是否是CUDA-capable!
lspci | grep -i nvidia 输入上述命令,会看到如下输出:
如果有,则支持,否则不支持!
1.2 禁驱动 不管是centos还是ubuntu系统,系统都会自带nouveau驱动,而这个驱动会影响后面的cuda安装,不当操作会出现黑屏现象!
现在来查看一下nouveau设备有没有,输入下面命令,如果有输出,则说明这个驱动正在加载!
lsmod|grep nouveau 我们接下来需要做的工作就是禁用这个驱动!
编辑blacklist.conf配置文件
sudo gedit /etc/modprobe.d/blacklist.conf 尾部追加:
blacklist nouveau options nouveau modeset=0 更新配置文件
sudo update-initramfs -u 再次查看驱动是否被加载
attach 类create,but
不在硬盘上创建表,假设表已经存在只是向服务添加表的说明,执行之后,服务将知道表的存在 ATTACH TABLE [IF NOT EXISTS] [db.]name [ON CLUSTER cluster] 在启动服务器时使用,服务器将表元数据视为文件保存
check table 1、检查表中的数据是否被破坏,对比文件实际大小与服务器上存储的期望大小,如果不匹配意味被破坏
2、返回boolean的独立行,0破坏 1完整
3、支持log、tinylog、stripelog引擎,这些引擎不能自动修复
避免数据丢失推荐使用mergetree
如果数据被破坏:
1、创建和被损坏表一样结构的新表
CREATE TABLE <new_table_name> AS <damaged_table_name>
2、将max_threads值设置为1,以便在单个线程中处理下一个查询SET max_threads = 1
3、INSERT INTO <new_table_name> SELECT * FROM <damaged_table_name>只有被破坏前的数据被copy
4、重启clickhouse-client,使max_threads起作用
describe table DESC|DESCRIBE TABLE [db.]table [INTO OUTFILE filename] [FORMAT format] 返回string类型的两列数据:name type指明操作表的列的名字和类型
嵌套表结构输出到扩展格式中,每列用被逗号隔开的名字独立显示
detach DETACH TABLE [IF EXISTS] [db.]name [ON CLUSTER cluster] 删除服务器上指定表的表信息,服务器将不知道表的存在,不删除表的数据
服务器重启时会再次找到这个表,相似的、可使用attach重新附加分离的表(系统表除外,无元数据)
drop: DROP DATABASE [IF EXISTS] db [ON CLUSTER cluster] DROP [TEMPORARY] TABLE [IF EXISTS] [db.