自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(162)
  • 收藏
  • 关注

原创 Hive Left join on 与Where 的优先级

1. select t.* from A f join B ton (f.id = t.id and f.分区=20181111 and t.分区=20181111)2. select t.* from (select id from A where 分区=20181111) fjoin(select * from B where 分区=20181111) ton (f.id = t.id)总结一:1. 对于a join b,无论过滤条件放到on中还是where中,结果相同。2...

2020-12-28 19:30:40 3473

原创 单链表,以及反转递归实现,

/** * @author By zhouwx5 * @Created on by 2019/11/19 * @Desc: */public class LinkedNode<T> { private Node header; private Node tail; private int size; private void linkL...

2019-11-19 16:57:46 207

原创 guava cache 缓存Demo

今天项目,老大让我写个缓存机制,又不让用Spring自带的,于是乎我就自己疯狂的找了一下,先说下缓存的原理把缓存:咱们就大白话把,缓存存在的意义是时间换空间,用内存来换取时间的速度,加快查找,等速度,如果往深了说,就会涉及到高速缓存区,CPU缓存等等,这个有兴趣的人可以去学习一下,我就给大家放一张我认为符合的图把这个呢,是CPU和内存之间,其实内存缓存和数据库交互也是这样的道理,就...

2019-09-29 16:48:59 897

原创 Elasticsearch学习

最近在学习Elasticsearch,先给大家推荐一本书Mastering Elasticsearch深入理解 Elasticsearch这本书我觉得实用性比较高,目前我还在看,这本书教会了我怎么用,怎么理解使用原理吧下面开始介绍一下:这段话是我粘贴的哈:Elasticsearch 是一个建立在全文搜索引擎Apache Lucene(TM)基础上的搜索引擎,可以说 Lucen...

2019-09-24 12:10:56 173

原创 volatile

我们知道volatile关键字的作用是保证变量在多线程之间的可见性,它是java.util.concurrent包的核心,没有volatile就没有这么多的并发类给我们使用。本文详细解读一下volatile关键字如何保证变量在多线程之间的可见性,在此之前,有必要讲解一下CPU缓存的相关知识,掌握这部分知识一定会让我们更好地理解volatile的原理,从而更好、更正确地地使用volatile关键...

2019-09-16 17:28:14 117

原创 HashMaP 1.8底层红黑树

Hash Map 是工作中非常常见的一个结果,map.put 更是程序员最爱的那个结构,贼拉方便,今天我带大家看看底层,map。put 的底层实现了putvalue的方法,有兴趣的可以去看一下,这里就不多说了,你会发现,哎,用到了的是红黑树,那么红黑树是啥呢,平衡二叉查找树,红黑树(如上图,引用自维基百科)是一种自平衡的二叉树,所谓的自平衡是指在插入和删除的过程中,红黑树会采取一定...

2019-09-12 11:15:30 615

原创 线程池使用

线程池: 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。 如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能。 一个线程池包括以...

2019-08-21 17:03:16 212

转载 List remove 使用

今天在工作的时候遇到了个深坑,List.remove,通过百度,以及自己思考终于发现了这个坑!看看下面所写 import java.util.ArrayList;import java.util.List; public class ListTest { public static void main(String[] args) { List<Integer&gt...

2019-08-20 19:55:44 2466 3

转载 zookeeper在windows下安装集群

下载:zookeeper:http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz解压zookeeper-3.4.6.tar.gz一、单机配置把zookeeper-3.4.6/conf/zoo_sample.cfg修改为zoo.cfgzoo.cfg内容:tickTime=2000...

2019-08-13 11:37:31 369

原创 常见数据库拆分方案汇总

前言随着互联网行业的高速发展,一些商业的存储解决方案的成本越来越高;大部分企业开始寻求开源的存储解决方案,成为互联网商业存储的首选。下面以mysql为例,介绍下数据库的扩展方案。根据业务域垂直拆分首先是根据业务域进行拆分。以前可能所有的业务表是耦合在一个数据库中,这种模式下,系统的复杂性越来越大,开发维护成本越来越大,开发效率越来越低,系统的资源成本也会越来越大。优点:所以需要从业...

2019-08-13 10:56:45 467

原创 遇到了 GC overhead limit exceeded

通过百度得知大概意思就如果系统大量的时间都在GC(98%)而回收的效果不明显(2% heap空间),就会抛出这个异常。实际这是一个JVM预判性的异常,也就是说抛出这个异常的时候没有真正的内存溢出。由此得出结论:1.OOM根本原因是heap空间不足,在服务端添加参数-Xmx1024M –Xms1024M,异常消失。2.OOM异常使线程退出,当没有非deamon线程的时...

2019-08-07 17:47:59 926

原创 Java static方法里为什么不能使用this关键字,和Super

Static方法是类方法,先于任何的实例(对象)存在。即Static方法在类加载时就已经存在了(JAVA虚拟机初始化时),但是对象是在创建时才在内存中生成。而this指代的是当前的对象。static叫静态方法,也叫类方法。即在程序启动的时候,就会为static方法分配一块内存空间,没有static的其他方法,非静态方法,必须在类实例化时,才有内存空间,所以在类实例化之前是无法调用的...

2019-08-07 10:54:34 2847

原创 Eureka  Spring Cloud 搭建微服务

最近在做项目的时候,因为只存在了会用微服务,没有详细的自己去研究一下,接下来我讲介绍一下Eureka,和Zookpper 其实差不多一、Eureka是什么Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netf...

2019-08-03 17:11:47 131

原创 In 和exsits

今天 有一个历史表里,有很大的数据,因为项目较老,没有考虑到分表,所以查询就很慢,很恶心.PS 数据量特别大,并且没有索引。当我用exists 的时候发现速度并不是很快,所以,我就研究了一下exsitsin和existsin 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。一直以来认为exists比in效率高的说法是不准确...

2019-07-31 16:45:38 384

原创 阿里 Mysql 命名规范

1.平时我们在做业务的时候,数据库命名很重要,如果一旦上云的话,更名,是一个操蛋的事情,让我们了解一下阿里的(一)建表规约1.【强制】表达是与否概念的字段,必须使用is_xxx的方式命名,数据类型是unsignedtinyint(1表示是,0表示否),此规则同样适用于odps建表。说明:任何字段如果为非负数,必须是unsigned。2.【强制】表名、字段名必须使用小...

2019-07-31 11:49:27 6463 1

原创 沉淀一下关于项目的理解

好久不写博客了,忙完了这个4期工程,终于有时间写博客了,我就说说我做项目里最大的坑吧、1.在Lenovo,有一个非常明显的特色,就是沟通,这里的人沟通起来简直不要太让人生气,但是呢,没办法,只能在有限的开会时间里,获取有意义的需求,以及逻辑,说到逻辑,这里业务复杂度,可能是我实习到转正,遇上的最复杂的一次了,梳理逻辑,梳理到我头皮发麻,业务在这里就不透露了,主要说的是沟通,沟通真的是一种能力,...

2019-07-29 10:27:32 534

转载 SQL Server 和 Oracle 以及 MySQL 数据库的区别

SQL是一种语言;MySql,Oracle和SQL Server是指数据库系统。一、数据库对比。----1.Oracle:最贵,功能最多,安装最不方便,Oracle环境里的其他相关组件最多,支持平台数量一般,使用中等方便,开发中等方便,运维中等方便,不开源,速度最慢,最安全。----2.Microsoft SQL Server 2014:中等贵,功能最少,安装中等方便,Microsoft ...

2019-01-21 18:03:31 3325 1

原创 工作总结

1.在联想的两个月当中,自己感受到了大企业的文化底蕴以及业务的复杂度之深,对于一个项目来说,编码真的不是一个很困难的事情,困难的是沟通,有可能一个列的数据要一个星期去沟通他是怎么取值,怎么优化的,当把这些沟通了解取数逻辑或者业务逻辑,掌握业务后,这个编码就会很简单,只是把逻辑呈现给计算机上。2.在工作的时候,你可能什么人都会遇上,比如,根本找不到人系列,开完会下班系列,等等等,这时候你就需要从...

2018-12-19 16:42:43 395

原创 利用POI 从Excel取图,自动制作PPT

Excel中的模版是这样的 一个PNG 或者jpg 另外有一段表格 如图首先呢,我们会想到poi这个工具然后我的思路是先把图片取出来,然后利用G2P 将表格画出来,这样一想,就很简单了。下面看代码取表格 import java.awt.BasicStroke;import java.awt.Color;import java.awt.Font;import java.a...

2018-12-10 14:54:19 538 1

原创 写一写工作之后的体会吧

1.第一天来公司的时候,我还在满怀犹豫,不知道自己去干什么,当我知道有个自动化任务的时候,我原来没有用过java写过这样的脚本,但是,我内心还是很想去完成,体现自己的价值的。于是我去要到这个任务后,大概花了半天弄出demo,半天去理解需求,以及学习自动脚本的内容,最后在2天内弄了出来,这期间遇到最大的问题就是数据不能够随便测,需要自己严密的逻辑,不出BUG对于异常控制要到位,对于超时,以及重试要到...

2018-11-27 17:14:29 303

转载 Spring bean的生命周期

Spring 中bean 的生命周期短暂吗?在spring中,从BeanFactory或ApplicationContext取得的实例为Singleton,也就是预设为每一个Bean的别名只能维持一个实例,而不是每次都产生一个新的对象使用Singleton模式产生单一实例,对单线程的程序说并不会有什么问题,但对于多线程的程序,就必须注意安全(Thread-safe)的议题,防止多个线程同时存取...

2018-11-07 14:46:18 171

原创 Spring事务传播机制

Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播,即协调已经有事务标识的方法之间的发生调用时的事务上下文的规则(是否要有独立的事务隔离级别和锁) 概述当我们调用一个基于Spring的Service接口方法(如UserService#addUser())时,它将运行于Spring管理的...

2018-11-07 14:09:51 173

原创 volatile的内存语义

        当声明共享变量为volatile后,对这个变量的读写将会很特别.为了揭开volatile的面纱,下面介绍一下1.理解volatile特性的好办法就是把对volatile变量的单个读写,注意是单个读写,看成是使用同一个锁对这些单个读/写操作做了同步.代码:class VoExa{volatile long v1 =0L;//使用声明volatile64位的long型...

2018-11-06 20:19:07 168

原创 权限设置问题

1.权限的设置大致上分为,管理员,客户管理员(不能看见特殊菜单其他与管理员一样),权限分配的形式以树的形式呈现,运用了ZTree,API还是很简单的,可以看看大家。2.遇到的困难主要在回显,1,2 级菜单以及菜单前的嵌套,这里有个最重要的前提就是数据库的设计,否则就会很麻烦,设计库的时候才有树形结构的去设计,这样会省了很多事情,尽量在一个表通过ParentId去划分。...

2018-11-04 15:58:52 499

原创 Java GC机制

 GC机制的基本算法是:分代收集,这个不用赘述。下面阐述每个分代的收集方法。    年轻代:  事实上,在上一节,已经介绍了新生代的主要垃圾回收方法,在新生代中,使用“停止-复制”算法进行清理,将新生代内存分为2部分,1部分 Eden区较大,1部分Survivor比较小,并被划分为两个等量的部分。每次进行清理时,将Eden区和一个Survivor中仍然存活的对象拷贝到 另一个Sur...

2018-11-03 16:56:12 97

原创 Java锁

Java对象头的长度Java的对象头通常由两个部分组成,一个是Mark Word存储对象的hashCode或者锁信息,另一个是Class Metadata Address用于存储对象类型数据的指针,如果对象是数组,还会有一个部分存储的是数据的长度锁分为4种状态:无锁状态,偏向锁状态,轻量级锁状态和重量级锁状态。偏向锁1.在大多数情况下,锁不仅不存在多线程竞争,而且总是由同一线程...

2018-11-03 15:58:02 113

原创 Java 类锁对象锁

在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看这个关键字的用法。因为synchronized关键字涉及到锁的概念,所以先来了解一些相关的锁知识。 java的内置锁:每个java对象都可以用做一个实现同步的锁,这些锁成为内置锁。线程进入同步代码块或方法的时候会自动获得该锁,在退出同步代码块或方法时会释放该锁。获得内置锁的唯一途径就是进入这...

2018-11-03 15:41:19 163

原创 顺序一致性

 数据竞争与顺序一致性保证当程序未正确同步时,就会存在数据竞争。java 内存模型规范对数据竞争的定义如下:在一个线程中写一个变量, 在另一个线程读同一个变量, 而且写和读没有通过同步来排序。当代码中包含数据竞争时,程序的执行往往产生违反直觉的结果(前一章的示例正是如此)。如果一个多线程程序能正确同步,这个程序将是一个没有数据竞争的程序。JMM 对正确同步的多线程程序的内存一...

2018-11-03 15:22:15 6241

原创 内存屏障

内存屏障(Memory Barrier,或有时叫做内存栅栏,Memory Fence)是一种CPU指令,用于控制特定条件下的重排序和内存可见性问题。Java编译器也会根据内存屏障的规则禁止重排序。      内存屏障可以被分为以下几种类型LoadLoad屏障:对于这样的语句Load1; LoadLoad; Load2,在Load2及后续读取操作要读取的数据被访问前,保证Load1要读取的数据被读...

2018-11-03 15:20:32 238

原创 Java内存模型基础简介

1.Java线程之间的通信对程序员完全透明,内存可见性(就是指内存变动)很容易困扰Java程序员。Java内存模型基础主要介绍的是概念,如顺序一致性(主要是重排序与顺序一致性)2.什么是并发编程?很简单就是很多线程同时访问同一个变量。3.线程之间的通信机制有两种:共享内存与消息传递(通过信号量通知进行传递)4.在共享内存的并发模型里,线程之间共享程序的公共状态,通过写-读内存中的公...

2018-11-03 15:14:17 388

转载 堆外内存

HeapByteBuffer与DirectByteBuffer,在原理上,前者可以看出分配的buffer是在heap区域的,其实真正flush到远程的时候会先拷贝得到直接内存,再做下一步操作(考虑细节还会到OS级别的内核区直接内存),其实发送静态文件最快速的方法是通过OS级别的send_file,只会经过OS一个内核拷贝,而不会来回拷贝;在NIO的框架下,很多框架会采用DirectByteBuff...

2018-11-02 16:13:59 174

原创 Java 远程Debug

本节尝试一下Java远程调试的东西,记录一遍简单入门的东西。也就算是使用记录吧!写一个简单程序打成jar丢到远程服务器运行,模拟远程Server在运行。就拿Java调用shell脚本提交作业程序为例分析。源码如下(如下程序就是一个简单示例代码,不要在乎代码规范):import java.io.InputStream;public class JavaShell { publ...

2018-11-02 09:36:06 3195

原创 微服务,以及各种协议的传输,集群,分布式等的理解

2018-10-29 10:25:58 218

原创 Mysql 根据某一条件合并另一个字段,中间用逗号隔开

MySqL 提供了一个合并字段的函数GROUP_CONCAT,先看一下例子 查出来的结果如下,记住千万要分组,不然就只有一条数据SELECT a.*,GROUP_CONCAT(DISTINCT n.asset_name) AS name_description FROM asset_scrap AS a LEFT JOIN dic_asset_name AS n ON...

2018-10-12 10:21:23 8383

原创 100G文件传输切割思想

1.首先考虑实际业务与极限状态2.极限状态:10KB网速+1秒钟段10次网3.业务优先级:重要优先,不重要退后4.多线程执行,执行小文件优先,大文件其次,重要优先,不重要其次。5.当重要大文件传输完成时其他线程等待,堵塞。6.文件完整性要求:不要求如(日志)使用并发,多线程。否则太耗时。文件完整性要求高时,使用同步。7.回档与删除,另开线程,否则太耗时。8.文件完整性效...

2018-10-08 18:34:58 1094

原创 Java设计模式--观察者模式

1、初步认识观察者模式的定义:  在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。大白话:  其实就是发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。2、这个模式的结构图3、可以看到,该模式包含四个角色抽象被观察者角色:也就是一个抽象主题,它把所有对观察者对象的引用保存在一个集合中,...

2018-10-08 17:00:47 107

原创 VirtualBox安装Ubuntu教程(超详细)

下载ubuntu系统镜像,准备虚拟机挂载镜像用。选择新建,创建虚拟机。选择系统版本,因为要安装ubuntu,所以选择ubuntu。设置虚拟机ubuntu的内存。创建虚拟机的磁盘,分配20G空间,动态分配是逐渐占用物理机硬盘空间。 6 点击存储,设置虚拟光盘,也就是下载的ubuntu镜像。 7 点击启动。...

2018-10-04 10:21:43 55376 4

原创 前端多个文件批量下载进行打包

先上代码 $('a[id^="budgetOneN"]').each(function() { $(this).click(function() { downZip($(this));//给每个a标签加事件 }); }); const getFile = url =&gt; { return new Promise((resolve, rejec...

2018-09-29 21:48:29 14083 2

原创 实现多文件上传(使用java与js)

今天项目需要用到多文件上传于是自己写了一个 分享给大家。首先应用的的input file 控件 通过 ajax 封装的一个上传方式 先上前台代码不上代码的都不是好人&lt;input id ="attachmentInfo" type="hidden" name="attachment" value="${pd.attachment}"&gt;&lt;c:choose&gt;&amp

2018-09-28 22:01:53 4682 1

原创 对资产项目总结(含流程图)

今天对整个资产项目的流程进行总结:资产项目流程图:项目模块解释一.项目管理模块预算管理:对项目进行预算费用,进行预算时间,以及项目所属分类的归纳。 专项管理:成立一个个项目组,提交的项目预算成立专项,实现一条龙查询。并且在给专项拨款,以及项目的说明,和决算总结。 采购申请:每个专项的采购申请单的统计,由高层来审核与签字,在征得同意的前提下才可以继续。 采购清单:将所有采购...

2018-09-27 15:49:21 1346

空空如也

空空如也

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

TA关注的人

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