- 博客(32)
- 资源 (21)
- 收藏
- 关注
转载 Java中的Condition
Condition调用await方法后,当前线程会释放锁并在此等待,而其他线程调用Condition对象的singal方法,通知当前线程,当前线程才从await方法返回,并且在返回前已经获取了锁。Condition的singalAll方法,相当于对等待队列的每个节点均执行一次singal方法,效果就是将等待队列中所有节点全部移动到同步队列,并唤醒每个节点的线程。调用await方法的线程成功获取了锁,该方法会将当前线程构造成节点并加入等待队列中,然后释放同步状态,唤醒同步队列中的后继节点。
2023-09-16 12:43:42
302
原创 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
1094
原创 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
288
原创 linux中断处理的上半部和下半部
中断处理程序的上半部在接收到一个中断时就立即执行,但只做比较紧急的工作,这些工作都是在所有中断被禁止的情况下完成的,所以要快,否则其它的中断就得不到及时的处理。剩下的其他工作都可由下半部分执行。DECLARE_TASKLET (my_tasklet,my_tasklet_func,data)实现了将名称为my_tasklet的tasklet与my_tasklet_func()函数相关联。但是,在大多数真实的系统中,当中断到来时,要完成的工作往往并不会是短小的,它可能要进行较大量的耗时处理。
2023-09-09 08:41:48
498
原创 软中断与硬终端描述
在前后台程序中,由于只有中断上下文和一个任务上下文,所以中断上下文触发事件,设置标记位,任务上下文循环扫描标记位,执行相应的动作,也就是中断发生之后的事情由任务来完成了,只不过任务上下文采用扫描的方式,实时性不能得到保证。软中断的一种典型应用就是所谓的"下半部"(bottom half),它的得名来自于将硬件中断处理分离成"上半部"和"下半部"两个阶段的机制:上半部在屏蔽中断的上下文中运行,用于完成关键性的处理动作;很多情况下,软中断和"信号"有些类似,同时,软中断又是和硬中断相对应的,"硬中断是。
2023-09-09 08:41:03
189
原创 大页内存(HugePages)原理
若给定的页号没有超出页表长度,则将页表始址与页号和页表项长度的乘积相加,得到该表项在页表中的位置,于是可以从中得到该页的物理块地址,将之装入物理地址寄存器中。此外,由于页表项有10M之多,而快表只能缓存几百页,即使程序的访存性能很好,在大内存耗费情况下,快表缺失的概率也很大。在配置好了页表后,进程执行时,通过查找该表,即可找到每页在内存中的物理块号。上述地址变换机构对中小程序来说运行非常好,快表的命中率非常高,所以不会带来多少性能损失,但是当程序耗费的内存很大,而且快表命中率不高时,那么问题来了。
2023-09-09 08:36:41
439
原创 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
503
原创 Linux下如何查看和调试进程信息
通过ldd(ld=ld depandency)命令输出进程二进制链接的共享库和模块依赖。通过vmstat命令的cs列可以查看系统的上下文切换,上下文切换越高,说明线程越多。通过strings命令查看嵌于二进制文件中的字符串。通过strace跟踪一个进程发出和接收的系统调用。通过strip命令去除符号表可以给可执行文件瘦身。通过pstree查看进程启用的子进程或线程。通过nm命令查看进程二进制的符号定义。通过lsof查看进程打开的文件句柄。通过file命令查看文件类型。通过pmap查看进程占用。
2023-09-09 08:31:37
208
原创 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
167
原创 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
921
原创 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
278
原创 什么是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
450
原创 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
207
原创 Linux和UNIX系统监控工具
cron:可以让你安排进程执行的子系统。你可以安排这些实用程随着时间的推移定期收集统计信息,并可以在特定时间负载期间)查看统计信息。并显示用户登录数量和在 1分钟钟的内系统平均负荷量。vmstat:显示内存、分页、块传输和 CPU 活动的相关信息。iostat:显示平均磁盘活动和处理器负载情况。mpstat:显示多处理器系统的 CPU使用率。top:显示根据CPU使用率排序的活动进程。pmap:显示各种进程分别占用内存的情况。netstat:显示网络活动的相关信息。ps:显示系统上运行的进程列表。
2023-09-09 08:22:29
77
原创 Netfilter的结构分表
Netfilter模块是提供某些过滤匹配的功能,如果希望Netfilter能为我们做些事,就必须给予Netfilter执行“规则”,有了规则之后,Netfilter才会知道哪些数据包是可以被接受的,哪些数据包是必须丢弃的,又有哪些包是必须以特殊方式来处理的。而赋予Netfilter规则的方式,则是将规则填写到一块结构化内存中,这样Netfilter就会按照防火墙管理人员所给出的命令来运行。
2023-09-09 08:13:04
143
原创 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
87
转载 简明 Vim 练级攻略
也就是说,Ctrl键就好像功能键一样,当你按下了功能键Ctrl后,C就不在是C了,而且就是一个命令或是一个快键键了,在VIM的Normal模式下,所有的键就是功能键了。上面的那些命令只能让你存活下来,现在是时候学习一些更多的命令了,下面是我的建议:(陈皓注:所有的命令都需要在Normal模式下使用,如果你不知道现在在什么样的模式,你就狂按几次ESC键)(陈皓注:可视化选择是一个很有意思的命令,你可以先按v,然后移动光标,你就会看到文本被选择,然后,你可能d,也可y,也可以变大写等)(陈皓注:程序语句)
2023-09-09 08:07:39
59
转载 GoLang反射的规则
反射的规则在运行时反射是程序检查其所拥有的结构,尤其是类型的一种能力;这是元编程的一种形式。它同时也是造成混淆的重要来源。在这篇文章中将试图明确解释在 Go 中的反射是如何工作的。每个语言的反射模型都不同(同时许多语言根本不支持反射)。不过这篇文章是关于 Go 的,因此接下来的内容“反射”这一词表示“在 Go 中的反射”。类型和接口由于反射构建于类型系统之上,就从复习一下
2015-08-17 11:14:39
818
转载 Java排序算法:快速排序
[算法思想]通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的元素均比另一部分记录的元素小,然后分别对这两部分记录继续进行排序,从而达到整个序列有序的目的。快速排序是冒泡排序的升级版,因为它的思想也是元素的交换。[java实现][java] view plaincopypublic class Qu
2015-06-25 09:08:09
523
转载 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
438
转载 Java排序算法:堆排序
[算法说明]堆排序是对简单选择排序的改进简单选择排序是从n个记录中找出一个最小的记录,需要比较n-1次。但是这样的操作并没有把每一趟的比较结果保存下来,在后一趟的比较中,有许多比较在前一趟已经做过了,但由于前一趟排序时未保存这些比较结果,所以后一趟排序时又重复执行了这些比较操作,因而记录的比较次数较多。堆是具有下列性质的完全二叉树:每个结点的值都大于或等于其左右
2015-06-25 09:05:43
517
转载 二十个经典管理学定律
1.【蝴蝶效应】 蝴蝶效应:上个世纪70年代,美国一个名叫洛伦兹的气象学家在解释空气系统理论时说,亚马逊雨林一只蝴蝶翅膀偶尔振动,也许两周后就会引起美国得克萨斯州的一场龙卷风。 蝴蝶效应是说,初始条件十分微小的变化经过不断放大,对其未来状态会造成极其巨大的差别。有些小事可以糊涂,有些小事如经系统放大,则对一个组织、一个国家来说是很重要的,就不能糊涂。 今天的企业,
2015-06-25 09:03:50
914
转载 深入解析:分布式系统的事务处理经典问题及模型(转载分享)
摘要:分布式系统需要在数据完整、一致性和性能间做平衡。本文系统介绍了处理分布式数据一致性的技术模型,如:Master-Slave,Master-Master,2PC/3PC,经典的将军问题,Paxos,以及Dynamo的NRW和VectorClock的模型。编者按:数据服务的高可用是所有企业都想拥有的,但是要想让数据有高可用性,就需要冗余数据写多份。写多份的问题会带来一致性的问题,而一
2015-04-13 10:07:47
514
转载 goroutine背后的系统知识
Go语言从诞生到普及已经三年了,先行者大都是Web开发的背景,也有了一些普及型的书籍,可系统开发背景的人在学习这些书籍的时候,总有语焉不详的感觉,网上也有若干流传甚广的文章,可其中或多或少总有些与事实不符的技术描述。希望这篇文章能为比较缺少系统编程背景的Web开发人员介绍一下goroutine背后的系统知识。1. 操作系统与运行库2. 并发与并行 (Concurrency and Pa
2014-11-13 13:49:48
716
synergy1.8.2
2016-08-10
synergy 1.7.6
2016-05-30
synergy-linux
2014-09-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人