自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 资源 (3)
  • 收藏
  • 关注

原创 【Java】基于方法引用的构建器模式运用

封装一个set对象构建器,利用类的 set 引用方法(不局限set开头的方法)来设值,便于点式调用

2022-12-07 17:27:59 171

原创 【Java】基于线程池的独立任务并发执行器

基于线程池的独立任务并发执行器,以并发的方式执行任务,以提高 CPU 利用率,提高处理效率。

2022-06-11 11:25:31 277

原创 【Java】通过 getter 方法引用,来比较两个对象是否相等

背景编写代码时,会经常需要编写两个对象是否相等的逻辑,一般会有如下做法直接写在业务代码中;单独写个方法,业务代码中调用;重写 equals 方法;上面这些做法,都比较复杂,如果属性太多或复杂点(如果是 list 和 map 就更复杂了),就需要编写更多的判断逻辑代码了。想法(需求)如果能只需要提供比较的方法引用列表,有个地方能自动方法引用取值,并比较就好了。思路在 java8 中可以使用方法引用,如:People::getName;可以将所有要比较的 Getter 保存到列表中;

2022-04-09 19:58:16 3073

原创 【java】获取属性名工具

背景在编码时经常会用到同名的属性名字符串,比如用相同的属性名做为 map 中的键;在 mybatis 中,根据属性名的下划线字符串来拼接 sql 查询条件。需要修改属性名时,如果是用字符串硬编码的,引用的地方越多,修改越困难但是如果用的是 java8 中的属性引用,操作起来就很方便了,修改一处即可修改全部相关引用。属性工具类测试参考下面测试类,怎样使用;如果想要修改 articleName 为 articleTitle,在 IDEA 中,修改类的属性名很方便,选中属性名 articl

2022-01-13 11:36:27 1178

原创 【算法】抽奖算法

抽奖算法理论在一组奖品中,每个奖品有自己的概率,总概率为 1.0,也就是说在库存充足的情况下,必然能抽中其中的一个。通过「谢谢参与」来作为无奖的奖品(也是一种奖品)。需要注意的是:如果一组中所有的奖品,总概率之和不为 1.0,那么数值代表的概率就不是真实概率了,需要用所占比例来作为新的概率:新概率值=奖品概率/总概率。举个例子:只有 A 和 B 两个奖品,A 概率是 0.1,B 概率是 0.3,那么总概率就是 0.4,A 的真实概率就是0.1/0.4=0.25,B 的真实概率是0.3/0.4=0.7

2021-12-23 18:33:33 3256

原创 【开发工具-Git】Git中合并多个项目并保留所有commit提交记录

背景通常的合并项目的做法是,将所有项目移动到一个新目录中,并重新生成纳入 git 管理(去掉了.git 文件夹),这样做的弊端是之前的历史提交记录都没有了,想要看之前的记录,还需要再回到旧项目中查看。在本文中,我会介绍怎样完整地保留历史提交记录。为什么保留提交记录?可以追踪文件修改历史,方便对比和还原历史。可以追责,知道之前是谁写的,什么时候写的。拆分怎样完整地保留提交记录?假设有三个项目A:远程地址为:git@github.com:lyloou/merge_a.git ,分支为mas

2021-12-23 10:18:23 9826

原创 基于 AOP 和 JWT 实现的 Token 身份认证组件

基于 AOP 和 JWT 实现的 Token 身份认证组件原理服务端使用方式使用自定义的缓存客户端使用源码实现原理基于 AOP 面向切面编程,在执行前后插入身份认证的逻辑。原理细节:登录过程:这个过程比较简单,将用户 id、用户名、过期时间等属性结合 jwt 工具生成 token,并将用户的信息存入到缓存中,以供后期使用。验证过程:前端通过 Header 头信息的 Authorization 属性得到 Token,先进行 token 验证,再结合缓存验证,验证成功的话,将用户 id 和

2021-08-13 15:49:03 547

原创 AOP 实现(定时器)方法监控——Monitor

AOP 实现(定时器)方法监控——MonitorAOP 实现(定时器)方法监控——Monitor描述原理:使用:api:源码扩展AOP 实现(定时器)方法监控——Monitor描述背景定时任务出现问题,在修复发布前,需要临时停下来,可之前又没有埋点;定时任务需要临时手动触发一下,可之前又没有埋点;Monitor 就是用来解决上面这些问题的。被 @MonitorMethod 标记的方法,并且方法所在的类被 @MonitorClass 标记,那么这个方法就可监控。针对可监控的方法可以做下面这

2021-03-05 15:02:44 1564 2

原创 【business】图形验证码解耦设计

目的在调用接口时,要求必须有输入正确的图形验证码才能调用(防刷)。但是,看一些代码中将这个功能和其它业务功能耦合在一起。每次有新的接口需要用时,又得重新复制一份,就想到值得优化重构。思路生成时,从全部字母和数字中随机获取 6 个字符。接着借助 BufferedImage 和 ImageIO 工具生成字节码格式的图形验证码。再将字节码形式的图形验证码转换成 base64 字符串,等待发给前端,前端接收后可以转换并显示出来(这样我们就可以统一用 json 的方式来和前端交互,返回格式是一样的;还有一

2020-07-09 18:37:03 199

原创 【business】用户树查找优化

【business】用户树查找优化背景思路递归的方式迭代的方式如何查找直属子节点如何查找所有后代代码实现更多可查看源码实现 A B / \ /|\ C D E F G / \ / \ H I J K / \ L M / \

2020-06-17 09:44:20 233

原创 【business】 ID生成器设计

【business】 ID生成器设计参考资料雪花生成器根据不同业务配置成多个生成器生成器的生成逻辑配置 workerId测试雪花算法实现参考资料分布式系统里用户 ID 生成有什么好的方法和规则能满足“唯一、尽量短、不能直接看出规则”这几个条件? - 知乎Leaf——美团点评分布式 ID 生成系统 - 美团技术团队雪花生成器Twitter 的分布式自增 ID 算法 snowflake (Java 版) - relucent - 博客园Mybatis-Plus 雪花 id 的使用以及解析机器

2020-06-16 18:48:27 579

原创 【Tool】前端H5页面Chrome调试

微信页面调试打开开发者模式进入界面:设置->系统->关于手机多次点击版本号。开启USB调试进入界面:设置->系统->开发人员选项打开开发者选项打开USB调试打开inspect调试功能给【文件传输助手】发送消息: http://debugx5.qq.com打开链接,开启【打开TBS内核Inspector调试功能】,如下图所示。连接手机进入ch...

2019-01-25 09:35:10 962

原创 【Shell】shell脚本修改json中某个字段的值

shell脚本修改json中某个字段的值思路:通过awk来找到旧数据,然后用sed来替换旧数据https://download.csdn.net/download/ly1414725328/10744793源码config.json{ "name": "the_name", "id": "132869", &qu

2018-10-25 21:01:41 12293

原创 【Android】自定义View —— 环形调色板

摘要: 通过布局代码和java代码结合的方式,来自定义视图,构建一个环形调色板;

2016-08-20 23:25:48 2402

原创 【Android】Manifest中注册以内部类形式存在的Activity

本文介绍了在Mainfest中注册以内部类形式存在的Activity;

2016-08-05 11:23:01 3197

原创 【Android】通用系列 —— 数据持久化(通用的SQLite封装)

关键字SQL SQLite 通用系列 数据存储摘要: 主要内容: 本文介绍了封装后的SQLite,以便快速开发; 只保留必要的定制,重复的代码封装到一个通用类中;说明LouSQLite.java文件为通用的代码,所有项目中不需要修改即可使用;MyCallBack.java文件是自定义的文件,关于项目的数据库配置都在这里进行,例如:数据库名称、数据库版本号、table语句等;

2016-07-13 22:04:23 5882

原创 【Android】通用系列 —— 数据持久化(通用的SharedPreference封装)

关键字SharedPreference 通用系列 数据存储摘要: 主要内容: 本文介绍了封装后的SharedPreference,以便快速开发; 只保留必要的定制,重复的代码封装到一个通用类中;说明具体用法参照UspDemo.java文件;通用源文件为Usp.java代码【用法】//: TestUsp.javaString KEY_FIRST = "FIRST";Ulog.

2016-07-13 21:59:28 1163

原创 【Android】自定义View —— 设置中的选择皮肤项

【关键词】修改皮肤 自定义View【 问题】让改变皮肤变得简单;【效果图】【分析】「动态加载皮肤分析」 * 改变背景后将颜色值保存到SharedPreferences中; * 当切换或回退到另一个界面,在显示之前,即对应声明周期onStart中对背景进行变化(也可以在设置背景的时候通过广播的方式及时修改另一个界面的背景)「自定义控件分析」 * 每一次都只选择一个颜色,根据这个特性,我选择了

2016-05-12 18:18:52 1420

原创 【Android】自定义View —— 滑动的次数选择器

【关键词】自定义View 次数选择器 滑动【问题】实现一个可滑动的次数选择器;【效果图】「原型图」 「实现图」 【分析】对外提供简单的Change监听接口;如果处于两者之间就需要做判断:大于一半就自动跳转到下一个,小于一半,则回到上一个;通过Scroller及其startScroll()方法来实现回弹效果;要灵活控制刻度的最小值和最大值,因为可能随着需求的更改,这个值很容易发生改

2016-05-10 22:04:43 2511

原创 【Android】通用系列 —— 用简单通用的方式操作ListView

【关键词】通用系列 ListView【问题】在使用ListView的过程中,总是不断的重复写Adapter,ViewHolder等代码,很繁琐;想个办法,不论是简单的Item布局还是复杂的Item布局,都可以用同一种方案快速实现出来;【效果图】【分析】/** * 特色功能: * ★ 通用(使用ListView和GridView的地方都可以用此

2016-05-07 11:38:21 2030

原创 【Android】通用系列 —— 快速搭建设置界面

## 【关键词】`通用系列` `设置界面` `自定义View`## 【问题】· 减少重复性代码,快速搭建设置界面(通过简单的配置,就可以达到想要的布局);## 【效果图】## 【分析】- 设置界面大同小异,无非由标题,内容,图标等元素组成;- 既然每一个设置项都有Title,那么就用Title的strId来作为它的唯一标识(便于点击等处理);- 复杂的地方在分割线的处理方式...

2016-05-06 23:32:49 7111 5

原创 【Android】布局——图片紧随文字

【关键词】Android 图片紧随文字 多行文字挤压图片【问题】实现如效果图的布局,其中中间部分的文字和图片是紧挨着的;要考虑适配情况,文字太多的时候,如果处理不当,图片会被挤压出去,看不到图片;【效果图】针对中间部分的文字和图片,在最左边有图片和最右边都有内容(例如图片)的情况下该如何布局? 【分析】如果TextView的宽度设

2016-04-18 19:41:09 2175

原创 【Android】多点触控(判断触摸点是否在view上)

【关键词】Android 多点触控【问题】如何获取单个触摸点的位置,多个触摸点的位置又如何获取呢?如何根据触摸点的位置,确定触摸点是否在 view 上?【效果图】【分析】通过MotionEvent可以获取到触摸点个数;通过MotionEvent.getX(int pointerIndex)方法,可以获取到指定触摸点的X值;对于Y坐标同理;【解

2016-04-15 09:18:00 4259

原创 【Android】工具 —— Eclipse常用功能

快捷键· 上一个编辑窗口:Ctrl+Pgup· 下一个编辑窗口:Ctrl+Pgdn· 激活编辑窗口(当焦点处在Package Explorer或者LogCat时,按下此键即可激活编辑窗口):F12· 运行程序:Ctrl+F11 (注意:在布局文件下,该快捷键不可用)· 删除当前行:Ctrl+D· 图形视图和代码视图之间切换:Alt+Pgup/Pgdn(注意:只能在布局文件中

2016-04-13 22:15:21 401

原创 【Android】通用系列 —— 下拉刷新之继承ListView的下拉刷新

【关键词】通用系列 下拉刷新 ``【问题】打造一个通用的下拉刷新ListView控件;【效果图】【分析】【解决方案】见源码;【代码】使用方法[activity_pull_to_refresh.xml] android:id="@+id/scan_lv" android:layout_width="m

2016-03-30 21:22:56 396

原创 【Android】通用系列 —— 对话框

【关键词】通用系列 对话框 Dialog【问题】打造一个通用的对话框;【效果图】【分析】使用通用Adapter的类似思想;【解决方案】【代码】使用方法private void showInputPasswordDialog() { LouDialog.getInstance(mContext, R.layout.dialog_input_password, ...

2016-03-29 19:14:47 539

原创 【Android】ListView加载网络图片(解决图片错位问题)

【关键词】ListView 图片错乱 网络加载【问题】在ListView中使用图片作为头像时,发生图片错位;使用圆角图片;【效果图】【分析】· 见源码注释;【解决方案】使用方法holder.putImg(R.id.iv_group_icon, group.getSmallIcon(), true)【代码】结合通用Ada

2016-03-26 22:11:04 2128

原创 【Java】基本类型和引用类型(值传递)

【关键词】【问题】·加深对基本类型和引用类型的理解;【效果图】【分析】参见最后的【参考资料】【解决方案】【代码】 public void test() throws Exception { System.out.println("\nint:================="); int i = 2;

2016-03-26 07:58:17 2654 1

原创 【Android】ListView多选模式的使用

【关键词】ListView多选【问题】如何使用ListView的多选模式?【效果图】【分析】长按某一个 item 的时候,开启多选模式,并让当前选择的 item 处于选中状态;利用ListView 的 Choice属性,可以很方便使用多选模式或单项模式;【解决方案】使用方法长按 item 开启多选模式final ListView

2016-03-26 07:45:46 2185 2

原创 【Android】通用系列 —— AbsListView适配器

【关键词】Adapter 通用适配器【问题】打造一个通用的Adapter,而不为是每一个ListView或GridView都重复写Adpater;【效果图】【分析】【解决方案】【使用方法】 private LouAdapter mLouAdapter; private void initView() { ListView lvM

2016-03-23 20:36:08 774

原创 【Android】动画 —— view高度渐变的动画

【关键词】Android 高度 动画【问题】实现可见度为 gone 的 view ,高度从0变化到测量的高度;如果view 可见度为 gone, 直接通过 view.getHeight();得到的是0;虽然可以通过一个固定值来设置高度,但是如果高度设置的不准就会存在适配问题(应该有一种方法在gone的情况下也可以获取到view的高度);【效果图】【分析】

2016-03-17 19:16:23 7897 1

原创 【Android】自定义View —— 水波纹

【关键词】水波纹 涟漪 自定义View【问题】通过自定义 View 实现点击时出现水波纹的效果;【效果图】【分析】按下时,获取当前触摸点的坐标;以当前触摸点(Action_down 和 Action_move)为圆心,不断画圆;按下时开始绘制波纹,且速度较慢;松开后加快绘制速度,直到结束;【解决方案】在 onDraw 中,不断地增加圆的半径,

2016-03-07 19:46:05 871 1

原创 【Android】更改 TimePicker 字体颜色

【关键词】TimePicker 样式 字体颜色【问题】如果 TimePicker 的字体颜色和 TimePicker 的背景颜色都是深色或都是浅色的时候,显示效果就不好了;【效果图】[更改前][更改后]【分析】通过查看源码可以发现:TimePicker 的上的数字属于 EditText控件,可以通过指定 EditText 样式

2016-03-07 19:43:39 5378

原创 【Android】EditText获得焦点以及失去焦点

【关键词】EditText输入法获得焦点失去焦点【问题】默认是居中显示且非编辑状态,点击 EditText后文字居左且显示编辑状态;编辑状态时, 点击屏幕其他地方,使其失去焦点;进入界面时 EditText 获取焦点问题(默认状态下不获取焦点);非编辑状态无底线,编辑状态有底线加以区分;【效果图】【分析】见源码及注释;【解决方案】

2016-03-05 23:06:49 10276 3

原创 【Android】启动时跳过欢迎界面的时机

【关键词】欢迎界面【问题】如果设置了欢迎界面,那么每次启动都会展示3s钟的欢迎界面,体验不太好;为了提高用户体验,如果程序刚启动过,只要没有进行清除后台的操作;那么就跳过欢迎界面;【效果图】【分析】启动程序后,Application 的onCreate()方法会调用一次,退出程序了之后,如果没有进行清除后台的操作,再次进入的时候不会再调用 onCreate()方

2016-02-26 19:38:00 4845

原创 【Android】进入应用和切换界面时闪屏的问题

【关键词】闪屏 切换界面【问题】从 launcher 中进入应用的时候,开始有一瞬间的空白,而不是直接展示背景;【分析】在绘制界面的时候,Android会先画背景,接着绘制其他区域(这个背景和 theme 有关);【解决方案】直接修改 theme 中的背景为 activity 的背景;在主题中,将android:windowBackground属性直接指

2016-02-26 19:37:31 9229

原创 【Android】使用技巧 —— 快速进入某一界面

【关键词】android技巧 导航【问题】开发一个比较大的应用的时候,可能只是负责某一个模块;如果这个模块层次比较深(点击多次才能进入),那么调试的时候,每次都点击那么多次,就会显得很难受;如果不符合进入自己负责的模块的条件,那么将无法进入到自己的模块中进行调试;有没有什么办法直接进入到自己的模块中呢?【解决方案】特性:一个应用可以有多个入口;给自己的模块里的 ac

2016-02-26 19:36:35 585

原创 【Android】自定义View —— 数字加减

【关键词】自定义View 数字【问题】给定最大值和最小值,点击“向上”按钮增加数字,点击“向下”按钮减少数字,超过最大值或最小值循环显示;长按按钮,开始自增或自减;非长按状态下拖动一定距离开始自增或自减;可以获取当前值;【效果图】【解决方案】见下面源代码;【代码】用法 xml android:id="@+id/nv"

2016-02-25 20:35:02 2177

原创 【Android】自动判断调试环境决定是否打印日志

【关键词】日志 调试环境【问题】打包后,忘记了设置LogUtil. DEBUG_MODE = false;,导致日志还可见,有没有什么办法自动判断运行环境来决定是否打印日志?【解决方案】eclipse特性:直接通过 eclipse 运行的时候,其 debug 属性为 true, 通过 eclipse 的导出功能打包时,其 debug 为 false;使用

2016-02-24 10:04:58 1218

原创 【Android】自定义view的模版

【关键词】自定义View 模版【问题】写一个自定义View的模板【注意事项】自定义View的时候,会遇到 padding 无效的问题,需要做特殊处理;【代码】 public class CustomView extends View {  private Paint mPaint; private FontMetricsInt mFontMetr

2016-02-24 07:01:40 473

shell脚本修改json中某个字段的值

shell脚本修改json中某个字段的值 - 思路:通过awk来找到旧数据,然后用sed来替换旧数据

2018-10-25

自定义View之钟表

通过自定义 View ,实现一个钟表; 难点主要在画刻度上,解决方案是画一次刻度后,通过旋转画布接着画下一个刻度.zip

2016-01-02

【jQuery】点击缩略图查看大图-imgbox

在网页实现这样的效果: 点击缩略图,在当前页弹出一个弹框,显示大图。

2015-09-10

空空如也

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

TA关注的人

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