学以致用—实用程序(iApps)
预见未来to50
不忘初心,方得始终!
展开
-
学以致用——Java applet小程序求两个整数的最大公约数
今天基于2008年(15年前)自己所写的求最大公约数applet小程序进行了以下主要优化:1. 添加异常处理功能,让程序更为健壮2. 并使用辗转相除法求最大公约数,大幅提高程序性能3. 使用Long型数据类型替换int型,大幅扩大数据输入范围参考文档:1.2.原创 2023-02-17 19:10:57 · 1170 阅读 · 1 评论 -
学以致用——Java验证身份证号码是否正确(带校验算法)
验证身份证号码是否正确(带校验算法)题目内容:输入一个字符串,请判断是否满足身份证基本要求,并返回具体的生日yyyy-mm-dd。如果输入数据有误,请输出0000-00-00。基本要求是:a)必须是18位;b) 前面位数必须是数字,最后一位可以是数字或小写字母;c) 日期是存在的;d)最后一位校验码检查。原创 2023-02-17 11:56:02 · 4578 阅读 · 0 评论 -
学以致用——命令行中使用Java模块化技术编译、打包、运行iKb知识库应用
这个问题随JDK版本和Eclipse版本时隐时现,让人抓狂。在学习Java核心技术(高阶)的过程中,正好学到了相关知识,现决定在CMD命令行中编译、打包、运行该程序,来解决上述问题。说明:编译、打包、运行均有两段代码,第一段适用于JDK8至JDK11,第二段适用于JDK17。也就是说,我的iKb程序目前最高可运行于JDK17中。原创 2023-02-11 00:17:57 · 967 阅读 · 0 评论 -
调试经验——Windows 10中使用VMware Workstation安装Ubuntu 20.10
安装一个虚拟机按道理不需要这么多时间,但实际动手做一做,三四个小时就没了。本来在做一个阿里云上的一个示例实验(在ECS上部署Wordpress),但不知为何就是登录不了ECS。担心开放了SSH端口会不安全,索性,装个虚拟机大胆开搞!1. 下载并安装VMware Workstation Pro 162. 下载Ubutun镜像3. 在VMware Workstation中安装Ubutun4. 在Ubutun中安装VM tools(方便主机和虚拟机之间的粘贴复制操作)5. 在Ub.原创 2020-11-11 03:42:42 · 221 阅读 · 0 评论 -
调试经验——如何将Excel中的增量数据插入到iKb知识库
1.在Excel中使用Pivot Table筛选并抽取目标数据方法:双击汇总数据可自动提取筛选后的数据2.在PL/SQL developer中运行Select for update语句3.在查询出的结果集的末尾粘贴目标数据。注意:不知什么原因,数据首列应新增一列空格,否则粘贴后会出现数据错乱问题。成果:...原创 2020-11-09 22:39:40 · 187 阅读 · 0 评论 -
学以致用——VBA提取Excel中的备注(Extracting Comments from Excel with VBA)
需求:在Excel文件(工作簿workbook)中有数量很多的工作表(worksheet),每个工作表的A1单元格通过备注说明此表的作用。如何将这些备注提取出来?代码:Sub getComment()Dim varComment As StringDim c As CommentDim sht As WorksheetDim n As IntegerDim objFSO As Obje...原创 2018-06-05 18:20:12 · 952 阅读 · 0 评论 -
学以致用——VBA写入文本文件(Output to text file with VBA)
需求:VBA中可使用DEBUG.PRINT语句在立即窗口中输出一些调试信息,但并没有保存下来,容易丢失且不易查看。如果能将这些信息输出的文件,相当于生成了程序的日志文件,那作用可就大了。代码:Sub getComment()Dim varComment As StringDim c As CommentDim sht As WorksheetDim n As IntegerDim ob...原创 2018-06-05 18:25:46 · 7495 阅读 · 0 评论 -
学以致用——使用VBA实现创建新记录时自动添加时间戳(Add timestamp when adding new record in Excel)
今天又实现了一个“梦寐以求”的功能:为Excel中创建的新记录自动添加时间戳。虽然这是个简单需求,但是我却等了很久。虽然代码不难,但是调试却花了我一个多小时,特次分享给所有有缘之人。方法:1. 首先要确保当前Excel文件的保存格式支持VBA(使用.xlsm或.xlsb格式)2. 在VBE(在Excel中可使用快捷键ALT+F11打开VBE,即Visual Basic Editor)中,选择目标工...原创 2018-05-30 13:21:09 · 2799 阅读 · 2 评论 -
学以致用——使用VBA发送邮件(Send Email with VBA)
第一次使用VBA自动发送邮件,酷!示例代码:Sub 邮件发送()Dim cm As New CDO.Message'Set cm = CreateObject("CDO.Message") '创建对象 '引用路径:C:\Windows\system32\cdosys.dllcm.From = "1234567@qq.com" '设置发信人的邮箱"cm.To = "649725266@qq....原创 2018-06-14 01:20:33 · 34818 阅读 · 1 评论 -
调试经验——Oracle获取当前季度的第一天(Get first day of current quarter in Oracle)
手头的一个报表,需要使用当前季度的第一天作为数据过滤条件。目前的SQL脚本(query)中采用了硬编码(hard-coding),即 AND REPORT_DATE < TO_DATE ('01-04-2018','dd-mm-yyyy')这种硬编码有两个缺点:1. 到了下个季度再生成报表时,要修改query2. 如果忘记修改,不好意思,那就麻烦大了(高风险)所以,今天把这部分脚本改成了...原创 2018-05-31 14:40:00 · 1558 阅读 · 1 评论 -
学以致用——使用VBA查询并记录单元格在字典(总表)中所在的行号(Finding row number of the string containing another string)
为了整理VBA关键字列表,竟然促成了本文的VBA。原因很简单,现在很多Excel操作我都不想吭哧吭哧手动编辑半天了,宁可花两三小时苦思冥想一个自动化的解决方案不可。喜哉,悲哉?长远来看,肯定是好事了!VBA代码:Sub RowNumberLookup()For Each keyword In Range("vl_keywords") For Each mergedCell In Rang...原创 2018-05-31 21:35:37 · 1660 阅读 · 1 评论 -
学以致用——在Excel中使用VBA计算圆周率(傅立叶级数展开法,理论精度30万位)(Caculation of PI with VBA)
“圆周率(Pi)是圆的周长与直径的比值,一般用希腊字母π表示,是一个在数学及物理学中普遍存在的数学常数。π也等于圆形之面积与半径平方之比。是精确计算圆周长、圆面积、球体积等几何形状的关键值。 在分析学里,π可以严格地定义为满足sin x = 0的最小正实数x。圆周率用希腊字母 π表示,是一个常数(约等于3.141592654),是代表圆周长和直径的比值。它是一个无理数,即无限不循环小数。在日常生活...原创 2018-04-28 14:31:15 · 5072 阅读 · 1 评论 -
调试经验——使用Mathematica根据三角形的边长绘制三角形(Draw a triangle given the lengths of the sides)
今晚本来想在女儿面前炫耀以下十年前自己用Java写的一个三角形判定小程序(https://blog.csdn.net/hpdlzu80100/article/details/2257671),让女儿随口说出三个数字,由程序判定以这三个数字为边长能否构成一个三角形。女儿报出的数字为:18,28,38,程序判定为可以构成三角形。然后我就很轻松的对女儿说,“好,看看爸爸把这个三角形给你画出来啊”。想着用...原创 2018-06-02 01:02:32 · 1905 阅读 · 0 评论 -
学以致用——博客统计数据(篇数、访问量、排名)的变化趋势(Trends of CSDN blog summary data)
作为一个Excel学者(请允许我自封为“学者”,只是想表达自己对Excel的崇拜之情,永远不敢自称为Excel大师,永远只能是一个谦虚的“Excel学者”),必须要熟练使用透视表(Pivot Table)功能,因为这是一个很基础的数据分析工具。刚才,就基于自己汇总的CSDN博客统计数据,做了一个简单的数据分析,即,博客统计数据(篇数、访问量、排名)的变化趋势。原始数据大概是这样的:透视表分析结果是...原创 2018-07-04 23:58:13 · 416 阅读 · 0 评论 -
调试经验——使用ROW_NUM()函数在Oracle中获取每个分组的最大值(Finding latest date within group in Oracle)
今天将一个比较繁琐的Excel手动报表操作通过SQL的方式给自动化了,今后每月至少节省半小时有余,哈哈。需求描述:每个Ukey对应多个report ID,每个report ID都有report type和report date这两个属性。现要求查询出每个Ukey的最新的report的report type和report date。...原创 2018-05-29 01:13:04 · 1009 阅读 · 0 评论 -
学以致用——VBA实现十进制数字转换为字母(二十六进制)(Convert a number to letters (Excel Column number to name) with VBA)
Excel列标与列名转换问题,本质上是一个十进制数和二十六进制数的转换问题。记得以前学C、C#、JAVA等编程语言时,已经做过一些相关练习了。但是,老实说,在用公式法解决这个十进制转二十六进制的问题时还真是难到我了,花了好几个小时也没有解决。于是,求助网络,在这篇文章的启发下,先实现了VBA编程方式来解决问题。https://stackoverflow.com/questions/181596/h...原创 2018-06-04 22:09:23 · 1167 阅读 · 0 评论 -
Mathematica应用实例——站在金茂大厦楼顶最远能看多远(在地图上画出可视范围,GeoVisibleRegion)
碰到了一个非常有意思的Mathematica函数-GeoVisibleRegion,然后自己试用了一下,便有了这个应用实例。问题:站在金茂大厦楼顶最远能看多远,请在地图上画出可视范围解答:备注:根据百度地图上的测距结果,基本上验证了登高望远的可视距离的计算公式为:d=112*sqrt(h) (其中,h为建筑物的高度,单位千米。金茂大厦高421米,即0.421千米,代入上述公式,计算得:d=112*...原创 2018-05-08 18:15:59 · 1235 阅读 · 0 评论 -
学以致用——使用VBA实现冒泡法排序随机数和随机日期(Bubble sorting of random number and date with VBA)
还记得以前考计算机等级考试四级时,用C语言实现过一些很基本的算法,其中就包括冒泡排序法。今天,试着用VBA来实现以下冒泡排序。程序特点:1. 随机生成数字和日期2. 实现对日期的排序3. 添加了程序参数,方便控制排序类型(可以关闭不需要的排序操作)4. 体验了Option Explicit (强制显式声明变量)功能运行效果:代码:Option ExplicitSub NestedLoop() ...原创 2018-06-03 14:20:12 · 1332 阅读 · 0 评论 -
学以致用——使用VBA逆序输出字符串的两种方法(函数法和子过程法)(Reverse string using function and sub procedure)
Excel中并没有提供现成的字符串逆序输出函数,需要通过自定义函数或者VBA程序的方式实现这一功能。首先介绍简单的方式——函数法。效果:原字符串 乡 ma 故 I 思头低 erofereht 月 kniht 明 I 望头举 逆序后的字符串 举头望 I 明 think 月 therefore 低头思 I 故 am 乡 代码:Function Reverse(ByVal rng As Range)...原创 2018-06-03 19:22:23 · 3818 阅读 · 0 评论 -
高等数学Mathematica实验题——3.1 - 15. 逻辑斯谛曲线族人口增加极限模型(Logistic growth model)
高数的精进终于进入到第三章了,不容易啊。题目:3.1 - 15.逻辑斯谛曲线族y=A/(1+Be^-\[Lambda]x),-\[Infinity]<x<+\[Infinity],A,B,\[Lambda]>0,建立了人口增加极限的模型。(详细题干见以下Mathematica解答过程)...原创 2018-05-28 02:32:24 · 3065 阅读 · 2 评论 -
学以致用——使用VBA从身份证号提取性别、出生年月日、年龄(Extract gender, DOB, age from ID)
看到教材中的一个示例,可从身份证号提取性别、出生年月日、年龄。但是有个问题,即,当仅选择一个单元格时,会报错(类型错误)。于是,修改了这个问题。现在,仅选择一行,也可以进行提取。代码:Sub extractIDInfo() '利用VBA从身份证号码中提取性别、出生日期和年龄 Dim rng As Range, i As Integer, Mystr As String, arr(),...原创 2018-06-11 12:29:27 · 8287 阅读 · 0 评论 -
学以致用——使用VBA合并文档结构不相同的Excel文件(Merge data in Excel files with different data structure)
需求:有十几个Excel文件中的数据需要合并到一个Excel中进行处理,但每个文件中字段的个数、顺序不相同。如果手动复制、粘贴,耗时至少20分钟,而且容易出错。现考虑使用VBA,一次痛苦,节省以后的大量时间。分析思路:既然结构不相同,就根据每个文件的特点,分别定义合并方法(按需复制、粘贴)。代码示例:Sub Consolidate()Dim bt As Range, r As Longr = ...原创 2018-06-11 15:50:21 · 498 阅读 · 1 评论 -
学以致用——使用VBA合并指定文件夹下的文件(Merge data in the same specified folder)
需求:合并文件对于一些用户而言是个常见需求,属于“体力劳动”。往往这个时候,就该VBA出场了。这里,实现了一个带用户界面的文件合并小工具。功能简述:1. 用户指定存放有待合并文件的文件夹(文件应该具有相同的结构)2. 合并好的数据会另存为一个新文件,并且带有时间戳代码:Sub Merge() Dim fd As FileDialog Dim forMergeFolder As S...原创 2018-06-11 16:13:53 · 1776 阅读 · 2 评论 -
学以致用——使用VBA函数将十进制数字转换为字母(二十六进制)(Convert a number to letters (Excel Column number to name))
利用空闲时间,开发了一个十进制转换为字母(相当于26进制)的函数。功能有:1. 给定Excel列标,返回对应的列名(如,第677列对应的列名为“ZA”)(但是,Excel中的列最多为16384列,对应的列名为XFD)2. 给定任意正长整形数值(即,1到2147483647),可返回对应的字母3. 可通过VBE immediate窗口查看计算过程(debug print)代码:Function Ge...原创 2018-06-04 18:50:08 · 2294 阅读 · 0 评论 -
学以致用——使用公式法实现Excel列标转换为列名(Convert column number to name by using functions)
经过一番努力(包括熬夜到凌晨三点多),终于实现了通过使用Excel现成的函数将Excel列标转换为列名的功能。“功夫不负有心人”,“世界上最怕的两个字就是认真!”。效果图如下:公式如下:=IFERROR(LOOKUP(IF(A2>26*26+26,MOD(INT((A2-27)/(26*26))-1,26),""),{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,...原创 2018-06-04 21:43:11 · 1903 阅读 · 0 评论 -
调试经验——校验位的设置
在Excel操作中,时常要插入一些校验位辅助判断。以前,习惯于用1(True)表示校验通过,0(False)表示校验不通过。最近,采用了临床检查的概念,用0表示阴性(Negative),1表示阳性(Positive),所以,1表示校验不通过。所以,开始喜欢0胜过1了(笑...)。这样约定的好处是便于理解,可在今后继续推广。...原创 2018-07-17 23:41:59 · 1206 阅读 · 0 评论 -
调试经验——Windows环境变量的设置 (Setup of Environment Variable)
环境变量的设置用过N次了,可是过一段时间又会忘记。今天写篇文章记录一下:目的:在命令行窗口中任意路径下访问可某个可执行程序要点:在Path中设置可执行程序所在的路径以Maven为例,1. 先建一个Maven_Home的变量,2. 然后在Path中添加“%Maven_Home%\bin\”的条目3. 打开命令行窗口,输入mvn -v进行测试 ...原创 2018-07-18 01:46:31 · 1290 阅读 · 0 评论 -
学以致用——Excel报表自动化方案 (Automation solution of complicated manual Excel Report)
经过整整两年多的实践加理论学习,总算实现了一套Excel报表自动化方案。思路总结如下:1. 使用批处理文件调用批处理文件(call batch file through batch file)2. 在batch文件中调用sqlplus程序,同时指定要连接的数据库及登录密码,并指定control file3. Control file 中包含了sqlplus的基本设置,如linesize...原创 2018-11-20 01:01:03 · 2374 阅读 · 0 评论 -
学以致用——Excel报表自动化的潜在经济效应计算
今天再次将Excel报表的自动化程度推到了新高度。主要实现的功能有:1. 从指定的文件夹下复制各个数据集到模板文件(workfile)(open, copy, activate, select, close...)2. 复制模板公式到数据区的第一个行对应的单元格,然后向下拖动复制单元格。(paste formula, auto fill ...)3. 整个操作耗时约10分钟,算是比...原创 2018-11-28 23:12:50 · 412 阅读 · 0 评论 -
调试经验——Excel透视图相互影响的解决方法(Avoid interaction of different pivot charts)
问题描述:在Excel中创建了两个透视图。想在其中一个透视图的日期分组标准(group)中加入日期和小时,发现另一个透视图也被修改了。这显然不是我想看到的结果。 解决办法:在Name Manager中创建一个range,引用相同的数据源。然后将这个新建的range指定为第二个透视图的数据源,问题解决!参考资料:https://www.pivot-table.com/20...原创 2018-11-27 18:26:40 · 1979 阅读 · 0 评论 -
学以致用——Java源码——Java Swing事件演示程序 (Displaying Events)
程序功能:演示各种Swing GUI组件(JTextArea, JCheckBox, JButton, JComboBox)的各种事件(键盘、鼠标)的捕捉及事件信息显示。运行示例: 代码:1. 测试类import javax.swing.JFrame;public class EventsDisplayFrameTest { public stati...原创 2019-01-15 01:03:44 · 393 阅读 · 0 评论 -
学以致用——Excel VBA查找列名(列标题所在列的字母序号)
需求描述:当工作表中的列数比较多,而且列数、列的位置经常变动时,如果在VBA代码中使用的静态指定的列名,将不得不经常改动VBA代码,非常不方便。解决方法:使用自定义列号、列名查找函数。代码如下:1. 列号查找函数'查找列号函数Private Function intFindColumnID(ByVal rowID, ByVal objworkBook, ByVal ob...原创 2019-07-23 12:18:05 · 11792 阅读 · 2 评论 -
学以致用——VBA提取文件名到Excel中(Extract File Names to Excel)
需求描述:为了方便管理大量的简历文件,需要将简历文件列表导入Excel中,然后筛选符合条件的简历,并直接在Excel中打开简历文件。本段代码即可实现以下功能:1. 支持用户根据实际情况(个人电脑中的文件系统)选择简历所在路径2. 遍历指定文件夹,将其中的文件名及其路径分别写入工作表中代码如下:Sub extractFileList_Rival()'Developed b...原创 2019-08-13 23:16:19 · 6965 阅读 · 0 评论 -
学以致用——使用VBA开发人才信息查询及维护系统(CV Management System developed in VBA)
需求说明:当简历数量很多时,筛选符合条件的简历是一件苦差事。本系统旨在帮助用户便捷、高效的查询、维护(增删改)人才信息,提供以下功能:1. 提取保存在Windows系统文件夹中的不同类型的简历列表到Excel表中 (参考另一篇文章:学以致用——VBA提取文件名到Excel中(Extract File Names to Excel))2. 合并、更新保存在不同工作表中的不同类型简历...原创 2019-08-14 00:08:38 · 634 阅读 · 0 评论 -
学以致用——最大公约数计算的三种不同算法的比较(蛮力、欧几里得算法及辗转相除法)
学过数据结构以后,感觉以前写的一些简单的程序中,大多用了比较原始(蛮力)的算法。今天在浙大中国大学MOOC《程序设计入门——C语言》课程中,看到了最大公约数求解的一种新方法——辗转相除法。刚好可以拿来和之前的蛮力算法及欧几里得算法做个比较。参考文章:学以致用——Java源码——最大公约数计算的普通算法与欧几里得算法的比较(Greatest Common Divisor)https:...原创 2019-10-04 15:55:34 · 1018 阅读 · 0 评论 -
《Oracle PL/SQL开发指南》学习笔记14——Oracle数据库入门
本章内容:1. Oracle数据库架构2. 启动和停止Oracle Database 12c服务器3. 启动和停止Oracle侦听器4. 多版本并发控制5. 定义者权限和调用者权限6. SQL交互和批处理7. 数据库管理8. SQL调优9. SQL追踪知识点:1. Oracle数据库示例架构图2. Oracle侦听器架构3. 事务生命周期...原创 2018-11-23 23:49:28 · 190 阅读 · 0 评论 -
调试经验——提高SQLPLUS中导出数据(Spool)的速度的方法(set arraysize 5000)
问题描述:通过SQLPLUS查询数据集并导出到Excel文件,发现速度非常慢(50分钟只导出10M数据,共17万行,每行两列)。然后,百度了一下解决方案,运气不错,很快就找到了一篇文章:https://www.2cto.com/database/201311/254469.html然后,将arraysize设置为更大值,发现两分钟就能导出数据,比Toad还快了很多,大大超过我的预期!...原创 2018-11-16 18:18:38 · 2973 阅读 · 0 评论 -
学以致用——Excel报表自动化方案探索
准备进一步提高Excel报表的自动化生成程度。看到一篇文章,收到了启发,暂存一下。''--main.sql set linesize 200set term off verify off feedback off pagesize 999set markup html on entmap ON spool on preformat offspool c:\tables.xls...原创 2018-11-15 02:59:33 · 1818 阅读 · 0 评论 -
调试经验——报表工作心得
需求描述在日常工作中,我们提交给用户的成果物(artificat/deliverable)在满足业务需求的前提下越简单越好。我们没有必要将中间的一些数据、公式、代码(SQL/VBA)、Excel名称(range name)等提供给用户。但是,这些对于我们快速、有效地完成数据刷新却是至关重要的。原因有:1. 有些Excel公式比较复杂,开发、测试、更新过程中耗费了很多精力,如果能不断重用...原创 2018-07-18 09:26:36 · 671 阅读 · 1 评论 -
学以致用——使用VBA向手动维护的数据表中自动添加时间戳(Add timestamp with VBA)
需求:为了分析CSDN博客的统计数据,需要手动录入4条数据:篇数、访问总量、积分、排名。其余的各列:数据录入时间、星期、访问增量、日均访问增量、日篇均访问增量、排名提升位数、日均排名提升位数、篇数增加量、日均篇数增加量、积分增加量、日均积分增加量均可以通过固定的公式,基于上述4条数据计算而得。目前,需要手动完成以下动作:1. 手动添加当前日期 (通常只填写年月日,而忽略了时分秒,严格而言,并不是时...原创 2018-07-12 23:15:51 · 992 阅读 · 0 评论