每周学习第四期 (2019-01-25)

新闻

曾国藩:如果你40岁还在低谷期,做到这5个字,钱必来追你!

 

伊斯坦布尔机场群吞吐量破亿 现最大机场将关闭

机场航班转机的那些事儿

同样转机!你在机场白等几个小时,人家竟可以出机场逛嗨!差距呀

出国还在租WiFi蛋?其实国际漫游更划算

不用开通国际漫游也能在国外接打电话

全网通手机=全国际漫游?要信你可能就上当了

做了半年自由职业,我才知道这些真相

7.73亿邮件帐号密码泄漏,你的密码可能就在其中

 

 

 

数码

自媒体利器 Final Cut Pro X 10.4.5破解+Compressor 4.4.3破解

网上卖80块的PS调色插件Alien Skin Exposure免费送,教安装使用

简单十步设置Huawei Share,手机与电脑传输从此告别数据线

 

 

IT

纯JS与Electron攻破微信公众号自动登录到扫码功能

「优秀AI开源项目推荐」Sketch2Code:自动将草图转换为代码

推荐几款项目管理工具 总有一款适合你

开源的分析与可视化平台—Kibana

HTML5的五种客户端离线存储方案

2019年第一波实用油猴脚本推荐

功夫宅-又一个全栈直播写代码!油管最赚钱程序员!

为什么说 GraphQL 可以取代 REST API?

2018年度国产开源软件排行

曾被大众误认为是外国佬研发的四款软件,个个都很了不起

网络在线预约管理系统

项目任务管理系统

一个轻量级的HTTP REST API框架

ASP.NET Core 3.0:将会拥有更少的依赖

基于 Voovan 开发的通用 Restful 服务框架

DotNET Core 3.0:System.Data的变化

最新拼多多技术部面试题:幻影读+分段锁+死锁+Spring Cloud+秒杀

 

Flutter

《Flutter 实战》开源电子书

Android Studio 3.0 WIFI真机调试,开发无束缚舒适感瞬间提升!

书旗小说 Flutter 版 flutter_shuqi

Flutter 2019 产品路线图正式公布

 

 

 

JAVA

学习Spring Boot看这两个开源项目就够了!非得值得收藏的资源

大型网站分库分表的基本思想


泰融科技-超声工作站

每周学习第三期 (2019-01-18)

这里记录过去一周,我看到的值得分享的东西,每周五发布。

新闻

产品设计

IT

JAVA

妻子发脾气,把丈夫的279万扔了!网友:败家娘们就这么来的

无线徐州 昨天

近日,因为一件教育孩子的小事,妻子愤怒中将丈夫的手提包扔出家门,可是她不知道,手提包内竟有价值279万元的合同和现金支票……

 

 

年关将近,从事高铁建设的向先生带着公司的各种合同和没有结清的账务以及自己的积蓄回到湖南湘潭的家中。

 

没想到1月8日晚上,因为一件教育孩子的小事,妻子一时气急,居然将孩子衣服和丈夫的手提包扔出了家门。

 

而这个手提包内装有工程合同、两张现金支票和承兑汇票等票证共计279万元

 

 

这票证不仅包含了向先生一家人的全部财产,而且其中近一半都是属于合作人的。夫妻俩四处找寻无果的情况下,驱车30公里来到垃圾场,这里每天送来的垃圾达七千多吨,两口子翻了将近四个小时也没有收获

 

在已经绝望的情况下,向先生提出离婚,由自己独自背负债务

 

之后,夫妻二人抱着最后一线希望去派出所寻求帮助。警方通过视频追踪锁定了三位拾荒者,一一上门询问。

 

 

最后,警方带着向先生在其中一位拾荒老人家中,找到了失物。

 

网友热评

@若有所思:真是败家老娘们啊,哈哈哈哈~

 

@小熠子:这位妻子太狂躁了,不管是教育孩子还是夫妻相处,都不能太极端了。

 

@本本:不是应该扔孩子吗?为什么要扔钱?

 

@王小明:这女的脾气太大了,生气的代价略大啊!

 

@白公子:事实证明,很多成年人都需要上情绪管理课程。

 

【荐读】因为小猪佩奇,“中国消防”和“平安北京”吵起来了!

【荐读】因为小猪佩奇,“中国消防”和“平安北京”吵起来了!


人民日报

 

今天

导读  救救他们……为了一只佩奇,@平安北京和@中国消防 两位蜀黍职业病又犯了!

最近,温情短片《啥是佩奇》走红网络

就在今天上午

因为片子里的“佩奇鼓风机

两个重度职业病患者吵起来了!

 

为了科普,这两位大V开怼了……

 

  8日上午,@平安北京

发博称,“佩奇”这个鼓风机,在春运期间会有人携带,前段时间就有人在携带鼓风机坐火车的时候,鼓风机内有汽油500毫升。民警将汽油倒出后,对机器进行了清洗,汽油收缴。所以,携带此类“佩奇”机器出行一定要将汽油清理干净,携带危险品进站上车处罚最重可能会被拘留。

 

 

  警察蜀黍的本意是为了提醒大家乘车注意安全,不料半路杀出个@中国消防:

 

  网友纷纷围观:

 

  事情还没结束呢,紧接着,平安北京在下面评论回击:由佩奇——想到鼓风机——想到了携带机器——想到了机器里可能带汽油——带汽油不能坐火车,逻辑不是佩奇=鼓风机。你不是病重,你是乱怼……

 

  最后,中国消防总结道,为了科普,大家也是用心良苦:

网友:两位重度职业病,快救救他们吧……

 

  公安和消防互怼,一开始非但没人劝架,还炸出了一大波吃瓜群众:

 

 

  还有人说,二位的职业病确实很重:

  既然已经乱蹭热点了,那就再乱些吧!

 

  还有人说,前几天的“玫瑰金”可以派上用场了!

 

 

  劝架的终于来了!

 

  还有人一眼识破,你们这段对口相声,是不是提前写好的剧本啊!

  两位的职业病都是为了大家能够平平安安回家过年,然而这已经不是@中国消防 第一次“犯病”了!

此前“无证电焊“引发质疑,中国消防力挺“爷爷”

 

  网红视频中看到,农民李玉宝为完成孙子的新年愿望,决定亲自制作一个佩奇。期间,他使用电焊等工艺,最终完成了一个佩奇造型的金属摆件。

 

  视频走红后,网友在被爷爷对孙子的深情感动的同时,也有不少人希望照此亲手做一个佩奇,视频同款佩奇也已出现在部分网购平台。但关于电焊工艺的安全性,上海市公安局官方微博18日早晨发布消息:有个能干可爱的硬核爷爷是幸福的,但警察蜀黍也要提醒一下,电焊作业要有证,深夜烧电焊光线不好也不安全。一家人平安团圆才是年。

 

 

  但随后大V@中国消防 回应,持证电焊的要求仅针对生产经营单位的特种作业人员,普通人在家电焊更多的需要从安全角度考虑。

 

 

  影片中的李玉宝大爷不是生产经营单位的工作人员,也无法判断有无证件,但提醒注意安全是必须的呀!

 

  网友看完表示,阿消简直是万年毁鸡汤小能手啊!

 

image.gif

image.gif

 

  就此事,@中国消防 官微负责人表示,电焊持证上岗的适用对象是与生产经营单位建立劳动关系或受生产经营单位雇佣(聘用)、接受生产经营单位管理(指使)、在生产经营单位或其他指定地方进行电焊操作的人员。个人在家进行电焊时,最重要的是注意安全。

 

  还有网友问,佩奇到底招谁惹谁了?

 

毁鸡汤小能手的这波“安全警告”你服不服?

 

@中国消防 微博究竟多有毒?

还记得之前的仙女寝室覆灭记吗!

 

  今年一月,江西师范大学的几名研究生室友花费近万元打造了“仙女寝室”,宿舍中布满了星星灯、小彩灯等装饰品。同学们来到她们宿舍都发出赞叹,并为其取名为“仙女寝室”。

 

  但是仅仅过了一天,这个“仙女寝室”就被拆除了,#仙女寝室覆灭记#还上了微博热搜。

 

  原来,@中国消防 1月5日就发现并转载了这条微博,表示:学生宿舍属于人员密集场所,根据我国公共安全行业标准《人员密集场所消防安全管理(GA 654-2006)》,不得随意乱接电线,擅自增加用电设备。请@江西消防 通知到@江西师范大学 现场核查。

 

 

  @南昌市消防支队 随后发微博表明,已就地拆除,整改到位。 

 

 

 

  连@江宁婆婆 都说,这效率,不服不行!

 

 

  这已经是@中国消防 微博中再平常不过的事情了,一起围观下“毁鸡汤小能手”的微博日常:

也是操心

不过看完只想说:干得漂亮!

安全无小事

为重度“职业病患者们点赞!


来源:中国青年报(ID:zqbcyol 整理编辑:张小松)综合北京青年报、@中国消防等

本期编辑:胡程远、沈童睿

 

 

flutter环境更新方法

常规更新方法:

运行:flutter upgrade,然后等待自动更新完成即可,

非常贵更新方法:

1.更新flutter代码库

找到flutter库的安装目录,运行git,同步拉取到最新的代码,

2.更新依赖

运行flutter doctor -v 自动下载更新依赖的库

Microsoft Windows [版本 10.0.17134.112]
(c) 2018 Microsoft Corporation。保留所有权利。

F:\JavaWorker\deheng\android\hemodialysis>flutter doctor -v
Checking Dart SDK version...
Downloading Dart SDK from Flutter engine 72c7a7567228cdaf8b7aa4a9e3d212ef9d4cc0ed...
Unzipping Dart SDK...
Building flutter tool...
Running pub upgrade...
Downloading package sky_engine...                            1.1s
Downloading common tools...                                  2.6s
Downloading windows-x64 tools...                             5.9s
Downloading android-arm-profile/windows-x64 tools...         1.2s
Downloading android-arm-release/windows-x64 tools...         0.8s
Downloading android-arm64-profile/windows-x64 tools...       0.9s
Downloading android-arm64-release/windows-x64 tools...       0.9s
Downloading android-x86 tools...                             4.8s
Downloading android-x64 tools...                             4.9s
Downloading android-arm tools...                             3.4s
Downloading android-arm-profile tools...                     1.8s
Downloading android-arm-release tools...                     2.2s
Downloading android-arm64 tools...                           1.9s
Downloading android-arm64-profile tools...                   1.8s
Downloading android-arm64-release tools...                   1.5s
Downloading android-arm-dynamic-profile tools...             1.9s
Downloading android-arm-dynamic-release tools...             2.8s
Downloading android-arm64-dynamic-profile tools...           2.0s
Downloading android-arm64-dynamic-release tools...           1.7s
[√] Flutter (Channel beta, v0.10.3-pre.3, on Microsoft Windows [Version 10.0.17134.112], locale zh-CN)
    • Flutter version 0.10.3-pre.3 at F:\ProgramFiles\flutter
    • Framework revision 233435c02a (42 minutes ago), 2018-11-30 10:00:27 +0800
    • Engine revision 72c7a75672
    • Dart version 2.1.0 (build 2.1.0-dev.9.4 f9ebf21297)

[√] Android toolchain - develop for Android devices (Android SDK 28.0.3)
    • Android SDK at F:\ProgramFiles\android\sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • ANDROID_HOME = F:\ProgramFiles\android\sdk
    • Java binary at: F:\ProgramFiles\android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)
    • All Android licenses accepted.

[√] Android Studio (version 3.2)
    • Android Studio at F:\ProgramFiles\android\Android Studio
    • Flutter plugin version 31.1.1
    • Dart plugin version 181.5656
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)

[√] IntelliJ IDEA Ultimate Edition (version 2018.2)
    • IntelliJ at F:\ProgramFiles\JetBrains\IntelliJ IDEA 2018.2.4
    • Flutter plugin version 30.0.2
    • Dart plugin version 182.5124

[√] Connected device (2 available)
    • MI PAD 4  • 6074f4a0     • android-arm64 • Android 8.1.0 (API 27)
    • Che1 CL20 • f4e3fb7f933b • android-arm   • Android 4.4.4 (API 19)

• No issues found!

F:\JavaWorker\deheng\android\hemodialysis>


You need to add a widget, row, or prebuilt layout before you’ll see anything here. 🙂

超声打印

procedure Trepform.frxptBeforePrint(Sender: TfrxReportComponent);
var filepath: string;
  
  rptformats: string;
 
 
  chname, fname: string;
  docharset, dofontchange: Boolean;
  charsetindex, I: Integer;
  picconter: Integer;
begin
  ExportFileName := DateTimeToStr(dm.Mqry.fieldbyname('baogaoriqi').AsDateTime) + dm.mqryname.AsString;
  picconter := 0; {默认的打印图片为0}
 
 
//   sHostpitalLogo,
//   sHostpitalName,
 if frxpt.FindObject('caInfo') <> nil then
    (frxpt.FindObject('caInfo') as TfrxMemoView).Memo.Text := s_CaInfo;
  if frxpt.FindObject('hostname') <> nil then
    (frxpt.FindObject('hostname') as TfrxMemoView).Memo.Text := sHostpitalName;
   if frxpt.FindObject('hostname1') <> nil then
    (frxpt.FindObject('hostname1') as TfrxMemoView).Memo.Text := sHostpitalName;
  if frxpt.FindObject('logo') <> nil then
  begin
    if FileExists(sHostpitalLogo) then
      (frxpt.FindObject('logo') as TfrxPictureView).Picture.LoadFromFile(sHostpitalLogo);
  end;
   if frxpt.FindObject('logo1') <> nil then
  begin
    if FileExists(sHostpitalLogo) then
      (frxpt.FindObject('logo1') as TfrxPictureView).Picture.LoadFromFile(sHostpitalLogo);
  end;
  if ((frxpt.FindObject('reportTitle') as TfrxMemoView) <> nil) then
    (frxpt.FindObject('reportTitle') as TfrxMemoView).Text := mainunit.P_reportTitle;
      {这两行的决定超声所见和超声提示是否支持多行显示}
 
 
  chname := mySysParms.getElementTextAttribute('/config/Print', 'charset', 'font_DEFAULT_CHARSET');
  fname :=  mySysParms.getElementTextAttribute('/config/Print', 'font_fontname', '宋体');
  dofontchange :=mySysParms.getElementBooleanAttribute('/config/Print','font_fontChange',True);
  docharset:= mySysParms.getElementBooleanAttribute('/config/Print','font_used', True);
 
  IdentToCharset(chname, charsetindex);
  for i := 0 to frxpt.ComponentCount - 1 do
  begin
    if TComponent(frxpt.Components[i]) is TfrxRichView then
      (TComponent(frxpt.Components[i]) as TfrxRichView).Wysiwyg := mainunit.Print_Wysiwyg;
    if TComponent(frxpt.Components[i]) is TfrxMemoView then
    begin
      (TComponent(frxpt.Components[i]) as TfrxMemoView).Wysiwyg := mainunit.Print_Wysiwyg;
      if docharset then
      begin
        (TComponent(frxpt.Components[i]) as TfrxMemoView).font.Charset := charsetindex;
        if (TComponent(frxpt.Components[i]) as TfrxMemoView).Name <> 'hostname' then
          (TComponent(frxpt.Components[i]) as TfrxMemoView).font.name := fname;
      end;
    end;
  end;
 
 
 
  filepath :=SPath.LocalPath+ dm.mqryimagepath.AsString;
  filepath:=StringReplace(filepath,'\\','\',[rfReplaceAll]) ;
  Exportpath:=filepath;
  if FileExists(filepath + '\rpt1.jpg') then
    picconter := picconter + 1;
  if FileExists(filepath + '\rpt2.jpg') then
    picconter := picconter + 1;
  if FileExists(filepath + '\rpt3.jpg') then
    picconter := picconter + 1;
  if FileExists(filepath + '\rpt4.jpg') then
    picconter := picconter + 1;
  if FileExists(filepath + '\rpt5.jpg') then
    picconter := picconter + 1;
  if FileExists(filepath + '\rpt6.jpg') then
    picconter := picconter + 1;
 
  rptformats := dm.mqryrep_format.AsString;
  rptformats := StringReplace(rptformats, 'D:\stusdata\reportformat\', '', [rfReplaceAll]);
  if frxpt.FindObject('ReportTitle1') <> nil then
    (frxpt.FindObject('ReportTitle1') as TfrxReportTitle).Tag := picconter;
  if FileExists(filepath + '\rpt1.jpg') then
  begin
    if frxpt.FindObject('Picture1') <> nil then
      (frxpt.FindObject('Picture1') as TfrxPictureView).Picture.LoadFromFile(filepath + '\rpt1.jpg');
  end;
  if FileExists(filepath + '\rpt2.jpg') then
  begin
    if frxpt.FindObject('Picture2') <> nil then
      (frxpt.FindObject('Picture2') as TfrxPictureView).Picture.LoadFromFile(filepath + '\rpt2.jpg');
  end;
  if FileExists(filepath + '\rpt3.jpg') then
  begin
    if frxpt.FindObject('Picture3') <> nil then
      (frxpt.FindObject('Picture3') as TfrxPictureView).Picture.LoadFromFile(filepath + '\rpt3.jpg');
  end;
  if FileExists(filepath + '\rpt4.jpg') then
  begin
    if frxpt.FindObject('Picture4') <> nil then
      (frxpt.FindObject('Picture4') as TfrxPictureView).Picture.LoadFromFile(filepath + '\rpt4.jpg');
  end;
  if FileExists(filepath + '\rpt5.jpg') then
  begin
    if frxpt.FindObject('Picture5') <> nil then
      (frxpt.FindObject('Picture5') as TfrxPictureView).Picture.LoadFromFile(filepath + '\rpt5.jpg');
  end;
  if FileExists(filepath + '\rpt6.jpg') then
  begin
    if frxpt.FindObject('Picture6') <> nil then
      (frxpt.FindObject('Picture6') as TfrxPictureView).Picture.LoadFromFile(filepath + '\rpt6.jpg');
  end;
 if  frxpt.FindObject('dbjinchasuojian')<> nil then
    (frxpt.FindObject('dbjinchasuojian') as TfrxMemoView).Font.Size:=i_ReportSJTS_FontSize;
 if  frxpt.FindObject('dbjianchajielun')<> nil then
    (frxpt.FindObject('dbjianchajielun') as TfrxMemoView).Font.Size:=i_ReportSJTS_FontSize;
  if  frxpt.FindObject('Memo44')<> nil then
    (frxpt.FindObject('Memo44') as TfrxMemoView).Font.Size:=i_ReportSJTS_FontSize;
  if FileExists(filepath + '\CeLiang.jpg') then
  begin
    if frxpt.FindObject('Picturecl') <> nil then
      (frxpt.FindObject('Picturecl') as TfrxPictureView).Picture.LoadFromFile(filepath + '\CeLiang.jpg');
  end;
//  if frxpt.FindObject('PageFooter1')<> nil then
//     begin
//        if (frxpt.FindObject('Page1') as TfrxReportPage).PageCount>1 then
//          begin
//            (frxpt.FindObject('PageFooter1') as TfrxPageFooter).PrintOnFirstPage:=False;
//            (frxpt.FindObject('PageFooter1') as TfrxPageFooter).PrintOnLastPage:=true;
//          end
//         else
//           begin
//             (frxpt.FindObject('PageFooter1') as TfrxPageFooter).PrintOnFirstPage:=true;
//            (frxpt.FindObject('PageFooter1') as TfrxPageFooter).PrintOnLastPage:=true;
//           end;
//
//     end;
//frxpt.Engine.
end;

 

Microsoft ASP.NET MVC 安全更新 MS14-059 (KB2990942)

重要! 选择下面的语言后,整个页面内容将自动更改为该语言。

选择语言:

下载DirectX End-User Runtime Web Installer
此安全更新可解决 Microsoft ASP.NET MVC 2.0、MVC 3.0、MVC 4.0、MVC 5.0 和 MVC 5.1 的安全漏洞 MS14-059 (KB2990942)
详情
统要求
支持的操作系统
Windows 7 Service Pack 1, Windows Server 2003 Service Pack 2, Windows Server 2008 R2 SP1, Windows Server 2008 Service Pack 2, Windows Vista Service Pack 2, Windows XP Service Pack 3

权限要求: 运行可执行文件之前,必须对安装软件的计算机具有管理权限。有关其他信息,请参阅本文: 此处

软件要求:
ASP.NET MVC 2.0:
要求计算机上已安装 .NET Framework 3.5 SP1,请参阅此产品 .NET 3.5 SP1 的系统要求
ASP.NET MVC 3.0、ASP.NET MVC 4.0:
要求计算机上已安装 .NET Framework 4.0(或更高版本),请参阅此产品 .NET 4.0 的系统要求
ASP.NET MVC 5.0、ASP.NET MVC 5.1:
要求计算机上已安装 .NET Framework 4.5(或更高版本),请参阅此产品 .NET 4.5
的系统要求
安装说明
安装 Microsoft ASP.NET MVC (KB2990942) 的更新:
选择要安装的相应 ASP.NET MVC 版本(MVC 2.0、MVC 3.0、MVC 4.0、MVC 5.0 – KB2992080、MVC 5.1- KB2994397),然后单击此页面上的“下载”按钮开始下载。
或者,也可以单击“保存”将 .msi 安装程序文件下载到你的计算机。然后,导航到 .msi 文件的保存位置,双击 .msi 文件并按照安装程序中显示的说明操作
此 Microsoft ASP.NET MVC 安全更新也可以通过 Microsoft Update 自动更新。请参阅安全公告 ( MS14-059 ) 了解有关哪些用户将通过自动更新获得此项更新的详细信息

托管调试助手报错

今天在调试程序时出现下面的异常:
其他信息: CLR 无法从COM 上下文0x1a0e50 转换为COM 上下文0x1a0fc0,这种状态已持续60 秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送Windows 消息的情况下处理一个运行时间非常长的操作。这种情况通常会影响到性能,甚至可能导致应用程序不响应或者使用的内存随时间不断累积。要避免此问题,所有单线程单元(STA)线程都应使用泵式等待基元(如CoWaitForMultipleHandles),并在运行时间很长的操作过程中定期发送消息。
通过代码没有找出异常,网上有人说把,调试–异常中的contextswitchDeadlock选项去掉:

按照说明去掉后确实没有此问题,但不明白出现这种情况的原因是代码处理不恰当造成的,还是说编译器有问题,期待高手的赐教。

正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。

.NET2.0中增加了42种非常强大的调试助手(MDA,Loaderlock 是其中之一。Loaderlock检测在一个拥有操作系统loader lock的线程上(如上例的video的运行线程)运行托管代码的情况。这样做有可能会引起死锁,并且有可能在操作系统加载器初始化DLL前被使用。虽然这样做很有必要,但在进行开发调试的时候,实在太麻烦

这是由于正在加载特定资源:例如换肤控件时

办法一
把vs2005菜单的 调试->异常->Managed Debuggin Assistants->LoaderLock 的选中状态去掉
如果异常(exception)这一项没有的话,在工具—自定义—命令选项卡—左边选择调试–右边把异常托到菜单里
快捷键Ctrl+Alt+E,修改Managed Debuggin Assistants->LoaderLock 的选中状态去掉
方法二
在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework下面增加一个String,值为”0″
不过这样做,在该计算机上所有基于.NET2.0开发都得不到MDA的好处

PDFCreater2虚拟打印机生成PDF到目的路径

打印前执行加载签名

  if frxpt.FindObject(‘DocQianMing’)<>nil then  //加载医生签名,在报告页面上合适的位置放置一个图片名称为DocQianMing
begin
//mainunit.Current_user
docqmpath:=ExtractFilePath(Application.ExeName)+’DocQianMing\’+mainunit.Current_user+’.jpg’;
if FileExists(docqmpath) then
(frxpt.FindObject(‘DocQianMing’) as TfrxPictureView).Picture.LoadFromFile(docqmpath);
end;

if frxpt.FindObject(‘DocQianMing’)<>nil then  //加载医生签名,在报告页面上合适的位置放置一个图片名称为DocQianMing
begin
//mainunit.Current_user
docqmpath:=ExtractFilePath(Application.ExeName)+’DocQianMing\’+mainform.DBComboBox1.Text+’.jpg’;
if FileExists(docqmpath) then
(frxpt.FindObject(‘DocQianMing’) as TfrxPictureView).Picture.LoadFromFile(docqmpath);
end;

程序中相关 配置文件

超声

 //虚拟打印机名称配置
v_pdfPrinter:=mySysParms.getElementTextAttribute(‘/config/vPrint’,’PrintName’,’PDFCrestor’)  ;

//内镜配置GWSET.INI

 v_pdfPrinter:=regini.ReadString(‘虚拟打印机’,’打印机名称’,’PDFCreator’) ;

//内镜真实的打印机配置

V_DefaultPrinter:=regini.ReadString(‘打印’,’默认的打印机’,’default’);//设置默认的打印机

testAaart

、善于使用搜索引擎

现在的网上资源基本是不缺的,缺的是你去搜索的积极性,你需要善于使用搜索引擎,去查找你想要的答案,类似百度、必应等大型搜索引擎,或者是去一些技术的问答平台提问。对于Java的一些基础知识,你可以轻而易举的找到对应相关的demo与实战,同时其针对性也强。

2、整理学习目录

如果你是一个自学Java的初学者,那么你其实更加需要一个细致的学习目录来帮你快速的整理入门流程,如下是我参考一些网络教程的自学目录。

  • 开发环境搭建(开发工具IDE)
  • 数据类型与运算符
  • 流程控制
  • 数组
  • 类和对象
  • 继承多态
  • 抽象类和接口
  • 异常