- 博客(58)
- 收藏
- 关注
原创 线程池,单例模式
javac SynchronizedDemo.java 命令生成编译后的 .class 文件javap -c -s -v -l SynchronizedDemo.classwait会把锁释放掉单例模式需要把那个变量volatile,然后在getXXX方法里面先判null,这个依然不好,在new之前在加锁判断是否null工厂模式的意义就是使用一个类来生成实现了某个接口的各种类Thre...
2019-07-25 22:19:03
956
转载 CAS与sync(县城切换)的区别
概述Java 中的并发锁大致分为隐式锁和显式锁两种。隐式锁就是我们最常使用的 synchronized 关键字,显式锁主要包含两个接口:Lock 和 ReadWriteLock,主要实现类分别为 ReentrantLock 和 ReentrantReadWriteLock,这两个类都是基于 AQS(AbstractQueuedSynchronizer) 实现的。还有的地方将 CAS 也称为一种...
2019-07-23 22:46:17
659
转载 netty 和 copy-free相关
上一篇说到了CompositeByteBuf,这一篇接着上篇的讲下去。FileRegion让我们先看一个Netty官方的example// netty-netty-4.1.16.Final\example\src\main\java\io\netty\example\file\FileServerHandler.javapublic void channelRead0(Chan...
2019-07-07 16:53:52
299
原创 jdk8的async实现
https://www.jianshu.com/p/547d2d7761dbpackage com.zxg;import java.util.concurrent.CompletableFuture;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import ...
2019-07-04 23:05:45
617
原创 flink 源码第二轮
BasicTypeInfo: 任意Java 基本类型(装箱的)或 String 类型。BasicArrayTypeInfo: 任意Java基本类型数组(装箱的)或 String 数组。WritableTypeInfo: 任意 Hadoop Writable 接口的实现类。TupleTypeInfo: 任意的 Flink Tuple 类型(支持Tuple1 to Tuple25)。Flink ...
2019-06-28 18:18:13
332
转载 ByteBuf 详解
@author 鲁伟林记录《Netty 实战》中各章节学习过程,写下一些自己的思考和总结,帮助使用Netty框架的开发技术人员们,能够有所得,避免踩坑。本博客目录结构将严格按照书本《Netty 实战》,省略与Netty无关的内容,可能出现跳小章节。本博客中涉及的完整代码:GitHub地址: https://github.com/thinkingfioa/netty-learning/tre...
2019-06-25 00:16:05
3073
原创 canal 相关问题
git clone git@github.com:alibaba/canal.gitgit co canal-$version #切换到对应的版本上mvn clean install -Denv=releaseshow variables like 'log_%';/var/lib/mysqlsudo vi /etc/mysql/mysql.conf.d/mysqld.cnfad...
2019-06-20 19:47:43
616
原创 flink 相关
计算flink的时候可以有一个旁流的概念使用底层的process算子,就可以获取到一个ctx 的,可以在map的时候往里写东西在 main stream上面可以通过 getSideOutput 来获取到这个流,对他进行流的处理===============================tumbling timeWindowtimeWindow(Time.minut...
2019-06-19 14:32:44
119
原创 flink runtime network related
* An input gate consumes one or more partitions of a single produced intermediate result.** <p>Each intermediate result is partitioned over its producing parallel subtasks; each of these*...
2019-06-09 20:14:25
134
转载 转发 堆外内存讲解
最近看了一篇文章《蚂蚁消息中间件 (MsgBroker) 在 YGC 优化上的探索》。文章涉及JVM的垃圾回收,主要讲的是通过使用「堆外内存」对Young GC进行优化。文章中介绍,MsgBroker消息中间件会对消息进行缓存,JVM需要为被缓存的消息分配内存,首先会被分配到年轻代。当缓存中的消息由于各种原因,一直投递不成功,这些消息会进入老年代。最终呈现的问题是YGC时间太长。...
2019-06-06 20:34:09
373
转载 转发 flink的 memorysegment
如今,大数据领域的开源框架(Hadoop,Spark,Storm)都使用的 JVM,当然也包括 Flink。基于 JVM 的数据分析引擎都需要面对将大量数据存到内存中,这就不得不面对 JVM 存在的几个问题:Java 对象存储密度低。一个只包含 boolean 属性的对象占用了16个字节内存:对象头占了8个,boolean 属性占了1个,对齐填充占了7个。而实际上只需要一个bit(1/8字节)...
2019-06-06 20:17:35
1117
1
原创 flink 于 kafka互操作
final StreamExecutionEnvironment env = StreamExecutionEnvironment .getExecutionEnvironment(); JSONKeyValueDeserializationSchema schema = new JSONKeyValueDeserializationSchema...
2019-06-06 18:17:31
549
原创 sqoop 的一些命令和一个坑
qoop-import --as-avrodatafile --table film --target-dir /input --connect jdbc:mysql://192.168.13.128/sakila?tinyInt1isBit=false --username root --password 123sqoop import -Dmapreduce.job.user.cl...
2019-06-05 18:55:16
660
原创 netty 的一些笔记
在 Netty 中,有两种发送消息的方式。你可以直接写到 Channel 中,也可以 写到和 ChannelHandler相关联的ChannelHandlerContext对象中。前一种方式将会导致消息从ChannelPipeline 的尾端开始流动,而后者将导致消息从 ChannelPipeline 中的下一个 ChannelHandler 开始流动。netty有一个pipeline地概念,...
2019-06-05 18:52:50
126
原创 flink 基本
flink run /opt/flink-1.7.2/examples/batch/WordCount.jar -input hdfs://192.168.13.128:9000/input/myfile.txt -output hdfs://192.168.13.128:9000/output/result.txtflink run ./SocketWindowWordCount.jar -...
2019-06-02 17:10:51
204
原创 innodb相关知识
show VARIABLES like 'log_error'show VARIABLES like 'long_query_time'show VARIABLES like 'log_slow_queries'show VARIABLES like 'log_output'查看慢速查询时再哪里打出来的SELECT * FROM mysql.slow_log是可以看到慢查询发生时...
2019-05-21 15:42:39
113
原创 threadlocal和AQS相关
import java.text.SimpleDateFormat;import java.util.Random;public class ThreadLocalExample implements Runnable{ // SimpleDateFormat 不是线程安全的,所以每个线程都要有自己独立的副本 private static final ThreadLoca...
2019-05-21 13:22:33
246
原创 jvm相关
jdk在运行是有个计数器,可以理解为当前代码段的行号每个独立的线程都有一个独立的计数器,以便在切换后可以保持原有的现场计数器是不会出现oom现象的虚拟机栈也是线程私有的,每个方法都会创建一个栈帧,每个方法执行完成就是一个入栈出栈的过程如果栈深度超过允许深度,就会抛出stackoverflowError如果jvm动态扩展,但是内存超了,就会抛出outofmemoryError本地方法...
2019-05-21 09:46:58
99
原创 java的注解与AOP
注解可以加在不同的地方,主要就是在反射的时候给一个类带上更多的信息例子:@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface UseCase { public int id(); public String description() default "no de...
2019-05-19 23:43:42
1897
转载 jvm gc相关
jdk在运行是有个计数器,可以理解为当前代码段的行号每个独立的线程都有一个独立的计数器,以便在切换后可以保持原有的现场计数器是不会出现oom现象的虚拟机栈也是线程私有的,每个方法都会创建一个栈帧,每个方法执行完成就是一个入栈出栈的过程如果栈深度超过允许深度,就会抛出stackoverflowError如果jvm动态扩展,但是内存超了,就会抛出outofmemoryError本地方法...
2019-05-11 19:17:16
129
转载 innodb得锁
(本文为了方便,英文关键词都都采用小写方式,相关知识点会简单介绍,争取做到可以独立阅读)文章开始我会先介绍本文需要的知识点如下:innodb的聚簇索引(聚集索引)和非聚簇索引(二级索引、非聚集索引)的知识innodb的隔离级别(isolation level)简单的sql知识(能读懂sql语句)MVCC(Multi-Version Concurrent Control)多版本并发控制...
2019-05-11 19:16:21
202
原创 锁
about lock关于锁有三个标准:1,能否正确做到互斥2,能否做到公平(有些人处于饥饿状态)3,能否有效率,不要死循环去查询锁是否就绪了load-and-store最简单的锁就是尝试去设置一本变量的位,其他的人则死循环等待test-and-set就是一个原子的是不是0位然后设置为1,这个锁有个问题就是compare-and-swapvoid lock(lock_...
2019-05-04 17:31:26
74
转载 BIO NIO
本文从操作系统的角度来解释BIO,NIO,AIO的概念,含义和背后的那些事。本文主要分为3篇。第一篇 讲解BIO和NIO以及IO多路复用 第二篇 讲解磁盘IO和AIO 第三篇 讲解在这些机制上的一些应用的实现方式,比如nginx,nodejs,Java NIO等到底什么是“IO Block”很多人说BIO不好,会“block”,但到底什么是IO的Block呢?考虑下面两种情况:用...
2019-05-03 22:38:17
80
原创 zookeeper原理及应用
zk 在客户端连接的时候会有一个sessiontimeout,session timeout 之前只要连接上一台机器就不算断开连接了ZAB需要保证的是当3号变更被执行的时候1,2两个变更都已经确定被执行了ZK是使用一个类似于二阶段提交的过程,客户端提交到了proposer上,然后到master,master向所有的成员广播,超过半数同意就可以commit了显然二阶段存在着单点问题,无法...
2019-05-03 22:02:22
113
原创 redis 相关内容
Redis相关的应用有分布式锁,发布订阅,限流等先看看相关代码悲观锁package com.redis.distroLock;import redis.clients.jedis.Jedis;import redis.clients.jedis.commands.JedisCommands;import redis.clients.jedis.params.SetParams;i...
2019-05-02 18:54:22
112
原创 面试问题
1,golang的内存泄漏,GCgo如果使用一个_来接受一个指针,就会导致GC的时候始终无法回收一块内存空间2,java HashMap Hash其实是一个指针的列表,将hash冲突的部分放在指针后面,逐个往后。 列表太大了会性能不好,需要增加一个数散列开 开放定址法(线性探测再散列,二次探测再散列,伪随机探测再散列) 再哈希法 链地址法 建立一个公...
2019-04-22 22:17:42
102
原创 回溯法经典
public List<List<Integer>> permute(int[] nums) { List<List<Integer>> list = new ArrayList<>(); // Arrays.sort(nums); // not necessary backtrack(list, new ArrayL...
2019-04-17 00:36:31
91
原创 运行flink on yarn遇到的一些问题
1,根据hadoop的版本在flink的页面上下载对应于hadoop版本和scala版本的flink的包2,使用start-yarn.sh在集群上运行yarn,启动后可以在8088上面找到yarn的web界面需要注意的是,需要将resourcemanager的地址指向master的地址<property> <name>yarn.nodemanager....
2019-04-08 10:35:38
2223
1
原创 redis 事件处理
redis 代码解读redis 5.0.4ae.c里面定义了四种maskNone 没有事件read cli读取write cli 写,连接, 断开barrier对于文件事件进行了一个封装typedef struct aeFileEvent { // 文件时间类型:AE_NONE,AE_READABLE,AE_WRITABLE int mask; /* on...
2019-03-28 21:27:31
180
原创 k8s 初体验
公司的项目老板提出使用k8s于是踩了这一趟坑场景是这样:有三个前端的调度节点,使用quartz集群,每次有一个节点会去触发一个Datax的任务运行,看了下k8s in action这本书,发现job这种场景天生适合这个场景,回忆了一下心得1,本地编docker镜像:编写dockerfile并且将相关资源都放在对应的目录下面。从上到下编写Dockerfile,当...
2019-03-23 21:58:28
6689
原创 使用IJ写scala的两种方式
使用ij写scala有两种方法,1,使用maven来管理创建maven项目后把java相关的路径删除,然后将java相关的路径都删除在project structure将scala对应版本导入<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/...
2019-03-22 12:57:27
1042
原创 树遍历
public List<Integer> inorderTraversal(TreeNode root) { List<Integer> list = new ArrayList<Integer>(); Stack<TreeNode> stack = new Stack<TreeNode>(); TreeNod...
2019-02-27 23:44:33
277
1
转载 mvn 依赖冲突
在本系列的上一篇文章中,我们讲到了如何使用Profile,在本文中,我们将讲到如何处理Maven的依赖冲突。 不知道你在使用Maven时是否遇到过诸如"NoSuchMethodError"或"ClassNotFoundException"之类的问题,甚至发生这些问题的Java类你没都没有听说过。要搞清楚这里面的缘由,我们得学习Maven对依赖冲突的处理机制。 Maven采用“最近获...
2019-02-20 18:26:29
137
原创 Quartz的冲突处理
说明一下如何处理好quartz的调度关系首先查看一下quartz的配置,有设置thread factory的方法,具体没有试过。还有thread factory的大小的设置org.quartz.scheduler.jobFactory.class:com.yh.bigdata.silkworm.api.scheduler.JobFactoryorg.quartz.threadPool.cla...
2019-02-17 11:49:06
2596
原创 一个动归的例子--最长递增子序列(Longest Increasing Subsequence,lis)
难度评级:★ 对于一个序列如1,-1,2,-3,4,-5,6,-7,其最长第增子序列为1,2,4,6。解法: 除了利用3中lcs来求解,这里使用求解lis问题的专门方法。 先看看如何确定子结构的表示。对于长度为k的序列s[1...k],如果用lis[k]记录这个序列中最长子序列似乎没什么用,因为在构造lis[k+1]时,需要比较s[k]与前面长度为lis[k]的lis的最后...
2019-02-13 09:39:23
163
原创 回溯法--例子
一句话开场:回溯法就是对隐式图的深度优先搜索bool finished = FALSE; /* 是否获得全部解? */backtrack(int a[], int k, data input){ int c[MAXCANDIDATES]; /*这次搜索的候选 */ int ncandidates; /* 候选数目 */ int i; /* counter */...
2019-02-06 22:15:26
468
转载 简单的乐观锁实现
https://blog.csdn.net/hh1sdfsf56456/article/details/79449714 最简单的乐观锁实现就是在更新的时候,where里面加上version字段,这样的话,如果数据已经更新掉了,就不能再更新了...
2019-01-31 17:30:31
1098
原创 etcd相关总结
etcd sudo wget https://github.com/etcd-io/etcd/releases/download/v3.2.26/etcd-v3.2.26-linux-amd64.tar.gzsudo tar -xzvf ./etcd-v3.2.26-linux-amd64.tar.gzsudo mkdir -p /etc/etcdsudo vi /etc/etcd/...
2019-01-31 17:24:58
252
转载 数据库锁
一、悲观锁和乐观锁 我们经常在开发中遇到数据库并发处理时,处理不一致的问题。需要对程序做并发控制。典型的并发时出现的冲突有两种:1、丢失更新:一个事务的更新覆盖了其它事务的更新结果,就是所谓的更新丢失。例如X=0 A1把X=X+1 A2也设置X=X+1 如果A1和A2同时执行,可能出现最终X=1的情况。而我们需要得到的是X=2 。 这就需要update处理为串行化的。2...
2018-12-16 16:33:09
159
1
原创 安装azkaban的时候遇到的一些问题
1,将gradlew转化为maven:注意group和version要保持一致,否则会导致最后的maven依赖失败在根目录和各个子目录当中的gradlew文件当中纷纷加入以下脚本:apply plugin: 'java'apply plugin: 'maven'group = 'com.linkedin'version = '3.62.0'sourceCompatibilit...
2018-12-05 20:35:37
2036
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人