在Qt的开发过程中,时常会用到表单(QTableWidget)这个控件,网上的资料不少,但是都是最基本的,有一些比较经常遇到的问题也说得不太清楚。所以,今天就在这里总结一下!
table_widget->setHorizontalHeaderLabels(header);
//设置表头字体加粗
QFont font = this->horizontalHeader()->font(); font.setBold(true); table_widget->horizontalHeader()->setFont(font);
table_widget->horizontalHeader()->setStretchLastSection(true); //设置充满表宽度 table_widget->verticalHeader()->setResizeMode(QHeaderView::ResizeToContents); table_widget->verticalHeader()->setDefaultSectionSize(10); //设置行距 table_widget->setFrameShape(QFrame::NoFrame); //设置无边框 table_widget->setShowGrid(false); //设置不显示格子线 table_widget->verticalHeader()->setVisible(false); //设置垂直头不可见 table_widget->setSelectionMode(QAbstractItemView::ExtendedSelection); //可多选(Ctrl、Shift、 Ctrl+A都可以) table_widget->setSelectionBehavior(QAbstractItemView::SelectRows); //设置选择行为时每次选择一行 table_widget->setEditTriggers(QAbstractItemView::NoEditTriggers); //设置不可编辑 table_widget->horizontalHeader()->resizeSection(0,150); //设置表头第一列的宽度为150 table_widget->horizontalHeader()->setFixedHeight(25); //设置表头的高度
table_widget->setStyleSheet("selection-background-color:lightblue;"); //设置选中背景色
table_widget->horizontalHeader()->setStyleSheet("QHeaderView::section{background:skyblue;}"); //设置表头背景色
//设置水平、垂直滚动条样式
table_widget->horizontalScrollBar()->setStyleSheet("QScrollBar{background:transparent; height:10px;}" "QScrollBar::handle{background:lightgray; border:2px solid transparent; border-radius:5px;}" "QScrollBar::handle:hover{background:gray;}" "QScrollBar::sub-line{background:transparent;}" "QScrollBar::add-line{background:transparent;}");
table_widget->verticalScrollBar()->setStyleSheet("QScrollBar{background:transparent; width: 10px;}" "QScrollBar::handle{background:lightgray; border:2px solid transparent; border-radius:5px;}" "QScrollBar::handle:hover{background:gray;}" "QScrollBar::sub-line{background:transparent;}" "QScrollBar::add-line{background:transparent;}");
好了,样式设置完成,效果如下所示:
问题一: 鼠标点击的选项会出现虚框,在Qt官网找到一篇博客专门介绍的,直接上代码!
(1)实现如下一个类
#include "no_focus_delegate.h"
void NoFocusDelegate::paint(QPainter* painter, const QStyleOptionViewItem & option, const QModelIndex &index) const { QStyleOptionViewItem itemOption(option); if (itemOption.state & QStyle::State_HasFocus) { itemOption.state = itemOption.state ^ QStyle::State_HasFocus; }
QStyledItemDelegate::paint(painter, itemOption, index); }
(2)表格构造中添加如下代码
table_widget->setItemDelegate(new NoFocusDelegate());
OK,虚线边框去除
问题二: 当表格只有一行的时候,则表头会出现塌陷问题
摸索了很长时间,才得以解决:
//点击表时不对表头行光亮(获取焦点) table_widget->horizontalHeader()->setHighlightSections(false);
二、操作表单(添加、删除行等)
(1)动态插入行
int row_count = table_widget->rowCount(); //获取表单行数 table_widget->insertRow(row_count); //插入新行
QTableWidgetItem *item = new QTableWidgetItem(); QTableWidgetItem *item1 = new QTableWidgetItem(); QTableWidgetItem *item2 = new QTableWidgetItem(); QTableWidgetItem *item3 = new QTableWidgetItem();
//设置对应的图标、文件名称、最后更新时间、对应的类型、文件大小 item->setIcon(icon); //icon为调用系统的图标,以后缀来区分 item->setText(name); item1->setText(last_modify_time); item2->setText(type); //type为调用系统的类型,以后缀来区分
item3->setText(size);
table_widget->setItem(row_count, 0, item); table_widget->setItem(row_count, 1, item1); table_widget->setItem(row_count, 2, item2); table_widget->setItem(row_count, 3, item3);
//设置样式为灰色 QColor color("gray"); item1->setTextColor(color); item2->setTextColor(color); item3->setTextColor(color);
(2)在指定位置插入行
其实跟(1)相似,(1)的前提是获取到表格行数
table_widget->insertRow(row); //插入新行 row为插入的位置
三、单击表头触发的事件
(1)连接表头的信号和槽
connect(horizontalHeader(), SIGNAL(sectionClicked(int)), this, SLOT(onHeaderClicked(int)));
(2)实现槽函数
void TableWidget::onHeaderClicked(int column) { //column为所点击的表头的某列 }
四、打开某行进行编辑
既然模拟Window那么就模仿的像一点,Windows可以修改名称,那么Qt也必然可以实现
//获得当前节点并获取编辑名称 QTableWidgetItem *item = table_widget->item(edit_row, 0); //edit_row为想要编辑的行号 table_widget->setCurrentCell(edit_row, 0); table_widget->openPersistentEditor(item); //打开编辑项 table_widget->editItem(item);
//关闭编辑项
table_widget->closePersistentEditor(item);
OK,重命名完成,!
五、右键菜单
(1)创建菜单、菜单项
void TableWidget::createActions() { //创建菜单项 pop_menu = new QMenu(); action_name = new QAction(this); action_size = new QAction(this); action_type = new QAction(this); action_date = new QAction(this);
action_open = new QAction(this); action_download = new QAction(this); action_flush = new QAction(this);
action_delete = new QAction(this); action_rename = new QAction(this); action_create_folder = new QAction(this);
action_open->setText(QString("打开"));
action_download->setText(QString("下载"));
action_flush->setText(QString("刷新"));
action_delete->setText(QString("删除"));
action_rename->setText(QString("重命名"));
action_create_folder->setText(QString("新建文件夹"));
action_name->setText(QString("名称")); action_size->setText(QString("大小")); action_type->setText(QString("项目类型")); action_date->setText(QString("修改日期"));
//设置快捷键
action_flush->setShortcut(QKeySequence::Refresh);
//设置文件夹图标 action_create_folder->setIcon(icon);
QObject::connect(action_create_folder, SIGNAL(triggered()), this, SLOT(createFolder())); }
(2)重新实现contextMenuEvent
void TableWidget::contextMenuEvent(QContextMenuEvent *event) { pop_menu->clear(); //清除原有菜单 QPoint point = event->pos(); //得到窗口坐标
QTableWidgetItem *item = this->itemAt(point);
if(item != NULL)
{
pop_menu->addAction(action_download); pop_menu->addAction(action_flush); pop_menu->addSeparator(); pop_menu->addAction(action_delete); pop_menu->addAction(action_rename); pop_menu->addSeparator(); pop_menu->addAction(action_create_folder);
sort_style = pop_menu->addMenu("排序"); sort_style->addAction(action_name); sort_style->addAction(action_size); sort_style->addAction(action_type); sort_style->addAction(action_date);
//菜单出现的位置为当前鼠标的位置 pop_menu->exec(QCursor::pos()); event->accept();
}
}
OK,大功告成!
六、信号
void cellActivated(int row, int column) void cellChanged(int row, int column) void cellClicked(int row, int column) void cellDoubleClicked(int row, int column) void cellEntered(int row, int column) void cellPressed(int row, int column) void itemActivated(QTableWidgetItem *item) void itemChanged(QTableWidgetItem *item) void itemClicked(QTableWidgetItem *item) void itemDoubleClicked(QTableWidgetItem *item) void itemEntered(QTableWidgetItem *item) void itemPressed(QTableWidgetItem *item) void itemSelectionChanged()
void currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous)
void currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)
到这里,还有一点遗留问题,关于界面的文件(文件夹)图标和类型怎么显示的?又怎么区别什么时候显示什么样的图标呢?如果图标和类型写死的话必不可行,因为不同后缀的文件至少也有100种以上吧!这里提示一下,可以调用系统API获取当前系统的指定文件(通过后缀区分)对应的类型以及图标。。。
这些都是在接触Qt以来总结的一些小经验,希望对大家有用!
转自:http://blog.sina.com.cn/s/blog_a6fb6cc90101dd5u.html
转载于:https://www.cnblogs.com/veins/p/3209123.html
你可能感兴趣的:(QTableWidget详解(样式、右键菜单、表头塌陷、多选等)(转))
责任感:要求服从,不如传输价值观
麦克白馥芮
书中谈到的责任感与我们平时所说的责任感好像不是同一个范畴,会更宏大,更多的是对生命的尊重。这样的责任感的培养需要身教,到底做家务这样的琐事能不能培养孩子的责任感呢?想起李玫瑾老师分享的一个故事,他们家里如果有人回家晚,会给他单独留饭留菜,后来孩子也慢慢养成这样的习惯,这既是身教,又从家庭琐事方面培养孩子的家庭责任感。有几位老师也分享了整理房间、给予发言和选择权等对培养孩子的责任感的亲身体验,不能完
服务器运维小技巧(二)——如何进行监控告警
baiolkdnhjaio
网络安全
服务器运维难度高的原因,很大程度是因为服务器一旦出现问题,生产环境的业务就会受到严重影响,极有可能带来难以承担的后果。因此这份工作要求工程师保持高要求的服务质量,能够快速响应问题,及时解决问题。但是“及时”的这一点很难做到,需要通过优化工作流程、建立预警系统,搭建自动化等行为快速响应。今天主要介绍如何通过服务器运维工具搭建监控预警的手段来辅助缩短响应时间。首先打开牧云主机管理助手,进入系统设置界面
使用WAF防御网络上的隐蔽威胁之反序列化攻击
baiolkdnhjaio
网络安全
什么是反序列化反序列化是将数据结构或对象状态从某种格式转换回对象的过程。这种格式通常是二进制流或者字符串(如JSON、XML),它是对象序列化(即对象转换为可存储或可传输格式)的逆过程。反序列化的安全风险反序列化的安全风险主要来自于处理不受信任的数据源时的不当反序列化。如果应用程序反序列化了恶意构造的数据,攻击者可能能够执行代码、访问敏感数据、进行拒绝服务攻击等。这是因为反序列化过程中可能会自动触
梦想着两个人的世界,却变成了一个人的时间
小飞侠来了
梦想着两个人的世界,却变成了一个人的时间流光似转,寂寞如光,不经意间逝去的爱情已经半年多了,每个日日夜夜数着你别后的淡颜,岁月就这样溜走了。一段思念,钟情相思,点缀烟花何处;两情想问,笔簟几分,留恋春色难尽。春色眉黛拽着记忆,褪去的冬天颜色犹着初寒,往事不堪,平添忧伤,重新再帘后轻吟着一曲离殇,心间荡起的孤独,循环着你我经历的时光,只是记忆犹在,人却已非。似乎习惯了回想曾经,慢慢的,也就习惯了没有
字字戳心却能宽慰人心
十分Lucky
下面的这段文字是我转自“胡小林”公众号的文章,篇幅不长,但字字戳心,可谓醍醐灌顶,一字未改,只为保存、提醒自己……你要相信,这个世上没有过不去的坎,没有熬不过的难,总有一天,会得到满意的答案!做人,不要去怪任何人,好的人给你快乐,坏的人让你成长,关心你的人给你温暖,伤害你的人给你经历。感恩所有的遇见,一切都是最好的安排。怪别人,抱怨别人,只会增加自己的怨气,让自己心累。不如看淡点,换个角度思考,想
智能合约系统DAPP开发
I592O929783
智能合约 区块链
智能合约系统DAPP(去中心化应用)的开发是一个复杂且综合性的过程,它结合了区块链技术、智能合约编程、前端开发以及安全性等多方面的知识和技能。以下是对智能合约系统DAPP开发过程的详细概述:一、需求分析明确应用场景:首先,需要明确DAPP的应用场景,如金融、游戏、社交等。功能需求:确定DAPP需要实现的具体功能,包括数据处理、用户交互等。用户群体:了解目标用户群体的需求和习惯,以便更好地设计DAP
体验我们的自心本质。1.2.2
火山_专注写作提升
我们拥有闲暇而圆满的人身,它是如此难以获得且不会长久。这一节的学习,让我体验到了佛陀的不同凡响,他是一个伟大的老师,他用他自己的亲身经历教会了我很多道理。佛陀,相信不少人知道他的故事。佛陀自小出生在一个王族家庭。未来准备继承王位而获得无上的权力,这让人看来既羡慕又妒忌的人间美事,国王,也就是他的父亲一直让他待在宫里享受着人间各种美好。有一次,佛陀在29岁时离开了王宫,遇到了穷人,老人,病人,死人等
为什么需要DDos高防服务器呢?
666IDCaaa
ddos 服务器 网络
在当今信息化快速发展的时代,网络安全问题显得尤为重要。DDoS攻击是一种耗尽系统资源的攻击方式,可以导致正常服务请求无法得到响应。这种攻击不仅影响用户体验,还可能导致企业声誉受损、经济损失以及客户流失等严重后果。因此,选择有效的DDoS高防服务对于保护网络安全至关重要。DDoS高防服务可以通过云端清洗集群、数据库监控牵引系统等技术进行有效的削弱。这些技术能够识别并过滤恶意流量,确保正常用户能够顺利
边缘计算在现代数据中心的应用
666IDCaaa
边缘计算 人工智能
当今数字化时代,数据中心扮演着至关重要的角色,而边缘计算的出现为现代数据中心带来了新的机遇和挑战。一、边缘计算的概念与特点边缘计算是一种将计算和数据存储靠近数据源或用户的分布式计算模式。与传统的集中式云计算相比,边缘计算具有以下特点:低延迟:由于数据处理在靠近数据源的地方进行,减少了数据传输的距离和时间,从而实现了更低的延迟。这对于实时性要求高的应用,如工业自动化、自动驾驶、虚拟现实等至关重要。高
常见的虚拟主机和服务器的分类
666IDCaaa
服务器
任何一个网站都需要有一个存放网站资源的地方,这个“地方”就称为“网站服务器”。你可以把网站服务器理解为可以通过互联网访问的电脑,然后根据这台“电脑”的性能和构架,又分有虚拟主机、VPS、独立服务器等。简单一点帮助您理解网站主机的选择知识就是:服务器是一分钱一分货,新手入门几乎都是从虚拟主机开始,几年后慢慢都会转向VPS,发展的很好的网站最后会选择独立服务器。常见的虚拟主机和服务器的分类我们以做外贸
都2024年了,还在问网络安全怎么入门,气得我当场脑血栓发作
网安大师兄
web安全 网络 安全 网络安全 学习
前言本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。正题首先,在准备进入这个行业之前,我们要问一下我们的内心,工作千千万,为什么要想进入这个行业?相信每个人的答案都不一样,有的人会说,这个行业整体上比其他行业赚钱多,有的人会说特别喜欢技术,想钻研一
2018-12-08
Rebecca_2be3
今天离2019年倒计时只剩24天了。昨天因为想着回去太晚,所以在校区睡觉了。刚刚才发觉时间这个东西真是太少了。睡觉时间太少。而工作这个时间太多。没办法,大家都这样,希望自己的坚持能够让校区的目标超越百分之85%。我就奖励自己一次云南旅游,这次我的续班很恐怖。但是无论如何,我都不会放弃的哈哈哈。等会就要去上课了,有点困,但是无论如何还是要坚持下去。等会儿去喝杯咖啡。这样子会更好一些。时间会让我们这些
2020年下半年感恩日记day22
紫陌宝贝
1.万分感恩我的爸爸妈妈给予我生命,在广西的这一周的时间,去爸爸妈妈的回收店帮忙,去了解爸爸妈妈的生活。爸爸妈妈都是非常勤奋朴实的人,每一分钱都是他们用汗水一点一点辛勤劳动赚回来的,虽然他们面临的工作环境脏,乱,气味不好闻,但是他们不嫌弃每一块小纸壳,每一个瓶子,每一个螺丝钉,踏踏实实做好每一笔交易。他们的客人,有环卫工人,有富家老板,有普通白领,有勤奋的学生等,不同年龄,不同身份的人,我的爸爸妈
vue el-dialog嵌套解决无法点击问题
javachen__
vue.js elementui
产生原因:当你在el-dialog上嵌套另一个el-dialog窗口时,可能会遇到内部对话框无法点击的问题。这通常是由于嵌套对话框的遮罩层(overlay)或其他样式问题造成的。解决方案:如果你的el-dialog组件支持append-to-body属性,你可以将对话框附加到body元素上,以避免z-index问题。外层对话框内层对话框
微服务之服务注册与发现:Etcd、Zookeeper、Consul 与 Nacos 比较
陌北v1
微服务 etcd zookeeper Consul Nacos
在微服务架构中,服务注册与发现是实现服务动态管理和负载均衡的关键。本文将对四款主流的服务注册与发现工具——Etcd、Zookeeper、Consul、Nacos进行深入对比,从功能、性能、一致性、生态集成、应用场景等多个维度展开分析,帮助您选择最适合的工具。核心概念服务注册:服务实例启动时将自身信息(IP地址、端口、健康状态等)注册到注册中心。服务发现:服务消费者通过注册中心查询所需服务的地址列表
Python世界:简易地址簿增删查改算法实践
来知晓
Python世界 python 机器学习 开发语言
Python世界:简易地址簿增删查改算法实践任务背景编码思路代码实现本文小结任务背景该任务来自简明Python教程中迈出下一步一章的问题:编写一款你自己的命令行地址簿程序,你可以用它浏览、添加、编辑、删除或搜索你的联系人,例如你的朋友、家人、同事,还有他们诸如邮件地址、电话号码等多种信息。这些详细信息必须被妥善储存以备稍后的检索。编码思路从问题中可以提炼以下信息:1、地址簿需要支持本地存储读写;2
流量牵引技术与传统防火墙的区别
666IDCaaa
ddos
在网络安全领域,流量牵引技术和传统防火墙都起着重要的作用,但它们在很多方面存在着明显的区别。一、工作原理不同传统防火墙主要是通过设置访问控制规则来过滤网络流量。它基于预先设定的策略,对进入和离开网络的数据包进行检查,根据源地址、目的地址、端口号等信息决定是否允许数据包通过。例如,企业可以设置防火墙规则,只允许特定IP地址的设备访问内部网络资源,或者禁止某些端口的流量进入,以防止潜在的攻击。而流量牵
科锐国际(计算机类),汤臣倍健,中建三局,宁德时代,途游游戏,得物,顺丰,康冠科技24春招内推
weixin_53585422
c++ 算法 python java c语言
科锐国际(计算机类),汤臣倍健,中建三局,宁德时代,途游游戏,得物,顺丰,康冠科技24春招内推①汤臣倍健【内推岗位】:市场类、营销类、研发类、电商类、职能类、IT技术类、商业分析类、生产运营类【内推链接】https://sourl.cn/JSDhLU【推荐码】ES3W2T②科锐国际(OD项目组--计算机专场)【招聘岗位】软件开发工程师、软件测试工程师、大数据开发工程师、运维工程师等计算机类岗位,2
汤臣倍健,中建三局,宁德时代,金证科技,途游游戏,得物,蓝禾,顺丰,康冠科技24春招内推
weixin_53585422
c++ python java 前端 算法 硬件工程 嵌入式硬件
汤臣倍健,中建三局,宁德时代,金证科技,途游游戏,得物,蓝禾,顺丰,康冠科技24春招内推①汤臣倍健【内推岗位】:市场类、营销类、研发类、电商类、职能类、IT技术类、商业分析类、生产运营类【内推链接】https://sourl.cn/JSDhLU【推荐码】ES3W2T②得物【岗位】技术,设计,供应链,风控,产品,运营,商品研究等【内推码】:RTHEA59【一键内推】:https://poizon.j
Python教程:面向对象
无敌开心
python 开发语言
模块3:Python高级模块概述本课程旨在介绍Python编程语言中的面向对象编程(OOP)概念和技术。学生将学习如何使用类、对象、继承、多态等OOP的关键要素来构建灵活、可重用和可扩展的代码。通过实际编程练习和项目,学生将提高他们的编程技能,学会设计和实现面向对象的解决方案。面向对象编程是在面向过程编程的基础上发展来的,它比面向过程编程具有更强的灵活性和扩展性。面向对象编程是程序员发展的分水岭,
杨蕊今日份总结
羊鑫
2020年10月8日周四感觉时间过得好快啊。一眨眼间国庆中秋假期就要过去了,明天是个开学的日子,天气也逐渐的转凉,一早一晚都是手脚冰凉。到了学校先给孩子们录今天的书写视频,由于部分同学上一周来的不是很全。给孩子们在视频当中多进行了讲解,根据笔顺一个字,一个字一个笔顺一个笔顺的进行讲解。和前台老师进行签到表的核对,统计。有一个过来应聘的老师,和应聘老师聊了一会儿,她还在纠结和选择当中。去总校拿了我的
信赖感是微商成功的关键
落花有意min
在传统的销售中,销售者只有40%的时间在与准客户建立关系,比如:吃饭、聊天、节假日的祝福、送礼物等;30%的时间在了解客户的需求,通过面对面的交流;20%的时间在塑造产品的卖点性;10%的时间来做最后成交的运作。微商的销售我认为用10%的时间来与客户建立关系,大家相互加了微信号后关系就已经建立了,20%的时间在朋友圈或自己的第三方平台去塑造产品的形象;10%的时间留给成交;最后剩下的60%的时间用
金融爱好者周刊-第 31 期
LuChenghao
1、中央会议再提“房住不炒”,非常时期非常信号阅读链接:https://3g.163.com/dy/article/GQU7TAV50515983V.html感想:『要继续按照稳定大局、统筹协调、分类施策、精准拆弹的方针,抓好风险处置工作,加强金融法治建设,压实地方、金融监管、行业主管等各方责任,压实企业自救主体责任。』2、详解中央经济工作会议:2022年怎么"稳字当头"?阅读链接:https:/
关于高仿LV包包在哪里可以买到,推荐最好的4个渠道
潮奢之家
全网最低,质量最好,一手货源的原版,广州奢包汇是你的的选择。团队直接和工厂对接,原厂正品定制板开通,支持图纸咨询!主营各种原单:鞋、包、衣服、手表、首饰、皮带等类型的复制品拒绝看一眼,只做顶级品质的复制品!团队整合资源,对接大工厂原版定制开模未达95%不出货,可以任意对比,支持7天包退。经营承诺:同款同版,市面同版,品质同品。更多详情加薇信了解:88195525高仿LV包包在哪里可以买到,推荐最好
三岁看老这句话有科学依据吗?
明兮大语文
完全伪科学,毫无科学依据。孩子三岁以后才开始逐渐建立自己的认知,三岁之前更多是本能,饿了会哭,尿床了会哭。但是孩子的幼儿期确实很重要,三岁之后孩子开始逐渐接触世界,开始养成自己的学习习惯和生活习惯。尤其是幼儿园和小学阶段,这个时期孩子接触到的内容都会影响孩子未来对世界的看法,对世界的认知。我们一线老师都知道,小学阶段学什么,最重要的就是习惯。学习习惯:学习的策略,学习的积极性,学习的动力等听讲习惯
【读书笔记】孩子会出现的行为:不断寻求关注
我和小妮子的日常
没有人喜欢总在寻求关注的孩子。但毫无疑问的是,每个孩子都需要得到关注。当孩子寻求关注的行为变得具有破坏性并且愈演愈烈,以至于让所有人都反感时,父母应该怎么做呢?首先,确保给予他规律的、可靠的、不被打扰的、专属于你和他之间的亲密时间,当你结束一天的工作回到家时,留10分钟和他依偎拥抱,每天晚上睡前讲个故事,周日早上一起做华夫饼等。不要把这些作为他找麻烦之后才能获得的体验,而是要让他在开始寻求你的关注
Vue插槽:提升Vue组件灵活性的利器
anyup_前端梦工厂
Vue.js 前端 javascript vue.js
一.介绍什么是插槽插槽是Vue.js中一种强大的组件封装机制,用于在组件间复用可以动态填充的内容。简而言之,插槽允许我们在组件的模板中定义一些可变的区域,在使用组件时,可以灵活地填充不同的内容进入这些区域。当我们的组件有一些需要在使用组件时才能确定的内容时,比如按钮、文字、图标等,使用插槽可以非常方便地将这些内容传递给组件。二.基础插槽1.单个插槽单个插槽也可以称为默认插槽(DefaultSlot
参松养心胶囊(转)
三闲居士a
参松养心胶囊胡洋上海三甲医院呼吸内科副主任医师参松养心胶囊是一种中成药,其主要成分为桑寄生、山茱萸、酸枣仁、龙骨、人参、土鳌虫、甘松、黄连、独活、丹参、赤芍。其临床上主要作用为治疗心律失常。参松养心胶囊治疗由于冠心病、心肌炎、风心病、高心病等心脏病引起的室性早搏显著优于慢心律,治疗由于劳累过度、酗酒、情绪激动等引起的功能性早搏效果显著,治疗阵发性房颤效果与心律平相当。目前公认的心律失常治疗药物,仍
如果面试官问你CAS,你还这么答,可能就要回去等通知了
爱玛士
程序员 面试 Java java 面试 开发语言 程序员 架构
前言大家好,我是JAVA高级开发之路,一个总在为粉丝解决面试题的程序员。最近有几个粉丝说在面试面试中遇到了CAS的问题,连着几次面试都没有让面试官满意,区区CAS底层源码,怎能难倒咱们这届程序员们呢?都支棱起来,跟我一起来搞定CAS底层源码。什么是CASCAS的全称是Compare-And-Swap,它是CPU并发原语。它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原
读贺新郎
光阴和遇见
贺新郎苏轼乳燕飞华屋,悄无人、桐阴转午,晚凉新浴。手弄生绡白团扇,扇手一时似玉。渐困倚、孤眠清熟。帘外谁来推绣户?枉教人梦断瑶台曲。又却是、风敲竹。石榴半吐红巾蹙,待浮花浪蕊都尽,伴君幽独。秾艳一枝细看取,芳心千重似束。又恐被、西风惊绿。若待得君来向此,花前对酒不忍触。共粉泪、两簌簌。译文:小燕子在大堂间欢快的飞来飞去,屋里静悄悄的,我看着飞来飞去的小燕子,十分惬意,梧桐树的影子渐渐地东移,太阳快
java线程的无限循环和退出
3213213333332132
java
最近想写一个游戏,然后碰到有关线程的问题,网上查了好多资料都没满足。
突然想起了前段时间看的有关线程的视频,于是信手拈来写了一个线程的代码片段。
希望帮助刚学java线程的童鞋
package thread;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date
tomcat 容器
BlueSkator
tomcat Web servlet
Tomcat的组成部分 1、server
A Server element represents the entire Catalina servlet container. (Singleton) 2、service
service包括多个connector以及一个engine,其职责为处理由connector获得的客户请求。
3、connector
一个connector
php递归,静态变量,匿名函数使用
dcj3sjt126com
PHP 递归函数 匿名函数 静态变量 引用传参
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Current To-Do List</title>
</head>
<body>
属性颜色字体变化
周华华
JavaScript
function changSize(className){
var diva=byId("fot")
diva.className=className;
}
</script>
<style type="text/css">
.max{
background: #900;
color:#039;
将properties内容放置到map中
g21121
properties
代码比较简单:
private static Map<Object, Object> map;
private static Properties p;
static {
//读取properties文件
InputStream is = XXX.class.getClassLoader().getResourceAsStream("xxx.properti
[简单]拼接字符串
53873039oycg
字符串
工作中遇到需要从Map里面取值拼接字符串的情况,自己写了个,不是很好,欢迎提出更优雅的写法,代码如下:
import java.util.HashMap;
import java.uti
Struts2学习
云端月影
最近开始关注struts2的新特性,从这个版本开始,Struts开始使用convention-plugin代替codebehind-plugin来实现struts的零配置。
配置文件精简了,的确是简便了开发过程,但是,我们熟悉的配置突然disappear了,真是一下很不适应。跟着潮流走吧,看看该怎样来搞定convention-plugin。
使用Convention插件,你需要将其JAR文件放
Java新手入门的30个基本概念二
aijuans
java 新手 java 入门
基本概念: 1.OOP中唯一关系的是对象的接口是什么,就像计算机的销售商她不管电源内部结构是怎样的,他只关系能否给你提供电就行了,也就是只要知道can or not而不是how and why.所有的程序是由一定的属性和行为对象组成的,不同的对象的访问通过函数调用来完成,对象间所有的交流都是通过方法调用,通过对封装对象数据,很大限度上提高复用率。 2.OOP中最重要的思想是类,类是模板是蓝图,
jedis 简单使用
antlove
java redis cache command jedis
jedis.RedisOperationCollection.java
package jedis;
import org.apache.log4j.Logger;
import redis.clients.jedis.Jedis;
import java.util.List;
import java.util.Map;
import java.util.Set;
pub
PL/SQL的函数和包体的基础
百合不是茶
PL/SQL编程函数 包体显示包的具体数据 包
由于明天举要上课,所以刚刚将代码敲了一遍PL/SQL的函数和包体的实现(单例模式过几天好好的总结下再发出来);以便明天能更好的学习PL/SQL的循环,今天太累了,所以早点睡觉,明天继续PL/SQL总有一天我会将你永远的记载在心里,,,
函数;
函数:PL/SQL中的函数相当于java中的方法;函数有返回值
定义函数的
--输入姓名找到该姓名的年薪
create or re
Mockito(二)--实例篇
bijian1013
持续集成 mockito 单元测试
学习了基本知识后,就可以实战了,Mockito的实际使用还是比较麻烦的。因为在实际使用中,最常遇到的就是需要模拟第三方类库的行为。
比如现在有一个类FTPFileTransfer,实现了向FTP传输文件的功能。这个类中使用了a
精通Oracle10编程SQL(7)编写控制结构
bijian1013
oracle 数据库 plsql
/*
*编写控制结构
*/
--条件分支语句
--简单条件判断
DECLARE
v_sal NUMBER(6,2);
BEGIN
select sal into v_sal from emp
where lower(ename)=lower('&name');
if v_sal<2000 then
update emp set
【Log4j二】Log4j属性文件配置详解
bit1129
log4j
如下是一个log4j.properties的配置
log4j.rootCategory=INFO, stdout , R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appe
java集合排序笔记
白糖_
java
public class CollectionDemo implements Serializable,Comparable<CollectionDemo>{
private static final long serialVersionUID = -2958090810811192128L;
private int id;
private String nam
java导致linux负载过高的定位方法
ronin47
定位java进程ID
可以使用top或ps -ef |grep java
![图片描述][1]
根据进程ID找到最消耗资源的java pid
比如第一步找到的进程ID为5431
执行
top -p 5431 -H
![图片描述][2]
打印java栈信息
$ jstack -l 5431 > 5431.log
在栈信息中定位具体问题
将消耗资源的Java PID转
给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数
bylijinnan
函数
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class RandNFromRand5 {
/**
题目:给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数。
解法1:
f(k) = (x0-1)*5^0+(x1-
PL/SQL Developer保存布局
Kai_Ge
近日由于项目需要,数据库从DB2迁移到ORCAL,因此数据库连接客户端选择了PL/SQL Developer。由于软件运用不熟悉,造成了很多麻烦,最主要的就是进入后,左边列表有很多选项,自己删除了一些选项卡,布局很满意了,下次进入后又恢复了以前的布局,很是苦恼。在众多PL/SQL Developer使用技巧中找到如下这段:
&n
[未来战士计划]超能查派[剧透,慎入]
comsci
计划
非常好看,超能查派,这部电影......为我们这些热爱人工智能的工程技术人员提供一些参考意见和思想........
虽然电影里面的人物形象不是非常的可爱....但是非常的贴近现实生活....
&nbs
Google Map API V2
dai_lm
google map
以后如果要开发包含google map的程序就更麻烦咯
http://www.cnblogs.com/mengdd/archive/2013/01/01/2841390.html
找到篇不错的文章,大家可以参考一下
http://blog.sina.com.cn/s/blog_c2839d410101jahv.html
1. 创建Android工程
由于v2的key需要G
java数据计算层的几种解决方法2
datamachine
java sql 集算器
2、SQL
SQL/SP/JDBC在这里属于一类,这是老牌的数据计算层,性能和灵活性是它的优势。但随着新情况的不断出现,单纯用SQL已经难以满足需求,比如: JAVA开发规模的扩大,数据量的剧增,复杂计算问题的涌现。虽然SQL得高分的指标不多,但都是权重最高的。
成熟度:5星。最成熟的。
Linux下Telnet的安装与运行
dcj3sjt126com
linux telnet
Linux下Telnet的安装与运行 linux默认是使用SSH服务的 而不安装telnet服务 如果要使用telnet 就必须先安装相应的软件包 即使安装了软件包 默认的设置telnet 服务也是不运行的 需要手工进行设置 如果是redhat9,则在第三张光盘中找到 telnet-server-0.17-25.i386.rpm
PHP中钩子函数的实现与认识
dcj3sjt126com
PHP
假如有这么一段程序:
function fun(){
fun1();
fun2();
}
首先程序执行完fun1()之后执行fun2()然后fun()结束。
但是,假如我们想对函数做一些变化。比如说,fun是一个解析函数,我们希望后期可以提供丰富的解析函数,而究竟用哪个函数解析,我们希望在配置文件中配置。这个时候就可以发挥钩子的力量了。
我们可以在fu
EOS中的WorkSpace密码修改
蕃薯耀
修改WorkSpace密码
EOS中BPS的WorkSpace密码修改
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 201
SpringMVC4零配置--SpringSecurity相关配置【SpringSecurityConfig】
hanqunfeng
SpringSecurity
SpringSecurity的配置相对来说有些复杂,如果是完整的bean配置,则需要配置大量的bean,所以xml配置时使用了命名空间来简化配置,同样,spring为我们提供了一个抽象类WebSecurityConfigurerAdapter和一个注解@EnableWebMvcSecurity,达到同样减少bean配置的目的,如下:
applicationContex
ie 9 kendo ui中ajax跨域的问题
jackyrong
AJAX跨域
这两天遇到个问题,kendo ui的datagrid,根据json去读取数据,然后前端通过kendo ui的datagrid去渲染,但很奇怪的是,在ie 10,ie 11,chrome,firefox等浏览器中,同样的程序,
浏览起来是没问题的,但把应用放到公网上的一台服务器,
却发现如下情况:
1) ie 9下,不能出现任何数据,但用IE 9浏览器浏览本机的应用,却没任何问题
不要让别人笑你不能成为程序员
lampcy
编程 程序员
在经历六个月的编程集训之后,我刚刚完成了我的第一次一对一的编码评估。但是事情并没有如我所想的那般顺利。
说实话,我感觉我的脑细胞像被轰炸过一样。
手慢慢地离开键盘,心里很压抑。不禁默默祈祷:一切都会进展顺利的,对吧?至少有些地方我的回答应该是没有遗漏的,是不是?
难道我选择编程真的是一个巨大的错误吗——我真的永远也成不了程序员吗?
我需要一点点安慰。在自我怀疑,不安全感和脆弱等等像龙卷风一
马皇后的贤德
nannan408
马皇后不怕朱元璋的坏脾气,并敢理直气壮地吹耳边风。众所周知,朱元璋不喜欢女人干政,他认为“后妃虽母仪天下,然不可使干政事”,因为“宠之太过,则骄恣犯分,上下失序”,因此还特地命人纂述《女诫》,以示警诫。但马皇后是个例外。
有一次,马皇后问朱元璋道:“如今天下老百姓安居乐业了吗?”朱元璋不高兴地回答:“这不是你应该问的。”马皇后振振有词地回敬道:“陛下是天下之父,
选择某个属性值最大的那条记录(不仅仅包含指定属性,而是想要什么属性都可以)
Rainbow702
sql group by 最大值 max 最大的那条记录
好久好久不写SQL了,技能退化严重啊!!!
直入主题:
比如我有一张表,file_info,
它有两个属性(但实际不只,我这里只是作说明用):
file_code, file_version
同一个code可能对应多个version
现在,我想针对每一个code,取得它相关的记录中,version 值 最大的那条记录,
SQL如下:
select
*
VBScript脚本语言
tntxia
VBScript
VBScript 是基于VB的脚本语言。主要用于Asp和Excel的编程。
VB家族语言简介
Visual Basic 6.0
源于BASIC语言。
由微软公司开发的包含协助开发环境的事
java中枚举类型的使用
xiao1zhao2
java enum 枚举 1.5新特性
枚举类型是j2se在1.5引入的新的类型,通过关键字enum来定义,常用来存储一些常量.
1.定义一个简单的枚举类型
public enum Sex {
MAN,
WOMAN
}
枚举类型本质是类,编译此段代码会生成.class文件.通过Sex.MAN来访问Sex中的成员,其返回值是Sex类型.
2.常用方法
静态的values()方