- 博客(739)
- 收藏
- 关注
转载 小议同步IO :fsync与fdatasync
对于提供事务支持的数据库,在事务提交时,都要确保事务日志(包含该事务所有的修改操作以及一个提交记录)完全写到硬盘上,才认定事务提交成功并返回给应用层。一个简单的问题:在*nix操作系统上,怎样保证对文件的更新内容成功持久化到硬盘?1. write不够,需要fsync一般情况下,对硬盘(或者其他持久存储设备)文件的write操作,更新的只是内存中的页缓存(page cache),...
2019-04-07 22:09:17
361
转载 Hazelcast集群服务(1)——Hazelcast介绍
https://www.cnblogs.com/hunter-56213/p/6230442.htmlHazelcast是什么 “分布式”、“集群服务”、“网格式内存数据”、“分布式缓存“、“弹性可伸缩服务”——这些牛逼闪闪的名词拿到哪都是ITer装逼的不二之选。在Javaer的世界,有这样一个开源项目,只需要引入一个jar包、只需简单的配置和编码即可实现以上
2018-01-02 22:27:35
1321
转载 MetricsSystem
Metrics,我们听到的太多了,熟悉大数据系统的不可能没听说过metrics,当我们需要为某个系统某个服务做监控、做统计,就需要用到Metrics。举个例子,一个图片压缩服务:每秒钟的请求数是多少(TPS)?平均每个请求处理的时间?请求处理的最长耗时?等待处理的请求队列长度?又或者一个缓存服务:缓存的命中率?平均查询缓存的时间?基本上每一个服务、应用都需要
2017-08-03 23:02:34
1401
转载 HelloWorld CMake CMake中构建静态库与动态库及其使用
继续完善Hello World,建立它的共享库, 包括静态库和动态库。 本节的任务:1,建立一个静态库和动态库,提供HelloFunc函数供其他程序编程使用,HelloFunc向终端输出Hello World字符串。2,安装头文件与共享库。3, 编写一个程序使用创建的共享库(静态库和动态库)。 cd /home/ccj/CMakeDe
2017-04-23 13:48:39
2004
转载 从内核文件系统看文件读写过程
系统调用操作系统的主要功能是为管理硬件资源和为应用程序开发人员提供良好的环境,但是计算机系统的各种硬件资源是有限的,因此为了保证每一个进程都能安全的执行。处理器设有两种模式:“用户模式”与“内核模式”。一些容易发生安全问题的操作都被限制在只有内核模式下才可以执行,例如I/O操作,修改基址寄存器内容等。而连接用户模式和内核模式的接口称之为系统调用。应用程序代码运行在用户模式下,当应用
2016-11-26 11:14:38
725
转载 认真分析mmap:是什么 为什么 怎么用
mmap基础概念mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调用函数。相反,内核空间对这段区域的修改也直接反映用户空间,从而可
2016-11-26 11:02:47
844
转载 MappedByteBuffer
java处理大文件,一般用BufferedReader,BufferedInputStream这类带缓冲的Io类,不过如果文件超大的话,更快的方式是采用MappedByteBuffer。 MappedByteBuffer是java nio引入的文件内存映射方案,读写性能极高。NIO最主要的就是实现了对异步操作的支持。其中一种通过把一个套接字通道(SocketChannel)注册到一个选择器
2016-11-23 23:31:30
988
转载 Spring 的 init-method 和 destory-method
关于在spring 容器初始化 bean 和销毁前所做的操作定义方式有三种:第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作第二种是:通过 在xml中定义init-method 和 destory-method方法第三种是: 通过bean实现InitializingBean和 DisposableBean
2016-11-19 17:35:05
646
转载 <context:component-scan>使用说明
在xml配置了这个标签后,spring可以自动去扫描base-pack下面或者子包下面的Java文件,如果扫描到有@Component @Controller@Service等这些注解的类,则把这些类注册为bean注意:如果配置了那么标签就可以不用再xml中配置了,因为前者包含了后者。另外还提供了两个子标签1. 2. 在说明这两个子标签前,先说一下有一
2016-11-17 13:18:11
413
转载 mybatis 中的<![CDATA[ ]]>
在使用mybatis 时我们sql是写在xml 映射文件中,如果写的sql中有一些特殊的字符的话,在解析xml文件的时候会被转义,但我们不希望他被转义,所以我们要使用来解决。 是什么,这是XML语法。在CDATA内部的所有内容都会被解析器忽略。如果文本包含了很多的"但是有个问题那就是 等这些标签都不会被解析,所以我们只把有特殊字符的语句放在
2016-11-12 16:11:12
526
转载 HttpServletResponse对象
Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象。request和response对象即然代表请求和响应,那我们要获取客户机提交过来的数据,只需要找request对象就行了。要向客户机输出数据,只需要找response对象就行了。一、HttpServletResponse对象介绍
2016-11-12 13:22:30
610
转载 Timeunit与sleep
TimeUnit是java.util.concurrent包下面的一个类,TimeUnit提供了可读性更好的线程暂停操作,通常用来替换Thread.sleep(),在很长一段时间里Thread的sleep()方法作为暂停线程的标准方式,几乎所有Java程序员都熟悉它,事实上sleep方法本身也很常用而且出现在很多面试中。如果你已经使用过Thread.sleep(),当然我确信你这样做过,那么你一定
2016-11-12 11:11:06
881
转载 java bigdecimal
首先我们先来看如下代码示例:1 public class Test_1 {2 public static void main(String[] args) {3 System.out.println(0.06+0.01);4 System.out.println(1.0-0.42);5 System.out.println
2016-11-12 11:06:58
502
转载 Linkedin Camus,从Kafka到HDFS的数据传输管道
本文是对Linkedin-Camus的介绍。内容都是从Camus的github中摘取出来的,详细的内容要看其说明和源码Introduction of CamusCamus是Linkedin开源的一个从Kafka到HDFS的数据管道,实际上它是一个MapReduce作业What is AvroApache Avro是一个 Data Serializat
2016-11-10 16:20:00
1095
转载 Filter学习
一、Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。 Servlet API中提供了一个Fil
2016-11-09 23:55:59
357
转载 监听器(Listener)学习
一、监听器介绍1.1、监听器的概念 监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动。监听器其实就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法立即被执行。1.2、监听器案例——监听windo
2016-11-09 23:52:31
532
转载 数据库连接池
一、应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长。假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出、拓机。如下图所示: 二、使用数据库连接池优化程序性能2.1、数据库连接池的基本概念 数据库连接是一种
2016-11-09 23:46:28
543
转载 注解@PostConstruct与@PreDestroy讲解及实例
从Java EE 5规范开始,Servlet中增加了两个影响Servlet生命周期的注解(Annotion);@PostConstruct和@PreDestroy。这两个注解被用来修饰一个非静态的void()方法 。写法有如下两种方式:@PostConstructPublic void someMethod() {}
2016-11-09 23:42:29
420
转载 java servlet开发
一、Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术。 Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤: 1、编写一个Java类,实现servlet接口。 2、把开发好的Java类部署到web服务器中。 按照一种约定俗成的称呼习惯
2016-11-09 23:07:31
417
转载 Timer和TimerTask详解
以下内容根据 The JavaTM Tutorial 和相关API doc翻译整理,以供日后参考:1.概览Timer是一种定时器工具,用来在一个后台线程计划执行指定任务。它可以计划执行一个任务一次或反复多次。TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务。简单的一个例程:import java.util.Timer;import
2016-11-09 22:08:22
494
转载 python装饰器
由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。>>> def now():... print '2013-12-25'...>>> f = now>>> f()2013-12-25函数对象有一个__name__属性,可以拿到函数的名字:>>> now.__name__'now'>>> f.__name__'now'
2016-11-07 23:23:56
400
转载 python属性注解
Python中有一个被称为属性函数(property)的小概念,它可以做一些有用的事情。在这篇文章中,我们将看到如何能做以下几点:将类方法转换为只读属性重新实现一个属性的setter和getter方法在本文中,您将学习如何以几种不同的方式来使用内置的属性函数。希望读到文章的末尾时,你能看到它是多么有用。开始使用属性函数的最简单的方法之一是将它作为一个方法的装饰器来使
2016-11-07 23:02:20
3293
转载 Python中*args 和**kwargs的用法
好久没有学习Python了,应为工作的需要,再次拾起python,唤起记忆。当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值。还是直接来代码吧,废话少说[python] view plain copy print?def fun_var_args(farg, *
2016-11-07 22:54:33
577
转载 HBase与MongDB等NoSQL数据库对比
一、开篇淘宝之前使用的存储层架构一直是MySQL数据库,配合以MongDB,Tair等存储。MySQL由于开源,并且生态系统良好,本身拥有分库分表等多种解决方案,因此很长一段时间内都满足淘宝大量业务的需求。但是由于业务的多样化发展,有越来越多的业务系统的需求开始发生了变化。一般来说有以下几类变化:(1) 数据量变得越来越多 ,事实上现在淘宝几乎任何一个与用户相关的在线业务的
2016-10-19 14:01:40
969
转载 Zookeeper开源客户端框架Curator简介
Curator是Netflix开源的一套ZooKeeper客户端框架. Netflix在使用ZooKeeper的过程中发现ZooKeeper自带的客户端太底层, 应用方在使用的时候需要自己处理很多事情, 于是在它的基础上包装了一下, 提供了一套更好用的客户端框架. Netflix在用ZooKeeper的过程中遇到的问题, 我们也遇到了, 所以开始研究一下, 首先从他在github上的源码, w
2016-10-04 20:41:17
532
转载 乐观锁和悲观锁
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人
2016-09-21 13:12:11
356
转载 java发送邮件工具类
import java.util.Properties; import javax.mail.Authenticator;import javax.mail.Message;import javax.mail.MessagingExcept
2016-09-20 19:10:04
1299
转载 灵活组装Json的数据使用Gson的JsonParser和JsonReader解析Json详解例子
package com.app.json; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import net.sf.json.JSONArray; import com.app.entity.duapp.Address;
2016-08-20 15:44:40
1235
转载 Presto 来自Facebook的开源分布式查询引擎
Presto是一个分布式SQL查询引擎, 它被设计为用来专门进行高速、实时的数据分析。它支持标准的ANSI SQL,包括复杂查询、聚合(aggregation)、连接(join)和窗口函数(window functions)。下图中展现了简化的Presto系统架构。客户端(client)将SQL查询发送到Presto的协调员 (coordinator)。协调员会进行语法检查、分析和规划查询计划。计
2016-08-16 09:37:54
1535
转载 HashMap与ConcurrentHashMap的区别
从JDK1.2起,就有了HashMap,正如前一篇文章所说,HashMap不是线程安全的,因此多线程操作时需要格外小心。在JDK1.5中,伟大的Doug Lea给我们带来了concurrent包,从此Map也有安全的了。ConcurrentHashMap具体是怎么实现线程安全的呢,肯定不可能是每个方法加synchronized,那样就变成了HashTable
2016-08-14 14:25:27
437
转载 Mysql的row_format
问题描述:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'variabaes like "%per_table%"'解决方案:前段时间在项目压测的时候出现
2016-07-12 12:39:35
21419
2
转载 MyBatis+MySQL 返回插入的主键ID
需求:使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值。 方法:在mapper中指定keyProperty属性,示例如下:Xml代码 insert id="insertAndGetId" useGeneratedKeys="true" keyProperty="userId" parameterType="com.ch
2016-07-11 18:22:08
381
转载 linux多线程信号处理
在linux下,每个进程都有自己的signal mask,这个信号掩码指定哪个信号被阻塞,哪个不会被阻塞,通常用调用sigmask来处理。同时每个进程还有自己的signal action,这个行为集合指定了信号该如何处理,通常调用sigaction来处理。使用了多线程后,便有些疑问:信号发生时,哪个线程会收到是不是每个线程都有自己的mask及action每个线程能按自己的方
2016-07-04 20:28:50
4727
2
转载 scribe 日志搜集
1.General description我们知道,使用日志系统是为了使系统变得更健壮,能够应对各种错误并能从错误中较快地恢复。一个大型的分布式系统生成的日志数量是巨大的,所以需要一个有效的工具对其进行管理。Scribe就是这样一个日志收集服务器,使用它可以对大型的系统进行监控。它是Facebook的一个开源组件,使用的是Facebook另一个框架—Thrift。Thrift在我的理解就是一
2016-06-29 22:26:18
1459
转载 daemontools
最近用到了daemontools,却发现百度上基本上没有中文版的,特此分享出来给大家,作者的英语水平也不太好,翻译不对的地方请指正。1. 简单介绍一下daemontools 点击查看英文原文daemontools是一个守护进程工具,用来监视一个进程以免其意外退出,例如用来监视某个目录中的一个java程序入口,让它一直处于运行状态。被daemontools守护的进程是无法使用kill指令杀
2016-06-29 16:26:30
867
转载 Snowflake算法核心
把时间戳,工作机器id,序列号组合在一起。 除了最高位bit标记为不可用以外,其余三组bit占位均可浮动,看具体的业务需求而定。默认情况下41bit的时间戳可以支持该算法使用到2082年,10bit的工作机器id可以支持1023台机器,序列号支持1毫秒产生4095个自增序列id。下文会具体分析。Snowflake – 时间戳这里时间戳的细度
2016-06-29 11:33:25
1557
转载 java filechannel
Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。打开FileChannel在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使用一个InputStream、OutputStream或RandomAcc
2016-06-28 22:47:36
438
转载 Buffer类详解
Buffer 类是 java.nio 的构造基础。一个 Buffer 对象是固定数量的数据的容器,其作用是一个存储器,或者分段运输区,在这里,数据可被存储并在之后用于检索。缓冲区可以被写满或释放。对于每个非布尔原始数据类型都有一个缓冲区类,即 Buffer 的子类有:ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffe
2016-06-28 22:41:41
606
转载 linux inode理解
一、inode是什么?理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是
2016-06-27 22:33:08
443
转载 mysql单表体积和一个库设计多少张表为妥
他不清楚mysql一个库里面分多少张表合适,他一个库分了8000张表。于是我看了,忍不住作答。 于是以个人随笔的形式给自己做知识备忘吧。 1、单表体积多大的时候需要分表 曾经看过一个博客,分析到什么情况下需要分表。单表形式访问(也就是对这个表的访问不涉及到join联合查询):单个表的体积大于2g的时候。或者说,单个表的行数达到一千万的时候。
2016-06-27 22:16:34
1017
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人