后端开发
包括java、spring等涉及到后端开发的文章
T_白日梦想家
这个作者很懒,什么都没留下…
展开
-
ThreadPoolExecutor 线程池 介绍
ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,long keepAliveTime, TimeUnit unit,BlockingQueue workQueue,RejectedExecutionHandler handler)参数介绍:corePoolSize: 线程池维护线程的最少数量maximum转载 2015-05-12 16:53:54 · 740 阅读 · 0 评论 -
mysql 命令行修改表字段名称
修改表中字段名称 alter table 表名 change 现有字段名称 修改后字段名称 数据类型例如:alter table em_day_data change f_day_house2 f_day_hour2 int(11) not nullalter table db_test change tb_name1 tb_name2 varchar(20)转载 2015-05-26 11:34:12 · 2024 阅读 · 0 评论 -
sql常见操作
1.增加字段 alter table docdsp add dspcodechar(200)2.删除字段 ALTER TABLE table_NAME DROP COLUMNcolumn_NAME3.修改字段类型 ALTER TABLE table_name ALTER COLUMNcolumn_name new_data_t转载 2015-06-09 16:22:54 · 550 阅读 · 0 评论 -
解决跨域访问问题
在java代码中添加:response.setHeader("Access-Control-Allow-Origin", "*"); 即可原创 2015-07-09 16:10:18 · 566 阅读 · 0 评论 -
springMVC 注解及配置文件详解
spring-servlet.xml 配置:<context:annotation-config /> <!-- 把标记了@Controller注解的类转换为bean --> <context:component-scan base-package="com.mvc.controller" /> <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -原创 2017-07-07 11:26:48 · 1401 阅读 · 1 评论 -
SpringJDBC 事务管理
Spring对事务的管理有丰富的支持,Spring提供了编程式配置事务和声明式配置事务:一种是使用Annotation注解的方式(官方推荐) 一种是基于Xml的方式采用任何一种方式我们都需要在我们的bean.xml中添加事务支持:<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/转载 2017-07-07 12:14:50 · 406 阅读 · 0 评论 -
SpringMVC 注解实现操作
一、SpringMVC基础入门,创建一个HelloWorld程序1.首先,导入SpringMVC需要的jar包。2.添加Web.xml配置文件中关于SpringMVC的配置<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherS转载 2017-07-07 15:39:42 · 452 阅读 · 0 评论 -
SpringMVC JSP与Freemarker视图解释器整合
Spring MVC中如果只使用JSP做视图,可以使用下面这段即可解决:<!-- 视图解释类 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property n原创 2017-07-10 10:23:21 · 774 阅读 · 0 评论 -
Java 线程池框架核心代码分析
多线程编程中,为每个任务分配一个线程是不现实的,线程创建的开销和资源消耗都是很高的。线程池应运而生,成为我们管理线程的利器。Java 通过Executor接口,提供了一种标准的方法将任务的提交过程和执行过程解耦开来,并用Runnable表示任务。下面,我们来分析一下 Java 线程池框架的实现ThreadPoolExecutor。生命周期ThreadPoolExecutor中,使用CAPACITY的原创 2017-07-10 10:40:50 · 458 阅读 · 0 评论 -
使用wrapper包装器对request进行处理
有时候我们需要在获取到request请求时对request中的请求信息做一些预处理,或者对URI等信息做一些处理之后,再交由下面的流程处理。这时候,我们可以通过Request Wrapper来对request进行操作。此处通过举例来描述如何通过RequestWrapper进行Request预处理例子1:使用wrapper时,需要新建一个类,并继承 HttpServletRequestWrapper原创 2017-07-10 10:50:30 · 5218 阅读 · 1 评论 -
java使用FileFilter筛选文件
我们创建了一个FileFilter类,此类根据文件名的扩展名是否为.txt来筛选文件。创建FileFilter实例之后需要将此实例作为参数传给File的listFiles(fileFilter)方法,此方法会返回符合条件文件的数组。public class FileUtil { public void myListFiles(String dir) { File directo原创 2017-07-10 14:36:23 · 7008 阅读 · 0 评论 -
JAVA实现远程执行SSH2主机的SHELL命令
/** * 利用JSch包实现远程主机SHELL命令执行 * @param ip 主机IP * @param user 主机登陆用户名 * @param psw 主机登陆密码 * @param port 主机ssh2登陆端口,如果取默认值,传-1 * @param privateKey 密钥文件路径 * @param passphrase 密钥的密码 */ publicstati原创 2017-07-14 11:23:15 · 1920 阅读 · 2 评论 -
java性能优化
尽量指定类、方法的final修饰符 Java编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大,具体参见Java运行期优化。此举能够使性能平均提高50%。尽量重用对象 比如String, 尽量使用Stringbuilder/StringBuffer尽量使用局部变量及时关闭流尽量减少对变量的重复计算for (int i = 0; i < list.size()原创 2017-07-15 18:02:21 · 305 阅读 · 0 评论 -
Servlet 3.0异步处理请求
一、servlet3.0异步请求相关方法startAsync(servletRequest, servletResponse)传入指定的request和response对象,便于在AsyncContext中重复使用(这样被Filter、Servlet包装过的请求、相应对象才会在异步的环境下继续生效)。startAsync()若request或者response被包装,将失去预期的效果。isAsync原创 2017-07-16 17:21:20 · 1862 阅读 · 0 评论 -
Mail Java实现邮件发送(带附件)
发送邮件代码:public void sendEmail(EmailData data) { if(data.getAttachmentList().size() <= 0) { logger.error("[EmailService] [sendEmail] attachment is empty!!"); return;原创 2017-07-16 17:25:15 · 819 阅读 · 0 评论 -
JPush极光推送服务器端API
jpush初始化:1、对android和ios设备发送JPushClient jpush = new JPushClient(masterSecret, appKey);2、对android和ios设备发送,同时指定离线消息保存时间JPushClient jpush = new JPushClient(masterSecret, appKey, timeToLive);3、指定某种设备发送JPush原创 2017-07-16 23:35:04 · 1489 阅读 · 0 评论 -
JPush极光推送 Errcode含义
public enum ErrorCodeEnum { //没有错误,发送成功 NOERROR(0), //系统内部错误 SystemError(10), //不支持GET请求 NotSupportGetMethod(1001), //缺少必须参数 MissingRequiredParameters(1002), //参数值不合法原创 2017-07-16 23:36:13 · 4502 阅读 · 1 评论 -
java性能优化
尽量指定类、方法的final修饰符 Java编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大,具体参见Java运行期优化。此举能够使性能平均提高50%。尽量重用对象 比如String, 尽量使用Stringbuilder/StringBuffer尽量使用局部变量及时关闭流尽量减少对变量的重复计算for (int i = 0; i < list.size()原创 2017-07-18 09:58:59 · 301 阅读 · 0 评论 -
整合Spring+SpringMVC+Hibernate配置信息
spring-servlet.xml该配置文件主要是Spring相关的配置<!-- 启用注解 --><mvc:annotation-driven /><context:annotation-config /><!-- 注解扫描包 --><context:component-scan base-package="com.slient.ssh.test"> <context:inclu原创 2017-07-18 11:28:23 · 1289 阅读 · 0 评论 -
Hessian的使用
Hessian是一种高效简洁的远程调用框架,它采用的是二进制RPC协议(Binary),具有轻量、传输量小、平台无关的特点,特别适合于目前网络带宽比较小的手机网络应用项目。Hessian类似于WebService,不过不使用SOAP协议,而是用Binary RPC协议,相比webservice而言更简单、快捷。它把协议报文封装到http封包中,通过HTTP信道传输。Hessian是通过servlet原创 2017-07-20 17:26:38 · 892 阅读 · 0 评论 -
Dubbo实际应用基本配置讲解
一、发展趋势随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。 单一应用架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。 此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。垂直应用架构当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相转载 2017-08-11 14:42:19 · 1111 阅读 · 0 评论 -
Linux下安装Dubbo自带的简易监控中心
1、下载dubbo监控中心tar包dubbo-monitor-simple-2.5.3.tar.gz2、解压tar包tar zxvf dubbo-monitor-simple-2.5.3.tar.gzcd dubbo-monitor-simple-2.5.33、进入dubbo.properties文件修改相关配置vi conf/dubbo.properties该文件主要修改 dubbo.regis原创 2017-08-11 14:59:25 · 676 阅读 · 0 评论 -
JVM 垃圾回收机制主要原理
对于垃圾JVM的垃圾回收机制这里我们称为GC,众所周知,java语言不需要像c++那样需要自己申请内存,自己释放内存,这些都是JVM帮我们做好了的,但是对于一名java程序员,想要更近自己的水平更上一层楼,就要去了解GC的工作原理,根据原理才能写出更好的更优的程序,这里我们先初步讲解一下GC的工作原理。一、GC的工作原理首先我们在讲解之前我们需要了解一下JVM内存运行时数据区的三个重要的地方 1.转载 2017-09-16 22:39:50 · 510 阅读 · 0 评论 -
Java中常用的查找算法 - 顺序查找和二分查找
一、顺序查找1、原理顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数据最后一位。2、图例说明原始数据:int[] a={4,6,2,8,1,9,0,3}; 要查找数字:8 3、代码import java.util.Scanner;public class SequelSearch { public static void main(String原创 2017-09-18 11:43:38 · 729 阅读 · 0 评论 -
Java常见排序算法
一、冒泡排序冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。/** * 冒泡法排序<br/> * <li>比较相邻的元素。如果第一个比第二个大,就交换他们两个。</li> * <原创 2017-09-18 13:58:15 · 712 阅读 · 0 评论 -
ArrayList和LinkedList的区别
一、简述ArrayList和Vector使用了数组的实现,可以认为ArrayList或者Vector封装了对内部数组的操作,比如向数组中添加,删除,插入新的元素或者数据的扩展和重定向。LinkedList使用了循环双向链表数据结构。与基于数组ArrayList相比,这是两种截然不同的实现技术,这也决定了它们将适用于完全不同的工作场景。LinkedList链表由一系列表项连接而成。一个表项总是包含3个原创 2017-09-18 14:45:20 · 605 阅读 · 0 评论 -
ConcurrentHashMap 并发分析
线程不安全的HashMap因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。final HashMap<String, String> map = new HashMap<String, String>(2);Thread t = new Thread(new Runnable() { @Override转载 2017-09-18 19:25:28 · 1690 阅读 · 0 评论 -
Java 反射及应用
Class反射机制指的是可以于运行时加载,探知和使用编译期间完全未知的类.程序在运行状态中, 可以动态加载一个只有名称的类, 对于任意一个已经加载的类,都能够知道这个类的所有属性和方法; 对于任意一个对象,都能调用他的任意一个方法和属性;加载完类之后, 在堆内存中会产生一个Class类型的对象(一个类只有一个Class对象), 这个对象包含了完整的类的结构信息,而且这个Class对象就像一面镜转载 2017-09-19 17:44:05 · 455 阅读 · 0 评论 -
使用Spring+Quartz实现定时任务
一、所需jar包1、若quartz-all.jar版本为2.x,则spring版本必须为3.1以上。2、若spring版本为3.0之前,则只需spring.jar、quartz-all-1.x.jar、jta.jar、commons-collections-3.1.jar3、若spring版本为3.0之后,且quartz-all.jar版本为1.x,则springjar文件需要以下jar包:spr原创 2017-07-07 15:55:41 · 1004 阅读 · 0 评论 -
zookeeper zkClient操作
一、创建会话public class createSession { public static void main(String[] args) { //zk集群的地址 String ZKServers = "192.168.30.164:2181,192.168.30.165:2181,192.168.30.166:2181";原创 2017-09-25 15:44:25 · 814 阅读 · 0 评论 -
Zookeeper windows 命令行操作
一、启动zookeeper1. 打开命令行窗口输入 cmd 打开命令行窗口2. 跳转到zookeeper目录3. 启动zookeeper输入 zkServer.cmd 点击回车启动 zookeeper4. zk客户端操作新开启一个命令行窗口,同样跳转到zookeeper/bin目录。执行zkCli -server 127.0.0.1:2181命令,连接成功,回车后即可输入zk命令操作。二、操作命令原创 2017-09-25 15:39:19 · 5776 阅读 · 0 评论 -
zookeeper zkClient使用
在使用ZooKeeper的Java客户端时,经常需要处理几个问题:重复注册watcher、session失效重连、异常处理。要解决上述的几个问题,可以自己解决,也可以采用第三方的java客户端来完成。这里就介绍一种常用的客户端zkclient,目前已经运用到了很多项目中,知名的有Dubbo、Kafka、Helix。zkClient的设计启动ZKClient启动时,指定好connection st原创 2017-09-25 15:54:01 · 1213 阅读 · 0 评论 -
SpringBoot + Thymeleaf 整合实例讲解
一、项目结构这个实例项目简单实现了SpringBoot + Thymeleaf的整合,通过访问URL,打开页面。二、代码讲解2.1 pom.xml<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-p原创 2017-11-14 17:33:54 · 1950 阅读 · 0 评论 -
SpringBoot 不同环境读取不同的配置信息文件
在实际开发中,本地开发、测试服务、正式服务的配置信息有的地方是不一样的;比如本地测试log级别可能是debug,而正式环境下则为info;再比如数据库的配置,正式环境下和测试环境下是不一样的。以前我们通过手动更改这些配置来完成测试到正式的转移,但这样做还是有一定的风险,如果手动配置错误,则会导致很多错误。Springboot给我们提供了一种方式,能够自动的切换正式环境配置及测试环境配置,下面就用一个原创 2017-11-14 11:00:01 · 13718 阅读 · 0 评论 -
SpringBoot 面向切面编程AOP
AOP全称Aspect Oriented Programming,面向切面,AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。其与设计模式完成的任务差不多,是提供另一种角度来思考程序的结构,来弥补面向对象编程的不足。原来在SpringMVC上使用AOP时是采用XML配置的方式,在SpringBoot中则是采用原创 2017-11-16 18:32:11 · 809 阅读 · 0 评论 -
SpringBoot 实现WebSocket进行消息发送(适用于SpringMVC)
Spring框架中自带了WebSocket的jar包,利用它可以实现与H5中WebSocket进行对接,实现交互。使用Spring WebSocket并不复杂,下面一起来看下怎么实现吧(注:本例子是通过SpringBoot构建的项目,除了项目的启动代码配置不一样外,WebSocket的配置代码可在SpringMVC上无缝使用)。这个例子会通过模拟登陆,在Session中保存用户信息,然后进行WebS原创 2017-11-20 19:44:40 · 6136 阅读 · 7 评论 -
SpringBoot 实现拦截器
拦截器在实际工作中使用比较广泛且相当重要,它的主要作用是拦截用户的请求并进行相应的处理。比如通过它来进行权限验证,或者是来判断用户是否登陆,等等。在SpringMVC中,我们可以通过XML配置文件来配置一个拦截器,操作起来也很简单。在SpringBoot中我们需要通过代码的形式来配置一个拦截器,同样操作起来也十分简单,下面我们一起来看一下吧。项目结构这是一个实现拦截器的小测试项目,包括以下几个文件:原创 2017-11-21 19:03:01 · 1369 阅读 · 0 评论 -
SpringBoot 实现Filter过滤器
SpringBoot实现过滤器和SpringMVC上实现没有多大差别,主要的差别就是在过滤器注册上,SpringMVC是通过XML配置文件注册过滤器,而SpringBoot则是通过代码注解的形式进行注册。下面一起看下在SpringBoot上怎么实现Filter过滤器吧。Filter过滤器具体实现类/** * 权限验证过滤器 */public class AuthFilter implement原创 2017-11-21 20:37:55 · 11091 阅读 · 1 评论 -
SpringBoot整合MyBatis开发
pom.xml配置<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId>原创 2018-02-27 17:32:40 · 5935 阅读 · 0 评论 -
通过XML、注解配置MyBatis SQL映射器
SpringBoot配置MyBatis在 SpringBoot整合MyBatis开发 这篇文章中已经描述了,这篇文章主要讲解一些SQL映射器中的写法及常用标签。定义xml映射文件<mapper namespace="com.test.springboot.mybatis.dao.UserMapper"> <resultMap id="AddressRes...原创 2018-02-27 19:14:03 · 950 阅读 · 0 评论