- 博客(89)
- 资源 (41)
- 问答 (1)
- 收藏
- 关注

原创 那些工作带来的人生启示
那些编程带来的人生启示文章目录那些编程带来的人生启示当你手里只有一个锤子的时候,你眼里的任何东西看起来都很欠锤。一旦你在某一领域学会了以某种方式看待问题,在正常情况下,你就会很容易地以这种方式去思考其他领域的所有问题。我整理总结一下这些年工作与生活映射的一些感悟,还请给为多多指教。三天不念口生,三天不练手生。这句话适应于生活中大部分场景。一个时刻只专注做一件事,对提高生产...
2020-03-09 10:10:14
623

原创 洗碗风波·Kotlin函数委托
像往常的任何一天一样,晚饭后又该洗碗了,妻子对着桌上的残局心中无限惆怅。谁吃饱饭不想舒舒服服的躺下来休息休息!七八年了,丈夫家务基本不干,望着丈夫连绵不绝此起彼伏的饭桶肚,妻子委屈极了。于是妻子将洗碗任务交给了丈夫,不等丈夫反应,转身溜回到卧室休息。一脸惊愕的丈夫也懒散惯了,哪里经得起折腾,又吸了2根烟,望着门缝里正在写作业的儿子发呆。良久,丈夫嘴角一翘:任务又由丈夫转交给了儿子。基于以上场景...
2020-03-07 12:51:43
220
原创 Gradle遇到Kotlin
文章目录在Java项目中使用Gradle在Java项目中使用GradleGradle是一个强大的编译构件工具,它可以方便的为项目测试、编译、打包、发布等操作。下面讲解最简单的使用Kotlin编译一个Java项目。步骤一:打开IDEA,新建-Gradle-Java,完成新建。步骤二:将build.gradle文件改名为:build.gradle.kts重启当前项目。步骤三:...
2020-03-11 15:59:25
1426
原创 Kotlin·递归与尾递归优化
Kotlin递归与尾递归文章目录Kotlin递归与尾递归递归概念用途运用缺点尾递归优化概念递归概念简单的来说递归就是一个函数直接或间接地调用自身,是为直接或间接递归。用途数据的定义是按递归定义的。(Fibonacci函数,n的阶乘)问题解法按递归实现。(回溯)数据的结构形式是按递归定义的。(二叉树的遍历,图的搜索)运用// 阶乘fun factorial(x: Int...
2020-03-10 13:01:51
490
原创 Java Set讲解
Java HashSet讲解Set集合用于存放无序的,不重复的元素。HashSet类是Set接口的实现类,使用Hash值来决定集合内部存放的位置。HashSet使用equals()对比元素,当equals()返回true,HashCode也相同,则不接受新元素,反之则允许其放入集合中。//类A的equals方法总是返回true,但没有重写其hashCode()方法。public clas...
2020-03-09 11:05:38
359
原创 Java·Collection内部细剖
1. Java·Collection内部细剖文章目录1. Java·Collection内部细剖1.1. 大纲1.1.1. Collection1.1.2. Iterable1.1.3. 集合1.1.3.1. Set1.1.3.1.1. HashSet1.1.3.1.1.1. LinkedHashSet1.1.3.1.2. SortedSet1.1.3.1.2.1. TreeSet1.1.3.1...
2020-03-08 20:41:02
398
原创 Java生产者-消费者-仓储 模型
Java生产者消费者模型文章目录Java生产者消费者模型介绍理解规则分析预备知识代码实现思路实现总结介绍理解现有如下需求,需要用Java实现以下操作流程:多个蛋糕师生产蛋糕,多个消费者消费蛋糕;蛋糕的最大仓库是固定的蛋糕以先进先出原则出售,先生产的蛋糕先被出售,后生产的蛋糕后出售若要实现这个过程,要借助Java线程的并发写作来做。生产着消费者模型,完整称作生产者-消费者-...
2020-03-08 12:05:21
1163
原创 JAVA语言基础-进制概述与转换
在工作近两年后,我决心重新学习以下JAVA,从JAVA的最基础开始学习,有道是:学而时习之、又有言:温故而知新,可以为师矣。我想我可以在这些基础当中,领悟更多在工作中忽略的知识。1byte = 8bit 1k = 1024bit 1M = 1024k 1G = 1024M 1T = 1024G
2020-03-07 16:59:57
178
原创 Android中View的测量
测量模式可分为以下三种1.EXACTLY:即精确值模式,当我们将空间的width或height制定为具体值 ,或者为match_parent时,此时将占据父容器的大小,使用的就是EXACTLY。2.AT_MOST最大值模式,当空间的宽高属性制动为自适应wrap_content时,控件大小一般随着空间的子空间或内容的变化而发生改变,此时View的尺寸只要不超过父控件允许的最
2020-03-07 16:58:58
240
1
原创 常见的面向对象设计原则-单一职责原则(Single Responsibility Principle)
常见的面向对象设计原则1. 单一职责原则 SRP一个类应该仅有一个引起它变化的原因。2. 开放关闭原则 OCP一个类应该对外扩展开放,对修改关闭。3. 里氏替换原则 LSP子类型能够替换掉它们的父类型。4. 依赖倒置原则 DIP要依赖于抽象,不要依赖于具体类,要做到依赖倒置,应该做到:* 高层模块不应该依赖底层模块,二者都应该依赖于抽象。* 抽象不应该依赖于具体实现,具体实现应...
2020-03-07 16:57:36
211
原创 设计模式-策略模式
#策略模式模式的定义策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。注:针对同一类型操作,将复杂多样的处理方式分别开来,有选择的实现各自特有的操作。模式的使用场景针对同一类型问题的多种处理方式,仅仅是具体行为有差别时。需要安全的封装多种同一类型的操作时。出现同一抽象多个子类,而又需要使用if-else 或者 ...
2020-03-07 16:57:27
126
原创 设计模式-简单工厂模式
#简单工厂接口接口是一种特殊的抽象类,跟一般的抽象类相比,接口里的所有方法都是抽象方法,接口里的所有属性都是常量。也就是说接口里面只有方法定义没有任何方法实现。接口的思想是"封装隔离"简单工厂示例代码:https://github.com/GeniusVJR/DesignMode_Java/tree/master/SimpleFactory客户端在调用的时候,不但知道了接口,同时还知...
2020-03-07 16:57:01
133
原创 设计模式_观察者模式
观察者模式首先在Android中,我们往ListView添加数据后,都会调用Adapter的notifyDataChanged()方法,其中使用了观察者模式。当ListView的数据发生变化时,调用Adapter的notifyDataSetChanged函数,这个函数又会调用DataSetObservable的notifyChanged函数,这个函数会调用所有观察者(AdapterDataS...
2020-03-07 16:56:48
120
原创 基于Okhttp3做的封装+性能优化
文章目录基于Okhttp3做的封装+性能优化基于Okhttp3做的封装+性能优化package dev.ksc.okhttp;import android.content.Context;import org.jetbrains.annotations.NotNull;import java.io.File;import java.io.IOException;import ...
2020-03-07 16:43:25
5259
原创 MaterialDesign材料设计核心UI组件
文章目录材料设计核心UI组件过渡布局CoordinatorLayout(ViewGroup)AppBarLayout(LinearLayout)CollapsingToolbarLayout(FrameLayout)一般搭配效果:Toolbar(ViewGroup)NestedScrollView(FrameLayout)菜单控件TabLayout(HorizontalScrollView)Nav...
2020-03-07 11:52:17
888
原创 对于重复性工作带来的一些思考
对于重复性工作带来的一些思考做Android软件开发久了,有时候会发现应了一句话曾经有过一段时间,我一直陷入了这样迷茫的状态:难道我以后就只会复制粘贴做这些重复性的工作了吗?后来,我开始焦虑,惆怅,借打游戏烧愁。我暂时放松下来了,但当我停下来的时候,焦虑仍然会肆无忌惮的席卷我内心。人在过得不顺的时候会回忆往事,所以我就翻到了几年前QQ空间的一条说说我仿佛抓到了救命的稻草,是的,我重新...
2020-03-01 18:16:47
1813
原创 设计模式-Builder模式
#Builder模式模式介绍模式的定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。模式的使用场景相同的方法,不同的执行顺序,产生不同的事件结果时;多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时;产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效能,这个时候使用建造者模式非常合适;Android源码中的模式实现在And...
2019-12-06 10:15:10
169
原创 一些常用的第三方混淆链接
记录一些常用的官方最新第三方混淆链接1.通用模板# entity-keep public class com.xxx.xxx.entity.** {public void set(**);public *** get*();public *** is*();}#1.基本指令区-optimizationpasses 5-dontusemixedcaseclassnames-...
2019-09-23 12:25:01
448
原创 5G未来-畅想篇
5G未来-畅想篇文章目录5G未来-畅想篇前言过去现在将来云游戏:手机云系统5G云服务 :前言前几天,和同事H君聊起了5G的发展。他认为互联网发展已经到了瓶颈,5G技术即使再普及,对我们也不会有太大的影响。包括看视频无须缓冲,即点即播,下载数据也大大提升,仅仅如此。我几乎是最早体验和使用移动互联网的那一批。对于移动互联网,我想了很久,我不同意H君的观点,真正的5G时代不应该局限于此。...
2019-09-06 18:34:26
3425
原创 设计模式-单例模式
设计模式-单例模式文章目录设计模式-单例模式概述定义使用场景:概念小结演示部分概述所谓设计模式,是一代代伟大的程序员在编写代码时,不断的发掘、积累、总结的23种模式。在编写代码的同时,如果不懂设计模式,很容易到达瓶颈,完成的代码不符合预期的质量。而设计模式恰好可以在编写代码的同时,根据需求完 成质量更好的、更高效 的代码。对于设计模式的历史,已经有大量资料可供查阅、了解。本章将对设计模式...
2019-08-26 11:58:13
159
原创 记录自己经常使用的AndroidStudio插件
Git指令与GitHub上值得关注的项目文章目录Git指令与GitHub上值得关注的项目1.git的常用指令2.一些常用的Git习惯的指令3.进阶指令4.GitHub上值得Star的项目1.git的常用指令mkdir test(创建文件夹test)cd test(切换到test目录)touch (创建a.md.md文件)2.一些常用的Git习惯的指令git config -...
2019-08-02 12:31:50
165
原创 直播蓝牙开发的爬坑全过程,快来看看吧
直播蓝牙开发的爬坑全过程 2018年3月,我正式接手了公司委派的新项目。在项目中,我负责蓝牙开发部分,需要与硬件对接。当我开发完毕后,在测试的过程中发现了一些问题:产生的问题该蓝牙模组在某些低端手机上很难搜索到,即使搜索出来,连接也不稳定;在读取一些特性的时候,返回给我的包长度不固定,比如回复的长度为15位,有时会分为2包,有时候会分为3包返给我;响应的时间较长,有时发送一条协...
2019-08-01 16:30:24
375
原创 Android Edittext中大小写替换等操作
Android Edittext中大小写替换等操作在Android EditText中大小写替换的方法在Android EditText中大小写替换的方法复制这段代码到idea里.import android.text.method.ReplacementTransformationMethod;/** * @author kowal * @date 2019/7/16 * @ti...
2019-08-01 10:54:50
426
原创 一个多图上传功能的案例
一个多图上传功能的案例如图])特别感谢以下作者提供了这么棒的开源框架@googlesamples@trello@JakeWharton@bumptech@zhihu@li-xiaojun名称地址easypermissionshttps://github.com/googlesamples/easypermissionsrxlifecycleht...
2019-07-31 16:02:31
272
原创 transformClassesWithRetrolambdaForDebug的解决方案
今日开发时候发现gradle编译不通过,报错如下:Error:Execution failed for task ':app:transformClassesWithRetrolambdaForDebug'.> Process 'command 'C:\Program Files\Android\Android Studio\jre\bin\java.exe'' finished ...
2018-03-07 12:30:21
2581
2
原创 在项目中逐步加入Kotlin代码 -> 基本点击事件与跳转
在项目中逐步加入Kotlin代码-> 初衷:学习Kotlin有一段时间了,想逐步运用到项目中去在项目逐步加入的时候,发现了很多以前自己没有注意到的细节导致开发受阻多练习,加深印象将自己Kotlin的历程记录下来给同样遇到问题的同学参考最重要的一个问题是,在自己遇到坑的时候,查看别人的博客,基本都是复制粘贴抄袭别人的博客,最恶心的是,抄袭的博客没有写具体,很多流程都没有写完就...
2018-03-05 15:19:37
743
原创 Android高德地图之多InfoWindow
最终效果:生成marker并显示详情 由于不能上传2M以上的截图,只录了重点,废话不多讲,速度上车。 Marker表示为地图上的一个点,一个Point,我们可以在这个Marker做各种各样的操作包括,拖动,获取地理坐标,反编译地址等等。现在,我们要将Marker添加到地图上,并达到图上的效果。在官方论坛上看到很多人不知道如何实现多InfoWindow的方法,基于此,我决定写一篇关于实现多Info
2017-12-09 20:15:42
7655
19
原创 Android一款可定制的日历控件
继上文我们继续撸代码,本文与高德地图扯不上关系,只是我项目中用到的,希望分享出来给各位使用,对此不感兴趣的可以直接跳过看我的下一篇文章。最终效果图1:选择日历选择日期,其中有下标的日期是有数据的,点击显示当天地图上的数据 效果图2: 生成marker并显示详情 由于不能上传2M以上的截图,只录了重点,废话不多讲,速度上车。传送门:https://github.com/957919019/Sup
2017-12-09 17:42:49
589
原创 Android高德地图之定位
继上文我们继续撸代码,读完本文你将不用看官网代码,直接拷贝至项目即可完成高德至地图定位。最终效果图1:选择日历选择日期,其中有下标的日期是有数据的,点击显示当天地图上的数据 效果图2: 生成marker并显示详情 由于不能上传2M以上的截图,只录了重点,废话不多讲,速度上车。定位需要加上dependencies compile 'com.amap.api:location:latest.
2017-12-09 16:30:25
800
原创 Android高德地图之基础
最终效果图1:选择日历选择日期,其中有下标的日期是有数据的,点击显示当天地图上的数据 效果图2: 生成marker并显示详情由于不能上传2M以上的截图,只录了重点,废话不多讲,速度上车。 - 申请账号 http://lbs.amap.com/dev/index 建议使用公司提供的账户注册开发者 - 获取签名 一般情况下,我们有两个签名,一个debug版本的,一个是正式版的,d
2017-12-09 15:24:34
517
原创 解决Fragment使用Toolbar后菜单不加载的问题
项目有需求,要在Fragment里加入Toolbar,但实现起来发现菜单不加载,查阅了一些资料后发现需要在OnCreate里加入如下代码:setHasOptionsMenu(true);但是运行后发现还是没有加载。 进入该方法看源码:public void setHasOptionsMenu(boolean hasMenu) { if(this.mHasMenu != hasMen
2017-12-09 14:28:21
1542
原创 手把手教你完成App支付JAVA后台-微信支付JAVA
上篇我们记录了手机端的微信支付的大致流程,期间可能会遇到各种各样的错误,但这些问题没有得到官方的重视,所以我们只能一步步自己排查,要有足够的耐心。这篇内容看标题已经很明确了,由于微信是用xml通讯的,所以这一点比较恶心,各位可能需要在项目里导入一些解析xml的包。 首先放出工具类(包含支付宝用到的工具类),因为现在csdn下载都是扣积分的,因为工具类代码会在文尾贴出。 工具类下载:点击这里首先我
2017-12-09 12:54:18
48334
27
原创 手把手教你完成App端-微信支付Android
在开始之前,我想先对各位没做过微信支付的人吐槽一下,——————–微信支付是我这辈子用过最难用,文档最烂,技术支持最恶心的第三方支付,没有第二。———–希望没有吓到各位,但它真的是太烂了,每年还收300的服务费,真是太差劲了,Demo和文档都是三四年前的,真的是店大欺客。废话不多讲,首先放一波官方的支付流程图,还是那句话,一定要认真看流程图,这样对你业务逻辑的处理有很大的提升。 知道了支付的大致流
2017-12-09 12:33:30
13074
4
原创 手把手教你完成App支付JAVA后台-支付宝支付JAVA
接着上一篇博客,我们暂时完成了手机端的部分支付代码,接下来,我们继续写后台的代码。后台基本需要到以下几个参数,我都将他们写在了properties文件中:支付宝参数AliPay.payURL = https://openapi.alipay.com/gateway.do 商户公钥 AliPay.publicKey = xxx // 支付宝公钥 AliPay.appId = xxx //A
2017-10-23 16:20:54
19073
30
原创 手把手教你完成App端-支付宝支付Android
博客停更了好几个月,这段时间由于生活上的琐事不断,静不下心来写,前端时间公司给了2个月完成一个类似携程的软件。而我作为公司的主力,在经历了一系列难题以后,我认为第三方支付的流程,应该做一下记录。因为它真的坑太多了。本文将会把大多数代码上传至GitHub上,当然,我希望在这之前,认真的看一遍支付流程。申请1.申请开发者账号,https://b.alipay.com/signing/authorized
2017-10-23 14:21:49
7306
原创 JAVA发送接收MQ代码示例
上几篇关于MQ的博客里,并没有介绍的透彻,今天我把用到的类整理到里一起,集成了监视、查找、发送、接收、保存报文的功能。首先,新建TemoteTest类申明: private static MQQueueManager qMgr; // 队列管理器名称 private static MQQueue qQueue; // 消息通道 private static String Q_M
2017-04-16 13:06:11
21464
原创 JAVA监视某文件夹并对文件夹里的文件做操作
在项目测试的时候,有一个需求,需要频繁的将报文丢到通道测试结果,因此写下了这个方法再此做记录原理:使用线程反复监控桌面的temp文件夹,如果此时有文件为xml被丢进来,就将xml放入流中并将它发送出去,这里用到了自定义过滤,使用很简单一看就懂。最后,将temp的文件删除掉。这样测试起来,已经非常方便了。public class Listener{ public static String
2017-04-16 12:27:25
2926
原创 JAVA去重复字符串
private static String ss(String name) { String[] str = name.split(","); if (str.length == 0 ) { return null; } List<String> list = new ArrayList(
2017-04-16 12:10:53
6157
原创 JAVA保存文件
/** * 保存文件 * * @param content * 报文 * @param suffix 后缀 */ private static void saveToXml(String content, String name, String suffix) { FileWrite
2017-04-16 12:08:43
3611
原创 使用JAVA代码发送MQ消息
这一节介绍使用JAVA发送文本内容至MQ中 首先新建一个项目,导入必要的包,我记得,必要的包有6个,后来用了maven,我就把本地的删了,测试的时候,可以把jar全部丢进去,在MQ安装目录有个JAVA——lib文件夹,里面就是用到的架包了。 新建类RemoteTest 其他都我就不写了,稍后在文尾给个下载地址供大家参考。 /** * 初始化 */ privat
2017-04-16 12:04:12
11239
1
Android保存搜索历史
2016-11-28
BaiDuMapDemo(marker).rar
2016-11-12
ProducerCustomer.zip
2020-03-08
UploadPicDemo.rar
2019-07-31
mongoTemplate排序:A字段不存在则使用B字段排序
2021-11-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人