Java
多线程系列(十八) -AQS原理浅析
一、摘要 在之前的文章中,我们介绍了 ReentrantLock、ReadWriteLock、CountDownLatch、CyclicBarrier、Semaphore、ThreadPoolExecutor 等并发工具类的使用方式,它们在请求共享资源的时候,都能实现线程同步的效果。 在使用方式上稍有不同,有的是独占式,多个线程竞争时只有一个线程能执行方法,比如 ReentrantLock 等;有
Vue3 组合函数 element-plus table数据滚动播放
Vue 滚动播放组合函数 import { onMounted, onUnmounted } from "vue"; export function createScroll(tableRef) { let timer = null; function startScroll() { const table = tableRef.value.layout.table.refs;
css 闪烁 左右摆动效果
代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style> </style> </head> <body>
Android开发:homo计算器
引言 由于众所周知的原因,Homo一词包括在年轻人的群体中广泛传播,本人在看到网上一项目后非常感兴趣,并将其封装成.apk格式的homo calculate应用,可以将不过长的数字转化成114514的数字计算组合,效果如下: 简陋的主界面 简单的计算 用1验证计算正确性 实现过程 一、写Java代码 首先放上大佬的GitHub地址:https://github.com
07-ElementPlus组件库
ElementPlus 简介 ElementPlus是饿了么团队研发的,基于Vue3的组件库 准备工作: 创建工程化的Vue项目 选择 TypeScript 参照官方文档安装ElementPlus组件库(当前工程的目录下) main.ts中引入Element Plus组件库 参照官方文档 复制组件代码,调整 常用组件 Button组件 对应的代码: plain 控制背景
01-Ajax&Axios
Ajax Asynchronous Javascript And Xml 传统的请求方式: URL地址栏 超链接 form表单 通过JS代码 window.open(url) document.location.href = url window.location.href = url 缺陷: 页面全部刷新,用户体验较差 用户体验不连贯 概述 Aj
js实现大文件分片上传
一个上传组件,需要具备的功能: 需要校验文件格式可以上传任何文件,包括超大的视频文件(切片)上传期间断网后,再次联网可以继续上传(断点续传)要有进度条提示已经上传过同一个文件后,直接上传完成(秒传) 前后端分工: 前端: 文件格式校验文件切片、md5计算发起检查请求,把当前文件的hash发送给服务端,检查是否有相同hash的文件上传进度计算上传完成后通知后端合并切片 后端: 检查接收到的hash是
力扣刷题笔记-23 合并k个升序链表
找对象是找绝对盟友 学习了这个算法之后,对于链表更加理解了一些。 链表的理解 链表的数据结构就是数据+指针,数据是int,String等类型,指针是什么?指针就是他自己这种类型的节点,直接指向下一个。 而我们在说,“给定一个链表”,实际上给的是一个头节点。这道题涉及到优先级队列,给定的参数是List lists,按照我以前对链表的理解,我就认为lists里面的每个元素都是一个完整的链表。 看完这个
阿里二面:如何定位&避免死锁?连着两个面试问到了!
在面试过程中,死锁是必问的知识点,当然死锁也是我们日常开发中也会遇到的一个问题,同时一些业务场景例如库存扣减,银行转账等都需要去考虑如何避免死锁,一旦线上发生了死锁,那可能年终不保。。。。。下面我们就来聊一聊死锁如何定位,以及如何避免。 什么是死锁 死锁(Deadlock)是指在操作系统里,两个或多个并发线程在执行过程中,因争夺资源而造成的一种互相等待的现象,且无外力干预的情况下,这些线程都无法进
aardio 背景透明的3种方式(透明窗体1 webview2,透明窗体2-win-region-bitmap,透明窗体3-winform-transparent-color)
3种透明模式 我给起个名字,也好记忆。 透明模式1:浏览器模式 透明模式2:位图遮罩模式 透明模式3:背景透明模式 aardio 背景透明的3种方式(透明窗体1 webview2,透明窗体2-win-region-bitmap,透明窗体3-winform-transparent-color) 3种透明窗体,主要分成是否可以穿透,遮罩组件,全部显示。 透明窗体1 webview2 优点:可以用ht
在Java中如何通过优化代码来节省内存
Java 程序的一个常见问题是高内存使用率,这会导致性能问题甚至崩溃。因此,需要使用内存节省技术来优化 Java 代码并减少内存使用非常重要。 选择正确的数据类型: 使用适当大小的数据类型可以避免不必要的内存浪费。例如,如果你知道一个整数的取值范围在-128到127之间,那么使用byte类型而不是int类型会更节省内存。 对于浮点数,如果精度要求不高,可以使用float而不是double,因
vue使用Echarts常见警告处理方法
【警告一】[ECharts] DEPRECATED: textStyle hierarchy in label has been removed since 4.0. All textStyle properties are configured in label directly now. 这个警告信息是因为你在使用 ECharts 时,使用了旧版本的配置方式,即在 label 的配置项中使用
开发概念解释 --- maven 和 npm的常识
maven 和 npm有点类似于linux中的apt,apt是linux系统中安装软件的方式比如安装浏览器,maven是java中安装依赖软件的方式比如安装apache的common io工具,npm是nodejs环境中安装依赖的方式比如 jquery工具。而nodejs有点类似于java。我们将这些工具统称为安装包管理器,简称包管理器。其他编程语言也有类似的工具。 maven会将依赖下载到一个指
使用IDEA+groovy快速生成entity、dto、dao、service、serviceImpl
groovy代码 IDEA使用 1、将groovy文件添加到IDEA 2、选择需要生成的表,右键Tools->Scripted Extendsions->generate POJOs.groovy
JS 链表 - 笔记
代码: class ListNode { /** * @constructor * @param {number} val * @param {ListNode} next */ constructor(val, next) { this.val = (val === undefined ? 0 : val);
使用Jenkins搭建CI/CD服务器
1、为什么要 用CI / CD 软件开发的连续方法基于自动执行脚本,以最大限度地减少在开发应用程序时引入错误的可能性。从新代码的开发到部署,它们需要较少的人为干预甚至根本不需要干预。它涉及在每次小迭代中不断构建,测试和部署代码更改,从而减少基于有缺陷或失败的先前版本开发新代码的机会。这种方法有三种主要方法,每种方法都根据最适合您的策略进行应用。 持续集成(Continuous Integratio
Java学习笔记——第十四天
常见算法 什么是算法 算法是解决某个实际问题的过程和方法。 排序算法 冒泡排序 每次都从数组中找出最大值放到数组的后面去。 伪代码(升序排序): 选择排序 每轮选择当前位置,来找出后面的较小值与该位置交换。 伪代码(升序排序): 查找算法 基本查找/顺序查找 遍历数组,依次比较。 在数据量特别大时,基本查找性能很差。 二分查找/折半查找 将数组排序。 二分法查找。 伪代码: 正则表达式
即时通讯技术文集(第35期):IM群聊技术合集(Part2) [共12篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第35 期。 [- 1 -] 直播系统聊天技术(一):百万在线的美拍直播弹幕系统的实时推送技术实践之路 [链接] http://www.52im.net/thread-1236-1-1.html [摘要] 本文作者是美拍的架构师,
Vue学习笔记49--浏览器存储(local Storage + session Storage)
浏览器存储:意思就是本地缓存信息 local Storage 示例一: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.
JAVA实现算法问题25匹马,找出最快的3匹,但是只有5个赛道,每次比赛只能得到5匹马的速度排序,那么最少需要多少次比赛
1. 前言共有两种情况,这里先给出结论,下面详述,记时和不记时。 记时 自然5次就可以得到答案,每次记时然后得出前三即可; 不记时 结论是至少需要 7 次,下面来一步步分析 2. 不记时情形 正确思路: 分为1 2 3 4 5 共五组。抉择出每一组的第一名,赛跑次数:5次抉择出各小组第一名中跑的最快的。赛跑次数:6次 &nbs
Java 包装类:原始数据类型与迭代器
Java Iterator Iterator 接口提供了一种迭代集合的方法,即顺序访问集合中的每个元素。它支持 hasNext() 和 next() 方法,用于检查是否存在下一个元素以及获取下一个元素。 获取 Iterator 可以使用集合的 iterator() 方法获取 Iterator 实例: 遍历集合 可以使用 hasNext() 和 next() 方法遍历集合: 删除元素 可以使用
LeetCode[题解] 1261. 在受污染的二叉树中查找元素
首先我们看原题 给出一个满足下述规则的二叉树: root.val == 0 如果 treeNode.val == x 且 treeNode.left != null,那么 treeNode.left.val == 2 * x + 1 如果 treeNode.val == x 且 treeNode.right != null,那
JUC源码讲解:逐步解析 Thread.init() 源码
# JUC源码讲解:逐步解析 Thread.init() 源码 抛出问题 我们在 new Thread() 时,init() 方法便会自动调用,用来创建这个线程。那么,创建线程时都发生了什么事?子线程与父线程有何关系?线程是怎么创建的?juc怎么选择 ThreadGroup? 让我们从源码中寻找答案吧! 查看源码 可以看到,init() 传递了 ThreadGroup(划重点),以及 nam
【vscode】vscode配置Java
【vscode】vscode配置Java 前言 配环境,需要记录,避免反复踩坑。 步骤 step1:官网走 配环境为什么不直接上官网教程,Visual Studio Code - Code Editing. Redefined 点击Java step2:配置必需的环境 Coding Pack for Java To help you set up