6. 在单元格里加入控件:
QTableWidget不仅允许把文字加到单元格,还允许把控件也放到单元格中。比如,把一个下拉框加入单元格,可以这么做:
view plain
QComboBox *comBox = new QComboBox();
comBox->addItem("Y");
comBox->addItem("N");
tableWidget->setCellWidget(0,2,comBox);
二. 对单元格的进行设置
1. 单元格设置字体颜色和背景颜色 及字体字符
view plain
QTableWidgetItem *item = new QTableWidgetItem("Apple");
item->setBackgroundColor(QColor(0,60,10));
item->setTextColor(QColor(200,111,100));
item->setFont(QFont("Helvetica"));
tableWidget->setItem(0,3,item);
另:如果需要对所有的单元格都使用这种字体,则可以使用 tableWidget->setFont(QFont("Helvetica"));
2. 设置单元格内文字的对齐方式
这个比较简单,使用newItem.setTextAlignment()函数即可,该函数的参数为单元格内的对齐方式,和字符输入顺序是自左相右还是自右向左。
水平对齐方式有:
Constant Value Description
Qt.AlignLeft 0x0001 Aligns with the left edge.
Qt.AlignRight 0x0002 Aligns with the right edge.
Qt.AlignHCenter 0x0004 Centers horizontally in the available space.
Qt.AlignJustify 0x0008 Justifies the text in the available space.
垂直对齐方式:
Constant Value Description
Qt.AlignTop 0x0020 Aligns with the top.
Qt.AlignBottom 0x0040 Aligns with the bottom.
Qt.AlignVCenter 0x0080 Centers vertically in the available space.
如果两种都要设置,只要用 Qt.AlignHCenter | Qt.AlignVCenter 的方式即可
3. 合并单元格效果的实现:
tableWidget->setSpan(0, 0, 3, 1) # 其参数为: 要改变单元格的 1行数 2列数 要合并的 3行数 4列数
4. 设置单元格的大小
首先,可以指定某个行或者列的大小
view plain
tableWidget->setColumnWidth(3,200);
tableWidget->setRowHeight(3,60);
还可以将行和列的大小设为与内容相匹配
view plain
tableWidget->resizeColumnsToContents();
tableWidget->resizeRowsToContents();
5. 获得单击单元格的内容
通过实现 itemClicked (QTableWidgetItem *) 信号的槽函数,就可以获得鼠标单击到的单元格指针,进而获得其中的文字信息
connect(tableWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this, SLOT( getItem(QTreeWidgetItem*,int)) );
//将itemClicked信号与函数getItem绑定
1.QTableWidget不能在mainwindow中随主窗口的大小变化?
解决:在表格外部添加布局。
代码:tableWidget = new QTableWidget;
tableWidget ->setObjectName(QString::fromUtf8("tableWidget"));
QVBoxLayout *verticalLayout;
verticalLayout->addWidget(tableWidget );
2.将表格变为禁止编辑:
tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
(参数含义:QAbstractItemView.NoEditTriggers--不能对表格内容进行修改
QAbstractItemView.CurrentChanged--任何时候都能对单元格修改
QAbstractItemView.DoubleClicked--双击单元格
QAbstractItemView.SelectedClicked--单击已选中的内容
QAbstractItemView.EditKeyPressed--
QAbstractItemView.AnyKeyPressed--按下任意键就能修改
QAbstractItemView.AllEditTriggers--以上条件全包括)
3.设置表格为整行选择
tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); //整行选中的方式
(参数含义:AbstractItemView.SelectItems--选中单个单元格
QAbstractItemView.SelectRows--选中一行
QAbstractItemView.SelectColumns--选中一列)
4.单个选中和多个选中的设置:
tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); //设置为可以选中多个目标
(参数含义:QAbstractItemView.NoSelection--不能选择
QAbstractItemView.SingleSelection--选中单个目标
QAbstractItemView.MultiSelection--选中多个目标
QAbstractItemView.ExtendedSelection/QAbstractItemView.ContiguousSelection 的区别不明显,主要功能是正常情况下是单选,但按下Ctrl或Shift键后,可以多选)
5.表格表头的显示与隐藏
对于水平或垂直方法的表头,可以用以下方式进行 隐藏/显示 的设置:
tableWidget->verticalHeader()->setVisible(false); //隐藏列表头
tableWidget->horizontalHeader()->setVisible(false); //隐藏行表头
注意:需要 #include
6.对表头文字的字体、颜色进行设置
QTableWidgetItem *columnHeaderItem0 = tableWidget->horizontalHeaderItem(0); //获得水平方向表头的Item对象
columnHeaderItem0->setFont(QFont("Helvetica")); //设置字体
columnHeaderItem0->setBackgroundColor(QColor(0,60,10)); //设置单元格背景颜色
columnHeaderItem0->setTextColor(QColor(200,111,30)); //设置文字颜色
注意:需要 #include
7.在单元格里加入控件:
QComboBox *comBox = new QComboBox();
comBox->addItem("Y");
comBox->addItem("N");
tableWidget->setCellWidget(0,2,comBox);
8.单元格中添加图片:
tableWidget->setItem(row, 0, new QTableWidgetItem(QIcon(":/new/images/kingdemo.ico"),tr("")));
9设置单元格字体颜色、背景颜色和字体字符:
QTableWidgetItem *item = new QTableWidgetItem("Apple");
item->setBackgroundColor(QColor(0,60,10));
item->setTextColor(QColor(200,111,100));
item->setFont(QFont("Helvetica"));
tableWidget->setItem(0,3,item);
另:如果需要对所有的单元格都使用这种字体,则可以使用 tableWidget->setFont(QFont("Helvetica"));
10.设置单元格内文字的对齐方式
水平对齐方式有:
Constant Value Description
Qt.AlignLeft 0x0001 Aligns with the left edge.
Qt.AlignRight 0x0002 Aligns with the right edge.
Qt.AlignHCenter 0x0004 Centers horizontally in the available space.
Qt.AlignJustify 0x0008 Justifies the text in the available space.
垂直对齐方式:
Constant Value Description
Qt.AlignTop 0x0020 Aligns with the top.
Qt.AlignBottom 0x0040 Aligns with the bottom.
Qt.AlignVCenter 0x0080 Centers vertically in the available space.
如果两种都要设置,只要用 Qt.AlignHCenter | Qt.AlignVCenter 的方式即可
11.合并单元格:
tableWidget->setSpan(0, 0, 3, 1) # 其参数为: 要改变单元格的1行数、2列数,要合并的3行数、4列数
12.设置单元格的大小
首先,可以指定某个行或者列的大小
tableWidget->setColumnWidth(3,200);
tableWidget->setRowHeight(3,60);
还可以将行和列的大小设为与内容相匹配
tableWidget->resizeColumnsToContents();
tableWidget->resizeRowsToContents();
13.获得单击单元格的内容
通过实现 itemClicked (QTableWidgetItem *) 信号的槽函数,就可以获得鼠标单击到的单元格指针,进而获得其中的文字信息
connect(tableWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this,SLOT(getItem(QTreeWidgetItem*,int)));
//将itemClicked信号与函数getItem绑定
14.QTableWidget要调整表格行宽主要涉及以下函数
tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);//使列完全填充并平分
tableWidget->verticalHeader()->setResizeMode(QHeaderView::Stretch);//行自适应宽度
tableWidget->resizeColumnsToContents(); //根据内容调整列宽
tableWidget->resizeColumnToContents(int col);//根据内容自动调整给定列宽
tableWidget->horizontalHeader()->setResizeMode//把给定列设置为给定模式
主要模式有Stretch和Fixed
15.添加表头内容:
方法一:
QStringList header;
header<<""<
方法二:
tableWidget->setHorizontalHeaderLabels(QStringList() << tr("1")<
16.清除:
tableWidget->clear();//清除所有可见数据(包括表头),行还在
tableWidget->clearContents();//只清除表中数据,不清除表头内容
tableWidget->setRowCount(0);//连行也清除掉
15.一些零碎的知识点代码:
int row = tableWidget->rowCount();//获取表格中当前总行数
tableWidget->setRowCount(row+1);//添加一行
tableWidget->removeRow(row);//清除已有的行列
Int row1 = tableWidget->currentItem()->row();//当前选中行
bool focus = tableWidget->isItemSelected(tableWidget->currentItem());//判断是否选中一行
QString proName = tableWidget->item(row, col)->text();//获取某一格内容
setShowGrid(true);//显示表格线
verticalHeader()->setVisible(false);//隐藏左边垂直
QHeaderView *headerView = horizontalHeader();
headerView->setMovable(false);//去除表头的移动
headerView->resizeSection(0,284);//设置第一列宽
headerView->resizeSection(1,127);//设置第二列宽
headerView->setResizeMode(QHeaderView::Fixed);//列表不能移动
headerView->setClickable(false);//不响应鼠标单击
setEditTriggers(QTableWidget::NoEditTriggers);//不能编辑
setSelectionBehavior(QTableWidget::SelectRows);//一次选中一行
setSelectionMode(QAbstractItemView::SingleSelection);//只能单选
/*QScrollBar *scrollBar = horizontalScrollBar();
scrollBar->hide();*/
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//去掉水平滚动条
setVerticalScrollMode(QAbstractItemView::ScrollPerItem);//垂直滚动条按项移动
setAutoScroll(false);//去掉自动滚动
17.排序:
tableWidget->sortByColumn( 0 , Qt :: AscendingOrder);//顾名思义,该函数意思是将某列按升序/降序的方式排列
你可能感兴趣的:(qt)
基于QT与STM32的电力参数采集系统(华为云IOT)(211)
DS小龙哥
智能家居与物联网项目实战 qt stm32 华为云 电力采集
文章目录一、前言1.1项目介绍【1】开发背景【2】项目实现的功能【3】项目硬件模块组成1.2设计思路【1】整体设计思路【2】整体构架【3】上位机开发思路【4】供电方式1.3项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】摘要1.4开发工具的选择【1】设备端开发【2】上位机开发1.5系统框架图1.6系统功能总结1.7设备原理图1.8硬件实物图二、硬件选型2.1STM32开发板2.2U
基于单片机的家居环境监测系统的设计
lantiandianzi
单片机 嵌入式硬件
本设计基于单片机的家居环境监测系统,采用STM32F103C6T6单片机作为主要的控制芯片,环境监测方面采用SHT30模块实现室内温度和湿度的监测;有害气体监测方面,用MQ-7传感器实现室内一氧化碳气体的监测;采用WIFI模块连接指定热点,通信方案采用MQTT协议,将采集到的数据发送到阿里云物联网平台;采用OLED显示模块对采集到的数据进行显示。
MQTT: Keep Alive
VFSSoft
# MQTT 网络协议 网络 iot
KeepAlive时间单位是秒。字段长度为2个字节的short。这个值规定了客户端从发送上一个控制包之后,到发送下一个控制包之间最大的时间间隔。客户端需要确保发送控制包的时间间隔不超过这个值。如果在此时间间隔内,没有其他的控制包需要发送给服务器端,客户端可以发送PINGREQ包。客户端可以在任何时刻发送PINGREQ(不受KeepAlive值的限制)。通过发送PINGREQ可以检测服务器端是否正常
vtk qt widget
爱学习的大牛123
vtk 学习 qt vtk QWidget
首先,让我们创建`VTKWidget.h`文件:```#ifndefVTKWIDGET_H#defineVTKWIDGET_H#include#include#include#include#include#includeclassVTKWidget:publicQWidget{Q_OBJECTpublic:explicitVTKWidget(QWidget*parent=nullptr);pri
阿里云 物联网平台 MQTT连接、数据传输
忒可君
阿里云 物联网 云计算
阿里云物联网平台MQTT连接、数据传输1、设备连接阿里云2、多设备之前的通信、数据流转3、设备数据来源的读取。基于C#winform开发上位机,读取设备、仪器、MES或者电子元器件的数据,MQTT传输至阿里云平台,可视化界面构建界面,显示。MQTT的配置、连接、订阅和发布很简单,不论是老版本还是新版本,都可以。数据格式:
浅谈MQTT
CN.LG
Python php 开发语言
一、基本介绍MQTT(MessageQueuingTelemetryTransport)是一种轻量级的消息传输协议,它被设计用于低带宽、不可靠的网络环境中的远程通信。MQTT协议在物联网(IoT)领域非常流行,因为它能够支持大量的设备连接,并且具有低功耗和低带宽消耗的特点。二、关键特点轻量级:MQTT协议的消息头部很小,这使得它非常适合带宽有限的环境。发布/订阅模式:MQTT使用发布/订阅消息模式
嵌入式笔试题(2)
月夕花晨374
系统架构 c++ 数据结构 算法
1.请简述一下MQTT协议MQTT协议是一种轻量级的、基于发布-订阅模式的通信协议,用于在物联网(IoT)和M2M(机器到机器)通信中进行消息传递。其全称为MessageQueuingTelemetryTransport,即消息队列遥测传输。MQTT协议的特点包括:1.轻量级:MQTT协议采用二进制消息格式,使用较小的协议头和消息体,以减少网络带宽和存储消耗。2.发布-订阅模式:MQTT采用发布-
json qt 解析数组_Qt--解析Json
信息门下跑狗
json qt 解析数组
一、QT5Json简介QT4中使用第三方库QJson解析JSON文件。QT5新增加了处理JSON的类,类均以QJson开头,包含在QtCore模块中。QT5新增加六个相关类:QJsonArray封装JSON数组QJsonDocument读写JSON文档QJsonObject封装JSON对象QJsonObject::iterator用于遍历QJsonObject的STL风格的非const遍历器QJs
QT如何在控件上绘图(例如QLabel,Button,QWidget等)
重生之我在四川卖苕皮
QT qt ui 开发语言
方法一:使用事件过滤机制事件过滤器:由两个函数组成的一种操作,用来完成一个部件对其他部件的事件监视,这两个函数分别是installEventFilter();eventFilter(QObject*obj,QEvent*ev)皆为QObject类中的函数。如何使用:一,ui->paint_widget(子控件名)->installEventFilter(this);//安装事件过滤器二,在.h中加
Qt解析json格式数据
一定会升职加薪
燃犀的QT笔记 qt json 开发语言
文章目录json格式对象格式数组格式QJsonDocument,QJsonObject,QJsonArray,QJsonValue例一:如何构建QJsonObject和QJsonDocument例二:解析前面的嵌套型json数据json格式对象格式一个对象,由一个大括号表示:括号中描述对象的属性:通过键值对来描述对象的属性(可以理解为,大括号中,包含的是一个个的键值对.){"name":"小明",
QT教程-十六,QT中如何解析JSON
重生之我在四川卖苕皮
Qt开发基础教程 json 数据库
一,对json的初步认识(这里我们主要说明最常用的,以一个宏观的概念来说一下),json是一种数据格式,作用就是便于传递信息,我们可以按其结构和对应关系,拿到我们想要的数据。其主要结构为:json对象(大括号包裹{}),以及json数组(中括号包裹[])。例子:json对象{"name":"张三","age":"20","city":"西安"}json数组["Name","张三","age","2
qt自定义下拉菜单框
二氧化矽
qt
Qt自带的QCombBox下拉能够显示的东西有限,想添加其他的控件不太方便,所以就想自己定义一个,基本思路是,一个QLineEdit,一个QPushButton,一个QListWidget组成一个组合控件。过程:1、将QPushButton嵌入进QLineEdit中。_button->setText("...");_lineEdit->setReadOnly(true);_lineEdit->se
QTableView修改其关联的数据模型中的数据
科学的发展-只不过是读大自然写的代码
# qt 表格 数据库
QTableView修改其关联的数据模型中的数据,可以通过以下步骤进行:确定数据模型:首先,需要明确QTableView当前关联的数据模型。这个模型通常是QAbstractTableModel或其子类的实例。这个模型负责存储和管理表格数据。修改模型中的数据:要修改数据模型中的数据,可以直接访问模型的内部数据结构并进行修改。这通常涉及到改变存储在模型中的数组、列表或其他数据结构的内容。如果模型提供了
QT-信号与槽用法实例与注意事项及五个连接方式详解
luckyone906
QT-笔记 Qt事件机制 QT qt 开发语言
1.基本用法2.slots的函数用法3.slots的lambda表达式4.断开连接到对象信号的所有Object5.断开连接到特定信号的所有Object6.断开特定接收者7.connect函数的第5参数Qt::ConnectionType8.QObject::connect:Cannotqueueargumentsoftype'XXX'9.QTimer的singleShot环境:QT版本:5.6.2
Qt/QML学习-Drawer
放假当宅宅
Qt/QML学习 qt 学习
QML学习Drawer例程视频讲解代码main.qmlimportQtQuick2.15importQtQuick.Window2.15importQtQuick.Controls2.15Window{width:640height:480visible:truetitle:qsTr("Drawer")Drawer{id:drawerwidth:parent.width/4height:paren
这项来自中国的AI研究介绍了1位全量化训练(FQT):增强了全量化训练(FQT)的能力至1位
量子位AI
人工智能 机器学习 深度学习
全量化训练(FQT)可以通过将激活、权重和梯度转换为低精度格式来加速深度神经网络的训练。量化过程使得计算速度更快,且内存利用率更低,从而使训练过程更加高效。FQT在尽量减少数值精度的同时,保持了训练的有效性。研究人员一直在研究1位FQT的可行性,试图探索这些限制。该研究首先从理论上分析了FQT,重点关注了如Adam和随机梯度下降(SGD)等知名的优化算法。分析中出现了一个关键发现,那就是FQT收敛
Ubuntu上qt使用SSH样式表
杨~friendship
ubuntu linux 运维 ssh qt 学习 c++
SSH样式表如果学习过web的同学都知道,我们在学习HTML的时候会用到样式表,我们使用它来更改我们的颜色、大小、背景等等。上到后面,老师会说:我们如果在HTML文件中编辑太多的样式,就会让代码看起来非常的繁琐,所以我们开始学习了CSS样式,那么在QT中我们也同样会使用。那我们就开始学习吧!‘1.编辑样式#include"widget.h"#include"ui_widget.h"#include
Ubuntu中qt类与类信号槽的创建及使用
杨~friendship
ubuntu qt linux 学习 c++
今天学习到了新的一个小玩意,我们在QT中创建一个大项目的时候一般会创建多个类,那我们就来学习一下如何在自定义的类中声名和使用信号与槽函数。首先我们CTRL+n来创建我们新的类:我们创建新的C++的类,一个School,一个Students。我使用的是Cmake!!!!不是qmake!!!!!!!!创建好之后呢,我们要先声名一下我们的两个类,看代码:(在mainwindow.h)#ifndefMAI
Qt自定义滑动条
sensetime阿清
Qt qt c++
最近要用到滑动条,Qt自带的QSlider虽然能满足需求,但是操作起来有很多不舒服的地方,于是在它的基础上改了改,分享给大家使用。先放效果图:在QSlider的基础上,改变了样式,绘制了刻度,增加了取整功能,只需要微调就能适应各种需求。头文件。需要包含下面的东西#include#include#include#include#include声明。需要继承QSlider,并重写两个鼠标事件mouse
qt实现三原色滑动条变色
杨~friendship
qt 开发语言 学习 c++ ubuntu linux
在qt中有这样一个控件:就是这个HorizontalSlider他的作用相信大家都知道了,也就是通过滑动来改变数值。今天我们就使用这个控件实现一个三原色滑动变色。实现效果:1.创建UI界面这个就不用多说了,这个大家就按照我的这个去创建就好了。2.编写代码首先我们要初始话我们的属性://初始化红色滑动条ui->hsred->setMaximum(255);ui->hsred->setMinimum(
QT-快捷键-记事本文字放大缩小
打地基的小白
QT 学习路程 qt 开发语言
一、QShortcut类QShortcut简介QShortcut类允许你为你的应用程序定义快捷键。当快捷键被按下时,QShortcut可以触发一个槽函数,或者它可以直接激活一个QWidget。创建QShortcut对象QShortcut可以通过多种构造函数创建,其中最常见的形式是:QShortcut(QKeySequencekey,QWidget*parent,constchar*member=0
Kevin‘s notes about Qt---Episode 4 多次点击按钮反复执行机械臂动作
Kevin__47
linux 网络 c++ qt
原先版本SDK1.2.1-2020-04-02HMI界面4.0.6.135135控制器1.7.5升级程序0.6.4伺服版本不详(似乎也并不重要)前言在之前的工作中,这个问题并没有得到有效解决,情况如下:在之前版本的程序中,每次动作执行完后需要关闭Qt界面,下一次想要运行机械臂程序时,就算没有改动程序,也需要再次点击编译运行,可以正常运行。直接在Qt界面再次点击一开始放置的“StartMove”按钮
搭建基于QT的TCP服务器与客户端
嘻嘻嘻Mr.Huang
服务器 运维
1、实现功能1、服务器和客户端能够建立连接2、服务器可以给客户端发送信息3、客户端可以给服务器发送信息2、server2-1、widget.h#ifndefWIDGET_H#defineWIDGET_H#include#include#includeQT_BEGIN_NAMESPACEnamespaceUi{classWidget;}QT_END_NAMESPACEclassWidget:publ
身为软件工程的小袁们不知道怎样学的快看过来啊!!!(C++版)
mylifeisburning_No.1
c++ 开发语言
1.技术准备①C语言的掌握能够独立刷完《CPrimerPlus》习题集为及格②C++的掌握能够独立刷完《C++Primer》和《C++PrimerPlus》习题集为及格(两个中任选一个)③数据库掌握数据库的安装、配置、部署、数据库的设计(达到第三范式3NF的要求)数据的增删查改以及使用代码访问数据库即可④应用框架使用最新的QT,对于QT基本掌握一个模版类,基础控件,布局,对话框,主窗体,绘图,图形
【Qt报错】This application failed to start because it could not find or load the Qtplatform plugin
爱吃小熊饼干、
C++ c++ qt
在VS中的relesse能运行,但是在relesae文件夹生成的exe运行报错:ThisapplicationfailedtostartbecauseitcouldnotfindorloadtheQtplatformplugin"windows’in"”Reinstallingtheapplicationmayfixthisproblem.看了很多帖子就是说用windeployqt命令窗口重新运行
工业软件架构5:(QT和C++实现)
強云
软件架构 工业自动化 C++ qt c++
工业软件架构-事件驱动-5设计思路任务类的实现任务控制器主程序运行原理扩展功能总结非for循环任务任务分解与状态管理实现思路任务类的实现任务控制器主程序运行原理扩展功能总结耗时任务继续运行在一些复杂的系统中,任务需要暂停和继续运行功能。实现带有暂停和继续功能的任务需要引入任务状态管理和线程同步机制。常见的方式包括使用QWaitCondition和QMutex来控制任务的执行、暂停和继续。设计思路要
QT 多按钮共用同一个槽函数并且区分
五泉山上卖烤串
Qt多个信号连接同一个槽的方法https://www.fearlazy.com/index.php/post/86.html这篇博文写的很仔细
Qt中点击按钮触发clicked()事件响应了两次
藻丫
QT qt 开发语言
引起问题的原因:我把ui里的按钮控件“转到槽”以后又手动使用connect连接了一次,=.=!所以导致点击按钮以后,事件响应了两次。。。解决方法就是删掉connect语句就行。又是快乐的一天呢。。。
Qt 多个按钮,响应同一个点击事件
程序员乐逍遥
Qt框架 MFC框架高级编程 qt 数据库 java
最近的一个需求,需要多个按钮响应同一个点击事件,并且要求能区分是哪个按钮点击的,看效果:直接上代码:QListbuttons=findChildren();for(QPushButton*button:buttons){connect(button,&QPushButton::clicked,[this,button]()//将button作为捕获列表的一部分{//这里可以处理点击事件,click
Qt 中 QMainWindow 的概述与实现
三玖诶
Qt qt
目录Qt中QMainWindow的概述与实现1.1组件概述1.1.1菜单栏(QMenuBar)1.1.2工具栏(QToolBar)1.1.3状态栏(QStatusBar)1.1.4停靠部件(QDockWidget)1.1.5中心控件实现2.1创建项目2.2编写代码2.3运行程序总结Qt中QMainWindow的概述与实现概述在Qt中,QMainWindow是一种常用的主窗口类型,它提供了一个标准的
Java常用排序算法/程序员必须掌握的8大排序算法
cugfy
java
分类:
1)插入排序(直接插入排序、希尔排序)
2)交换排序(冒泡排序、快速排序)
3)选择排序(直接选择排序、堆排序)
4)归并排序
5)分配排序(基数排序)
所需辅助空间最多:归并排序
所需辅助空间最少:堆排序
平均速度最快:快速排序
不稳定:快速排序,希尔排序,堆排序。
先来看看8种排序之间的关系:
1.直接插入排序
(1
【Spark102】Spark存储模块BlockManager剖析
bit1129
manager
Spark围绕着BlockManager构建了存储模块,包括RDD,Shuffle,Broadcast的存储都使用了BlockManager。而BlockManager在实现上是一个针对每个应用的Master/Executor结构,即Driver上BlockManager充当了Master角色,而各个Slave上(具体到应用范围,就是Executor)的BlockManager充当了Slave角色
linux 查看端口被占用情况详解
daizj
linux 端口占用 netstat lsof
经常在启动一个程序会碰到端口被占用,这里讲一下怎么查看端口是否被占用,及哪个程序占用,怎么Kill掉已占用端口的程序
1、lsof -i:port
port为端口号
[root@slave /data/spark-1.4.0-bin-cdh4]# lsof -i:8080
COMMAND PID USER FD TY
Hosts文件使用
周凡杨
hosts locahost
一切都要从localhost说起,经常在tomcat容器起动后,访问页面时输入http://localhost:8088/index.jsp,大家都知道localhost代表本机地址,如果本机IP是10.10.134.21,那就相当于http://10.10.134.21:8088/index.jsp,有时候也会看到http: 127.0.0.1:
java excel工具
g21121
Java excel
直接上代码,一看就懂,利用的是jxl:
import java.io.File;
import java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import
web报表工具finereport常用函数的用法总结(数组函数)
老A不折腾
finereport web报表 函数总结
ADD2ARRAY
ADDARRAY(array,insertArray, start):在数组第start个位置插入insertArray中的所有元素,再返回该数组。
示例:
ADDARRAY([3,4, 1, 5, 7], [23, 43, 22], 3)返回[3, 4, 23, 43, 22, 1, 5, 7].
ADDARRAY([3,4, 1, 5, 7], "测试&q
游戏服务器网络带宽负载计算
墙头上一根草
服务器
家庭所安装的4M,8M宽带。其中M是指,Mbits/S
其中要提前说明的是:
8bits = 1Byte
即8位等于1字节。我们硬盘大小50G。意思是50*1024M字节,约为 50000多字节。但是网宽是以“位”为单位的,所以,8Mbits就是1M字节。是容积体积的单位。
8Mbits/s后面的S是秒。8Mbits/s意思是 每秒8M位,即每秒1M字节。
我是在计算我们网络流量时想到的
我的spring学习笔记2-IoC(反向控制 依赖注入)
aijuans
Spring 3 系列
IoC(反向控制 依赖注入)这是Spring提出来了,这也是Spring一大特色。这里我不用多说,我们看Spring教程就可以了解。当然我们不用Spring也可以用IoC,下面我将介绍不用Spring的IoC。
IoC不是框架,她是java的技术,如今大多数轻量级的容器都会用到IoC技术。这里我就用一个例子来说明:
如:程序中有 Mysql.calss 、Oracle.class 、SqlSe
高性能mysql 之 选择存储引擎(一)
annan211
mysql InnoDB MySQL引擎 存储引擎
1 没有特殊情况,应尽可能使用InnoDB存储引擎。 原因:InnoDB 和 MYIsAM 是mysql 最常用、使用最普遍的存储引擎。其中InnoDB是最重要、最广泛的存储引擎。她 被设计用来处理大量的短期事务。短期事务大部分情况下是正常提交的,很少有回滚的情况。InnoDB的性能和自动崩溃 恢复特性使得她在非事务型存储的需求中也非常流行,除非有非常
UDP网络编程
百合不是茶
UDP编程 局域网组播
UDP是基于无连接的,不可靠的传输 与TCP/IP相反
UDP实现私聊,发送方式客户端,接受方式服务器
package netUDP_sc;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.Ine
JQuery对象的val()方法执行结果分析
bijian1013
JavaScript js jquery
JavaScript中,如果id对应的标签不存在(同理JAVA中,如果对象不存在),则调用它的方法会报错或抛异常。在实际开发中,发现JQuery在id对应的标签不存在时,调其val()方法不会报错,结果是undefined。
http请求测试实例(采用json-lib解析)
bijian1013
json http
由于fastjson只支持JDK1.5版本,因些对于JDK1.4的项目,可以采用json-lib来解析JSON数据。如下是http请求的另外一种写法,仅供参考。
package com;
import java.util.HashMap;
import java.util.Map;
import
【RPC框架Hessian四】Hessian与Spring集成
bit1129
hessian
在【RPC框架Hessian二】Hessian 对象序列化和反序列化一文中介绍了基于Hessian的RPC服务的实现步骤,在那里使用Hessian提供的API完成基于Hessian的RPC服务开发和客户端调用,本文使用Spring对Hessian的集成来实现Hessian的RPC调用。
定义模型、接口和服务器端代码
|---Model
&nb
【Mahout三】基于Mahout CBayes算法的20newsgroup流程分析
bit1129
Mahout
1.Mahout环境搭建
1.下载Mahout
http://mirror.bit.edu.cn/apache/mahout/0.10.0/mahout-distribution-0.10.0.tar.gz
2.解压Mahout
3. 配置环境变量
vim /etc/profile
export HADOOP_HOME=/home
nginx负载tomcat遇非80时的转发问题
ronin47
nginx负载后端容器是tomcat(其它容器如WAS,JBOSS暂没发现这个问题)非80端口,遇到跳转异常问题。解决的思路是:$host:port
详细如下:
该问题是最先发现的,由于之前对nginx不是特别的熟悉所以该问题是个入门级别的:
? 1 2 3 4 5
java-17-在一个字符串中找到第一个只出现一次的字符
bylijinnan
java
public class FirstShowOnlyOnceElement {
/**Q17.在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
* 1.int[] count:count[i]表示i对应字符出现的次数
* 2.将26个英文字母映射:a-z <--> 0-25
* 3.假设全部字母都是小写
*/
pu
mongoDB 复制集
开窍的石头
mongodb
mongo的复制集就像mysql的主从数据库,当你往其中的主复制集(primary)写数据的时候,副复制集(secondary)会自动同步主复制集(Primary)的数据,当主复制集挂掉以后其中的一个副复制集会自动成为主复制集。提供服务器的可用性。和防止当机问题
mo
[宇宙与天文]宇宙时代的经济学
comsci
经济
宇宙尺度的交通工具一般都体型巨大,造价高昂。。。。。
在宇宙中进行航行,近程采用反作用力类型的发动机,需要消耗少量矿石燃料,中远程航行要采用量子或者聚变反应堆发动机,进行超空间跳跃,要消耗大量高纯度水晶体能源
以目前地球上国家的经济发展水平来讲,
Git忽略文件
Cwind
git
有很多文件不必使用git管理。例如Eclipse或其他IDE生成的项目文件,编译生成的各种目标或临时文件等。使用git status时,会在Untracked files里面看到这些文件列表,在一次需要添加的文件比较多时(使用git add . / git add -u),会把这些所有的未跟踪文件添加进索引。
==== ==== ==== 一些牢骚
MySQL连接数据库的必须配置
dashuaifu
mysql 连接数据库配置
MySQL连接数据库的必须配置
1.driverClass:com.mysql.jdbc.Driver
2.jdbcUrl:jdbc:mysql://localhost:3306/dbname
3.user:username
4.password:password
其中1是驱动名;2是url,这里的‘dbna
一生要养成的60个习惯
dcj3sjt126com
习惯
一生要养成的60个习惯
第1篇 让你更受大家欢迎的习惯
1 守时,不准时赴约,让别人等,会失去很多机会。
如何做到:
①该起床时就起床,
②养成任何事情都提前15分钟的习惯。
③带本可以随时阅读的书,如果早了就拿出来读读。
④有条理,生活没条理最容易耽误时间。
⑤提前计划:将重要和不重要的事情岔开。
⑥今天就准备好明天要穿的衣服。
⑦按时睡觉,这会让按时起床更容易。
2 注重
[介绍]Yii 是什么
dcj3sjt126com
PHP yii2
Yii 是一个高性能,基于组件的 PHP 框架,用于快速开发现代 Web 应用程序。名字 Yii (读作 易)在中文里有“极致简单与不断演变”两重含义,也可看作 Yes It Is! 的缩写。
Yii 最适合做什么?
Yii 是一个通用的 Web 编程框架,即可以用于开发各种用 PHP 构建的 Web 应用。因为基于组件的框架结构和设计精巧的缓存支持,它特别适合开发大型应
Linux SSH常用总结
eksliang
linux ssh SSHD
转载请出自出处:http://eksliang.iteye.com/blog/2186931 一、连接到远程主机
格式:
ssh name@remoteserver
例如:
ssh
[email protected]
二、连接到远程主机指定的端口
格式:
ssh name@remoteserver -p 22
例如:
ssh i
快速上传头像到服务端工具类FaceUtil
gundumw100
android
快速迭代用
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOExceptio
jQuery入门之怎么使用
ini
JavaScript html jquery Web css
jQuery的强大我何问起(个人主页:hovertree.com)就不用多说了,那么怎么使用jQuery呢?
首先,下载jquery。下载地址:http://hovertree.com/hvtart/bjae/b8627323101a4994.htm,一个是压缩版本,一个是未压缩版本,如果在开发测试阶段,可以使用未压缩版本,实际应用一般使用压缩版本(min)。然后就在页面上引用。
带filter的hbase查询优化
kane_xie
查询优化 hbase RandomRowFilter
问题描述
hbase scan数据缓慢,server端出现LeaseException。hbase写入缓慢。
问题原因
直接原因是: hbase client端每次和regionserver交互的时候,都会在服务器端生成一个Lease,Lease的有效期由参数hbase.regionserver.lease.period确定。如果hbase scan需
java设计模式-单例模式
men4661273
java 单例 枚举 反射 IOC
单例模式1,饿汉模式
//饿汉式单例类.在类初始化时,已经自行实例化
public class Singleton1 {
//私有的默认构造函数
private Singleton1() {}
//已经自行实例化
private static final Singleton1 singl
mongodb 查询某一天所有信息的3种方法,根据日期查询
qiaolevip
每天进步一点点 学习永无止境 mongodb 纵观千象
// mongodb的查询真让人难以琢磨,就查询单天信息,都需要花费一番功夫才行。
// 第一种方式:
coll.aggregate([
{$project:{sendDate: {$substr: ['$sendTime', 0, 10]}, sendTime: 1, content:1}},
{$match:{sendDate: '2015-
二维数组转换成JSON
tangqi609567707
java 二维数组 json
原文出处:http://blog.csdn.net/springsen/article/details/7833596
public class Demo {
public static void main(String[] args) { String[][] blogL
erlang supervisor
wudixiaotie
erlang
定义supervisor时,如果是监控celuesimple_one_for_one则删除children的时候就用supervisor:terminate_child (SupModuleName, ChildPid),如果shutdown策略选择的是brutal_kill,那么supervisor会调用exit(ChildPid, kill),这样的话如果Child的behavior是gen_