自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

WangQYoho的博客

路漫漫.

  • 博客(160)
  • 收藏
  • 关注

转载 Mysql,日志系统和事务隔离

这篇是mysql从头到脚系列的第二、三部,后续更新后,会同步update这边的blog~也可以点一波原作者的关注哈。本博文只是选摘了一部分,详细的点击下方原文链接查看哈。原文地址:第二集 日志系统第三集 事务隔离Mysql的日志系统mysql本身有没有什么容灾的方式呢,或者有什么可以追溯过去操作行为的方法等。这里就要提到mysql的日志系统了,通过日志系统,往往我们也能恢...

2020-04-07 10:46:46 301

转载 Mysql,从头到脚再来一遍

这篇是mysql从头到脚系列的第一部,后续更新后,会同步update这边的blog~mysql的从头到脚先看下面你这条究极简单的sql,后面也围绕这个例子展开:mysql> select * from table where id=7;例子先抛出来,我们先从整体看下,mysql的全身长什么样。下图是mysql的分层,从功能来看,分成server层和存储引...

2020-04-04 01:33:27 372

原创 基于多线程和本地缓存实现跨域重复调用的高性能

>> 最近工作了,写博客的时间越来越少了,思考的时间越来越少,学习沉淀的时间也越来越少。忙里偷闲,记录一些在平时工作中一些有亮点的小tip,记录一些实用的技能,也多亏平时接触到的有能力有想法的同事~前言对于大体量互联网公司的应用,更多场景下需要考虑性能问题,比如大促稳定性、高并发下HA等等。而且在目前微服务盛行的今天,糟糕的涉及往往会导致链路的高rt和糟糕的性能,进而导致糟糕的...

2018-11-01 11:38:02 704

原创 不直接使用加减乘除完成四则运算?——二进制位运算实现四则运算

转载地址:https://ych0112xzz.github.io/2016/10/27/OperationwithBits/位运算实现整数加法方法x^y //执行加法,不考虑进位。(x&y)<<1 //进位操作解释在这里我们先用1位数的加法来进行,在不考虑进位的基础上,如下12341 + 1 = 01 + 0 = 10 + 1 = 10 + 0 = 0很明显这几个表达式可以...

2018-03-25 16:50:39 1468

原创 机器学习模型评估中的常用指标

一个比较推荐的解决机器学习问题的步骤是:首先以一个简易的算法开始,快速的进行实现,并在交叉验证集上进行验证;然后画出它的学习曲线,通过学习曲线确定是否更多的数据或者更多的特征会对模型的优化有帮助。接着人为地检测交叉验证集中被错误的进行分类的或者预测的样本的共同特征,从实际入手对模型进行调整,即Error Analysis,不断调整并验证在交叉验证集上的误差,寻找最优的结果,优化模型。在机器学习

2018-01-14 14:32:54 2335

原创 机器学习算法中的模型选择与假设评估

在掌握了机器学习算法后,接下来就需要对算法进行选择,在不同的问题下选择最合适的算法和模型进行处理。要知道在碰到不同的问题时应当走哪条解决方案,选择对了尝试的方向,才能够尽快的达到最优的解同时保证最优的性能。这篇文章就简要介绍一下碰到常规问题时如何解决,这些都是经验结论,在应对一些基础问题时一般都可以起到一定作用。一、写在前面首先需要了解大体上应当如何处理这类问题。当我们在预测时碰到问题,得

2018-01-06 18:40:40 2060

原创 Kafka:High level consumer vs. Low level consumer

Kafka中的消费者有两套API,分别是high level的和low level的。两种消费方式在构造和实现上都是不同的,在此记录一下:一、High level consumer APIHigh Level Consumer API围绕着Consumer Group这个逻辑概念展开,它屏蔽了每个Topic的每个Partition的Offset管理(自动读取zookeeper中该Consu

2017-10-26 21:06:36 4146

原创 System Design——系统设计过程(四)系统的可扩展性设计

英文原文链接:https://www.hiredintech.com/classrooms/system-design/lesson/58        https://www.hiredintech.com/classrooms/system-design/lesson/60-----------------------------分隔符-----------------

2017-10-23 15:54:39 4591

原创 System Design——系统设计过程(三)理解瓶颈

英文原文链接:https://www.hiredintech.com/classrooms/system-design/lesson/57-----------------------------分隔符------------------------------------------------------------------------------------系统设计过

2017-10-23 09:51:38 1315 1

原创 System Design——系统设计过程(二)抽象设计

英文原文链接:https://www.hiredintech.com/classrooms/system-design/lesson/56-----------------------------分隔符------------------------------------------------------------------------------------系统设计过程:

2017-10-22 18:23:36 2132

原创 System Design——系统设计过程(一)约束和用例

英文原文链接:https://www.hiredintech.com/classrooms/system-design/lesson/55从这一节开始,开始介绍当拿到一个System Design问题时候应该如何处理。-----------------------------分隔符------------------------------------------------------------------------------------系统设计过程:Step 1 约束和用例Step

2017-10-20 15:08:03 4239

原创 System Design——什么是“SystemDesign”问题

应公司老大需要,开始学习System Design的知识,并做一个专栏整理。第一part是就hiredintech上的知识做一个基础学习,后续会再补充一些常见例子具体分析。这次也是我第一次开专栏,希望可以做好!-------------------------------分隔符-----------------------------------------------------------

2017-10-19 14:28:46 5446

原创 Java NIO (一)

在现在,Java NIO已经越来越多的获得了应用包括Tomcat,netty等,这项技术也由之前面试时候的加分项变成了Java程序员必备的技能之一。而之前我一直没有系统的对其进行学习梳理,因此现在闲下来,想对这一块的知识做一个相对完整的整理。话不多说,开始吧。引NIO主要有三大核心部分:Channel(通道),Buffer(缓冲区), Selector。传统IO基于字节流和字符流进

2017-09-15 10:26:28 498

原创 难以分类编程题(不断更新)

1、把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。这种思路的关键在于怎样确保数组里面的丑数是排好序的。我们假设数组中已经有若干个丑数,排好序后存在数组中。我们把现有的最大丑数记做M。现在我们来生成下一个丑数,该丑数肯定是前面某一个丑数乘以2、3或者5的结果。我

2017-09-12 21:29:30 452

原创 Java泛型擦除和泛型的子类继承限制

一、引最近发现一个问题,LinkedList ls 不可以被赋值给LinkedList lo,这是为什么呢?这是因为Java中是泛型是伪泛型。虽然上面两个泛型的类具有继承关系,但是这两个List之间本身是没有关系的。当上述的LinkdedList被编译之后,class文件中其变成了LinkedList list,存在泛型擦除的过程。这样来看,上面两个LinkedList其实是可以包

2017-09-12 11:30:41 7114

原创 静态代理和动态代理的理解

Java 静态代理静态代理通常用于对原有业务逻辑的扩充。比如持有二方包的某个类,并调用了其中的某些方法。然后出于某种原因,比如记录日志、打印方法执行时间,但是又不好将这些逻辑写入二方包的方法里。所以可以创建一个代理类实现和二方方法相同的方法,通过让代理类持有真实对象,然后在原代码中调用代理类方法,来达到添加我们需要业务逻辑的目的。这其实也就是代理模式的一种实现,通过对真实对象的封装

2017-08-25 18:04:24 41362 18

原创 Kafka分区策略浅谈

用过 Kafka 的同学用过都知道,每个 Topic 一般会有很多个 partitions。为了使得我们能够及时消费消息,我们也可能会启动多个 Consumer 去消费,而每个 Consumer 又会启动一个或多个消费线程去分别消费 Topic 里面的数据。Kafka 存在 Consumer Group 的概念,也就是 group.id 一样的 Consumer,这些 Consumer 属于同

2017-07-27 09:45:44 7638

原创 Spark学习——缓存、闭包及共享变量

一、缓存Spark中也有缓存机制,或者说持久化机制。因为RDD的转化都是惰性的,这就意味着在调用action操作之前Spark是不会计算的,Spark会在内部记录所要求的执行步骤的全部流程,构建一个有向无环图(DAG)。同样在把数据读入到RDD的操作也是惰性的。由于这个特性,有时候需要能够多次使用同一个RDD时,如果简单地对RDD调用action操作,Spark每次都会重算RDD和它的

2017-04-17 16:25:35 3464

原创 Spark学习——spark中的几个概念的理解及参数配置

首先是一张spark的部署图: 节点类型有:1. master 节点: 常驻master进程,负责管理全部worker节点。2. worker 节点: 常驻worker进程,负责管理executor 并与master节点通信。dirvier:官方解释为: The process running the main() function of the application and

2017-04-17 14:37:03 1871

原创 Spark学习——RDD基本操作

Spark操作分为transformation和action,现将常用的记录在此: //transformation //将元素一个一个转换 JavaRDD map = raw.map(new Function() { @Override public String call(String strin

2017-04-17 13:44:26 867

原创 Spark学习——RDD

在介绍RDD之前,先讲点前话:因为我用的Java api,所以第一件事就是创建一个JavaSparkContext对象,这个对象告诉了Spark如何访问集群SparkConf conf = new SparkConf().setAppName(appName).setMaster(master);JavaSparkContext sc = new JavaSparkContext(con

2017-04-14 18:04:02 610

原创 Spark学习——始

公司项目需要,开始用spark streaming 消费消息队列来缓解之前手写consumer导致的集群资源紧张以及开销大的性能问题。于是,在这里记录一些spark知识,自己也很感兴趣,所以就好好做一个专题吧。开篇,当然是一些老生常谈的论调:Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校

2017-04-14 15:54:11 535

原创 数据在同网段和跨网段通信流程

情景一:同一广播域内,两台主机通信过程。     我们知道两主机要通信传送数据时,就要把应用数据封装成IP包(因为我们的网络大多都是TCP/IP的以太网了),然后再交给下一层数据链路层继续封装成帧;之后根据MAC地址才能把数据从一台主机,准确无误的传送到另一台主机。    如图:当NO要和N1通信时,假如N0知道N1的IP但却不知道它的MAC地址,那NO就会发送一个ARP的广播请求(里

2017-04-08 19:46:16 10042

原创 concurrent.locks包中的几种锁的区别

可重入锁(ReentrantLock)可分为好几种,分别对应了不同的用途,先贴上api:lockpublic void lock()获取锁。如果该锁没有被另一个线程保持,则获取该锁并立即返回,将锁的保持计数设置为 1。如果当前线程已经保持该锁,则将保持计数加 1,并且该方法立即返回。如果该锁被另一个线程保持,则出于线程调度的目的,禁用当前线程,并且在获得锁之前,该线程将一

2017-03-13 10:39:26 834

原创 Kafka SimpleConsumer——buffersize?fetchsize?

感觉网上关于Kafka的资料特别少,在用Kafka0.8.2的low level API的时候遇到了SimpleConsumer和Fetch的初始化的时候碰到了几个size的设置,一直不知道设置对消费的影响:第一个是初始化SimpleConsumer时候的倒数第二个参数buffersizeSimpleConsumer consumer = new SimpleConsumer(lead

2017-03-06 10:17:26 2699

原创 树和二叉树的转换

树和二叉树是两种不同的数据结构,树实现起来比较麻烦,但是树可以转换为二叉树进行处理,处理完以后再从二叉树还原为树。 下面说说转换的方法: 1. 树转换为二叉树 (1) 树中所有相同双亲结点的兄弟结点之间加一条连线。 (2) 对树中不是双亲结点第一个孩子的结点,只保留新添加的该结点与左兄弟结点之间的连线,删去该结点与双亲结点之间的连线。 (3) 整理所有保留的和添加的连线,使每个

2017-02-19 16:53:59 1312

转载 深入理解Java ClassLoader

转载地址:http://blog.csdn.net/xyang81/article/details/7292380一、什么是ClassLoader?         大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都

2017-02-16 09:53:10 772

原创 这些绕来绕去的题目……

有些题目,基础,但是,绕来绕去的头疼!罗列如下做一下记载,一是巩固自己的基础知识,二是提醒自己犯过的错误不要再犯!1、Test.main() 函数执行后的输出是()public class Test { public static void main(String [] args){ System.out.println(new B().getValue()

2017-02-15 22:06:33 627

转载 Shell中各种括号

最近看脚本,被各种括号弄晕了,特此查了一下,在这里记录。一、小括号,圆括号()1、单小括号 ()   ①命令组。括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格。   ②命令替换。等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,

2017-02-15 14:39:15 382

原创 JAVA类加载机制

类加载过程    类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。它们开始的顺序如下图所示:其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持Jav

2017-02-15 11:34:04 296

原创 JAVA BIO和NIO及简单实现

最近简单研究了一下JAVA的NIO,话说出来这么久了,感觉这一块一直是空白,用的也比较少。但是感觉socket io这部分在以后工作中的高并发项目可能会用到,所以最近抽空研究了解了一下。1、阻塞IO阻塞IO比较简单,就是用普通的socket去写,因为没有什么太复杂的处理。建立一个socket,然后,获取它的inputstream和outputstream,然后进行读写操

2017-02-14 16:01:21 573

原创 线程通信中的CountDownLatch和CycliBarrier

一、CountDownLatch一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。之后,会释放所有等待的线程,await 的所有后续调用都将立即返回。这种现象只出现一次——计数无法被重置。如果需要重置计数,

2017-02-10 15:32:04 1593

原创 并发容器——CopyOnWrite

什么是CopyOnWrite容器  CopyOnWrite容器即写时复制的容器。通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器。这样做的好处是我们可以对CopyOnWrite容器进行并发的读,而不需要加锁,因为当前容器不会添加任何元素。所以CopyOnW

2017-02-09 16:22:25 407

原创 并发容器——ConcurrentHashMap

HashMap是非线程安全的,Hashtable是线程安全的,但是由于Hashtable是采用synchronized进行同步,相当于所有线程进行读写时都去竞争一把锁,导致效率非常低下。  ConcurrentHashMap可以做到读取数据不加锁,并且其内部的结构可以让其在进行写操作的时候能够将锁的粒度保持地尽量地小,不用对整个ConcurrentHashMap加锁。Concurr

2017-02-09 16:14:00 303

原创 Kafka中的coordinator

在0.9以前的client api中,consumer是要依赖Zookeeper的。因为同一个consumer group中的所有consumer需要进行协同,进行下面所讲的rebalance。但是因为zookeeper的“herd effect”与“split brain”,导致一个group里面,不同的consumer拥有了同一个partition,进而会引起消息的消费错乱。为此,在0

2017-02-09 11:00:28 6676

原创 Kafka 几个关键概念和采用策略

关键概念介绍topic以下是kafka的逻辑结构图: 每个topic也就是自定义的一个队列,producer往队列中放消息,consumer从队列中取消息,topic之间相互独立。broker与上图对应的是kafka的物理结构图:每个broker通常就是一台物理机器,在上面运行kafka server的一个实例,所有这些broker实例组成kafka的服务器

2017-02-09 10:31:08 6099

转载 Kafka log结构解读

引言Kafka中的Message是以topic为基本单位组织的,不同的topic之间是相互独立的。每个topic又可以分成几个不同的partition(每个topic有几个partition是在创建topic时指定的),每个partition存储一部分Message。借用官方的一张图,可以直观地看到topic和partition的关系。partition是以文件的形式存储在文件

2017-02-08 21:05:48 2250

翻译 Kafka:A Distributed Streaming Platform

最近开始学习Kafka,开头免不了要看一堆官方介绍和先驱者写的介绍博客,为了完整性,我也翻译+摘抄一些,保存做学习用。---------------分割线---------------------------------------Kafka作为一个分布式的流平台,这到底意味着什么?我们认为,一个流处理平台具有三个关键能力:发布和订阅消息(流),在这方面,它类似

2017-02-08 20:54:33 1077

原创 同步/异步 & 阻塞/非阻塞

一、同步/异步同步/异步, 它们是消息的通知机制。同步:在发出一个功能调用时,在没有得到结果之前,该调用就不返回。异步:当一个异步过程调用发出后,调用者不会立刻得到结果。实际处理这个调用的部件是在调用发出后,通过状态、通知来通知调用者,或通过回调函数处理这个调用。所谓同步,就是在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回。但是一旦调用返回,就得到返回值了。换

2017-02-08 20:50:03 488

原创 利用栈结构计算代数表达式的值

之前做题遇到过,面试也面试到过,就是如何求解含有加减乘除和括号的表达式的值。今天刷书看到栈ADT结构这一章的时候正好讲到了求解这种题目的思路。顺便自己写了点代码实现了一下,现在记录一下思路和简单实现。思路很简单,建立一个存储操作符和括号的堆栈,输入是一个表达式的字符串,依次遍历,当是数字的时候,直接追加到输出,遍历到操作符则入栈。当入栈一个操作符时,要注意两个判断,第一个是要依次弹出优

2016-11-29 21:52:18 1282

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除