
java相关
文章平均质量分 91
java
Deeeelete
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java中JMM内存模型与Volatile关键字
一:JMMJava Memory Model,简称JMM,即Java内存模型,但JMM不同于JVM有着堆栈这样详实的块区划分,JMM虽然叫模型,可本质上只是一种强调数据(通常指共享变量)读写的规范,是一种抽象的概念。那JMM这种规范是干什么的?这里就要提一个东西,那就是线程,线程是程序的经脉,而JMM则是跟线程息息相关的,倘若说没有JMM这种线程的约束规范,那线程里的变量就会被乱用乱丢,然后各种横七八竖的访问,内存里一片狼藉。因此,从程序执行效率的角度上来讲,JMM规范的存在是必要的。而这种规范展开来原创 2020-07-18 21:46:14 · 297 阅读 · 1 评论 -
java中ForkJoin并行执行任务
一:ForkJoin介绍ForkJoin的执行原理类似于分段求和,假如说我想求从1加到10的合,传统的方式是从1逐步向上增加,而ForkJoin就会把十个数拆分成不同的组,数字1和数字9一组,数字2和数字8一组,以此类推分成5组,也就是划分为了5个小任务,它们分别计算求和,最终再把结果相加得出。二:ForkJoin 的特点ForkJoin的特点叫做工作窃取,也是它之所以能够提升执行效率的主要原因,因为ForkJoin的底层是双端队列,而双端队列我们就可以形象的看做为一组等长的平行线,平行线左右两端原创 2020-07-15 21:46:00 · 384 阅读 · 0 评论 -
函数式接口与Stream流计算
一:函数型接口函数式接口泛指那些在有且仅有一个抽象方法的接口,其标志特点是源码中含有@FunctionalInterface注解。名称定位Function函数型接口Predicate断定型接口Consumer消费型接口Supplier供给型接口1.函数型接口(Function )Function<T, R>,T是一个传入的参数类型,R是一个返回的参数类型,函数式接口只有一个抽象方法,在这里是apply,apply方法有返回值,其类型是原创 2020-07-14 22:06:02 · 284 阅读 · 0 评论 -
Java多线程下ReadWriteLock(读写锁)的使用
声明读写锁:private ReadWriteLock lock = new ReentrantReadWriteLock();独占锁:lock.writeLock()共享锁:lock.readLock()一:无锁案例在自定义类NoLockTest中存在一个数据变量map,类中存在一个读方法get和写方法put,则在多线程情况下,数据操作会出现错误。 public class RW { public static void main(String[] args) { .原创 2020-06-26 22:16:49 · 315 阅读 · 0 评论 -
多线程下Callable相关实现
一:FutureTaskpublic class TestCall { //callable接口允许抛异常 public static void main(String[] args) throws ExecutionException, InterruptedException { TestCall2 testCall2 = new TestCall2(); /** * 因为Callable最终要去走Thread原创 2020-06-26 21:32:35 · 275 阅读 · 0 评论 -
多线程生产者与消费者模式的几种写法
在生产者与消费者关系中,存在着一个多线程操作同一个资源的情况,在这里我使用了int作为资源类型,而++操作不是线程安全的,因此会导致数据错误。而为了保证线程执行的有序性,急需要对方法进行加锁。一:使用synchronized锁//生产者与消费者public class ProductCustomer { public static void main(String[] args) { Data d =new Data(); new Thread(()-&g.原创 2020-06-22 19:15:19 · 224 阅读 · 0 评论 -
GC垃圾回收及其算法
常见的GC算法:复制标记清除标记整理(标记压缩)一:复制算法复制算法详情:已知在堆内存中存在新生代和老年代,其中新生代中又存在着伊甸区、幸存者0区、幸存者1区,每一次轻GC过后伊甸区的内存会被清空,仍然存活着的数据会被移交给幸存者区,当然幸存者区是双向流动的,也就是常见的form 和 to,to区默认是为空的一方,幸存者区的GC会将from区的内容移交给空的to区域,然后此时的to区域就会转换为from区域,以此类推,假如经过了15次(默认值)轻GC后对象仍然能够存活,那该数原创 2020-06-13 20:09:55 · 447 阅读 · 0 评论 -
Jprofiler分析OOM错误
一:安装Jprofilerhttps://www.jb51.net/softs/608640.html(下载教程第一步选择第二个Customize installation是自定义安装目录)二:IDEA安装Jprofiler插件或者是从网页下载本地安装:https://plugins.jetbrains.com/plugin/253-jprofiler/update/73677安装完成后重启IDEA,然后会在菜单栏上出现对应的jprofiler图标,但想要真正的投入使用还需要进行详细配置原创 2020-06-12 20:44:39 · 1157 阅读 · 0 评论 -
java栈堆
首先栈通俗的来讲就是面向java的,储存的多为基本数据将类型及其值,还有就是一些引用对象的变量,再者就是在堆中的引用地址。栈是先进后出的。就好比我们经常听到会有“压栈”这一说,那也就是说,栈好比一个木桶,底部是封闭的,一个java程序进入会先执行main方法,因此main会压进栈的最底层,当然也意味着main方法在最优先执行的同时也是最后一个结束,如果main方法在其子调用方法结束之前就被弹出了,那其子方法的调用的这个逻辑结构就崩塌了,因此程序也不会成立。当然,就像桶有自己的容量一样,栈的内存也不是原创 2020-06-12 18:17:26 · 261 阅读 · 0 评论 -
JVM与其结构方式
JVM,俗称java虚拟机,已知JRE为java文件提供运行时的必要环境,且JRE中包含了JVM,则JVM同为java文件运行时所必备的温床。Java虚拟机本质上就是一个程序,只不过其面向的对象被限定为了java文件,JVM带有VM二字,类比于VMWare,VMWare可以支持在同一台计算机上运行两个不同的系统,而实际上第二个系统是依赖于虚拟机存在的,可以与本机上的软件并行不悖,故JVM也可以做到与本机上的其他程序并行执行,同时又提供单方面的java运行环境服务。结构图:...原创 2020-06-10 19:25:55 · 233 阅读 · 0 评论 -
java动态代理
动态代理所执行的代理目的跟静态代理的代理目的相同的。但动态代理的代理类是动态生成的,而不是提前配备的。动态代理可以分为基于接口的动态和基于类的动态两种。Proxy:生成动态代理实例InvocationHandler:调用处理程序并返回结果接口://吃这一行为的接口public interface Eat { public void Eat();}真实对象://...原创 2020-05-07 22:07:55 · 188 阅读 · 0 评论 -
IDEA中使用lombok
lombok偷懒工具,功能是只用一条注解就能代替我们实现实体类中所有的无参构造、getset方法、toString、hashcode等方法。安装插件,在setting中搜索lombok安装第一个来到maven工厂搜索lombok引入一个版本的坐标<!-- https://mvnrepository.com/artifact/org.projectlombok/...原创 2020-05-03 12:39:55 · 369 阅读 · 0 评论 -
java多线程简要总结
线程的三种创建方式 线程的run方法和start方法的区别实现Runnable接口操作多线程线程不安全的案例实现Callable接口静态代理模式1.线程的三种创建方式:Thread class继承Thread类Runnable接口实现Runnable接口Callable接口实现Callable2.线程的run方法和start方法的区别:...原创 2020-05-01 19:26:25 · 266 阅读 · 0 评论 -
java反射获取泛型、注解信息
一:反射获取泛型信息泛型的参数信息:package Reflection;import java.lang.reflect.Method;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.util.List;import java.util.Map;//反射...原创 2020-04-29 17:24:43 · 612 阅读 · 0 评论 -
java通过反射获取类信息以及动态创建方法
获取类信息的方法:方法功能getName()获得类的名字(包名+类名)getSimpleName()获得类的简单名字(类名)getFields()获取类public属性getDeclaredFields()得到全部的类属性getField(String name)得到指定名称的类public属性getDeclaredField(Stri...原创 2020-04-29 13:01:58 · 762 阅读 · 0 评论 -
java类加载及其内存分析
java内存分析:类的加载过程:类的加载(Load) 类加载器完成将类的class文件读入内存并创建java.lang.Class对象操作。类的链接(Link) 将类的二进制数据合并进JRE,在合并的过程中可以对类进行校验,检查其是否存在安全问题,是否符合JVM语法规范,接着为类变量(static)分配内存和设置默认初始值,这些内存在方法区中进行分配。最后在虚拟机中将常量名替换为...原创 2020-04-28 21:15:48 · 1480 阅读 · 0 评论 -
Java反射机制
java本身是静态语言,但以为其本身存在着反射机制,所以也可以将java称之为“准动态语言”静态语言:指运行时结构不可变的语言,例如java、c动态语言:指运行时自身结构可变的语言,例如js、PHP、python...原创 2020-04-28 13:27:16 · 169 阅读 · 0 评论 -
Java中内置注解、元注解、自定义注解
一: 内置注解:@Override 重写的注解,十分常见@Deprecated 废弃类,被标注的元素一般是不推荐程序员使用的内容,当然,也可能是说比起该方法,java存在其他更优秀的选择常见的方法有Date,如果用Date实例出的对象去调用其相关方法的话就会看到方法中间存在斜线,点进去查看源码的时候就能发现上方存在@Deprecated注解,当然,不推荐使用不代表不可以使用源码:...原创 2020-04-27 20:16:53 · 272 阅读 · 0 评论 -
MyBatis中带有特殊字符的字段无法正常插入的问题
当然归根结底这不是MyBatis的问题而是SQL语句的问题,已知mybatis的逆向模型会自动把“aa-bb-cc”格式的字段整合成aaBbCc格式的变量,当然这种模式的变量仅适用于在java中传递或处理,等进入到xml中依然要用到原来的sql字段名,所以也必须要遵从sql的命名格式。默认的insert语句不会对原字段进行修饰,所以需要手动添加反引号,即键盘上方紧挨着1的符号。将 messa...原创 2020-04-17 09:54:27 · 3673 阅读 · 0 评论 -
Eclipse推git的时候出现向上的小箭头,且无法成功推送代码
今天重新向仓库里推项目的时候,还是像往常一样为了方便选择了commit and push,这种方式在之前是可行的,并且也没有出现向上的箭头,但是今天向仓库重新提交的时候出现了,且github上刷新也显示不了提交的代码,说明提交是失败的。网上搜索了一下说出现上箭头的原因是本地库有提交,但提交后的内容还没有被Push进远程仓库。而当我想要再次尝试用commit and push的时候却被告知本地不...原创 2020-04-11 17:27:45 · 4538 阅读 · 0 评论 -
javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in <forEach
详细:javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in <forEach> at org.apache.taglibs.standard.tag.common.core.ForEachSupport.toForEachIterator(ForEa...原创 2020-04-11 09:59:57 · 1162 阅读 · 0 评论 -
MyBatis循环遍历list
如果list中是对象:mapper(Dao层)下:int insertUser(@Param("list ") List<User> list);MyBatis.xml中:<insert id="addBatch" parameterType="java.util.List"> insert into role_sources (rsid, rsdis...原创 2020-04-08 20:14:39 · 7755 阅读 · 0 评论 -
Several ports (8005, 8080, 8009) required by Tomcat v8.5 Server at localhost are already in use
报错截图:解决:重启eclipse发现没用,然后打开cmd查看是否有应用占用了8080端口,命令是netstat -ano,不过我这边找了一圈发现并没有哪一个进程占用了端口。然后我尝试了一下访问我eclipse的项目路径,发现虽然eclipse提示我没办法开启tomcat,但浏览器照常访问到了页面。结合之前的情况,因为我的eclipse卡到白屏导致我强行关闭了一次,而eclipse因为卡住...原创 2020-04-07 12:22:59 · 728 阅读 · 0 评论 -
Eclipse中向github远程仓库推送代码
首先你要有github账号:https://github.com/然后你要有git工具:https://git-scm.com/downloads安装与配置可以参考其他大佬的博客:https://blog.youkuaiyun.com/huangqqdy/article/details/83032408?depth_1-utm_source=distribute.pc_relevant.none-task...原创 2020-04-06 12:21:36 · 348 阅读 · 0 评论 -
Eclipse中导出Maven为war包时失败
具体的错误因为错过了所以忘记截图了,等回头再弄的时候发现已经不会再报错了,简单翻译一下的话就是在控制台上提示java编译的版本不正确,提示我也许使用的是JRE而不是JDK.解决办法:回到pom.xml中查看properties中是否制定了maven编译所使用的jdk版本<properties> <maven.compiler.source>1.8</m...原创 2020-03-30 20:38:51 · 475 阅读 · 0 评论 -
Eclipse如何从自己的github仓库中导入Maven项目
1.右键import2.选择Git下的项目3.下一步选择克隆url4.然后去找项目,当然为了演示,这里我就拿之前上传好的项目来克隆,找到仓库页面,点绿色按钮克隆5.这里我选择了Http方式的url6.粘贴进eclipse,它自己会根据复制来的内容自动匹配相应信息,我们需要做的是填写账号密码继续前进7.选择一下自己eclipse的工作区8.等一下技能读条9.这里选择第...原创 2020-03-30 09:33:20 · 214 阅读 · 0 评论 -
逆向出的Mybatis.xml如何返回select count(*) from table的Integer数值
因为xml文件都是逆向工程生成出来的内容,所以惯性思维般的在xml中写下了这种错误的select语句 <select id="getCountNumber" resultMap="BaseResultMap"> select count(*) from blog_talk </select>然后发现返回的json没有任何东西然后回xml中查看一下,语句...原创 2020-03-27 14:11:08 · 1746 阅读 · 2 评论 -
JAVA报错The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone
报错截图:根据网上的资料,似乎需要修改一下项目中的.properties结尾的文件。原来内容:driver:com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/ssm?characterEncoding=utf-8username:rootpassword:root修改后内容:driver:com.mysql.jdbc.Dr...原创 2020-03-23 12:48:51 · 829 阅读 · 0 评论 -
Maven项目报错:Table 'xxxx.users' doesn't exist
今天用前台页面调用controller试图进行插入数据的时候报了500错误,提示我库里的users表不存在com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'prometion.users' doesn't exist sun.reflect.NativeConstructorAccessorImpl.newIn...原创 2020-03-17 09:29:50 · 5055 阅读 · 0 评论 -
Maven项目报错:No bean named 'xxxxxx' available
页面可以正常访问,但是一旦点击链接访问Controller层就会报服务器500错误,错误代码如下:Root Causeorg.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'conversionService' available org.springframework.beans.fa...原创 2020-03-16 20:36:28 · 3148 阅读 · 1 评论 -
@RequestMapping以及Springmvc的工作机制
什么是RequestMapping?那什么是映射?好了讲完了,散了吧散了吧…当然,注解本身我们是一看就会用的,至少把同样的代码多copy上几次也就能明白注解本身在程序里的作用了,但假如说自己在用文字描述@RequestMapping的确切功能的时候,又往往会这那的清理不出一条清晰的思路来,所以这里就来整理一下思路。想要搞清楚@RequestMapping的具体定位,首先要对spring...原创 2020-03-14 09:20:09 · 609 阅读 · 0 评论 -
IDEA中创建Maven项目
1.左上角File–New–Project,找到Maven项目2.ProjectSDK选中自己本地的java版本,我这里使用的是1.8,页面中只有一个能勾选的地方,这里要勾选上,然后是找以archetype-webapp为结尾的模板3.下一步填写项目名包名4.再下一步是找到你本地的maven路径,以及本地的xml文件,本地仓库的位置信息5.下一个是项目名和项目的储存路径,默认就好6...原创 2020-03-12 19:16:42 · 362 阅读 · 0 评论 -
Eclipse中Maven项目无端报错的几种解决办法
1.java版本不匹配导致的报错2.Maven包残缺或者短路3.Spring配置文件错误 4.Springmvc配置文件错误 1.java版本不匹配导致的报错解决:项目上右键properties,找到Maven下的project facets界面,查看右侧对应的java版本是否是自己的版本,有时候它这里会默认使用一个1.5版本,需要手动修改。当然,如果需要对maven项目都统一...原创 2020-03-11 09:09:58 · 1231 阅读 · 0 评论 -
Eclipse中Maven项目的建立
前提是本地已经配置好了Maven环境。1.如果本地Maven已经配置好,需要先在Eclipse中设置一下软件中最上方windows中找最后一项preferences然后找到左侧的Maven下的Installations,在这里添加本地maven的路径添加完记得应用,然后向下找User Settings选项,这里的前两个配置的是maven路径下conf内的setting.xml文件的路径,最...原创 2020-03-05 19:54:49 · 158 阅读 · 0 评论 -
Mybatis3.2.3使用方法
jar包:generator.xml文件:百度百科内容:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象...原创 2020-03-04 20:48:05 · 312 阅读 · 0 评论 -
Spring使用@Component进行入门级项目演示及原理讲解
在演示之前,首先得要一个IDEA,不过具体的安装这里就不再赘述了,网络上方法很多。1.操作演示2.思路整理one 操作演示部分1.在idea中新建项目,具体操作是左上角File->New->Project在出来的界面在最左侧找Maven项目,然后上方的jdk版本一定要跟自己本地安装的jdk版本匹配,最后才是点击next下一步然后是填写组名和项目next以后会让你选择存储...原创 2020-02-28 17:17:46 · 1281 阅读 · 0 评论 -
jdbc用PreparedStatement连接数据库
java中的PreparedStatement类似于php中的pdo,只不过实现方式不同,但事实上都是通过预处理或者编译的方法对数据库进行增删改查,也只有这样才能有效的防止sql注入的发生。增删改的代码:import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;imp...原创 2019-12-01 09:09:35 · 353 阅读 · 0 评论 -
java简单的jdbc连接mysql数据库代码
所需jar包:mysql-connector-java-5.1.47-bin增删改的常用代码:import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public ...原创 2019-11-30 18:02:27 · 296 阅读 · 0 评论 -
Tomcat目录结构介绍
结构脑图:在忽略文件下剩余的ico和exe等文件的情况下,tomcat总共有bin,conf,lib,logs,temp,webapps,work七个重要的文件夹。1.bin(即binary)翻译为二进制,二元的 如此,便意味着该文件夹下存储的大部分是二进制文件。 比如我们熟悉的startup.bat与shutdown.bat文件。当然,有的时候路径下也会出现两个显眼的exe文件,如...原创 2019-09-25 08:59:22 · 219 阅读 · 0 评论