编程语言基础
文章平均质量分 58
一些和编程语言相关的知识
I an
后端开发工程师
展开
-
分布式锁的实现
为了在并发环境下保证数据的一致性,我们通常会采用加锁的方式。如果数据只存在于一台服务器上,则只需要使用单机锁则可以解决数据不一致的问题。而在分布式集群中,一个变量的值可能被一个集群的多个节点所共享,此时若要保证变量的一致性,仅在一台机器中加锁是不够的,我们需要做的是给集群加锁,这就是分布式锁。......原创 2022-07-16 20:18:26 · 621 阅读 · 0 评论 -
go实现消息队列
使用Golang实现一个消息队列,具体要满足以下功能:可以向消息队列发送消息和拉取消息可以向消息队列发送消息和拉取消息发送的消息不能超过指定的容量拉取消息支持拉取指定数量的消息,如果不满足指定的数量,等待超时以后返回超时时间内拉取的所有消息(不会超过指定的数量)使用Golang中的基本数据结构和功能来实现package mainimport ( "time")// MessageQueue define the interface for the messag原创 2022-04-29 12:44:22 · 3248 阅读 · 0 评论 -
go容器介绍
1. 数组 数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成,数组的长度是固定的。数组的初始化 var 数组变量名 [元素数量]Type // 定义三个整数的数组 var a [3]int var array_name [size1][size2]...[sizen] array_type // 声明一个二维整型数组,两个维度的长度分别是 4 和 2 var array [4][2]int数组间的比较 不同于Java,原创 2022-04-25 16:13:01 · 801 阅读 · 0 评论 -
定时器Timer
在JDK中,Timer类的主要作用是设置计划任务,即在指定时间执行某个任务,它在内部使用多线程的方式进行处理,与Java多线程技术有着非常大的关联。 以下为Timer类的简单使用示例public class TimerTest { public static void main(String[] args) throws InterruptedException { Timer timer=new Timer(); timer.schedule(new Ti原创 2021-12-05 21:10:30 · 201 阅读 · 0 评论 -
ThreadLocal类的使用
线程之间的共享变量可以通过public static变量的形式实现,如果要实现每一个线程都有自己私有的变量,最简单的方法就是为每一个启动的线程初始化一个线程实例 一个线程对应一个线程实例,如以下代码所示:class MyThread extends Thread{ public String test; MyThread(String val){ this.test=val; } @Override public void run(){原创 2021-12-03 20:22:47 · 682 阅读 · 0 评论 -
JVM虚拟机底层结构
Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域。这些区域有不同的用途。 JVM结构模型如下图所示。 从上图中可以看出,JVM底层结构主要可以分成五个部分,分别是堆、方法区、虚拟机栈、本地方法栈、程序计数器。 1.线程共享 2.线程私有...原创 2021-11-15 22:25:40 · 1125 阅读 · 0 评论 -
Java缓存池
Java对于每一种基本数据类型都会创建一个缓存池。 基本数据类型对应的缓存池如下:boolean values true and falseall byte valuesshort values between -128 and 127int values between -128 and 127char in the range \u0000 to \u007F 在使用这些基本类型对应的包装类型时,如果该数值范围在缓存池范围内,就可以直接引用缓冲池中的对象,否则会创建一个新的原创 2021-10-29 16:37:23 · 1223 阅读 · 0 评论 -
为什么在Java中重写equals()方法同时要重写hashcode()方法
要彻底了解透为什么重写equals()方法同时要重写hashcode()方法,我们不妨先来看看这样一个例子: String a=new String("123"); String b=new String("123"); System.out.println(a==b); //false System.out.println(a.equals(b)); //true System.out.println(a.h原创 2021-07-22 23:01:13 · 318 阅读 · 5 评论 -
>>和>>>的区别
1、>>:右移运算符,num >> 1,相当于num除以2。按二进制形式把所有的数字向右移动对应位数,低位移出并舍弃,高位的空位补符号位,即正数补零,负数补1,符号位不变。如:-1在32位二进制中表示为:11111111 11111111 11111111 11111111,-1>>1:按位右移,符号位不变,仍旧得到11111111 11111111 11111111 11111111,因此值仍为-12、>>>:二进制右移补零操作符。左操作数的值原创 2021-03-29 12:43:40 · 3089 阅读 · 0 评论 -
jQuery绑定与取消css样式
jQuery绑定css样式:clickSecond.css("background","blue"); //属性+属性值 (注意:格式为字符串)jQuery移除css样式:clickSecond.css("background",""); //属性+空字符串""原创 2020-12-17 14:51:17 · 238 阅读 · 0 评论 -
细说Java中的“==“和“equals“
对于Java初学者来说,==和equals方法真的是一个绕不过去的巨坑,我自己在写算法题时都被这玩意坑了好几次,这篇文章承载着我过去所有关于跳入此坑中的辛酸史,好好记录一下两者的区别原创 2020-08-15 21:25:19 · 178 阅读 · 0 评论 -
STL中vector容器与list容器的主要区别
vector容器和list容器时STL中最常使用的两个容器,两者之间最大的区别在于它们底层实现的不同,vector的底层实现是基于数组,而list的底层实现是基于双向循环链表。(list底层结构示意图)由于vector容器和list容器底层实现上的差异,导致两者在实现不同功能的效率上也有着一定程度的差别,这一点可以体现vector容器和list容器的优缺点。vector容器的优点:1.vector的遍历速度比list更快(list的底层是链表,需要通过指针域才能从一个元素找到下一个元素,而vect原创 2020-07-22 19:44:47 · 1712 阅读 · 0 评论 -
逻辑运算符的短路性质
&&运算符具有结果优先属性,只要能得到结果,就不会在计算后面的计算式举例:(1):int i = 0; cout <<(0&&++i);//&&计算在计算式“0”的位置已经可以得到返回值0,++i不执行 cout << i;输出结果是00int i = 0; cout <<(++i&&0); //++i判断为真,&&会执行到结尾 cout << i;输出结果原创 2020-07-08 16:29:53 · 1075 阅读 · 0 评论