每日一个知识点系列的目的是针对某一个知识点进行概括性总结,可在一分钟内完成知识点的阅读理解,此处不涉及详细的原理性解读. 一.什么是总线风暴 总线风暴,听着真是一个帅气的词语,但如果发生在你的系统上那就不是很美丽了,废话不多说,先看图说结论. 什么是总线风暴,先来看结论 在java中使用unsafe实现cas,而其底层由cpp调用汇编指令实现的,如果是多核cpu是使用lock cmpxchg指令,单核cpu 使用compxch指令.如果在短时间内产生大量的cas操作在加上 volatile的嗅探…
每日一个知识点系列的目的是针对某一个知识点进行概括性总结,可在一分钟内完成知识点的阅读理解,此处不涉及详细的原理性解读. img 看图说话 关键点1: 总线嗅探器(MESI 缓存一致性原理 ) 关键点2: 总线锁.缓存锁,为了解决并发问题,会在内存区域的值加锁(内存锁),是在store 之前会给总线内的值加一个锁,write 完成后在解锁(这里大部分是缓存行锁的,总线锁看情况). 关键点3: 就是为了使一个CPU上运行的线程能够读取到另外一个CPU线程的共享变量更新.这个CPU必须先根据无效化队…
问题背景 在做USACO Section 1.1 Greedy Gift Givers的时候,我最初的想法是直接用一个map来进行数据处理.但是后来产生一个让我感到疑问的地方,后来我经过测试,发现了这个被我遗忘的一个知识点,可能对于大家来说这个小知识点算是一个"常识",但是我却没有想到,所以刻意将它记录下来加深自己的印象. 场景回顾 下面我用一个问题来重现自己的这个问题. 问题描述 在一个班级里面有N个人,他们的学号是按照他们入学报道的顺序确定的,在报道的时候确定学生的id.现在班主任…
每日一个Linux命令 2018-03-08 Linux 命令 chattr/lsattr chattr [-参数] [+/-属性] [文件或者目录] 经过今天没有对铃,粥熬糊了,我就知道...... 好记性不如烂笔头啊,主要还不是什么好记性...... chattr命令,用于改变文件属性. 我之前会问,对于一个文件,都有组,所有者,权限来控制文件的读写和操作,为什么还需要这个命令? 假如:对于一个文件,你 rm 了一下 , 这个文件就没了,也就找不回来了. 这个命令也就是为了解决像上述这种尴尬…
每日一个Linux命令 2018-03-07 Linux 命令 cat cat [-参数] fileName 在之前的Linux使用中 cat 命令一直作为文本输出指令来使用,很少可以深入学习的该命令,碰到特别长的文本就不用 cat 打开,直接打开Vim, 仔细学习之后,发现它也真的很方便. 功能: 1:输出整个文本内容. cat fileName 优点:快速查看整体内容,而不用做其他操作. 缺点:文本过大,导致你根本不能找到你想找到的东西. 辅助参数: -n :由 1 开始对所有输出的行数编号…
每日一个Linux命令 之 top   今天在公司测试服务器上跑了一个我写的功能[本地测试过的],但是不知道怎么跑了个无限死循环出来,一个文件的体积在不停的变大,如果不管的话这能行? 上去一看,PHP进程已经占用了60%,其他测试站点也受到影响,所以准备今天着重学习一下这两个指令. 和对象吵架了,停更得一天,今天的话再补充完善内容. top 命令,用于实时显示系统进程动态. 现在在linux下输入 top 看看 如果没有仔细研究过top的具体含义的划,那就对了,我也没. 不过今天学习完就会了,这…
每日一个Linux命令 2018-03-10 Linux 命令 find find [查找目录] [定义条件]   今天很累了,本来不想写了,但想到自己订的学习计划必须坚持下去,每天完成.   find命令, 用来在linux下查找文件.支持使用正则匹配查找文件.   find命令的参数有20多个,这里只使用经常使用的几个参数,如果需要的时候在进行查找. 1:通过名字查找 find [要查找的目录] -name "*.php" -name name, -iname name : 文件名…
每日一个Linux命令 2018-03-10 Linux 命令 cksum cksum [文件]  今天楼下的一个大妈去世了,不仅感叹,现如今,真的和以前不一样了,楼上楼下都不知道住的是谁? cksum命令用于检查文件的CRC是否正确.确保文件从一个系统传输到另一个系统的过程中不被损坏. CRC是一种排错检查方式,该校验法的标准由CCITT所指定,至少可检测到99.998%的已知错误. 说明已经很清楚了,这个命令的作用也就是检查文件的相同性,在于MD5和HASH的选择上,使用哪种方法,到时候就看…
每日一个Linux命令 2018-03-09 Linux 命令 chgrp/chown chgrp [-参数] [文件或者目录] chown [-参数] [文件所有者]:[文件所属群组] [文件或者目录] 世界是变化的,果然是正常的,今天有个同事离职了,在互联网行业,这也正常. 拥抱新变化. 正题: Linux有组的概念. 如果把组比作一个家的话,那么里面的文件就像你的私房钱,你可以花. 在这个家里的你老婆,也可以花,虽然比喻很粗糙,但是说明了组在管理文件中的作用. 为什么要设置组的概念呢? 还…
[每日一个小技巧]Python | input的提示信息换行输出,提示信息用变量表示 在书写代码的途中,经常会实现这样功能: 请输入下列选项前的序号: 1.选择1 2.选择2 3.选择3 在python中具体的实现的方法有: print("请输入下列选项前的序号\n",\ "1.选择1\n",\ "2.选择2\n",\ "3.选择3") i = input() 结果: >>> print("请输入下…
XMind 是一个全功能的思维导图和头脑风暴软件,为激发灵感和创意而生 https://www.xmind.cn/…
一.锁的劣势 (1) 在JDK1.5之前都是使用synchronized关键字保证同步的,这种通过使用一致的锁定协议来协调对共享状态的访问,可以确保无论哪个线程持有守 护变量的锁,都采用独占的方式来访问这些变量 (2)如果出现多个线程同时访问锁,则一些线程将被挂起,当线程恢复执行时,必须等待其它线程执行完他们的时间片以后才能被调度执行,在挂起和 恢复执行过程中存在着很大的开销 (3)当一个线程正在等待锁时,它不能做任何事 (4)如果一个线程在持有锁的情况下被延迟执行,那么所有需要这个锁的线程都无…
一.锁 锁是一种悲观的机制.为多线程提供了互斥的访问机制.多个线程同时竞争锁时,没获得锁的线程将会被挂起(智能的JVM会根据之前获取锁操作中对锁的持有时间长短来判断是使线程挂起还是自旋) 锁的劣势:1.未竞争到锁的线程挂起后再恢复时,会进行上下文的切换,开销大.2.当一个线程正在等待锁时,它不能干任何其它事情.如果持有锁的线程被延迟执行(例如发生了缺页错误.调度延迟.或者其它类似情况),那么所有需要该锁的线程都必须等待下去.如果被阻塞线程的优先级较高,而持有锁的线程优先级较低,那么这将是一个严重…
一.介绍 首先, java 的锁分为两类: 第一类是 synchronized 同步关键字,这个关键字属于隐式的锁,是 jvm 层面实现,使用的时候看不见: 第二类是在 jdk5 后增加的 Lock 接口以及对应的各种实现类,这属于显式的锁,就是我们能在代码层面看到锁这个对象,而这些个对象的方法实现,大都是直接依赖 CPU 指令的,无关 jvm 的实现. 接下来就从 synchronized 和 Lock 两方面来讲. 二.synchronized 2.1 synchronized 的使用 如果…
本系列文章用于汇集知识点,查漏补缺,面试找工作之用.数学公式较多,解释较少. 1.假设 2.sigmoid函数: 3.假设的含义: 4.性质: 5.找一个凸损失函数 6.可由最大似然估计推导出 单个样本正确预测的概率为 只是3两个式子合并在一起的表示方法 整个样本空间的概率分布为 取对数展开得, 作为损失函数,并且最小化它,则应改写为5式. 7.求解方法 最原始的方法,梯度下降法 先求导,并带入sigmoid表达式得 之后,参数更新为: 终止条件: 目前指定迭代次数.后续会谈到更多判断收敛和确定…
1.synchronized 是悲观锁,属于抢占式,会引起其他线程阻塞. 2.volatile 提供多线程共享变量可见性和禁止指令重排序优化. 3.CAS 是基于冲突检测的乐观锁(非阻塞)…
1, 简单说明. select * from tb_name where 1[不为零即可];则会显示所有记录,select * from tb_name where 0;则不显示任何记录 假设数据库中的一个字段aaa的值有1,2,3.当查询语句为 select * from tb_name where aaa & 1;  则查询结果中会显示出aaa为1和3的所有记录,而不会有aaa为2的记录. 查询过程为:每条记录中的aaa字段和1做位与运算&;结果不为0则显示,为零则不显示. 2, 一个…
注意:有些功能是需要权限的,在这里并没有写出来,在程序运行中,根据程序报的错误,添加相应的权限即可,里面的具体里面可能有一些小细节,没有明确的写出来,具体的需要在程序中自己调试,解决. 这个总结涵盖了Android的一些核心的内容,如四大组建Service.ContentProvider.BroadCastReceiver.Activity,而且四大组建都必须在清单文件中注册. 还涉及了Android手机底层的一些功能,如读取联系人.短信等.还有一些看似牛别点技术,什么短息拦截,电话拦截,黑名单…
自从开了博客之后,大部分是转发的,不断的ctrl+c和ctrl+v,知识是越屯越多,吸收的却很少,后来越来越懒,直接保存链接了. 我已经认识到了自己的错误,自己查询到的这些知识,以后还是会定期保存的,但是要筛选出精品,而且要自己验证后,再发出来,尽量要有原创的痕迹. 虽然泛读也是学习的一部分,但是不能都泛读,都了解,也要有重点的精读,没有出彩的地方,太多点缀也失去的意义,好的,废话就到这: 经过回忆,wait()和sleep()是多线程里面的知识,再延伸想到了线程的生命周期,复习一下吧. 线程的…
2014-3-31 1:39 (1)tree linux以树状的结构显示当前目录及其包含的子目录下的文件 #apt-get install tree #tree   //在当前目录下直接使用该命令即可 (2) rm 删除指令 rm -r 目录名  //表示递归的删除该目录下的所有文件和目录 (3) mkdir  创建目录命令 mkdir -p  待创建的目录的路径 (4) ls 列出当前目录下的所有文件及目录  ls (5) cp 复制命令 cp -r 源文件目录路径 目标文件目录路径 (6)…
小例子 public class VolatileTest { private static volatile int INIT_VALUE = 0; private final static int MAX_VALUE = 5; public static void main(String[] args) { // 读线程 new Thread(()->{ int localValue = INIT_VALUE; while (localValue < MAX_VALUE){ if (loc…
关于new操作符,看了两本书<Javascript高级程序设计3>和<你不知道的JS上>,以及其他文档后,终于豁然开朗. 现总结如下,希望同样懵逼的你,彻底理解它. 如果有不同的意见,欢迎留言讨论. 一.先看看两本书中的定义 <Javascript高级程序设计3> 第145页 1)创建一个新对象 2)将构造函数的作用域赋给新对象(因此this指向了这个新对象) 3)执行构造函数中的代码(为这个新对象添加属性) 4)返回新对象 <你不知道的JS上>第91页 1…
创建一个目录的软连接,比如我在家目录下创建一个/data/www/的软连接,如下 # cd ~ # ln -s /data/www hehe       #这里一定要注意顺序哈哈 然后当我进入hehe目录时,如下 # cd hehe 此时我打印当前目录,执行pwd的时候,会显示什么呢? 对了,的确是当前目录..显示 ~/hehe,而不是/data/www 当然有人会说,怎么显示指向的这个/data/www啊? 这里pwd有个参数P,只需要执行这个就可以. # pwd -P…
10天没有更新这个每日学习 linux 了,因为实在很忙,晚上还要看会其他知识. 但是也不应该给自己找理由,还是应该每天的坚持下去 -- tar 用于在 linux 解压缩/文件 这个命令下面的参数非常多,想看的可以去看下,这里只写出常用的解压缩命令. Linux tar命令 -- 压缩 例如我们要把 /etc 目录打包 1:打包文件目录为 .tar 包 tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩! 2:打包目录并且使用  gzip 压缩 tar -zcvf /t…
简介 日志的存在一直是 Linux 里面一个比较重要内容. 但是随着服务器运行的时间越来越长,日志越来越大.我见过一个线上项目 TP3.2 log文件有260+G的...... logrotate 也就是为了管理日志功能.可以实现对日志的管理. -- 概念 logrotate 是一个日志文件管理工具,用来把旧的日志文件删除,并创建新的日志文件. 我们把它叫做“转储”.我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行. logrotate 程序还可以用于压…
ps 用于查看系统内的进程状态. 这个命令比较重要,也比较长,会通过实践出常用的命令 -- 当我们敲下一个 ps 之后会发生什么? ubuntu@hong:~/nginx/sites-enabled$ ps PID TTY TIME CMD 6612 pts/4 00:00:00 bash 7213 pts/4 00:00:00 ps 结果会默认显示这四列信息,显示未排序 PID: 运行着的命令(CMD)的进程编号 TTY: 命令所运行的位置(终端) TIME: 运行着的该命令所占用的CPU处理…
今天还在想暴力破解一个服务器是怎么完成的....... -- lastb功能说明:列出登录系统失败的用户相关信息. -- 单独执行 lastb 时候,它会读取/var/log 下的 btmp 文件,输出全部登录失败的信息 root@iZ2zeanxksugue627kap1pZ:~# lastb -a hong ssh:notty Tue Apr 3 16:13 - 16:13 (00:00) 218.68.107.177 这里我挑取一条我故意登录失败的例子, 分别表示为 登录账户-登录方式-时…
今天看到一个很有意思的指令. sleep [睡觉/休眠] 的意思. 可以用来将目前动作延迟一段时间.之后触发 -- sleep number[smhd] 重要参数 number : 时间长度,后面可接 s.m.h 或 d其中 s 为秒,m 为 分钟,h 为小时,d 为日数 -- 自己理解,我觉得可以设置一些一次性的命令,重复性的命令由Cron实现 -- 例子 查看当前目录,15秒后输出当前目录到 index.html ls;sleep 15s;ls -al > index.html -- 其他…
感悟: 感觉每天学习下指令真的很不错,虽然感觉也没啥东西,但是真的用到了,马上就能想起来个大概,忘了详细的用法,就回来看看自己的博客. 话说今天GitHub上有个人 star 了我的项目,很开心,嘎嘎嘎. -- 先说如何增加一个用户 adduser 用于新增使用者资料,或者更新. adduser是增加使用者.与 useradd 指令为同一指令. 详细的看一看是很有必要的,避免出现用户建立了,但没有 home 目录的尴尬情况. -- adduser 用户名 最简单的一种建立用户的方法,但是,建立的…
Cron 用于配置定时任务. -- 环境为 Ubuntu16-04 -- 先说说怎么配置一个简单的定时任务.直观的可以看到效果. 之前在网上查找资料,对Shell编程不熟悉的实在是很头疼,走了不少弯路,但是这个又是是比较重要的命令. 先明白Cron的结构,Cron是一个[守护程序]用于在指定的时间内执行行程类的任务,每一个用户都有一个Crontab文件,执行计划.相同的,系统也有一个 Crontab. -- 创建一个定时任务 crontab -e 当你输入指令时,会出现下面的界面,我们直接向下看…