- 博客(45)
- 收藏
- 关注
原创 RedisTemplate Api
org.springframework.data.redis.core.RedisTemplate版本 2.0.3.RELEASEapi详解如下dump序列化给定key,并返回被序列化的值,使用RESTORE命令可以将这个值反序列化为 Redis 键。序列化生成的值有以下几个特点:它带有 64 位的校验和,用于检测错误,RESTORE在进行反序列化之前会先检...
2019-07-01 13:19:24
519
原创 自动垃圾回收和分代垃圾回收机制
自动垃圾回收机制第一步:标记垃圾回收的第一步是标记。垃圾回收器此时会找出哪些内存在使用中,还有哪些不是。上图中,蓝色表示已引用对象,橙色表示未引用对象。垃圾回收器要检查完所有的对象,才能知道哪些有被引用,哪些没。如果系统里所有的对象都要检查,那这一步可能会相当耗时间。第二步:清除这一步会删掉标记出的未引用对象。内存分配器会保留指向可用内存的引用,以供分配新对象。第...
2019-06-30 15:56:08
588
原创 硬件、系统和进程层次内存概要,JVM与进程的关系
硬件:Linux空间由两部分组长,物理内存和Swap(位于磁盘),物理内存是Linux活动时使用的主要内存区域;当物理内存不够使用时,Linux会把一部分暂时不用的内存数据放到磁盘上的SWAP中去,以便腾出更多的可用内存空间;而当需要使用位于SWAP的数据时,必须 先将其换回到内存中。 从Linux系统看,除了引导系统的BIN区,整个内存空间主要被分成两个部分:内核内存(Kernel sp...
2019-06-29 21:06:54
706
原创 HashMap总结
概述HashMap是一个存储key-value键值对的集合,每个键值对也叫Entry,每个Entry可以看做是一个链表的节点,每个元素的初始值都是null。APIput新插入一个key为“dog”的元素,调用hashMap.put("dog",0):首先利用哈希函数来确定Entry的插入位置,index=Hash(“dog”) 放入指定的位置,若该位置无元素,Entry放入...
2019-05-22 09:27:35
140
原创 负数与二进制的转换(原码 反码 补码)
原码,反码和补码概念正数原码:正数的原码为取绝对值的数转二进制,5的原码为 0....0101 负数原码:负数的原码为取绝对值的数转二进制,然后符号位加一,-5的原码为 1....0101 正数的反码:正数的反码与原码相同。 负数的反码:负数的反码,对该数的原码除符号位外,各位取反。-5的反码为 11111....1010 正数的补码:与该数原码相同。 负数的补码:对该数的反码...
2019-05-16 09:27:24
12600
1
原创 位运算符和移位运算符
位运算符主要应用在二进制中运算中。与(&)运算符示例:0&0=0 必须全部位1则为1,否则为0 0&1=0 1&0=0 1&1=1 全部为1,结果为1非(~)运算符非运算符即取反运算,1变0,0变1。~1110010= 0001101或(|)运算符示例:0&0=0 两个数有任意一个为1则结果为...
2019-05-14 09:46:54
1468
1
原创 Maven知识
本文章我在公众号 Java知音 看到,很好的博客,故在此记录和分享,以备之后复习。目录以前的日子现在的日子结构仓库本地仓库远程仓库中央仓库私有仓库最佳实践镜像生命周期坐标依赖依赖传递依赖冲突依赖排除解决冲突依赖管理聚合继承插件指令指令参数举个例子以前的日子以前我们写代码时,jar...
2019-05-05 17:05:15
1697
原创 Linux常用指令
目录awkchmodfindhostnamell&lsmd5sumstattouchyumawkawk是行处理器:相比屏幕处理的优点是在处理庞大的文件时不会出现内存溢出,或者处理缓慢,通常用来格式化文本信息。awk处理过程:依次对每一行进行处理,然后进行输出。awk命令形式:awk [ -F | -f | -v ] ‘BEG...
2019-05-01 15:52:16
165
原创 BeanFactory和FactoryBean
BeanFactoryBeanFactory是Spring中IOC容器的最基本形式,给具体的IOC容器提供了规范。 ApplicationContext接口,它由BeanFactory接口派生而来,ApplicationContext包含BeanFactory的所有功能,通常建议比BeanFactory优先 他是一个工厂类,它负责生产和管理bean的一个工厂。 BeanFactory...
2019-04-21 18:34:05
175
原创 动态代理实现:Jdk动态代理实现和cglib动态代理实现
JDK动态代理代理类根据业务实现类的对象和方法名动态的创建一个代理类的class文件并被字节码引擎执行,然后通过该代理类对象进行方法的调用。代码实现/** * @author zhang-jian */public interface Test { /** * 测试方法 */ void printResult();}/** * ...
2019-04-21 18:13:56
196
原创 堆排序
目录了解堆排序堆排序Java代码实现了解堆排序先来了解完全二叉树。完全二叉树与堆的关系:最小堆:在满足作为完全二叉树的基础上,对于任意一个拥有父节点的子节点,其数值均不小于父节点的值;这样层层递推,就是根节点的值最小,这样的树,称为小根堆。最大堆:同理,又有一棵完全二叉树,对于任意一个子节点来说,均不大于其父节点的值,如此递推,就是根节点的值是最大的,这样的数,...
2019-03-30 15:50:12
262
原创 快速排序
思想:分治思想,将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。代码实现:/** * @author zhang-jian * @date 2019/03/23 */public class QuickSort { public static void main(String[] args) { ...
2019-03-30 15:43:57
117
原创 MySql中On和Where的区别
区别:先执行on,后执行where;on是建立关联关系,where是对关联关系的筛选。 比如两个表进行left join连接查询结果,where会对查询的结果进行过滤, on会返回驱动表的所有数据。 left join按照条件关联,不管是否为真,都返回左边表的数据。...
2019-03-30 15:13:39
3906
原创 MySql优化建议
MySql优化建议目录MySql优化建议优化维度建议Join影响性能的因素:1.内循环的次数:2.快速匹配:3.排序:优化维度表的设计合理化(符合3NF) 添加适当索引(index) [四种: 普通索引、主键索引、唯一索引unique、全文索引] SQL语句优化 分表技术(水平分割、垂直分割) 读写[写: update/delete/add]分离...
2019-03-30 15:11:25
198
原创 MySql部分函数记录
目录插入部分测试数据:concat(str1,str2..)concat_ws(separator,str1,str2....)group_concat([distinct] 字段 [order by 排序字段 ASC/DESC] [separator "分隔符"])floor(val)Rand()插入部分测试数据:调用存储过程,插入10条随机数据,存储过程...
2019-03-30 12:19:54
121
原创 MySql索引及原理分析
MySql索引及原理分析目录MySql索引及原理分析什么是索引?为什么要有索引?MYSQL索引的分类索引原理分析最左前缀原则什么是索引?为什么要有索引?索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有一个索引,MySQL能够快速到达一个位置去搜...
2019-03-30 12:02:56
587
原创 MySql函数和存储过程
MySql函数和存储过程MySql函数:创建语法:CREATE FUNCTION func_name([func_parameter])RETURNS TYPE[characteristics ... ] routine_bodyCREATE FUNCTION 为创建存储函数的关键字; func_name 表示存储函数的名称; func_parame...
2019-03-30 11:38:05
240
原创 Kafka总结
《-- Kafka --》拉取kafka消息:(--from-beginning表示从头拉取消息)kafka-console-consumer.sh --bootstrap-server machine-01:9092,machine-02:9092,machine-03:9092,machine-04:9092 --from-beginning --topic log_commonka...
2019-03-06 10:40:19
303
原创 Linux基础知识总结
git clone https://github.com/Tencent/Tars.git 下载该git的项目rz 弹出一个文件窗口选择一个文件上传到服务器rm ... 删除文件cp 文件 目标地址(文件名) 复制文件mv 文件 目标地址(文件名) 移动文件tcpdump -n -i eth0 host 192.168.31.147 and 114....
2019-03-06 10:39:34
214
原创 MYSQL基本知识
MySQL数据类型:1.整数类型:TINTINT(1字节),SMALLINT(2),MEDIUMINT(3),INT(4),BIGINT(8)2.浮点数类型和定点数类型:FLOAT(4字节),DOUBLE(8),DECIMAL(M,D)(M+2 字节) M:数值的总位数; D:小数点保留的位数;也就是说保留的最大整数位是M-D。3.日期与时间类型:TEAR(YYYY),T...
2019-03-06 10:36:10
210
转载 Spark开发性能调优
–Write By Vin1. 分配资源调优Spark性能调优的王道就是分配资源,即增加和分配更多的资源对性能速度的提升是显而易见的,基本上,在一定范围之内,增加资源与性能的提升是成正比的,当公司资源有限,能分配的资源达到顶峰之后,那么才去考虑做其他的调优如何分配及分配哪些资源在生产环境中,提交spark作业时,使用spark-submit shell脚本,里面调整对应的参数 常...
2018-08-02 21:01:33
451
原创 Hive安装和部署
1.http://mirrors.hust.edu.cn/apache/hive/ 进入hive-1.2.2/ 下载 apache-hive-1.2.2-bin.tar.gz, 上传到 /opt/ 2.tar apache-hive-1.2.2-bin.tar.gz 解压。3.export HIVE_HOME=/opt/apache-hive-1.2.2-bin进入apache-hive-1.2...
2018-04-09 17:24:45
422
翻译 HDFS概念
1、数据块:每个磁盘都有默认的数据块大小,这是磁盘进行数据读/写的最小单位。文件系统通过磁盘块来管理文件系统块。HDFS也有块的概念,默认64MB,HDFS上的文件被划分为块大小的多个分块,与其他文件系统不同得是,一个小于块大小的文件不会占据整个块的空间。2、namenode和datanode...
2018-03-13 09:56:59
217
翻译 RPC
RPC目前沿着两条发展路线:1、一个是目标为了跨语言,服务端可以用不同的语言实现,客户端也可以用不同的语言实现,不同的语言实现的客户端和服务器端可以互相调用。很显然,要支持不同的语言,需要基于那种语言实现相同协议的框架,并且协议设计应该也是跨语言的,其中比较典型的是 grpc,基于同一个IDL,可以生成不同语言的代码,并且语言的支持也非常的多。2、另一个rpc框架发展的目标是支持服务治理,主要的精...
2018-03-09 18:04:28
167
原创 MyEclipse配置Maven以及入门
1、Maven下载地址:http://maven.apache.org/download.cgi2、下载后解压放在D:\MavenServer下3、为Maven配置环境变量、在Path路径下的结构后面添加Maven的文件目录/bin,我的是:D:\MavenServer\apache-maven-3.5.2\bin;4、win+r 执行cmd命令行输入mvn -vers
2017-11-14 09:22:04
4852
翻译 归并排序
归并排序算法思想:分而治之(divide - conquer);每个递归过程涉及三个步骤第一, 分解: 把待排序的 n 个元素的序列分解成两个子序列, 每个子序列包括 n/2 个元素.第二, 治理: 对每个子序列分别调用归并排序MergeSort, 进行递归操作第三, 合并: 合并两个排好序的子序列,生成排序结果.package 排序;public class Me
2017-09-13 10:24:18
172
翻译 _01背包问题----简单粗暴
对背包问题的总结:首先说递推公式:arr[i][j] = Math.max(arr[i - 1][j], arr[i - 1][j - w[i]] + v[i]);w[i]为物品质量的数组,v[i]为物品价值的数组arr[i][j]表示装i个物品(实际上这里的i,arr[i][j] 表示装i个物品,w[i],v[i]表示选择第i个物品),承重为j时背包的最大价值,首先容易想到a
2017-09-13 09:37:29
252
原创 最小乘积_基本型_快速排序实现
快速排序的基本思想是:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。快速排序的期望时间复杂度为O(nlgn)而且一般它其中的隐含的期望因子非常小,最坏情况O(n^2)问题描述 给两组数,各n个。 请调整每组数的排列顺序,使
2017-08-29 13:41:25
291
原创 Torry的困惑
import java.util.Scanner;/*问题描述Torry从小喜爱数学。一天,老师告诉他,像2、3、5、7……这样的数叫做质数。Torry突然想到一个问题,前10、100、1000、10000……个质数的乘积是多少呢?他把这个问题告诉老师。老师愣住了,一时回答不出来。于是Torry求助于会编程的你,请你算出前n个质数的乘积。不过,考虑到你才接触编程不久,Torry只要你算出这个
2017-08-29 12:35:41
485
原创 蓝桥杯 未名湖的烦恼
蓝桥杯 未名湖的烦恼问题描述 每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。 每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法) 输入格式 两个整数,表
2017-08-28 20:18:03
377
翻译 java对象的内存布局
对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)1、对象头:包括两部分信息,第一部分用于存储对象的自身的运行时数据,如哈希码(HashCode)、GC年龄分代、线程持有的锁等,这部分数据的长度在32位和64位的虚拟机中(未开启压缩指针)分别为32bit和64bit,官方称为“Mark Word”,对象头信息是与对
2017-08-27 17:45:31
245
翻译 JAVA对象的创建过程
1、java虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。若没有先执行相应的类加载过程;2、加载检查通过后,为新生对象分配内存,所需分配的内存大小在类加载完成后便可以完全确定,为对象分配空间的任务等同于把一块确定大小的内存从java堆中划分出来(两种java堆的内存分配方式:指针碰撞和空闲
2017-08-27 17:39:18
254
翻译 JAVA内存区域
----------------JAVA虚拟机所管理的内存包括如下几个运行时数据区域:1、程序计数器:是一块较小的数据空间,可以看作当前线程所执行的字节码的行号指示器(?),字节码解释器工作时就是通过改变这个程序计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。在任何一个确定的时刻,一个处理器都只会执行一条线程中的指令。为
2017-08-27 17:11:26
210
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人