自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 SSM框架示例(适合新手)

当使用映射器时,你仅仅如调 用你的 DAO 一样调用它们就可以了,但是你不需要编写任何 DAO 实现的代码,因为 MyBatis-Spring 将会为你创建代理。MapperFactoryBean 创建的代理控制开放和关闭 session,翻译任意的异常到 Spring 的 DataAccessException 异常中。它一般对应我们的实体类所在的包,这个时候会自动取对应包中不包括包名的简单类名作为包括包名的别名。SSM采用注解的方式进行扫描,不需要写复杂的步骤,只需要用对象获取他的方法。

2025-02-03 14:08:32 643

原创 SSM 最简单的实现操作 多数据源&动态切换

/定义动态数据源,集成spring提供的AbstractRoutingDataSource,实现determineCurrentLookupKey。在spring容器中配置mapper的扫描器产生的动态代理对象在spring的容器中自动注册,bean的id就是mapper类名(首字母小写)指定lookupKey和与之对应的数据源,这里的key可以自行定义,要切换数据库的时候以key为标识,不要写错。指定扫描包的路径,就是mapper接口的路径,多个包中间以 半角逗号隔开。获取连接最大等待时间。

2025-02-03 14:06:50 941

原创 Python 在问答频道中刷题积累到的小技巧(六)_sum(map(lambda x (x

不要尝试计算7位以上的,太耗时了。

2025-02-03 02:33:46 550

原创 python 函数详解_def func(用法)

print(“Hello 大家好,我自我介绍一下,简单说两句:”)# type函数作用是检测变量的类型stu(“Liuying”, 18, “北京大通州区”, “wangxiaojing”, “single”)stu(“周大神”)复制代码Hello 大家好,我自我介绍一下,简单说两句:Liuying18北京大通州区singleHello 大家好,我自我介绍一下,简单说两句:周大神复制代码# 在函数体内对于kwargs的使用不用带星号。

2025-02-03 02:32:04 778

原创 OkHttp相关问题全解析

+,如此一来整个责任链就运行起来了。

2025-02-02 19:24:03 819

原创 okhttp execute流程解析

此处dispatcher就是存储和移除每个请求的地方,每次执行execute或者enqueue的时候dispatcher的功能都只是将请求添加到队列中,重点是上处的2 getResponseWithInterceptorChain 这个方法才是真正运行请求的地方。然后创建了一个 RealInterceptorChain,index是0, 此处是把okhttp的请求封装成一个个的数组链,一步步执行数组里面的链节点,这种封装很好的解耦了,各个模块的功能,还方便用户自定义链节点,处理网络访问中间的流程。

2025-02-02 19:22:12 329

原创 java中volatile关键字

然后线程2对变量进行自增操作,线程2也去读取变量inc的原始值,由于线程1只是对变量inc进行读取操作,而没有对变量进行修改操作,所以不会导致线程2的工作内存中缓存变量inc的缓存行无效,所以线程2会直接去主存读取inc的值,发现inc的值时10,然后进行加1操作,并把11写入工作内存,最后写入主存。然后线程1接着进行加1操作,由于已经读取了inc的值,注意此时在线程1的工作内存中inc的值仍然为10,所以线程1对inc进行加1操作后inc的值为11,然后将11写入工作内存,最后写入主存。

2025-02-01 17:44:53 837

原创 Java~面向对象编程多态的理解、抽象类、接口

5、JDK1.8新特性:接口当中可以有实现的方法 但是这个方法一定是被default修饰的。6、类和接口的关系:实现–》implements 可以实现继承多个接口。10、实现该接口的重写方法的时候,一定不能够省略public。== 接口和接口之前可以通过extends进行联系==4、在接口当中 不能够定义一个已经实现的方法。8、实现该接口 一定要重写该接口当中的方法。一个接口可以extends多个接口。9、接口仍然是不可以被实例化的。接口是不能被接口实现的。

2025-02-01 17:43:09 904

原创 Android Jetpack 之 Paging3的一些踩坑记录

主要配置一些基本的分页信息,其中部分信息例如页码、需要加载size等信息会在 PagingSource 的 load 方法中通过 LoadParams 传递过来。

2025-01-31 00:53:58 867

原创 Android IPC 通讯机制源码分析【下】

当Binder kernel接收到数据后,service_mananger线程的ThreadPool就会启动,service_manager查找到 CameraService服务后调用binder_send_reply,将返回的数据写入Binder kernel,Binder kernel。mHandle为0,BpBinder继续往下调用IPCThreadState:transact函数将数据发给与mHandle相关联的Service Manager Process。

2025-01-31 00:50:30 342

原创 初识哈希表【数据结构】

1.可以用一个数组保存若干个整数,拿着 n 在数组中依次遍历,进行比较 —2.可以用一个链表保存若干个整数,拿着 n 在链表中依次遍历,进行比较 —3.可以用一个二叉搜索树来保存这些整数,按照二叉搜索树的方式进行查找比较 —(比较理想的情况:OlogN)仍然创建一个 boolea 类型的数组,100个元素位置,初始情况都为 false现有数组:{9,5,2,7,3,6,8},将其插入到下标与自身值相等的位置上即:将本数组中的内容,转换为另一个数组的下标。

2025-01-30 03:07:25 935

原创 NIO之缓冲区【基础内容】

接下来我们先看下Buffer中提供的方法put方法'存取’也就将数据保存到缓冲区中及从缓冲区中取出数据,在Buffer类中并没有提供get和put方法,这两个方法在具体的Buffer子类中有提供,比如ByteBuffer.如下保存数据到缓冲区// 创建一个ByteBuffer,容量为10// 看一下初始时4个核心变量的值System.out.println(“初始时–>limit—>” + byteBuffer.limit());

2025-01-29 18:53:27 635

原创 Nginx实战操作-动静分离

这是因为nginx在处理本地资源的时候,会自动追加一个Etag(对象的标志值,就一个对象而言,文件被修改,Etag也会修改)和Last-modified(WEB 服务器认为对象的最后修改时间,比如文件的最后修改时间,动态页面的最后产生时间)头部信息,chrome在收到携带了这两个信息的资源并且在没有设置expires头部的情况下,会自动决定过期策略,chrome会保存这个过期策略,下次请求的时候会直接from memory cache。过期的:也就是陈旧的页面,当请求这个页面时,必须进行重新获取。

2025-01-29 18:51:23 904

原创 Jetpack Compose 架构如何选?MVP 、 MVVM 还是 MVI?

MVVM 的 ViewModle 中分散定义了多个 State ,MVI 使用 ViewState 对 State 集中管理,只需要订阅一个 ViewState 便可获取页面的所有状态,相对 MVVM 减少了不少模板代码。理论上可以,但是当 Activity 接收 Presenter 通知后,仍然无法在内部获取局部引用,只能设法触发整体Recomposition,这完全丧失了 MVP 的优势,即通过获取局部引用进行精准刷新。但在较复杂的项目中,跳转逻辑与页面定义应该尽量保持解耦,这更利于页面的复用和测试。

2025-01-29 12:04:30 584

原创 jetpack compose 开发架构选择探讨(一)

首先先实现下Content(jetpack compose提倡单向数据流,即将状态提升到Screen中,Content不包含状态,只是单纯的ui界面,便于测试,具体参考官方教程jetpack compose 状态Column() {然后我们分析下这个例子只有一个count 状态和add 操作,因此这样来实现viewModel,这里基于jetpack viewmodel和livedata组件来实现接下来我们就需要实现Screen,在Screen中将Content和ViewModel结合起来) {

2025-01-29 12:02:23 1005

原创 Android系统对话框

【代码】Android系统对话框。

2025-01-28 17:55:35 187

原创 android程序排序算法实现

std::cout<<i<<“路归并后的结果:”<<std::endl;根据pivot将数组分为两部分,左边小于pivot,右边大于pivot。if(rightChild==n)//只有左节点,没有右节点。while(rightChild<n)//左右节点都存在。//std::cout<<“构建的大顶堆为:”;根据增量,使用插入排序调整顺序。功能:将两个有序数组归并到一起。取头,中,尾三数的中值。自顶向下二路归并算法。**8、基数排序**

2025-01-28 17:53:34 552

空空如也

空空如也

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

TA关注的人

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