现在位置: 首页 > 自动控制 > 文章
Linux内核使用三种不同的版本编号方式。 第一种方式用于1.0版本之前(包括1.0)。第一个版本是0.01,紧接着是0.02、0.03、0.10、0.11、0.12、0.95、0.96、0.97、0.98、0.99和之后的1.0。 第二种方式用于1.0之后到2.6,数字由三部分“A.B.C”,A代表主版本号,B代表次主版本号,C代表较小的末版本号。只有在内核发生很大变化时(历史上只发生过两次,1994年的1.0,1996年的2.0),A才变化。可以通过数字B来判断Linux是否稳定,偶数的B代...
阅读全文
failfast(快速故障) 描述: 如果出现故障,则立即报错。 通常用于非幂等性操作,如:下单操作,如果写入故障,则立即报错,不必重试。 示例:     /**      * fail-fast: 快速故障      */     public Object failFast() {         //保存订单  ...
阅读全文
2019-10-04 07:31 工业·编程 ⁄ 共 3963字 暂无评论
工作第一年,往往是什么都充满新鲜感,什么都学习,冲劲十足的一年;WEB行业知识更新特别快,今天一个框架的新版本,明天又是另一个新框架,有时往往根据项目的需要来不断学习新东西;所有,很多时候感觉,自己用过的东西真多呀!但是真正深入研究的东西却不多。面试,是跳槽后第一个需要面对的问题;而且不同公司面试的着重点不同;但是却有一个共同点:Java基础是必考的。 工作第一年,可能问你String对象创建的理解,常用的...
阅读全文
2019-10-03 07:23 工业·编程 ⁄ 共 1782字 暂无评论
冒泡: 第i个元素与第 i+1个元素俩俩相比然后互换位置,第一次循环会把最大的元素挪到最后,第二次是把第二大的元素挪到倒数第二。。。。。每次都会把最大的元素不断往后冒,与选择排序刚好相反。复杂度:n^2 选择: 用第i个元素比较后面的所有元素,从前往后比较,一直找到最小的一个挪到最左边,其实就是替换i的位置,与冒泡排序相反,第一次能找到最小的元素,第二次能找到第二小的元素。。。。复杂度:n^2 插入: 从前往后...
阅读全文
2019-10-02 07:03 工业·编程 ⁄ 共 10125字 暂无评论
Q:一个业务服务器,一个数据库,操作:查询用户当前余额,扣除当前余额的3%作为手续费 · synchronized · lock · db lock Q:两个业务服务器,一个数据库,操作:查询用户当前余额,扣除当前余额的3%作为手续费 · 分布式锁 我们需要怎么样的分布式锁? 可以保证在分布式部署的应用集群中,同一个方法在同一时间只能被一台机器上的一个线程执行。 这把锁要是一把可重入锁(避免死锁) 这把锁最好是一把阻塞锁(根据业务需求考虑...
阅读全文
2019-10-01 06:55 工业·编程 ⁄ 共 7511字 暂无评论
在分布式系统的时代中,微服务、服务治理、中间件等名次已经贯穿了我们开发的各个过程,给开发者们提供了很多便捷的方式去更好的开发大型的web系统,这篇文章,主要给大家简单说一下分布式锁。 在我们常见的xxx管理系统中,没有那么大的数据量,也没必要去引入中间件去搞。但,时代不同了,无论从tob端或者toc端,目前大型的系统网站,在开发初期,在技术选型上,都在追求或者考虑未来的高并发、高可用的场景。往往单一的jvm实...
阅读全文
2019-09-30 06:39 工业·编程 ⁄ 共 3083字 暂无评论
分布式锁有几种常用的实现方式:zookeeper、memcached、redis、mysql。这里介绍一下redis的实现方式,并在最后附上了一个Demo小工具: 众所周知,reids锁是通过setnx + expire的方式实现的,setnx保证只有在key不存在时才能set成功,expire保证锁在非正常释放的情况下不会形成死锁。基本原理就是这个,但实际操作中我们需要注意几个问题: 1)setnx与expire是非原子性的,那么如果setnx执行成功、但expire未执行,那么锁也就无法...
阅读全文
看起来像是个“鸡生蛋,蛋生鸡”的问题,实际上不是的。 这个问题的关键在于理解,编译器本身就是一个程序,它的功能就是把源代码翻译为计算机可执行的程序。 对于 C/C++、Go、Rust 这样的本地语言,它们编译生成后的目标程序就是目标平台的本地可执行程序。比如你用这三种语言写个 Hello World,在 Windows 平台下用编译的结果一定是一个 .exe 文件,这些 .exe 文件里面没有包含任何源语言的信息。Windows 运行它们的时候不知道...
阅读全文
一 概述 中篇已经提到了钩子函数的注册,也知道最终数据进来是通过钩子函数处理,来实现防火墙的功能的。那么netfilter 内核是在什么时候调用钩子函数?钩子函数又是怎么实现防火墙对应的功能的?(本章主要讲钩子函数实现的过滤功能) 二 调用钩子函数 中篇知道钩子函数最终会注册挂载到 struct net 结构体下的struct netns_nf nf 结构体中,但是钩子函数又是在什么时候调用的呢? 前篇在讲解五链表提到一张图,如下图 其实钩...
阅读全文
一 概述 前篇主要提到了用户空间iptables 1.3.5源码对规则的处理。但是并没有涉及内核空间netfliter 模块的处理。用户空间上的规则要生效最终肯定是通过传给内核空间的netfilter,让netfliter这个老大哥处理。因此抛出两个问题。 · 用户空间的是怎么获取内核空间已经存在的规则,或者用户空间是如何将需要netfilter处理的规则下发给内核?简而言之,规则在用户空间是如何跟内核空间交互的。 · netfilter 内核收到用户空间的请求...
阅读全文