自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(126)
  • 资源 (1)
  • 收藏
  • 关注

原创 Systrace学习笔记

使用Systrace前提:Python 2.7.x;platform-tools(旧版带systrace.py)

2023-10-17 10:16:23 451

原创 Android Gradle下载慢

Android Gradle下载慢,修改settings.gradle.kts文件。在google()之前加。

2023-10-13 10:18:45 285

原创 PowerManagerServcie

PowerManager向应用提供了相应的接口,以供应用程序调用,应用可以调用PM的接口申请wakelock,唤醒系统,改变屏幕状态,屏幕亮度,或使系统进入睡眠等操作.PowerManager是PowerManagerService的代理类,PowerManager向上层应用提供交互的接口,具体的处理工作在PowerManagerService中完成。arch/xxx/mach-xxx/xxx.c 或者 arch/xxx/plat-xxx/xxx.c ----平台相关的电源管理操作。

2023-10-12 19:01:41 309

原创 安卓wakelock机制

当手机灭屏状态下保持一段时间后,系统会进入休眠,这时,Android系统中CPU会保持在一个相对较低的功耗状态,一些后台运行的任务就可能得不到正常执行,比如网络下载中断,后台播放音乐暂停等。WakeLock正是为了解决这类问题,应用只要申请了WakeLock,那么在释放WakeLock之前,系统不会进入休眠,即使在灭屏的状态下,应用要执行的任务依旧不会被系统打断。

2023-10-12 18:16:30 1056

原创 JPA---@Query

【代码】JPA---@Query。

2023-06-25 17:47:24 235

原创 MySQL业务练习

2)业务统计查询也按上述日期查询给统计日期和数量设置别名。3)把两个查询用左连接合起,没数量的日期填0。1)先查询指定日期范围的日期列表。

2023-06-23 18:56:16 62

原创 MySQL8数据迁移至MySQL5.7

mysql5.7不支持utf8mb4_0900_ai_ci字符集,编码格式也不是utf8mb4。

2023-06-02 16:30:21 980

原创 Vue常见问题

【代码】Vue常见问题。

2023-05-09 18:05:06 82 1

原创 antd 防止多次查询

【代码】antd 防止多次查询。

2023-04-06 18:31:06 275

原创 antd 开始时间<结束时间 结束时间>开始时间

【代码】antd 开始时间<结束时间 结束时间>开始时间。

2023-04-06 18:21:15 455

原创 JPA---Specifications

/ 查询单个对象 Optional < T > findOne(@Nullable Specification < T > spec);// 查询列表 List < T > findAll(@Nullable Specification < T > spec);// 查询全部,分页;

2023-03-20 20:48:51 3729

原创 Java8新特性

Stream允许我们以声明式的方式处理数据集合,可以将Stream看作是遍历数据集合的高级迭代器。Stream 与Lambda表达式结合使用,将使编码效率大大提高,可读性增强。Stream与IO中的是不同的概念操作案例:使用stream将集合中的手机按照序号num从小到大排序:Stream流的操作顺序Stream语法Lambda表达式是一个匿名函数,可以将Lambda表达式理解为一段可以传递的代码(将代码段数据一样传递)。使用Lambda表达式可以写出更简洁,更灵活的代码。

2022-11-07 11:51:31 1947

原创 如何保证数据库与缓存的数据一致性

数据不一致的情况:一、 线程A修改数据时,需先执行删除缓存操作二、其他线程只要在线程A删除缓存和执行update期间,查询数据库得到了旧的数据,此时就有极大的概率会出现数据不一致的情况。

2022-11-04 11:06:56 1325

原创 MySQL面试题

索引是有序的数据结构,这样查询,索引会失效,只有先查到a字段,才能查到a字段相同记录中b的排序情况。同理,对于(a,b,c)联合索引来说,查询(a,b)可以用到这个联合索引,但是查询(b,c)就没办法使用这个联合索引,因为b和c列的有序性都是依托于a列的存在的。多个字段建立组合索引时,查询时,必须出现组合索引中最左边的字段,否则这条语句不走索引。a字段是排序的,而b字段相对于a的同一个记录中,b是排序的。脱离了a字段,b就是1,2,1,4,1,2;而B+树支持范围查询。...................

2022-07-29 21:27:01 424

原创 关于 Object obj = new Object()

jvm遇到new指令,检查能否在常量池中定位到一个类的符号引用,检查这个符号引用代表的类是否已经经历类加载的过程,没有就执行类加载。内存分配完成后,jvm将除对象头之外的内存空间都初始化为零值,保证对象的字段可以不初始化直接使用。MarkWord=8字节,ClassPointer=4字节,ArrayLength=4字节。new一个长度为10的数组,一个元素的引用占4字节,所有元素引用一共占40字节。栈上的引用变量,是由JVM来实现访问对象的方式的。引用类型的变量默认开启压缩,压缩后是4字节。......

2022-07-20 11:48:47 1523

原创 线程之间如何交换数据?

实现了两个线程之间交换数据交换器类Exchanger没有其他线程与之进行数据交换,超时后抛出异常一个线程开始交换数据后,如果没有其他线程和它交换,就会一直阻塞,直到有线程交换、中断、超时等情况出现。阻塞…中断开启线程数据交换后,中断线程中断线程后,线程停止阻塞,结束运行十个线程之间是如何交换数据的?可以看到10个线程两两之间交换了数据如果9个线程之间交换数据,会发生什么捏?9个线程之间交换数据,有四对线程互换数据了,最后一个线程不参与交换...

2022-07-14 15:40:53 564

原创 OSI七层模型

HTTP 是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」HTTP:HTTPS:url:以 开头建立比HTTP复杂:三次握手之后,需要进行SSL/TLS的握手过程,才能进入传输过程解决了HTTP不安全的问题:在TCP与HTTP网络层之间加入了SSL/TLS安全协议,使得报文可以加密传输端口:443处于OSI中的传输层需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。概述:将数据、源端口、目的端口封装成数据包,不需要建立连接每个数据报的

2022-07-11 15:35:58 821 1

原创 关于对象创建的几个问题

1. new 关键字创建2. 克隆 clone3. 类名.class.newInstance()4. Class.forName(“全类名”).newInstance();5. 类名.class.getConstructor().newInstance();6. 反序列化对象的分配内存方式由采用的垃圾回收器来决定:因为指针碰撞是内存空间被划分为 使用区 和 空闲区 ,是经过压缩整理的空间,压缩整理是Serial、ParNew、Serial Old 、 ParNew Old 这些垃圾回收器的功能,使

2022-07-08 19:19:24 229

原创 ThreadLocal详解

线程本地对象,为每个线程提供一个独立的变量,和其他线程是隔离的,互不干涉的。ThreadLocal的简单使用:main线程没有对ThreadLocal变量操作,变量还是默认的0而其他两个线程都对ThreadLocal变量进行了修改但是修改只是线程自身使用的变量发生了变化,没有影响其他线程ThreadLocalMap的结构创建map的方法:get()方法setInitialValue()设置初始值remove()方法ThreadLocal内存泄漏问题为什么会有内存泄漏问题?首先T

2022-07-01 12:16:04 201

原创 数据库连接池的简单实现

将配置文件放在src目录下,将src的 修改为; 就可以通过properties.load加载进来了连接池中的连接对象连接池测试先创建了最小连接数的连接对象(5个)

2022-06-30 17:59:38 264

原创 JDBC常见面试题

允许程序重复使用连接池中的 ,而不是销毁原来的连接,再创建一个新的连接服务器启动时,创建一定数量的数据库连接Connection,统一管理起来(抽象出一个连接池的概念)。客户端需要连接时,从池中返回一个空闲连接,将其标记为忙没有空闲连接的话,就新建一定数量的连接(由配置参数)连接不再使用后,将其标记为空闲,其他线程可以使用该连接客户端请求的连接数超过了最大连接数量时,该请求会被加入到等待队列中…PreparedStatement接口继承了Statement接口都是通过Connection连接对象获取Sta

2022-06-30 14:01:32 345

原创 Servlet面试题

servlet初始化—init()方法①第一次创建Servlet时调用,只会执行一次初始化②默认是第一次处理请求时创建Servlet,也可以设置为服务器第一次启动时就创建Servletservlet处理请求:service()方法①处理来自浏览器的请求,将处理后的结果响应给浏览器②servlet接收到请求后,调用service方法来进行处理,service中针对不同的请求进行匹配,选择调用doPost或doGet等方法③在编写servlet时,需要实现doPost/doGet等方法se

2022-06-28 14:51:17 670

原创 Java的反射机制

Java反射是在程序运行的过程中:动态获取类信息、动态调用对象方法的功能就叫做Java的反射机制一个类被加载后,类的信息都会封装在Class对象里一个类在内存中只有一个Class对象Class 类什么类型可以获取Class对象 ?所有的类接口一维数组 这里一维和二维数组分开说,是因为一维数组和二维数组不是同一类型二维数组注解枚举基本类型包装类voidClass基本数据类型如何理解一个类型只有一个Class对象?数组也是引用类型,求数组的Class对象,只要是同

2022-06-25 18:00:49 155

原创 String面试题

String底层是一个final修饰的char数组,private修饰的属性不能被外界访问,我们无法改变它,也无法影响String的值初始化的String的地址不能改变,但是地址中的内容可以改变这个final修饰的char[] value 不是不可变,数组是引用类型,fianl修饰的引用类型不能指向其他引用,但是本身是可以修改的因此只要可以访问到String的value数组,就能达到修改String的目的通过反射可以获取到String的私有属性value观察输出,字符串a已经通过反射拿到value数

2022-06-23 17:56:58 244

原创 操作系统与Java中线程状态的区分

类内部维护了一个枚举类State,包含了Java线程的6种状态其中的RUNNABLE包括了运行状态与就绪状态创建了一个线程,还没有执行start()方法。此时线程状态是NEW调用的start(),这个线程会执行它的run()方法,此时进入RUNNABLW状态在进入synchronized代码块/方法 时,如果线程没有获取到对应的monitor锁,就会从Runnable运行状态进入Blocked阻塞状态只有通过synchronized会进入阻塞Blocked。对于其他锁(ReentrantLock等),如

2022-06-22 18:19:12 436

原创 MySQL高级部分( 四: 锁机制、SQL优化 )

MySQL高级部分 四: 锁机制、SQL优化 锁机制SQL优化锁机制SQL优化

2022-06-21 17:39:00 588

原创 BFS与DFS

BFS与DFSBFS:(Breadth-First-Search )广度优先搜索,使用队列实现,寻找最短路径DFS:(Depth-First-Search) 深度优先搜索,使用递归实现,快速发现底部节点BFS:DFS:BFS应用:树的层序遍历:队列DFS:深度优先,树的中序遍历(以及前序,后序)图中的BFS和DFS待补充…...

2022-06-18 15:46:07 73

原创 Java中除Map实现类之外可以存储K-V的类

SimpleEntry可以存储单键值对,一个对象只存储一个键值对SImpleEntry的使用构造方法赋值可以修改对象的值应用:需要单键值对存储的场景LeetCode102 二叉树的层序遍历SimpleImmutableEntry初始化后就不能再修改,修改会报错初始化后不能修改...

2022-06-17 18:00:57 658

原创 SpringMVC请求处理流程

springMvc中的前端控制器 (Front controller)用来接收请求,转发请求,响应结果减少了其他组件之间的耦合度处理请求时,会调用doService方法2.HandlerMapping 处理器映射器根据用户请求的URL,返回给DispatcherServlet一个处理器执行链(里面封装了拦截器和处理器),这样前端控制器就可以知道将讲求发送到哪将处理器包装成了适配器,可以支持多种类型的处理器(是适配器模式的应用)经过HandlerMapping处理找到...

2022-06-16 14:20:09 248

原创 Java的对象克隆

在浅克隆中:源对象和克隆对象的成员变量指向相同的内存地址直接重写Object的clone(),会抛出异常正确用法:1.先实现实现Cloneable接口,再重写clone()方法测试作为属性的类(没有重写clone方法)被克隆的类(重写了clone方法)测试两个对象关联的同一个Address对象,Address修改了,克隆对象的信息也发生了变化在深克隆中,无论源对象的成员是基本类型/引用类型,都会复制给克隆对象也就是在深克隆中,对象和所有成员都会被克隆而在浅克隆中,只会克隆对象和基本类型成

2022-06-13 17:48:41 2372

原创 面向对象设计原则、Java设计模式

2. 依赖倒置原则:程序要依赖于抽象接口,不依赖与具体实现。3. 单一职责原则:4. 里式替换原则:5. 迪米特原则:6. 接口隔离原则:2.Java 设计模式概述设计模式根据工作类型可划分为:创建型模式、结构性模式、行为型模式设计一个类时,让他只能创建一个对象(节省资源,保证数据一致性)单例模式需要实现的功能单例实现:单例类一加载,就创建了对象,在调用方法之前就存在对象懒汉式单例:类加载时,并不会去创建对象,只有第一次访问时,才去创建,存在线程安全问题解决懒汉式单例线程

2022-06-13 15:36:19 167

原创 Spring知识补充

BeanFactory是spring中的原始Factory,不支持扩展AOP,Web等spring插件需要获取bean对象时,才开始创建(延迟初始化)ApplicationContext5个大步骤细化步骤对象实例化属性赋值初始化操作Bean创建完成放到容器中,可以使用,直到应用程序上下文被销毁如果Bean实现了接口,或 配置了 ,会调用destory()方法销毁Bean对象不一定:有状态单例Bean(存储数据的单例bean)才会存在线程安全问题有状态的单例Bean会存在线程安全问题@Controlle

2022-06-10 15:13:39 113 1

原创 Java框架--spring(四、事务管理、事务传播、spring整合mybatis)

事务:看作一次对数据的若干操作组成的一个序列,是一个整体的过程,要么成功要么都不成功(转账)JdbcTemplate默认使用jdbc的事务,提交事务,自动的(执行完自动提交)spirng中提供了事务管理注入TransactionTemplate事务管理对象,在提交事务or回滚事务时,用代码实现声明式事务是基于AOP实现的,本质是对方法前后进行拦截有xml和注解两种实现方式配置事务管理器基于xml实现基于注解实现在service层控制事务事务传播一个事务方法被另一个事务方法调用时,该方法如

2022-06-05 20:07:06 196

原创 并发编程之线程池ThreadPoolExecutor

当前线程数达到maxinumPoolSize时,新的任务会被采用拒绝策略处理构造方法中handler参数是指定拒绝策略AbortPolicy:抛出异常CallerRunsPolicy:线程池未关闭 -> 在调用者线程中运行当前任务(如任务在main线程中,就由main线程去执行)DiscardOlddestPolicy:丢弃等待时间最长的任务DiscardPolicy:直接丢弃,不做处理使用new创建的新对象,将引用指向一个变量,该变量是指向新对象的一个强引用只要强引用对象是可触及的->就

2022-06-05 18:52:28 268

原创 JVM学习笔记:垃圾回收机制

运行的程序中没有任何引用指向的对象若不及时回收清理,垃圾对象所占空间一直得不到释放,可能最终导致OOM内存溢出引用计数算法(Reference Counting)对每个对象保存一个整形的引用计数器,记录对象被引用的情况对于obj对象优点:缺点:也叫根可达算法、根搜索算法可达性分析算法和引用计数算法相比较:先建立一个GCRoots的概念思路:总结:虚拟机栈、本地方法栈、方法区、字符串常量池等对堆空间进行引用的都可以作为GCRoots进行可达性分析优点:效率高,不产生内存碎片缺点:需要2倍的空间在新生代中

2022-06-04 21:18:35 172 1

原创 Java高并发-学习笔记 上

并发编程并行与并发多线程多线程优点多线程带来的问题?JMM(Java内存模型)硬件设备之间的速度差异带来的问题?JMMJVM 主内存与工作内存并发编程核心问题--可见性,原子性,有序性可见性缓存不能及时刷新导致了可见性问题。有序性原子性线程切换带来的原子性问题并行与并发单核 cpu 下,线程实际是串行执行的。操作系统中有一个组件叫做任务调度器,将 cpu 的时间片,分给不同的线程使用,只是由于 cpu 在线程间(时间片很短)的切换非常快,人类感觉是同时运行的。 总结为一句话就是:微观串行,宏观并行,

2022-06-04 19:49:26 142

原创 JVM学习笔记:三 本地方法接口、执行引擎

执行引擎是JVM的核心组成部分之一JVM将字节码装载到内存,字节码不是可执行的机器码,需要经过执行引擎将字节码解释/编译为对应平台上的机器指令。执行引擎在JVM中扮演一个将高级语言翻译为机器语言的角色JIT即时编译器是Java后来有的,原先就是解释执行JVM会针对使用频率较高的热点代码进行编译,缓存到方法区,执行效率高JIT编译器编译过程需要时间,但是执行效率高。程序一启动,解释器马上响应,去解释执行。将两者结合,JVM启动后,先通过解释器解释执行代码,之后使用编译器编译执行。采用解释器和即时编译器并存的

2022-06-02 16:38:42 184

原创 深入了解HashMap的底层原理

HashMapJDK 1.7常量结构Entry结点put方法1. 初始化JDK 1.8常量put方法jdk 1.8 中 HashMap的改动JDK 1.7常量 /** * 默认初始容量,必须是2的次方树 1<<4 左移四位,2^4=16 */ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 /** * 隐式指定了更大的容量,使用最大值:2^3

2022-05-31 18:23:50 108

原创 windows安装多个版本jdk如何切换?

windows安装多个版本jdk如何切换?windows安装多个版本jdk如何切换?1. 配置JAVA_HOME2. 配置CLASSPATH3. 配置Path切换jdkwindows安装多个版本jdk如何切换?1. 配置JAVA_HOME配置多个版本的JAVA_HOME配置JAVA_HOME为%?%,?为设置的jdk对应的JAVA_HOME变量名2. 配置CLASSPATH在变量CLASSPATH中添加.%JAVA_HOME%\lib%JAVA_HOME%\lib\tools.jar

2022-05-29 15:21:51 458

原创 Java中如何让一个集合不可改变?

Java中如何让一个集合不可改变?Java8及之前:Collections工具类中提供的方法:unmodifiableXXX()示例:源码:Java9 XXX.of()Java8及之前:Collections工具类中提供的方法:unmodifiableXXX()方法参数列表功能unmodifiableList()unmodifiableList(List<? extends T> list)返回指定list的不可修改视图unmodifiableMap()un

2022-05-27 17:00:24 465

IDEA中 springboot项目的pom.xml 的 插件安装报错 解决

解决: 找到本地maven仓库 mavenRepository\org\springframework\boot 替换maven插件 这个文件夹

2022-01-01

空空如也

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

TA关注的人

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