自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 如何理解协议-网络编程

网络里面有各种协议,比如TCP,UDP,IP,HTTP,FTP,Telnet,SMTP,POP3,TCP,UDP是传输层协议,是OSI中中间层,它服务于上有三层(会话层,表示层,应用层),依赖下有三层(网络层、链路层、物理层)提供的服务; ip就是网络层协议,http,ftp,telnet,smtp,pop3就是应用层协议。tcp的三次握手建立连接,想必大家都再清楚不过了。各种软件也有一些协议,比

2015-11-15 12:54:56 620

原创 Socket-java网络编程1

数据在Internet中是以有限大小的包形式传输的,这些包称为数据报(datagram)。每个数据报都包含一个首部(header)和一个有效负载(payload)。 首部: 首部包含包去往的地址和端口、包来自的地址和端口以及用于保证可靠传输的各种其他管理信息。 有效负载:包含数据本身。但是由于数据报长度有限,通常必须将数据分解为多个包,在目的地再重新组合。也有可能一个包或者多个包

2015-11-15 12:30:47 560

原创 锁优化-java

适应性自旋 锁消除 锁粗化 轻量级锁 偏向锁

2015-11-14 21:06:33 320

原创 线程安全(java)

线程安全这里不做多说。线程安全的实现方法互斥同步 大并发下,性能有问题,比较简单粗暴,属于排他式独占的悲观锁非阻塞同步 可以理解为乐观锁,比如CAS指令。无同步方案 尽量创建条件避免线程安全问题的发生。 1.可重入代码:可以参考幂等性来理解 2.线程本地存储:考虑数据即使是共享的,但是这块数据是保证在同一个线程中执行的话,那么就可见性就限制到一个线程里面,这样就不用多线程争用,比如T

2015-11-14 21:04:31 429

原创 java与线程

java线程调度java线程调 线程调度:指的是为线程分配CPU使用权,主要有两种:协同式线程调度、抢占式线程调度。 java使用的是后者;可以使用优先级来进行改变系统对线程的自动完成的调度,但是这个不太靠谱。线程5状态: 新建、运行、无限期等待、限期等待、阻塞、结束无限期等待:需要其他线程唤醒; 限期等待:到期,系统自动唤醒;

2015-11-14 20:52:55 454

原创 java内存模型-先行发生原则

上面说过,如果要靠synchronized和volatile来保证有序性,那java就是一个失败的语言,在java语言中有一个“先行发生”原则。java天然的先行发生关系如下: 程序次序规则 管程锁定规则 线程启动规则:线程start方法先行发生于此线程的每一个动作 线程终止规则:线程中所有操作都先行发生于此线程的终止检测,所以,我们才能利用Thread.join()方法结束、Thread.

2015-11-14 20:43:56 1216

原创 java内存模型-续1

三特征 java内存模型是围绕三个特征来建立的,这三个分别是:原子性、可见性、有序性 原子性:8个操作 可见性:volatile。这里要说明一点,volatile修饰的变量是立即对其他线程可见的,意思就是一个线程修改(千万注意:而非运算)了volatile修饰的变量,新值会从工作内存立即同步到主内存,这样其他线程使用前是立即从主内存刷新的。其他的线程不是这样的。 除了volatile,还有s

2015-11-14 20:34:35 452

原创 java内存模型-对long和double型变量的特殊规则

java内存模型地没有被volatile修饰的64位的数据的读写操作划分为两次32为的操作来进行,这样的话,多线程并发,就会存在线程可能读取到“半个变量”的值,不过,这种情况非常罕见,目前各平台的商用虚拟机几乎都选择把64位的读写作为原子操作来实现规范的。因此,虽然你知道了java内存模型对long和double型的变量定义了特殊规则,但是你也不用专门对这两种类型的变量声明为volatile,因为上

2015-11-14 20:20:16 1036

原创 java-内存模型-概述

主要目标 java内存模型的主要目标是定义程序中各个变量的访问规则,即在JVM中将变量存储到内存和从内存中取出变量这样的底层细节。 此处的变量更广义,它包括:实例字段、静态字段和构成数据对象的元素;java的内存模型 这里说的内存是JVM里面的,可以类比参考物理硬件的内存。 java内存分为主内存:类似物理硬件的主内存; java的工作内存:类似处理器的高速缓存。java线程

2015-11-14 19:44:59 676

原创 读面向业务的立体化高可用架构总结

面向系统的高可用架构 面向业务的高可用架构面向系统的高可用时的思路如下: 单机—–》双机—-》集群 单机房—-》异地多机房高可用指标:5个9,4个9 定位问题,恢复业务面向业务的高可用如下: 用户层—》网络层—-》服务层—运维层网络层:客户端重试 http + DNS服务层:核心和非核心模块分离、依赖降级、 代码层面隔离,物理层面隔离:网络隔离、数据库隔离、缓存隔离、服务器隔离等。异地多

2015-11-13 23:18:07 752

原创 谈面向对象之强依赖和弱依赖

在创建一个对象的时候,这个对象的某个方法需要依赖某个service,那么我们是要把这个service当做构造这个对象的一个属性吗?其实,没必要。实际上,一个对象总不是孤单存在的,那么一个对象如果依赖另外一个对象(service也是一个对象),那么该对象的构造方法就要必须要初始化这个依赖的对象的实例吗? 我们可以使用set方法来给我们的对象设置这个属性,但是这个属性并不是构造对象的一个必须传入的。那

2015-11-01 15:58:43 7220

原创 MYSQL的文件排序(filesort)和索引排序

什么时候会发生filesort 排序呢 查询索引和order by 的字段不是同一个字段。比如 select * from table where id > 0 order by name; 注意:我们可以通知查询优化器按照我们的逻辑去执行索引,那么上面的sql如果我们调整为 select * from table use index (idx_id) where id > 0 or

2015-11-01 15:30:57 8006

原创 MYSQL查询SQL的注意事项和一些技巧总结

在编写查询SQL的时候,有一些技巧可以提升查询性能,总结如下:not exists 代替 not in 尽量避免not in (子查询)的查询,如果是not in (列表)倒是可以接受的,因为not in (子查询)可以使用not exists代替,使用not exists那么就将子查询变成和关联查询,至少可以使用主键的索引了。迎合和讨好mysql的优化器,让查询sql走索引; 举个例子

2015-11-01 14:41:17 1823

原创 MYSQL-复制

 MYSQL内建的复制功能是构建基于MYSQL的大规模、高性能应用的基础,这类应用使用了所谓的“水平扩展”的架构。复制解决的基本问题是:让一台服务器的数据与其他服务器保持同步。 MYSQL支持两种复制方式:基于行的复制和基于语句(逻辑复制)的复制。基于语句的复制比基于行的早出现。他们各自存在优缺点。具体场景,具体选择。复制解决的问题:复制常见的用途:数据分布 在不同的地理位置来分布数据备份,

2015-11-01 12:41:25 448

空空如也

空空如也

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

TA关注的人

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