自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(153)
  • 资源 (10)
  • 收藏
  • 关注

原创 sql中使用collection返回集合数据

今天在写一个接口时,有两级目录(父子关系),接口需要把两级数据以嵌套的形式返回给前端。我这个新手菜鸟一上来就查询两次sql,然后业务中处理嵌套关系,事实这种方法也能达到目的。我当然不知道还有这种骚操作,下面是在主管的指导下改造的通过sql语句实现的,记录下来慢慢欣赏。

2024-03-15 15:00:24 428

原创 版本比较工具类VersionUtil

版本比较工具类VersionUtil

2024-02-20 11:39:15 512

原创 PostgreSQL表中字段由字符串改为数组

需求:PostgreSQL数据库中的一张表的某些字段,之前存的是字符串,由于业务需求变更,需要存储多条数据,字段类型要改为数组,并保留原来的数据。

2023-12-21 10:00:25 1203

原创 vue详情页面卡片样式封装

在前端项目中,详情页面是必不可少的,详情页面通过卡片样式进行分片展示的需求也很多,这里记录下来方便以后直接套用。

2023-02-09 18:32:19 2281 1

原创 小程序/公众号抽奖活动页面-逻辑

后台返回对应的奖品数据,小程序以九宫格形式展示奖品信息,点击抽奖后转动转盘,通过接口获取奖品对应的位置,并把奖品位置高亮显示。

2023-02-03 13:51:38 722

原创 Vue鼠标移入(悬停)显示-移出隐藏

需求:详情页面显示多张图片,当鼠标悬停在某张图片上时,图片上显示下载按钮;鼠标移出后,下载按钮隐藏。

2023-02-01 10:48:55 5830 1

原创 Vue项目文件导入、导出

Vue项目中文件导入和导出使用比较频繁,这里把最常用的布局和实现代码记录下来,避免以后频繁造轮子。

2022-08-30 14:56:56 7855

原创 vant实现Select效果--单选和多选

vue项目无论是用element中的Select选择器,还是使用公司维护的组件,都可以轻松实现单选和多选的需求,但在移动端使用vant时,找了几遍发现居然没有提供Select组件,这里提供了基于popup和cell、field封装的select单选、多选组件。...

2022-07-29 17:11:51 11999 3

原创 Vue自定义Tag标签

1、需求:项目中有好几处用到标签组,有单行、多行、单行显示不下省略(鼠标放上去提示)等等需求,为了方便使用提取为组件。单行样式如下:2、在项目的components文件下新建文件夹

2022-06-01 14:02:10 3968

原创 el-upload限制文件大小(图片尺寸)

1. 在el-upload控件中加入on-change方法:<el-upload id="file" ref="upload" slot="append" :action="file.action" :with-credentials="true" name="file" :data="file.data" :show-file-list="false" accept=".xls,.xlsx,.csv" :disabled="isDisabled" :au

2022-04-25 14:48:10 12526 1

原创 vue移动端van-uploader上传图片压缩工具类

1、最近移动端项目中使用van-uploader上传图片,开发测试都正常,上线后苹果用户反馈图片上传不了,最后排查是图片过大导致调用上传接口后一直没有返回。2、utils文件夹下新建imgCompressUtil.js文件:3、工具类中的具体代码:const imgCompressUtil = { compressImg (file) { let self = this if (!file || !window.FileReader) return // 判断是否支持F

2022-04-22 17:31:46 1907

原创 vue日期时间工具类

最近做的一个项目对日期时间的处理比较多,最后整理到一个工具类里面,方便以后使用:1.在utils文件夹下新建一个dateTimeUtil.js文件:// 获取当前时间并格式化export function getCurrentTime(){ var date = new Date() var month = date.getMonth() + 1 var day = date.getDate() if (month <= 9) { month = '0' + .

2022-04-20 14:59:56 4650

原创 vue项目图标处理工具

1、vue项目中的png、svg图片统一处理工具类,图片正常放在对应的目录下(images中放png图片,ui-icon中放svg图片):2、在style文件夹下新建一个ui-page.less工具类类:// 图标.ui-icon { .common { display: inline-block; width: 24px; height: 24px; background-size: contain; vertical-align: midd..

2022-04-06 14:47:42 4055

原创 vue -- watermark添加水印工具类

1、在utils文件夹下新建watermark.js工具类:watermark.js工具类对应代码:const watermark = {}const setWatermark = (str) => { const id = '1.8989898989898989.123412416' if (document.getElementById(id) !== null) { document.body.removeChild(document.getElementBy

2022-03-04 14:25:57 1195 1

原创 vue table动态表头数据处理

table动态表头数据处理经常用到,记录下来方便以后查阅1、data中定义表头和表格数据:tableData: [], //表格数据headerTeamList: [] //表头数据2、接口获取表头数据:getHeaderList () { serviceApi.getHeaderList().then(res => { this.headerTeamList = res.data })}3、获取table表格数据并处理结果:getTe

2022-03-02 16:33:07 6890 1

原创 van-tabs下划线位置错位

初始化页面时,van-tabs下划线位置错位:解决方案:①如果是通过v-show来控制组件显隐,改为v-if:<applyList v-if="index === '2'"></applyList>②使用官方提供的resize方法:<van-tabs ref="tabs" v-model="active" title-active-color="#2080F7" color="#2080F7"> <van-tab tit.

2022-01-21 11:19:57 2249

原创 echarts雷达图点击事件 获取indicator节点详情

需求:点击雷达图上的indicator时获取对应indicator上的信息,而不是获取整个系列的数据1、设置点击事件:chart.on('click', (param) => { console.log(param)})点击回调的param是整个雷达图的数据,我们要从中找到我们想要的数据(对应indicator的数据),通过每次改变点击的indicator,然后再去观察数据,最后发现在event-topTarget中有个__dimIdx字段,对应的刚好说我点击的indicat.

2021-11-15 11:18:14 5027 3

原创 vue的keep-alive组件清除缓存

需求:A页面 -> B页面 -> C页面,当C页面返回到B页面时,保存B页面的数据;但A页面到B页面时,B页面需要重新加载数据。网上的方法试了很多种,下面这个有效果:1、路由router中设置keepAlive:{ name: 'personnelList', path: '/personnelList/', menuCode: '001', component: 'personnelList', meta: { keepAlive: true }

2021-11-12 14:31:20 6552 2

原创 vue实现打标记录

项目需要的效果如下图:实现代码:<template> <div class="step-template"> <div class="step" v-for="item in 12" :key="item"> <div class="step-l"> <p class="time">2021-08-01 12:09:11</p> <p class="name"&g.

2021-11-06 10:26:04 261

原创 小程序开发之 wx.getSetting 授权检测

wx.getSetting在 未拒绝 和 未同意 状态下 ,success: (res) => {} 的res.authSetting{}值是空的!在getUserInfo()后,点击拒绝后 wx.getSetting的fail:(res)=>{}触发,res.authSetting['scope.userInfo'] 的值是false ,表示scope.userInfo这个权限没有授权。在getUserInfo()后,点击同意后 wx.getSetting的success:(res..

2021-08-03 09:52:06 944

原创 Android设计模式2--工厂方法模式

1. 定义工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。2. 使用场景复杂对象的生成,代替new的方式来屏蔽产品类的创建过程:需要一种产品,而不想知道也不需要知道工厂是如何生产出来的,只需要知道具体对应的工厂就行。 产品的替换需要灵活、可扩展性高的场合。 测试驱动开发的框架中,往往通过工厂方法把对象虚拟出来(用得比较...

2019-04-12 10:05:51 218

原创 Android设计模式1--原型模式

1. 定义原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。2. 使用场景资源优化场景:类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等。 性能和安全要求的场景:通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式。 一个对象多个修改者的场景:一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考...

2019-04-01 14:15:30 292

原创 Android网络基础3——HTTP协议原理

1. HTTP简介HTTP协议用于客户端与服务器之间的通信,在通信线路两端,必定一端是客户端,另一端是服务器。注意:客户端与服务器的角色不是固定的,一端充当客户端,也可能在某次请求中充当服务器,这取决与请求的发起端。HTTP协议属于应用层,建立在传输层协议TCP之上。客户端通过与服务器建立TCP连接,之后发送HTTP请求与接收HTTP响应都是通过访问Socket接口来调用TCP协议实现。...

2019-03-27 11:25:39 247

原创 Android网络基础2——TCP协议的三次握手和四次挥手

HTTP协议用于客户端与服务器之间的通信,在通信线路两端,必定一端是客户端,另一端是服务器。HTTP协议属于应用层,建立在传输层协议TCP之上。也就是说,客户端与服务器通信之前要建立TCP连接,之后发送HTTP请求与接收HTTP响应都是通过访问Socket接口来调用TCP协议实现;通信之后要断开TCP连接。建立TCP需要三次握手才能建立,而断开连接则需要四次挥手。整个过程如下图所示:...

2019-03-22 16:37:51 712

原创 Android网络基础1——网络分层

OSI模型OSI 模型(Open System Interconnection model)是一个由国际标准化组织提出的概念模型,试图提供一个使各种不同的计算机和网络在世界范围内实现互联的标准框架。OSI 模型各层间关系和通讯时的数据流向如图所示:七层模型介绍物理层:物理层负责最后将信息编码成电流脉冲或其它信号用于网上传输。RJ45等将数据转化成0和1。数据链路层:...

2019-03-19 13:13:10 440

原创 Android错误码转换

Android程序员和后天交互时,后台会返回数据或错误码,当我们拿到错误码时,不能直接把错误码展示给用户,而是要把错误码转换为用户能够理解的信息。1. 先在资源文件夹string中定义错误码对应的字符串,如下:<string name="N500">请求服务器超时!</string><string name="B33015">格口正在建包,已锁定&l...

2019-03-19 10:35:56 748

原创 设计模式六大原则(6):迪米特原则

定义:一个对象应该对其他对象有最少的了解。场景:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。解决方案:遵循迪米特原则,尽量降低类与类之间的耦合。迪米特原则英文全称为Law of Demeter,简称LOD,又叫最少知道原则,还有一个英文解释是:Only talk to your immedate friends,翻译过来就是:只与直接的朋友通信。什么...

2018-08-29 09:55:50 358

原创 设计模式六大原则(5):接口隔离原则

定义:客户端不应该依赖它不需要的接口。另外一种定义:类间的依赖关系应该建立在最小的接口上。场景:在接口I中定义多个方法(假如A,B,C,D),类C1通过实现接口I来扩展自己需要的方法A、B;类C2通过实现接口I来扩展自己需要的方法C、D;那么接口I对于类C1和类C2来说不是最小接口,则类C1和类C2必须去实现他们不需要的方法。解决方案:采用接口隔离原则。将臃肿的接口I拆分为独立的几个接口,...

2018-08-27 09:49:46 372

原创 设计模式六大原则(4):依赖倒置原则

定义:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。场景:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。解决方案:遵循依赖倒置原则,将类A修改为依赖接口I,类B和类C各自实现接口I,类A...

2018-08-24 09:28:52 416

原创 设计模式六大原则(3):里氏替换原则

定义:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。这种描述不太好理解,里氏替换原则还有第二种定义:所有引用基类的地方必须能透明地使用其子类的对象。场景:有一功能F1(会飞),由类A完成。现需要将功能F1进行扩展,扩展后的功能为F(...

2018-08-23 09:42:29 995

原创 设计模式六大原则(2):开闭原则

定义:软件中的对象(类、模块、函数等)应该对于扩展是开放的,但是,对于修改是封闭的。即对扩展开放,对修改关闭。场景:在软件的生命周期内,产品需要不断的升级、维护,没有一个产品从第一个版本开发完就不需要再变化了,除非在下个版本诞生之前它已经终止了。而产品的升级需要修改原来的代码,这可能会给原来的代码中引入错误,影响原有的软件模块。解决方案:遵守开闭原则。程序一旦开发完成,程序中一个类的实现只...

2018-08-22 10:15:11 362

原创 设计模式六大原则(1):单一职责原则

定义:就一个类而言,应该仅有一个引起它变化的原因。简单来说,即一个类只负责一项职责。场景:类C负责两个不同的职责:职责T1,职责T2,当职责T1的需求发生改变而需要修改类C时,有可能导致原本运行正常的职责T2出现错误。也就是说职责T1和T2被耦合在了一起。解决方案:使用单一职责原则。分别建立两个类C1、C2,C1负责职责T1的功能,C2负责职责T2的功能。这样,当修改C1时,只会改变职责T...

2018-08-21 16:22:55 315

转载 深入源码解析Android中的Handler,Message,MessageQueue,Looper

原文地址:点击打开链接本文主要是对Handler和消息循环的实现原理进行源码分析,如果不熟悉Handler可以参见博文《 Android中Handler的使用》,里面对Android为何以引入Handler机制以及如何使用Handler做了讲解。概括来说,Handler是Android中引入的一种让开发者参与处理线程中消息循环的机制。我们在使用Handler的时候与Message打交道最多,Mes...

2018-06-27 16:40:54 218

原创 Android全局捕获异常并生成崩溃日志文件的工具类

开发Android项目时,经常会遇到程序崩溃的情况,这时我们可以在logcat中查看崩溃日志,但有时错误的堆栈信息并没有显示出来,这时找起来很不方便;另外一种情况就是项目在测试阶段,如果有崩溃,只需让测试人员把崩溃日志发过来即可。 /** * 全局异常捕获 * Created by ljw on 2017/7/3. */public class CrashHandler impl...

2017-11-30 13:58:56 4522 2

原创 Android使用Handler+postDelayed实现简单计时器

使用Handler+postDelayed实现计时器:timeHandler.postDelayed(runnable, 1000);timeHandler.removeCallbacks(runnable);使用Chronometer实现计时器:timer.setBase(SystemClock.elapsedRealtime());timer.setFormat("0"+String.valueOf(hour)+":%s");先看效果图:

2017-11-28 13:19:02 4425

原创 AlertDialog修改标题、内容、按钮的颜色和字体大小

Android开发中,AlertDialog因为使用起来方便,用的还是很多的,但有时领导还是很会挑刺的,说默认的按钮不够大、提示信息不够醒目。。。这里介绍一种不用通过自定义view便可修改这些样式的方法:AlertDialog dialog = new AlertDialog.Builder(context) .setTitle("分拣中

2017-11-15 11:40:34 8066 2

原创 Android屏蔽EditText软键盘

最近在做一个PDA项目,因为PDA上自带的有键盘,所以要屏蔽掉输入框EditText在点击时弹出的软键盘,网上的方法基本上测试了一个遍,最后发现只有这个既能保证屏蔽掉软键盘,又能使光标正常显示:/**  * 禁止Edittext弹出软件盘,光标依然正常显示。  */public void disableShowSoftInput(){ if(android.os.Build.VE

2017-08-14 18:06:15 1248

原创 Android自定义属性实现显示两行文字的button

最近项目有个需求是实现一个button上显示两个按钮,而且这两行文字可以改变,最终是通过自定义属性来解决的,下面是全部过程和代码:一、在res/values文件下定义一个attrs.xml文件,format表示参数类型。 二、自定义一个类,继承Button,获取到自定义的属性,并通过onDraw()方法绘制出

2017-07-19 19:03:53 3872

原创 android热修复之Robust使用(真正的入门)

目前能够实现热修复的方案很多,各个方案的优缺点这里也不在一一比较了,这篇文章主要针对第一次尝试集成美团点评基于Instant Run的热修复方案的开发者。Robust的GitHub地址:https://github.com/Meituan-Dianping/Robust 。1.在APP的build.gradle,加入依赖:apply plugin: 'com.android

2017-06-28 17:02:22 7540 19

转载 Android7.0下载Apk自动安装

这是一篇非常有价值的文章,详细介绍了获取root权限,实现静默安装的逻辑,代码层次也十分清晰。原文地址:http://blog.csdn.net/cfy137000/article/details/702579121. 整体需求下载APK文件 使用DownloadManager来下载在应用界面中展示下载进度安装下载后的APK文件 root模式: 可以自动

2017-06-26 14:42:04 2390

记录log日志的工具类

封装的一个用来记录log日志的工具类,使用方便,可以把日志记录到文件中

2017-11-30

灵者Gif录制软件

是不是很羡慕别人博客中的动态图的绚丽效果?而自己只能上传普通图片,其实一个软件就能搞定。灵者Gif录制软件,可录制电脑上的某个区域生成gif动画,所以就可以录制虚拟机上的图片了。使用步骤: 1.直接解压缩。 2.灵者Gif录制.exe 3.选择“矩形”,便可以用鼠标拉取一个矩形区域。切记:不要勾选“跟随鼠标坐标”。 4.点击“录制”,完成后点击“停止”。 5.把生成的动态图片和上传普通图片一样上传到博客上,ok。

2016-09-24

android-smart-image-view-master图片异步下载+使用详解

SmartImageView是图片异步下载的开源项目,可以下载指定路径的图片,可以自动清除缓存,清楚的缓存按缓存文件创建时间最久未使用的原则进行清除。 使用步骤: 1,解压缩后,把src以下的部分复制到自己项目的src目录下。 2,xml中把ImageView标签改为如下: <com.loopj.android.image.SmartImageView ...... /> 3,代码中初始化SmartImageView控件: SmartImageView myImage = (SmartImageView) this.findViewById(R.id.my_image); //说明:setImageUrl是SmartImageView特有的方法,通过此方法便可实现图片的异步下载 myImage.setImageUrl("http://www.baidu.com/meinv.jpg");

2016-09-14

junit-4.10.jar及使用方法

JUnit对于java开发来说是一个非常不错的测试工具,使用又方便快捷,这是一个包含junit-4.10.jar和使用方法文档的压缩包,实用性很高。

2016-09-01

Genymotion插件完整版(eclipse离线安装版)

eclipse插件Genymotion完整版,包含两个JAR包和一个exe文件: 1.com.genymobile.genymotion.lib_1.0.2.201401301616.jar。2.com.genymobile.genymotion.ide.eclipse.plugin_1.0.2.201401301616.jar。 3.reg.exe。 压缩包中有详细的使用步骤,不懂再问。

2016-08-29

图书管理系统java源代码

这是一个图书管理系统的简易java代码,主要实现对图书的增加、查询、删除、图书借阅、图书归还、图书排行等功能,可用于大学生的课程设计。上传的是完整的包,下载后解压,直接复制到工程下即可,部分注解在代码中给出了。

2016-08-28

Java猜拳游戏源代码

自由选择对方角色,输入用户名,对方角色和用户通过随机数随机出拳。游戏结束后,统计游戏结果。这是一个完整的java项目,解压后直接复制到新建的工程下,修改包名即可运行。

2016-08-28

commons-fileupload.jar和commons-io.jar

web项目开发中经常会用到的文件上传的jar包,免费下载

2016-08-25

okhttp-2.75.jar和okio-1.8.0.jar下载

okhttp是一个http客户端,可用于一般的get请求、post请求,基于Http Post的文件上传(类似表单),文件下载/加载图片等等。该okhttp.jar是最新版本,使用okhttp需要依附okio.jar,该包中内含okio.jar

2016-08-25

gson完整jar包

gson完整jar包中包含两个重要的部分,一个是gson-2.2.4.jar,此jar包可以直接复制到android或java项目下使用。另一个是gson-2.2.4-sources.jar,此jar包可以关联到项目中,用来查看源代码。

2016-08-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除