- 博客(28)
- 收藏
- 关注
原创 JAVA lamda表达式之parallelStream
前几天在项目中遇到了一个问题,在用Java的list.parallelStream.foreach()方法时,出现了indexOutOfBoundary异常。经过查资料,发现这是因为在高并发对list进行遍历操作时,发生了线程安全问题,所以,若要用该方法遍历数组或集合时,有必然使用线程安全的集合,或者做好线程安全的控制。当然,如果数据量不大的话,可以考虑使用list.foreach,而不是p...
2019-10-27 21:46:57
362
转载 MQ使用场景
原文地址:http://mp.weixin.qq.com/s/Brd-j3IcljcY7BV01r712Q一、缘起一切脱离业务的架构设计与新技术引入都是耍流氓。 引入一个技术之前,首先应该解答的问题是,这个技术解决什么问题。就像微服务分层架构之前,应该首先回答,为什么要引入微服务,微服务究竟解决什么问题(详见《互联网架构为什么要做微服务?》)。 ...
2018-11-06 18:30:40
437
转载 java实现生产者消费者
生产者/消费者问题的多种Java实现方式 实质上,很多后台服务程序并发控制的基本原理都可以归纳为生产者/消费者模式,而这是恰恰是在本科操作系统课堂上老师反复讲解,而我们却视而不见不以为然的。在博文《一种面向作业流(工作流)的轻量级可复用的异步流水开发框架的设计与实现》中将介绍一种生产者/消费者模式的具体应用。生产者消费者问题是研究多线程程序时绕不开的经典问题之一,它描述是有一块缓冲区作为仓库,
2017-09-17 22:25:35
260
转载 kmp算法的原理
1.kmp算法的原理:字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。下面,我
2017-09-12 10:07:28
385
转载 java中对象的两种访问方式
Java对象与JVM(三)Java对象在Java虚拟机中的引用访问方式 在前面两篇文章中了解到Java对象实例是如何在HotSpot虚拟机的Java堆中创建的,以及创建后的内存布局是怎样的。 下面我们详细了解在Java堆中的Java对象是如何访问定位的:先来了解reference类型数据是什么,再来了解两种访问方式:使用句柄或者使用直接指针(HotSpot虚拟机使用了
2017-09-07 13:42:24
2438
转载 数据库索引的设计原理以及意义
本文内容主要来源于互联网上主流文章,只是按照个人理解稍作整合,后面附有参考链接。一、摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的
2017-09-06 16:10:21
2522
转载 HTTP发送请求和接收响应的整个流程
HTTP 无状态性 HTTP 协议是无状态的(stateless)。也就是说,同一个客户端第二次访问同一个服务器上的页面时,服务器无法知道这个客户端曾经访问过,服务器也无法分辨不同的客户端。HTTP 的无状态特性简化了服务器的设计,使服务器更容易支持大量并发的HTTP 请求。HTTP 持久连接 HTTP1.0 使用的是非持久连接,主要缺点是客户端必须为每一个待请求的对
2017-09-05 23:37:42
20636
转载 Java面试全集(中)
这部分主要是与Java Web和Web Service相关的面试题。96、阐述Servlet和CGI的区别? 答:Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service()方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet。 补充:Sun Microsystem
2017-09-02 22:43:39
1470
转载 java 面试全集(上)
1、面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。 - 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续
2017-09-02 22:38:54
1026
转载 Object中的方法和作用
Object类中的方法介绍类Object是类层次结构的根类,每一个类都使用Object作为超类,所有对象(包括数组)都实现这个类的方法。jdk1.5中,描述了该类中的11个方法Object是所有类的直接类或间接类,如果一个类在声明时未继承任何基类,Java就默认其基类是Object,所以Object被称作根类或基类。该类位于java.lang包中。1.getClasspublic final C
2017-09-01 12:13:05
257
转载 线程池实现原理
1、线程池简介: 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。 如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能。 一个线程池包括以下四个基
2017-09-01 12:03:11
173
转载 MySQL四种常用索引类型
提到MySQL优化,索引优化是必不可少的。其中一种优化方式 ——索引优化,添加合适的索引能够让项目的并发能力和抗压能力得到明显的提升。我们知道项目性能的瓶颈主要是在”查(select)”语句,要提升”查”这一性能,mysql索引是必不可少的。接下来总结一下mysql常见的四种索引一. 四种索引(主键索引/普通索引/全文索引/唯一索引)1.索引的添加 1.1主键索引的添加当一张表,把某个列设
2017-09-01 11:00:18
1948
转载 数据库索引使用的数据结构
强烈建议参阅链接:http://www.linezing.com/blog/?p=798#nav-1说白了,索引问题就是一个查找问题。。。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查
2017-09-01 00:07:45
2567
转载 心跳包
几乎所有的网游服务端都有心跳包(HeartBeat或Ping)的设计,在最近开发手游服务端时,也用到了心跳包。思考思考,心跳包是必须的吗?为什么需要心跳包?TCP没有提供断线检测的方法吗?TCP提供的KeepAlive机制可以替代HeartBeat吗?由于连接丢失时,TCP不会立即通知应用程序。比如说,客户端程序断线了,服务端的TCP连接不会检测到断线,而是一直处于连接状态。这就带来了很大的麻烦,明
2017-08-31 14:59:05
405
转载 session详解
一。分布式Session的几种实现方式1.基于数据库的Session共享2.基于NFS共享文件系统3.基于memcached 的session,如何保证 memcached 本身的高可用性?4. 基于resin/tomcat web容器本身的session复制机制5. 基于TT/Redis 或 jbosscache 进行 session 共享。6. 基于cookie 进行session共享
2017-08-31 14:01:50
289
转载 分布式锁
本文转自:http://www.hollischuang.com/archives/1716 目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只
2017-08-31 12:25:32
198
转载 为什么HashMap不安全
一直以来只是知道HashMap是线程不安全的,但是到底HashMap为什么线程不安全,多线程并发的时候在什么情况下可能出现问题?HashMap底层是一个Entry数组,当发生hash冲突的时候,hashmap是采用链表的方式来解决的,在对应的数组位置存放链表的头结点。对链表而言,新加入的节点会从头结点加入。javadoc中关于hashmap的一段描述如下:此实现不是同步的。如果多个线程同时访问一
2017-08-29 21:53:56
2126
1
转载 HashMap实现原理
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。哈希表那么
2017-08-29 21:46:27
184
转载 hibernate一级缓存和二级缓存
缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。 缓存的介质一般是内存,所以读写速度很快。但如果缓存中存放的数据量非常大时,也会用硬盘作为缓存介质。缓存的实现不仅仅要考虑存储的介质,还要考虑到管理缓存的并发访问和缓
2017-08-27 15:07:49
195
原创 数据库内连接与外连接
数据库中涉及两个表之间的数据查询通常使用连接的方法实现。连接分为内连接和外连接。内连接:指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。外连接:连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接。左外连接:左边表数据行全部保留,右边表保留
2017-08-27 12:56:19
216
转载 数据库设计原则(转载)
数据库设计原则(转载)1. 原始单据与实体之间的关系 可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。 在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体。 这里的实体可以理解为基本表。明确这种对应关系后,对我们设计录入界面大有好处。 〖例1〗:一份员工履历资料,在人力资源信息
2017-08-27 12:02:50
189
转载 数据库部分
数据库部分 1、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。employee:eid,ename,salary,deptid;select * from employeeorder by deptid desc,salary asc; 4、数据库三范式是什么? 第一范式(1NF):字段具有原子性,不可再分。所有关系型数据库系统都满足第一范式)数据库表中的字段都是
2017-08-21 16:05:38
206
原创 现代操作系统面试总结
绪论操作系统的功能用户接口:命令接口、程序接口、图形接口处理机管理:进程控制、进程同步、进程通信、进程调度存储管理:内存分配、内存保护、地址映射、内存扩充设备管理:缓冲管理、设备分配、设备处理、虚拟设备管理文件管理:文件存储空间管理、目录管理、文件读写管理、文件保护、文件系统的安全性、文件接口操作系统的结构内核(kernel)与外壳(shell)从整体上讲,操作
2017-08-18 09:31:30
713
转载 成功解决vm虚拟机装上redhat…
原文地址:enterprise 7.0(2014年出的)不能联网的问题">成功解决vm虚拟机装上redhat enterprise 7.0(2014年出的)不能联网的问题作者:imyili装上VMmare虚拟机后,会有两个虚拟网卡 VMnet1 和VMnet8,禁用VMnet1,右键VMnet8,选择属性,双击查看IPv4的IP地址和子网掩码 enterprise 7.0(2014"
2017-08-18 09:31:17
572
原创 2016年11月12日
泛型是JDK1.5 使用的新特性。泛型的好处: 1、将运行时的异常提前至了编译时; 2、避免了无谓的强制类型转换;泛型在集合中的常见应用: ArrayListlist = new ArrayList(); ArrayListlist = newArrayList(); ArrayList list
2017-08-18 09:28:21
174
转载 list底层原理
1.List:List实现Collection接口,它的数据结构是有序可以重复的结合,该结合的体系有索引;它有三个实现类:ArrayList、LinkList、Vector三个实现类;三个实现类的区别:ArrayList:底层数据结构使数组结构,查询速度快,增删改慢,LinkList:底层使用链表结构,增删速度快,查询稍慢;Vector:底层是数组结构,线程同步ArrayList是线程不同步
2017-08-17 22:01:35
2341
转载 java中常用设计模式总结
1、工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。 2、建造模式:将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模式
2017-08-17 11:00:13
151
转载 java中ArrayList初始容量和容量分配
List接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。ArrayList继承于List接口,除继承过来的方法外,还提供一些方法来操作内部用来存储列表的数组的大小。每个ArrayList实例都有一个容量。该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向ArrayList中不断添加元素,其容量也自动增长。并未指定增长策略
2017-08-17 10:43:28
2543
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人