05 2018 档案
摘要:场景描述:多线程输出1到100,对静态Integer对象加锁,synchronized代码块中操作Integer对象,发生线程安全问题(数据重复) 代码: 运行结果: 从运行结果中可以发现发生了线程安全问题,为什么呢?为什么synchronized无效了。 我的排查思路: 1、因为没有进行任何的额外
阅读全文
摘要:源博客地址:http://www.cnblogs.com/liuyun1995/p/8144676.html 一、什么是代理? 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。
阅读全文
摘要:TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信!TCP/IP协议是一个协议簇。里面包括很多协议的。UDP只是其中的一个。之所以命名为TCP/IP协议,因为
阅读全文
摘要:概述 盘片(platter) 磁头(head) 磁道(track) 扇区(sector) 柱面(cylinder) 盘片 片面 和 磁头 硬盘中一般会有多个盘片组成,每个盘片包含两个面,每个盘面都对应地有一个读/写磁头。受到硬盘整体体积和生产成本的限制,盘片数量都受到限制,一般都在5片以内。盘片的编
阅读全文
摘要:Java虚拟机(Java virtualmachine)实现了Java语言最重要的特征:即平台无关性。 平台无关性原理:编译后的 Java程序(.class文件)由 JVM执行。JVM屏蔽了与具体平台相关的信息,使程序可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平
阅读全文
摘要:文章出处:http://ifeve.com/jvm-yong-generation/ 聊聊JVM的年轻代 1.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我们所有的对象都在一块,GC的
阅读全文
摘要:import java.util.Arrays; import java.util.Stack; // 链式存储的二叉树 public class BSTree { private TreeNode root = null; public TreeNode getRoot() { return ro
阅读全文
摘要:Netty是基于JDK NIO的网络框架 简化了NIO编程, 不用程序自己维护selector, 将网络通信和数据处理的部分做了分离 多用于做底层的数据通信, 心跳检测(keepalived) 1. 数据通信 1.1 Hello World SO_BACKLOG详解:服务器的TCP内核维护两个队列A
阅读全文
摘要:JDK7的Collections.sort()的算法是TimSort, 适应性的归并排序, 比较晦涩难懂, 这里没有实现
阅读全文
摘要:1. 为什么要进行读写分离 大量的JavaWeb应用做的是IO密集型任务, 数据库的压力较大, 需要分流 大量的应用场景, 是读多写少, 数据库读取的压力更大 一个很自然的思路是使用一主多从的数据库集群: 一个是主库,负责写入数据;其它都是从库,负责读取数据. 主从库数据同步. mysql原生支持主
阅读全文
摘要:1. Webservice Webservice是一套远程调用技术规范 远程调用RPC, 实现了系统与系统进程间的远程通信.java领域有很多可实现远程通讯的技术,如:RMI(Socket + 序列化)、Binary-RPC(Http+二进制, 代表Hessian)、XML-RPC(Http+XML
阅读全文
摘要:Quartz快速入门 Quartz是一个定时任务调度的框架,在预定的时间到达时,执行某一任务 可认为是JDK的Timer类的扩展 Quartz的核心接口Scheduler – 核心调度器Job – 任务JobDetail – 任务描述Trigger -- 触发器 SimpleTrigger只执行一次
阅读全文
摘要:1. BIO JDK5之前, JDK的IO模式只有BIO(同步阻塞)问题: 因为阻塞的存在, 需对每个请求开启一个线程. 过多的线程切换影响操作系统性能解决: 使用线程池, 处理不过来的放入队列, 再处理不过来的会触发其他机制问题: 超过线程池数量的请求需要等待 服务端1: 一个请求~一个线程 服务
阅读全文
摘要:本文原地址:https://blog.csdn.net/qq_34228570/article/details/72995997 用户空间就是用户进程所在的内存区域,相对的,系统空间就是操作系统占据的内存区域。用户进程和系统进程的所有数据都在内存中。 是谁来划分内存空间的呢?在电脑开机之前,内存就是
阅读全文
摘要:查看分支:git branch 创建分支:git branch <name> 切换分支:git checkout <name> 创建+切换分支:git checkout -b <name> 合并某分支到当前分支:git merge <name> 删除分支:git branch -d <name>
阅读全文
摘要:场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作 场景3:已经
阅读全文
摘要:文章源:https://blog.csdn.net/wh_19910525/article/details/7554489 git merge是用来合并两个分支的。 git merge b git merge b # 将b分支合并到当前分支 同样 git rebase b,也是把 b分支合并到当前分
阅读全文
摘要:当前所有分支: master:主分支 test:测试分支 zs:开发人员分支 ls:开发人员分支 场景:zs正在开发A模块功能,线上环境产生了一个bug。 zs的操作流程(当前分支为zs分支): 1、git stash //把当前工作现场“储藏”起来,等以后恢复现场后继续工作 2、git check
阅读全文
摘要:1、body中的html 2.jquery 代码 3、其他设置
阅读全文
摘要:spark支持语言: scala、paython、java 1:2:4 使用spark sql(中间的过滤、筛选) 三种性能一样。 spark 比 mapReduce快 cpu与内存比为1:2,或者1:4 RDD:弹性数据分布集 5个特性 对RDD测操作:1、transformation 2、Act
阅读全文
摘要:数据来源:1、主动获取 2、被动获取 技术选择:1、storm (官方的、淘宝的):过来的数据要及时处理 2、flume :缺陷:处理流数据非常慢,优势:对流可以实施多层过滤 3、kafka :包括了flume的基本功能,对流的处理更快,缺陷:不能加过滤器(解决方案:flume+kafka) 4、s
阅读全文
摘要:语法: 关键字 val(表示:值) 不可变 ex: val a:Int=1 或者 val a=1(会自动识别类型,无基本类与包装类之分) 输出:a:Int=1 关键字var ex: var a:Int=1 输出: a:Int=1 方法(API)定义:def 方法名(参数:类型,...,参数:类型):
阅读全文