- 博客(167)
- 收藏
- 关注
原创 通过反射机制获取类的私有属性
通过反射机制创建对象、获取注解,spring aop jdk动态代理中反射机制创建代理对象,newproxyinstance()方法创建对象。实现步骤:1、首先创建一个类包含一个私有属性public class PrivateTest { private String name = "hello"; public String getName() { ...
2018-06-21 11:25:45
6667
原创 三个线程保证顺序执行
第一种: 用Thread.join() 方法 确定该线程执行完毕,先创建线程1,然后创建线程2,在run()方法里面调用线程2.join(),接着创建线程3,在run()方法里面调用线程3.join() 第二种线程池 newSingleThreadExecutor 这个线程处理完一个任务后接着处理下一个任务。3个线程存到阻塞队列里面,单个后台线程池,队列先进先出...
2018-06-20 22:03:01
2594
原创 注解
1.什么是注解注解就像是标签,想象代码具有生命,注解就是对于代码中的鲜活个体贴上标签。2.注解的定义注解通过 @interface 关键字进行定义。public @interface TestAnnotation {}12上面的代码就创建了一个名字为 TestAnnotaion 的注解。你可以简单理解为创建了一张名字为 TestAnnotation 的标签。3.注解的应用上面创建了一个注解,那么...
2018-06-20 10:49:40
219
原创 MySql分页实现
分页sql格式是:select * from table limit (start-1)*limit,limit; 其中start是页码,limit是每页显示的条数。分页需求:客户端通过传递start(页码),limit(每页显示的条数)两个参数去分页查询数据库表中的数据,那我们知道MySql数据库提供了分页的函数limit m,n,但是该函数的用法和我们的需求不一样,所以就需要我们根据实际情况去...
2018-06-19 22:27:06
5041
原创 JVM性能调优监控工具jps、jstack、jstat、jmap、jinfo使用详解
jcmd命令:主要提供JVM的一些基本信息查询(查看进程运行时间、查看虚拟机版本信息、显示调优标志)jinfo命令:查看进程ID号。查看JVM的配置参数。jps查看所有的jvm进程,包括进程ID,进程启动的路径等等。我自己也用PS,即:ps -ef | grep javajstack观察jvm中当前所有线程的运行情况和线程当前状态。系统崩溃了?如果java程序崩溃生成core文件,jstack工具...
2018-06-19 11:12:20
1268
原创 Oauth 协议
1、什么是Oauth 协议 ?OAuth 2.0 专注于简化客户端开发人员,他的最终目的是为第三方应用颁发一个有时效性的令牌token。使得第三方应用能够通过该令牌获取相关的资源。常见的场景就是:第三方登录。当你想要登录某个论坛,但没有账号,而这个论坛接入了如 QQ、Facebook 等登录功能,在你使用 QQ 登录的过程中就使用的 OAuth 2.0 协议。1.0协议每个token都有一个加密,...
2018-06-13 22:37:50
252
原创 happens-before原则
happens-before原则定义如下:1. 如果一个操作happens-before另一个操作,那么第一个操作的执行结果将对第二个操作可见,而且第一个操作的执行顺序排在第二个操作之前。 2. 两个操作之间存在happens-before关系,并不意味着一定要按照happens-before原则制定的顺序来执行。如果重排序之后的执行结果与按照happens-before关系来执行的结果一致,那么...
2018-06-11 16:46:59
474
原创 bean的生命周期
Bean实例生命周期的执行过程如下:Spring对bean进行实例化,默认bean是单例;Spring对bean进行依赖注入;如果bean实现了BeanNameAware接口,spring将bean的id传给setBeanName()方法;如果bean实现了BeanFactoryAware接口,spring将调用setBeanFactory方法,将BeanFactory实例传进来;如果bean实现...
2018-06-11 16:43:27
4563
原创 git提交
Git:分布式版本控制系统,无中央服务器,每个人的电脑都是一个完整的版本库,这样就不需要联网了。如果多人协作,每个人都有自己的分支。处理完了,进行提交,推送给其他人。安全性高,一个人的电脑坏了,copy另外一个人的仓库。SVN,CVS:集中版本控制系统,版本库放在中央服务器,每次都要下载,速度慢,要联网,不安全。中央服务器坏了,都用不了。项目心得体会:变量名、函数名、设计模式分成。反射机制+工厂+...
2018-06-11 10:53:05
194
原创 Hadoop
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。HDFSHDFS(Hadoop Distributed File System,Hadoop分布式文件系统),它是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问...
2018-06-10 16:16:39
281
原创 Log4j日志
在应用程序中输出日志有有三个目的:(1)监视代码中变量的变化情况,把数据周期性地记录到文件中供其他应用进行统计分析工作。(2)跟踪代码运行进轨迹,作为日后审计的依据。(3)担当集成开发环境中的调试器,向文件或控制台打印代码的调试信息。通常,我们都提供一个名为log4j.properties的文件,在第一次调用到Log4J时,Log4J会在类路径(../web-inf/class/当然也可以放到其它...
2018-05-31 17:13:51
187
原创 Spring中Bean的理解以及@Bean的作用
Bean在Spring和SpringMVC中无所不在,将这个概念内化很重要,下面分享一下我的想法: 一、Bean是啥1、Java面向对象,对象有方法和属性,那么就需要对象实例来调用方法和属性(即实例化); 2、凡是有方法或属性的类都需要实例化,这样才能具象化去使用这些方法和属性; 3、规律:凡是子类及带有方法或属性的类都要加上注册Bean到Spring IoC的注解; 4、把Bean理解为类的代理...
2018-05-21 11:43:47
2221
原创 简单的谈一下SpringMVC的工作流程
流程 1、用户发送请求至前端控制器DispatcherServlet 2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。 4、DispatcherServlet调用HandlerAdapter处理器适配器 5、HandlerAdap...
2018-05-21 11:07:10
1596
原创 哈夫曼树
当树中的节点被赋予一个表示某种意义的数值,我们称之为该节点的权。从树的根节点到任意节点的路径长度(经过的边数)与该节点上权值的乘积称为该节点的带权路径长度。树中所有叶节点的带权路径长度之和称为该树的带权路径长度(WPL)。当带权路径长度最小的二叉树被称为哈夫曼树,也成为最优二叉树。 如下图所示,有三课二叉树,每个树都有四个叶子节点a,b,c,d,分别取带权7,5,2,4。他们的带权路径长度...
2018-05-09 14:46:21
1431
原创 Hibernate一级缓存二级缓存
缓存的目的是为了通过减少应用程序对物理数据源访问的次数来提高程序运行的效率,原理则是把当前或接下来一段时间可能会用到的数据保存到内存中,在使用时直接从内存中读取,而不是从硬盘中去读取,简单来说,缓存就是数据库中数据在内存中的“临时容器。 在 Hibernate中,缓存用来把从数据库中查询出来的和使用过的对象保存在内存中,以便在后期需要用到这个对象时可以直接从缓存中来获取这个对象(只有...
2018-05-09 11:13:35
285
原创 Hibernate和 Mybatis 区别
1 简单简介 1.1 Hibernate 框架 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,建立对象与数据库表的映射。是一个全自动的、完全面向对象的持久层框架。 1.2 Mybatis框架 Mybatis是一个开源对象关系映射框架,原名:ibatis,2010年由谷歌接管以后更名...
2018-05-09 10:48:55
272
原创 Structs框架
struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。优点: (1) 实现了MVC模式,层次结构...
2018-05-09 10:40:43
17131
原创 IO包的设计模式
装饰模式:在由InputStream、OutputStream、Reader和Writer代表的等级结构内部,有一些流处理器可以对另一些流处理器起到装饰作用,形成新的、具有改善了的功能的流处理器。 适配器模式:在由InputStream、OutputStream、Reader和Writer代表的等级结构内部,有一些流处理器是对其他类型的流处理器的适配。这就是适配器的应用。...
2018-05-08 16:32:56
433
转载 谈谈Spring中的IOC和AOP概念
IOC和AOP是Spring中的两个核心的概念,下面谈谈对这两个概念的理解。1. IOC(Inverse of Control):控制反转,也可以称为依赖倒置。 所谓依赖,从程序的角度看,就是比如A要调用B的方法,那么A就依赖于B,反正A要用到B,则A依赖于B。所谓倒置,你必须理解如果不倒置,会怎么着,因为A必须要有B,才可以调用B,如果不倒置,意思就是A主动获取B的实例:B b ...
2018-05-07 17:19:14
218
转载 支付平台的架构设计
本文转载自公众号 Fastpay快付作者李艳鹏,阿里P8技术专家,小灰在Qcon大会上有幸结识,技术又好为人又很谦和。互联网平台架构日益成为互联网发展的基石,对于 Java 开发者和架构师而言,只有在了解架构背后的原理后,才能写出更高质量的代码,才能设计出更好的方案,才能在错综复杂平台架构下产出价值,才能在各种场景下快速发现问题、快速定位问题、快速解决问题。本场 Chat 会带领大家从支付平台架...
2018-05-03 08:56:50
2711
转载 Linux20个常用命令
1、cd命令这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。如:[html] view plain copycd /root/Docements # 切换到目录/root/Docements cd ./path # 切换到当前目录下的path目录中,“.”表示当前目录 cd ../path...
2018-04-27 16:05:01
166
原创 TCP粘包
1 什么是粘包现象 TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。2 为什么出现粘包现象 (1)发送方原因 我们知道,TCP默认会使用Nagle算法。而Nagle算法主要做两件事:1)只有上一个分组得到确认,才会发送下一个分组;2)收集多个小分组,在一个确认到来时一起发送。 所以,正是Nagle算法造成了发送方有可能造成粘包...
2018-04-27 15:01:37
178
原创 MYSQL数据库优化
1. 优化sql语句和索引1) 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2) 应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。3) 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t...
2018-04-22 16:03:51
403
原创 聚集索引和非聚集索引
聚集索引聚集索引表记录的排列顺序和索引的排列顺序一致,所以查询效率快。只要找到第一个索引值记录,其余就连续性的记录在物理也一样连续存放。只有当表包含聚集索引时,表中的数据行才按排序顺序存储。聚集索引对应的缺点就是修改慢,因为为了保证表中记录的物理和索引顺序一致,在记录插入的时候,会对数据页重新排序。非聚集索引非聚集索引即索引中的逻辑顺序并不等同于表中行的物理顺序,两种索引都采用B+树结构。非聚集索...
2018-04-20 19:41:47
454
原创 数据库引擎
innoDB存储引擎(1) innodb存储引擎的mysql表提供了事务,回滚以及系统崩溃修复能力和多版本迸发控制的事务的安全。(2)innodb支持自增长列(auto_increment),自增长列的值不能为空,如果在使用的时候为空的话会进行自动存现有的值开始增值,如果有但是比现在的还大,则就保存这个值。(3)innodb存储引擎支持外键(foreignkey) ,外键所在的表称为子表而所依赖的...
2018-04-20 14:33:40
321
原创 MTSQL索引结构
先介绍几种数据结构:AVL:平衡二叉树,Windows对进程地址空间的管理用到了平衡二叉树。红黑树:平衡二叉树,能保证在最坏情况下,基本的动态几何操作的时间均为O(lgn)有如下几个特性:1)每个结点要么是红的,要么是黑的。2)根结点是黑的。3)每个叶结点(叶结点即指树尾端NIL指针或NULL结点)是黑的。4)如果一个结点是红的,那么它的俩个儿子都是黑的。5)对于任一结点而言,其到叶结点树尾端NI...
2018-04-19 21:28:25
604
原创 索引的分类
注意:索引是在存储引擎中实现的,也就是说不同的存储引擎,会使用不同的索引。MyISAM和InnoDB存储引擎:只支持BTREE索引,也就是说默认使用BTREE,不能够更换。MEMORY/HEAP存储引擎:支持HASH和BTREE索引。1、索引我们分为四类来讲单列索引(普通索引,唯一索引,主键索引)、组合索引、全文索引、空间索引、1.1、单列索引:一个索引只包含单个列,但一个表中可以有多个单列索引。...
2018-04-19 20:31:41
14517
8
原创 数据库索引含义,优点缺点,使用原则
索引1. 索引是什么?索引(Index)是帮助数据库高效获取数据的数据结构。举个例子,有一个数据库表User。假设现在要查询name为Lily的的人员,如果没有索引,数据库不得不查询user表中的每一行并确定这一样的name是否为Lily。由于我们想要得到每一个名字为Lily的雇员信息,在查询到第一个符合条件的行后,不能停止查询,因为可能还有其他符合条件的行。所以,必须一行一行的查找直到最后一行-...
2018-04-19 17:41:32
2077
原创 乐观锁悲观锁
更新丢失问题:(serialize级别也会发生这个问题,给某账户汇款100元,现在该账户状态为0,表示还没有汇款。A和B两个线程同时查询,看到的状态字段结果都是0,A和B都以为还没有给该账户打钱。接着A开始汇款100元。等A修改完了,B因为根据前的查询的状态结果,是0,也开始汇款,会发生覆盖问题。结果汇款200元。)两个线程基于同一个查询结果进行修改,后修改的人会将先修改人的修改覆盖掉.悲观锁(并...
2018-04-19 16:15:44
241
原创 数据库四大隔离级别
隔离性:将数据库设计成单线程的数据库,可以防止所有的线程安全问题,自然就保证了隔离性.但是如果数据库设计成这样,那么效率就会极其低下.数据库在想不保证隔离性,可能会发生的情况:如果是两个线程并发修改,一定会互相捣乱,这时必须利用锁机制防止多个线程的并发修改。如果两个线程并发查询,没有线程安全问题。如果两个线程一个修改,一个查询,就会导致脏读,不可重复读,虚读(幻读)。具体想做什么级别的控制,数据库...
2018-04-19 15:19:08
5642
原创 事务四大特性
事务的概念:事务是指逻辑上的一组操作,这组操作要么同时完成要么同时不完成.(举个例子,A给B转账,转100元。A账户减去100,B账户加上100。要么全部转账成功,要么失败,不可能一方转账了,一方没有收到)事务的管理:默认情况下,数据库会自动管理事务,管理的方式是一条语句就独占一个事务.(一条SQL语句后,就会自动提交) 如果需要自己控制事务也可以通过如下命令开启/提交/回滚事务:starttra...
2018-04-19 15:18:10
387
原创 SQL注入攻击
SQL注入攻击: 由于dao中执行的SQL语句是拼接出来的,其中有一部分内容是由用户从客户端传入,所以当用户传入的数据中包含sql关键字时,就有可能通过这些关键字(‘#,‘or‘1)改变sql语句的语义,从而执行一些特殊的操作,这样的攻击方式就叫做sql注入攻击 PreparedStatement利用预编译(先传递SQL语句的主干)的机制将sql语句的...
2018-04-18 20:35:58
307
原创 JDBC
JDBC数据库驱动的概念、JDBC数据库厂商为了方便开发人员从程序中操作数据库而提供的一套jar包,通过导入这个jar包就可以调用其中的方法操作数据库,这样的jar包就叫做数据库驱动。JDBC是sun定义的一套标准,本质上是一大堆的操作数据库的接口,所有数据库厂商为java设计的数据库驱动都实现过这套接口,这样一来统一了不同数据库驱动的方法,开发人员只需要学习JDBC就会使用任意数据库驱动了。六个...
2018-04-18 20:07:41
253
原创 多表查询。笛卡尔积查询,内连接,外连接
如果想查询出每个部门,和每个部门对应的员工的名字。(dept,emp两张表)。图1笛卡尔积查询笛卡尔积查询:将两张表的记录进行一个相乘的操作查询出来的结果就是笛卡尔积查询,如果左表有n条记录,右表有m条记录,笛卡尔积查询出有n*m条记录,其中往往包含了很多错误的数据,所以这种查询方式并不常用。select * from dept,emp;图2内连接查询 内连接查询:查询的是左边表和右边表都能找到对...
2018-04-18 10:28:56
13990
3
原创 多表设计,外键
1.外键约束表是用来保存显示生活中的数据的,而现实生活中数据和数据之间往往具有一定的关系,我们在使用表来存储数据时,可以明确的声明表和表之前的依赖关系,命令数据库来帮我们维护这种关系,向这种约束就叫做外键约束 create table dept( id int primarykey auto_increment, name varchar(20)...
2018-04-18 09:49:08
2065
原创 SQL语句之操作表记录(CRUD)
(1)INSERT INSERT INTO table [(column [, column...])] VALUES (value [, value...]); 插入的数据应与字段的数据类型相同。 数据的大小应在列的规定范围内,例如:不能将一个长度为80的字符串加入到长度为40的列中。 在values中列出的数据位置必须与被加入的列的排列位置相对应。 字符和日期型数据应包含在单引号...
2018-04-17 15:17:04
1537
原创 SQL语句之操作表
1) 创建表~创建一个员工表employee create table employee( id intprimary key auto_increment, namevarchar(20) unique, gender bitnot null, birthdaydate...
2018-04-17 14:51:24
778
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅