更新于:06-21 18:04

有关[技术]标签推荐

【译】Reddit如何统计每个帖子的浏览量

于06-17 16:01 - TiuVe2 - 基础技术 HyperLogLog Reddit
之前没听过也没了解过 HyperLogLog,通过翻译这篇文章正好简单学习下. 我们想要更好的向用户展示 Reddit 的规模. 为了这一点,投票和评论数是一个帖子最重要的指标. 然而,在 Reddit 上有相当多的用户只浏览内容,既不投票也不评论. 所以我们想要建立一个能够计算一个帖子浏览数的系统.

自建一个电话呼叫中心要多少钱?

于06-17 16:46 - ideawu - IT技术和评论 SIP VoIP
我十分看不惯任何行业的潜规则行为. 自建一个电话呼叫中心的报价是多少钱. 我明说吧,自建一个电话呼叫中心,只需要3万元左右,而且还能更省钱. 这个报价是针对小型企业的,也就是广大人民群众. 至于大型企业,它们自己去定制,钱不是问题. 3万元建一个电话呼叫中心,包括什么. 软件是硬件设备上免费赠送的,不要钱.

Spring Boot异常处理详解

于05-31 02:35 - TiuVe2 - 基础技术 spring boot 异常处理
在《 Spring MVC异常处理详解 》中,介绍了Spring MVC的异常处理体系,本文将讲解在此基础上Spring Boot为我们做了哪些工作. 下图列出了Spring Boot中跟MVC异常处理相关的类. Spring Boot在启动过程中会根据当前环境进行AutoConfiguration,其中跟MVC错误处理相关的配置内容,在ErrorMvcAutoConfiguration这个类中.

Spark Shuffle过程分析:Map阶段处理流程

于05-26 15:13 - Yanjun - Spark 开源技术 Spark-2.0.0
默认配置情况下,Spark在Shuffle过程中会使用SortShuffleManager来管理Shuffle过程中需要的基本组件,以及对RDD各个Partition数据的计算. 我们可以在Driver和Executor对应的SparkEnv对象创建过程中看到对应的配置,如下代码所示:. 如果需要修改ShuffleManager实现,则只需要修改配置项spark.shuffle.manager即可,默认支持sort和 tungsten-sort,可以指定自己实现的ShuffleManager类.

一个轻量级分布式 RPC 框架 — NettyRpc

于05-18 16:01 - TiuVe2 - 基础技术 NettyRPC RPC
最近在搜索Netty和Zookeeper方面的文章时,看到了这篇文章《 轻量级分布式 RPC 框架》,作者用Zookeeper、Netty和Spring写了一个轻量级的分布式RPC框架. 花了一些时间看了下他的代码,写的干净简单,写的RPC框架可以算是一个简易版的 dubbo. 这个RPC框架虽小,但是麻雀虽小,五脏俱全,有兴趣的可以学习一下.

Netty 超时机制及心跳程序实现

于05-14 16:02 - TiuVe2 - 技术架构 Netty
本文介绍了 Netty 超时机制的原理,以及如何在连接闲置时发送一个心跳来维持连接. Netty 超时机制的介绍. Netty 的超时类型 IdleState 主要分为:. ALL_IDLE : 一段时间内没有数据接收或者发送. READER_IDLE : 一段时间内没有数据接收. WRITER_IDLE : 一段时间内没有数据发送.

Java常见面试题之Forward和Redirect的区别

于05-09 16:01 - TiuVe2 - 基础技术 Forward Redirect 面试
一:间接请求转发(Redirect). 二:直接请求转发(Forward). 用户向服务器发送了一次HTTP请求,该请求可能会经过多个信息资源处理以后才返回给用户,各个信息资源使用请求转发机制相互转发请求,但是用户是感觉不到请求转发的. 根据转发方式的不同,可以区分为直接请求转发(Forward)和间接请求转发(Redirect),那么这两种转发方式有何区别呢.

Spring boot executable jar/war 原理

于05-05 16:02 - TiuVe2 - 基础技术 spring boot
spring boot里其实不仅可以直接以 Java -jar demo.jar的方式启动,还可以把jar/war变为一个可以执行的脚本来启动,比如./demo.jar. 把这个executable jar/war 链接到/etc/init.d下面,还可以变为Linux下的一个service. 只要在spring boot maven plugin里配置:.

JVM诊断调优CheatSheet

于04-10 23:16 - liuchi1993 - 基础技术 JVM 调优
使用top去获取进程cpu使用率;使用/proc文件查看进程所占内存. 查看类的一些信息,如字节码的版本号、常量池等. 查看进程的gc情况. jstat -gcutil [pid] (显示总体情况). jstat -gc [pid] 1000 10(每隔1秒刷新一次 一共10次). 查看jvm内存使用状况.

SpringBoot的事务管理

于04-07 22:57 - liuchi1993 - 技术架构 springboot
Springboot内部提供的事务管理器是根据autoconfigure来进行决定的. 比如当使用jpa的时候,也就是pom中加入了spring-boot-starter-data-jpa这个starter之后(之前我们分析过 springboot的自动化配置原理). Springboot会构造一个JpaTransactionManager这个事务管理器.

2017年你不能错过的Java类库

于03-12 23:02 - liuchi1993 - 基础技术 Guice okhttp
这篇文章是在我看过  Andres Almiray 的一篇 介绍文后,整理出来的. 因为内容非常好,我便将它整理成参考列表分享给大家, 同时附上各个库的特性简介和示例. Guice (发音同 ‘juice’) ,是一个 Google 开发的轻量级依赖性注入框架,适合 Java 6 以上的版本.   GitHub,  JavaDoc,  使用指南,  FactoryModuleBuilder.

Android优化

于03-09 23:37 - liuchi1993 - 基础技术 Android开发 JVM 性能优化
更多网络优化,可参考:  Android网络. http头信息带Cache-Control域 确定缓存过期时间 防止重复请求. 直接用IP直连,不用域名,策略性跟新本地IP列表. – DNS解析过程耗时在百毫秒左右,并且还有可能存在DNS劫持. 图片、JS、CSS等静态资源,采用CDN(当然如果是使用7牛之类的服务就已经给你搭建布置好了).

Spring Cloud Netflix构建微服务入门实践

于03-03 09:01 - Yanjun - Spring 开源技术 Eureka SpringCloud
在使用Spring Cloud Netflix构建微服务之前,我们先了解一下Spring Cloud集成的Netflix OSS的基础组件Eureka,对于Netflix的其他微服务组件,像Hystrix、Zuul、Ribbon等等本文暂不涉及,感兴趣可以参考官网文档. 这里,我们用最基础的Eureka来构建一个最基础的微服务应用,来演示如何构建微服务,了解微服务的基本特点.

http request乱码的真相

于03-02 22:32 - liuchi1993 - 基础技术 javaee Request 乱码
首先,从浏览器端看下有多少种情况:. 1.在浏览器的地址栏,或者搜索框里输入地址:http://www.test.com/衣服/search?keyword=T恤. 2.在一个指定了编码的网页中,提交一个form,如:. <input name="keyword" class="keyword" value="T恤" maxlength="30">.

防范 CSRF 跨站请求伪造

于03-01 01:48 - 管宜尧 - IT技术 csrf 安全
CSRF(Cross-site request forgery,中文为 跨站请求伪造)是一种利用网站可信用户的权限去执行未授权的命令的一种恶意攻击. 通过 伪装可信用户的请求来利用信任该用户的网站,这种攻击方式虽然不是很流行,但是却难以防范,其危害也不比其他安全漏洞小. 本文将简要介绍CSRF产生的原因以及利用方式,然后对如何避免这种攻击方式提供一些可供参考的方案,希望广大程序猿们都能够对这种攻击方式有所了解,避免自己开发的应用被别人利用.

Linux下正确删除海量文件的姿势

于02-16 10:16 - 歪脖骇客 - 技术技巧 linux 删文件
这里说的“海量”并不是指体积大,而是指数量,比如一个目录下有数百万个小文件. 最近在优化服务器时发现postfix下的maildrop目录和clientmqueue目录下发现有大量的文件,进入这些目录里使用ls命令是愚蠢的做法,而直接执行 rm *,没有任何反应,文件数量也没有减少,也就是说,在海量文件目录里直接使用rm命令进行删除是无效的.

每天自动备份MySQL数据库的shell脚本

于02-15 09:50 - 歪脖骇客 - 技术技巧 shell 备份 数据库
经常备份数据库是一个好习惯,虽然数据库损坏或数据丢失的概率很低,但一旦发生这种事情,后悔是没用的. 一般网站或应用的后台都有备份数据库的功能按钮,但需要去手工执行. 我们需要一种安全的,每天自动备份的方法. 下面的这个shell脚本就是能让你通过过设定Crontab来每天备份MySQL数据库的方法.

分布式系统中唯一 ID 的生成方法

于02-05 15:29 - 伯小乐 - IT技术 分布式
本文主要介绍在一个分布式系统中, 怎么样生成全局唯一的 ID. 在分布式系统存在多个 Shard 的场景中, 同时在各个 Shard 插入数据时, 怎么给这些数据生成全局的 unique ID?. 在单机系统中 (例如一个 MySQL 实例), unique ID 的生成是非常简单的, 直接利用 MySQL 自带的自增 ID 功能就可以实现..

从Gitlab误删除数据库想到的

于02-02 08:11 - 陈皓 - 技术新闻 程序设计 系统架构 Design Gitlab
昨天,Gitlab.com发生了一个大事,某同学误删了数据库,这个事看似是个低级错误,不过,因为Gitlab把整个过程的细节都全部暴露出来了,所以,可以看到很多东西,而对于类似这样的事情,我自己以前也干过,而在最近的两公司中我也见过(Amazon中见过一次,阿里中见过至少四次),正好通过这个事来说说一下自己的一些感想和观点吧.

JVM上最快的Bloom filter实现

于01-29 03:41 - 唐尤华 - 基础技术 BloomFilter JVM Scala
英文原始出处:  Bloom filter for Scala, the fastest for JVM. 本文介绍的是我用Scala实现的Bloom filter. 依照 性能测试结果,它是JVM上的 最快的Bloom filter实现. 零分配(Zero-allocation)和高度优化的代码.

Apache Beam:一个开源的统一的分布式数据处理编程库

于01-18 10:16 - Yanjun - Beam 开源技术
Apache Beam是一个开源的数据处理编程库,由Google共享给Apache的项目,前不久刚刚成为Apache TLP项目. 它提供了一个高级的、统一的编程模型,允许我们通过构建Pipeline的方式实现批量、流数据处理,并且构建好的Pipeline能够运行在底层不同的执行引擎上. 刚刚接触该开源项目时,我的第一感觉就是:在编程API的设计上,数据集及其操作的抽象有点类似Apache Crunch(MapReduce Pipeline编程库)项目;而在支持统一数据处理模型上,能够让人想到Apache Flink项目.

JVM初探——使用堆外内存减少Full GC

于01-17 23:51 - liuchi1993 - 基础技术 GC JVM
GCIH可以联想到:  将长期存活的对象(如Local Cache)移入堆外内存(off-heap, 又名. 直接内存/direct-memory), 从而减少CMS管理的对象数量, 以降低Full GC的次数和频率, 达到提高系统响应速度的目的.. 这个idea最初来源于TaobaoJVM对OpenJDK定制开发的GCIH部分(详见 撒迦的分享- JVM定制改进@淘宝), 其中GCIH就是将CMS Old Heap区的一部分划分出来, 这部分内存虽然还在堆内, 但已不被GC所管理.

RESTful 架构风格下的 4 大常见安全问题

于01-05 13:47 - ThoughtWorks - IT技术 Rest 微服务
伴随着RESTful架构风格的大量应用微服务架构的流行,一些本来难以察觉到的安全问题也逐渐开始显现出来. 在我经历过的各种采用RESTful微服务架构风格的应用中,某些安全问题几乎在每个应用中都会出现. 然而它们并非是什么高深的技术难题,只不过是借着微服务的流行而显得越发突出,这些都可以通过一些安全实践来避免.

关于Java并发编程的总结和思考

于12-30 23:13 - liuchi1993 - 基础技术 并发
并发其实是一种解耦合的策略,它帮助我们把做什么(目标)和什么时候做(时机)分开. 这样做可以明显改进应用程序的吞吐量(获得更多的CPU调度时间)和结构(程序有多个部分在协同工作). 做过Java Web开发的人都知道,Java Web中的Servlet程序在Servlet容器的支持下采用单实例多线程的工作模式,Servlet容器为你处理了并发问题.

zookeeper 大量连接断开重连原因排查

于12-29 23:00 - liuchi1993 - 基础技术 debug Zookeeper
最后发现线上的zookeeper的日志zookeeper.out 文件居然有6G,后来设置下日志为滚动输出,参考:. 但是改了之后,发现一天的日志量就是100多M,滚动日志一天就被冲掉了,这个不科学. 再仔细查看下日志里的内容,发现有很多连接建立好,马上又断开:. 从日志输出的时间来看,秒连秒断,非常诡异.

JVM 调优 —— GC 长时间停顿问题及解决方法

于12-25 23:51 - liuchi1993 - 基础技术 GC JVM 性能优化
垃圾收集器长时间停顿,表现在 Web 页面上可能是页面响应码 500 之类的服务器错误问题,如果是个支付过程可能会导致支付失败,将造成公司的直接经济损失,程序员要尽量避免或者说减少此类情况发生. 并发模式失败(concurrent mode failure). 在 CMS 启动过程中,新生代提升速度过快,老年代收集速度赶不上新生代提升速度.

MySQL 大表优化方案

于12-23 14:38 - 伯小乐 - IT技术 MySQL 数据库
当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化:. 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在 千万级以下,字符串为主的表在 五百万以下是没有太大问题的. 而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量:.

spring + redis 实现数据的缓存

于12-22 23:17 - liuchi1993 - 基础技术 cache redis Spring
(目的不是加快查询的速度,而是减少数据库的负担). 注意:jdies和commons-pool两个jar的版本是有对应关系的,注意引入jar包是要配对使用,否则将会报错. 因为commons-pooljar的目录根据版本的变化,目录结构会变. 前面的版本是org.apache.pool,而后面的版本是org.apache.pool2….

使用Spring Boot开发Web项目

于12-21 23:25 - liuchi1993 - 基础技术 Spring
前面两篇博客中我们简单介绍了spring Boot项目的创建、并且也带小伙伴们来DIY了一个Spring Boot自动配置功能,那么这些东西说到底最终还是要回归到Web上才能体现出它的更大的价值,so,今天我们就来看一下如何使用Spring Boot来开发Web项目. 当然,如果小伙伴对Spring Boot尚不熟悉的话,可以先参考一下这两篇博客:.

JAVA虚拟机关闭钩子(Shutdown Hook)

于12-15 23:23 - liuchi1993 - 基础技术 JVM
Java程序经常也会遇到进程挂掉的情况,一些状态没有正确的保存下来,这时候就需要在JVM关掉的时候执行一些清理现场的代码. JAVA中的ShutdownHook提供了比较好的方案. JDK提供了Java.Runtime.addShutdownHook(Thread hook)方法,可以注册一个JVM关闭的钩子,这个钩子可以在一下几种场景中被调用:.