- 博客(32)
- 收藏
- 关注
原创 Java Thread问题汇总
如果是非线程安全,多个线程对统一个对象中的实例变量进行并发的访问时发生。产生的后果就是出现脏读。非线程安全问题存在与实例变量中。如果是方法内部的私有变量,则不存在非线程安全问题。因为方法内部的变量是私有的。线程的start和run方法的区别?public static void main(String[] args) { Thread t = new Thread(){ ...
2019-03-05 20:25:49
863
1
原创 VO、PO、POJO、DTO、DAO总结
VO (View Object) 值对象VO是值对象,精确点讲它是业务对象,是存活在业务层的,是业务逻辑使用的,它存活的目的就是为数据提供一个生存的地方。主要对应界面显示的数据对象,对于一个WEB页面,用一个VO对象对应整个界面的值。PO (Persistant object) 持久对象在 O/R 映射的时候出现的概念,如果没有 o/r 映射,没有这个概念存在了。通常对应数据模型...
2019-03-04 09:46:28
821
1
原创 Java垃圾回收机制
Java垃圾回收机制对象没有被其他对象所引用的时候判断对象是否被引用的算法引用计数算法:判断对象的引用数量来决定对象是否可以被回收每个对象实例都有一个引用计数器,被引用则+1,完成引用则-1任何引用计数为0的对象实例可以被当作垃圾收集优点:执行效率高,程序执行受影响小缺点:无法检测出循环引用的情况,导致内存泄漏class MyObject { privat...
2019-03-03 15:56:36
2011
1
原创 Java类加载机制
Java类加载机制类加载的时机隐式加载 new 创建类的实例,显式加载:loaderClass,forName等访问类的静态变量,或者为静态变量赋值调用类的静态方法使用反射方式创建某个类或者接口对象的Class对象。初始化某个类的子类直接使用java.exe命令来运行某个主类类加载的过程我们编写的java文件都是保存着业务逻辑代码。java编译器将 .java 文件编译成扩...
2019-03-02 10:21:04
77854
4
原创 Mysql数据库设计规范
数据库设计规范所有数据库对象名称必须使用小写字母并用下划线分割(Mysql对与表名的大小写是敏感的。为了便于维护) 所有数据库对象名禁止使用Mysql保留关键字(在sql语句中避免出现错误) 数据库对象的命名要做到见名识义,并且最好不超过32字符(便于理解,有助于后期维护) 临时表必须以tmp_为前缀,备份表以bak_开头并且以日期为后缀。(便于区分) 所有存储相同数据的列名和列的类型...
2019-03-01 09:41:54
180
原创 常见的几种设计模式
文章目录单例模式为什么会有单例设计模式?应用spring中IOC解决的问题设计思想工厂模式简单工厂模式工厂方法模式观察者模式观察者模式的定义装饰模式模板方法定义:主要的作用:优点:缺点:应用场景:适配器模式(Adapter Pattern)定义类适配器对象适配器优点类适配器优缺点对象适配器优缺点适用环境职责链模式分析实例审批假条职责链模式的优点职责链模式的缺点纯与不纯的职责链模式代理模式动机优点缺...
2019-02-28 09:45:27
6487
2
原创 SQL优化
SQL优化 执行子查询时,MySql需要建立临时表,查询完毕之后再删除这些临时表,所以,子查询的速度会受到一定的影响。优化:可以使用连接查询 join 代替子查询,连接查询时不需要建立临时表,其速度比子查询快。数据库结构优化将字段很多的表分解成多个表,对于字段较多的表,如果有些字段的使用频率很低,可以将这些字段分离出来形成新表。因为一个表的数据量很大的时候,会由于使用频率低的字段存在...
2019-02-27 09:16:36
205
原创 Java泛型
泛型让我们的数据结构可以放置任何的数据类型不可以是基本数据类型,只能是类对象java有八中基本类型boolean,byte,char,short,int,long,float,double每个基本数据类型都有对应的包装类型Boolean,Byte,Chareger,Short,Integer,Long,Float,Double<T extends Comparable>...
2019-02-26 11:40:52
149
原创 过滤器和拦截器的区别
过滤器和拦截器的区别拦截器是基于java反射机制的,而过滤器是基于函数回调的。拦截器不依赖于servlet容器拦截器可以访问action上下文,值栈里面的对象,而过滤器不能在action生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化的时候被调用一次。拦截器可以获取IOC容器中的各个bean,而过滤器是不能够获取。可以在拦截器中注入service,可以调用业务逻辑。触发时...
2019-02-24 17:43:50
389
1
原创 Java注解
Java注解@Override,表示当前的方法定义将覆盖超类中的方法。@Deprecated,使用了注解为它的元素编译器将发出警告,因为注解@Deprecated是不赞成使用的代码,被弃用的代码。@SuppressWarnings,关闭不当编译器警告信息。我们可以创建自定义注解,为了创建自定义注解java还提供了4种源注解,专门负责注解的创建元注解@Target :表示该注解可以用...
2019-02-24 17:04:24
169
原创 1型,2型,3型文法区别
1型文法也称为上下文无关语法,这就意味着,对非终结符进行替换是务必考虑上下文,并且一般不能替换成空串它有下面两个特点:1.式子左面可以有多个字符,但是必须有一个终结字符。2、式子右面可以是终结字符也可是非终结字符,但是必须是有限字符 2型文法:又被称为上下文无关语法:即非终结字符的替换可以不必考虑上下文。它有以下特点:1、式子左边只能有一个字符,而且必须是非终结字符。2、式子右边可...
2018-09-12 22:15:30
17542
7
原创 Java实现二叉树的构建与遍历
二叉搜索树不仅可查找数据;还可以高效的地插入,删除数据,动态维护数据可以方便地回答很多数据之间的关系问题:min,max,fool,ceil,rank,select 二分搜索树不一定是完全二叉树,所以用数组表示并不方便 二叉搜索树的构建 class test { public static void main(String[] arg...
2018-08-28 18:35:01
703
原创 Linux命令学习
ubuntu如何切换到root用户默认安装完成之后并不知道root用户的密码,那么如何应用root权限呢?(1)sudo 命令这样输入当前管理员用户密码就可以得到超级用户的权限。但默认的情况下5分钟root权限就失效了。(2)sudo -i通过这种方法输入当前管理员用户的密码就可以进到root用户。(3)如果想一直使用root权限,要通过su切换到root用户。那我们首先要重设置r...
2018-08-22 21:42:55
142
原创 spring整合freemaker实践
文件目录结构 首先我们需要导入springmvc和freemaker的依赖<properties> <spring.version>4.3.7.RELEASE</spring.version> </properties><dependency> <groupId>org.sprin...
2018-08-10 17:05:10
246
原创 zookeepr作用
mastet节点选举,当主节点挂掉之后,从节点接手工作,并且保证这个节点的是唯一的,这也就是首脑模式,保证集群的高可用性。 统一配置文件管理,即只需要部署一台服务器,则可以把相同的配置文件同步更新到其他所有的服务器。 发布与订阅,类似消息队列MQ,dubbo发布者把数据存在znode上,订阅者会读取到这个数据。 提供分布式锁,分布式环境中不同的进程之间争夺资源,类似余多线程中的锁。 集群管...
2018-08-09 13:19:18
507
原创 Redis相关特性
多数据库一共有15个数据库,从0到14选择使用某一个数据库:select [number] 移动关键字到某一个数据库 move [key] [number] 事务multi exec discard、事务中所有命令都将串行化顺序执行,事务执行期间redis不会再为其他客户端提供任何服务 ,从而保证事务的原子性。multi:相当与开启事务 exec:提交 discar...
2018-08-03 19:52:41
157
原创 Redis数据结构
存储String二进制安全的,存入和获取的数据相同。 Value最多可容纳的数据长度是512M存储字符串常用的命令:赋值:set [key] [value] 取值:get [key] 取值再赋值 getset [key] 删除:del [key] 递增一:incr [key]:将key所在的value进行递增1,如果key不存在则创建key并将value初始化为0再递增1,如果...
2018-08-03 18:16:51
221
原创 static关键字的介绍
static 关键字的特点:随着类的加载而加载 优先与对象存在 被类的所有对象共享 可以通过类名调用static 注意事项:在静态方法中是没有this关键字的,因为静态方法是随着类的加载而加载的,this关键字是随着对象的创建而存在的。总之静态是优先对象存在的。 静态方法中只能访问静态变量和静态方法。 非静态方法:成员变量可以是静态的也可以是非静态的,成员方法:能访问非静态方法...
2018-08-02 21:27:12
479
原创 java对XML文件解析
Dom4j 基本用法<persons> <person> <name>小明<name> <age>11</age> </person></perons>elem
2018-08-01 15:48:54
407
原创 Mysql重置Root密码
方法一: 在my.ini的[mysqld]字段加入:skip-grant-tables重启mysql服务,这时的mysql不需要密码即可登录数据库 然后进入mysqlmysql>use mysql; mysql>更新 update user set password=password('新密码') WHERE User='root';mysql>flush pri...
2018-08-01 11:26:31
158
原创 什么是分布式和集群?
集群架构相当与把一个工程项目拷贝多份部署到多台服务器上,每台服务器单独独立部署运行。(同样的事情大家一起做) 解决了高并发的问题。但是对于模块的耦合性并没有解决。 缺点:当用户登陆的时候服务器之间相互广播session,消耗了很多资源分布式架构把系统按照模块拆分成多个子系统,多个子系统相互协作才能完成业务流程系统之间需要进行通信。(一件事分成几件事一起做) 优点: 1、把模块拆...
2018-07-31 13:33:07
1023
原创 mybatis与spring整合
Mybatis与Spring整合整合思路SqlSessionFactory对象应该放到spring容器中作为单例存在。 传统dao的开发方式中,应该从spring容器中获得sqlsession对象。 Mapper代理形式中,应该从spring容器中直接获得mapper的代理对象。 数据库的连接以及数据库连接池事务管理都交给spring容器来完成。整合步骤创建一个java工...
2018-07-30 14:41:27
108
原创 Mybatis关联查询及标签的应用
Mybatis学习总结(二)mybatis传递包装的pojo public class QueryVo { private User user; public User getUser(){ return user; } public void setUser(User user) { this.user = user; }}// 此处配置了别...
2018-07-30 13:29:11
501
原创 Mybatis学习总结
Mybatis学习总结mybatis为什么学习mybatis介绍1.目前最主流的持久层框架为hibernate与mybatis,而且国内目前情况使用Mybatis的公司比hibernate要多。 2.Hibernate学习门槛不低,要精通门槛更高。门槛高在怎么设计O/R映射,在性能和对象模型之间如何权衡取得平衡,以及怎样用好Hibernate缓存与数据加载策略方面需要你的经验和能力都...
2018-07-30 00:50:54
726
1
原创 SpingMVC简单介绍
SpingMVC简单介绍什么是MVCMVC的核心思想是业务数据抽取同业务数据呈现相分离 MVC是一种架构模式 程序分层、分工合作、既相互独立又协同工作 MVC是一种思考方式 需要将什么信息展示给用户?M 模型层 如何布局 V 视图层 调用那些业务逻辑 C 控制层 控制层Controller 调用业务逻辑产生合适的数据(Model) 视图层 Vie...
2018-07-28 21:00:36
332
原创 Maven简单学习及介绍
Maven简单介绍maven命令mvn -v:查看maven版本 mvn compile: 编译 mvn test:测试 mvn package:打包 mvn clean:删除target mvn install: 安装jar包到本地仓库pom.xml坐标在maven的世界中任何的依赖,插件都可以称为构件,任何构件都以坐标做为唯一标识Maven便给我们制定了一套规则...
2018-07-28 17:10:53
216
原创 Liunx权限的操作命令与挂载点的理解
ubuntu如何切换到root用户默认安装完成之后并不知道root用户的密码,那么如何应用root权限呢? (1)sudo 命令 这样输入当前管理员用户密码就可以得到超级用户的权限。但默认的情况下5分钟root权限就失效了。 (2)sudo -i 通过这种方法输入当前管理员用户的密码就可以进到root用户。 (3)如果想一直使用root权限,要通过su切换到root用户。 那我们首...
2018-07-26 15:41:24
1175
原创 第一次向github上推送自己的项目
第一步:注册github账号:(已有账号的宝宝可以忽略此步骤)1.首先我们注册一个自己的github账号:github官网大丈夫行走江湖,行不更名,做不改姓,建议大家进行实名注册,方便以后猎头能够很方便的联系你....
2018-06-04 14:44:27
14035
2
原创 重定向与转发
重定向早期的写法为:response.setStatus(302);response.setHeader("Location","目标地址");现在可以这样书写:response.sendRedirect("目标地址");重定向写法:重新定位方向,客户端最少有两次请求,服务器会返回302以及一个地址,客户端会根据这个地址执行第二次访问,可以去任意的地方访问,可以不是自己的工程,后续的的请求不可以使...
2018-04-23 22:49:40
115
原创 中兴被美国制裁之后我们程序猿能为我们的国家做点什么?
身为程序猿的我们能为我们的国家做点什么呢? Please tell me your answer, perhaps you are the backbone of the nation.
2018-04-21 23:42:00
422
原创 关于cookie知识点解读
Cookie饼干、其实就是一份小的数据,是服务端给客户端的,并且存储在客户端上的小数据。应用的场景有如下:自动登陆,浏览记录,购物车等等。为什么要有Cookie?因为http请求是没有状态的,客户端在跟服务端通讯的时候,是没有状态的,其实就是客户端在第二次访问服务端的时候,服务器就不知道客户端曾经访问过自己。为了更好的用户体验,更好的交互,从而使用cookie。Cookie怎么来使用呢?添加coo...
2018-04-21 23:32:49
317
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人