- 浏览: 31617 次
- 性别:
文章列表
什么是select,它的工作原理,优缺点?select是多路复用模型下的一个模块,工作原理:通过调用select,向内核拷贝fd(文件描述符),内核监视select下的所有套接字,会遍历所有套接字,查看是否有事件发生,没有事件发生则睡眠,直到有事件发生,或者timeout时间到了后,唤醒,再次遍历,内核一旦查看到有事件发生,则返回遍历后的fd,将fd从内核拷贝到用户空间,用户进程再根据fd遍历一遍,找到发生事件的套接字优点:使服务端达到并发的效果,只用到单线程,所用的cpu资源少,减少了网络io堵塞缺点:1,遍历的fd在linux上有数量限制,1024个2,fd从用户态拷贝到内核态,每次都需要 ...
一、为什么要加锁
锁机制用于管理对共享资源的并发访问。
当多个用户并发地存取数据时,在数据库中就可能会产生多个事务同时操作同一行数据的情况,若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据的一致性。
一种典型的并发问题——丢失更新(其他锁问题及解决方法会在后面说到):
注:RR默认隔离级别下,为更清晰体现时间先后,暂时忽略锁等待,不影响最终效果~
时间点
事务A
事务B
1
开启事务A
2
开启事务B
3
查询当前商品S库存为100
4
查询当前商品S库存为1
在学校期间大家都写过不少程序,比如写个hello world服务类,然后本地调用下,如下所示。这些程序的特点是服务消费方和服务提供方是本地调用关系。
而一旦踏入公司尤其是大型互联网公司就会发现,公司的系统都由成千上万大大小小的服务组成,各服务部署在不同的机器上,由不同的团队负责。这时就会遇到两个问题:1)要搭建一个新服务,免不了需要依赖他人的服务,而现在他人的服务都在远端,怎么调用?2)其它团队要使用我们的新服务,我们的服务该怎么发布以便他人调用?下文将对这两个问题展开探讨。
1 public interface HelloWorldService {
什么是JMM
JMM即为JAVA 内存模型(java memory model)。因为在不同的硬件生产商和不同的操作系统下,内存的访问逻辑有一定的差异,结果就是当你的代码在某个系统环境下运行良好,并且线程安全,但是换了个系统就出现各种 ...
编译安装前所需要的准备:
1.GCC编译器首先检查GCC是否安装,命令:gcc -v ,如果显示有相关版本信息,则说明已经安装好,没有就安装:
yum install -y gcc # -y参数表示一直确认安装
2.PCRE库Nginx的HTTP模块要用它来解析正则表达式。
yum install -y pcre pcre-devel
pcre-devel是使用PCRE做二次开发时所需要的开发库。类似的你可以想到安装LAMP时安装的php-devel。3.zlib库gzip格式的压缩会用到它。
idea激活,JetBrain旗下软件激活
idea激活,JetBrain旗下软件激活
前言
激活流程
1. 下载JetbrainsCrack.jar
2. 修改配置文件
由于mysql 5.7.17版本以后 support_files文件夹中无 my_default.cnf 文件,所以今天给大家详细描述一下 mysql 5.7.20版本(目前官方最新版)的安装步骤。
第一步:下载mysql最新版
wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
第二步:在/usr/local/中解压压缩包,并改名为mysql
cd /usr/local/
tar -xzvf /data/software/mysql-5.7.13 ...
solr那是我1年前使用到的一个搜索引擎,由于当初对于配置了相应了,但是今天突然面试问到了,哎,太久了,真的忘记了,今天特地写一篇博客记下来
solr是一个独立的企业级搜索应用服务器,它对外t提供类似于web-service的api接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的xml文件,生成索引。;
也可以通过http get操作提出查询的请求,得到xml/json格式的返回结果
Lucene是一个高效的,基于Java的全文检索库。
所以在了解Lucene之前要费一番工夫了解一下全文检索。
那么什么叫做全文检索呢?这要从我们生活中的数据说起。
我们生活中的 ...
在网上查了好久的资料,也成功设置了catalina.sh 文件,可是就是不能链接上,心累啊,折腾了两个小时,所以说还是要看一手的资料,不然会走很多的弯路的。下面就是我设置的步骤:
(centos7+jdk8+tomcat 8)
1、vi打开catalina.sh 文件,就是在你tomcat路径下的bin文件夹下,在如下位置添加
[plain] view plain copy print?
JAVA_OPTS="-Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote.po ...
由于mysql 5.7.17版本以后 support_files文件夹中无 my_default.cnf 文件,所以今天给大家详细描述一下 mysql 5.7.20版本(目前官方最新版)的安装步骤。
第一步:下载mysql最新版
wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
第二步:在/usr/local/中解压压缩包,并改名为mysql
cd /usr/local/
tar -xzvf /data/software/mysql-5.7.13 ...
GC
gc:java的垃圾回收机制
在java中,内存的分配是由程序完成的,而内存的释放是由GC完成
调用System类的静态方法gc()可以进行垃圾回收,但它只是向JVM发出一个申请,到底是否真正执行垃圾收集,一切都是个未知数
垃圾回收的三种算法
标记清除算法:
标记阶段:先通过根节点,标记所有从根节点开始的对象,未标记的未垃圾对象
清除阶段:清除所有未标记的对象
mysql锁机制分为表级锁和行级锁,本文就和大家分享一下我对mysql中行级锁中的共享锁与排他锁进行分享交流。
共享锁又称为读锁,简称S锁,顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能修改。
排他锁又称为写锁,简称X锁,顾名思义,排他锁就是不能与其他所并存,如一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁,包括共享锁和排他锁,但是获取排他锁的事务是可以对数据就行读取和修改。
对于共享锁大家可能很好理解,就是多个事务只能读数据不能改数据,对于排他锁大家的理解可能就有些差别,我当初就犯了一个错误,以为排他锁锁住一行数据后,其他事 ...
设计模式(Design Patterns)
——可复用面向对象软件的基础
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该 ...