摘要: 本产品中调用存储过程,前端属性绑定到只需要知道Model对象的属性名称。引用时直接使用属性名会导致程序中出现很多harcode代码。可以为每个Model类定义一个ModelField类,ModelField类定义了一些返回Model类属性名称的方法,这样可以防止hardcode代码,对以后的维护也很 阅读全文
posted @ 2021-12-22 21:02 Boxin-kim 阅读(296) 评论(0) 推荐(0)
摘要: 软件需要发布一个新版本时,需要比较多的操作。其中很多操作,我们是可以使用脚本语句代替人手去完成的,这样可以减少人工操作出错的风险,也能提高效率,我们只需要准备好必要的文件就好了。本文将介绍如何使用Jenkins和python脚本帮助我们发布软件新版本,包括:”准备发布新版文的文件RPK(releas 阅读全文
posted @ 2021-12-22 17:46 Boxin-kim 阅读(266) 评论(0) 推荐(0)
摘要: 安卓有自带的数据库sqlite可以存储数据。Sqlite数据库有一个问题是修改了Model对象代码后,对应的sqlite数据库表结构不会跟着改变,必须编写sql命令手动去更新。greenDAO是面向Android的ORM开源框架,使用它可以很方便的操作sqlite数据库。本文将介绍使用greenDa 阅读全文
posted @ 2021-12-22 17:20 Boxin-kim 阅读(144) 评论(0) 推荐(0)
摘要: 在开发和测试阶段,需要编写单元测试、集成测试自动化测试。编写自动化测试时需要用到假数据去测试特定的功能,我们可以使用sql命令把假数据存入到数据库表中。但是通过这种方式插入数据,它的数据格式、表与表关联的数据不一定符合要求。使用不准确的数据运行自动化测试是无法达到测试目的的。我们可以使用存储过程来检 阅读全文
posted @ 2021-12-22 17:14 Boxin-kim 阅读(149) 评论(0) 推荐(0)
摘要: 使用Selenium IDE自动化测试可以模拟人在网页上进行操作,所以我们可以使用Selenium代替我们做一些重复的人工测试。本文将介绍如何安装和使用selenium IDE,包括:“在chrome浏览器安装selenium ide插件”、“Selenium IDE工具的使用”、“Selenium 阅读全文
posted @ 2021-12-22 17:09 Boxin-kim 阅读(2613) 评论(0) 推荐(0)
摘要: 网页前端请求服务器完成登录后,会获取一个session会话。session会有一个有效期,有效期过后服务器应该要告诉前端需要重新登录。如果在不同的浏览器登录,前者的会话也应该失效。本文将介绍如何实现这样的功能,包括"前端请求后端判断会话有效期JS代码"、“服务器后端拦截有用户请求代码”。 1、前端请 阅读全文
posted @ 2021-12-22 16:47 Boxin-kim 阅读(141) 评论(0) 推荐(0)
摘要: 服务器可能会收到各种角色用户的请求,如普通用户、游客、会员等。有些服务器接口,我们不想对所有角色开放,我们可以在接口里面设置访问权限,拒绝掉没有权限的请求。本文将介绍如何设置接口的角色访问权限,包括:“根据用户类型定义用户域枚举类”、“定义在服务器接口的拦截方法canCallCurrentActio 阅读全文
posted @ 2021-12-22 16:43 Boxin-kim 阅读(475) 评论(0) 推荐(0)
摘要: 在程序运行过程中,可能会出现各种业务上或非业务上的错误。为了更好的管理和维护,需要将这些从错误分门别类。这样当出现错误时能够更精确的告诉开发人员,便于开发人员快速定位错误,解决问题。本文将介绍如何定义和使用错误码、错误信息,包括:“错误信息变量的定义”、“错误码的定义”、“在BO层(业务层)设置错误 阅读全文
posted @ 2021-12-22 16:26 Boxin-kim 阅读(623) 评论(0) 推荐(0)
摘要: 正常的用户每天的登录退出不会太频繁,遇到频繁的登录则很可能是黑客行为。对于黑客行为,我们可以使用登录次数限制来应对。本文将介绍如何限制用户每天的登录次数,包括:“记录当天用户账号的登录次数”、“用户进行登录请求时,检查当天账号的登录次数”、“用户正常退出登录,更新登录次数”。 1、记录当天用户账号的 阅读全文
posted @ 2021-12-22 16:22 Boxin-kim 阅读(1444) 评论(0) 推荐(0)
摘要: 有时用户从不同的设备登录服务器,新登录的会话应该要踢掉旧会话。在我们的产品中,用户主要可以通过网页前端登录和从收银机POS登录。用户可以在浏览器和一台POS收银机同时登录,两个会话互不影响。用户在客户端登录前,需要先让POS收银机登录,POS收银机也需要一个会话信息,以便服务器区分不同的POS收银客 阅读全文
posted @ 2021-12-22 16:17 Boxin-kim 阅读(498) 评论(0) 推荐(0)
摘要: 为了便于查询,我们要给一个零售单生成零售单号SN。如何设计生成唯一的、并且能够与收银机器相关的SN。本文将介绍:“根据时间、收银机ID和随机数生成零售单号”、“根据零售单号生成退货单号”。 1、根据时间、收银机ID和随机数生成零售单号。 我们用一张数据库表t_pos存储着所有收银机器的编号,所以一个 阅读全文
posted @ 2021-12-22 16:00 Boxin-kim 阅读(561) 评论(0) 推荐(0)
摘要: 为了安全,我们会采取对文件的重要信息进行加密。本文将介绍如何使用对称加密算法AES对文件进行加解密,包括:“替换local_policy.jar和US_export_policy.jar文件”、“加密文件内容”、“自定义PropertyPlaceholderConfigurer子类解密文件”。 1、 阅读全文
posted @ 2021-12-22 15:58 Boxin-kim 阅读(1295) 评论(0) 推荐(0)
摘要: 在日常开发中,我们经常需要用到日志来查看程序的运行情况,以便更好的把控项目。本文将介绍Java项目如何配置和使用log4j日志,包括:“使用Maven在pom.xml导入log4j的jar包”、“在resource目录下新建log4j.xml文件”、“log4j文件头信息”、“配置debug日志输出 阅读全文
posted @ 2021-12-22 15:52 Boxin-kim 阅读(1646) 评论(0) 推荐(0)
摘要: 白天时服务器一般收到用户的请求较多,执行比较多的任务。晚上收到用户的请求少,压力小,可以在夜间执行一些耗时的操作,如生成报表。本文将介绍,在多公司,一个公司对应一个数据库的情景下,如何在夜间执行任务,生成各个公司的报表。本文将介绍以下内容:“创建运行报表的相关类”、“报表类的执行逻辑”、“启动所有报 阅读全文
posted @ 2021-12-22 15:45 Boxin-kim 阅读(96) 评论(0) 推荐(0)
摘要: OpenID是用户在某一个公众号的唯一标识,用户不同公众号的的OpenID是不一样的。在开发的时候,我们有时需要获取用户的OpenID。本文将介绍以下内容:“用户页面授权HTML代码”、“调用服务器后端接口的js代码”、“用户静默授权后端接口”、“微信服务器回调我们的服务器接口”、“获取微信服务器返 阅读全文
posted @ 2021-12-22 15:37 Boxin-kim 阅读(1568) 评论(0) 推荐(0)
摘要: 在微信公众号开发中,我们需要接入微信服务器,让微信服务器与我们自己的服务器建立安全信道,建立信任。微信服务器向我们的服务器发送请求的时候会携带三个参数timestamp=时间戳&nonce=随机字符串&signature=签名。我们可以通过timestamp和nonce以及token来算出一个sig 阅读全文
posted @ 2021-12-22 15:14 Boxin-kim 阅读(213) 评论(0) 推荐(0)
摘要: 开发好了小程序后,为了方便用户访问,可以把小程序码展示出来让用户扫码访问。本文将介绍如何生成小程序码。包括:“生成二维码的前端代码”、“请求后端接口的代码”、“生成二维码的后端代码”。 1、生成二维码的前端代码。 输入宽度来生成指定大小的二维码: <div id="codeMain"> <div c 阅读全文
posted @ 2021-12-22 15:09 Boxin-kim 阅读(859) 评论(0) 推荐(0)
摘要: 申请微信模板成功后,我们应该怎样封装和发送消息到微信,让它推送到公众号。在本文中将会介绍封装和发送模板消息到微信,包括:“将需要发送的消息内容放到hashmap中存储”、“封装详细信息模板”、“拼接json格式数据”、“向微信发送POST请求”、“检查微信返回结果”。 1、将需要发送的消息内容放到h 阅读全文
posted @ 2021-12-22 15:00 Boxin-kim 阅读(1230) 评论(0) 推荐(0)
摘要: 有时为了快速响应用户的操作,可以选择现将服务器端的数据暂时保存到本地的sqlite中。后面再上传到服务器,服务器存到数据库,返回有真实ID的数据给客户端。客户端删除sqlite的临时数据,插入带有真实ID的数据。本文将介绍:“在sqlite数据库存入临时数据”、“查询临时数据”、“将查询到的临时数据 阅读全文
posted @ 2021-12-22 14:57 Boxin-kim 阅读(198) 评论(0) 推荐(0)
摘要: 在客户端获取的当前时间和在服务端获取的当前时间往往会存在差异。有时我们需要知道在客户端创建数据时,相对于服务器的时间是多少。这是我们需要知道客户端和服务端获取当前时间的时间差,从而可以算出相对于服务器的时间。主要的过程分为:“在客户端启动时,请求服务器端,发送当前客户端时间T1”、“服务器端收到请求 阅读全文
posted @ 2021-12-22 14:45 Boxin-kim 阅读(2322) 评论(0) 推荐(0)
摘要: 在收银系统中经常使用到打印小票的功能。本文将Java如何实现商米POS收银机打印小票的功能。包括“”定义管理打印相关方法的类,封装好方法供外部调用”、“调用打印功能示例”。 1、定义管理打印相关方法的类,封装好方法供外部调用。 AidlUtil类封装了打印的方法。 创建打印服务的对象: privat 阅读全文
posted @ 2021-12-22 14:41 Boxin-kim 阅读(876) 评论(0) 推荐(0)
摘要: Java访问mysql数据库,涉及到IO操作,IO操作是比较耗时的操作。所以为了提高性能,可以选择使用缓存,把常用的数据缓存起来。本文将介绍使用HashTable和HashMap实现缓存的功能。包括:“定义统一管理写入和读取缓存的类”、“定义缓存类来存储缓存数据”、“在项目启动的时候,开始加载缓存” 阅读全文
posted @ 2021-12-22 11:57 Boxin-kim 阅读(160) 评论(0) 推荐(0)
摘要: 在开发中,我们会遇到需要在前端显示图表的业务需求。在本文中将介绍如何使用echart插件绘制业务需求的图表,包括:“绘制饼状图”、“绘制折线图”、“绘制柱状图”。 1、绘制饼状图。 前端HTML代码: <div class="report_pie"> <div id="pie"></div> </d 阅读全文
posted @ 2021-12-22 11:42 Boxin-kim 阅读(404) 评论(0) 推荐(0)
摘要: 在我们的产品中,一个公司对应着一个数据库。除了名称不同,这些数据库有着相同的存储过程和数据库表信息。所以我们可以将创建存储过程和数据库表的sql语句放在一个地方,当创建公司时,运行这些sql脚本语句,就可以实现动态创建数据库。创建数据库,运行sql脚本的工作使用了Windows服务来做。服务器主要通 阅读全文
posted @ 2021-12-22 10:50 Boxin-kim 阅读(665) 评论(0) 推荐(0)
摘要: 在客户端用户操作后,先将数据上传到服务器再响应给用户,响应过程可能会比较慢。为了快速响应用户操作,可以先将数据存到客户端中,后面再将数据按一定时间段上传到服务器上。本文将介绍:“定义一个用于定时上传数据的类”、“在AppApplication启动时,运行SyncThread同步线程”、“结束Sync 阅读全文
posted @ 2021-12-22 10:35 Boxin-kim 阅读(586) 评论(0) 推荐(0)
摘要: 在软件开发中,我们会经常遇到微信支付功能的需求,本文将介绍如何实现微信的退付款功能。包括:“客户端扫描二维码发起微信支付”、“客户端请求服务器,进行微信支付”、“服务器收到客户端的微信支付请求,进行微信支付”、“服务器端返回微信支付结果给客户端”、“客户端收到服务器返回的微信支付结果”、“客户端向服 阅读全文
posted @ 2021-12-22 10:10 Boxin-kim 阅读(714) 评论(0) 推荐(0)
摘要: 扫码枪是如何工作的,安卓如何怎么获取扫码枪的内容。本文将介绍安卓获取和处理商米收银机扫码枪扫描后的内容。包括:“安卓开发获取扫码枪扫描后的内容”、“处理扫码枪扫描后的内容”、“在Fragment中使用ScanGun类”。 1、安卓开发获取扫码枪扫描后的内容。 扫码枪会将扫描出来的内容转化为键盘事件K 阅读全文
posted @ 2021-12-22 09:57 Boxin-kim 阅读(2212) 评论(4) 推荐(0)
摘要: 客户端类需要与服务器端进行通信,也需要操作sqlite数据库,我们应该定义不同的类型的类完完成这些职责,降低耦合度。本文将介绍以下内容:“Activity类(界面类)”、“fragment类(界面类)”、“HttpBO类(向服务器发送请求的类)”、“HttpEvent类(封装向服务器发送请求的事件类 阅读全文
posted @ 2021-12-22 09:52 Boxin-kim 阅读(162) 评论(0) 推荐(0)
摘要: EventBus可以进行发布-订阅消息,使用它可以实现组件之间的通信。本文主要介绍:“导入EventBus依赖”、“组件注册EventBus”、“组件向EventBus发布信息”、“组件接收EventBus的信息”、“组件取消注册EventBus”。 1、导入EventBus依赖。 在build.g 阅读全文
posted @ 2021-12-22 09:34 Boxin-kim 阅读(105) 评论(0) 推荐(0)
摘要: 客户端获取数据时都从服务器上获取,速度会比较慢,所以可以将需要的服务器数据存放到客户端的sqlite数据库中,提高性能。主要的步骤为: “客户端向服务器端请求下载需要的数据”、“服务器端访问数据库,返回数据给客户端”、“客户端解析服务器返回的数据”、“客户端将对应数据库表中的数据全部清空”、“客户端 阅读全文
posted @ 2021-12-22 09:25 Boxin-kim 阅读(143) 评论(0) 推荐(0)
Web Analytics
Guang Zhou Boxin