- 博客(61)
- 收藏
- 关注
转载 十、Spring中常用注解-分层整理
1、@Controller: 标注展示层组件(Bean),但是目前该功能与 @Component 相同,用来创建处理http请求的对象 Spring4之后加入的注解,原来在@Controller中返回json需要@ResponseBody来配合,如果直接用@RestController替代@Controller就不需要再配置@ResponseBody,默认返回json格式1.1)@R...
2019-08-27 21:02:00
282
转载 七、SXSSFWorkbook生成大excle,避免内存溢出
1.SXSSFWorkbook理解: SXSSFWorkbook是用来生成海量excel数据文件,主要原理是借助临时存储空间生成excel,SXSSFWorkbook专门处理大数据,对于大型excel的创建且不会内存溢出的,就只有SXSSFWorkbook了。它的原理很简单,用硬盘空间换内存(就像hashmap用空间换时间一样)。 SXSSFWorkbook是streaming版本的X...
2019-06-24 21:27:00
6180
转载 一、FreeMarker实现对js和css压缩
1、代码压缩理解:实际上就是将原有的文本中无用的注释、空行、空格去掉来压缩文件的大小。进行js和css压缩会带来如下好处:1)减小了文件的体积,减少文件占用的内存;2)减小了网络传输量和带宽占用; 3)减小了服务器的处理的压力;4)提高文件加载、页面的渲染速度,提高性能能;2、ftl页面中实现对js和css文件压缩1)可在vars.dev.properties文件中进行如下配置:sc...
2019-03-25 21:32:00
841
转载 九、web.xml理解
1、web.xml文件在每个web工程不是必须要有的: web.xml文件是用来初始化配置信息:比如Welcome页面、servlet、servlet-mapping、filter、listener、启动加载级别等。当web工程没用到这些时,你可以不用web.xml文件来配置你的Application。2、web.xml定义的内容及加载的顺序2.1web.xml定义的内容 ...
2019-03-24 11:33:00
176
转载 十四、制作优美的div弹框
功能描述:确认【调整按钮】弹出精美div弹框1、jsp页面:perfectAlertDiv.jsp 1 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 <html> 3 <head> 4 <title>确认调整按钮弹出...
2019-03-02 18:09:00
559
转载 四、代理模式
1、代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法2、java 的三种代理模式:2.1)静态代理:在使用时,需要定义接口或者父类,被代理对象与...
2018-10-22 23:01:00
76
转载 一、log4j日志框架的理论和不同场景使用
1、日志框架: 工作中要进行Java输出日志时,你需要一个或者多个日志框架。框架能提供对象、方法和必要的配置来发送日志信息。Java语言本身有自带的日志实现包java.util.logging。还有很多第三方的日志框架,包括log4j、log4j 2、logback。sl4j和Apache Commons Logging提供了日志的抽象层次,通过它可以从底层的日志框架实现解耦合,从而在...
2018-09-20 14:09:00
368
转载 三、装饰者模式_策略模式_观察者模式
1、装饰模式: 就是给一个对象增加一些新的功能,并且是动态的,要求装饰对象和被装对象实现同一个接口。装饰对象持有被装饰对象的实例。装饰者模式中的要求:1) 装饰者和被装饰则应该实现同一个类;2) 装饰者含有被装饰者的引用3) 一个类含有另一个类明显的关联关系4) 装饰者和被装饰者里面的方法一定要一样,为什么要这样做?是为了保障这两个类具有相同的方法装饰者模式比继承更能降低代...
2018-09-13 20:17:00
100
转载 二、建造者模式_适配器设计模式
1、建造者模式: 工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的 Test 结合起来得到的。1.1 建造者模式类public class Builder { private List<Sender> list=new...
2018-09-13 20:10:00
81
转载 七、linux基础-jdk1.8和weblogic12.2.1.3.0安装
1、环境探查与准备 安装jdk和weblogic前需要对进行安装的linux系统硬件和软件环境进行探查确认,以确保支持对jdk1.8.0_144_1和weblogic12.2.1.3和的安装。weblogic12.2.1.3对于jdk及linux操作系统版本的要求在oracle官网上面有详细的详细全面介绍,可自己进行下载xls查阅。http://www.oracle.com/techn...
2018-09-13 19:05:00
288
转载 一、单例设计模式_工厂模式
1、总体来说设计模式分为三大类: Java 中一般认为有 23 种设计模式,我们不需要所有的都会,但是其中常用的几种设计模式应该去掌握。下面列出了所有的设计模式。需要掌握的设计模式已单独列出来了,当然能掌握的越多越好。创建型模式(5种):单例模式、工厂模式(包含:工厂方法模式和抽象工厂模式)、建造者模式、原型模式。结构型模式(7种):适配器模式、装饰器模式、代理模式、外观模式、桥接模式...
2018-09-12 20:56:00
92
转载 六、linux基础-计算机网络_线程_进程
6 计算机网络-线程和进程6.1 TCP/IP协议 TCP/IP是Unix/Linux世界的网络基础,在某种意义上,Unix网络就是Tcp/ip,而且Tcp/ip就是网络互连的标准他不是一个独立的协议,而是一组协议(tcp,ip,udp,arp,rarp等协议)tcp:传输协议ip:以太网协议udp:用户数据包协议arp:地址解析协议rarp:反地址解析协议6.2 osi(开放式通信系...
2018-09-12 19:43:00
148
转载 五、linux基础-shell机制
5.1 shell机制1、Linux命令程序员可以看懂,但是操作系统是不懂这句话的含义的。因为所有的命令必须重新被解释然后传递给Linux内核才可以执行。这一被解释的机制就是shell。 Linux命令先被shell解释成内核可以执行的代码,然后再由Linux内核进行运行。作为命令语言互动式的解释和执行用户输入的命令只是shell功能的一个方面,shell还可以用来进行程序设计,它提供...
2018-09-12 19:36:00
189
转载 四、linux基础-系统目录_安装_相关命令_调度
4 系统目录-安装-版本4.1系统目录Linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。 在装完Linux系统以后会自动生成一下等目录,这些目录都是同一个级别的。Linux/根目录下面存放的目录有:/ linux文件系统的上层跟目录root 根用户目录 存放root用户相关文件的目录hom...
2018-09-12 19:33:00
134
转载 三、linux基础-常用命令man_cd_|_find_ln_>_history
3通用命令3.1 man命令man pwd 来查看该命令的全部帮助手册备注:命令最终是在内核中执行的,但是内核并无法直接识别,所以先通过shell执行,然后再交给内核执行3.2 cd 命令cd ~ 进入当前用户的家目录cd 跟"cd ~"命令相同,都为进入当前用户的家目录(会进入当前所登录者的用户目录文件夹下面)cd - 进入上次所在的目录cd .. 进入上级目...
2018-09-12 19:22:00
512
转载 二、linux基础-路径和目录_用户管理_组_权限
2.1路径和目录1、相对路径:参照当前目录进行查找。 如:[root@localhost ~]# cd ../opt/hosts/备注:相对路径是从你的当前目录开始为基点,去寻找另外一个目录(或者收文件夹),这种寻找的方式就是相对路径。 例如:cd ..2、 绝对路径:从根目录开始指定,一级一级递归查找。在任何目录下都能进入指定位置。 如:[root@localhost ~]# ...
2018-09-12 19:17:00
123
转载 一、linux基础-对文件操作
1.1文件夹创建-复制-移动-重命名-删除1、创建文件夹mkdir zjbdir 2、复制文件/文件夹复制文件到:当前目录cp -r zjbdir zjbdir201600819复制文件到:当前目录下的putdir/dirson目录中cp -r zjbdir ./putdir/dirson复制文件到:指定目录下cp -r zjbdir /home备注:-r 递归复制命令(复制子目...
2018-09-12 19:09:00
187
转载 十七、java内存模型_JVM_JDK_类加载
1、Java内存模型 共享内存模型指的就是Java内存模型(简称JMM),JMM决定一个线程对共享变量的写入时,能对另一个线程可见。从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个私有的本地内存(local memory),本地内存中存储了该线程以读/写共享变量的副本。本地内存是JMM的一个抽象概念,...
2018-09-10 21:35:00
124
转载 十二、多线程基础-死锁
1、死锁含义 死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。例如,在某一个计算机系统中只有一台打印机和一台输入 设备,进程P1正占用输入设备,同时又提出使用打印机的请求,但此时打印机正被进程P2 所占用,而P2在未释放打印机之前,又提出请求使用正被P1占用着的输入设备。这样两个进程相互无休止地等待下去,均无法继续执行,此时两个进程陷...
2018-09-10 21:28:00
97
转载 十二、多线程基础-并发队列
1、ConcurrentLinkedQueue 是一个适用于高并发场景下的队列,通过无锁的方式,实现了高并发状态下的高性能,通常ConcurrentLinkedQueue性能好于BlockingQueue.它是一个基于链接节点的无界线程安全队列。该队列的元素遵循先进先出的原则。头是最先加入的,尾是最近加入的,该队列不允许null元素。 ConcurrentLinkedQueu...
2018-09-10 21:15:00
89
转载 十一、多线程基础-同步容器类
1、Vector与ArrayList区别1)ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已经有数组的数据复制到新的存储空间中。当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制、移动、代价比较高。因此,它适合随机查找和遍历,不适合插入和删除...
2018-09-10 21:00:00
92
转载 十、多线程基础-需要强化的知识点
1、sleep()和wait()方法异同 sleep方法和wait方法都可以用来放弃CPU一定的时间,不同点在于如果线程持有某个对象的监视器,sleep方法不会放弃这个对象的监视器,wait方法会放弃这个对象的监视器1)Thread.sleep():方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep...
2018-09-10 20:46:00
81
转载 九、多线程基础-如何实现多线程间通讯
如何实现线程间通讯,有如下三种方法:1、使用Semaphore (信号量)类来控制线程的等待和释放 功能:三个线程 a 、b 、c 并发运行,b,c 需要 a 线程的数据怎么实现 分析:考虑到多线程的不确定性, 因此我们不能确保 ThreadA 就一定先于 ThreadB 和 ThreadC 前执行,就算 ThreadA先执行了, 我们也无法保证 ThreadA 什么...
2018-09-10 20:31:00
106
转载 八、多线程基础-如何控制多线程执行顺序经典示例3
1、子线程运行执行 10 次后,主线程再运行 5 次,这样交替执行三遍package threadLearning.threadAlternates;public class Bussiness { private boolean subFlag = true;//主线程和子线程切换的控制开关 public static void main(Strin...
2018-09-10 20:21:00
146
转载 七、多线程基础-同步代码块与非同步代码块
1)当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程则无法该object的另外一个synchronized(this)同步代码块。public class Thread1 { public void m4t1() { synchronized (this) { int i = 5...
2018-09-10 20:14:00
129
转载 六、多线程基础-多个线程行为不一致/一致共同操作一个数据的设计方法
1、多个线程行为不一致共同操作一个数据如果每个线程执行的代码不同,这时候需要用不同的 Runnable 对象:有如下两种方法:方法1)将共享数据封装在另外一个对象中,然后将这个对象逐一传递给各个 Runnable 对象。每个线程对共享数据的操作方法也分配到那个对象身上去完成,这样容易实现针对该数据进行的各个操作的互斥和通信。见示列1:ShareDataThreadDifferent ...
2018-09-10 20:03:00
530
转载 三、多线程面试知识点-并发度_读写锁_确认线程池_阻塞线程唤醒
该部分为一些零散的面试理论知识点:1、ConcurrentHashMap的并发度是什么 ConcurrentHashMap的并发度就是segment的大小,默认为16,这意味着最多同时可以有16条线程操作ConcurrentHashMap,这也是ConcurrentHashMap对Hashtable的最大优势2、ReadWriteLock 首先明确一下,不是说Reentran...
2018-09-10 19:53:00
125
转载 五、生产者消费者模型_ThreadLocal
1、生产者消费者模型作用和示例如下:1)通过平衡生产者的生产能力和消费者的消费能力来提升整个系统的运行效率 ,这是生产者消费者模型最重要的作用2)解耦,这是生产者消费者模型附带的作用,解耦意味着生产者和消费者之间的联系少,联系越少越可以独自发展而不需要收到相互的制约备注:对于生产者消费者模型的理解将在并发队列BlockingQueue章节进行说明,本章不做详细介绍。packa...
2018-09-10 19:19:00
186
转载 四、多线程基础-线程池的创建和使用
1 、ThreadPoolExecutor理解 Java是天生就支持并发的语言,支持并发意味着多线程,线程的频繁创建在高并发及大数据量是非常消耗资源的,因此java提供了线程池。在jdk1.5以前的版本中,线程池的使用是及其简陋的,但是在JDK1.5后,有了很大的改善。JDK1.5之后加入了java.util.concurrent包,java.util.concurrent包的加入给予...
2018-09-06 20:29:00
86
转载 三、多线程基础-自旋_AQS_多线程上下文
1、 自旋理解 很多synchronized里面的代码只是一些很简单的代码,执行时间非常快,此时等待的线程都加锁可能是一种不太值得的操作,因为线程阻塞涉及到用户态和内核态切换的问题。既然synchronized里面的代码执行地非常快,不妨让等待锁的线程不要被阻塞,而是在synchronized的边界做忙循环,这就是自旋。如果做了多次忙循环发现还没有获得锁,再阻塞,这样可能是一种更好...
2018-09-06 20:00:00
1418
转载 二、多线程基础-乐观锁_悲观锁_重入锁_读写锁_CAS无锁机制_自旋锁
1.10乐观锁_悲观锁_重入锁_读写锁_CAS无锁机制_自旋锁1)乐观锁:就像它的名字一样,对于并发间操作产生的线程安全问题持乐观状态,乐观锁认为竞争不总是会发生,因此它不需要持有锁,将 比较-设置 这两个动作作为一个原子操作尝试去修改内存中的变量,如果失败则表示发生冲突,那么就应该有相应的重试逻辑。 乐观锁(Optimistic Lock):顾名思义,就是很乐观,每次去...
2018-09-06 08:49:00
175
转载 一、多线程基础理论-概念_特性_分类_状态_线程池_线程数配置
1.1 线程概念 从以下4个方面理解 1)线程是进程中执行运算的最小单位,每一个线程是进程中的一条执行路径。是被系统独立调度和分派的基本单位。 2)线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源 3)一个线程可以创建和撤消另一个线程 4)同一进程中的多个线程之间可以并发执行。1.2 线程和进程...
2018-09-05 21:21:00
120
转载 二十、oracle通过复合索引优化查询及不走索引的8种情况
1. 理解ROWID ROWID是由Oracle自动加在表中每行最后的一列伪列,既然是伪列,就说明表中并不会物理存储ROWID的值;你可以像使用其它列一样使用它,只是不能对该列的值进行增、删、改操作;一旦一行数据插入后,则其对应的ROWID在该行的生命周期内是唯一的,即使发生行迁移,该行的ROWID值也不变。SELECT t.rowid,t.* FROM DM_COMM_PREM_LI...
2018-08-28 22:04:00
924
转载 五、ibatis中#和$的区别和使用
1、#和$两者含义不同#:会进行预编译,而且进行类型匹配;$:不进行数据类型匹配。示例:变量name的类型是string, 值是"张三" $name$ = 张三 #name# ='张三'因此使用$就会报错,若要使用$的话,需要修改为’$name$’;2、两者的实现方式不同2.1)$ 作用相等于是字符串拼接,select * from users where name= $na...
2018-08-26 15:00:00
321
转载 四、spring集成ibatis进行项目中dao层基类封装
Apache iBatis(现已迁至Google Code下发展,更名为MyBatis)是当前IT项目中使用很广泛的一个半自动ORM框架,区别于Hibernate之类的全自动框架,iBatis对数据库的操作拥有更加灵活的控制,对于那些经常需要调用本地数据库函数自定义SQL语句,或是喜欢自己优化SQL执行效率的开发者来说,iBatis是一个非常不错的选择。而得到广泛应用的开源企业架构S...
2018-08-25 17:39:00
412
转载 十三、$.ajax、模态/非模态框、window.open()、href属性、submit()等提交请求优劣及问题解决方法...
1. $.ajax提交请求进行数据更新,并通过回调进行有效提示function updateAudit(dispacher, control) { var currentpage = document.getElementById("currentpagevalue").value; var count = 0; var frm = docume...
2018-08-14 20:12:00
259
转载 一、jsp和Servlet基础理论及jstl和EL表达式用法
1、题外话:使用JSP有近一年半的时间了,但是开发量不大。昨天部门突然让做个读取EXCLE文件,然后在前台页面进行展示、并通过点击查看按钮可以对每条明细记录进行跳转后进行详情查看,并按照页面原型进行页面渲染,还需要预留一个接口供别的开发进行每条明细数据的获取和加工。因为时间着急就不想搭建框架进行实现了。但是竟然想不起来如何使用Servlet和JSP来实现该功能,觉得很是尴尬,觉得自己太不...
2018-08-11 23:45:00
457
转载 十六、myeclipse导入别人项目报错java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServle异常...
问题原因:java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServle异常 我是把别人的源码项目直接导入到自己的MyEclipse中,启动tomcat的时候一直报这个异常,引起这个异常的原因是:因为导入的该应用的lib目录中已经包含了tomcat的所有jar包,当将该项目部署到tomcat下...
2018-04-04 11:16:00
1453
转载 二、spring集成ibatis进行数据源事务管理拦截器环境配置
1、dataSource-applicationContext.xml文件配置理解:(spring1.2.8+ibatis1.5.3)1.1)配置数据源DriverManagerDataSource:类实现了 SmartDataSource接口。可以使用bean properties来设置JDBC Driver属性,该类每次返回的都是一个新的连接。<beans>...
2018-04-03 18:45:00
410
转载 一、iBatis进行分页查询
1、ibatis理解: iBatis属于半自动化的ORM框架,我们需要编写SQL语句,由iBatis进行数据库访问,返回结果。而iBatis可以为我们做的更多,比如对查询参数集合、结果、分页查询、事务管理的封装等。虽然不如全自动SQL方便,但是SQL的主动权却在我们开发人员的手中,对SQL优化的掌控则是很直接的。 备注:iBatis的版本发展到3.0时,其名称也更改为MyBatis。...
2018-04-03 16:05:00
500
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人