
J2EE核心框架生态
文章平均质量分 86
常耀斌
CTO,AI科学家。2024年,清华大学出版社发行《大数据架构之道和项目实战》《AI赋能企业数字化转型》《深度学习和大模型实战》
展开
-
Java架构师面试宝典(含答案)
双十一秒杀高可靠如何实现?Sentinel承接了阿里10年的促销场景,利用:流量控制(通过设置QPS来控制),容错(熔断就是切断坏路,让后续新流量再走这个坏路),降级(备选B角,走了try-cath的机制,),三板斧解决高可靠。熔断机制:通过滑动时间窗口实现的,对前一段时间的错误比例来设置熔断点。原创 2022-10-01 17:59:48 · 20901 阅读 · 1 评论 -
AI时代,数据工程师必备知识总结
包括Java/J2EE/Hadoop/机器学习/Spark/SpringCloud部分,共20题,每一题是5分。Mina的线程工作原理,如何在业务中使用?如何进行性能调优?答:参见https://blog.csdn.net/Peter_Changyb/article/details/82557080针对上百个设备的高并发数据上传,如何构建业务树代码框架实现迭代和递归数据包,实现高可扩展?答:参见https://blog.csdn.net/Peter_Changyb/article/details原创 2021-03-23 08:57:44 · 1408 阅读 · 0 评论 -
SpringBoot 实战系列之二:SpringBoot+Mybatis的多对多高级映射
背景说明:用一篇文章能实战说明,SpringBoot+Mybatis的多对多高级映射,因为涉及到太多的知识点,从如下的10步法,构建一个多对多的工程,具体关系如下:工程需求:查询订单信息,关联查询用户信息原创 2020-08-13 09:54:09 · 1181 阅读 · 0 评论 -
SpringBoot 实战系列之一:原理讲解
认识篇2014.4月1.0发布SpringBoot2018.3月2.0发布SpringBoot2019.3月2.2发布SpringBootSpring : MVC,JDBC,Security,AOP,IOC,ORM,SpringBoot: XML改注解SpringCloud: 分布式服务治理框架,通信熔断监控等微服务安装Maven,配置国内仓库入门篇认识pom.xml入口类:*Application自动配置:spring-boot-starter-web , @...原创 2020-08-11 11:55:44 · 581 阅读 · 0 评论 -
Mina上传文件的服务端实现
实现步骤: 1.建立一个无阻塞服务端socket 用nio NioSocketAcceptor acceptor = new NioSocketAcceptor(); 2.创建接收过滤器 也就是你要传送对象的类型 DefaultIoFilterChainBuilder chain = acceptor.getFilterChain(); 3.设...原创 2018-09-14 15:38:05 · 753 阅读 · 0 评论 -
SpringMVC和Mina集成的配置方法
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springfram原创 2018-07-27 22:05:46 · 1073 阅读 · 0 评论 -
SpringMVC集成ActiveMQ案例实战
导入jar包activemq-all-5.9.1.jar 在网上下载apache-activemq-5.10.0服务端到D:\apache-activemq-5.10.0下面。 在本地的系统中配置activemq的环境变量在系统变量中添加:变量名:ACTIVEMQ_HOME;变量值:D:\apache-activemq-5.10.0\apache-activemq-5.10.0 在系统变量...原创 2018-08-05 19:37:07 · 2894 阅读 · 0 评论 -
Eclipse中添加tomcat插件的方法
tomcat添加jvm参数:修改bin/catalina.sh,添加以下内容(定义了两个变量logpath和datapath)JAVA_OPTS="-Dlogpath =/opt/logs -Ddatapath=/opt/data"如果通过eclipse的tomcat插件启动tomcat,则上面方式不起作用,需要安装以下方式进行参数添加 ...原创 2018-08-09 09:10:47 · 1064 阅读 · 0 评论 -
Tomcat修改日志输出位置的方法
tomcat每次启动时,自动在logs目录下生产以下日志文件,且每天都会生成对应日期的一个文件,造成日志文件众多: localhost.2012-07-05.txt catalina.2012-07-05.txt manager.2012-07-05.txthost-manager.2012-07-05.txtcatalina.outTomcat以上...原创 2018-08-09 09:11:56 · 1549 阅读 · 1 评论 -
SpringMVC集成Restful实现文件上传案例实战
构建SpringMVC工程配置文件编写1)web.xml中添加代码,声明路径解析方式是*.json <servlet> <servlet-name>rest</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet&...原创 2018-08-09 09:33:20 · 1907 阅读 · 0 评论 -
在Linux打包成jar
很多情况下,我们需要将项目打包成jar,在服务器务器上通过命令调用执行或者定时调度。下面是具体过程:1) 将项目导出成jar仅仅java类,并没有相关依赖包2) 导出相关依赖包如果是maven项目,我们可以导出war之后,解压获取里面的相关依赖3) 将项目jar和依赖jar放入同一目录下这里是 /usr/java/lib4) 编写运行脚本(主要是将所需要的依赖设置到环境...原创 2018-08-09 09:34:17 · 4123 阅读 · 0 评论 -
给一个接口发送JSON字符串的实现方法
编写通用的发送方法: public static String executeGet(String url){ Log.info(url); HttpClient client = new HttpClient(); GetMethod getM = null; String responseString = ""; ...原创 2018-08-09 09:41:36 · 1991 阅读 · 0 评论 -
SpringMVC集成AngularJS架构设计
原创 2018-07-27 19:38:22 · 731 阅读 · 0 评论 -
Mina对粘包和断包的最详细源码解读
Mina对粘包和断包的处理mina对编解码的支持,在解码过程中,不得不面对的一个问题就是TCP的粘包和断包,先说下什么是粘包和断包。TCP通讯是面向数据流的通讯,我们将数据流理解为一支竹竿,数据包就相当于竹竿中的每一节,那么我们的解码过程就相当于对竹竿进行分解的过程。竹竿就是多个数据包的“粘包”,断包就是指竹节中间断开,我们需要将它拼接成为一个完整的竹节,如果不能拼接起来就要废弃这部分。...原创 2018-07-27 19:37:52 · 1179 阅读 · 0 评论 -
Shiro工作原理详解
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。三个核心组件:Subject, SecurityManager 和 Realms。具体说明如下:Subject:即“当前操作用户”。但是,在Shiro中,Subject这一概念并不...原创 2018-07-26 09:17:14 · 1441 阅读 · 1 评论 -
Maven工程构建方法详解
一、下一个maven安装包,https://maven.apache.org/二、解压三、改E:\tools\apache-maven-3.3.9\conf下的setting.xml1、改54行<localRepository>d:/maven/local/repo</localRepository>装jar包的路径2、改:<mirrors>...原创 2018-08-03 11:00:55 · 316 阅读 · 0 评论 -
Mina发送文件的客户端实现
实现步骤: 1.建立一个无阻塞服务端socket 用nio 2.创建接收过滤器 也就是你要传送对象的类型 3.设定 对象传输工厂 4.设定传输最大值 5.设定服务端消息处理器, 将线程放入线程池 当连接很多时候可以通过线程池处理 NioSocketConnector connector = new NioSocketConnector...原创 2018-09-14 15:37:31 · 932 阅读 · 0 评论 -
Restful接口接收数据案例
1.构建工程2. 实现FileuploadRestful类,继承Spring框架中的MultiActionController类,实现多文件接收package com.cloud.controller;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;i...原创 2018-09-14 15:47:49 · 3482 阅读 · 0 评论 -
Spring MVC执行的流程
对开发Spring MVC应用的过程进行总结。一、Spring MVC应用的开发步骤 下面简单介绍Spring MVC应用开发的步骤 1、在web.xml文件中定义前端控制器DispatcherServlet来拦截用户请求。由于Web应用是基于请求/相应架构的应用,所以不管哪个MVC Web框架,都需要在web.xml中配置该框架的核心Servlet或Filter,这样...原创 2018-09-20 10:14:16 · 222 阅读 · 0 评论 -
JdbcDaoImpl数据操作实现和案例
JdbcDaoImpl调用jdbcTemplate实现了高效率的数据操作,目前的主流C3P0和Mybatis都是封装了这个类。package com.cloud.storage.daoImpl;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import j...原创 2018-09-20 13:43:57 · 1066 阅读 · 0 评论 -
Java代码走查审查规范总结
按照我的经验,一般来说,从命名,注释,声明,语句/功能分布/规模,可靠性(总则/变量和语句/函数),可靠性(函数),代码警告,可读性,圈复杂度,SQL规范性和优化性能等如下方面审核:分类 重要性 检查项 具体要求 命名 重要 命名规则是否与所采用的规范保持一致? 成员变量,方法参数等需要使用首字母小写,其余单词...原创 2018-11-22 09:44:43 · 2842 阅读 · 0 评论 -
Java调用微信支付代码
核心需求:用户点击按钮,生成一个二维码,微信扫码之后支付成功。要调用微信的接口,首先你需要引入微信支付的jar包,如下:引入微信支付的jar包 <dependency> <groupId>com.github.wxpay</groupId> <artifactId>wxpay-s...原创 2019-03-15 16:43:59 · 3153 阅读 · 1 评论 -
C3P0数据库连接池实战及工具类
实现分三步,1.引入JAR包 c3p0-0.9.1.2.jar;2.引入XML文件 c3p0-config.xml放在resources下面即可;3.编写工具类,如下:package com.cloud.mina.util;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.Resul...原创 2018-08-09 09:46:35 · 814 阅读 · 1 评论 -
JSON常见工具类实战总结
package com.cloud.mina.util;import java.beans.IntrospectionException;import java.beans.Introspector;import java.beans.PropertyDescriptor;import java.util.Date;import java.util.List;import net....原创 2018-08-09 09:50:18 · 334 阅读 · 0 评论 -
文件下载工具类 DownLoadUtil 实战
package com.cloud.mina.util;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.OutputStream;import java.io.UnsupportedEncodingException;import javax.s...原创 2018-08-09 09:53:07 · 3773 阅读 · 0 评论 -
Maven与Eclipse集成的最详细讲解
Maven项目作为时下最火的项目管理工具,广泛的应用在大部分的项目开发中。利用它可以快速方便的完成项目的构建、测试、打包、发布等功能。其核心配置文件pom.xml主要描述了:开发者需要遵循的规则,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。Maven项目之间存在着三种关系:继承、依赖、聚合。下表是相关概念总结:Maven常用概念简介表 名称 ...原创 2018-08-15 09:45:49 · 7137 阅读 · 0 评论 -
主流消息中间件的技术优势对比分析
主流的消息中间件有Kafka、RabbitMQ、RocketMQ,我们来对比一下它们性能,Kafka是开源的分布式发布-订阅消息系统,归属于Apache顶级项目,主要特点是基于Pull模式来处理消息消费,追求高吞吐量,主要用于日志收集和传输。自从0.8版本开始支持复制,不支持事务,对消息的重复、丢失、错误没有严格要求,适合产生大量数据的互联网服务的数据收集业务;RabbitMQ是Erlan...原创 2018-08-16 09:47:24 · 1280 阅读 · 0 评论 -
Java开发AES 256算法时遇到 Illegal key size or default parameters的解决办法
应用中使用到了jdk的BASE64的AES加密,需要替换jdk的两个jar包参考:http://www.cnblogs.com/yaks/p/5608358.html 报错信息:Caused by: java.security.InvalidKeyException: Illegal key size or default parameters问题原因:Java几乎各种常用加密算法...原创 2018-08-22 14:24:44 · 320 阅读 · 0 评论 -
Elasticsearch全文本搜索和原理分析
Elasticsearch一个高可扩展的开源的全文本搜索和分析工具。允许你以近实时的方式快速存储、搜索、分析大容量的数据。Elasticsearch是一个基于ApacheLucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。ElasticSearch 有四种方式来构建数据库最简单的方法是使用indexAPI,将一...原创 2018-08-23 14:42:26 · 798 阅读 · 0 评论 -
Netty工作原理最详细分析
NIO通讯服务端步骤:1、创建ServerSocketChannel,为它配置非阻塞模式2、绑定监听,配置TCP参数,录入backlog大小等3、创建一个独立的IO线程,用于轮询多路复用器Selector4、创建Selector,将之前的ServerSocketChannel注册到Selector上,并设置监听标识位SelectionKey.ACCEPT5、启动IO线程,在循环体中执行S...原创 2018-09-03 10:11:06 · 15256 阅读 · 1 评论 -
C3P0操作Mysql数据库实战
构建java project工程引入jar包如上,一个是连接Mysql,一个是c3p0 编写配置文件c3p0-config.xml,特别注意: <property name="jdbcUrl"> <![CDATA[jdbc:mysql://localhost:3306/aggregate?useUnicode=true&ch...原创 2018-09-09 11:23:38 · 998 阅读 · 0 评论 -
对mina的商用化处理思路
Mina+Config(分布式配置)+Hystrix(线程隔离)+Eureka(服务注册和调用)+Zuul(权限控制)的架构:package com.cloud.mina.server;import java.io.IOException;import java.net.InetSocketAddress;import org.apache.log4j.Logger;impor...原创 2018-09-07 12:05:29 · 276 阅读 · 0 评论 -
多线程的数据发送和同步锁的案例实战
多线程的数据发送的代码,说明线程同步的先启动线程,标识是threadKey = appType + "_" + datatype + "_" + sendWay,如果已经有这个线程,就不再启动新的线程。 for (String sendWay : sendWayArray) { // 1.定义线程的唯一性 String threadKey = appType + "_" + ...原创 2018-09-09 11:43:32 · 375 阅读 · 0 评论 -
Mina的业务代码调优
工作原理参见https://blog.csdn.net/Peter_Changyb/article/details/81195604使用方法:Mina的业务实现流程:首先架构业务解码器树,然后将创建自定义解码器类进行解码。解码完毕后,调用自定义IoHandler类完成业务数据处理。调优方法:若30s无读写操作 则session进入空闲状态acceptor.getSessionConf...原创 2018-09-09 11:50:46 · 874 阅读 · 0 评论 -
实时监控进程process并启动的工具类
public static void monitor(String EXEName, String EXEPath) { String query_cmd = "wmic process get name"; // 查询当前运行的进程信息 String res = ""; BufferedReader bReader = null; ...原创 2018-08-13 14:33:05 · 755 阅读 · 0 评论 -
JDBCTemplate工具类实战(直接用)
使用JdbcTemplate需要的jar包,使用Spring的JDBCTemplate的时候先要把jar拿过来: JdbcTemplate工具类如下:import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMe...原创 2018-08-13 14:27:02 · 2568 阅读 · 0 评论 -
JavaBean对象和Map对象相互转换工具类
public class MapUtil { /** * 将一个 JavaBean 对象转化为一个 Map * @param bean 要转化的JavaBean 对象 * @return 转化出来的 Map 对象 * @throws IntrospectionException 如果分析类属性失败 * @throws IllegalAc...原创 2018-08-13 10:12:11 · 532 阅读 · 0 评论 -
SpringMVC集成Mongodb常用注解总结
@Document(collection=“”) 用于声明该类与mongodb库的collection进行映射,括号里的字符串参数即为collection名称,例如@Document(collection = "SportsData") @Id 用于声明该字段作为mongodb的主键 @Indexed 用于在mongodb数据库中给该字段建立索引 @RequestMapping(value...原创 2018-07-25 09:19:21 · 589 阅读 · 0 评论 -
Spring Maven 工程构建方法
<project xmlns="http://Maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://Maven.apache.org/POM/4.0.0 http://Maven.apache.org/xsd/Maven-...原创 2018-07-25 09:05:04 · 270 阅读 · 0 评论 -
Mina2.0框架技术详解
Mina是一个主要对基于TCP/IP、UDP/IP协议栈的主流网络通信应用框架,被支付宝等商用产品使用多年,可以帮助我们快速开发高性能、高扩展性的网络通信应用。Mina 提供了事件驱动、异步(Mina 的异步IO使用的是JAVA NIO 作为底层支持)操作的变成模型。它同时对网络通信的Server 端、Client 端的进行了封装,这样,开发者只需要关心数据的接受、发送以及业务处理即可。下面是其重...原创 2018-07-25 08:57:24 · 818 阅读 · 0 评论