Java
爱学习的小肥猪
这个作者很懒,什么都没留下…
展开
-
为什么我使用了索引,查询还是慢?
经常有同学问我,我的一个SQL语句使用了索引,为什么还是会进入到慢查询之中呢?今天我们就从这个问题开始来聊一聊索引和慢查询。另外插入一个题外话,个人认为团队要合理的使用ORM,可以参考 ORM的权衡和抉择。合理利用的是ORM在面向对象和写操作方面的优势,避免联合查询上可能产生的坑(当然如果你的Linq查询能力很强另当别论),因为ORM屏蔽了太多的DB底层的知识内容,对程序员不是件好事,对性能有...转载 2020-04-22 09:17:08 · 132 阅读 · 0 评论 -
GTS--分布式事务解决方案
GTS属于分布式事务中间件,是阿里的研发出来的,在微服务架构中分布式事务提供一站式解决方案GTS优势性能强GTS解决事务ACID特性与高性能、高可用、低侵略的问题。单事务分支平均响应在2ms,一般3个服务器组成集群足够支撑3w个TPS以上的分布式事务请求侵入性低GTS对业务侵入低,业务代码最少的情况下只需要添加注解一个@TxcTransaction 声明事务就得了事务与业务分离,将微服务从事务中...原创 2020-04-21 09:48:57 · 344 阅读 · 0 评论 -
从零手动实现 java json 序列化框架
从零手动实现 java json 序列化框架jsonjson是 java 实现的序列化 json 框架。特性 8 大基本类型支持 基本类型/对象数组/集合/枚举/对象 支持 极简的 API后续特性 @Field 注解的支持 反序列化对象的完整性支持,目前只支持基础的反序列化。为何创作解决 fastJson 中的不足FastJSON...原创 2020-04-21 09:42:38 · 115 阅读 · 0 评论 -
Java虚拟机内存划分
Java虚拟机在执行Java程序时,会把它管理的内存划分为若干个不同的数据区。这些区域有不同的特性,起不同的作用。它们有各自的创建时间,销毁时间。有的区域随着进程的启动而创建,随着进程结束而销毁,有的则始终贯穿虚拟机整个生命周期。Java虚拟机运行时内存区域主要分为七部分,分别是:程序计数器,Java虚拟机栈,本地方法栈,方法区,Java堆,运行时常量池,直接内存。如上图所示(图片来源...原创 2020-04-20 09:28:27 · 117 阅读 · 0 评论 -
Java 界最好的 API 网关 Soul
soul网关发布2.1.0版本 (做Java界最好的API-Gateway) 这是soul网关开源以来的最大的一次更新,收集了很多社区反馈的问题,进行了更新. 之前的文档不是很完善,使用成本较高,这里先说声抱歉,这一个版本中,同时更新了相关文档. ...原创 2020-04-14 09:15:45 · 620 阅读 · 0 评论 -
Java线程的六种状态及切换
Java中线程的状态分为6种:1. 初始(NEW):新创建了一个线程对象,但还没有调用start()方法。2. 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用权,此时处于就绪状态(...原创 2020-04-08 14:57:51 · 93 阅读 · 0 评论 -
+Cassandra创建数据
Cassandra 创建数据 使用Cqlsh创建数据 可以使用命令INSERT将数据插入到表中行的列中。下面给出了在表中创建数据的语法。 INSERT INTO <tablename> (<column1 name>, <column2 name>....) VALUES (<value1...原创 2020-04-08 14:56:07 · 245 阅读 · 0 评论 -
ThreadLocal源码解析
ThreadLocal类的作用:为每个线程创建独立的副本,从而保证了线程安全。ThreadLocal使用代码示例:[JavaScript]纯文本查看复制代码? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 1...原创 2020-04-08 14:54:53 · 107 阅读 · 1 评论 -
Java finally 与try中return的关系
inally是怎么执行的 网上关于这样的文章很多,这里主要讲的是try里return与finally的一些地方 try里的return 众所周知,try里有return肯定是要返回的,但是如果我们在finally里对try里return的返回值操作了结果会是怎么样的呢?这样好像有点抽象,有一个代码说明是这么一回事 [Java]纯文本查看复制代码 ...原创 2020-04-08 14:52:31 · 149 阅读 · 2 评论 -
谈谈ConcurrentHashMap是如何保证线程安全的
谈谈ConcurrentHashMap是如何保证线程安全的我们知道,ConcurrentHashmap(1.8)这个并发集合框架是线程安全的,当你看到源码的get操作时,会发现get操作全程是没有加任何锁的,这也是这篇博文讨论的问题——为什么它不需要加锁呢?ConcurrentHashMap的简介JDK1.8的实现降低锁的粒度,JDK1.7版本锁的粒度是基于Segment的,包含多个H...原创 2020-04-08 14:51:54 · 553 阅读 · 0 评论 -
Mac IntelliJ IDEA 200个快捷键,会用是高手!
Mac IntelliJ IDEA 200个快捷键,会用是高手!下面是Mac IntelliJ IDEA 快捷键大全!建议大家收藏一波,日后必定有用!Mac键盘符号和修饰键说明[HTML]纯文本查看复制代码? 01 02 03 04 05 06 07 08 09 10 1...原创 2020-04-08 14:48:52 · 114 阅读 · 0 评论 -
高并发下的接口幂等性解决方案!
高并发下的接口幂等性解决方案! 一、背景 ...原创 2020-04-08 14:43:31 · 359 阅读 · 0 评论 -
JdbcTemplate自定义映射器
(1)作用:结果集映射器BeanPropertyRowMapper的使用前提是数据库字段和对象属性一致,当不一致的时候,使用自定义映射器解决,将结果集转换成需要的对象(2)自定义映射器代码如下[Java]纯文本查看复制代码? 01 02 03 04 05 06 07 08 09 10 11...原创 2020-04-08 14:38:18 · 179 阅读 · 0 评论 -
Java 线程池 8 大拒绝策略,面试必问!
谈到java的线程池最熟悉的莫过于ExecutorService接口了,jdk1.5新增的java.util.concurrent包下的这个api,大大的简化了多线程代码的开发。而不论你用FixedThreadPool还是CachedThreadPool其背后实现都是ThreadPoolExecutor。ThreadPoolExecutor是一个典型的缓存池化设计的产物,因为池子有大小,当池子体积...原创 2020-04-08 14:34:50 · 142 阅读 · 0 评论 -
2020Java实习必看面试两百题解析 (下)
JVM 15Q1:类的加载机制是什么?答:类加载到内存中主要有5个阶段,分别为①加载:将Class文件读取到运行时数据区的方法区内,在堆中创建Class对象,并封装类在方法区的数据结构的过程。②验证:主要用于确保Class文件符合当前虚拟机的要求,保障虚拟机自身的安全,只有通过验证的Class文件才能被JVM加载。③准备:主要工作是在方法区中为类变量分配内存空间并设置类中变量的初始值。④解析:...原创 2020-04-07 14:23:44 · 993 阅读 · 0 评论 -
2020Java实习必看面试两百题解析(上)
基础语法 9 Q1:简单说说Java有哪些数据类型 答:①分为基本数据类型和引用数据类型。②基本数据类型包括:数值型(byte、short、int、long、float、double),字符型(char)以及布尔型(boolean)。除了基本类型外,其他数据类型都属于引用类型,包括类、接口、数组等。 Q2:float number=3.4;有没有问题?为...原创 2020-04-07 14:20:06 · 456 阅读 · 0 评论 -
手写一个RPC远程调用(基于netty、反射和代理)
首先呢,我们的这个项目是基于netty、动态代理、反射等知识实现的,如果童鞋们对这块内容还有不熟的地方,建议去先了解一下这些知识,再来看这篇文章,我觉得才有意义。项目结构:这里有三个module,先说common,它里面主要包含了我们的client和server共同的东西(一会细说),它是以依赖形式在我们的其他两个子项目中的pom.xml里的。server,里面包含了我们的一个服务器,具体的ser...原创 2020-04-07 14:15:28 · 145 阅读 · 0 评论 -
初识idea集成开发环境
初识idea集成开发环境(学习笔记) 1. 关于集成开发环境: eclipse、IntelliJ IDEA等。 其中目前主流的集成开发环境是:IntelliJ IDEA 2. IDEA工具的使用 弹出welcome窗口 点击create new project 注意:在IDEA当中一个project相当于e...原创 2020-04-07 14:13:37 · 820 阅读 · 0 评论 -
JPA和SpringDataJPA
什么是jpa JPA java persistence api ,为POJO(就是我们的JavaBean)提供持久化标准规范,JavaEE规范之一 主要思想,3个: 1 ORM(Object Relational Mapping)映射元数据,通过XML或注解,描述对象和表之间的关系,框架据此将实体对象持久化到数据库 ...原创 2020-04-03 10:09:15 · 273 阅读 · 0 评论 -
luke工具使用教程
使用本工具需要配置好JDK环境 1.双击start.bat启动 2.选择索引库路径 3.查看索引库信息 4.查看具体文档信息 5.搜索索引库原创 2020-04-03 10:04:40 · 2152 阅读 · 0 评论 -
servlet 解决中文乱码问题
声明:tomcat7默认iso8859-1编码,tomcat8默认就是utf-8编码,浏览器默认编码是 gbk页面编码一般我们都会写utf-8 request获取中文参数乱码: 页面是以utf8编码提交到服务器的,而服务器(Tomcat)内 部使用Iso-8859-1进行编码,所以当我们在servlet中获取request对象的中文参数时会乱码,解决...原创 2020-04-03 10:03:00 · 376 阅读 · 0 评论 -
Java的API及Object类
在以前的学习过程中,我们都在学习对象基本特征、对象的使用以及对象的关系。接下来我们开始使用对象做事情,那么在使用对象做事情之前,我们要学习一些API中提供的常用对象。首先在学习API中的Object类之前,先来学习如何使用API。1.1Java的APIJava的API(API:Application(应用)Programming(程序)Interface(接口))Java ...原创 2020-04-03 10:02:28 · 143 阅读 · 0 评论 -
栈的图文解析
栈的介绍栈(stack),是一种线性存储结构,它有以下几个特点:(01) 栈中数据是按照"后进先出(LIFO, Last In First Out)"方式进出栈的。(02) 向栈中添加/删除数据时,只能从栈顶进行操作。栈通常包括的三种操作:push、peek、pop。push -- 向栈中添加元素。peek -- 返回栈顶元素。pop-- 返回并删除栈顶元素的操作。1. ...原创 2020-04-03 10:00:45 · 453 阅读 · 0 评论 -
基数排序的java实现
基数排序介绍基数排序(Radix Sort)是桶排序的扩展,它的基本思想是:将整数按位数切割成不同的数字,然后按每个位数分别比较。具体做法是:将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。基数排序图文说明基数排序图文说明通过基数排序对数组{53, 3, 542,...原创 2020-04-03 10:00:04 · 197 阅读 · 0 评论 -
java中的各个数据结构区别
ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,LinkedList使用双向链表实现存储,按序号索引数...原创 2020-04-03 09:59:17 · 173 阅读 · 0 评论 -
I/O模型的相关术语
这里有必要先解释一下阻塞、非阻塞,同步、异步、I/O的概念。(1).阻塞和非阻塞: 阻塞和非阻塞指的是执行一个操作是等操作结束再返回,还是马上返回。比如你去车站接朋友,这是一个操作。可以有两种执行方式。第一种,你这人特实诚,老早就到了车站一直等到车来了接到朋友为止。第二种,你到了车站,问值班的那趟车来了没有,“还没有”,你出去逛一圈,可能过会回来再问。第一种就是阻塞方式,第二种则是非阻塞...原创 2020-04-03 09:58:46 · 139 阅读 · 0 评论 -
Java解析xml的4种经典方法
XML文件 <?xml version="1.0" encoding="GB2312"?> <RESULT> <VALUE> <NO>A1234</NO> <ADDR>四川省XX县XX镇XX路X段XX号</ADDR> </VALUE> <VALUE> <N...原创 2020-04-02 16:04:59 · 115 阅读 · 0 评论 -
Java mail 接收/删除邮件
import javax.mail.Store;import javax.mail.FetchProfile;import java.util.Properties;import javax.mail.Session;import javax.mail.Folder;import javax.mail.Message;import javax.mail.internet.Interne...原创 2020-04-02 15:57:00 · 539 阅读 · 0 评论 -
Java关键字final的使用方法
Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。 你可能出于两种理解而需要阻止改变:设计或效率。 可以修饰的对象: final 域 final 方法 final 类 final类不能被继承,没有子类,final类中的方法默认是final的。 ...原创 2020-04-02 15:55:12 · 102 阅读 · 0 评论 -
JAVA字体颜色背景颜色设置
import java.awt.*; import java.awt.event.*; public class love extends Frame { public static void main(String [] args) { lov...原创 2020-04-02 15:54:16 · 3041 阅读 · 0 评论 -
Java中获取MAC地址
通过调用dos命令实现获取 import java.io.*; public class Test { public static void main(String[] args) { try { Process process = Runtime.getRuntime().exec("ipconfig /all"); InputStreamReader ir ...原创 2020-04-02 15:53:40 · 730 阅读 · 0 评论 -
Java创建文件夹及文件
package com.xhkj.util; import java.io.File; import java.io.IOException; public class CreateFileUtil { public static boolean CreateFile(String...原创 2020-04-02 15:52:37 · 186 阅读 · 0 评论 -
JAVA String.format方法使用介绍
在JDK1.5中,String类增加了一个非常有用的静态函数format(String format, Objece... argues),可以将各类数据格式化为字符串并输出。其中format参数指定了输出的格式,是最复杂也是最难掌握的一点,而argues则是一系列等 待被格式化的对象。该函数对c语言中printf函数的用法进行了一定的模仿,因此有c语言基础的人学起来会轻松许多。下面我们着重讨论一...原创 2020-04-02 15:52:07 · 321 阅读 · 0 评论 -
Java中的super和this比较
package test; public class ThisTest { private int i=0; //第一个构造器:有一个int型形参 ThisTest(int i){ this.i=i+1;//此时this表示引用成员变量i,而非函数参数i System.out.println("Int constructor i——this.i: "+i+"——...原创 2020-04-02 15:51:33 · 111 阅读 · 0 评论 -
VMware虚拟机使用总结
项目阶段,学员对虚拟机的使用不熟练,希望这篇文章能对他们所有帮助。1.安装VMware软件,具体步骤请参考https://jingyan.baidu.com/article/9f7e7ec09da5906f281554d6.html2.虚拟机挂载 2.1首先检查VMware的所有服务是否都已经启动(1.“Win+R”打开命令窗口 2.在命令窗口中输入“services....原创 2020-04-01 11:37:23 · 3104 阅读 · 0 评论 -
Log4J.xml配置详解
Log4J.xml配置详解一、日志级别一般日志级别包括:ALL,DEBUG, INFO, WARN, ERROR,FATAL,OFF Log4J推荐使用:DEBUG, INFO, WARN, ERROR二、输出的个格式 Log4J最常用的日志输出格式为:org.apache.log4j.PatternLayOut,其主要参数为:%n - 换行 %m - 日志...原创 2020-04-01 11:36:52 · 740 阅读 · 0 评论 -
vue-cli 中使用rem
一、直接引入rem.js1,在src文件下面定义remConfig.js 文件 export default function() { var deviceWidth = document.documentElement.clientWidth; if(deviceWidth > 750) { devic...原创 2020-04-01 11:36:16 · 298 阅读 · 0 评论 -
单点登录
当用户第一次访问系统1的时候,因为还没有登录,会被引导到认证系统中进行登录,根据用户提供的登录信息,认证系统进行身份检验,如果通过检验,就会返回给用户一个凭据--ticket;然而当用户访问别的应用的时候,就会讲ticket带上,作为自己的认证凭据,应用系统接收到这个应用凭据之后会把ticket送到认证系统中进行检验,检查ticket的合法性。如果通过校验,那么用户就可以在不用再次登录的情况下访问...原创 2020-04-01 11:32:17 · 558 阅读 · 0 评论 -
vmware网络简单配置配置问题
vmware网络简单配置 1. 打开vmware----编辑----虚拟网络编辑器 ----- 查看VMnet8的的网段----- 点击VMnet8---- 最下面设置子网IP 网段按照自己的需求设置这里设置的是56设置完成确定即可 2. 打开安装好的lin...原创 2020-04-01 11:31:40 · 304 阅读 · 0 评论 -
减少图片以减小JAR文件大小
许多手机会因为JAR文件太大而无法运行MIDP应用程序,而减小JAR文件尺寸的有效方法之一是减少不必要的图片,例如,启动时的LOGO图片可以用文字来代替,列表项可以只显示文字而不显示图片。为了能适应不同配置的手机,我们的代码就应该编写得更加灵活。 例如,从JAR包中加载图片时:Image image = null; t...原创 2020-03-31 14:16:31 · 169 阅读 · 0 评论