-
锁的使用至关重要
所属栏目:[语言] 日期:2021-05-26 热度:170
副标题#e# 独占锁的实现,拥有上面列举的除读写锁之外的所有特性,使用比较简单 classX{ //创建独占锁实例 privatefinalReentrantLocklock=newReentrantLock(); //... publicvoidm(){ lock.lock();//blockuntilconditionholds try{ //...methodbody }finall[详细]
-
Lock特点性能完美分析解读
所属栏目:[语言] 日期:2021-05-26 热度:176
像synchronized和ReentrantLock都是可重入锁,可重入性表明了锁的分配机制是基于线程的分配,而不是基于方法调用的分配。 举个简单的例子,当一个线程已经获取到锁,当后续再获取同一个锁,直接获取成功。但获取锁和释放锁必须要成对出现。 可响应中断 当[详细]
-
Semaphore 数据结构分解详解
所属栏目:[语言] 日期:2021-05-26 热度:187
副标题#e# //Go语言中暴露的semaphore实现 //具体的用法是提供sleep和wakeup原语 //以使其能够在其它同步原语中的竞争情况下使用 //因此这里的semaphore和Linux中的futex目标是一致的 //只不过语义上更简单一些 // //也就是说,不要认为这些是信号量 //把这[详细]
-
isEmpty和isBlank的差异
所属栏目:[语言] 日期:2021-05-26 热度:64
我们在对字符串进行操作的时候,需要经常判断该字符串是否为空。如果没有借助任何工具,我们一般是这样判断的: if(null!=source!.equals(source)){ System.out.println(notempty); } 但是如果每次都这样判断,会有些麻烦,所以很多jar包都对字符串判空做[详细]
-
C++ inline内联函数分析大全
所属栏目:[语言] 日期:2021-05-26 热度:92
如果函数体代码比较多,需要较长的执行时间,那么函数调用机制占用的时间可以忽略;如果函数只有一两条语句,那么大部分的时间都会花费在函数调用机制上,这种时间开销就就不容忽视。 为了消除函数调用的时空开销,C++ 提供一种提高效率的方法,即在编译时[详细]
-
C++ new和delete运算符讲解
所属栏目:[语言] 日期:2021-05-26 热度:164
在C语言中,动态分配内存用 malloc() 函数,释放内存用 free() 函数。如下所示: int *p = (int*) malloc( sizeof(int) * 10 ); //分配10个int型的内存空间 free(p); //释放内存 在C++中,这两个函数仍然可以使用,但是C++又新增了两个关键字,new 和 delet[详细]
-
面向对象编程有着举足轻重的作用
所属栏目:[语言] 日期:2021-05-26 热度:57
类是一个通用的概念,C++等很多编程语言中都支持类,都可以通过类创建对象。可以将类看做是结构体的升级版,C语言的晚辈们看到了C语言的不足,尝试加以改善,继承了结构体的思想,并进行了升级,让程序员在开发或扩展大中型项目时更加容易。 因为 C++、Java[详细]
-
10分钟让你知道C++类和对象到底是什么?
所属栏目:[语言] 日期:2021-05-26 热度:144
C++ 中的类(Class)可以看做C语言中结构体(Struct)的升级版。结构体是一种构造类型,可以包含若干成员变量,每个成员变量的类型可以不同;可以通过结构体来定义结构体变量,每个变量拥有相同的性质。例如: #include stdio.h //定义结构体 Student struc[详细]
-
Go语言入门之Time包详解
所属栏目:[语言] 日期:2021-05-24 热度:188
time.Now()返回的是一个Time类型。 相关代码如下 funcmain(){ varnowTime=time.Now() fmt.Println(nowTime) varyear=nowTime.Year()//当前年份 varmonth=nowTime.Month()//当前月份 varday=nowTime.Day()//今天几号 varhour=nowTime.Hour()//现在几时 varM[详细]
-
分析内存管理机制的变更,你需要了解
所属栏目:[语言] 日期:2021-05-24 热度:128
这时候可能至少分两拨小伙伴,分别是: 知道是什么,被这个问题 折磨 过的,瞬间眼前一亮。 不知道是什么,出现了各种疑惑了,这说的都是些什么。 灵魂拷问 你有没有以下的疑问,或者是否清楚: 文中所说的 MADV_FREE 是什么? 文中所说的 MADV_DONTNEED 是[详细]
-
用Python神经网络分析汽车保险支出
所属栏目:[语言] 日期:2021-05-24 热度:181
为新数据集开发神经网络预测模型可能具有挑战性。 一种方法是首先检查数据集并为可能使用的模型开发思路,然后探索数据集上简单模型的学习动态,然后最后使用健壮的测试工具为数据集开发和调整模型。此过程可用于为分类和回归预测建模问题开发有效的神经网[详细]
-
C++多线程基本概念及其创建线程的操作
所属栏目:[语言] 日期:2021-05-23 热度:95
副标题#e# 并发、进程、线程的基本概念 并发两个或者多个任务(独立的活动)同时发生(进行):一个程序通知执行多个独立的任务并发假象(不是真正的并发):单核CPU通过上下文切换方式实现进程 进程计算机中的程序关于某数据集合上的一次运行活动 进程特性 动态性[详细]
-
让你滔滔不绝的Java的泛型知识点梳理
所属栏目:[语言] 日期:2021-05-23 热度:160
副标题#e# 最近技术交流群里,有朋友问:Object和泛型T有啥区别。回答完问题,不禁在想,面试在即,还有那么多朋友不了泛型?是时候给大家整理一篇泛型相关的文章了,一篇文章全面搞定泛型,让大家再也不愁面试或实践中泛型相关的问题了。 什么是泛型 泛型是[详细]
-
Java高并发编程入门篇:AQS
所属栏目:[语言] 日期:2021-05-23 热度:94
曾经有一道比较比较经典的面试题你能够说说java的并发包下面有哪些常见的类?大多数人应该都可以说出 CountDownLatch、CyclicBarrier、Sempahore多线程并发三大利器。这三大利器都是通过AbstractQueuedSynchronizer抽象类(下面简写AQS)来实现的,所以学习三[详细]
-
FileOutputStream与FileInputStream的随机访问文件读写
所属栏目:[语言] 日期:2021-05-23 热度:163
副标题#e# 由于流是单向的,简单文件写可使用FileOutputStream,而读文件则使用FileInputStream。 任何数据输出到文件都是以字节为单位输出,包括图片、音频、视频。以图片为例,如果没有图片格式解析器,那么图片文件其实存储的就只是按某种格式存储的字节[详细]
-
用Python实现多Excel、多Sheet的合并处理的方法
所属栏目:[语言] 日期:2021-05-23 热度:183
1)如何选择要合并的Excel文件? 利用os,获取所有要合并的Excel文件。 2)如何选择要合并的Sheet? 利用xlrd库进行Excel读取,获取要合并的Sheet名。 3)如何合并? 利用pandas库,对所有Sheet名逐一循环打开,通过concat()进行数据追加合并即可。 4)如何保存文[详细]
-
Java中基础类型的包装类在拆箱和装箱过程中起到了什么用处
所属栏目:[语言] 日期:2021-05-23 热度:125
副标题#e# 下面通过一个简单的示例才重现一下异常出现的场景。 publicclassBoxTest{ publicstaticvoidmain(String[]args){ MapString,Objectresult=httpRequest(); longuserId=(Long)result.get(userId); } //模拟一个HTTP请求 privatestaticMapString,Obje[详细]
-
extends与super通配符的差异
所属栏目:[语言] 日期:2021-05-23 热度:71
副标题#e# 在定义泛型类型Generic的时候,也可以使用extends通配符来限定T的类型: publicclassGenericTextendsNumber{...} 现在,我们只能定义: GenericNumberp1=null; GenericIntegerp2=newGeneric(1,2); GenericDoublep3=null; 因为Number、Integer和Do[详细]
-
Java 泛型机制允许程序员在编译时检验到非法的类型
所属栏目:[语言] 日期:2021-05-23 热度:71
Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。 简单理解就是:泛型指定编译时的类型,减少运行时由于对象类型不匹配引发的异常。其主要用途是提高我们的代码的复用率。[详细]
-
Java注解annotation的用途分析
所属栏目:[语言] 日期:2021-05-23 热度:78
今天在看以前写的代码,发现自己对注解的了解还不是非常透彻,经常选择性就忽视了对注解实现的探究,遂查询资料学习了一下。 注解是什么 实现格式 从代码来看我们知道注解的实现格式是: public@interfaceMyAnnotation{ 属性列表; } 所以我们有了第一直觉[详细]
-
如何构造一个死锁及处理方式
所属栏目:[语言] 日期:2021-05-23 热度:120
副标题#e# 很简单,只要让线程1占有对象a的锁后,再去请求对象b的锁。与此同时,对象2已经占有了对象b的锁,再请求对象a的锁。线程1与线程2互相等待,形成了死锁。(在面试中,也会被经常地要求手写死锁) 代码如下: packagecom.example.dl; importorg.sprin[详细]
-
Java 7以来增加得强大的新功能的示例
所属栏目:[语言] 日期:2021-05-23 热度:110
在Java 8中,功能编程和lambda被添加为语言功能。函数式编程的两个核心范例是不变的值和将函数提升为一等公民的方法。数据经过一系列修改步骤,其中每个步骤都需要一些输入并将其映射到新的输出。函数式编程可与Java中的Streams和null安全monad(可选)一起[详细]
-
java的乐观锁和悲观锁是如何实现的
所属栏目:[语言] 日期:2021-05-23 热度:83
java的锁有这么几类。 乐观锁和悲观锁 乐观锁就是JVM认为不通过加锁也能保证并发的正确性。典型实现是诸如AtomicInteger的实现。 悲观锁就是需要加锁互斥。典型实现是Synchronized(Synchronized属于乐观锁还是悲观锁其实跟具体实现有关,大部分场景下都是[详细]
-
Java8性能全面介绍意义深远
所属栏目:[语言] 日期:2021-05-23 热度:190
副标题#e# Java 8 已经发布很久了,很多报道表明 Java 8 是一次重大的版本升级,虽然我们的 JDK 环境也升级到1.8,但是在日常的开发过程中,使用最多的编程风格还是停留在 JDK1.7。 Java8 新增了非常多的特性,主要有以下几个: Lambda 表达式:Lambda 允许[详细]
-
盘点潜力巨大的几种编程语言
所属栏目:[语言] 日期:2021-05-23 热度:83
目前,我们正处于一个新兴的区块链开发产业中。 区块链技术还处于起步阶段,但是这种破坏性技术已经成功席卷了整个世界,并且最近经历了前所未有的繁荣。 有许多资金充裕的项目渴望建立自己的区块链网络并在其上部署去中心化应用程序,因此,有能力的区块[详细]