自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (21)
  • 收藏
  • 关注

转载 Java中的Condition

Condition调用await方法后,当前线程会释放锁并在此等待,而其他线程调用Condition对象的singal方法,通知当前线程,当前线程才从await方法返回,并且在返回前已经获取了锁。Condition的singalAll方法,相当于对等待队列的每个节点均执行一次singal方法,效果就是将等待队列中所有节点全部移动到同步队列,并唤醒每个节点的线程。调用await方法的线程成功获取了锁,该方法会将当前线程构造成节点并加入等待队列中,然后释放同步状态,唤醒同步队列中的后继节点。

2023-09-16 12:43:42 174

原创 PaddleOCR以及CUDA、cuDNN安装踩坑记录

安装cudnn,从官网(https://developer.nvidia.com/rdp/cudnn-download)下载安装包,如果是Ubuntu可以下载deb包直接安装,如果是CentOS则需要下载tar包自行解压,cudnn就是一堆头文件和链接库。找到提示报错的so文件后,后将文件软链到/usr/lib下(CentOS对应是/usr/lib64),并所在路径注册到LD_LIBRARY_PATH变量中(需要写在/etc/profile中,然后source一下)

2023-09-14 11:17:38 650

原创 Linux发散小知识

0号进程负责Kernel的初始化和启动工作,例如建立中断向量表,当Kernel启动完成后0号进程随之消亡。unix的数据流追求简单化、通用性、可视性、设备无关,二进制肯定无法做到这些,因此文本成为最好的选择。/proc虚拟文件系统成为procfs,其允许内核以文件的形式向用户空间输出内部信息,其中/proc/sys用来映射sysctl可操作的参数。Bash提示符显示时间,编辑~/.bashrc修改PS1变量,将/u@/h的地方改为/u@/t,source .bashrc即可生效。

2023-09-14 11:09:33 233

原创 linux中断处理的上半部和下半部

中断处理程序的上半部在接收到一个中断时就立即执行,但只做比较紧急的工作,这些工作都是在所有中断被禁止的情况下完成的,所以要快,否则其它的中断就得不到及时的处理。剩下的其他工作都可由下半部分执行。DECLARE_TASKLET (my_tasklet,my_tasklet_func,data)实现了将名称为my_tasklet的tasklet与my_tasklet_func()函数相关联。但是,在大多数真实的系统中,当中断到来时,要完成的工作往往并不会是短小的,它可能要进行较大量的耗时处理。

2023-09-09 08:41:48 431

原创 软中断与硬终端描述

在前后台程序中,由于只有中断上下文和一个任务上下文,所以中断上下文触发事件,设置标记位,任务上下文循环扫描标记位,执行相应的动作,也就是中断发生之后的事情由任务来完成了,只不过任务上下文采用扫描的方式,实时性不能得到保证。软中断的一种典型应用就是所谓的"下半部"(bottom half),它的得名来自于将硬件中断处理分离成"上半部"和"下半部"两个阶段的机制:上半部在屏蔽中断的上下文中运行,用于完成关键性的处理动作;很多情况下,软中断和"信号"有些类似,同时,软中断又是和硬中断相对应的,"硬中断是。

2023-09-09 08:41:03 111

原创 大页内存(HugePages)原理

若给定的页号没有超出页表长度,则将页表始址与页号和页表项长度的乘积相加,得到该表项在页表中的位置,于是可以从中得到该页的物理块地址,将之装入物理地址寄存器中。此外,由于页表项有10M之多,而快表只能缓存几百页,即使程序的访存性能很好,在大内存耗费情况下,快表缺失的概率也很大。在配置好了页表后,进程执行时,通过查找该表,即可找到每页在内存中的物理块号。上述地址变换机构对中小程序来说运行非常好,快表的命中率非常高,所以不会带来多少性能损失,但是当程序耗费的内存很大,而且快表命中率不高时,那么问题来了。

2023-09-09 08:36:41 272

原创 Linux中select poll和epoll的区别

对于第二个缺点,epoll的解决方案不像select或poll一样每次都把current轮流加入fd对应的设备等待队列中,而只在epoll_ctl时把current挂一遍(这一遍必不可少)并为每个fd指定一个回调函数,当设备就绪,唤醒等待队列上的等待者时,就会调用这个回调函数,而这个回调函数会把就绪的fd加入一个就绪链表)。epoll_wait的工作实际上就是在这个就绪链表中查看有没有就绪的fd(利用schedule_timeout()实现睡一会,判断一会的效果,和select实现中的第7步是类似的)。

2023-09-09 08:34:52 451

原创 Linux下如何查看和调试进程信息

通过ldd(ld=ld depandency)命令输出进程二进制链接的共享库和模块依赖。通过vmstat命令的cs列可以查看系统的上下文切换,上下文切换越高,说明线程越多。通过strings命令查看嵌于二进制文件中的字符串。通过strace跟踪一个进程发出和接收的系统调用。通过strip命令去除符号表可以给可执行文件瘦身。通过pstree查看进程启用的子进程或线程。通过nm命令查看进程二进制的符号定义。通过lsof查看进程打开的文件句柄。通过file命令查看文件类型。通过pmap查看进程占用。

2023-09-09 08:31:37 110

原创 grep正则说明

范围是数字用,隔开 2,5 表示2~5个, 2表示2个,2, 表示2到更多个 ,注意,由于{ }在SHELL中有特殊意义,因此作为正则表达式用的时候要用\转义一下。行首与行尾字符 ^ $. ^ 表示行的开头,$表示行的结尾( 不是字符,是位置)那么‘^$' 就表示空行,因为只有行首和行尾。[] 内可以用范围表示,比如[a-z] 表示小写字母,[0-9] 表示0~9的数字, [A-Z] 则是大写字母们。利用[]搜索集合字符,[] 表示其中的某一个字符 ,例如[ade] 表示a或d或e。

2023-09-09 08:29:31 125

原创 vim的使用快捷键之删除、复制、粘贴

ctrl+r 与u相反,表示重做前一步操作(特别重要,类似于windows里面的word里面的crtl+y)nX n表示数字,表示向前删除每个字符,例如:10X表示删除光标前的10个字符,不包括光标所在字符。nx n表示数字,表示向后删除每个字符,例如:10x表示删除包括光标在内的后面10个字符。x 小写的x表示向后删除一个字符,也就是删除光标所在字符。X 大写的X表示删除光标前的一个字符,不包括光标所在字符。ndd n表示数字,删除光标所在的向下n行。nyy n表示数字,复制光标所在的向下n行。

2023-09-09 08:28:56 801

原创 ldconfig和ldd用法

ldconfig 命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为 /etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表。2. 想往上面两个目录以外加东西的时候,一定要修改/etc/ld.so.conf,然后再调用ldconfig,不然也会找不到。行模块的dependency。

2023-09-09 08:28:12 244

原创 什么是Linux的Overcommit和OOM

注意:redis在dump数据的时候,会fork出一个子进程,理论上child进程所占用的内存和parent是一样的,比如parent占用 的内存为8G,这个时候也要同样分配8G的内存给child,如果内存无法负担,往往会造成redis服务器的down机或者IO负载过高,效率下降。在Unix中,当一个用户进程使用malloc()函数申请内存时,假如返回值是NULL,则这个进程知道当前没有可用内存空间,就会做相应的处理工作。合理的overcommit会被接受,不合理的overcommit会被拒绝。

2023-09-09 08:26:34 355

原创 Shell 字符串比较

这是最基本的比较方法,使用lt(小于),gt(大于),le(小于等于),ge(大于等于),优点:还没发现;方法四: if (echo ${A} - ${B} | bc -q | grep -q "^-");方法四:typeset C=${echo ${A} ${B} | awk '{print $1+$2}')5 [ "$a" == "z*" ] # 如果$a等于z*(字符匹配),那么结果为true。缺点:还是只能比较整数。>= 大于等于(需要双括号),如:(("$a" >= "$b"))

2023-09-09 08:24:31 172

原创 Linux和UNIX系统监控工具

cron:可以让你安排进程执行的子系统。你可以安排这些实用程随着时间的推移定期收集统计信息,并可以在特定时间负载期间)查看统计信息。并显示用户登录数量和在 1分钟钟的内系统平均负荷量。vmstat:显示内存、分页、块传输和 CPU 活动的相关信息。iostat:显示平均磁盘活动和处理器负载情况。mpstat:显示多处理器系统的 CPU使用率。top:显示根据CPU使用率排序的活动进程。pmap:显示各种进程分别占用内存的情况。netstat:显示网络活动的相关信息。ps:显示系统上运行的进程列表。

2023-09-09 08:22:29 40

原创 Bash常见快捷键

中,熟记以下快捷键,将极大的提高你的命令行操作效率。

2023-09-09 08:19:28 691

原创 Netfilter的结构分表

Netfilter模块是提供某些过滤匹配的功能,如果希望Netfilter能为我们做些事,就必须给予Netfilter执行“规则”,有了规则之后,Netfilter才会知道哪些数据包是可以被接受的,哪些数据包是必须丢弃的,又有哪些包是必须以特殊方式来处理的。而赋予Netfilter规则的方式,则是将规则填写到一块结构化内存中,这样Netfilter就会按照防火墙管理人员所给出的命令来运行。

2023-09-09 08:13:04 90

原创 Linux常用小工具

clusterssh:远程终端墙工具(配置文件~/.csshrc)cssh cluster1 -f "7x14" (cluster1在.csshrc中定义的集群,-f指定字体大小)python -m SimpleHTTPServer 80:开启简单HTTP服务(需要root启动,将启动目录作为DocumentRoot)dd if=/dev/zero of=test bs=1M count=1000 :快速产生一个大文件。mpstat:查看cpu统计信息,可以按秒连续查看。ifstat:查看网卡流量。

2023-09-09 08:09:09 61

转载 简明 Vim 练级攻略

也就是说,Ctrl键就好像功能键一样,当你按下了功能键Ctrl后,C就不在是C了,而且就是一个命令或是一个快键键了,在VIM的Normal模式下,所有的键就是功能键了。上面的那些命令只能让你存活下来,现在是时候学习一些更多的命令了,下面是我的建议:(陈皓注:所有的命令都需要在Normal模式下使用,如果你不知道现在在什么样的模式,你就狂按几次ESC键)(陈皓注:可视化选择是一个很有意思的命令,你可以先按v,然后移动光标,你就会看到文本被选择,然后,你可能d,也可y,也可以变大写等)(陈皓注:程序语句)

2023-09-09 08:07:39 34

转载 Ubuntu下安装nodejs 16

【代码】Ubuntu下安装nodejs 16。

2023-09-08 15:50:10 1489 1

转载 GoLang反射的规则

反射的规则在运行时反射是程序检查其所拥有的结构,尤其是类型的一种能力;这是元编程的一种形式。它同时也是造成混淆的重要来源。在这篇文章中将试图明确解释在 Go 中的反射是如何工作的。每个语言的反射模型都不同(同时许多语言根本不支持反射)。不过这篇文章是关于 Go 的,因此接下来的内容“反射”这一词表示“在 Go 中的反射”。类型和接口由于反射构建于类型系统之上,就从复习一下

2015-08-17 11:14:39 736

转载 Java排序算法:快速排序

[算法思想]通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的元素均比另一部分记录的元素小,然后分别对这两部分记录继续进行排序,从而达到整个序列有序的目的。快速排序是冒泡排序的升级版,因为它的思想也是元素的交换。[java实现][java] view plaincopypublic class Qu

2015-06-25 09:08:09 497

转载 Java排序算法:归并排序

[算法思想]假设初始序列含有n个元素,我们可以把它看成是n个有序的子序列,每个子序列的长度为1,然后两两合并,得到n/2个长度为2的有序子序列,再两两归并... 如此重复,直至得到一个长度为n的有序序列位置,这种排序方法称为2路归并排序。如:无序数组序列{50, 10, 90, 30, 70, 40, 80, 60, 20}[java实现]使用递归:

2015-06-25 09:07:09 398

转载 Java排序算法:堆排序

[算法说明]堆排序是对简单选择排序的改进简单选择排序是从n个记录中找出一个最小的记录,需要比较n-1次。但是这样的操作并没有把每一趟的比较结果保存下来,在后一趟的比较中,有许多比较在前一趟已经做过了,但由于前一趟排序时未保存这些比较结果,所以后一趟排序时又重复执行了这些比较操作,因而记录的比较次数较多。堆是具有下列性质的完全二叉树:每个结点的值都大于或等于其左右

2015-06-25 09:05:43 452

转载 二十个经典管理学定律

1.【蝴蝶效应】    蝴蝶效应:上个世纪70年代,美国一个名叫洛伦兹的气象学家在解释空气系统理论时说,亚马逊雨林一只蝴蝶翅膀偶尔振动,也许两周后就会引起美国得克萨斯州的一场龙卷风。      蝴蝶效应是说,初始条件十分微小的变化经过不断放大,对其未来状态会造成极其巨大的差别。有些小事可以糊涂,有些小事如经系统放大,则对一个组织、一个国家来说是很重要的,就不能糊涂。    今天的企业,

2015-06-25 09:03:50 854

转载 深入解析:分布式系统的事务处理经典问题及模型(转载分享)

摘要:分布式系统需要在数据完整、一致性和性能间做平衡。本文系统介绍了处理分布式数据一致性的技术模型,如:Master-Slave,Master-Master,2PC/3PC,经典的将军问题,Paxos,以及Dynamo的NRW和VectorClock的模型。编者按:数据服务的高可用是所有企业都想拥有的,但是要想让数据有高可用性,就需要冗余数据写多份。写多份的问题会带来一致性的问题,而一

2015-04-13 10:07:47 492

原创 通过非对称加密简化SSH登录

通过非对称加密简化SSH登录

2014-12-17 13:37:10 761

原创 Ubuntu搜狗输入法美化与修复

虽然个人很喜欢Linux,但是shiyo

2014-11-25 10:14:38 2201

转载 goroutine背后的系统知识

Go语言从诞生到普及已经三年了,先行者大都是Web开发的背景,也有了一些普及型的书籍,可系统开发背景的人在学习这些书籍的时候,总有语焉不详的感觉,网上也有若干流传甚广的文章,可其中或多或少总有些与事实不符的技术描述。希望这篇文章能为比较缺少系统编程背景的Web开发人员介绍一下goroutine背后的系统知识。1. 操作系统与运行库2. 并发与并行 (Concurrency and Pa

2014-11-13 13:49:48 642

原创 使用Go语言计算网络IP地址的CIDR

使用了Java、C#等许多语言好多年了,

2014-11-07 15:55:43 8520 1

原创 Linux下开发JNI程序

随着分布式程序近几年的,Java随着Linux和

2014-09-30 09:40:35 1865

原创 结对开发小感

先前在日企工作时,虽然看到过

2014-06-21 08:53:28 2129

原创 Ubuntu输入法从IBUS改为Fcitx

上周发现搜狗团队发布了搜狗

2014-04-26 11:49:42 17379 2

Docker 容器与容器云(第2版)

Docker 容器与容器云(第2版),扫描电子书,完整版469页

2018-11-01

synergy1.8.2

多台电脑间共享键盘的经典软件:synergy-v1.8.2,最新版性能稳定提升,包含Ubuntu32/64、Win32/64 、RPM32/64、MAC10.10/10.11全系列安装包

2016-08-10

synergy 1.7.6

多台电脑间共享键盘的经典软件:synergy-v1.7.6, 包含Ubuntu32/64、Win32/64 、RPM32/64、MAC10.10/10.11全系列安装包

2016-05-30

synergy-v1.7.3

多台电脑间共享键盘的经典软件:synergy-v1.7.3, 包含Ubuntu、Win32、Win64三个安装包

2015-07-31

linux kernel 0.11

linux kernel 0.11,学习必备。

2015-05-07

Spring Framework 4.1源代码

Spring Framework 4.1 源代码,Github最新主分支。

2014-11-25

cgroups介绍

Linux内核cgroups机制介绍,干货一篇,感谢同行的努力。

2014-11-25

2014年架构师大会PPT资料(Part1)

2014年中国架构师大会演讲PPT,第一部分。

2014-11-24

2014年容器大会PPT资料

2014年容器大会PPT资料,docker内容较多。

2014-11-24

2014年架构师大会PPT资料(Part2)

2014年中国架构师大会演讲PPT,第二部分。

2014-11-24

数据结构与算法分析(Java语言描述)

数据结构与算法分析,Java语言描述,带有目录索引。

2014-11-11

云计算和大数据时代网络技术揭秘

讲解云计算机房的网络设计,内容干货,对云计算网络设计有很好参考意义。

2014-11-11

Linux sed与awk命令详解

描述linux下sed和awk命令的详细用法,中文版,48页。

2014-11-11

C10K并发(英文)

描述C10K并发问题的解决,英文版,供参考,理论性偏强

2014-11-11

synergy-linux

用来在多台电脑间共享键盘鼠标的小工具,这样桌面上就不用摆放好几套键盘鼠标了,其中一台以服务器模式启动,其它的以客户端模式启动,通过指定IP连接服务器就可以了。注意本版本对于虚拟机不是很好用。

2014-09-30

Spring3.2 Jar文件

Spring3.2.4开发Jar文件,附带文档,不含代码

2014-01-27

Spring4.0源代码

Spring4.0源代码,GitHub 2014.1月份最新版

2014-01-27

一个简单易用的MP3编辑器

一个简单易用的MP3编辑器,主要用来裁剪和编辑铃声

2014-01-21

Java 6 JVM参数选项大全

描述JVM6主要的调试启动参数,网上收集整理。

2014-01-21

空空如也

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

TA关注的人

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