★★★Java学习
文子越来越强
这个作者很懒,什么都没留下…
展开
-
【MongoDB】单表数据备份和恢复
今天项目上线,mongo数据需要重新生成会覆盖掉之前的数据的某些部分,这里测试环境测试过没有问题,上线时应该也不会有问题的但是出于考虑还是把这个表备份了下。上线后伙伴执行方法后,发现以前数据不该覆盖的也覆盖了,所以这里需要将有问题的这部分数据恢复到之前的状态。这里用到了studio 3T软件,进行之前备份部分数据的导出以及数据的导入输入查询条件,点击导出按钮一直下一步,默认的导出问js...原创 2020-03-12 15:55:03 · 1291 阅读 · 1 评论 -
Java 5~14各个版本新特性总结
Java 5Java5开发代号为Tiger(老虎),于2004-09-30发行特性列表泛型 枚举 自动装箱拆箱 可变参数 注解 foreach循环(增强for、for/in) 静态导入 格式化(System.out.println 支持%s %d等格式化输出) 线程框架/数据结构 JUC Arrays工具类/StringBuilder/instrument...转载 2020-03-11 17:07:55 · 4500 阅读 · 0 评论 -
数据查询相差8小时,汉字查询匹配不到
经常开发中遇到一些小小的问题,总是解决掉就过去了,现在回想下之前遇到的一些小问题,记录一下子在一次新的项目中连接MySQL数据库时发现直接在数据库中执行是有数据的但执行程序就是没有数据,还有一个问题是执行模糊查询的时候查询数字或者字母的时候是可以的,查询汉字就匹配不出来,通过修改数据库的链接配置来解决。还有一些需要注意的,比如接收前端请求的时间参数时也可能需要设置格式和时区...原创 2020-01-14 14:24:35 · 209 阅读 · 1 评论 -
【solr】使用总结
项目中第一次独立的使用solr,做了一个简单的demo,简单介绍下:需要的jar: org.apache.solr solr-solrj 4.7.0 org.noggit noggit原创 2017-07-31 09:20:13 · 462 阅读 · 10 评论 -
【JVM】jvm内存模型及分区
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。 jvm所管理的内存将会包括以下几个运行时数据区域: 程序计数器: 1.程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示原创 2017-06-11 21:46:47 · 2291 阅读 · 15 评论 -
【JVM】类加载
疯狂讲义看了一遍,jvm看了一遍,也算清晰了些。一、what 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。二、when Java语言里,类型的加载、连接和初始化过程都是在程序运行期间完成的。三、how原创 2017-06-18 21:17:01 · 431 阅读 · 3 评论 -
【spring】spring MVC视图解析器
在前一篇博客中讲了SpringMVC的Controller控制器,在这篇博客中将接着介绍一下SpringMVC视图解析器。当我们对SpringMVC控制的资源发起请求时,这些请求都会被SpringMVC的DispatcherServlet处理,接着spring会分析看哪一个HandlerMapping定义的所有请求映射中存在对该请求的最合理的映射。然后通过该HandlerMapping取得其对应的原创 2017-07-16 12:50:25 · 813 阅读 · 14 评论 -
【spring】spring容器
容器 是Spring框架的核心,是组件存活的地方。Spring容器使用DI管理所有组成应用系统的组件,协作组件之间建立联。而且,这些对象简洁易懂,降低耦合性,支持重用,容易被测试。 Spring提供了多种容器实现,可分为两类:Bean工厂 和应用上下文 。 1. BeanFactory : 由org.springframework.beans.原创 2017-07-02 21:52:55 · 777 阅读 · 9 评论 -
多线程run和start的区别
Thread的start和run1) start:用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到spu时间片,就开始执行run()方法,这里方法run()称为线程体,它包含了要执行的这个线程的内原创 2017-06-18 21:18:56 · 1272 阅读 · 2 评论 -
SSM框架搭建
第一次搭建SSM的框架大约是一年之前了,当时迷迷糊糊的照着文档搭建的,最近再次搭建觉得有必要再次复习记录一下。原创 2017-04-09 22:16:11 · 722 阅读 · 2 评论 -
【RabbitMQ】三种Exchange模式——订阅、路由、通配符模式
前两篇博客介绍了两种队列模式,这篇博客介绍订阅、路由和通配符模式,之所以放在一起介绍,是因为这三种模式都是用了Exchange交换机,消息没有直接发送到队列,而是发送到了交换机,经过队列绑定交换机到达队列。 一、订阅模式(Fanout Exchange): 一个生产者,多个消费者,每一个消费者都有自己的一个队列,生产者没有将消息直接发送到队列,而是发送到了交换机,每原创 2017-06-02 14:51:06 · 22008 阅读 · 23 评论 -
【RabbitMQ】work模式
上一篇博客的作为rabbitMQ的入门程序,也是简单队列模式,一个生产者,一个消费者,今天这篇博客介绍work模式,一个生产者,多个消费者,下面的例子模拟两个消费者的情况。图示: 一个生产者、两个消费者;一个消息只能被一个消费者获取。 在work模式中可以分为两种模式,一种是两个消费者平均消费队列中的消息,即使他们的消费能力是不一样的,这种原创 2017-06-01 21:49:56 · 2125 阅读 · 10 评论 -
【RabbitMQ】RabbitMQ入门程序——Hello World
首先说一下,MQ全称为Message Queue消息队列是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。(来自百原创 2017-05-31 11:26:13 · 1578 阅读 · 12 评论 -
【RabbitMQ】安装
1. 下载下载地址:http://www.rabbitmq.com/download.html2. windows下安装2.1. 安装Erlang下载:http://www.erlang.org/download/otp_win64_17.3.exe安装:安装完成。2.2. 安装RabbitMQ原创 2017-05-31 10:27:58 · 674 阅读 · 13 评论 -
FastDFS简介及搭建
一、什么是FastDFSFastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。二、FastDFS架构包括 Tracker server和Storage server。客户端请求Tracker serv原创 2017-04-30 19:34:13 · 607 阅读 · 6 评论 -
springMVC底层源码设计思想
原创 2017-05-07 22:56:31 · 1199 阅读 · 1 评论 -
自定义文件系统类加载器
虚拟机中,有一个类加载子系统,它包括了四种类加载器,其中自定义类加载器通过继承java.lang.ClassLoader类的方式实现自己的类加载器。FileSystemClassLoader.javapackage com.www.test;import java.io.ByteArrayOutputStream;import java.io.FileInputStream;i原创 2017-05-21 22:26:42 · 664 阅读 · 5 评论 -
socket网络编程实现客户端和服务端通信
之前的博客分享过远程备份oracle数据库的代码,但是因为情况变动,代码部署的服务器和数据库服务器不是一个,并且代码部署所在服务器没有oracle的客户端,因此之前的实现策略只能舍弃。尝试一个新的方法:socket编程,简单介绍下。原创 2017-05-23 21:55:43 · 3191 阅读 · 7 评论 -
Nginx简介及Linux系统安装Nginx
一、什么是nginx Nginx是一个使用c语言开发的高性能的http服务器及反向代理服务器。是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。二、Nginx的应用场景1、http服原创 2017-03-27 13:11:46 · 622 阅读 · 0 评论 -
Java程序实现oracle远程数据库的备份和恢复
最近项目到了收尾的阶段,为了使我们的系统功能更加完成,也为了使客户更加安心,决定添加一个oracle备份和还原的功能。现做一下分享。原创 2017-04-17 10:59:06 · 8689 阅读 · 20 评论 -
Tomcat使用总结
一.目录结构 以Tomcat7为例进行说明:1.bin:该目录下存放的是二进制可执行文件,如果是安装版,那么这个目录下会有两个exe文件:tomcat7.exe、tomcat7w.exe,前者是在控制台下启动Tomcat,后者是弹出UGI窗口启动Tomcat;如果是解压版,那么会有startup.bat和shutdown.bat文件,startup.bat用来启动Tomca原创 2017-07-23 20:42:55 · 896 阅读 · 33 评论 -
【排序算法总结】直接插入排序
将一个记录插入到已排序好的有序表中,得到一个新的记录数增加1的有序表。先将序列的第一个记录看成是一个有序的子序列,第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从后向前扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。 下面以几个数为例进行插入排序:上面的排序是手动排出来的,取无序序列的第一个原创 2017-08-07 22:10:14 · 643 阅读 · 3 评论 -
【Orcale】分析函数 OVER(PARTITION BY... ORDER BY...)的讲解
OVER(PARTITION BY... ORDER BY...)的使用说明和意义这个函数长这个样子:OVER(PARTITION BY... ORDER BY...)顾名思义,PARTITION 中文是分割的意思,ORDER 是排序的意思,所以翻译一下就是先把一组数据按照制定的字段进行分割成各种组,然后组内按照某个字段排序。以实际案例来说明这个函数的使用,首先,我转载 2018-01-15 17:42:15 · 794 阅读 · 1 评论 -
【设计模式】深入理解单例&懒汉饿汉&双重锁定
在实际的开发中,我们需要某个类只有唯一一个实例,比如在Windows中我们打开任务管理器,即使点击多次,每次也只是有一个窗口。我们一起看下单例模式的定义: 单例模式(Singleton Pattern):确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式是一种对象创建型模式。1.示例代码public c原创 2017-08-23 18:07:32 · 754 阅读 · 8 评论 -
java 8 Hashmap深入解析 —— put get 方法源码
每个Java程序员都知道,HashMap是java中最重要的集合类之一,也是找工作面试中非常常见的考点,因为HashMap的实现本身确实蕴含了很多精妙的代码设计。 对于普通的程序员,可能仅仅能说出HashMap线程不安全,允许key、value为null,以及不要求线程安全时,效率上比HashTable要快一些。稍微好一些的,会对具体实现有过大概了解,能说出HashMap由数组+链表+R转载 2017-09-01 19:38:49 · 423 阅读 · 1 评论 -
spring 事务传播行为实例分析
Spring事务传播行为:spring特有的事务传播行为,spring支持7种事务传播行为,确定客户端和被调用端的事务边界(说得通俗一点就是多个具有事务控制的service的相互调用时所形成的复杂的事务边界控制)下图所示为7钟事务传播机制o 传播行为含义PROPAGATION_REQUIRED(XML文件中为REQ转载 2017-09-10 10:07:28 · 441 阅读 · 2 评论 -
【jvm】堆外内存
JVM可以使用的内存分外2种:堆内存和堆外内存. 堆内存完全由JVM负责分配和释放,如果程序没有缺陷代码导致内存泄露,那么就不会遇到java.lang.OutOfMemoryError这个错误。 使用堆外内存,就是为了能直接分配和释放内存,提高效率。JDK5.0之后,代码中能直接操作本地内存的方式有2种:使用未公开的Unsafe和NIO包下ByteBuffer。转载 2017-09-08 11:12:47 · 1783 阅读 · 1 评论 -
多线程下双重检查锁的问题及解决方法
单例模式中有一种实现方式叫双重检查锁,主要是为了更好、更安全的实现单例功能。先来看一下该方法的核心代码: [java] view plain copy"font-size:18px;">public class DoubleCheckedLocking{ private static Instance instance;转载 2017-08-23 18:00:45 · 1788 阅读 · 5 评论 -
shiro使用总结-项目集成开发
使用shiro进行项目的集成开发,需要注意:shiro与spring整合,加入shiro对web应用的支持。1.在web.xml添加shiro Filter shiroFilter org.springframework.web.filter.DelegatingFilterProxy targetFilterLifecycle true s原创 2017-08-21 14:53:55 · 775 阅读 · 8 评论 -
【排序算法总结】选择排序
选择排序是每次从待排序的数据元素中选出最小的一个元素,存放在序列的起始位置,直到最后排序完毕。下面是我写的用选择排序进行的10个数的排序过程: 首先假定第一个数7是最大的,然后用7和第二个数5比较,5比7小,取最小值为5,再和3比较,一直比到最后发现最小值为0,这时0和7交换位置。第二行,从第二个数开始比较,假定5是最大的,依次比较后面的几个数,找出比原创 2017-08-06 20:36:31 · 482 阅读 · 2 评论 -
shiro使用总结-自定义Realm
上篇博客的代码使用的是shiro自带的IniRealm,IniRealm从ini配置文件中读取用户的信息,大部分情况下需要从系统的数据库中读取用户信息,所以需要自定义realm。 shiro提供的realm 最基础的是Realm接口,CachingRealm负责缓存处理,AuthenticationRealm负责认证,AuthorizingRealm负责授权,原创 2017-08-21 11:33:42 · 660 阅读 · 6 评论 -
shiro使用总结-简单实现
一、whatShiro是apache旗下一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权、加密、会话管理等功能,组成了一个通用的安全认证框架。二、why 既然shiro将安全认证相关的功能抽取出来组成一个框架,使用shiro就可以非常快速的完成认证、授权等功能的开发,降低系统成本。 shiro使用广泛,shiro可以原创 2017-08-20 21:41:51 · 1268 阅读 · 7 评论 -
@Transactional事务几点注意
事务的很多内容还是不够了解,觉得这篇博客很好,介绍了一些容易忽略的点,分享给大家:A. 一个功能是否要事务,必须纳入设计、编码考虑。不能仅仅完成了基本功能就ok。B. 如果加了事务,必须做好开发环境测试(测试环境也尽量触发异常、测试回滚),确保事务生效。C. 以下列了事务使用过程的注意事项,请大家留意。1.不要在接口上声明@Transactional ,而要在具体类的方法上转载 2017-08-06 17:16:32 · 1501 阅读 · 6 评论 -
【排序算法总结】冒泡排序
冒泡排序是一种简单的排序算法。它的基本思想就是从左到右对相邻的两个数依次进行比较和调整,如果是从小到大排序就是让较大的数往右移,较小的数向左移动,当发现左面的数比右面的数大时即进行交换 看下面的10个数进行排序的过程,第一趟:为i=1,需要比较j=9次第二趟:i=2,j=8第三趟:i=3,j=7第四趟:i=4,j=6第五趟:i=5,j=7…………第原创 2017-08-04 20:07:44 · 614 阅读 · 3 评论 -
mybatis实现DDL(create,drop,alter等)操作
项目中一直使用mybatis,但是对于它的了解还是停留在会用的阶段,会用基本的sql和一些动态sql并且进行的操作也都只是DML(Data Manipulation Language 数据操控语言)的,对于DDL(Data Definition Language 数据定义语言)的操作还未知,最近项目中恰巧需要进行DDL操作,进行简单的记录。 其实也很简单,平时我们查询时使用等这些标签原创 2017-04-17 14:59:04 · 31810 阅读 · 17 评论 -
【mybatis】零碎拾起之参数传递
最近项目使用的SSM框架,之前也总结过一些关于Mybatis的东西,现在想继续总结一下,mybatis参数传递的简单知识。1.传递一个参数传递一个参数一般情况下直接用就可以,不需要map,不需要实体public List findUserDetail(String id); select * from t_user where user_id=#{id}原创 2017-03-05 23:16:30 · 593 阅读 · 9 评论 -
mybatis总结——常见配置及方法
一些简单的东西,每次觉得没啥,不过该总结还是要总结的。一,#{} 与 ${}#{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入。#{}可以接收简单类型值或pojo属性值。 如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。原创 2016-09-30 19:15:43 · 669 阅读 · 12 评论 -
MyBatis总结——加载mappers映射文件的三种方式
MyBatis总结继续原创 2016-10-23 23:00:57 · 4748 阅读 · 20 评论 -
MyBatis总结——开发Dao的方法
这篇博客主要介绍原始Dao开发方法和mapper代理的开发方式。一、mybatis开发dao的原始方法编写Dao接口及Dao接口的实现类。通过向Dao实现类中注入SqlSessionFactory,在方法体内部通过SqlSessionFactory创建SqlSession对象,再通过SqlSession对象操作statement。代码部分:Dao接口:* @author Liu原创 2016-10-16 21:12:26 · 627 阅读 · 24 评论 -
jsp总结之九大内置对象
jsp内置对象,是指可以不加声明和创建就可以在JSP页面脚本中使用的成员变量。这些内置对象不需要JSP页面的开发者实例化,他们由容器实例化和管理。这9个对象分别为:request、response、session、application、out、pagecontext、config、page、exception1、request对象request 对象是 javax.servl原创 2016-09-18 23:09:18 · 566 阅读 · 11 评论