后端
Java锁相关概念的简单理解
Java中锁的概念
自旋锁:是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环
乐观锁:假定没有冲突,在修改数据时如果发现数据和之前获取的不一致,则读最新数据,修改后重试修改
悲观锁:假定会发生并发冲突,同步所有对数据的相关操作,从读数据就开始上锁
独享锁(写):给资源加上写锁,线程可以修改资源,其他线程不能
dex、vdex、.odex与.oat
转自:
dex、vdex、.odex与.oat文件介绍
1、dex文件
在我们写Java代码的时候,生成的文件是.java文件。
对于PC上的java虚拟机(JVM)运行的是.class。
.java文件转成.class文件,需要jdk工具,转换命令:
javac xxxx.java
关
HashMap源码解析
数据结构
//一个Node数组,Node是一个单向链表
transient Node<K,V>[] table;
//Node内部类
static class Node<K,V> implements Map.Entry<K,V> {
// hash值
final int hash;
// key
Wireshark:又一个可以查看https消息内容的工具
我们在接口测试和故障诊断调试时,需要查看消息里边的内容,如果是http消息可以通过wireshark抓包分析软件看到,但https消息内容在传输过程中是加密的,怎样才能看到https加密后的消息呢?
从技术上来说,需要拿到密钥,通过密钥对消息内容进行解密。
从难易程度上来说,有两个难题:获取密钥和密钥解密。密钥是不会在交互过程中传输的,对于第3方,拿到密钥的可能性不大或者非常难。对于密钥解密,非专
温习 6+2 种排序方式
堆排序(实现难易:⭐⭐⭐)
① 将序列生成堆,调整成最大堆
② 弹出堆顶,生成新序列,重复 ① 。
快速排序(实现难易:⭐⭐⭐)
(a)先移动 j 找到 <= low 的数,再移动 i 找到>= low 的数:
① 若 i < j ,两者交换,继续移动。 ② 若 i >= j,j 与 low 交换。
(b)交换后数列划分,分别令各
ScyllaDB初体验
感觉 发现了宝藏,学到老活到老吧。
一. Scylla的前世今生
在学习任何源码前,我们都需要了解它的背景,它的架构。
ScyllaDB可以算得上是数据库界的奇葩,它用c++改写了java版的Cassandra。
为什么奇葩呢?因为大部分用其它语言改写的,都很难匹敌原系统。而它却相当成功,引起来了片欢呼。
它的成功来源于JVM GC的无止尽的噩梦,另一部分来自于大名顶顶的KVM团队开发成员!
SpringBoot概念介绍和设计理念
SpringBoot介绍
Spring Boot对Spring平台和第三方库进行了整合,可创建可以运行的、独立的、生产级的基于Spring的应用程序。(大多数Spring Boot应用程序只需要很少的Spring配置)
Spring Boot可以使用java -jar或更传统的war部署启动的Java应用程序进行创建,可以内嵌Tomcat 、Jetty .Undertow容器,快速启动web程序。
SpringBoot统一API魔改
配置注解
package com.example.demo.api;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@T