
软件
weixin_43770982
这个作者很懒,什么都没留下…
展开
-
MySQL数据库开发的 36 条军规
来自一线的实战经验,主要针对DBA和后端开发人员,总是在灾难发生后,才想起容灾的重要性;总是在吃过亏后,才记得曾经有人提醒过。核心军规尽量不在数据库做运算 控制单表数据量 纯INT不超过10M条,含Char不超过5M条 保持表身段苗条 平衡范式和冗余 拒绝大SQL,复杂事务,大批量任务字段类军规用好数值字段,尽量简化字段位数 把字符转化为数...原创 2019-06-24 18:52:28 · 255 阅读 · 0 评论 -
Servlet开发之实现Servlet接口
安装好Tomcat后 在tomcat>lib下面的这个servlet-apt.jar jar包需要导入到项目中.第一步、创建java文件并实现Servlet接口:public class Hello implements Servlet{ // 该函数用于初始化该servlet(类似类的构造函数) // 这个函数只会被调用一次 (当用户第一次访问该serv...原创 2019-06-10 16:36:25 · 3035 阅读 · 0 评论 -
Java中的Object、T(泛型)、?区别
因为最近重新看了泛型,又看了些反射,导致我对Object、T(以下代指泛型)、?产生了疑惑。我们先来试着理解一下Object类,学习Java的应该都知道Object是所有类的父类,注意:那么这就意味着它的范围非常广!首先记住这点,如果你的参数类型时Object,那么的参数类型将非常广!《Thinking in Java》中说很多原因促成了泛型的出现,最引人注目的一个原因就是为了创造容器类。...原创 2019-06-04 11:42:45 · 938 阅读 · 0 评论 -
探讨一个“无法创建JVM”的问题
记录一个今天遇到的问题。Java版本:1.4运行设置: -Xms1G -Xmx4G报错:[ Incompatible initial and maximum heap sizes specified: ][ initial size:1073741824 bytes, maximum heap size: 67108864 bytes ][ The initial hea...原创 2019-06-10 14:32:12 · 748 阅读 · 0 评论 -
Myeclipse 简单配置jetty服务器
首先,工程路径下的WebRoot文件夹下应该有jetty.xml文件其中箭头处一处为工程路径,另一个为启动地址now 开始配置Run -> Run Configurations打开的界面 -> 选择Java Application -> 新建 -> Name(随意输入,自己好记就行,我写的guideFrame)再进行如图操作...原创 2019-06-10 11:45:40 · 494 阅读 · 0 评论 -
Java:比较与排序
1.两种比较接口分析在“集合框架”中有两种比较接口:Comparable接口和Comparator接口。Comparable是通用的接口,用户可以实现它来完成自己特定的比较,而Comparator可以看成一种算法的实现,在需要容器集合实现比较功能的时候,来指定这个比较器,这可以看成一种设计模式,将算法和数据分离。前者应该比较固定,和一个具体类相绑定,而后者比较灵活,它可以被用于各个需要比较...原创 2019-06-19 19:05:49 · 447 阅读 · 0 评论 -
Java中内部类到底有什么用?
java中内部类种类较多,语法比较复杂,用法也不尽相同。概括下来,可以分类为以下五种内部类。内部类 嵌套内部类 局部内部类 接口内部类 匿名内部类本篇文章只对实际项目开发中用的较多的,普通内部类与匿名内部类做一定介绍。其他三种若有兴趣请自行通过谷歌或书籍进行了解。内部类首先通过一个简单的小示例,来看看内部类的语法吧。import java.util.HashMap;...原创 2019-06-03 20:00:41 · 1086 阅读 · 0 评论 -
( 十二)ThreadPoolExecutor线程池原理及其execute方法
jdk1.7.0_79 对于线程池大部分人可能会用,也知道为什么用。无非就是任务需要异步执行,再者就是线程需要统一管理起来。对于从线程池中获取线程,大部分人可能只知道,我现在需要一个线程来执行一个任务,那我就把任务丢到线程池里,线程池里有空闲的线程就执行,没有空闲的线程就等待。实际上对于线程池的执行原理远远不止这么简单。 在Java并发包中提供了线程池类——ThreadPoolExe...原创 2019-06-03 17:31:37 · 277 阅读 · 0 评论 -
揭开java内存模型的神秘面纱
java并发采用的是共享内存模型,线程之间的通信对程序员来说是透明的,内存可见性问题很容易困扰着java程序员,今天我们就来揭开java内存模型的神秘面纱。在揭开面纱之前,我们需要认识几个基础概念:内存屏障(memory Barriers),指令重排序,happens-before规则,as-if-serial语义。什么是 Memory Barrier(内存屏障)?内存屏障,又称内存...原创 2019-06-14 16:33:33 · 102 阅读 · 0 评论 -
SSM(三)Shiro使用详解
前言相比有做过企业级开发的童鞋应该都有做过权限安全之类的功能吧,最先开始我采用的是建用户表,角色表,权限表,之后在拦截器中对每一个请求进行拦截,再到数据库中进行查询看当前用户是否有该权限,这样的设计能满足大多数中小型系统的需求。不过这篇所介绍的Shiro能满足之前的所有需求,并且使用简单,安全性高,而且现在越来越的多企业都在使用Shiro,这应该是一个收入的你的技能库。创建自定义MyRea...原创 2019-06-19 14:53:05 · 143 阅读 · 0 评论 -
深入分析String.intern和String常量的实现原理
背景字符串类型在实际应用场景中使用非常频繁,如果为每个字符串常量都生成一个对应的String对象,明显会造成内存的浪费,针对这一问题,虚拟机实现一个字符串常量池的概念,提供了如下实现:1、同一个字符串常量,在常量池只有一份副本;2、通过双引号声明的字符串,直接保存在常量池中;3、如果是String对象,可以通过String.intern方法,把字符串常量保存到常量池中;本文JVM源码...原创 2019-06-14 14:49:43 · 136 阅读 · 0 评论 -
如何快速清理 docker 资源
如果经常使用 docker,你会发现 docker 占用的资源膨胀很快,其中最明显也最容易被察觉的应该是对磁盘空间的占用。本文将介绍如何快速的清理 docker 占用的系统资源,具体点说就是删除那些无用的 镜像、容器、网络和数据卷。查看 docker 占用的资源在进行资源清理之前我们有必要搞清楚 docker 都占用了哪些系统的资源。这需要综合使用不同的命令来完成。docker conta...原创 2019-06-13 19:15:01 · 193 阅读 · 0 评论 -
探索Java:应用Observer接口实践Observer模式
在Java中通过Observable类和Observer接口实现了观察者模式。Observer对象是观察者,Observable对象是被观察者。1.实现观察者模式实现观察者模式非常简单,[1]创建被观察者类,它继承自java.util.Observable类;[2]创建观察者类,它实现java.util.Observer接口;[3]对于被观察者类,添加它的观察者: ...原创 2019-06-13 16:50:12 · 164 阅读 · 0 评论 -
探讨Java内部类的可见性
在Java中,当生成一个内部类的对象时,此对象与制造它的外部类通过外部类的.this保持着联系,因此该内部类对象可以访问其外部类对象的所有成员,包括private成员。而该内部类对象对于其他类的对象的访问,遵照常规的访问权限语法,这一点也没有什么特别支持。这里需要探讨的是,外部类以及其他类的对象可以如何访问到某个内部类对象,即内部类的可见性问题。下面是一个示例程序Out.java,其中包含...原创 2019-06-13 14:28:42 · 476 阅读 · 0 评论 -
深入分析java线程池的实现原理
前言线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,合理的使用线程池对线程进行统一分配、调优和监控,有以下好处:1、降低资源消耗;2、提高响应速度;3、提高线程的可管理性。Java1.5中引入的Executor框架把任务的提交和执行进行解耦,只需要定义好任务,然后提交给线程池,而不用关心该任务是如何执行、被哪个线程执行,以及什么时候执行。demo...原创 2019-06-01 18:07:53 · 123 阅读 · 0 评论 -
用ThreadLocal为线程生成唯一标识
在多线程编程中,有时候需要自动为每个启动的线程生成一个唯一标识,这个时候,通过一个ThreadLocal变量来保存每个线程的标识是最有效、最方便的方式了。下面是JDK帮助文档的说明:-------------------------------------------------------------public classThreadLocal<T>exten...原创 2019-06-06 19:05:37 · 915 阅读 · 0 评论 -
行为型模式:解释器模式
简介姓名:解释器模式英文名:Interpreter Pattern价值观:不懂解释到你懂个人介绍:Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences i...原创 2019-05-29 10:59:41 · 135 阅读 · 0 评论 -
探秘“==”与“equals()”的区别
概括 用途:equals()和“==”操作用于对象的比较,检查俩对象的相等性。 性质:前者是方法,后者是操作符。 区别: ==是判断两个变量或实例是不是指向同一个内存空间 equals()是判断两个变量或实例所指向的内存空间的值是不是相同 ==是指对内存地址进行比较 equals()是对字符串的内容进行比较 ==指引用是否...原创 2019-06-12 19:16:43 · 156 阅读 · 0 评论 -
Spring Boot :Undertow
UndertowUndertow 是红帽公司开发的一款基于 NIO 的高性能 Web 嵌入式服务器 Untertow 的特点: 轻量级:它是一个 Web 服务器,但不像传统的 Web 服务器有容器概念,它由两个核心 Jar 包组成,加载一个 Web 应用可以小于 10MB 内存 Servlet3.1 支持:它提供了对 Servlet3.1 的支持 WebSocket 支持:对 We...原创 2019-06-10 17:53:47 · 226 阅读 · 0 评论 -
maven依赖的版本管理
使用变量进行管理定义一个版本号的变量<properties> <spring-framework-version>4.3.7.REALEASE</spring-framework-version></properties>所有spring的jar版本都使用变量来定义版本:<dependency> <gr...原创 2019-06-16 14:31:38 · 530 阅读 · 0 评论 -
SSM(六)跨域传输
前言不知大家在平时的开发过程中有没有遇到过跨域访问资源的问题,我不巧在上周就碰到一个这样的问题,幸运的是在公司前端同学的帮忙下解决了该问题。什么是跨域问题?只要协议、域名、端口有任何一个不同,都被当作是不同的域 只要是在不同域中是无法进行通信的。基于以上的的出发点,我们又有跨域共享资源的需求(譬如现在流行的前后端分离之后分别部署的情况),本文所采用的解决办法是JSONP,说到J...原创 2019-06-24 11:44:54 · 123 阅读 · 0 评论 -
maven 中配置多个mirror的问题
有个小伙伴遇到一个疑问:他的工作笔记本,在公司用部门搭建的maven私服做镜像,回到家用aliyun的镜像,每次都要改配置文件,很麻烦,希望能够不改动配置文件的情况下,动态切换mirror配置。我们知道 settings.xml 中可以使用变量,可以尝试使用变量解决。<mirrors> <mirror> <id>aliyun</id&...原创 2019-06-18 19:26:20 · 19988 阅读 · 0 评论 -
Spring中的统一异常处理方式
在具体的SSM项目开发中,由于Controller层为处于请求处理的最顶层,再往上就是框架代码的。因此,肯定需要在Controller捕获所有异常,并且做适当处理,返回给前端一个友好的错误码。不过,Controller一多,我们发现每个Controller里都有大量重复的、冗余的异常处理代码,很是啰嗦。能否将这些重复的部分抽取出来,这样保证Controller层更专注于业务逻辑的处理,...转载 2019-06-22 19:20:27 · 121 阅读 · 0 评论 -
SSM(二)Lucene全文检索
前言大家平时肯定都有用过全文检索工具,最常用的百度谷歌就是其中的典型。如果自己能够做一个那是不是想想就逼格满满呢。Apache就为我们提供了这样一个框架,以下就是在实际开发中加入Lucene的一个小Demo。获取Maven依赖首先看一下实际运行的效果图:这个项目是基于之前使用IDEA搭建的SSM的基础上进行增加的,建议小白先看一下我上一篇博客。以下是Lucene所需要的依赖:...原创 2019-06-18 14:33:36 · 198 阅读 · 0 评论 -
SSM(五)基于webSocket的聊天室
前言不知大家在平时的需求中有没有遇到需要实时处理信息的情况,如站内信,订阅,聊天之类的。在这之前我们通常想到的方法一般都是采用轮训的方式每隔一定的时间向服务器发送请求从而获得最新的数据,但这样会浪费掉很多的资源并且也不是实时的,于是随着HTML5的推出带来了websocket可以根本的解决以上问题实现真正的实时传输。websocket是什么?至于websocket是什么、有什么用这样的...原创 2019-06-22 11:56:43 · 310 阅读 · 0 评论 -
SSM(一)框架的整合
前言最近这几年JetBrains公司开发的IDEA是越来越流行了,甚至Google的官方IDE都是IDEA来定制的,可见IDEA的发展趋势是越来越好,由于博主接触IDEA的时间也不长,所以有关IDEA和Eclipse的区别和优劣势请自行百度了。借此机会我就使用IDEA来整合一下SSM,针对于初学者(初次使用IDEA和JAVAEE初学者)还是有帮助的。新建SSM项目哦对了,关于IDEA...原创 2019-06-18 10:44:50 · 143 阅读 · 0 评论 -
一段java代码带你认识锟斤拷
@Testpublic void testKunJinKao(){ String str="我不是锟斤拷"; try { byte[] buff=null; //让我们先看看几种错误的转换,let's go //1. 正常的GBK字节流,你以为是UTF-8,所以用UTF-8去解码... buff=str.getBytes("GBK");//这里只要不...原创 2019-06-17 16:38:32 · 1117 阅读 · 0 评论 -
eclipse使用maven创建web3.0项目
挺别扭的,eclipse和maven发展了这么久,二者都没有很好的解决这个问题。默认情况下,使用maven骨架撞见的webapp只支持servlet2.3,eclipse又不允许随便修改为3.0。网上流传最多的版本可能是修改项目目录中.settings/org.eclipse.wst.common.project.facet.core.xml文件,然后还要注意一堆东西。我梳理了一种办法...原创 2019-06-17 14:53:21 · 176 阅读 · 0 评论 -
Java模拟HTTP的Get和Post请求
借助Apache Commons-httpclient的力量,轻松实现了对HTTP请求的模拟!下面是一个测试代码:importorg.apache.commons.httpclient.HttpClient;importorg.apache.commons.httpclient.HttpMethod;importorg.apache.commons.httpclient.H...原创 2019-06-21 14:22:06 · 761 阅读 · 0 评论 -
Spring4 + Spring MVC + MyBatis 整合思路
1、Spring框架的搭建这个很简单,只需要web容器中注册org.springframework.web.context.ContextLoaderListener,并指定spring加载配置文件,那么spring容器搭建完成。(当然org.springframework的核心jar包需要引入)当然为了更加易用支持J2EE应用,一般我们还会加上如下:Spring监听HTTP请求事件:...原创 2019-06-11 16:53:50 · 139 阅读 · 0 评论 -
SSM(四)WebService入门详解
前言webservice这个不知道大家首次接触的时候是怎么理解的,反正我记得我当时第一次接触这个东西的时候以为又是一个XX框架,觉得还挺高大上。然而这一切在之后我使用过后才发现这些全都是YY。那么webservice到底是什么呢,根据我自己的理解:简单来说就像是一个公开的接口,其他系统不管你是用什么语言来编写的都可以调用这个接口,并可以返回相应的数据给你。就像是现在很多的天气应用,他们肯定...原创 2019-06-21 10:48:56 · 529 阅读 · 0 评论 -
java构造函数(构造方法)
构造方法是类里的一个特殊的方法,他不能有返回值(包括void)。所谓构造方法,就是这个类在被实例化时(创建对象时)就要执行的方法,方法名为类的名字,一般的目的是为了给类进行一些初始化值。下面给个栗子 public class pen{ //成员变量 private double length; private double weigth; //构造方法 ...原创 2019-06-11 14:21:44 · 1424 阅读 · 0 评论 -
事务隔离级别
事务隔离级别:@Transactional(isolation = Isolation.READ_UNCOMMITTED):读取未提交数据(会出现脏读,不可重复读)基本不使用@Transactional(isolation = Isolation.READ_COMMITTED):读取已提交数据(会出现不可重复读和幻读)@Transactional(isolation = Isola...原创 2019-06-11 11:12:47 · 151 阅读 · 0 评论 -
大公司为什么还在采用过时的技术
背景本文出自一朋友给我的提问,于是博主呕心沥血给他花式洗脑了几个小时。忽然发现,应该还有许多朋友有同样的疑问。所以整理成文。许多刚毕业的程序员朋友,都有一个执念,想要进那种规模大一点的公司、上市的、业内有名的最好。为什么大家都想去大公司?因为很多人觉得,公司大一点,正规一点。开发技术应该不错,应该与时俱进,流程应该会规范一些。说到这里,依然有这种想法的朋友,请握个爪。 然而,当他刷...原创 2019-06-20 18:52:11 · 408 阅读 · 0 评论 -
Java泛型总结
什么是泛型泛型是jdk5引入的类型机制,就是将类型参数化,它是早在1999年就制定的jsr14的实现。泛型机制将类型转换时的类型检查从运行时提前到了编译时,使用泛型编写的代码比杂乱的使用object并在需要时再强制类型转换的机制具有更好的可读性和安全性。泛型程序设计意味着程序可以被不同类型的对象重用,类似c++的模版。泛型对于集合类尤其有用,如ArrayList。这里可能有疑问,既...原创 2019-06-16 17:34:01 · 207 阅读 · 0 评论 -
redis的事务和watch
redis的事务严格意义来讲,redis的事务和我们理解的传统数据库(如mysql)的事务是不一样的。redis中的事务定义Redis中的事务(transaction)是一组命令的集合。事务同命令一样都是Redis的最小执行单位,一个事务中的命令要么都执行,要么都不执行。事务的原理是先将属于一个事务的命令发送给Redis,然后再让Redis依次执行这些命令。Redis保证一...原创 2019-06-04 17:27:08 · 129 阅读 · 0 评论 -
java lambda方法引用总结——烧脑吃透
lambda是java8的新特性,基本使用比较容易理解,但有一个环节遇到了坎儿,那就是方法引用,尤其是类的实例方法引用,烧脑之后总结一下。在需要函数参数的方法中,我们可以把另一个同类型的方法直接传入,这称为方法引用的绑定。类似于C语言中的函数指针。lambda表达式可以替代方法引用;或者说方法引用是lambda的一种特例,方法引用不可以控制传递参数。4.1) 构造器引用priva...原创 2019-06-20 16:01:32 · 1029 阅读 · 0 评论 -
javascript构造可以上传文件的form表单(通过js修改enctype)
在上传文件时,我们都知道需要在form表单中加上enctype="multipart/form-data"。而在开发过程中,也有可能遇到需要用javascripts构造form表单的情况。一般javascript构造form,可以使用以下方法:var form = document.createElement('form');form.id="the_form";form.ac...原创 2019-06-12 16:40:30 · 1171 阅读 · 0 评论 -
( 十)并发包阻塞队列之ArrayBlockingQueue
jdk1.7.0_79 上一节中对并发包中的非阻塞队列ConcurrentLinkedQueue的入队、出队做了一个简要的分析,本文将对并发包中的阻塞队列做一个简要分析。 Java并发包中的阻塞队列一共7个,当然他们都是线程安全的。 ArrayBlockingQueue:一个由数组结构组成的有界阻塞队列。 LinkedBlockingQueue:一个由链表结构组成的...原创 2019-05-31 16:38:39 · 151 阅读 · 0 评论 -
( 四)从AbstractQueuedSynchronizer(AQS)说起——AQS结语
前两节的内容《从AbstractQueuedSynchronizer(AQS)说起——独占模式的锁获取与释放》 、《从AbstractQueuedSynchronizer(AQS)说起——共享模式的锁获取与释放》对AQS同步器已经有了一个大致的了解,从独占模式和共享模式来解析了AQS的两个基本方面,一个是同步状态的获取,另外一个是同步状态的释放,这是AQS最基本的特性,前面两节都是以阻塞的形式获取...原创 2019-05-22 10:52:38 · 188 阅读 · 0 评论