大数据环境下的平台架构乱弹 发表于 2018-02-22 | 分类于 dw 逻辑上,一般都有数据采集层、数据存储与分析层、数据共享层、数据应用层。可能叫法有所不同,本质上的角色都大同小异。借图发挥: 信息采集 数据采集层的任务就是把数据从各种数据源中采集和存储到数据存储上,期间有可能会做一些简单的清洗。 网站日志 业务数据库 ... 阅读全文 »
反作弊 发表于 2018-02-22 | 分类于 反作弊 1)所有的作弊都有动机和目的,从目的出发,更容易发现作弊者。2)真实的用户行为具有一定的规律,不符合规律的就有可能是作弊。3)反作弊的最终目的是无限压缩作弊行为在正常商业行为中的比例,而非绝对根除,因为绝对根除成本太大。4)最好的实现方法在于让作弊者成本剧增,无利可图时,作弊团队自然也烟消云散。 ... 阅读全文 »
Thread类中的join 发表于 2018-02-22 | 分类于 java Thread类中的join方法的主要作用就是同步,它可以使得线程之间的并行执行变为串行执行12345678910111213141516171819202122232425public class JoinTest { public static void main(String [ ... 阅读全文 »
jmx tomcat 发表于 2018-02-22 | 分类于 java 12345678910111213141516171819202122232425262728293031323334353637#!/bin/shexport TOMCAT_USER="tomcat"export JAVA_OPTS="-Xms4096m -Xmx40 ... 阅读全文 »
查看调用接口的哪个具体实现类 发表于 2018-02-22 | 分类于 java 1bucket.getAggregations().getClass().getCanonicalName() http://sunyimaying0925-gmail-com.iteye.com/blog/768789 阅读全文 »
线程通信机制:共享内存 VS 消息传递 发表于 2018-02-22 | 分类于 juc 在并发编程中,我们必须考虑的问题时如何在两个线程间进行通讯。这里的通讯指的是不同的线程之间如何交换信息。目前有两种方式: 共享内存 消息传递(actor 模型) #共享内存 共享内存这种方式比较常见,我们经常会设置一个共享变量。然后多个线程去操作同一个共享变量。从而达到线程通 ... 阅读全文 »
JVM内存 发表于 2018-02-22 | 分类于 java JVM运行时数据区由程序计数器、堆、虚拟机栈(栈)、本地方法栈、方法区部分组成,结构图如下所示。1)程序计数器 几乎不占有内存。用于取下一条执行的指令。2)堆 所有通过new创建的对象的内存都在堆中分配,其大小可以通过-Xmx和-Xms来控制。堆被划分为新生代和老年代,新生代又被进一步划分为 ... 阅读全文 »
Callable、Future和FutureTask 发表于 2018-02-22 | 分类于 juc 创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果。 Callable先说一下 ... 阅读全文 »
一个servlet引发的血案 发表于 2018-02-22 | 分类于 juc 无状态servlet:1234567891011121314151617181920212223242526272829303132333435package net.jcip.examples;import java.math.BigInteger;import javax.servlet.*;i ... 阅读全文 »
共享对象 发表于 2018-02-22 | 分类于 juc 可见性在没有同步的情况下,共享变量(错误的做法): 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626 ... 阅读全文 »