java
文章平均质量分 66
wx: fulltilt8
这个作者很懒,什么都没留下…
展开
-
通过MySQL自动同步刷新Redis
服务端开发过程中,一般会使用MySQL等关系型数据库作为最终的存储引擎,Redis其实也可以作为一种键值对型的数据库,但在一些实际场景中,特别是关系型结构并不适合使用Redis直接作为数据库。这俩家伙简直可以用“男女搭配,干活不累”来形容,搭配起来使用才能事半功倍。本篇我们就这两者如何合理搭配以及他们之间数据如何进行同步展开。一般地,Redis可以用来作为MySQL的缓存层。为什么MySQL最好有缓存层呢?想象一下这样的场景:在一个多人在线的游戏里,排行榜、好友关系、队列等直接关系数据的情景下,如果直接原创 2021-06-08 12:46:12 · 408 阅读 · 0 评论 -
如何保持mysql和redis中数据的一致性?
学习了一下redis,了解了它的出现背景和基本用法,对于不轻易改变的数据,首次可以将其从mysql中取出存到redis中,以后只要判断redis有没有这个数据,有的话直接拿来用就行了。那么,如果在redis获取这个数据以后,我到mysql中更新了数据,那么redis中的数据不就和mysql不一致了吗?怎么让redis中的数据和mysql保持实时一致呢?这实际上是个“如果要做的足够精致是非常难的“问题。缓存失效被称为计算机科学里最难的两个问题之一(另外一个是起名字)。先对本题一致性做个说明...原创 2021-06-07 09:33:42 · 519 阅读 · 0 评论 -
Java 并发编程:核心理论
Java并发编程系列: Java 并发编程:核心理论 Java并发编程:Synchronized及其实现原理 Java并发编程:Synchronized底层优化(轻量级锁、偏向锁) Java 并发编程:线程间的协作(wait/notify/sleep/yield/join) Java 并发编程:volatile的使用及其原理 并发编程是Java程序员最重要的技能之一,也是最难掌握的一种技能。它要求编程者对计算机最底层的运作原理有深刻的理解,同时要...原创 2021-06-06 15:15:03 · 76 阅读 · 0 评论 -
List<String>与字符串互转,用逗号隔开
将逗号分隔的字符串转换为List List<String> list = Arrays.asList(str.split(",")); List<String> list = Arrays.asList(StringUtils.split(str, ","));将list转化为逗号分割的字符串 String str = String.join(",", list); String str = StringUtils.json(list...原创 2021-06-01 19:00:19 · 2521 阅读 · 1 评论 -
深入理解Java类加载
本文目的:深入理解Java类加载机制; 理解各个类加载器特别是线程上下文加载器;Java虚拟机类加载机制虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是虚拟机的类加载机制。在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的类加载的过程类的个生命周期如下图:为支持运行时绑定,解析过程在某些情况下可在初始化之后再开始,除解析过程外的其他加载过程必须按照如图顺序开...原创 2021-05-25 02:45:56 · 496 阅读 · 0 评论 -
tomcat中看启动时加载的类
在tomcat bin里面有个catalina.bat ifnot"%SECURITY_POLICY_FILE%"==""gotodoSecurity %_EXECJAVA%-verbose:class%JAVA_OPTS%%CATALINA_OPTS%%DEBUG_OPTS%-Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%"-classpath"%CLASSPATH%"-Dcatalina....原创 2021-05-25 02:36:58 · 818 阅读 · 0 评论 -
Class.forName()的作用与使用总结
1、Class类简介:Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识。这项信息纪录了每个对象所属的类。虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类是Class类。Class类封装一个对象和接口运行时的状态,当装载类时,Class类型的对象自动创建。Class 没有公共构造方法。Class 对象是在加载类时由Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的,因此不能显式地声明一个Class对...转载 2021-05-25 02:26:53 · 889 阅读 · 0 评论 -
Java中new和Class.forName的区别,Class.forName()和Class.forName().newInstance()之间有什么区别
首先:New = Class.forName("pacage.A").newInstance();new是关键字,直接创建对象。Class.forName()是一个方法,要求JVM查找并加载指定的类,类装载到虚拟机上之后,静态方法和静态块中的处理被执行。这时候还没有创建对象。newInstance()是创建对象。我们最常用的jdbc, 经常会用Class.forName来加载数据库驱动。jdbc接口中,会存在各种数据库的驱动,不在在接口中写死,一般都写在配置文件里,所以需要我们调用...原创 2021-05-25 01:20:51 · 237 阅读 · 0 评论 -
图示B树和B+树的原理和操作过程
1 B树在介绍B+树之前, 先简单的介绍一下B树,这两种数据结构既有相似之处,也有他们的区别,最后,我们也会对比一下这两种数据结构的区别。1.1 B树概念B树也称B-树,它是一颗多路平衡查找树。二叉树我想大家都不陌生,其实,B树和后面讲到的B+树也是从最简单的二叉树变换而来的,并没有什么神秘的地方,下面我们来看看B树的定义。 每个节点最多有m-1个关键字(可以存有的键值对)。 根节点最少可以只有1个关键字。 非根节点至少有m/2个关键字。 每个节点中的关...原创 2021-05-23 16:29:47 · 1903 阅读 · 0 评论 -
DelegatingFilterProxy的作用与用法
一、类结构 DelegatingFilterProxy类存在与spring-web包中,其作用就是一个filter的代理,用这个类的好处是可以通过spring容器来管理filter的生命周期,还有就是,可以通过spring注入的形式,来代理一个filter执行,如shiro,下面会说到;有上图我们可以看到,DelegatingFilterProxy类继承GenericFilterBean,间接实现了Filter这个接口,故而该类属于一个过滤器。那么就会有实现Filter中init、doFil...原创 2021-05-07 10:59:22 · 2343 阅读 · 2 评论 -
threadlocal内存泄露_内存泄露的原因找到了,罪魁祸首居然是Java TheadLocal
weixin_399553552020-11-21 09:28:0343收藏文章标签:threadlocal内存泄露组内来了一个实习生,看这小伙子春光满面、精神抖擞、头发微少,我心头一喜:绝对是个潜力股。于是我找经理申请亲自来带他,为了帮助小伙子快速成长,我给他分了一个需求,这不需求刚上线几天就出网上问题了 后台监控服务发现内存一直在缓慢上升,初步怀疑是内存泄露。把实习生的PR都找出来仔细review,果然发现问题了。由于公司内部代码是保密的,这里简单写一个demo还原场景(忽略...转载 2021-04-29 14:15:54 · 147 阅读 · 0 评论 -
SQL 存储过程里读取表内容 游标fetch的使用
DECLARE @Hid varchar(50), @Hname varchar(50)declare contact_cursor cursor for --声明游标select hotel_id,h_name from hotel where hotel_id<25open contact_cursor --打开游标fetch next from contact_cursor into @Hid,@Hname --游标指针下移一行while @@fetch_status=0...原创 2021-04-28 09:39:47 · 1492 阅读 · 0 评论 -
Java 中hashtable的例子分析原理(哈希原理)
package com.gwssi.test.cases;import java.math.BigInteger;//构建一个Hashtable类public class HashTable { //定义一个节点类,里面定义了每一个节点所需要的数据 public class Node { Node next;//指向下一节点 Object key;//键值 Object data;//数据域 //节点的构造函数.原创 2021-04-26 14:50:29 · 120 阅读 · 0 评论 -
i++ 和 ++i原理
i++ 即后加加,原理是:先自增,然后返回自增之前的值++i 即前加加,原理是:先自增,然后返回自增之后的值重点:这是一般人所不知道的,记住:不论是前++还是后++,都有个共同点是先自增例子:int a = 2;int b = a + (3 * ++a);System.out.println(b);//输出11int a = 2;int b = a + (3 * a++);System.out.println(b);//输出8...原创 2021-04-25 09:56:30 · 172 阅读 · 0 评论 -
MYSQL实现列拼接,即同一个字段,多条记录拼接成一条
MYSQL实现列拼接,即同一个字段,多条记录拼接成一条一、首先,新建三张表DROP TABLE IF EXISTS `article`;CREATE TABLE `article` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL COMMENT '标题', `content` text NOT NULL COMMENT '内容', PRIMARY KEY (`id..原创 2021-04-22 11:54:21 · 8924 阅读 · 0 评论 -
举例子简单易懂说明Java中取模和取余的区别
取余,遵循尽可能让商向0靠近的原则取模,遵循尽可能让商向负无穷靠近的原则符号相同时,两者不会冲突。比如,7/3=2.3,产生了两个商2和37=3*2+1或7=3*3+(-2)。因此,7rem3=1,7mod3=1。符号不同时,两者会产生冲突。比如,7/(-3)=-2.3,产生了两个商-2和-37=(-3)*(-2)+1或7=(-3)*(-3)+(-2)。因此,7rem(-3)=1,7mod(-3)=(-2)--------------------------------...原创 2021-04-22 10:27:10 · 288 阅读 · 0 评论 -
ThreadLocal的使用场景(在spring中的使用)
置顶 义臻 2016-08-11 14:11:32 2732 收藏 2分类专栏: Spring 应届生求职版权经历了几天的研究,终于是明白了ThreadLocal在Spring事务管理过程中发挥的用途。下面就以图文的形式和大家分享,如有错误,欢迎指正。大家都知道,Spring允许以声明的方式进行事务管理。通过声明的方式,程序员可以仅仅专注于业务代码,事务管理由Spring框架代为进行。以JDBC为例,正常的事务代码可能如下:dbc = new DataBaseConnection...转载 2021-04-21 02:15:13 · 1679 阅读 · 0 评论 -
Java负数的二进制补码表示这样计算
负数的二进制补码表示这样计算。1:先将负数中的负号去掉变成正数,使用二进制表示这个正数2:将这个二进制正数所有的位取反,再加1,结到的二进制序列就是这个负数的补码比如:-1,取其正值1,32位二进制表示为:00000000000000000000000000000001各位全部取反:11111111111111111111111111111110再加1:11111111111111111111111111111111因此-1的二进制补码表示为...原创 2021-04-19 18:20:29 · 949 阅读 · 0 评论 -
Java中「与运算,或运算,异或运算,取反运算。」
Java中「与运算,或运算,异或运算,取反运算。」版权声明一:本文为博主原创文章,转载请附上原文出处链接和本声明。版权声明二:本网站的所有作品会及时更新,欢迎大家阅读后发表评论,以利作品的完善。版权声明三:对不遵守本声明或其他违法、恶意使用本网内容者,保留追究其法律责任的权利。本文链接:https://segmentfault.com/writ...Java中的「与运算 & 」 规则 :都为1时才为1,否则为0即:两位同时为“1”,结果才为“1”,否则为0例如: pu原创 2021-04-19 17:47:21 · 767 阅读 · 0 评论 -
Log4j2的高性能分析
Log4j2的高性能分析log4j2之所以能在异步写日志时性能提高这么多,离不开优秀的mq组件Disruptor。目前使用该队列的知名软件包括但不限于Apache Storm、Camel、Log4j2。底层队列的实现对性能的影响是最大的。logback使用的是异步appender,log4j2使用的是disruptor。异步Appender的实现,内部内置了一个BlockingQueue队列,具体实现采用了ArrayBlockingQueue。而Disruptor则是使用了Ringbuffe原创 2021-04-17 11:23:38 · 301 阅读 · 0 评论 -
分布式应⽤知识CAP理论知识
讲解分布式核⼼知识CAP理论CAP定理: 指的是在⼀个分布式系统中,Consistency(⼀致性)、 Availability(可⽤性)、 Partition tolerance(分区容错性),三者不可同时获得。 ⼀致性(C):在分布式系统中的所有数据备份,在同⼀时刻是否同样的值。(所有节点在同⼀时间 的数据完全⼀致,越多节点,数据同步越耗时) 可⽤性(A):负载过⼤后,集群整体是否还能响应客户端的读写请求。(服务⼀直可⽤,⽽且是正 常响应时间) 分区容错性(P):分区..原创 2021-02-23 15:24:42 · 62 阅读 · 0 评论 -
Java设计模式中的状态模式的业务场景分析--电商系统订单状态
状态模式,听过的人可能不是很多,它不在我们熟知的 23 中设计模式之内。但它归属与行为型模式中的一种。今天我们一起来学习学习状态模式!在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。通常我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。状态模式最大的优点是:允许对象在内部状态发生改变时...原创 2020-04-10 19:48:12 · 2526 阅读 · 0 评论 -
基于Android的物流管理系统,服务端Java实现(系统运行图片在最下面)
该物流管理系统采用jsp+servlet、android和Ajax异步交互等技术来开发。数据库采用开源的mysql作为数据存储。结构上分为表现层、业务层和数据访问层。其中表现层采用MVC结构开发;业务层封装业务流程,为适应业务的变更,每一业务模块均有专门的接口及实现类,代码简洁且可适应不同的数据库。该系统严格按照软件开发流程:需求分析、页面设计、概要设计、详细设计、测试运行等。系统的实现...原创 2020-04-08 19:21:00 · 3730 阅读 · 0 评论 -
Java设计模式之桥接模式的业务场景
如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,通过桥接模式可以使它们在抽象层建立一个关联关系。 2、对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适我们还是通过上面的关于支付的简单例子可以说明它的原理。显然,它具备和模版方法相类似的能力,但是不采用继承。public class Payment{...原创 2020-04-08 15:15:36 · 433 阅读 · 0 评论 -
Failed to create a Maven project: '......../pom.xml' already exist
需要在此处手动加入添加模块名称原创 2020-01-10 16:09:42 · 249 阅读 · 0 评论 -
ThreadLocal原理和使用场景
ThreadLocal与线程成员变量还有区别,ThreadLocal该类提供了线程局部变量。这个局部变量与一般的成员变量不一样,ThreadLocal的变量在被多个线程使用时候,每个线程只能拿到该变量的一个副本,这是Java API中的描述,通过阅读API源码,发现并非副本,副本什么概念?克隆品? 或者是别的样子,太模糊。准确的说,应该是ThreadLocal类型的变量内部的...原创 2020-01-06 11:28:05 · 151 阅读 · 0 评论 -
对indexof的源码分析
public int indexOf(String str) { return indexOf(str, 0);}public int indexOf(String str, int fromIndex) { return indexOf(value, 0, value.length, str.value, 0, str.value.length, f...原创 2019-05-21 14:19:26 · 1031 阅读 · 0 评论 -
centOS7 环境安装和配置jdk1.8的环境变量
首先下载jdk1.8 去官网下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html解压到指定的目录 解压命令若后缀为.tar.gz,使用tar -xzvf filename //安装到当前目录下tar -zxvf filename -C /us...原创 2019-06-05 15:17:11 · 256 阅读 · 0 评论 -
基于ssm的婚恋网站的设计与实现(寻爱网)(包含后台管理系统)
源码下载csdn地址:https://download.csdn.net/download/u014191624/11218848没有积分的联系我,我发给你开发平台:Eclipse+jdk8有什么不懂得随时问我吧,大家一起交流开发架构:springmvc+mybatis+spring开发数据库:mysqlweb容器:tomcat8管理工具:maven项目结构:...原创 2019-05-31 15:34:33 · 2478 阅读 · 18 评论 -
apche Shiro的原理分析
本篇内容大多总结自张开涛的《跟我学Shiro》原文地址:http://jinnianshilongnian.iteye.com/blog/2018936我并没有全部看完,只是选择了一部分对我来说急需在项目中使用的知识加以学习。并且对于大多数第一次接触Shiro的同学来说,掌握这些也应该足够了。一、架构要学习如何使用Shiro必须先从它的架构谈起,作为一款安全框架Shiro的设计相...原创 2019-06-04 10:17:59 · 123 阅读 · 0 评论 -
深入理解Docker容器和镜像
【编者的话】本文用图文并茂的方式介绍了容器、镜像的区别和Docker每个命令后面的技术细节,能够很好的帮助读者深入理解Docker。如果你想和我或者更多Docker专家交流,可以加我微信453465325这篇文章希望能够帮助读者深入理解Docker的命令,还有容器(container)和镜像(image)之间的区别,并深入探讨容器和运行中的容器之间的区别。当我对Docker技术还...原创 2019-06-04 15:36:08 · 103 阅读 · 0 评论 -
centos7使用Docker的详细教程
一、Docker是什么? 产生背景:开发和运维之间因为环境不同和导致的矛盾(不同的操作系统、软件环境、应用配置等)DevOps 代码、系统、环境、配置等封装成镜像Image--->运维; 集群的环境下每台服务器都要配置相同的环境; 解决“在我的机器是哪个可以正常工作”的问题; Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个...原创 2019-06-04 16:59:40 · 9085 阅读 · 0 评论 -
java的List Object 转换成List String
List<Object>不能直接转成List<String> ,只能这样转换:List<String> strs = (List<String>)(List)objList原创 2019-06-17 10:16:53 · 34789 阅读 · 5 评论 -
Spring Security 默认的过滤器链
别名 类名称 Namespace Element or Attribute CHANNEL_FILTER ChannelProcessingFilter http/intercept-url@requires-channel SECURITY_CONTEXT_FILTER SecurityContextPersistenceFilter http...原创 2019-06-26 11:40:47 · 745 阅读 · 0 评论 -
数据结构--时间复杂度的算法
前前言what is O?:"O"是数学符号,它的严格定义是"若T(n)和f(n)是定义在正整数集合上的两个函数,则T(n)=O(f(n))表示存在正的常数C和n0 ,使得当n≥n0时都满足0≤T(n)≤C?f(n)。"用容易理解的话说就是这两个函数当整型自变量n趋向于无穷大时,两者的比值是一个不等于0的常数。前言算法很重要,但是一般情况下做移动开发并不经常用到,所以很...原创 2019-06-24 17:43:46 · 1492 阅读 · 0 评论 -
Java线程池之---ForkJoinPool线程池的使用以及原理
所属专栏:YourBatman的乌托邦版权声明: https://blog.csdn.net/f641385712/article/details/83749798相关阅读【小家java】java5新特性(简述十大新特性) 重要一跃【小家java】java6新特性(简述十大新特性) 鸡肋升级【小家java】java7新特性(简述八大新特性) 不温不火【小家java】java8...转载 2019-07-10 09:40:53 · 1048 阅读 · 0 评论 -
Java动态代理的业务场景分析和原理分析
动态代理看起来好像是个什么高大上的名词,但其实并没有那么复杂,直接从字面就很容易理解。动态地代理,可以猜测一下它的含义,在运行时动态地对某些东西代理,代理它做了其他事情。先不去搞清楚这个动态代理真正的含义,我们来举个生动的例子来理解下它到底做了什么。一个例子一个程序员Developer,他会开发code,他调试debug。程序员有很多分类,其中有Java程序员J...原创 2019-07-01 10:03:37 · 428 阅读 · 0 评论 -
比较jdk7,jdk1.8下的ConcurrentHashMap源码分析
1、ConcurrentHashMap跟HashMap,HashTable的对比2、ConcurrentHashMap原理概览3、ConcurrentHashMap几个重要概念4、ConcurrentHashMap几个重要方法5、ConcurrentHashMap的初始化6、ConcurrentHashMap的put操作详解7、ConcurrentHashMap的扩容...原创 2019-03-19 17:22:13 · 510 阅读 · 2 评论