- 博客(23)
- 收藏
- 关注
原创 leetcode经验
public void solve(char[][] board) { for(int i=0;i<board.length;i++){ int start=0,end=board[i].length-1; //顺序不能乱 while(start<=end&&board[i][st...
2020-04-29 08:58:25 83
原创 scala lambada表达式简化接口实现
Function0<JavaStreamingContext> createContectFunc=new Function0<JavaStreamingContext>() { @Override public JavaStreamingContext call() throws Exception { ...
2020-04-28 18:06:48 115
原创 spark中的宽窄依赖
NarrowDependency: Base class for dependencies where each partition of the child RDD depends on a small number of partitions of the parent RDD. Narrow dependencies allow for pipelined execution....
2020-04-27 14:29:07 226
原创 开窗函数
开窗函数的意义在于,可以只针对某一列做类似于group by才能进行的操作,而group by会作用与所有的字段使用格式:函数名(列名) OVER(...)使用示例:select studentId,language,math,english,classId,departmentId,count(math) over() as count1 -- 以符合条件的所有行为作为窗口from...
2020-04-25 11:28:38 254
原创 flume lzo压缩bug
*******flume以lzop压缩格式往hdfs会报找不到lzo library,即flume自己没法支持lzo压缩 解决方法:在linux服务器上yum install lzo
2020-04-25 11:07:13 237 1
原创 线程间共享的资源
线程间共享的资源:1.进程代码段2.进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)3.进程打开的文件描述符4.进程的当前目录5.进程用户ID与进程组ID.........
2020-04-25 10:56:33 197
原创 线程上下文切换
线程上下文切换什么时候会发生上下文切换?按导致上下文切换的因素划分,可将上下文切换分为两点:自发性上下文切换非自发性上下文切换自发性上下文切换指线程由于自身因素导致的切出。通过调用下列方法会导致自发性上下文切换:Thread.sleep()Object.wait()Thread.yeild()Thread.join()LockSupport.park()等非自发性上下文切...
2020-04-25 10:53:13 437
原创 Runnable、Thread、Callable的区别
线程实现的方式及区别:Runnable、Thread、Callable实现 Runnable 接口相比继承 Thread 类有如下优势 1)可以避免由于 Java 的单继承特性而带来的局限 2)增强程序的健壮性,代码能够被多个线程共享,代码与数据是独立的 3)线程池只能放入实现 Runable 或 Callable 类线程,不能直接放入继承 Thread 的类实现 Runnable 接...
2020-04-25 10:52:00 961
原创 java 方法分派
java 方法调用绑定将一个方法调用同一个方法主体关联起来被称为绑定。当编译器只有一个引用时,它无法知道究竟调用哪个方法才对,解决的办法就是后期绑定,它的含义就是在运行时根据对象的类型进行绑定。后期绑定也叫做动态绑定或运行时绑定。java中除了static方法和final(private方法属于final方法)之外,其他所有的方法都是后期绑定。...
2020-04-25 10:21:15 121
原创 Integer的缓存机制
Integer的缓存机制在Java 5中,在Integer的操作上引入了一个新功能来节省内存和提高性能。整型对象通过使用相同的对象引用实现了缓存和重用。适用于整数值区间-128 至 +127。只适用于自动装箱。使用构造函数创建对象不适用。...
2020-04-25 10:20:20 76
原创 自动拆装箱
自动拆装箱及其原理我们有以下自动拆装箱的代码:public static void main(String[]args){ Integer integer=1; //装箱 int i=integer; //拆箱}对以上代码进行反编译后可以得到以下代码:public static void main(String[]args){ Integer integer...
2020-04-25 10:19:20 192
原创 什么是java虚拟机
一旦 Java 代码被编译为 Java 字节码,便可以在不同平台上的 Java 虚拟机实现上运行。此外,虚拟机还提供了一个代码托管的环境,代替我们处理部分冗长而且容易出错的事务,例如内存管理。Java 虚拟机将运行时内存区域划分为五个部分,分别为方法区、堆、PC 寄存器、Java 方法栈和本地方法栈。Java 程序编译而成的 .class 文件,需要先加载至方法区中,方能在 Java 虚拟机中...
2020-04-25 10:17:48 87
原创 动态规划、分治、贪心的操作流程
动态规划:将原问题分解为当前解与子问题,递归进行分治:将原问题分解为多个子问题,然后合并贪心:以初始解作为条件,一步一步往下走,每一步都是局部最优解...
2020-04-25 08:43:00 94
原创 装饰模式
装饰者模式是针对的这样一种情况,程序对于一个类在不同情况下需要不同的功能,而这些功能都是在不改变最简洁功能的基础上实现的。我们可以将最核心的功能抽取出来单独作为一个类,装饰者只要持有该对象的一个引用,然后利用原有功能重写对应的方法即可。还有一点需要注意的是,装饰者对象要么是原对象的子类要么拥有共同的父接口,这样装饰对象也可以作为一个原对象传入另一个装饰者对象,以实现对原对象一层一层装饰的作用。装...
2020-04-23 21:09:52 70
原创 mysql的mvcc(多版本控制)
多版本控制通过记录多版本的数据从而避免了读等待提高了性能。mysql会为每行记录增加三个字段,第一个字段记录了该行的create version和delete version。当创建一行时,create version存入该事务的id,当删除一行时delete version存入该事务的id,更新相当于先删除再创建。事务id是递增的。第二个字段指向撤销日志以便于回滚。回滚段中的撤消日志分为插入...
2020-04-03 11:42:54 128
原创 一致的非锁定读
select语句是不加锁的,除非显式地指定了for update或者for share。读已提交:同一个事务中每次读最新的版本可重复读:同一事务中每次读取都和第一次读取建立的快照一致。利用了mvcc实现的mysql讲解一致的非锁定读的官方文档...
2020-04-03 11:41:07 60
原创 mysql实现乐观锁与悲观锁
乐观锁:认为当前竞争度不高的情况使用,类似于java中的cas操作,一般是在表的字段中设置版本号,代码中先获取记录及对应的版本号,然后执行逻辑操作,最后循环进行,update … version=version_+1 and… where version=verson_ …直到成功。 悲观锁:认为当前竞争度高的情况使用,一般是,一锁二查(2.5 逻辑操作)三更新。可以用select… f...
2020-04-03 11:37:52 102
原创 mysql的事务嵌套
mysql默认不支持事务嵌套,对于begin…begin…commit,第一个事务会在第二个begin开启前隐式的提交。所以begin…begin…rollback后并不能再对最外面的事务进行操作了。但是mysql提供了savepoint可以实现事务嵌套的逻辑。如何使用savepoint实现事务嵌套...
2020-04-03 11:36:24 333
原创 mysql事务的自动提交与手动提交
set autocommit=0,手动提交需要执行commit才能将前面的语句作为一个事务提交,否则就永远是不提交的状态 set autocommit=1,自动提交手动指定一个事务的begin与commit不开启事务,默认每句命令作为一个事务自动提交...
2020-04-03 11:34:21 1547
原创 mysql各语句对应的锁
三种锁: record locks:只锁查出来的记录项如果是索引,直接锁索引然后再去锁对应的主键如果不是索引,去锁主键如果没有主键,锁全表 gap locks:是对索引记录之间的间隙上锁,不包括记录本身,间隙锁的目的是为了防止在间隙之间插入新的记录,间隙锁可以重叠。 next-key locks:相当于record locks + gap locks,锁住查询范围。提交后读:s...
2020-04-03 11:29:39 96
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人