- 博客(47)
- 收藏
- 关注

原创 一键在linux安装mysql,值得收藏
#!/bin/bashyum install -y wgetwget https://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpmrpm -Uvh mysql57-community-release-el6-9.noarch.rpmyum clean allsleep 2yum install mysql-...
2019-12-25 10:28:24
131

原创 java容器
List1.ArrayList是动态数组,支持随机快速访问,由于其实现了RandomAccessable接口,其内部终究还是数组的实现。所以其快速访问的能力特别出众,但与之相反,插入,更改的性能则相当付出代价。2.LinkedList是基于双向链表实现,支持顺序访问,也可以快速的进行增删改操作。还可以用作栈,队列,双向队列的实现方案。3.vector:与ArrayList类似,不同的地...
2019-12-19 14:40:59
129
原创 HashMap源码分析(下)
本节将分析HashMap的增删改查;首先来说HashMap的插入流程:1.计算下标 2.何时扩容 3.何时链表转红黑树,具体如下:(1) 首先进行哈希值的扰动,获取新的hash值,(key==null) ? 0:(h=key.hashcode())^(h>>>16);(2) 判断tab是否为空或者长度为0,如果是则进行扩容操作。if((tab=table) == null || (n=tab.length)==0) n=(tab=resize()).length;(
2021-02-09 16:55:56
143
原创 HashMap源码解析(上)
在面试中,HashMap的重要性,咱们不用多说了,那是相当重要的,咱们深入分析这个HashMap。首先咱们先从以下几个方面来看HashMap:1.散列表实现 2.扰动函数 3.初始化容量 4.负载因子 5.扩容元素拆分先来看看最简单的HashMap的散列表实现:主要思想就是,使用生成的hashcode与数组长度做与运算,使得每个元素在这个数组中都有相应的位置。以下是小傅哥画的这个过程的示意图:上述实现存在的问题:可能因为Hash碰撞导致链表长度比较长,这样就不能发挥hash的
2021-02-09 14:37:53
128
原创 HashCode为什么要用31作为乘数?
在HashMap中hashcode生成的代码中,竟然有一个31的固定值,这是为什么呢,这个咱们可以来看国外大神在stackoverflow上的回答。其中点赞数最高的是下面这个回答:这个在理论的高度上做出了解释,好像还是不是很有实战意义,来看第二个呼声最高的回答这个回答就相当具有实战意义了,只要我们本地准备单词表,就能对31,33,37,39和41这些样本进行逐个测试。测试结果如图,乘数31,hash碰撞概率到达临界点突然下降很多。但是下面蓝色框内碰撞概率更小,..
2021-02-09 10:28:32
1436
1
原创 第三章:三思而后行
1.前期准备的重要性项目分为前中后期,其中前期工作对于整个成功与否占比相当大,前期的充足准备能给整体项目的正常推行保驾护航,能将风险降低到最小。准备不充分,就开始编码这是极其不负责任的做法,因为你的靶心错了,你怎么可能到达得了目的地呢。或许老板让你立刻马上就必须进行编码,那么我觉得你可以教育你的老板,让他明白需求的重要性.或许你可以增加世界上脱盲的老板的人数也说不定。构建之前,必须做前期准备,有以下论据:诉诸逻辑:进入有效编程的要领之一:准备工作很重要,再开始一个大项目之前,应该为这个项目制
2021-02-01 21:23:29
275
2
原创 第二章:理解隐喻
隐喻的重要性:隐喻在学科的认知和学习中起到了很重要的作用,可以让人们从更感性的角度去理解知识,概况结论。其实这个过程我们叫它为建模,如果把太阳作为中心,地球以这个中心旋转,这个往复的过程可以看作是建模的过程,诞生了日心学说的这种思想。往往很多著名的思想都是从细微处建模开始推敲出来。计算机科学相比较其他的学科来说还是比较年轻的学科,还没有成熟到拥有一套标准隐喻的程度,因为计算机学科本科就是变化多端的。因此你对隐喻有多理解,也就决定了你对软件开发有多理解。如何使用软件隐喻:相比较于具体的算法来说,算法以它的
2021-01-27 21:29:25
676
4
原创 第一章:软件构建
第一章:软件构建1.软件构建是程序开发活动中必不可少的活动。2.软件构建包括:设计,编码,调试,集成,测试,维护。3.软件构建之外的活动:架构的设计,需求的分析。4.软件构建对产品的质量起着至关重要的作用。5.一个程序员对于软件构建了解的程度决定了优秀的程度。6.软件构建的具体任务(task)验证有关的基础工作是否已经完成(架构,需求相关) 确定如何测试所编写的代码 设计并编写适合的类和子程序(routine) 创建并命名相关变量(variable)和具名变量(named
2021-01-25 10:20:24
1470
3
原创 阿里规范有感
1.在使用Bean属性复制属性时,尽量避免用BeanUtils,可以用Spring BeanUtils,Cglib BeanCopier,这些都是浅拷贝。2.SimpleDateFormater尽量用"yyyy-MM-dd HH:mm:ss";3.三目运算符容易空指针异常,jdk1.8可能已经修复4.尽量定义Map的时候定义初始值,一定程度上算性能的优化5.禁止用Executors来创建线程池,建议:private static ExecutorService excutor=new T
2020-11-18 20:54:26
114
1
原创 jdk安装简便方法
(1)安装JDK1、将jdk-7u60-linux-i586.rpm通过WinSCP上传到虚拟机中2、安装JDK:rpm -ivh jdk-7u65-linux-i586.rpm3、配置jdk相关的环境变量vi ~/.bashrcexport JAVA_HOME=/usr/java/latestexport PATH=PATH:PATH:PATH:JAVA_HOME/binsource .bashrc4、测试jdk安装是否成功:java -version...
2020-09-02 16:23:53
101
原创 JVM干货(不讲废话)---类加载机制
类加载机制的概述Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转化解析和初始化,最终可以被虚拟机直接使用的Java类型,这个过程被称为虚拟机的类加载机制。类加载的时机整个生命周期包括:加载,验证,准备,解析,初始化,使用,卸载。验证,准备,解析三个部分统称为连接。类加载的时候必须按照这个图示按部就班的开始,并不是按部就班的完成,这些阶段通常都是混合交叉的执行,会在一个阶段的执行过程中,激活另一个阶段的开始。 类加载机制流程图类的初始化时机**:遇到new
2020-05-13 18:03:35
146
原创 认识JVM
1.常见的JVM(1)HotSpot当今最流行的Java虚拟机–武林盟主(2)Mobile/Embedded VM,面向移动端的虚拟机–小家碧玉(3)BEA JRockit/IBM J9 VM–天下第二
2020-05-13 17:51:55
112
原创 Mysql
1.索引1.B+Tree:索引底层是用的B+tree数据结构,这种结构可以大幅度提升查询性能,因为B+tree底层是由叶子节点组成的单向列表,塑造出它的稳定性,尤其是范围内的数据检索。b树遍历需要繁琐的中序遍历,b+s树就不需要,直接读取单链表就可以获取到范围内数据,由于B+tree相比较于B树,其树的的高度会相比较低,所以在遍历时会少很多遍历的时间,在时间复杂度上就已经很低。所以B+tree...
2019-12-23 21:59:05
110
原创 java基础回顾
一.关键字关键字:关键字是不能作为变量来定义的,常见关键字:final object static 八大数据类型[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PAxDHz9j-1576130919810)(C:\Users\Administrator\Desktop\个人收藏\1575943034551.png)]final:可以修饰 类 变量 方法类:此...
2019-12-12 14:09:26
169
原创 基础回顾(一)
1.基本数据类型byte/8short/16int /32long/64float/32double/64boolean/~char/16boolean没有具体的长度类型 在jvm中会将它默认变为int类型2.包装类型ByteShortIntegerLongFloatDoubleBooleanCharacterInteg...
2019-12-09 19:26:59
123
原创 springboot好玩的banner
好玩的banner背景图:http://patorjk.com/software/taag/#p=display&h=0&v=0&f=Doh&
2019-11-22 11:12:57
411
原创 注释的分类
在平时写代码中,为了便于咱们写的代码别人也能维护,所以写注释是比较有效的手段之一。平日里我用过的注释有:1.// 这种比较多用于一行的代码或几行代码2. /* * *这种是多行注释 *//***这种也是多行注释,但是对入参和返回参数有个说明 也可以生成java注释文档。**/平日里工作按需要取用。...
2019-07-06 08:29:20
657
原创 面向对象的感悟
面向对象:面向对象可能对于学c++和java语言的人来说,这个词语真的很熟悉。不管你承不承认,作为应届生我自认为这个词语一直伴随大学生涯。说到面向对象,就想到自己的对象问题,new一个对象常常是我经常和别人开的玩笑,哈哈,肯定有一大批程序员说,当程序员还要个毛线的对象,而实际情况是对象在java中无处不在。我对java的理解是:java本身是一种编程语言,但是它的魅力可能跟网上说的可移植性,可拓...
2019-07-05 12:21:52
332
转载 linux基本命令
Linux的50个基本命令1.ls -a 列出当前目录下的所有文件,包括以.头的隐含文件(如~/.bashrc)ls –l 列出当前目录下文件的详细信息2. pwd 查看当前所在目录的绝对路经3. cd 目录之间的移动4. mkdir目录名 创建一个目录5. rm 文件名 删除一个文件6. cat文件名 查看文件内容(全屏查看)7.more文件名 查看文件内容(可左右移动)8....
2019-06-13 08:41:48
123
原创 关于git的使用
在公司里一般都会用到版本协同工具进行版本协调,这时候用到比较对就数svn和git了,由于svn现在渐渐的不流行了,所以我总结一下平时在公司里git的使用方法1.当我们准备提交项目时,会出现本地项目和远程仓库项目版本不同,可能其他同时在git上进行了更新,而我们本地没有这些更新,所以通常情况下 我们先git fetch(将远程最新代码拉取到本地)2.之后就要合并分支 这里用到的是git me...
2019-06-13 08:29:56
77
原创 来公司实习啦
来公司实习,感觉有很多挑战在前方等着我们,不能失望。下面的话激励自己伟人之所以伟大,是因为他与别人共处逆境时,别人失去了信心,他却下决心实现自己的目标。往后余生,愿你我都能,从前生活是工作,今后工作是生活。路是脚踏出来的,历史是人写出来的。人的每一步行动都在书写自己的历史。藕其实不在乎藕的脸蛋身材,那只是一个盒子,再惊艳又有何用,所有的盒子总有一天都会枯萎老去,留在尘世间寂寞的...
2019-06-04 13:53:52
129
1
原创 索引失效的时机
索引失效的时机:索引字段进行运算函数运算索引字段前面有%索引与字母比较使用了正则表达式使用了or表达式全局扫描比索引更快时 不使用索引...
2019-05-20 21:30:53
123
原创 mybatis源码系列----类型转化器
实现一个自定义版本的类型转化器:@MappedJdbcTypes(JdbcType.INTEGER)@MappedTypes(SexEnum.class)public class MyEnumTypeHandler implements TypeHandler<SexEnum> { @Override public void setParameter(Prep...
2019-05-06 21:26:00
112
原创 Java爬虫绕过爬虫限制
JavaNet可以 伪装成浏览器 进行访问网站 从而可以绕过爬虫限制HttpConnection conn=(HttpConnection)url.openConnection();conn.setRequestMethod("get/post");conn.setRequestProperty(key,value) 如图UserAgent为key 后面的字符串为value...
2019-05-04 09:20:21
1353
原创 手写ArrayList集合思想
1.先写有参和无参的构造方法,DefaultCapcity=10用于无参方法,表示默认构造成一个长度为10的数组。如果是有参构造方法则是构造成用户指定长度的数组、2.ArrayList的toString方法,可以用StringBuilder的组合方法,也可以用Arrays.toString()方法3.集合的add方法,扩容,数组的最后一位是新增加的内容,再进行数组的拷贝,生成新的数组。扩容...
2019-04-22 15:02:36
240
原创 mysql事务
A:原子性 事务的操作都不可再分C:一致性 从一个一致状态到另一个一致的状态 比如说转账场景中 总金额不管怎么转账都不会改变I:隔离性 面对并发场景 事务依然可以正常运行D:持久性 事务一旦提交 就不可以回滚的隔离级别:read-uncommited (最低) read_commited 可以避免脏读,不可避免不可重复读和幻读 repeatable 可重复读 seri...
2019-04-21 11:10:24
66
原创 springmvc
当加上@responseBody时,返回的是json字符串类型 这时候可以让前台进行数据的分析如果mvc返回的是String类型返回值 那么返回的就只能是视图详情见springmvc的返回值...
2019-04-18 14:04:08
89
原创 SpringMVC的流程总结
用户发送请求,根据url请求dispatcherServlet ,查询springMvc是否存在相关映射如果不存在这样的映射 看是否配置了defaultServlet 如果配置了 会有三个处理器 requestMappingbeanNameRequestMapping simpleUrlMapping(静态资源的请求Mapping) for循环进行判断如果有请求就经过request...
2019-04-17 14:30:16
141
原创 mysql复制表
仅仅复制表结构:create table2 XX like table1也复制数据 :create table2 XX select * from table2只复制部分数据:create table2 XX select **,** from table1 (筛选条件)仅仅复制部分结构:create table2 XX select id ,name from...
2019-04-17 09:34:23
468
2
原创 mysql修改表
Alter table xx change colum 修改列名Alter table xx modify column 修改类型或约束Alter table xx ADD column 添加列Alter table drop column 删除列Alter table Rename to New TableName 修改成 新表名...
2019-04-16 11:02:05
95
原创 mybatis全局文件的属性小结
mybatis的全局配置文件中properties:用来进行资源文件的引入setting:开启自动驼峰转换typeAlias:为某个java类型起别名package:批量为某个包下面的java类型起别名environment:开发环境的选择dataBaseIdProvider:数据库切换标识 可以在mysql和oracle之间进行切换mapper:将sql映射文件注...
2019-04-15 22:48:37
90
原创 spring涉及到的设计模式
Spring中涉及的设计模式总结1.简单工厂(非23种设计模式中的一种)实现方式:BeanFactory。 Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。实质:由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。实现原理:bean容器的启动阶段:读取b...
2019-03-02 13:20:51
135
原创 java经典算法(八)---zws
/** * 如果一个数组中 一个数在数组中出现的次数超过数组的长度一半 则打印出这个数 */public class ANumOfHalfClass { public static int moreThanHaft(int[] num) { int result=-1; int times=0; for (int i=0;i<num...
2019-02-06 21:22:59
183
原创 java经典算法(七)---zws
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 /**在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。* /public class MaxYueShuAndMinBeiShu { public s...
2019-02-01 20:29:35
242
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人