- 博客(55)
- 资源 (3)
- 收藏
- 关注

原创 组件化开发Aroute原理简析
对组件化开发的基本认识中,各个模块之间的通讯方式明显不能满足项目需求,此时就需要一个通讯框架实现模块之间的通讯。框架的意义就在于实现解耦的前提下,能够让各组件之间完成通讯。所以简单学习了一个Aroute框架权当记录,错误的地方还请指正本demo设置了主程序和登录模块,一些基本的配置,例如library开关,manifest设置等本文就不再描述,直接简述Aroute的流程创建ArouteLibrary依赖库,让主程序和登录模块依赖此项目public class Aroute {// 存放key
2020-11-10 18:11:35
1481

原创 OKHTTP内部流程
最近无聊看了一下OKHTTP源码,大致了解了一下我们使用OKHTTP发送网络请求之后,内部都发生了什么。简单说一下哈我们正常发送一个get请求如下 OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder().get().url(url).build(); client.newCall(request).enqueue(new Callback() { @Override pub
2020-11-05 16:56:06
266

原创 我理解的Handler内部流程
线程/Handler/Looper/MessageQueue/Message之间的对应关系一个线程对应一个Looper,一个Looper对应一个MessageQueue一个线程可以对应多个handler,msg.target可以找到对应的handler。主线程的Looper和loop()启动主线程已经调用了Looper.prepareMainLooper(); Looper.loop();方法Looper.prepareMainLooper(); 创建了一个Looper对象,并与当前线程绑定
2020-10-30 12:00:37
218

原创 fori和foreach的区别
直接上代码ArrayList里边的foreach方法,归根结底还是调用了fori;在刚开始id时候expectedModCount = modCount,但是如果进行了增删操作,那么modCount就会发生变化,expectedModCount != modCount就会抛出异常了 @Override public void forEach(Consumer<? super E> action) { Objects.requireNonNull(action);
2020-10-29 16:07:00
3483

原创 我理解的安卓组件化开发
安卓组件化开发的意义当项目比较大需要多人协同开发的时候,组件化开发可以使大家分模块开发,并且不会互相影响。并且可以单独调试,不受其他模块制约。项目结构解析创建一个主应用,两个子应用(既可以做应用,也可以作为主应用的依赖),一个base库实现主应用和子应用的通讯。创建后项目结构如下统一项目编译版本gradle.properties文件设置统一版本 # 统一编译版本等信息 compile_Sdk_Version=28 min_Sdk_Version=15 target_Sdk_Versi
2020-10-28 12:01:19
223

原创 安卓线程池理解
线程池的使用场景在安卓开发中经常会遇到处理多张图片,或者分片上传等需要使用多线程的情况,如果简单的通过new Thread创建线程,会造成线程的频繁创建和销毁,占用大量的资源。并且频繁的调用GC机制,这会使性能降低,又非常耗时。常见的线程池分类最基本的ThreadPoolExecutor1 通过构造方法,创建最基本的线程池,这也是参数最多,允许用户自己设置ThreadPoolExecutor threadPoolExecutor=new ThreadPoolExecutor( 2,
2020-10-19 09:37:01
194
原创 Message: ‘chromedriver’ executable needs to be in PATH.
出现这个报错信息,原因是版本号不对应解决办法:安装与浏览器版本匹配的webdriver1、打开谷歌浏览器, 在地址栏输入chrome://version/查看版本信息:2、从http://npm.taobao.org/mirrors/chromedriver/下载版本3、将chromedriver.exe放到指定路径...
2021-10-19 14:18:35
589
原创 全国各地市乡镇数据
如题,java操作Excel,读取数据,写数据。参考博客地址:https://blog.youkuaiyun.com/cpcpcp123/article/details/82763937public class Excel { public static void main(String[] args) { try { //获取指定行的值 readSpecifyRows(new File("F:\\ry2.xls")); }
2021-04-15 11:43:30
470
原创 20201124java基础知识整理
JDK JRE JVM关系JDK是java开发工具包,包含java开发工具(编译工具javac.exe,运行工具java.ext)和JREJRE是java运行环境,包含JVM和java所需核心类库。只需要JRE就可以运行开发好的java程序JVM是java虚拟机,是虚构出来的计算机,是通过仿真各种实际计算机实现的。java的跨平台就是建立在jvm的基础上,任何平台只要装有针对该平台的虚拟机,就可以执行编译好的字节码文件。这就是“一次编译,多次运行”。java运行原理通过javac编译我们编
2020-11-20 18:37:09
367
原创 微信小程序常用功能所需条件整理
商户号开通:如果用户有商户号,请提供api、mchId和安全证书告知用户,如果商户号超过3个月没有流水记录,会被微信限制支付我们重新申请商户号时间约7个工作日(没申请过商户号,具体资料未知)微信商户号申诉时,有效期填写公司成立日期,不要写营业执照右下角日期(切记)小程序申请:名称需要微信认证后才能使用(用户可提供多个名字,看微信审核情况)修改名字需要300元认证费用(特殊词汇需要软著或其他证明文件,时间根据具体情况)需要营业执照、法人身份证正反面照片、公司对公账户和开户行信息(需要往微
2020-11-10 16:45:53
1354
原创 Android Studio通过无线的方式连接手机调试
查看当前连接的设备打开Android Studio的terminal工具,输入: adb devices指定端口输入命令adb tcpip + 端口号(端口号是随意指定的,只要不会冲突没有被占用。一般我们使用5555)连接手机输入命令adb connect+手机IP:端口号,显示connect to输出即为连接成功。即可直接操作了...
2020-11-06 14:06:59
617
原创 微信小程序 添加社交类目
微信小程序添加社交类目,需要上传《非经营性互联网信息服务备案核准》即icp备案文件可以通过https://beian.miit.gov.cn/#/search/info查询
2020-10-10 18:10:44
1861
原创 安卓 全屏模式下键盘遮挡底部输入框
废话不多说,直接上图显示bug,底部的输入框光标以下部分被遮挡了。查了很多资料,有说必须使用RelativeLayout的等等说法。一行行代码注释后发现是因为全屏的问题。找到问题就好解决了,贴出大神代码,侵删public class AndroidBug5497Workaround { // For more information, see https://code.google.com/p/android/issues/detail?id=5497 // To use t
2020-06-04 09:45:17
399
原创 NestedScrollView默认不在最上方
android.support.v4.widget.NestedScrollView嵌套RecyclerView时,会遇到不显示最顶端内容,需要给NestedScrollView的子控件设置属性android:descendantFocusability="blocksDescendants"
2020-05-26 16:11:49
1077
原创 Spring整合Mybatis
Spring可以存放我们的对象,Mybatis方便了我们与数据库交互。整合之后方便我们的开发Spring整合Mybatis步骤项目目录图导入依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc&l.
2020-05-15 17:06:46
265
原创 我的Spring入门(二) 代理模式
我对代理模式的理解工作中,公司祖传代码已经完成了所需功能,但是现在要求对所有的请求加日志。为了改动原有代码,避免出现不可预知的意外,就可以使用代理模式,也就是传说中的套娃娃。代理的实现方式首先来看基本需求//service接口public interface UserService { void add(String name); void delete(); void update(); void query();}//实现类public class Us
2020-05-15 16:18:34
155
原创 我的Spring入门
这里写目录标题我对Spring的理解依赖注入DIxml注入自动注入我对Spring的理解我理解的Spring相当于一个大容器,存储用户需要的对象。两个核心思想IOC和AOPIOC意思是控制反转,我的理解是在容器中放了各种各样的对象,这种思想的好处就是用户需要哪个对象,直接拿过来就能组装上。传统的思想是对容器中的对象按照需求进行更改,然后再组装。IOC的思想极大的方便了程序员的开发,只关注业务层,找到自己需要的组件就可以了。不需要根据用户需求频繁的修改组件AOP就是切片编程,可以在程序中加塞,做某种
2020-05-13 18:41:48
187
原创 我的Mybatis入门(四)整合Spring
为什么要整合Spring我的想法:Spring可以帮我们管理对象,方便我们开发整合步骤创建项目,引入jar包创建过程略,引入jar包如下图所示:基本配置创建User.class类public class User { private int id; private String name; private int age; //省略get set toS...
2020-04-26 11:37:24
153
原创 我的Mybatis入门(三)一对一和一对多查询
一对一查询(一个订单对应一个用户)修改Order.classOrder.class添加用户信息public class Order { private int id; private int userId; private int orderNo; private String address; private User user; @Override public St...
2020-04-24 18:23:27
239
原创 我的mybatis入门(二)
Mybatis中包装类的使用个人理解的包装类可以封装多个bean对象,在UserMapper.xml文件中统一写为parameterType=“QueryVo”,方便管理(菜鸟个人理解,欢迎大神指正、轻喷)Mybatis的if标签和where标签if标签对传递的字段进行条件判断(比如说传递的字段是否为null等)where标签在多条件判断的时候,以前都在where后边先写一个1=1,...
2020-04-24 11:15:02
147
原创 我的mybatis入门
#我对mybatis的理解##mybatis是干什么的?Mybatis是一个框架,对jdbc的数据库操作过程进行封装,开发者不必处理注册驱动、创建Connection等操作,只关注sql即可##mybatis工作原理通过xml将要执行的statement配置起来,通过java对象(UserMapper.java)和statement(UserMapper.xml)中的sql进行映射生成最终...
2020-04-23 10:37:00
173
原创 微信小程序scrollview不能横向滚动问题
.recommend { height: 158px; white-space: nowrap;}.recomitem { margin-left: 30rpx; display: inline-block;}recommend为scroll-view,recomitem为item的布局
2020-04-15 11:40:21
487
原创 微信小程序通过云函数调用安全api,实现敏感词校验
如题,话不多说,直接上代码1.首先需要在小程序中引入云函数框架1.1在project.config.json中添加设置,同时在小程序根目录新建cloudfunctions文件夹"cloudfunctionRoot": "cloudfunctions/"1.2在app.json中添加设置"cloud":true1.3点击云开发,开通云开发功能1.4填写环境信息...
2020-04-09 17:09:37
3140
原创 The specified child already has a parent. You must call removeView
binding.llGoods.removeAllViews(); for (int i = 0; i < entries.length; i++) { LegendEntry entry = entries[i]; View view = View.inflate(getActivity(), R.layout.item_g...
2019-11-25 16:13:16
154
原创 retrofit2注解笔记
@Multipart 支持文件上传,如果在文件上传的同时需要传递描述信息,如果使用@Filed 后台收到的字段会包括双引号,可以使用@Query,@Filed参数信息包含在请求体,@Query参数信息体现在url...
2019-07-16 16:56:21
246
原创 我理解的内连接和外连接
最近在学习mysql,查询的时候用到了内连接和外连接,记录学习内容,如有错误,请大神指正首先创建表,建立连接1.分类表create table category( cid varchar(32) primary key, cname varchar(100));2.商品表create table product( pid varchar(32) prima...
2019-06-26 15:44:18
324
原创 将Android Studio仿微信一键录制语音项目上传至github,并生成依赖
最近公司需要仿微信录制音频,一阵折腾之后大功告成,但是感觉很是麻烦,以后遇到这种需求还要重新复制代码很是麻烦。看到网上好多大神把自己的项目做成依赖包传到github,我等小白依赖之后就可以直接调用很是羡慕,学习笔记如下1.在project的build.gradle中添加buildscript { repositories { google() ...
2019-06-14 18:16:56
578
原创 pycharm上传代码到github
1.下载Git并安装,在pycharm中指定路径2.pycharm中登录github账号3.vcs将代码上传到github4.add5.更新和上传
2019-05-31 17:18:59
451
原创 pycharm里边导包失败问题
使用pycharm+scrapy写爬虫,原本打算在一个文件夹里边放几个爬虫1、爬虫2等好几个项目,遇到导包的时候一直报错。目录结构如下如果用itcastspider.itcastspider.items可以找到items文件,但是运行报错,提示没有itcastspider这个module。如果导包的时候删除第一个itcastspider可以运行,但是后边的ItcastspiderItem爆...
2019-05-30 16:06:27
1113
原创 安装scrapy出现error: Microsoft Visual C++ 14.0 is required
爬虫小白安装scrapy遇到error: Microsoft Visual C++ 14.0 is required.搜索Microsoft Visual C++ 14.0 发现是一个编辑器,感觉通过下载另一个编辑器来解决scrapy问题并不现实。后来发现是twisted问题,因为scrapy用的网络框架是twisted,然后就去https://www.lfd.uci.edu/~gohlk...
2019-05-29 16:14:37
178
原创 一个超好用的侧拉删除框架
感谢大神,赐给我力量implementation 'com.github.mcxtzhang:SwipeDelMenuLayout:V1.3.0'布局文件如下:<com.mcxtzhang.swipemenulib.SwipeMenuLayout xmlns:android="http://schemas.android.com/apk/res/an...
2019-05-24 14:18:02
800
原创 pycharm无法安装第三方库
今天用pycharm安装bs4的时候一直报错,retry几次之后报ssl出错,然后所有的第三方库都无法安装,但是当时一直在听歌就没意识到可能是网络问题。尝试了很多方法,1.升级pip工具2.下载beautifulsoup后使用Python命令安装等方法都不能解决问题。后来出现了浏览器不能上网,但是其他比如网易云音乐都能正常联网的情况,解决之后发现所有的第三方库都能正常使用了。操作方法为在int...
2019-05-23 18:17:49
1279
原创 Android studio中xml文件编写时,控件属性不提示问题
最近开发中突然遇到再写布局文件的时候,Android studio不提示控件的属性,很是不方便。好多网友说是省电模式、或者缓存之类的问题,都没有解决问题。最后到用户文件夹下,删除了.AndroidStudio3.2(不同版本文件夹不一样)问题解决了,只不过需要重新设置Androidstudio的一些背景、文字大小、插件。但确实还是能解决问题的,开发中遇到的小问题,权当记录。...
2019-05-07 10:38:30
3893
原创 Android studio中R文件报红,但是能编译运行问题解决
最近经常遇到R文件报红,不论是sync、clean、rebuild都不能解决问题。虽然能编译运行,但是看着一片报红心里还是很不爽。上网查了资料后发现,Android studio版本跟gradle版本不一致会导致报红。我目前用的是3.2版本,但是gradle用的是3.3.1版本,修改为3.2.1之后,报红问题解决。小问题权当记录dependencies { classpa...
2019-05-07 10:29:45
1469
原创 databinding使用过程中 Invalid byte 3 of 3-byte UTF-8 sequence.
databinding使用过程中设置text内容拼接字符串时遇到: Invalid byte 3 of 3-byte UTF-8 sequence.解决方法一:使用 `` 拼接字符串解决方法二:在gradle.properties中添加-Dfile.encoding=UTF-8最早使用第一种,但是遇到多次拼接仍会报错,使用第二种之后,目前未遇到报错...
2019-04-16 15:22:31
727
转载 滑动折线图
网上找到自定义viewpackage com.beijingyiling.ninglingpolice.widget;import android.content.Context;import android.content.res.Resources;import android.content.res.TypedArray;import android.graphics.Bit...
2019-02-15 15:35:54
356
转载 屏幕适配笔记
由于安卓是开源的,所以产生了各种各样的机型,屏幕适配问题随之而来。1.首先了解几个重要概念1.1屏幕尺寸/屏幕分辨率/屏幕像素密度屏幕尺寸:屏幕对角线长度,单位是英寸,1英寸=2.54厘米屏幕分辨率:屏幕纵横线上的像素点数,单位是px,1px=一个像素点屏幕像素密度:屏幕每英寸上的像素点数1.2dp/dpi/px/sppx:屏幕分辨率的基本单位,一般美工作图以px为单位...
2019-02-15 15:23:40
184
转载 box-sizing
box-sizing属性可以为三个值之一:content-box(default),border-box,padding-box。content-box,border和padding不计算入width之内padding-box,padding计算入width内border-box,border和padding计算入width之内,其实就是怪异模式了~...
2019-01-18 17:05:12
187
1
原创 微信小程序弹窗封装
初识小程序,好多功能都感觉新鲜。由于多个页面都需要弹窗,想着能不能跟安卓一样封装一个方法,所有都页面都能调用。记录如下:封装模块dialog.js// component/dialog/dialog.jsComponent({ /** * 组件的属性列表 */ properties: { content: { type: String, ...
2019-01-15 15:35:45
1277
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人