CentOS7.4使用yum安装Apache
CentOS7.4使用yum安装Apache
CentOS7.4安装PHP5.6
CentOS7.4使用yum安装PHP5.6
从Navicat查看数据库链接密码
背景有时候,我们通过Navicat链接数据库进行使用,但时间就后,可能找不到数据库的连接密码了,这时候,我们可以通过Navicat保存的信息中找回数据库密码。
软件版本Navicat 15.0.9
Windows10 专业版 21H2
操作步骤通过注册表获取加密后的密码数据
我在网上看到,很多人说通过Navicat导出连接,从导出的文件中可以复制出加密后的密码数据,但是对于当前版本,我测试不可以,所以只能从注册表中获取。
通过运行regedit打开注册表,找到目录HKEY_CURRENT_USER\SOFTWARE\PremiumSoft\Navicat\Servers,然后点击要找回密码的数据库链接,找到名称为Pwd的属性,复制出数值数据,到此,加密后的密码就成功获取。
可能是软件和环境的原因,网络上有的用户的路径是HKEY_CURRENT_USER\SOFTWARE\PremiumSoft\NavicatPG\Servers
解密数据可能自己电脑上没有相应的环境,这里使用的是世界上最好的语言PHP的代码来解密数据的,这里提供一个在线PHP运行环境,链接为代码在线运行 - 在线工 ...
Canvas使用不慎引发的惨案
背景在使用uni-app开发的过程中,有这样一个需求:考勤打卡,需要拍照后添加水印上传,起初没对照片进行压缩,后面上线使用后实施开始反馈,说有的地方网络不好,上传照片特别特别慢,让我进行优化,想到的办法肯定是压缩后再上传啦,但是呢,项目是基于uni-app开发的,不过是h5因此会有不少东西不能使用,于是通过Canvas画布重新绘制图片的方法来进行图片压缩,经过开发测试没问题后上线使用了,但是使用没多久,实施开始反馈,说是拍照打卡有问题了,拍照的时候会出现空白照片,有时候要重拍很多次才能拍到正常图片上传,于是,就有了这个问题。
原因分析因为添加图片压缩之前是没有任何问题的,当添加图片压缩功能后就开始反馈这个情况,于是就猜测是图片压缩过程中出现的问题,朝着这个思路,开始检查代码,使用uni.chooseImage调用相机拍摄图片,获取到图片信息后进行判断,当图片文件大小超过1M就进行压缩,压缩的步骤为:
先计算出原图片的长款像素值,然后对图片进行最长边设置为1080像素的等比缩放,计算出缩放后图片的长款像素值;
使用let ctx = uni.createCanvasContext(& ...
使用Validator校验对象数据合法性
使用场景在项目开发过程中,数据校验时必不可少的环节,有效的校验方式可以提高开发效率、增强代码可读和可维护性,项目开发中,我使用最多的校验方式是使用注解@Valid,但是这种方式往往只是在controller层对接收表单传递过来的参数进行校验,那么当我们想要在任何地方校验一个对象的数据是否合法,应该怎么实现呢,下面是具体的实现方法。
实现步骤
在需要校验的实体类中添加注解标注
在需要校验的地方使用 javax.validation.Validator进行校验
示例代码
需要校验的实体类示例代码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960public class ValidEntity { /** * 组织 */ private String officeName; /** * 所属县市 id */ @NotBlank(message = &q ...
浏览器不兼容引发的跨域惨案
前言:在公司个项目开发中,遇到了一个问题,解决这个问题的过程很艰难,记录下来,不知是否有和我一样遇到这个问题的朋友。
首先说一下开发环境以及项目情况吧,开发工具主要为IDEA和HBuilder X,后端项目基于SpringBoot搭建,是一个前后端没有分离的项目,现在有个需求,需要在项目中添加接口,供钉钉端H5微应用调用,开发过程基本都没有遇到太多的问题,从第一个问题说起吧。
在后端接口写得差不多的时候,我开始把接口接入H5中,在HBuilder X工具的内置浏览器中运行没有任何问题,当我用Chrome浏览器调试时,报错了,错误信息就是提示跨域问题,因为前后端是分开部署的,也就是说前端页面需要启动一个服务,后端接口又需要启动另一个服务,这就一定会出现跨域问题,跨域的条件大家可自行Google,网上描述很多,在此就不赘述。于是开始解决这个问题,我的印象中,跨域是前后端都可以解决的,但也没去深究过到底前端解决好还是后端解决好,我开始查找前端解决方案,因为我不想修改后端的任何一个接口或配置了,因为是使用HBuilder X开发H5,网上也有很多文章来叙述在Hbuilder X中如何解决跨域的 ...
自定义注解动态过滤API接口JSON返回字段
背景编写API接口过程中,不可避免的会遇到一个问题,对于不同的接口,需要的字段不一样,但大多数情况下,使用的Service层方法是相同的,也就是说,获取到的数据字段是一样的,但是往往不需要返回所有的字段。
解决方案常用的解决思路有两种,一种是针对每个接口定义VO类,在数据返回时,将Service层查到的数据复制到VO类后再返回,这样的话就可以返回需要的字段,但这样也有缺点,不同的接口,需要定义专属的VO类,这样会使类的数量增多,后期如果需要添加一个通用字段,那么需要在每个VO类都添加字段,否则无法返回,后期维护工作量大,不好维护,其次是性能问题,数据返回到浏览器之前,都需要将数据复制到VO类,这样会产生许多的中间实例,影响性能;
第二种方案,在数据序列化为JSON字符串的时候,只序列化需要返回的字段,这种方法相对第一种方法,可以很好的避免第一种方法出现的缺点,对于Jackson原生的注解,无法实现动态过滤需求,如果把注解加在实体字段上,无法实现动态过滤,于是有了改进方案,自定义注解,通过自定义注解获取需要返回或需要过滤的字段,在序列化时处理。
代码实现自定义注解
为了实现多注解,我们定 ...
单元测试工具之 PowerMock
单元测试
在计算机编程中,单元测试(英语:Unit Testing)又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。(摘自维基百科)
什么是Mock
在面向对象程序设计中,模拟对象(mock object)是以可控的方式模拟真实对象行为的假的对象。
比如,对象A依赖对象B,但是B代码还没具体实现,还是一个接口,不能用,我们可以mock一个假的B来完成测试;
又比如,开发过程中,服务分开部署,在本地开发环境无法调用依赖服务接口或是调用过程复杂,我们也可以mock一个被调用对象来完成单元测试。
为什么要用Mock
真实对象的行为是不确定的(例如当前的时间);
真实对象很难搭建起来;
真实对象的行为很难触发(例如网络错误);
真实对象速度很慢(例如项目很大,启动缓慢);
使用Mock的好处
Mock可以用来解除外部服务依赖,从而保证了测试用例的独立性
现在的互联网软件系统,通常采用了 ...