数据库优化案例—某市中心医院HIS系统

记得在自己学习数据库知识的时候特别喜欢看案例,因为优化的手段是容易掌握的,但是整体的优化思想是很难学会的。这也是为什么自己特别喜欢看案例,今天也开始分享自己做的优化案例。

  最近一直很忙,博客产出也少的可怜,今天整理了一下自己做过优化或各种方案的客户已经超过100家了,今天分享的案例算是在这些客户中比较典型的了!没有什么高大上都是常见的问题!在之前的博客中都有过提及,那么本篇我们就结合之前的技术点来看看这个案例。学习优化手段的看官们可以参见我的优化系列:

系统环境

  首先我们来看一下这个系统配置及现状,为什么说这个客户经典?那就是因为这个客户已经达到可以慢的地方都慢,不该慢的地方也慢!

  首先这是一套医院的HIS系统,慢到什么程度呢?各种功能卡死不管是交款、医嘱、开药一些列几乎所有的功能都慢。但是卡慢的现象只出现在上午的高峰期!

  先来看看系统配置 :

 

 

 

 

 

  数据库版本是SQL SERVER 2008R2,数据量大概1个多T,服务器64CPU 、128G内存,服务器只运行数据库。

  咋一看服务器确实有点老了,数据量也大了,内存和CPU什么的明显不够用了!

数据库指标

  那么我们再看一下数据库的一些表象:

  每秒请求数量:

 

 

  语句执行情况:

 

 

  等待情况:

 

 

  等待时间:

 

 

   CPU指标:

 

 

  内存一些指标:

 

 

  

磁盘队列:

 

 

 -------------------还很多指标就不一一展示了------------------

   看到这些基本的指标,除了慢你能看出什么?问题出在哪里?怎么样快速解决?能有一个优化的步骤呈现在眼前么?

优化阶段一(常规优化)

  很多时候系统慢要究其原因,难道上线时候就这么慢?那不可能,厂商根本无法交付的!那么问题来了,什么时候开始慢的?对系统做过哪些调整?

  简单的调研开始...给我的只有不到半天的调研时间...得知的基本问题就是系统在最近一月增加了很多功能,有上线了很多其他系统接口!

  那么直接就搞新功能、新程序接口语句? 我认为并不是这样,从一名数据库从业人员来说,看到这样的系统一定要先解决大面积等待问题!个人经验来看很多系统大面积等待解决系统会有个很大的提升和改善!

  配合一些常规的调优手段阶段一开始了,主要给系统大面积创建影响高开销大的索引,调整系统参数,优化tempDB、开启快照读等....具体不细说了,前面系列文章中都有!

 

  预期:

  一般系统上面一轮优化会有明显的改善,我认为这一轮以后系统会明显变快,语句CPU会下降到70%左右,内存压力也会有所减少。

  结果:

  自信满满的我第二天去了各个科室....部分功能依然超时还是各种慢...CPU依然90%以上,内存压力依然明显。但是收集的数据来看,长时间语句数量已经大幅降低,系统等待阻塞情况也明显好转。

    优化前

 

 

  优化后

 

 

  优化前

 

 

  优化后

 

 

优化阶段二(针对语句)

   再次分析解决大面积语句阻塞的系统,发现现在的情况,主要有如下几个:

  1. 由于内存不足导致的IO压力。
  2. 系统CPU依然彪高。
  3. 部分功能语句依然慢,消耗的资源很高。

  再次对系统调研:

  1. 哪些功能慢,执行的语句是什么。
  2. 系统的接口语句问题。
  3. 系统中还有哪些消耗资源高的语句,是否能优化。  

  

  调研后,我遇到了最常见也是最大的问题: 语句慢由于程序!很多人看到这会说程序慢就改呗,那有啥问题? 问题就在于你来做优化直接了当的和人家开发人员说你程序太烂必须改!如果你是程序开发人员你会有什么样的反应?

  他会说:对不起,影响太大改不了!

  那么这个优化项目黄了,或者你要付出更大的代价绕过这样的问题。

 

   分析中发现程序使用了大量各种自定义函数,有一定经验的人都应该知道,语句在筛选的列上使用函数是没有办法使用索引查找的,这样相对于这种单表数据就几百甚至几千万的表,是何等的灾难!但是不能冒然突出修改程序,那还能怎么优化呢?大概分析后得出结论,程序主要消耗在几部分:

  1. 部分业务功能语句慢。
  2. 接口语句慢(主要是视图,供其他程序调用)。
  3. 还有报表程序。

 

  针对第一部分在不能改程序的情况下,尝试添加计划向导改变语句执行情况;

  针对第二部分修改接口视图,包括替换掉函数、添加索引等;

  针对第三部分报表这东西不是短期就可以优化的,所以再原有镜像的方案上添加快照,实现了简单的读写分离,直接分走;

  

  语句优化的效果:

  优化前

 

 

  优化后

  优化前

 

 

  优化后

 

 

   预期:

  90%消耗高的语句都得到了优化,系统应该可以快起来了,CPU、内存指标也应该正常了!

   结果:

  语句的消耗和时间都降下来了,系统卡慢现象有明显好转,但是CPU依然90%以上、内存压力依然明显,磁盘队列还是很高!系统性能问题依然存在。

优化阶段三(深入指标分析)

  经过前两个阶段的优化一般系都会明显好转,并且指标正常,这也是前面提到的可以慢的地方慢已经解决,那么为什么CPU、内存压力没有缓解?难道真的是64CPU、128G内存不能支持了?需要加内存换CPU?难道要做负载均衡?各种拆分?

CPU分析

  首先我对CPU压力进行了分析,综合语句的CPU消耗和CPU的表象来看,很大一部分应该不是语句执行消耗的!那么服务器上确实也没有跑其他程序,CPU资源哪里去了?

  看看这个计数器:

 

 

  SQL的编译次数高峰时间段达到每秒2000多次!很多书上写过,相信很多看官也知道,语句不参数化会给CPU造成压力,这就是个鲜活的例子!那么解决办法也是比较粗暴,程序无法修改那么就在数据库上开启强制参数化。

  看下效果:

 

 

   我想不用多说什么了!

内存分析

  看到了CPU的现象那么内存的问题也有眉目了,这么多编译即席查询,首先看一下内存中缓存了那些数据:

 

 

  SQLOPTIMIZER Singlepage占到了80多个G,而在查询数据页的缓存只有20个G,而且仍然在被不断压缩,那么内存没压力就怪了!这个SQLOPTIMIZER Singlepage尝试了一下是无法通过DBCC FREExxxxx的操作释放的,所以在半夜直接重启了SQL 服务!将近2年没有重启的SQL服务就这么折在我的手里了!

   重启后页生命周期:

  内存这个问题,不知道是不是微软的一个小BUG,查询计划的缓存个人理解不会一直压榨数据缓存的,客户的数据库没有补丁,但是查阅08的各个补丁也没有找到相关问题的修复。

  也请遇到过或了解的朋友给点提示!

 

  预期:

  语句已经优化,阻塞情况也被解决,CPU、内存、磁盘压力也没有了,系统肯定快起来了!

  结果:

  系统快起来了!

 

  总结 : 文章只是简单的描述了一下某医院HIS系统的优化过程,当然一周的工作仅仅通过一篇文章写出全过程细节必然不那么详尽,还望看官们见谅!

      整个的优化过程是程序只修改了2条语句,其他都是通过数据库优化手段完成。而且没有添加任何硬件资源!

优化过程主要分为:

  1. 系统整体调研 :和科室用户沟通慢的情况,系统最近变更情况,并收集数据。
  2. 常规优化 : 调整数据库参数配置,添加索引,解决阻塞。
  3. 再次调研:系统慢功能,慢语句。
  4. 针对语句优化:写法不足,是否缺失索引,是否能加提示、计划向导等
  5. 整体压力是否缓解:如果仍然压力很大找到瓶颈,是否可以解决?如果不能解决才考虑添加硬件或选用分离、分离等方案。
本文转载于网络 如有侵权请联系删除

相关文章

  • 元宇宙链游系统开发(逻辑开发)丨链游系统开发(详细分析)

      元宇宙可以说是最近整个区块链行业,甚至互联网行业最火的概念。不过它并不是区块链行业诞生的新名词,而是从互联网圈子进入到区块链行业,借势NFT、GameFi等概念迅速蔓延起来的。  清华大学新闻学院沈阳教授这样定义元宇宙:元宇宙是整合多种新技术而产生的新型虚实相融的互联网应用和社会形态,它基于扩展现实技术提供沉浸式体验,以及数字孪生技术生成现实世界的镜像,通过区块链技术搭建经济体系,将虚拟世界与现实世界在经济系统、社交系统、身份系统上密切融合,并且允许每个用户进行内容生产和编辑。元宇宙是一个不断发展演变的概念,不同参与者以自己的方式不断丰富这它的含义。  元宇宙的技术基础  在技术视角下,技术意义的「元宇宙」包括了内容系统、区块链系统、显示系统、操作系统,最终展现为超越屏幕限制的3D界面,所代表的是继PC时代、移动时代之后的全息平台时代。支持「元宇宙」的技术集群包括5个板块:  其一,网络和算力技术:包括空间定位算法、虚拟场景拟合、实时网络传输、GPU服务器、边缘计算,降低成本和网络拥堵;  其二,人工智能;  其三,电子游戏技术:如支持游戏的程序代码和资源(图像、声音、动画)的游戏

  • 多层感知机模型讲解

    具有多层输出的感知机如下图所示: 图中节点上的符号表示的含义是:$x^1_k$代表第1层上的第k个节点$O^1_k$同样代表第1层上的第k个节点若能求出$\frac{\nablaE}{\nablaw_{jk}}$的结果,便可知道所有的梯度信息Derivative首先我们定义$E=\frac{1}{2}\sum_i(O^1_i-t_i)^2$$$\begin{align*}\frac{\nablaE}{\nabla{w_{jk}}}&=(O^1_k-t_k)\frac{\nablaO^1_k}{\nablaw_{jk}}\\&=(O^1_k-t_k)\frac{\nabla\sigma(x^1_k)}{\nablaw_{jk}}\\&=(O_k^1-t_k)\sigma(x_k^1)(1-\sigma(x_k^1))\frac{\nablax_k^1}{\nablaw_{jk}}\\&=(O_k^1-t_k)O^1_k(1-O^1_k)x^0_j\\\end{align*}$$由推导结果可看出,一条边上的输出结果只与该线上的输入值$x^0_j$和$O^1

  • 干了5年程序员,该如何转行?5个新工作方向了解一下

    大数据文摘出品来源:Medium编译:灿灿、曹培信写了5年代码,年龄已近30,头发尚存几缕,除了写代码其他并无所长,职业未来在何方?对于从毕业就进入互联网公司,已经工作了5年甚至更久的程序员来说,现在是时候想想在你职业生涯的下一个阶段了。然而该怎样规划自己的职业方向呢?很多人又很迷茫,犹豫不决中,失去了很多机会。Medium上一位博主就以Java程序员为例,列出了5个可以选择的新工作方向,一起来学习一下!如果你是一名经验丰富的开发人员或高级Java程序员,像是有超过5至8年经验的人,并且想知道如何进入下一个阶段,那么你来对地方了。在这篇文章里,我会分享五个像你这样的经验丰富的Java开发人员可以选择的职业选项,以将你的职业提升到一个新境界。除了成为许多资深程序员选择的项目经理之外,现在还有其他技术型的且更好的职业机会。对于缺乏人员管理技能,热爱编码、开发和动手实践的程序员而言,这尤其重要。对你而言,根据个人技能选择正确的职业选项是很重要的,因为没有这些技能而成为项目经理或进行人事管理时,可能有时会令人沮丧,主要是因为你不想,当你可以轻松完成开发人员的工作时,感到沮丧。人员管理也是一项非

  • Objective-C 学习记录--toches、Motion/Size/Rect/Point/CGFloat/protocol

    Objective-C学习记录--toches、Motion/Size/Rect/Point/CGFloat/protocol-(void)touchesBegantouchesEndtouchesCancelledtouchesMoved//代表的是手指在屏幕上的动作,开始结束取消移动//还有就是代表摇动的方法-(void)motionBeganmotionEndmotionCancelled隐藏键盘resignFirstResponser弹出键盘becomeFirstResponser//获取应用程序的Documents目录NSSearch*forDirectories=[NSDocumentDirectoryNSUserDomainMesk,InDomain,YES];@property(nonatomic)UIViewControllerModecontentMode;@property(nonatomic)UIViewContentModeScale(TOFillAspectFill,AspectFit);//ToFill代表的是填充//AspectFill内容填充Aspec

  • 基于Docker的持续集成方案(安装和配置docker镜像仓库) - Part.5

    基于Docker的持续集成方案(安装和配置docker镜像仓库)-Part.52018-6-12作者:张子阳分类:分布式系统在《基于Docker的持续集成方案(介绍)-Part.1》中,有一个安装和配置环节,即私有的docker镜像仓库,本文将对此进行介绍。获取证书docker镜像仓库默认使用https协议,因此需要使用证书。证书可以自己生成(需要额外配置),也可以在云服务器提供商(阿里云、腾讯云)处申请,但前提是你得有一个域名。这里介绍的是在腾讯云处申请的证书。申请证书下载到证书之后,默认的名称很长,可以重命名为ca.crt和ca.key。如果没有域名,也可以自己生成证书,生成证书可以在服务器上使用下面的命令来完成。剩下的流程都一样。但是在实际使用中,可能会提示证书有误。如果没有记错,需要修改客户端的/etc/docker/daemon.json文件,然后添加{"insecure-registries":["your.domain.com:5000"]}(注意替换域名和端口号)。执行下面命令生成证书:opensslreq-newkeyrsa:4

  • idea 14+jrebel web以及外部依赖的jar热部署

    1,关于idea使用jrebel工具,web项目热部署的事儿,网上讲的很多。不再提了。 2,讲一个普遍的场景,如果你有个xxx-web项目,本身有业务类类,同时还要依赖另外的一个xxx-service项目, 通过mavenpom.xml引用后,就是引用xxx-service.jar包。 你不只是想xxx-web项目内部类能热部署,还想依赖的xxx-service项目的类也热部署,怎么弄? 1,修改你xxx-web里的rebel.xml文件,让它长的大概像这一样<?xmlversion="1.0"encoding="UTF-8"?> <applicationxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://www.zeroturnaround.com"xsi:schemaLocation="http://www.zeroturnaround.comhttp://www.zeroturnaround.

  • PHP跨站脚本攻击(XSS)漏洞修复思路(二)

    上一篇文章《PHP跨站脚本攻击(XSS)漏洞修复方法(一)》写到了360修复XSS漏洞的插件并不完善的问题,那么这篇文章就来分享一下自己如何写代码修补这个漏洞。从上一篇文章看出,部署了360出的XSS修复插件之后,至少还存在iframe无法过滤缺憾,是否还有其他纰漏目前还不得而知。分析一下中国博客联盟和张戈博客已开放的数据入口:①、中国博客联盟,主要有搜索、后台博客提交等; ②、张戈博客(WordPress),主要是用户评论提交;所以,本文就已这2个入口为例子,来分享XSS漏洞修复的简单思路。一、完全过滤问题①,我可以找到站内搜索和博客提交这2个开放入口的数据处理php,然后对数据过滤即可。比如站内搜索,中国博客联盟取得搜索关键词是这样一行代码:$keyword=addslashes(trim($_GET['query']));复制考虑到中国博客联盟的站内搜索,只能搜索博客名称、域名、类型及描述这四种,而这四种均不需要出现html代码!如果有人提交搜索了html代码,绝非善意!那对于这种情况,我只需要完全过滤掉html内容即可!所以可以用到strip_tags()函

  • 浅谈zabbix和Grid control (r6笔记第25天)

    在IT行业始终在进行着开源和商业的竞争而且双方火力都不差,开源的受众更多是中小企业,免费开源而且用户基数庞大,商业的用户都是一些大中型企业,求稳求成熟的服务。 今天来浅谈一下zabbix和Gridcontrol,限于自己的认识有限,所以先开个题,zabbix也在熟悉和使用中,后续继续补全和更正。 zabbix大量在互联网企业使用,很大的一个原因就是MySQL所用,但是它的发展不止于此,对于系统级的监控也是很拿手。按照通用的说法,zabbix是基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 而Gridcontrol似乎是Oracle阵营中的强有力的监控和管理工具,为Oracle一手打造,用Oracle的工具来监控管理Oracle的产品,自然效果要好很多,同时它也是开放的支持监控和管理其它的数据库。 我们从以下几个方面来说说它们的相同和不同点。 架构思路 zabbix: zabbix基于server+agent的方式来提供服务,采用了apache,php,mysql,这些都是快速轻巧的工具,而且上手极快,而且都是免费开源,得来全不费功夫。 而在Oracle中,有

  • 【图说】一张思维导图,带你了解数据分析挖掘体系

    数据分析挖掘体系可分为数据预处理、分析挖掘、数据探索、数据展现和分析工具。▌数据预处理•数据预处理包含数据清洗、数据集成、数据变换和数据规约几种方法。•而数据清洗包括缺失值处理和异常值处理;•数据集成包括同名同义、异名同义、单位不统一的实体识别和冗余性识别。•数据变化包括函数变换、规范化、连续属性离散化、属性沟通和小波变换。•数据规约包括属性规约和数值规约。▌分析挖掘•分析挖掘的内容就多了。包括假设检验、方差分析、回归分析、主成分分析、因子分析、典型相关分析、对应分析、多维尺度分析、信度分析、生存分析、分类预测、聚类分析、关联规则、时间序列分析和著名的灰色理论。后几个应用较多。•分类预测的方法包括决策树、神经网络、支持向量机(SVM)、Logistic回归、判别分析和贝叶斯网络。•聚类分析包括K-Means聚类、kohonen网络聚类、两步聚类和层次聚类。•关联规则的算法有Apriori算法、GRI算法和Carma算法。•时间序列分析包括:简单回归分析法。•趋势外推法、指数平滑法、自回归法、ARIMA模型、季节调整法。•灰色理论可分为灰色关联和灰色预测。▌数据探索•数据探索主要分为两大

  • 都昌 DCWriter电子病历编辑器演示文档截屏

       

  • 2020年度春季学习总结--第九周

        好吧,这几天我都在忙课外的东西和帮一些不是我们计算机行业的朋友们编程,以及给他们做了一下计划。我自己方面呢?唉~别提了,现在我还是针对性的思考操作系统的知识,(我是要考研的,所以要多做题)

  • PostgreSQL隐藏字段tableoid

    问题来源: 今天群里有人问:tableoid字段在每行都有,而且一个表里面的值是重复的,这样不合理......   因此做了一些分析:   1)创建了一个表 apple=#\dtest_time Table"public.test_time" Column|Type|Modifiers --------+-----------------------------+----------- id|integer| date|timestampwithouttimezone|复制   2)查看该表的所有字段包括隐藏的: apple=#select*frompg_attributewhereattrelidin(selectoidfrompg_classwhererelname='test_time'); attrelid|attname|atttypid|attstattarget|attlen|attnum|attndims|attcacheoff|atttypmod|attbyval|attstorage|attalign|attnotnull|att

  • 随机过程——高斯过程

    高斯过程定义   定义:若对于任意时刻ti(i=1,2,...,n),随机过程的任意n维随机变量Xi=X(ti)(i=1,2,...,n)服从高斯分布,则称X(t)为高斯随机过程或正太过程。 高斯过程的特性 高斯随机过程完全由它的均值和协方差函数决定。 高斯随机过程在不同时刻ti,tk的取值不相关和相互独立等价,即平稳高斯过程在任意两个不同时刻不相关,则也一定是相互独立的。 高斯过程的广义平稳性意味着严格平稳性,即广义平稳高斯过程一定是严平稳过程。 高斯(变量)随机过程通过线性系统(线性变换)还是高斯的。 高斯变量之和仍然是高斯变量。 平稳高斯过程与确定时间信号之和也是高斯过程。除非确定信号不随时间变化的,否则将不再是平稳过程。 如果高斯过程的积分存在,它也将是高斯分布的随机变量或随机过程。 平稳高斯过程导数的一维概率密度也是高斯分布的。 平稳高斯过程导数的二维概率密度是高斯分布的,平稳高斯过程与其导数的联合概率密度也是高斯分布的。 对于n维高斯分布,则任意k维(k<n)边缘分布仍是高斯分布,k维(k<n)维条件分布仍是高斯分布。   转自:https://z

  • UIScrollView设置滑动的距离

    设置好scrollView.width即是控制滑动的距离, scrollView.clipsToBounds=NO;控制是否显示多出的部分(可灵活运用)

  • Git学习

    Git和GitHub管理项目的学习:   一、本地库操作:     1、本地库初始化       命令:gitinit      2、设置签名:       签名包括用户名和邮箱地址:这个只是为了区分开发人员的身份,与邮箱是否存在没有关系。就算写个假的也可以       设置签名有两种:一种是项目级别/仓库级别,只对当前本地库有效。               另一种是全局的,对所有本地库都有效。       对于项目级别的设定:gitconfiguser.name[名称]                 gitconfiguser.email[邮箱]       对于全局的设定:gitconfig--globaluser.name               gitconfig--globaluser.email       签名优先级:就近原则项目>全局       必须至少有一个签名配置,没有的话不能执行操作     3、状态查看:       查看工作区、暂存区的状态:gitstatus     4、添加:       将工作区的内容,添加到暂存区:gitadd

  • 探索 .NET 6 中的 ConfigurationManager

    这是该系列的第一篇文章:探索.NET6: Part1-探索.NET6中的ConfigurationManager(当前文章) Part2-比较WebApplicationBuilder和GenericHost Part3-探索WebApplicationBuilder背后的代码 Part4-使用WebApplication构建中间件管道 Part5-使用WebApplicationBuilder支持EFCore迁移 Part6-在.NET6中使用WebApplicationFactory支持集成测试 Part7-用于.NET6中ASP.NETCore的分析器 Part8-使用源代码生成器提高日志记录性能 Part9-源代码生成器更新:增量生成器 Part10-.NET6中新的依赖关系注入功能 Part11-[CallerArgumentExpression]andthrowhelpers Part12-将基于.NET5启动版本的应用升级到.NET6 在本系列中,我将介绍.NET6中推出的一些新功能。在.NET6上已经写了很多内容,包括来自.NET和ASP.NET团队本身的大量帖子。

  • javascript--经典实例锦集

    一,javascript动态显示: 如显示效果上图所示: 如图显示鼠标放在百度谷歌等字样上市动态显示其内容明细:代码如下: <head> <title></title> <scripttype="text/javascript"> functioninitEvent(){ varlinks=document.getElementsByTagName("a");//获取标签为a的内容 for(vari=0;i<links.length;i++){//逐行遍历 varlink=links[i]; link.onmouseover=onmouse;//当鼠标经过某行是调用onmouse函数 } } functiononmouse(){ vardiv=document.createElement("div");//动态创建div标签 div.style.position="absolute";//设置标签属性为手型 div.style.top=window.event.clientY;//设置y坐标 div.style.left=win

  • ActiveMQ反序列化(CVE-2015-5254) &amp;&amp; ActiveMQ任意文件写入 (CVE-2016-3088)

    ActiveMQ反序列化漏洞(CVE-2015-5254) 漏洞详情 ActiveMQ启动后,将监听61616和8161两个端口,其中消息在61616这个端口进行传递,使用ActiveMQ这个中间件的程序也通过这个端口工作,8161是Web服务的端口,通过Web页面可管理ActiveMQ ActiveMQ反序列化漏洞存在于ActiveMQ5.13.0之前5.x版本中,该漏洞源于程序没有限制可在代理中序列化的类。远程攻击者可借助特制的序列化的JavaMessageService(JMS)ObjectMessage对象利用该漏洞执行任意代码。 复现 工具 需要使用jmet工具,首先下载jmet的jar文件,并手动在同目录下创建一个external文件夹(否则可能会爆文件夹不存在的错误) 漏洞利用 构造可执行命令的java序列化对象 ysoserial集合了各种java反序列化payload,而jmet集成了ysoserial 把序列化对象作为一个消息,发送给目标的工作端口 访问Web管理页面,读取消息,触发漏洞 ActiveMQWeb管理页面默认账号密码是admin:admin 执行

  • pyqt5生成的py文件的标准模式

    #-*-coding:utf-8-*-#Formimplementationgeneratedfromreadinguifile'20200301_myWidget.ui'##Createdby:PyQt5UIcodegenerator5.13.0##WARNING!Allchangesmadeinthisfilewillbelost!#下面加粗字号加大的部分为固定格式,用pycharm设计ui界面,在生成的py文件中加入固定格式importsysfromPyQt5importQtCore,QtGui,QtWidgetsfromPyQt5.QtCoreimportpyqtSlotfromPyQt5.QtWidgetsimportQApplication,QWidgetclassUi_Form(QWidget):    def__init__(self,parent=None):        super().__init__(parent) #调用父类构造函

  • java导出json格式文件

    生成json文件代码: importjava.io.File; importjava.io.FileWriter; importjava.io.Writer;publicclassCreateFileUtil{/** *生成.json格式文件 */ publicstaticbooleancreateJsonFile(StringjsonString,StringfilePath,StringfileName){ //标记文件生成是否成功 booleanflag=true; //拼接文件完整路径 StringfullPath=filePath+File.separator+fileName+".json"; //生成json格式文件 try{ //保证创建一个新文件 Filefile=newFile(fullPath); if(!file.getParentFile().exists()){//如果父目录不存在,创建父目录 file.getParentFile().mkdirs(); } if(file.exists()){//如果已存在,删除旧文件 file.delete();

  • 第九章 不可思议的想法

    第九章 不可思议的想法 在比萨,德乔治的数学发展到成熟。他所做的工作在度量理论中,进一步巩固了卡奇奥波利的思想,帮助他面对新的和更复杂的课题。那些这些想法已经开始在美国流传,在那里他们被认为作者:温德尔·弗莱明、弗雷德·阿尔格伦和赫伯特·费德勒。现在,更多困难的部分是用这些技巧来证明极小值的正则性表面。与大多数其他研究人员不同的是,德乔治并不关心出版,专注于他的目标。结果是他至少有两年没有发表任何东西。   他的试用期快结束了。如果他想成为作为一名终身教授,他必须介绍他的工作成果。“十一月1961年,他证明了一个渐近相切点的正则性存在的飞机记得米兰达1号,但仍然无法证明这一点在考虑的最小边界的所有点的结果得到了部分结果。他等到最后一刻才发表快用完了。德乔治需要帮助,他是从离他最近的是马里奥·米兰达和安东尼奥·奇菲。“有一天我们在他的他告诉我们,他需要为自己的任期写些东西他打开衣柜,我们看到了很多笔记本。我们在同时又困惑又担心。其他人会利用这些大量的出版物,但他拒绝了:他一直在研究这个问题三年来,他在这个问题上所拥有的一切都在那个柜子里。” 这项工作很紧张,但小组还是设法完成了

相关推荐

推荐阅读