- 博客(41)
- 资源 (1)
- 收藏
- 关注
原创 线程-线程安全(五)
一.原子性,可见性,有序性1.如何理解线程安全问题1:代码示例:运行中未打印子线程的结果如图代码运行,主线程会修改stop的值,但是子线程不会中断,因为stop值在主线程中进行了修改,对子线程不可见问题2: 原子性问题示例代码:这个incro()对应三个指令:结果不是: 1000问题3: 有序性问题二.java如何解决可见性有序问题1.JMM2.Synchronized的作用:范围:对象锁:synchronized(this)两个线程调用同一个对象的普通
2021-04-25 17:01:25
154
原创 线程-线程的基本操作和原理(四)
一. Thread.join的使用及原理1.代码:运行结果可能为1,也可能为4,原因: t1,t2,start后来年各个线程都处于就绪状态,cpu分配时间片给两个线程的机率是随机的,线程执行的优先级相等,所以可能先执行t1,也可能先执行t22.使用thread.join这样执行的结果就会始终为43.Thread.join的原理可见调用在主线程中调用子线程的join()方法会让主线程阻塞,直到该子线程运行完,主线程才被唤醒,继续运行。在上述代码中: t1.join()执行时,主线程就不会执行
2021-04-25 14:06:43
146
原创 线程-线程的生命周期(三)
1.线程从创建到销毁,一共经历6个状态,在实际中并不一定都会经历。2.图示3.示例代码:然后可以在日志中看到各种状态:
2021-04-25 11:08:11
131
原创 线程-线程在java中的创建方式(二)
1.java中使用分三类2.Thread2.Runnable3.Callble 带返回值其中future.get()会阻塞,直到有返回值才会执行
2021-04-25 10:51:40
73
原创 NIO-SocketChannel与SockerServerChannek(六)
之前第四篇都是磁盘上的NIO,接下来是网络上的NIO服务端:客户端:让客户端连接不断,加上System.in.read():服务端仍然是阻塞的,改进:此时的服务端是,连接非阻塞了,但是IO阻塞还没解决。客户端改进:...
2021-04-24 13:20:48
128
原创 NIO-缓冲区内部细节与零拷贝原理(五)
1.Buffer的本质capacity: 初始状态: 第一次读取数据:调用flip,将读转为写调用flip position置为0,limit重置为原来的位置2.零拷贝原理1): IO通信原理2)IO流程改进:代码(此时channel也可以在直接使用):...
2021-04-24 12:54:20
104
原创 NIO-5种IO模型(二)
1.阻塞模型:2.非阻塞IO3.IO复用,非阻塞虽然可以在数据未准备好的时候干其他事,但是也需要不断轮询去访问直到数据准备好,这样会带来系统资源不断消耗。IO复用则是一种改进4.mmap:5.异步IO...
2021-04-23 23:51:19
117
原创 NIO-阻塞与非阻塞(一)
通新机制:同步:异步:调用方发起请求处于的状态:阻塞: 客户在没有获得结果之前,什么都不能做非阻塞: 在获得结果之前可以做其他事
2021-04-23 23:32:57
94
原创 IO-网络IO(七)
1.socket主要分为服务端和客户端:案例1:客户端:服务端:案例二:服务端:上述需要加换行,不加则客户端还没读取完,io就关闭了客户端:Socket通信流程:2.协议分析:请求发送:3.网络io通信原理4.扩展: 上述案例二服务端只能处理处理一个连接,如果是多个,可以加一个while循环,表示可以按顺序处理多个连接,但是这样效率非常低下,加入有1000个同时连接,则可以想象时间耗时。方法中的accept表示阻塞等待。这也就是所说的BIOBIO:阻塞是阻塞acc
2021-04-23 14:22:36
103
原创 IO-对象流(六)
1.序列化与反序列化序列化演示:磁盘上user文件内容,变成了16的数据信息反序列化:序列化可以让一个对象的存活时间远远大于其在jvm中的存活时间。注意这里序列化的对象需要实现Serializable接口...
2021-04-23 13:39:30
77
原创 IO-缓冲流与字符流输入输出(五)
(一)缓冲流1.缓冲流概述:2.缓冲流是一个高级流,使用时需要套低级流。(将低级流传给高级流,在基本流的基础上增强功能)缓冲区默认是8kb演示:flush方法: 当写出的内容总大小小于缓存区大小时,不会触发写的io操作,可以加flush方法当然close方法也会触发:(二)字符流1.字节流问题当文本文件mic.txt中存在中文时,采用如下代码,则控制台会打印乱码,原因: utf-8编码中,中文占3个字节,英文占1个字节,下面是一个字节一个字节读取的。解决方式1: 一次读取多个字
2021-04-23 11:23:11
73
原创 IO-inputstream的read方法与基于内存的字节流输入输出(四)
1.流主要就是建立一个管道,让数据像水一样在里面有方向的流动,且水量的大小可以控制。演示:使用byte[] buffer时,定义每次读取3个字节,“hello world” 加上中间的空格一共是11个字节, 但实际读取会独12个, 3*4 ,结果就是 h e l l o w o r l d r ,多了一个r,先然不符合实际,所以讲读取的方法转为一下:...
2021-04-23 10:38:38
185
原创 IO-本地磁盘文件操作之File类与基于文件的字节流输入输出(三)
1.概述: File类是Java中为文件创建,删除,重命名,移动等操作设计的一个类,位于java.io包下2.File类的基本操作四个构造方法:使用:3.基于字节流操作文件(字节流可以操作图片,音频,文件等,不仅仅是文本),将磁盘上的一个图片读入并写出改进: 上述是读取的一个字节,加入有1000个字节,则需要和磁盘交互1000次,现在一次性读取多个字节,可以减少交互次数,这是一种优化。同样可以达到目的注意点: 流一定要关闭。原因: 不关闭流或造成相应读取的资源被一直占用。jdk1.7自动关
2021-04-23 10:12:10
189
原创 IO-IO流的数据来源及操作api(二)
硬盘,内存,键盘,网络1.从磁盘读取:2.从内存中读取定义的字符串str是在内存中的,将其转换为字节数组流3.键盘4.网络这个一般是指socket相关,后续会详细介绍
2021-04-23 09:39:30
107
原创 IO-Java中的IO体系(一)
1.概述: java中的I/O流操作的类很多,实际核心只有5个,File文件类,InputStream字节输入流(以内存为参照,从磁盘或网络中写入内存为输入,反之为输出),OutputStream字节输出流,Reader字符输入流,Writer字符输出流。2.分类特征: 其中字节流可以处理所有文件,范围更广,字符流只能处理文本。每种流大部分都是成对的有输出和输入。带stream的都是字节流,带reader或writer都是输出流。字节流: 操作的数据都是单元8位的字节,InputStream,Out
2021-04-23 09:31:50
107
原创 processon之删除文件
processon是一个绘制流程图,uml图等的在线网站,网址是https://www.processon.com/ ,对于有账号的普通用户来说,可以免费建立9个文件,提供协作,各种格式下载等,文件不够时,则需要删除文件。删除步骤1.找到文件点击删除2.进入回收站 再次删除才可正真删除。...
2021-01-28 10:20:39
1582
原创 flowable6.4.2流程图乱码问题之windows与linux
问题产生背景:最近甲方客户要求做一个流程执行显示图,在引入flowable后,也进行了各种相关配置恩,在windows开发环境下是没有问题的,包括流程图预览等。但是我把这个提到测试环境上测试,流程图就出现了乱码,全部是一个个的正方形小框。网上寻找lowable流程图乱码的解决方式,全部都是如下配置。。。。醉了。,其中最多的也就是加入如下配置:@Configurationpublic class FlowableConfig implements EngineConfigurationConfigur
2021-01-28 00:09:58
1973
1
原创 Flowable删表问题之table ‘activiti.act_ge_property‘ doesn‘t exist
1.问题产生的原因:由于自己采用的是mysql5.7版本且未做过多的配置,flowable自动生成的表全部是大写,个人不太习惯,就在把flowable在mysql中多对应的schema(数据库)中的表全部删除,然后在my.cfg(windows可能是my.ini)这些配置文件中加入限定表为小写的配置(在[mysqld]下加入lower_case_table_names=1,重启mysql服务)。 然后启动项目,结果出现问题:org.apache.ibatis.exceptions.Persistenc
2020-12-24 13:56:13
2659
1
原创 jvm学习 类的加载过程
一.类的加载,连接,初始化过程总共分为5大步1.加载2.连接(验证,准备,解析)3.初始化4.使用5.卸载加载: 通过类加载器(这个可以看做是一个工具),以类的全限定名(如: com.mycompany.test.MyTest MyTest是一个类,) 来获取MyTest的二进制文件(MyTest经过编译后生成的MyTest.class二进制文件)字节流。然后把这个流放入内存中。连接连接分为三个部分1) 验证1>验证二进制文件的格式是否符合Class文件格式的规范。2>
2020-06-05 13:31:34
117
原创 jvm学习 (二) jvm可视化工具
认识工具jconsole位于jdk bin目录下: 如图1.控制台可以直接输入启动:回车键该应用的实际jar包位于 jdk/lib/tools.jar2.点击本地连接,选择jconsole,进入简要补充: jvm一般分为5大内存区,对象在堆上产生。堆内存分为 ; eden survior01 survior02最开始对象从eden产生,所以这里演示eden区域内存变化。3.代码:package com.kdeng.practise.jvm.day02;import java.
2020-06-02 13:39:57
235
原创 jvm学习(一)初识与实践
jvm值得学习,目前周志明先生-大佬的《深入理解jvm》第三版 jdk1.8版本的 已出,这本书强烈推荐。1.jdk, jre和jvm的关系oracle官方jdk1.8的描述文档截图可见jdk(开发及运行环境)= jre+其他jre(运行环境)= java SE Api + jvm +其他所以jvm是jdk中jre的一部分目前要学习的部分就是 java virtual machine (jvm).2.环境准备:1)下载安装或使用解压版本jdk1.8,配置环境变量。2)下载安装ecli
2020-05-28 15:45:27
165
原创 mysql性能优化之基础数据类型优化(一)
本系列文章参考书籍《高性能MySQL》阿里java开发规范背景:初入java的殿堂已经一年多了,算是成为了一位初级开发工程师吧,然而成为中高级开发工程师甚至架构师,仍然需要不断的学习和进步才行。今年暂定目标是,性能优化,做阅读源码的准备,阅读部分spring源码,学习jvm并实践,对权限认证框架进行项目实践,分享学习和工作中的心得。基础数据类型优化:数据类型优化常用于建表之初一):1)尽量明确字段的数据类。比如: 日期,整数等要明确其数据类型,不能都赋予字符串类型。2)经常作为条件查询的字段尽
2020-05-27 12:17:29
137
原创 java-web应用之poi日期转换问题
**背景:**最近老是在做poi导入,导出相关的功能,期间遇到一个导入日期不能转换的问题。具体如下:需求: 将这个导入模板的数据导入到oracle数据库中。导入模板模板中的日期格式如图:可以看到,在表格中的日期格式是 yyyy年MM月这样的,二查看上述栏:发现是2016/6/1这种的。所以可以得出这个单元格是设置了日期格式的。调试过程:首先我是这样想的,使用poi进行解析然后将会获得的如2019年10月这样的字符串,然后进行截取转换为2019-10然后使用SimpleDateFormat类重新格式
2020-05-21 17:58:58
858
原创 模板引擎之thymeleaf-问题(1)
今天学习thymeleaf时碰到一个问题Error resolving template template might not exist or might not be accessible死活找不到templetes目录下的模板html文件,浏览器看不到页面首先1.排查 注解使用: controller中 返回视图时候不能在对应方法上加@ResponseBody 或在controlelr类上加@ResponseBody,以及不能在类上写@RestController完全正确2.配置文件中指
2020-05-13 00:59:31
284
原创 模板引擎之thymeleaf--常用标签使用(二)
接着上一篇继续讲:1.简单取值与el表达式测试在controller中封装一个值@Controllerpublic class ItemController { @RequestMapping("index") public String index(ModelMap modelMap){ modelMap.put("hello","hello themeleaf!"); return "index"; }}页面取值:输入一个普通标签时,在输
2020-05-12 21:07:47
340
原创 模板引擎之thymeleaf--简介与环境准备(一)
1.常见的模板引擎前端后端未分离时代:最流行的前端模板如下,常见的模板引擎分为:jsp(最常见,也是最普遍,旧的那种);beetl(国产的,听说性能效率也是最好的,远超其几个,官方是这样说的);thymeleaf(springboot官方支持的"亲儿子"),freemarker (暂时还没用过)其他:前后端分离就会上手vue这样类似的前端框架了。由于本次学习的主要目标是thymeleaf,所以会在接下来分享一些学习笔记2.themeleaf简介官方简介:Thymeleaf is a
2020-05-11 11:02:49
353
原创 oracle入门基础(3) 简单的sql及一些注意事项
步入正式的环节:说明: oracle中sql不区分大小写,包括登录的用户名,密码都是不区分的。0.mysql与oracle数据类型对比:其增删改查大多数都和mysql类似1.建表create table users( ID number(4) primary key, NAME varchar(10), SEX char(2), ADDR varchar2(20)...
2020-04-15 15:41:36
156
原创 oracle入门基础(2)sql developer
说明一下,这边使用的数据库连接工具是sql developer,以前使用的是navicat12 来连接的mysql,本来也想直接用它来连接oracel的,但是同事说navicat有一些缺陷比如数据显示等,所以最终使用sql developer而且这个是官方支持的,相当于其亲儿子吧,哈哈开始操作:...
2020-04-15 13:56:23
612
原创 oracle入门基础(1)数据库与数据库管理系统
说明: 文章部分内容来源于blibli 的动力节点视频教程。以下是一些个人体会和实践内容。数据库与数据库管理系统平时开发的时候,一些不是很专业的人员把mysq,oracle等都称作数据库,模糊了系统的概念,其更规范一些的称呼是:数据库管理系统,在数据库管理系统里面建立的数据的集合是才是数据库。以下是一些摘抄自网上的内容,个人感觉比较专业:1.数据库指的是一些数据的集合。2.数据库管理系统...
2020-04-15 10:33:46
275
原创 oracle之导入sql(大文件)
最近公司开始上手oracle数据库了,作为一个只会使用mysql的感到一丝窃喜,多会一些东西,以后的路也好走一些。废话不多说,开始填坑。数据库要求,导入一个文件 如图:sql.sql文件这折算下来150MB (158465/1024),本以为是一个小case。打开oracle sql developer ,1.直接点击导入 :重点来了: 没有为sql类型注册的读进程报错了,网上搜索...
2020-04-13 16:11:51
3505
原创 java高级基础之-泛型
Java泛型generics是JDK5中引入的一个新特性,泛型提供了编译时类型安全监测机制。该机制允许 我们在编译时监测到非法的数据结构 优势1.编译器检查 2.减少错误类型转换 本质:类型参数化最佳实践代码地址: https://gitee.com/dengdengkai/reflection_basis.git一.泛型类、接口一) 语法 class 类名<泛型标识 ,泛型标识...
2020-03-27 18:16:25
171
原创 Java基础/内部类
原地址:https://s2.uczzd.cn/webview/news?app=uc-iflow&aid=8050077437924933506&cid=100&zzd_from=uc-iflow&uc_param_str=dndsfrvesvntnwpfgic内部类分为四种:非静态内部类、静态内部类、匿名内部类、本地类。一、非静态内部类非静态内部类 Ba...
2020-03-27 17:56:48
304
原创 mysql函数之FIND_IN_SET()的应用
一.怎么说哪,这个函数比较好玩。重点是逗号听网上的人员说,这个函数是经过特殊优化的,比较快。现在简单的来说一下,这个函数怎么使用,此处分两种 方式讲解,看一下就会。原表:在这里插入图片描述1)select * from test_newest where FIND_IN_SET(str,"a,sc,cac")结果:此处时间说明:上述是,FIND_IN_SET(数据库表字段,以逗号分隔...
2020-03-27 16:09:56
159
java常用23中设计模式
2018-10-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人