Java
【Android】通过grantRuntimePermission、revokeRuntimePermission获取和回收运行时权限
需求:不需要用户点击允许按钮直接获取READ_PHONE_STATE等权限分析:因为用户可以在手机中通过打开设置-应用-选择具体应用-权限界面,手动打开用户所需要的权限(界面效果如图),我就想我怎么样可以在代码中模拟点击按钮打开权限的操作,于是我就去查看源码。 第一步:通过adb shell dumpsys activity | grep "m
如何处理Mysql死锁
如何处理Mysql死锁 学习改变命运,技术铸就辉煌。 大家好,我是銘,全栈开发程序员。 Mysql 死锁问题是众多开发人员和 DBA 无法避开的挑战, 那今天我们就来聊一聊 Mysql 死锁的问题。 什么是数据库死锁 当不同的事务在获取资源的时候互相等待,导致数据库操作无法继续执行。这就是死锁,那数据库系统就会自动中断其中的一个事务,以解除死锁。 在数据库中,事务可以分为读事务和写事务。读事务
CGI、FastCGI和PHP-FPM的关系
参考: https://baijiahao.baidu.com/s?id=1636573471105531342 https://www.jianshu.com/p/80e46a80fdbd https://www.zhihu.com/question/30672017 CGI、FastCGI和PHP-FPM的关系 CGI:公共网关接口(Common Gateway In
分享uniapp移动端和h5项目如何使用谷歌地图
项目背景 使用 uniapp + vue2 开发的国外类地图 APP,原本是打算使用 uniapp 打安卓包的方式,最后由于种种原因变成在安卓壳子里使用 webview 的套壳 APP,所以最终效果其实是跟 h5 的一致。 两种路子都试了,中间踩了非常非常非常多的坑!但是不管怎样,最终能上线成功,所以汇总一下我的血泪经验。 注意:使用google map的时候需要使用科学的方式上网,大家自备哈
Spring事务状态处理
Spring事务提交后执行:深入理解和实践 在Java开发中,Spring框架的事务管理是一个核心概念,尤其是在企业级应用中。理解和正确使用Spring事务对于保证应用的数据一致性和稳定性至关重要。本文将深入探讨在Spring中事务提交后的执行逻辑,这是一个经常被忽视但又极为重要的部分。 事务的基础 在深入讨论之前,我们先简单回顾一下Spring事务的基本概念。Spring通过声明式事务管理来简化
【解决方案】Error running,Command line is too long
一、现象 IDEA 提示 Error running,Command line is too long 二、原因 Java 命令行启动举例如下图,当命令行字符过多的时候,就会出现 Error running,Command line is too long 的问题 三、解决思路 上图是最终解决方案,下文会再次出现。现在主要是讲解 none、JAR manifest是什么原理。 none: 就
arthas热更新class
安装和启动 下载 https://arthas.aliyun.com/doc/download.html 解压 arthas的zip 热更新代码 找到项目进程号 ps -ef | grep Project 返回 2222 启动并选择jvm进程 java -jar arthus-boot.jar jad反编译代码,另存为.java 文件 jad --source-only com
Spark版本不兼容导致Standalone集群无法连接问题
一、Spark版本不一致报错现象 当使用client模式连接Spark的standalone集群时,报错所有的spark master的节点都没有回应。 二、问题排查思路 通过client端的日志产看没有什么有价值的信息,需要看下spark端的master的日志,docker logs spark-master 产看docker容器spark-master的日
Selenium Grid4.0 - 多台计算机上并行运行
前言 当你希望在多台计算机上并行运行测试?Selenium Grid可以帮你实现。 官方文档原文:https://www.selenium.dev/documentation/grid/getting_started/ Selenium Grid允许通过将客户端发送的命令路由到远程浏览器实例,在远程机器上执行WebDriver脚本。 Grid 可以做那些事? 1.提供一种在多台机器上并行运行测试
[代码随想录] 第四天
19.删除链表的倒数第N个节点https://leetcode.cn/problems/remove-nth-node-from-end-of-list/ 思路:使用前后指针,当删除倒数第N个节点时,快慢指针之间应该间隔N个元素,当快指针到达链尾时,慢指针next指向所要删除节点。 时间复杂度:O(N) ------------------------分割线-------------------
2024-个人职业生涯规划
2024-个人职业生涯规划 一、认识自我 1.个人基本情况 我叫刘海涛,今年22岁,大四,就读于石家庄铁道大学软件工程专业。我来自一个普通的农民家庭,父母都是农民,他们对于我所学的专业以及未来的发展方向并不能给予指引,但是他们最大限度的尊重我的选择。在业余时间,我喜欢阅读、运动以及一个人静静的呆着思考。阅读不同的书籍可以给我带来不一样的思考,也会让我在没有经济能力去见识更多样的世界的年纪想象着未来
春眠不觉晓,Java数据类型知多少?基础牢不牢看完本文就有数了
文编|JavaBuild 哈喽,大家好呀!我是JavaBuild,以后可以喊我鸟哥!俺滴座右铭是不在沉默中爆发,就在沉默中灭亡,一起加油学习,珍惜现在来之不易的学习时光吧,等工作之后,你就会发现,想学习真的需要挤时间,厚积薄发啦! 我们知道Java是面向对象的静态型编程语言,在Java的世界里万物皆对象。但我认为是万物皆数据,世界由各种各样数据构建起来,我们通过程序去实现数据的增删改查、转入转
Spring表达式语言(SPEL)学习(03)
rootObject 在表达式中直接写name和getName(),这时候Expression是无法解析的,因为其不知道name和getName()对应什么意思 当表达式是基于某一个对象时,我们可以把对应的对象作为一个rootObject传递给对应的Experssion进行取值 设置上下文 通过指定EvaluationContext我们可以让name和getName()变得有意义,指定了Ev
【JVM】记录一次线上服务频繁FGC的排查过程
一.背景 最近在Grafana关注到线上推送服务push-service在运行一段时间后,内存占用非常高,并且频繁发生FGC,这里记录下问题排查过程 二.排查过程 推送服务主要作用为,消息推送,因此JVM内存这里分配的是 Xmx 和Xms 均为2G 1. 首先在Grafana上的监控指标,可以看到FGC非常频繁,一小时内发生了多次FGC 2.进
第二章 Spring Boot 整合 Kafka消息队列 生产者
系列文章目录 第一章 Kafka 配置部署及SASL_PLAINTEXT安全认证 第二章 Spring Boot 整合 Kafka消息队列 生产者 第三章 Spring Boot 整合 Kafka消息队列 消息者(待续) 前言 &n
Java小细节之缩进中if 和else的对应关系
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.print("请输入数字:"); int n = in.nextInt(); System.out.print("请输入分数:")
【JProfile】JProfile工具
一.背景 本篇文章主要介绍JProfile工具的使用 这里有几个问题先抛出来 1.JProfile是什么? --是一个商业授权的Java剖析工具,由EJ技术有限公司,针对的Java EE和Java SE应用程序开发的 2.JProfile具备哪些功能 --2.1本地会话的实时分析(重要) --2.2远程会话的实时分析(重要) --2.3离线分
socket(四)Android与socket与LED灯
socket(四)Android与socket与LED灯 Android界面设置 由于该项目只完成最简单的LED点灯,所以这里粗略布置一个LED灯开关的按钮即可 <Switch android:id="@+id/LED" android:layout_width="wrap_content" android:layout_height="
安装npm install报错npm ERR! code ETIMEDOUT npm ERR! errno ETIMEDOUT npm ERR! network request to https://registry.npmjs.org/webpack-subresource-integrity failed, reason
执行命令:npm run dev 启动前端项目报如下错误,vue-cli-service是Vue一个启动的插件,需要安装 执行npm install安装vue-cli-service报错,根据提示可知链接超时: 执行npm config set registry https://registry.npm.taobao.org切换镜像后再次执行npm inst
从Bitcask存储模型谈超轻量级KV系统设计与实现
Bitcask介绍 Bitcask是一种“基于日志结构的哈希表”(A Log-Structured Hash Table for Fast Key/Value Data) Bitcask 最初作为分布式数据库 Riak 的后端出现,Riak 中的每个节点都运行一个 Bitcask 实例,各自存储其负责的数据。 抛开论文,我们先通过一篇博客 # Bitcask — a log-structured
SpringCache教程
前言 极大地简化了程序员对于cache的操作流程,可以使用拒接方便的实现,支持redis,Caffeine,Memcached等不同的缓存框架。 相关注解 名称 解释 @Cacheable 主要针对方法配置,能够根据方法的请求参数对其进行缓存 @CacheEvict 清空缓存 @CachePut 保证方法被调用,又希望结果被缓存。与@Cacheable区别在于是否每次都调用方
2024源码开篇--Springboot自动装配原理,看完不会来打我!
前言 在Springboot的自动装配令开发人员减轻了大量的配置负担。 那么什么是自动装配? 自动装配就是在Spring启动过程中,装载了必要的Bean,以方便在开发的时候调用,而不用开发人员自己配置。 下面是一个Spring的启动类: @SpringBootApplication public class LasSystemApplication { public static voi
.NET中使用HtmlSanitizer来有效的防范XSS攻击!
0X00 前言 随着互联网的发展,网络安全问题越来越受到关注。XSS攻击作为最常见的网络安全漏洞之一,对企业和用户的信息安全构成严重威胁。.NET开发人员可以使用HtmlSanitizer来有效防范XSS攻击,确保网站的安全性。 HtmlSanitizer是一个.NET开源库,用于从可能导致XSS攻击的构造中清除HTML片段和文档。 它使用AngleSharp来解析,操作和渲染HTML和CSS。从
我开源了一个 Go 学习仓库
目录前言一、综述1.1 Hello Word1.2 命令行参数1.3 查找重复行1.4 GIF 动画1.5 获取一个URL1.6 并发获取多个URL1.7 实现一个 Web 服务器1.8 杂项二、程序结构2.1 名字2.2 声明2.3 变量2.4 赋值2.5 类型声明2.6 包和文件2.7 作用域三、基本数据类型3.1 整数3.2 浮点数3.3 复数3.4 布尔量3.5 字符串UnicodeUTF
Mybatis之TypeHandler使用教程
引言 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。 1、typeHandles的基础
Java日期时间处理详解
Java中SimpleDateFormat、LocalDateTime和DateTimeFormatter的区别及使用 在Java的世界里,处理日期和时间是常见的任务。尤其在Java 8之前,SimpleDateFormat是处理日期和时间的主要方式。然而,Java 8引入了新的日期时间API,其中LocalDateTime和DateTimeFormatter成为了新的选择。本文将探讨这三者的区别