自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(124)
  • 收藏
  • 关注

原创 reentrantLock是怎样实现公平锁的

在构造ReentrantLock对象时,可以通过参数来指定是公平锁还是非公平锁,默认情况下是非公平锁。当释放锁的线程释放锁时,它会检查等待队列中是否有线程等待获取锁。当ReentrantLock被设置为公平锁时,它会尽量按照等待时间的顺序来获取锁,确保等待时间最长的线程最先获得锁。需要注意的是,公平锁会增加锁的竞争和线程切换的开销,可能会降低整体的性能,尤其在高并发的情况下。入队: 当一个线程尝试获取锁时,如果锁已经被其他线程持有,则该线程会进入等待队列,按照先后顺序排队等待获取锁。

2024-04-12 12:25:49 128

原创 Synchronized的锁升级过程

在Java中,Synchronized关键字可以用于实现对代码块或方法的同步,保证多线程之间的互斥访问。锁的升级过程是从偏向锁到轻量级锁,再到重量级锁的一个演变过程。这个过程是为了在不同的并发场景下,尽量减少锁的竞争和升级的开销,提高程序的性能。

2024-04-12 12:17:58 503

原创 Synchronized和volatile的区别

因此,Synchronized用于实现线程间的互斥和同步,适用于复杂的临界区控制;而Volatile用于保证变量的可见性,适用于简单的标志位等场景。在需要保证原子性的操作时,需要使用Synchronized或者其他并发工具,而不能依赖于Volatile。

2024-04-12 12:10:53 169

原创 线程和进程的区别

总的来说,进程和线程都是实现并发和并行的基本单位,它们各自有自己的特点和适用场景。通常情况下,进程用于实现程序的独立执行和资源隔离,而线程用于实现程序内部的并发和共享资源。

2024-04-12 11:59:54 199

原创 用户态和内核态的区别

在通常情况下,用户态和内核态之间的切换由操作系统来管理。当用户程序需要访问操作系统提供的特权功能或系统资源时,会触发一次从用户态到内核态的切换,这通常通过系统调用(syscall)实现。操作系统会执行必要的操作,然后再将控制返回给用户程序。这种切换的开销比较大,因为它涉及到上下文的保存和恢复,所以操作系统会尽量减少这种切换的次数,以提高系统的性能。用户态和内核态是操作系统中的两种运行模式,它们之间的主要区别在于其执行的特权级别和可访问的资源。

2024-04-12 11:41:08 372

原创 从输入URL到页面发生了什么

解析URL(Uniform Resource Locator): 浏览器解析用户输入的URL,将其分解为不同的部分,如协议(例如HTTP,HTTPS),域名(例如www.example.com),路径等。这个请求中包括请求的资源(如HTML文件、图像、CSS文件等)以及其他元数据,如浏览器类型、所需的内容类型等。浏览器接收响应: 浏览器接收到来自服务器的HTTP响应后,开始解析响应。DNS解析: 浏览器向域名系统(DNS)服务器发送请求,以获取与输入的域名对应的IP地址。此时,用户可以与页面进行交互。

2024-04-12 11:31:56 263

原创 python保留两位小数

【代码】python保留两位小数。

2024-04-12 08:29:16 97

原创 @Autowired和@component有哪些区别

Component 注解也有一些派生注解,例如 @Controller、@Service、@Repository,它们分别用于标记控制器类、业务逻辑类和数据访问类,但它们的本质都是 @Component 的特化,因此具有相同的作用。当 Spring 容器在创建 Bean 的过程中遇到使用了 @Autowired 注解的字段或方法参数时,会自动在容器中查找匹配类型的 Bean,并将其注入到相应的位置。@Component 是 Spring 中最基本的注解,用于标记一个类为 Spring 的一个 Bean。

2024-04-11 12:10:27 188

原创 spring 依赖注入有哪些方式

这些方式可以单独使用,也可以组合使用。例如,一个类可以同时使用构造函数注入和Setter方法注入来注入不同类型的依赖对象。选择哪种方式取决于项目的需求、团队的开发习惯以及个人的偏好。Spring框架提供了多种方式来实现依赖注入,开发者可以根据需求和偏好选择合适的方式。

2024-04-11 12:04:46 300 1

原创 spring 中的控制反转

在Spring框架中,控制反转(IoC,Inversion of Control)是指将对象的创建和管理交给了容器,而不是在应用程序代码中直接创建对象。在传统的编程模式中,应用程序代码通常负责创建对象并管理它们的生命周期,而在IoC容器中,这些责任被转移到了容器中。控制反转容器:Spring的IoC容器负责管理Bean的生命周期,并负责解决Bean之间的依赖关系。控制反转的核心思想是:将对象之间的依赖关系从应用程序代码中解耦,使得各个组件之间的耦合度降低,提高了代码的灵活性、可维护性和可测试性。

2024-04-11 11:53:25 272

原创 序列化和反序列化

在Java中,序列化(Serialization)是将对象转换为字节序列的过程,而反序列化(Deserialization)则是将字节序列转换回对象的过程。序列化和反序列化主要用于在网络上传输对象或将对象持久化到磁盘上。Java提供了 java.io.Serializable 接口,通过实现这个接口,类的对象可以被序列化。要进行序列化和反序列化,可以使用Java提供的 ObjectOutputStream 和 ObjectInputStream 类。

2024-04-11 11:45:22 267

原创 http协议

它是一种无状态的协议,意味着每个请求都是独立的,服务器不会保留关于客户端的任何信息。HTTP协议的发展经历了多个版本,包括HTTP/0.9、HTTP/1.0、HTTP/1.1和HTTP/2。起始行包含了请求方法/响应状态码、URL、协议版本等信息,首部字段包含了各种元数据,实体主体包含了请求的数据或响应的资源。持久连接:为了提高性能,HTTP/1.1引入了持久连接(也称为HTTP Keep-Alive),允许多个HTTP请求和响应在同一个TCP连接上进行。HTTP请求中的URL指定了客户端请求的资源。

2024-04-11 11:32:29 207

原创 TCP的四次挥手

这四个步骤完成后,连接就被彻底关闭了。客户端发送连接释放报文段(FIN):客户端通知服务器它已经完成了数据传输,并且希望关闭连接。服务器确认客户端的连接释放报文段:服务器收到客户端发送的FIN后,会发送一个确认报文段(ACK),确认收到了客户端的关闭请求。客户端确认服务器的连接释放报文段:客户端收到服务器发送的FIN后,会发送一个确认报文段(ACK),表示收到了服务器的关闭请求。服务器发送连接释放报文段:一旦服务器准备好关闭连接,它会发送一个带有FIN标志的报文段给客户端,表示服务器也准备关闭连接。

2024-04-10 12:22:26 352 1

原创 TCP的三次握手

TCP(Transmission Control Protocol,传输控制协议)的三次握手是建立TCP连接的过程,确保通信双方都能够正常通信。

2024-04-10 12:11:11 604

原创 MySql怎样优化慢查询

优化 MySQL 慢查询通常涉及多个方面,包括优化查询语句本身、索引设计、服务器配置等。

2024-04-10 11:57:47 335

原创 try_catch_finally

finally块:该块是可选的,位于try和catch块之后。它包含您想要无论是否抛出异常都要执行的代码。finally块中的代码始终会执行,即使在try或catch块中有返回语句,或者抛出异常。catch块:该块用于处理对应try块内抛出的异常。您可以拥有多个catch块来处理不同类型的异常。如果一个异常与catch块中指定的类型匹配,则会执行该块中的代码。如果没有匹配的catch块,则异常将在调用堆栈中传播。try块:该块包含您想要监视异常的代码。如果在此块内部发生异常,它就会被抛出。

2024-04-10 11:27:23 258

原创 c++类型转换

在C++中,类型转换是将一个数据类型的值转换为另一个数据类型的过程。C++提供了几种不同的类型转换方式,包括隐式转换和显式转换。

2024-04-10 11:13:20 263

原创 计算机视觉-名词解释

ground truth基准真相,也称地面实况(英语:Ground truth)是一个相对概念,是指相对于新的测量方式得到的测量值,作为基准的,由已有的、可靠的测量方式得到的测量值[注 1]。人们往往会利用基准真相,对新的测量方式进行校准,以降低新测量方式的误差和提高新测量方式的准确性。机器学习领域借用了这一概念。使用训练所得模型对样本进行推理的过程,可以当做是一种广义上的测量行为。在有监督学习中,ground truth 通常指代样本集中的标签...

2022-02-10 22:57:42 1873

原创 bind1st bind2nd

bind1st bind2ndtemplate< class F, class T >std::binder1st bind1st( const F& f, const T& x );template< class F, class T >std::binder2nd bind2nd( const F& f, const T& x );bindiiist: 将x与函数f的第iii个参数绑定...

2021-10-18 15:37:23 105

原创 c++引用对比

#include <iostream>using namespace std;int main(){ int a = 1; double &b = a; cout << "a : " << a << " " << "b : "<< b << endl;}#include ...

2019-06-22 20:07:16 250

原创 c++实现用户密码输入界面

#include <stdio.h>#include <windows.h>#include <conio.h>#include <bits/stdc++.h>using namespace std;void gotoxy(int x,int y){ COORD c; c.X=x-1; c.Y=y-1; S...

2019-06-03 20:29:52 7696 4

原创 C语言中怎样实现按ESC键就退出循环不按任何键就继续循环?

#include <conio.h>#include <stdio.h>int main(){ while(1) { if (_kbhit() && _getch()==0x1b) break; printf("do something ..."); }}

2019-05-17 21:46:11 7210 2

转载 异或的性质

异或是一种基于二进制的位运算,用符号XOR或者 ^ 表示,其运算法则是对运算符两侧数的每一个二进制位,同值取0,异值取1。它与布尔运算的区别在于,当运算符两侧均为1时,布尔运算的结果为1,异或运算的结果为0。简单理解就是不进位加法,如1+1=0,,0+0=0,1+0=1。性质1、交换律2、结合律3、对于任何数x,都有x ^ x=0,x ^ 0=x4、自反性 A ^ B ^ B = A ...

2019-04-21 21:56:08 1559

原创 计蒜客MORE XOR

Given a sequence of nnn numbers a1a_1a1​, a2a_2a2​, ⋯\cdots⋯, ana_nan​ and three functions.Define a function f(l,r)f(l,r) which returns ⊕\oplus⊕ a[x] (l ≤\le≤ x ≤\le≤ r). The ⊕\oplus⊕ represents exc...

2019-04-21 20:33:19 165

原创 ZOJ Problem Set - 4016 Mergeable Stack

题目连接题意有N个栈,三种操作。1 a b 在栈a中压入b2 a 弹出栈a的栈顶元素,若a栈为空,则输出"EMPTY",否则输出被弹出的栈顶元素。3 a b 将b栈中的元素移到a栈上思路用STL 的stack 会 超时用LIST 或 链表Code#include <stdio.h>#include <iostream>using names...

2019-04-10 20:35:33 159

原创 ZOJ - 4034 Mahjong Sorting

DreamGrid has just found a set of Mahjong with 3M suited tiles and a White Dragon tile in his pocket. Each suited tile has a suit (Character, Bamboo or Dot) and a rank (ranging from 1 toM), and there...

2019-04-10 15:30:26 202

原创 UVALive 6175 Maximum Random Walk

Consider the classic random walk: at each step, you have a 1/2 chance of taking a step to the left and a 1/2 chance of taking a step to the right. Your expected position after a period of time is zero...

2019-03-27 20:50:40 235

原创 Pagodas UVALive 7241

n pagodas were standing erect in Hong Jue Si between the Niushou Mountain and the Yuntai Mountain,labelled from 1 to n. However, only two of them (labelled a and b, where 1 ≤ a ̸= b ≤ n) withstood th...

2019-03-22 22:36:57 160

原创 Deranged Exams

Deranged ExamsThe first question on the Data Structures and Algorithms final exam has a list of N terms and a second list of N definitions. Students are to match each term with the correct definition...

2019-03-15 22:39:50 156

转载 字符串哈希到整数函数,算法

基本概念所谓完美哈希函数,就是指没有冲突的哈希函数,即对任意的 key1 != key2 有h(key1) != h(key2)。设定义域为X,值域为Y, n=|X|,m=|Y|,那么肯定有m&amp;gt;=n,如果对于不同的key1,key2属于X,有h(key1)!=h(key2),那么称h为完美哈希函数,当m=n时,h称为最小完美哈希函数(这个时候就是一一映射了)。在处理大规模字符串数据时,...

2019-01-06 09:49:09 1917

原创 常数多项式、零次多项式和零多项式的差别

f(x)=aa≠0为0次多项式f(x)=aa≠0为0次多项式0次指的是x的次方数为0,正确应该写成ax^0 ,只是因为ax^0=a* 1=a所以x^0被省略了不写举例如果f(x)= ax3+bx2+cx+d为零次多项式表示abc都要等于0且d不等于0f(x )=0 a=0为零多项式当f(x)=a其中a=0时,f(x)=0也是一个多项式,叫做零多项式举例如果f(x)= ax...

2018-12-28 09:28:52 27689

转载 让你提升命令行效率的 Bash 快捷键 [完整版]

生活在 Bash shell 中,熟记以下快捷键,将极大的提高你的命令行操作效率。编辑命令Ctrl + a :移到命令行首Ctrl + e :移到命令行尾Ctrl + f :按字符前移(右向)Ctrl + b :按字符后移(左向)Alt + f :按单词前移(右向)Alt + b :按单词后移(左向)Ctrl + xx:在命令行首和光标之间移动Ctrl + u :从光标处删除至...

2018-11-30 11:55:02 122

原创 m-ary Partitions

A partition of an integer n is a set of positive integers which sum to n, typically written in descending order. For example:10 = 4+3+2+1 A partition is m-ary if each term in the partition is a power ...

2018-11-12 20:18:56 297

原创 poj1458 Common Subsequence

DescriptionA subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = &lt; x1, x2, …, xm &gt; another sequence Z = &lt; z1, z2, …, zk &g...

2018-11-09 19:16:49 136

原创 数据结构之循环链表

#include&amp;lt;stdio.h&amp;gt;#include&amp;lt;malloc.h&amp;gt;#include&amp;lt;string.h&amp;gt;#define M 30#define TRUE 1#define FALSE 0#define MAXSIZE 50#define QelemType inttypedef struct Node{ QelemType dat

2018-11-06 20:52:18 167

原创 数据结构之循环队列(顺序表实现)

#include&lt;stdio.h&gt;#include&lt;malloc.h&gt;#include&lt;string.h&gt;#define M 30#define TRUE 1#define FALSE 0#define MAXSIZE 50#define Qelemtype inttypedef struct{ Qelemtype element[MA...

2018-11-06 20:51:18 283

原创 数据结构之栈

#include&lt;stdio.h&gt;#include&lt;malloc.h&gt;#define ERROR 0#define OK 1#define STACK_INT_SIZE 10 /*存储空间初始分配量*/#define STACKINCREMENT 5 /*存储空间分配增量*/typedef int ElemType; /*定义元素的类型*/typedef ...

2018-11-06 20:49:32 124

转载 codeforces Cloud Computing

Elections in Berland are coming. There are only two candidates — Alice and Bob.The main Berland TV channel plans to show political debates. There are n people who wantto take part in the debate as a s...

2018-11-01 21:37:35 232

原创 约瑟夫环问题

n个数据元素构成一个环,从环中任意位置开始计数,计到m将该元素从表中取出,重复上述过程,直至表中只剩下一个元素。思路用一个无头结点的循环单链表来实现n个元素的存储。循环单链表:尾指针指向头结点。这样指针可以循环移动。技巧1,开两个指针,一个指向需要操作的元素的指针q,另一个指向需要操作的元素的前一个元素的指针p。为什么要指针q?当需要删除q所指的元素时,需要知道q之前的元素的位置,因为要...

2018-10-30 22:48:34 719

原创 区间dp

算法描述For p:=1 to n do // p是区间长度,作为阶段。for i:=1 to n do // i是穷举的区间的起点beginj:=i+p-1; // j是 区间的终点,这样所有的区间就穷举完毕if j&amp;gt;n then break; // 这个if很关键。for k:= i to j-1 do // 状态转移,去推出 f[i,j]f[i , j]= max{f[ ...

2018-10-20 13:15:39 112

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除