- 博客(39)
- 收藏
- 关注
原创 从record类型 思考 Java反射、内省、序列化、反序列化
从Java14中的新特性record出发,针对Jackson序列化反序列化,BeanUtils类型转化;以及相关底层支持反射、内省进行简单说明;一方面描述了record时怎么序列化和反序列化的另一方面也对Jackson进行简单了解
2024-06-12 11:51:39 912 2
原创 xxl-job的使用
调度中心和执行器是分开部署的,调度中心和执行器需要使用相同的accessToken否则执行器无法注册到调度中心中调度中心部署的过程中需要生命数据库相关信息不同执行器微服务的appname不能相同在调度中心进行配置执行器代码的过程中可以使用到依赖注入等spring 特性执行器的具体执行工作可以使用自身业务逻辑+openfeign的形式进行实现。
2024-06-01 12:58:59 940
原创 Android ViewPager2 + FragmentStateAdapter 的使用以及问题
主要讲述了viewPage2嵌套使用过程中的一些问题以及导致这些问题的原因,总结起来无非以下几点:- viewPage2销毁fragment后依旧会持有其对象信息,并标记在adapter中的mFragments中,在后续复现时不会再进行对象的创建- 将Binding设置成null并不一定会导致viewPage2的重绘,其依旧可能保留自己原始数据。- viewPape2在进行setAdapter方法的过程中会将自己持有的fragment对象标记信息设置到FragmentStateA
2024-05-28 23:27:14 3567
原创 Android 设置头像 - 裁剪及圆形头像
通过裁剪和圆形头像的实现更加深入的对ActivityResultLauncher进行了学习,并在实现的过程中对Intent有了更加深入的思考,如果本文内容存在问题欢迎各位大佬进行斧正。总结本文内容。Ucrop工具实现图片裁剪Intent系统默认裁剪实现类intent深入思考Gilde圆形图片的实现。
2024-04-28 22:44:34 1623 4
原创 Android 设置头像 - 相册拍照
registerForActivityResult()是startActivityForResult()的替代,简化了数据回调的写法。并且目前在新版本的Android开发中,官方建议弃用startActivityForResult()方法。因此本demo的实现过程中将采用registerForActivityResult进行实现。
2024-04-27 21:36:22 1345 5
原创 android studio 安装lombok插件
由于 AS 不是基于 IDEA release 版本进行开发的,因此lombok对idea的插件可能再as中无法查看到。因此再as中通过plugins管理无法安装lombok插件。这就导致再gradle引入lombok后,虽然编译可能会通过,但是代码在查看的过程中会报红。
2024-03-19 18:11:02 873
原创 drawableRight 点击事件
方法将获取到drawableRight的空间域,需要说明的是该方法是以drawableRight左上角作为原点计算的。Android组件并未直接提供drawableRight的点击事件,可以通过setOnTouchListener实现针对其的点击事件。event.getX()获取点击位置相对于点击的空间的左上角原点的x轴坐标。
2024-03-05 10:18:52 316
原创 xxl-job 任务调度搭建及简单使用
xxl-job中存在调度中心和执行器两个概念,其中调度中心负责定时调度,执行器负责具体的执行工作。调度中心本质上就是一个spring boot项目。在使用xxl-job时在调度中心配置调度规则及执行内容,然后再在执行器中实现具体的执行作业。本demo中在调度中心配置每隔一分钟执行一次,执行的具体内容为调用某个service的方法,在执行其中需要实现service的具体方法。
2023-09-04 14:25:48 684
原创 RabbitMQ 消费者
消费者就是针对某个队列进行消息监听和消息消费的。消费者消费消息存在拉模式和推模式,推模式的是使用场景相对比较多。为确保消息被合法的消费,RabbitMQ提供了消费确认机制,投递的消息并不能被理解完成了消费,仅消费者确认消费该消息才会被移除队列。默认的消息投递机制时轮询,轮询的消息分发并会关系消费者的性能以及消息积压的问题,因此需要限制每个消费者所能保持的最大未确认的消息数量。
2023-08-23 08:32:15 1742
原创 Android 设置头像 - 权限申请
在Android原生态开发过程中,往往会设计到用户头像的设置问题,一般来讲设置头像需要用到拍照、获取照片、存储照片、裁剪照片、显示照片等问题,本文将一步一步的进行说明讲解。首先需要强调几点我在开发过程中遇到的问题。权限问题,在Android6.0以后,Android的权限获取不再是通过AndroidManifest.xml文件中声明获取,为了安全行,APP获取Android的高位权限需要动态获取。系统权限默认是禁止的,需要申请。动态申请权限的说明见该文章调用顺序问题,在开发过程中一定要注意代码的.
2023-08-09 22:42:09 925 1
原创 RabbitMQ 事务
就像我们了解的MySQL中的事务一样,RabbiMQ的事务也具备原子性和一致性,并且RabbiMQ的事务是针对消息从生产者发送到RabbitMQ中提供的支持,因此不同事务可以同时给同一个队列发送信息。可通过channel.txSelect,channel.txCommit,channel.txRollback三个方法实现事务机制。它们分别对应开启事务,提交事务以及事务回滚。
2023-08-05 23:33:36 843
原创 RabbitMQ 备份交换机、死信交换机(延迟队列)、优先级队列
为处理生产者生产者将消息推送到交换机中,交换机按照消息中的路由键即自身策略无法将消息投递到指定队列中造成消息丢失的问题,可以使用备份交换机。为处理在消息队列中到达TTL的过期消息,可采用死信交换机进行消息转存。通过上述描述可知,备份交换机和死信交换机处理的场景不同。备份交换机是处理未被路由的消息,死信交换机是处理队列中过期的消息。但是,它们都是为了避免消息丢失提供的一种手段。
2023-08-03 23:47:40 849
原创 RabbitMQ 过期时间(TTL)
TTL,Time to Live的简称,即过期时间,RabbitMQ可以对消息和队列设置TTL。RabbitMQ支持设置队列的过期时间和消息的过期时间。如果设置队列的过期时间则队列中所有的消息都有相同的过期时间。如果设置消息的过期时间则每条消息的过期时间则可以不同。如两个方法一起使用,则消息的TTL取最小的数值为重。消息在队列中的生存时间一旦超过了TTL值,则会变成,死信消息将被从原有队列中移除。
2023-08-02 23:29:44 1835
原创 RabbitMQ 生产者-消息丢失 之 场景分析
RabbitMQ中生产者消息丢失大致可以分为:RabbiMQ服务器消息不可达,交换机不存在,无法匹配队列和消息过期丢失集中场景,本文针对各种场景进行了测试模拟。
2023-08-02 22:37:41 1491
原创 Fragment + viewModel 导致onChanged方法多次调用
Fragment + viewModel 导致onChanged方法多次调用
2022-03-09 23:07:25 1099
原创 Android:设置头像
该文章讲述了Android原生态开发过程中设置用户原型头像的实现过程。主要使用到技术有:Android原生态开发、CircleImageView圆形图片视图、Crop裁剪工具等。1.业务介绍业务具体流程可以分为一下几个过程:1.用户点击进行圆形头像设置,可以选择拍照设置和从本地选择图片进行设置两种设计方案。(一下以拍照设置为例进行说明)2.调用手机相机进行拍照3.获取拍照照片后调用Crop工具进行照片裁剪。4.将照片资源添加到CircleImageView视图中。下面将对整个过程进行详细讲.
2021-10-30 20:05:56 2850
原创 spring boot启动时异常:Field xxx in xxxx a single bean, but 2 were found
当在使用spring boot开发的过程中,通常需要实现control层,service层,dao层。其中service层的实现使用@service注解,dao层的实现使用@mapper或者@mapperscan注解。当调用时使用@Autowired注解。当我们使用 接口 + 实现类的方式实现service层时,只需要在实现类上增加@service注解,正常情况下spring boot的bean容易只应该保存一个该类型的bean实例。在control层可以进行一下调用: @Autowired pr.
2021-08-02 16:43:00 836
原创 Android 项目运行网络操作提示Failed to connect to /192.168.43.59:7990
该错误的提示原因是:Android客户端链接不到指定ip的服务器。遇到该错误的情况是:客户端链接服务器进行网络通信。该错误的产生原因:1.服务端程序运行的电脑防火墙未关闭2.客户端和服务器端程序运行在同一网络环境下3.模拟器原因4.客户端IP设置问题解决方法:1.确保客户端和服务器运行在同一WIFI下2.查看IP是否填写错误,注意Android端的IP不能填写localhost或127.0.0.1,需要通过命令提示符—命令ipconfig查看主机使用的局域网ip地址3.确认服务端防火墙处
2021-03-09 19:51:11 19468 3
原创 一个好看的Dialog样式实现,仿IOS
消息对话框在实现Android原生态开发的过程中是十分重要的。该篇文章将讲述仿IOS的消息对话框的实现。具体代码来源于网路(忘记了具体文章来源)。实现效果如下图: 该消息对话框的实现主要使用到了listview和Dialog。当点击某个按钮时,弹出Dialog,Dialog上的view由listview实现。这样就实现了一个灵活的可复用的工具Dialog。具体代码如下。首先给出X
2021-03-07 11:33:28 665
原创 Android textview字体设置
设置textview中显示文本的字体。在main下创建asset类的文件夹,并创建fonts文件夹,在fonts文件中添加字体样式(**.ttf)。详细过程:1.创建asset文件:2.创建fonts文件夹(也可以叫别的名字)3.在activity中加入以下代码((TextView)findViewById(R.id.author)).setTypeface(Typeface.createFromAsset(getAssets(), "fonts/english.ttf"));//"fon
2021-01-19 18:39:54 1266
原创 websocket jquery的实现
该过程的教程比较多,不再赘述,直接上代码:$(document).ready(function(){ $("#create").click(function(){ alert("createDocumentFragment") ws = new WebSocket("ws://127.0.0.1:7990/websocket/test/123"); //ws = new WebSocket("ws://baiyang/websocket/t
2020-12-21 19:46:51 3983
原创 webSocket Spring boot实现
websocket是全双工、长连接的网络通信协议,通过websocket可以实现即时通信,服务器推送消息给客户端等业务情况。spring boot实现websocketspring boot框架是为我们提供了实现websocket的方法的,在该过程中大概可以分为三步。引入依赖配置websocket编写websocket的相关逻辑控制首先我们需要在pom文件中添加如下依赖: <!-- 引入websocket --> <dependency> <g.
2020-12-21 19:42:34 804 1
原创 微信小程序:获取用户手机号
在某些业务情况下,微信小程序开发者需要获取到用户的手机号,微信小程序官方为我们提供了该方法。 获取手机号的开发过程可以分为三部分:微信前端设置,微信js文件编写,服务器端程序开发. 其中微信前端最为简单,在获取手机号的过程中我们必须经过用户授权,在wxml文件中加入如下代码://声明了一个按钮,当用户点击该按钮后将进入授权界面,用户允许系统获取手机号后,js的getPhoneNumber将接受到用户手机号的.
2020-12-09 20:45:26 4855
原创 微信小程序:登录
微信小程序之登录 在使用微信提供的相关功能之前小程序需要进行登录操作,通过登录操作可以换取openId和session_key。其中openId是微信官方为每个使用者提供的唯一标识符,session_key被使用于加密相关操作。 微信小程序针对登录过程给出了比较完善的说明,如下图:  
2020-12-09 20:18:25 463 2
原创 Jquery 判断html元素背景色
获取元素属性和设置元素属性在使用jquery过程中可以通过对元素对象的css方法对该元素的样式进行设置和获取。使用方法如下://获取元素的背景色var color = $(元素名称).css("background-color") ;//设置元素的背景色和元素的颜色$(元素名称).css({ background: '#fff', color: '#73767e' });通过jquery设置元素的其他样式同上面的使用方法。判断元素的背景色在某些业务常见下我们需要判断元素的颜色属性。如果你调
2020-12-09 18:32:23 2000
原创 Android开发:dataBinding
dataBinding的介绍DataBinding 是 Google 在 Jetpack 中推出的一款数据绑定的支持库,利用该库可以实现在页面组件中直接绑定应用程序的数据源。使其维护起来更加方便,架构更明确简介。也就是说dataBinding是model和view之间信息交互的一种桥梁。通过dataBinding可以方便的更改获取view控件中的数据信息,除此之外,通过dataBinding可以绑定方法。dataBinding的使用dataBinding的使用很是方便,大致可以分为三个步骤。1
2020-09-11 14:48:22 347
原创 Mysql&Mybatis使用技巧
MySQL1.通过SQL语句规范时间格式:select DATE_FORMAT(t.startTime,"%Y-%m-%d %H:%i") AS startTime,DATE_FORMAT(t.endTime,"%Y-%m-%d %H:%i") AS endTimefrom table
2020-07-16 09:09:54 325
原创 Eclipse使用debug调试
设置断点双击行头进行设置断点,可以设置多个断点。debug运行主要窗口Debug窗口显示当前线程方法调用栈,及方法执行到第几行Variables显示当前方法的局部变量,非静态的变量等,可以修改变量值Breakpoints可用来新增和删除断点等Console控制台用于查看打印的日志信息快捷键F8 表示当前继续执行代码,直到遇到下一个断点F5 表示进入当前方法内部,一步一步执行F6 表示运行下一行代码,执行当前行,但不进入执行细节F7 表示退出当前方法,返回到调用层...
2020-06-02 15:53:02 229
原创 Android AlarmManager(闹钟服务)
AlarmManager主要是用来在某个时刻运行你的代码的,即时你的APP在那个特定 时间并没有运行!还有,从API 19开始,Alarm的机制都是非准确传递的,操作系统将会转换闹钟 ,来最小化唤醒和电池的使用!Timer类Timer类可以帮助我们实现定时器的功能,但是在Android开发过程中,由于Android系统自身的资源节省策略,设备会自动的让CPU进入休眠状态。而Timer的运行是实时需要CPU提供支持的,因此Timer在开发Android中长时间的任务时就显的并不是那么合适了。Alar.
2020-05-29 18:03:05 606
原创 Lombok在eclipse中的使用
Lombok的下载与安装 Lombok下载可以去maven工厂下载,我们所需要的大部分jar包都可以在这里下载:https://mvnrepository.com/search?q=lombok 注意:Lombok的jar包并不是build path后就能使用,它是需要安装到eclipse中的插件。 安装方法比较简单,双加jar包会出现以下运行情况:点击Specify location,选中你eclipse的安装路径,然后点击Install/Update就可以了。它会自动的配置ec...
2020-05-23 15:42:37 4848
原创 及时通信(三)
在Android及时通信的开发过程中,设计到用户接受消息是否立刻查看的问题,当用户立刻查看便不需要提示用户未读信息,完成以上需求需要用到广播机制。
2020-05-20 21:09:18 332
原创 白盒测试
白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。六种覆盖标准发现错误的能力呈由弱到强的变化:语句覆盖: 每条语句至少执行一次。在代码中只包含if而没有对应的else时测试用例可能只考虑执行if的情况。判断覆盖: 每个判定的每个分支至少执...
2019-06-09 16:34:17 4613
原创 jdbc连接mysql数据库
连接mysql数据库过程:1.加载JDBC数据库驱动程序2.建立与指定数据库的连接3.将创建数据库操作对象用于执行SQL语句4.处理执行结果5.释放资源1.加载再eclipse建立的项目的根目录下新建libs文件夹,将下载的mysql-jdbc(可以从官网下载)放入libs中,在eclipse中刷新项目,会出现libs文件,右键里面的jdbc,点击bulid path。效果如上...
2019-05-21 15:18:21 169
原创 JDBC的使用
JDBC1.与一个数据库建立连接2.向已连接的数据库发送SQL语句3.处理SQL语句返回的结果JDBC的常用接口1.通过java.lang.Class类的静态方法:forName(String className);加载要连接的数据库的Driver类,该方法的入口参数为要加载Driver类的完整包名。MySQL的驱动程序类名:com.mysq.jdbc.DriverClass....
2019-05-20 20:55:24 309
原创 java 集合
集合在java类库中,集合类的基本接口是Colloction接口。这个接口中有两个基本方法:public interface Colloction<E>{boolead add(E element);\\向集合中添加元素Iterator<E> interator();\\返回一个实现了Iterator接口的对象,可以使用这个迭代器对象依此访问集合中的元素}思考...
2019-05-11 17:57:52 1848
空空如也
spring security 6 授权码模式
2023-01-20
TA创建的收藏夹 TA关注的收藏夹
TA关注的人