技术文档
文章平均质量分 71
技术文档
编程爱好者熊浪
这个作者很懒,什么都没留下…
展开
-
几款主流 NoSql 数据库的对比
最近小组准备启动一个 node 开源项目,从前端亲和力、大数据下的IO性能、可扩展性几点入手挑选了 NoSql 数据库,但具体使用哪一款产品还需要做一次选型。我们最终把选项范围缩窄在HBase、Redis、MongoDB、Couchbase、LevelDB 五款较主流的数据库产品中,本文将主要对它们进行分析对比。鉴于缺乏项目中的实战经验沉淀,本文内容和观点主要还是从各平台资料搜罗汇总,也原创 2017-05-01 00:37:45 · 619 阅读 · 1 评论 -
JPA配置多数据源多persistence.xml文件
JPA的优势 1.JPA 是 JCP 组织发布的 Java EE 标准之一,因此任何符合 JPA 标准的框架都遵循同样的架构,提供相同的访问 API,这保证了基于JPA开发的企业应用能够经过少量的修改就能够在不同的JPA框架下运行。 2.JPA提供了对容器级特性的支持 JPA 框架中支持大数据集、事务、并发等容器级事务,这使得 JPA原创 2017-05-31 16:52:48 · 10930 阅读 · 1 评论 -
spring的事物管理
9.2.1 概述 Spring框架支持事务管理的核心是事务管理器抽象,对于不同的数据访问框架(如Hibernate)通过实现策略接口PlatformTransactionManager,从而能支持各种数据访问框架的事务管理,PlatformTransactionManager接口定义如下:java代码:查看复制到剪贴板打印pu原创 2017-06-01 10:02:07 · 386 阅读 · 1 评论 -
Spring AOP 实现原理
什么是AOPAOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定转载 2017-06-09 16:09:12 · 236 阅读 · 1 评论 -
二叉树的实现和递归遍历
package com.sunxl.test;import java.util.LinkedList;import java.util.List;import com.sun.star.packages.NoEncryptionException;/** * @author 熊浪 * @Email xiongl@sunline.cn * @Time 2017年6月9日 * @原创 2017-06-09 18:37:50 · 341 阅读 · 0 评论 -
怎么查看网页加载的时间
1、今天写项目,写了个静态页面,加载的很慢,不知道哪里出现了问题,不查数据库,怎么页面加载出来竟然需要10多秒,如果查下数据库,可能更慢,有人说是js和css加载的问题,但我需要加载的js和css都需要,那难道直接就不管了,之后想想,还是分析下它在什么地方耗时很长,之后通过谷歌的开发者模式查看每个文件的加载时间按下F5发现有多处加载异常的地方花费的时间很多,之后一一改正,页原创 2017-08-16 21:19:33 · 18840 阅读 · 0 评论 -
VisualVM安装插件报错
打开VisualVM,点击工具=》插件-》可用插件报错,说叫你检查代理设置或稍后重试。当前该服务器不可用。 您可能还需要确保防火墙不会阻塞网络通信。他没说错,就是你的插件路径不同,你可以先关闭防火墙,但还是一样的错,有503,连接超时等等,解决办法。 第一执行网址: https://visualvm.github.io/pluginscenters.html原创 2017-08-26 17:04:15 · 8134 阅读 · 9 评论 -
SpringMVC的九大组件完成的任务粗解。
Spring MVC中最最核心的类便是DispatcherServlet,所有的前端请求到来之后,都要经过它,并由它所初始化创建出来的九大组件分工参与处理。下面罗列出来这九大组件:一. HandlerMappingHandlerMapping是用来查找Handler的,Handler,也就是处理器,具体的表现形式可以是类也可以是方法。比如,标注了@RequestMapping的每个me原创 2017-10-02 18:12:03 · 1753 阅读 · 1 评论 -
查询kafka信息,并设置Kafka的偏移量Offset
查询某个kafka的消费者信息./kafka-consumer-groups.sh --bootstrap-server 10.0.0.198:9092 --list查询某个topic的分区情况./kafka-topics.sh --zookeeper 10.0.0.198:2181 --topic alikafka-topic_can_information_statistic...原创 2019-01-10 16:44:19 · 3550 阅读 · 1 评论 -
mave私服的搭建
第一步:下载安装nexus :https://www.sonatype.com/download-oss-sonatype第二步:配置settings文件,赋予用户deploy jar包的权限,也就是上传jar包的权限,如果没有上传jar包的权限可以不给用户密码。<server> <id>nexus-releases</id> ...原创 2019-01-19 16:57:20 · 255 阅读 · 0 评论 -
打包可运行的jar包
第一种插件配置方式:1、配置插件,mainClass是运行的main方法入口类。<build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> ...原创 2019-03-26 23:07:07 · 1234 阅读 · 1 评论 -
使用wsdl2java编写webservice客户端
1、安装apache-cxf插件,使用wsdl2java命令。https://blog.csdn.net/csdn_gia/article/details/548813691、获取wsdl文件,生成一个已wsdl为后缀名的文件2、cmd进入编辑环境,进入项目的项目的java文件夹下面3、运行wsdl命令,生成java文件wsdl2java -encoding utf-8 -p ...原创 2019-07-08 09:22:04 · 4361 阅读 · 0 评论 -
二叉树为什么前序和后序确定不了一棵树
排序规则:前序排序:根结点 ---> 左子树 ---> 右子树中序遍历:左子树---> 根结点 ---> 右子树后序遍历:左子树---> 右子树---> 根结点前序遍历和中序遍历可以确定跟节点,哪些属于根节点的左子树,哪些属于根节点的右子树;中序遍历和后序遍历可以确定跟节点,哪些属于根节点的左子树,哪些属于根节点的右子树;前序遍历和后序遍...原创 2019-09-28 10:38:49 · 3078 阅读 · 0 评论 -
JAVA Thread Dump 文件分析
JAVA Thread Dump文件分析转载 2022-07-14 17:16:37 · 2928 阅读 · 1 评论 -
FLV封装格式介绍及解析
FLV(Flash Video)是Adobe公司推出的一种流媒体格式,由于其封装后的音视频文件体积小、封装简单等特点,非常适合于互联网上使用。目前主流的视频网站基本都支持FLV。采用FLV格式封装的文件后缀为.flv。FLV封装格式是由一个文件头(flie header)和 文件体(file Body)组成。其中,FLV body由一对对的(Previous Tag Size字段 + tag)组成。Previous Tag Size字段排列在Tag之前,占用4个字节。转载 2023-08-03 15:50:04 · 197 阅读 · 0 评论 -
FTPClient文件上传下载
上传和下载使用不同权限的用户;1、上传下载工具类package com.suyun.utils;import org.apache.commons.net.ftp.FTP;import org.apache.commons.net.ftp.FTPClient;import org.apache.commons.net.ftp.FTPReply;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.spri.原创 2021-01-06 12:04:18 · 2367 阅读 · 1 评论 -
接口优化策略
用于定位问题所在。原创 2023-07-20 15:56:36 · 142 阅读 · 0 评论 -
JAVA位运算代码
10 + (-11) = 1111 0110 + 1111 0101 = 1(舍弃) 1110 1011 符号位从 1->1 不溢出。-101 + (-10) = 1001 1011 + 1111 0110 = 1(舍弃) 1001 0001 符号位从 1->1 不溢出。-101+(-102) = 1001 1011 + 1001 1010 = 1(舍弃) 0011 0101 符号位从 1->0 溢出。同样可以推测出,如果两个正数的补码(原码)相加,如果符号位变为1,则表示计算结果溢出,需要进位;原创 2023-07-20 14:54:56 · 266 阅读 · 0 评论 -
对象的回收算法
优点:容易理解缺点:不能回收 a.value=b;b.value=a这种循环应用。原创 2023-07-17 13:49:31 · 277 阅读 · 0 评论 -
JAVA堆外内存分析
1、定义了DirectByteBuffer的操作byte的都是申请了堆外内存,申请的堆外内存需要手动回收,重置最大可用堆外内存大小;2、堆外内存泄露并不会提现在JVM内存使用上,排查方式可以通过JConsole检测堆外内存是否一直增长,之后查询系统中使用了DirectByteBuffer的地方;原创 2023-07-10 14:41:27 · 4757 阅读 · 0 评论 -
JAVA线程池分析实现
RUNNING:运行状态SHUTDOWN:线程池关闭,不在接收新任务,但线程池队列中的任务还是会执行完成STOP:线程池停止,不接受新任务,且尝试终止线程池队列汇总的任务 TIDYING:线程池队列中所有的任务已经完成TERMINATED:线程池状态为终止。原创 2023-07-06 12:00:53 · 470 阅读 · 0 评论 -
Spring定时器调度实现的原理
BeanPostProcessor:会对所有Bean,一般是用@Component注解的Bean对象扫描。原创 2023-07-06 10:33:59 · 607 阅读 · 0 评论 -
Netty基本使用
1、使用Netty自带的解码器2.自定义序列化规则在 Java 中自带的有实现 Serializable 接口来实现序列化,但由于它性能、安全性等原因一般情况下是不会被使用到的。通常情况下,我们使用Protostuff、Hessian2、json 序列方式比较多,另外还有一些序列化性能非常好的序列化方式也是很好的选择: 专门针对Java 语言的:Kryo,FST 等等 跨语言的:Protostuff(基于 protobuf。转载 2023-07-03 18:42:48 · 1457 阅读 · 0 评论 -
Kafka详解
高可用:多副本机制高并发:网络架构设计 三层架构:多selector -> 多线程 -> 队列的设计(NIO)把数据先写入到OS Cache 写到磁盘上面是顺序写,性能很高,接近内存写读数据:根据稀疏索引,快速定位到要消费的数据,零拷贝机制,减少数据的拷贝,减少了应用程序与操作系统上下文切换KafkaManager — 页面管理工具没有设置key我们的消息就会被轮训的发送到不同的分区。设置了keykafka自带的分区器,会根据key计算出来一个hash值,这个hash值会对应某一个分区。转载 2023-07-03 15:20:05 · 239 阅读 · 0 评论 -
Redis过期策略
做法:对键设置过期时间时,同步设置一个定时器,当达到定时时间时间时,立即删除键;优点:省内存,立即删除,释放内存;缺点:CPU使用率高,容易造成系统卡顿;Redis并不推荐的方式;原创 2023-06-29 15:33:36 · 2264 阅读 · 0 评论 -
Mybatis是怎么生效的
三、Spring初始化MapperFactoryBean对象,它继承了SqlSessionDaoSupport,上面会把SqlSessionFactory对象注入进来,实现了FactoryBean接口的Bean,在注入对象的时候Spring是通过getObject()获取对象注入的,注入的并不一定是对象本身。实现里InitializingBean,在Bean初始化时,会调用afterPropertiesSet钩子方法。原创 2023-06-16 19:06:09 · 210 阅读 · 0 评论 -
Kafka消息丢失
kafka为了加快持久化消息的性能,把性能较好的follower组成一个ISR列表(in-sync replica),把性能较差的follower组成一个OSR列表(out-of-sync replica),ISR+OSR=AR(assigned repllicas)。如果还不成功怎么办?发送消息和消费消息都在leader上面,follower负责定时从leader上面拉取消息,只有follower从leader上面把这条消息拉取回来,才算生产者发送消息成功。我们只有获取到发送结果,才能确保消息发送成功。转载 2023-06-16 10:08:17 · 648 阅读 · 0 评论 -
short,int,long和byte[]数组之间的相互转化,包括大小端存储模式
byte[1] = 前面的8个bit(从右往左数 从第9个bit开始)存储的一个byte(低字节位)byte[0] = 前面的8个bit(从右往左数 从第9个bit开始)存储的一个byte(低字节位)(一)、把几个byte的bit跟0XFF(11111111)做&运算,变成2进制位;byte[0] = 后面的8个bit(从右往左数)存储的一个byte(高字节位)byte[1] = 后面的8个bit(从右往左数)存储的一个byte(高字节位)(三)、把所有的二进制位做或(|)运算,就获取了真正的二进制位;原创 2023-03-03 16:32:24 · 765 阅读 · 0 评论 -
分布式和Spring Cloud的区别
Spring Cloud用Eurake和Duboo,Spring Cloud用Nacos,都最主要就是要有注册中心作为服务治理功能,从这里可以延伸出,其实网关,断路器,负载均衡等等,这些工具其实就是它区别于分布式的地方,分布式只是一个最简单的远程通信调用API,Spring Cloud也是分布式,但它是能解决分布式项目中碰到一系列问题的一整套解决方案,所以也会说它比分布式更复杂。原创 2022-12-16 11:51:34 · 378 阅读 · 0 评论 -
Windows Nodejs多版本使用
但是一个项目需要使用node的版本为16.14.0,安装依赖的时候,就必须得使用这个版本的,使用这个版本的时候,依赖旧版本的项目启动的时候就报错了。然后我在想,是不是可以使用不同的node版本,当开发这个项目的时候,我使用这个node版本,当开发另一个项目的时候,我使用另一个node版本,从网上查找了一下,果然发现了解决办法,就是使用nvm去管理不同版本的node。不同的项目使用的node版本不一致,导致使用的时候,安装依赖的时候冲突了,从网上找了很多的方案,解决起来也挺费劲的;转载 2022-10-31 09:28:40 · 2302 阅读 · 0 评论 -
HTTP URL 字符转义 字符编码 、 RFC 3986编码规范
一、为什么要编码转义通常如果一样东西需要编码,说明这样东西并不适合传输。原因多种多样,如Size过大,包含隐私数据,对于Url来说,之所以要进行编码,是因为Url中有些字符会引起歧义。例如Url参数字符串中使用key=value键值对这样的形式来传参,键值对之间以&符号分隔,如/s?q=abc&ie=utf-8。如果你的value字符串中包含了=或者&,那么势必会造成接收Url的服务器解析错误,因此必须将引起歧义的&和=符号进行转义,也就是对其进行编码。又如,Ur转载 2021-05-06 09:03:50 · 1230 阅读 · 0 评论 -
对Mybatis的一点理解记录
public static void main(String[] args) throws IOException { /** * 相对src根路径 */ InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); ...原创 2020-04-29 17:02:33 · 151 阅读 · 0 评论 -
@Transactional 事务的传播和隔离
使用步骤:步骤一、在spring配置文件中引入<tx:>命名空间<beans xmlns=”http://www.springframework.org/schema/beans”xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”xmlns:tx=”http://www.springframework.org/...转载 2020-02-20 18:04:58 · 1026 阅读 · 0 评论 -
OpenFunction CLI: 5 分钟安装与上手云原生函数计算平台
转载路径:https://mp.weixin.qq.com/s/ol54q-QjyXBmd9BT3DgPmw转载 2022-04-28 11:11:47 · 186 阅读 · 0 评论 -
HTTP返回常见的错误码
HTTP常见错误 HTTP 错误 400 400 请求出错 由于语法格式有误,服务器无法理解此请求。不作修改,客户程序就无法重复此请求。 HTTP 错误 401 401.1 未授权:登录失败 此错误表明传输给服务器的证书与登录服务器所需的证书不匹配。 请与 Web 服务器的管理员联系,以确认您是否具有访问所请求资源的权限。 401.2 未授权:服务器的配置导致登录失败 此错误原创 2015-11-08 12:05:28 · 860 阅读 · 1 评论 -
动态代理的一点理解
代理的作用主要是某个方法在执行前后做一定的特殊处理;静态代理:package com.thinkgem.jeesite.proxy.handler;import com.thinkgem.jeesite.proxy.UserOneService;import com.thinkgem.jeesite.proxy.entity.User;import org.springframework.aop.framework.AopProxyUtils;import org.springframe原创 2020-08-11 14:55:59 · 277 阅读 · 0 评论 -
Java的三种输入输出流FileOutputStream、FileInputStream; FileWrite、FileReader;OutputStreamWrit、InputStreamRead
/****/package com.cloudsun.draw.util;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileReader;import java.io.FileWriter;imp原创 2016-03-08 19:12:15 · 1371 阅读 · 0 评论 -
对ClassLoader的一点理解记录
public class ClassLoaderTest extends ClassLoader { private String path; public ClassLoaderTest(String path) { this.path = path; } public String getPath() { return p...原创 2020-05-08 09:44:41 · 195 阅读 · 1 评论 -
简单理解2台主机数据通信过程
TCP/IP为例,TCP为数据传输协议,IP为网络通信协议,传输和通信协议共同构建了数据通信;1、主机发送数据包(数据,传输协议,域名,自己的子网IP,MAC地址,网关等);2、路由器包装(把IP换成对外的IP);3、DNS解析域名为具体的IP;4、通信商查找对应的IP是否存在(不存在,往上面查找(跨通信商,国家等));5、找到对应的服务器IP路由器;6、对应的路由器找到对应的主机(每个路由器都有它自己子服务器的路由表);7、根据端口找到对应的程序;8、根据传输协议开始建立连接,如:TCP的原创 2021-10-25 16:41:48 · 4427 阅读 · 0 评论 -
(译)关于使用Eclipse Memory Analyzer的10点小技巧
分析和理解应用的内存使用情况是开发过程中一项不小的挑战。一个微小的逻辑错误可能会导致监听器没法被释放回收,最终导致可怕的内存溢出问题。甚至有时你已经释放了所有空对象,但是你的应用却多消耗了十倍甚至百倍的内存导致效率很低。幸运的是,Eclipse Memory Analyzer(MAT)能给我提供应用的内存使用情况的详细信息帮助我们进行内存分析。这款工具不仅能有效的追踪内存泄漏,还能周期性的审查...转载 2018-10-10 17:38:06 · 1850 阅读 · 1 评论