AQS详解
AQS:全称“AbstractQueuedSynchronizer”,直译过来是抽象的队列同步器,一般我们把它叫做AQS,java中大部分并发类都是通过它来实现线程同步。它内部定义了一个变量(volatileintstate)和一个等待队列,前者表示加锁状态,后者在多线程情况下争用资源时被阻塞会进入等待队列。源码解析volatileintstatevolatile是一个关键字,在并发处理中也经常会
Android 蓝牙4.0 BLE 串口模块最佳实践
我在慕课网的Android新课核心知识点如下:AndroidX/音视频开发/社交匹配算法/即时通信/语音识别/App优化/安全加固手把手完成商业级社交App开发进阶Android高级工程师很多同学对BLE感兴趣,确实,作为主流的蓝牙协议,它还是很有竞争性的,但是BLE没有硬件也不好调试,所以我买了一块开发板来给大家写这篇文章,讲解各种细节和思路,希望你看完这篇文章能对BLE有一个更加清晰的认识。一
一套完整的软件开发流程是怎样的?
做什么事都需要一个流程,软件开发也不例外。那么,一个软件从无到有到底是怎么开发的?一个软件产品的结果为什么是这样?为什么开发的速度不能再快一点。为什么程序员大多秃顶?他们有那么忙吗?完整的软件开发流程是怎样的?项目启动1、产品经理和项目干系人确定项目方向,产品型项目的干系人包括公司领导、产品总监、技术总监等,项目的话则包括客户方领导、主要执行人等。2、公司领导确认项目组团队组成,包括产品经理、研发
探秘 Vue3.0 - Composition API 在真实业务中的
前言2019年2月6号,React发布16.8.0版本,新增Hooks特性。随即,Vue在2019的各大JSConf中也宣告了Vue3.0最重要的RFC,即Function-basedAPI。Vue3.0将抛弃之前的ClassAPI的提案,选择了FunctionAPI。目前,vue官方也提供了Vue3.0特性的尝鲜版本,前段时间叫vue-function-api,目前已经改名叫compositio
Android App启动优化深度实践 (由2.4s优化到1s以内)
这是第「28篇」原创分享朝阳杨少爷(ID:CY_YANG_DA_YE),专注于Android领域的开发者。背景我们的APP新版本,从2017年4月份提交第一行代码开始,就现在已经有两年半的时间,在这两年多的时间里,APP的内容内容不断丰富,例如先后加入了求职招聘、问答、个人中心、二手机,小视频等等模块。同时对于以前的旧功能也在不断地完善,例如,丰富了发帖的内容、小视频详情页像抖音一样方便快捷、标签
prometheus 展示维度
prometheus有丰富的运算和函数,给我们带来了丰富的展现形式。丰富的表达的好处相比于一般的apm系统,prometheus的采集和展示是分开的。例如一般的apm系统会采集gc的指标,一般会计算成gc次数,而不是gc总数。这样的好处是采集的数据和页面展示的数据一致,页面的压力很小,直接展示出数据库里的信息就行(这里一般都是时序数据库)。prometheus提供了丰富的表达以后,就可以直接把gc
JavaScript字符串转数字的5种方法及其陷阱
摘要:JavaScript是一个神奇的语言,字符串转数字有5种方法,各有各的坑法!原文:ConvertingStringstoNumberinJavascript:Pitfalls译者:Fundebug本文采用意译,版权归原作者所有String转换为Number有很多种方式,我可以想到的有5种!parseInt(num);//默认方式(没有基数)parseInt(num,10);//传入基数(十位
Flutter 24: 易忽略的【小而巧】的技术点汇总 (三)
小菜继续整理Flutter中日常用到的小知识点。1.LinearGradient渐变色 小菜为了给添加渐变色背景,需要用到LinearGradient,小菜尝试时发现如下注意。LinearGradient中设置渐变色需要两种颜色以上才会有效果;设置多种颜色,若没有其他设置,每种颜色所占比例均分为1:1:...:1;小菜尝试如果设置所占比例,可以多设置几个相同色值,只是这种方式不太合
Mysql闹鬼!不要密码也能登陆
yahoon@2010-5-13 有一台mysql,是之前别人已经装好的现在要为它增加一台从服务器在主这台机器上直接输入mysql命令回车就可以进[root@localhost~]#mysqlWelcometotheMySQLmonitor.Commandsendwith;org.YourMySQLconnectionidis111350Serverversion:5.0.67-community
转载:Docker Redis5.0集群
转载:DockerRedis5.0集群一、容器准备从DockerHub拉取Redis镜像。docker pull redis:tag #将tag换成具体的版本tag二、准备配置文件redis-cluster.tmpl在服务器创建redis-cluster目录,在目录下创建redis-cluster.tmpl文件,需要将cluster-announce-ip换成自己的公网IP,内容如下。port $
Spark Task
TaskLocalityDatalocalitycanhaveamajorimpactontheperformanceofSparkjobs.Ifdataandthecodethatoperatesonitaretogetherthencomputationtendstobefast.Butifcodeanddataareseparated,onemustmovetotheother.Typica
慕课网每周干货福利礼包(第十一棒)
艾瑞包迪!周五到啦,刚忙完双12,是不是都能告别加班,好好享受周末了呢?当然,不管加班还是休息,该充电还是得充电,精神食粮还是得补充啊,良心牌干货奉上,大家快囤起来过冬呀!本系列又名:看文五分钟、假装都学会;码了不看,看了不懂,懂了不用;又是别人家的大佬更新啦“蒂花之秀”课代表集中营一不小心就容易消化不良······为了方便大家快速吸收有效知识,了解最新技术资讯,大大减少阅读时间,请放心食用下列干
分布式系统的远程服务
如果项目拆分为分布式系统,那么服务的生产者和消费者是不可少的,然后远程服务这块的技术点也是少不了的。服务之间的调用可以采用不同的协议,TCP,UDP,HTTP,Hession,Protobuf等。每一种协议都有自己的特点HTTP用起来更简单,TCP用起来性能更好。服务注册注册中心也有很多选项,Zookeeper,etcd,Consul。ZooKeeper属于老牌的知名度很高的一个分布式协调组件,e
DOM事件机制
前言本文主要介绍DOM事件级别、DOM事件模型、事件流、事件代理和Event对象常见的应用,希望对你们有些帮助和启发!一、DOM事件级别DOM级别一共可以分为四个级别:DOM0级、DOM1级、DOM2级和DOM3级。而DOM事件分为3个级别:DOM0级事件处理,DOM2级事件处理和DOM3级事件处理。由于DOM1级中没有事件的相关内容,所以没有DOM1级事件。1.DOM0级事件el.onclick
程序中呼叫Class(类)
如何在程序中呼叫你写好的Class(类)。为了实现这些功能,下面做了一个小小的例子。第一步,我们得把呼叫的类写好。首先写一个interface(接口),这个接口有一个方法Call():ICallableusing System;using System.Collections.Generic;using System.Linq;using System.Web;/// /// Summary de
<转载>Android性能优化之HashMap,Array
Android开发者都知道Lint在我们使用HashMap的时候会给出警告——使用SparseArray会优化内存。这可是一件好事情。那现在我们有几个类要学习去使用。比如:ArrayMap和SimpleArrayMap,当然还有各种类型的SparseArray。这篇文章将讲解这些类及它们的原理。先从如何使用它们开始吧。 1 java.util.HashMap hashMap = new jav
JavaScript的数据类型及其检测
一、JavaScript有几种类型的值?Javascript有两种数据类型,分别是基本数据类型和引用数据类型。其中基本数据类型包括Undefined、Null、Boolean、Number、String、Symbol(ES6新增,表示独一无二的值),而引用数据类型统称为Object对象,主要包括对象、数组和函数。接下来我们分别看下两者的特点。二、基本数据类型1.值是不可变的var name = '
C#:按钮的属性和事件
在真实的C#开发场景中,我们对于按钮的使用,无非就是使用按钮的name属性、text属性,以及按钮的click事件。其它的几乎是很少使用到的。如果改换成其它的编程语言,也是一样的。我也看了别人的关于C#的视频教程,对于按钮的使用,就是讲的一塌糊涂。我这里就简单的记录下该如何来使用按钮。1、从工具栏中选择“button”组件。然后在设计区里面按下鼠标,就可以拖出一个按钮的形状。2、在设计属性组里面,
这10个问题你一定要会!你肯定忽略了!
1、问题一关于弱类型 $str1='yabadabadoo'; $str2='yaba'; if(strpos($str1,$str2)){ echo"\"".$str1."\"contains\"".$str2."\""; }else{ echo"\"".$str1."\"doesnotcontain\"".$str2."\""; } 正确运行的输出结果: "yabadabad
cron 与 anacron:如何在 Linux 中计划任务
在本篇中,我们会解释cron和anacron,并向你展示如何在Linux中设置anacron。我们也会比较这两个工具。要在一个给定时间或者稍后安排一个任务,你可以使用 at 或者 batch 命令,要使命令能够重复运行,你可以使用cron以及anacron工具。cron -是一个用于运行计划任务如系统备份、更新等的守护进程。它适合在那些24X7不间断运行的机器如服务器上运行的计划任务。命令/脚本被