- 博客(170)
- 收藏
- 关注
原创 java锁相关
自旋锁:为了不放弃CPU执行事件,循环的使用ACS技术对数据尝试进行更新,直至成功。悲观锁:假定会发生并发冲突,同步所有对数据的相关操作,从读数据就开始上锁。乐观锁:假定没有冲突,在修改数据时如果发现数据和之前获取的不一致,则读最新数据,修改为最新后重新修改数据。独享锁(写):给资源加上写锁,线程可以修改资源,其他线程不能再加锁。(单个线程写)共享锁(读):给资源加上读锁后只能读不能改,其他线程也只能加读锁,不能加写锁;(多读)。可重入锁、不可重入锁:线程拿到一把锁之后,可以自由进入同.
2022-03-11 13:59:38
502
原创 java基础-线程池应用及实现原理
1、线程池原理1.1、为什么要用线程池线程是不是越多越好?①线程在java中是一个对象,更是操作系统的资源,线程的创建、销毁需要时间。如果创建时间+销毁时间>执行任务的时间。就很不划算。②java对象占用堆内存,操作系统线程占用系统内存,根据jvm规范,一个线程默认最大栈大小1M,这个栈空间是需要从系统内存中分配的。线程过多,会消耗很多的内存。③操作系统需要频繁切换线程上下文(大家都想被运行),影响性能。线程池的推出,就是为了方便的控制线程的数量。2、线程池原理-概念
2022-01-04 16:45:43
328
原创 java基础-线程封闭
封闭对应的是开放,所谓线程开放就是类似共享数据、共享变量这些概念。多线程访问共享可变数据时,涉及到线程间数据同步问题。并不是所有时候,都要用到共享数据,所以线程封闭的概念就提出来了。线程封闭的概念数据都封闭在各自的线程之中,就不需要同步了。这种通过将数据封闭在线程中而避免使用同步的技术称为线程封闭。线程封闭的具体体现:ThreadLocal、局部变量。ThreadLocalThreadLocal是java里一种特殊的变量。它是一个线程级别变量,每个线程都有一个Thre..
2021-12-31 11:54:31
192
原创 java基础-线程通信
1、通信的方式:要想实现多个线程之间的协同,如:线程的执行顺序、获取某个线程的执行结果等。涉及到线程之间的通信,分为下面四类:①文件共享②网络共享③共享变量④JDK提供的线程协调API:suspend/resume、wait/notify、park/unpark1.1文件共享线程1写数据到文件里,线程2读取文件中的数据内容,实现数据的交换代码示例:import java.nio.file.Files;import java.nio.file.Pat..
2021-12-30 18:20:00
1289
原创 java基础-内存屏障和CPU缓存
1、CPU性能优化-缓存为了提高程序的运行性能,现代CPU在很多方面对程序进行了优化。例如,高速缓存。尽可能的避免处理器访问主内存的时间开销,处理器大多会利用缓存来提高性能。访问速度:cup处理器的缓存>内存>硬盘2、CPU的三级缓存L1Cache(一级缓存)是CPU第一级高级缓存,分为数据缓存和指令缓存。一般服务器CPU的L1缓存容量通常在32-4096KB.L2由于L1级高速缓存的容量限制,为了再次提高CPU的运算速度,在CPU外部放置一高速存储器,即二级缓存。.
2021-12-29 16:27:04
521
原创 java基础—线程中止
不正确的线程终止-StopStop:终止线程。并且清除监控器锁信息,但是可能导致线程安全问题,JDK不建议用。Destroy:JDK并未实现该方法。
2021-12-28 11:50:16
540
原创 java基础-线程状态
目录1、线程的六种状态定义:2、线程的六种状态之间的切换流程图:1、线程的六种状态定义①New(新建状态):尚未启动的线程的线程状态。(通俗的说就是我们写了一个线程,还未调用start方法去启动这个线程)②Runnable(可运行状态):可运行线程的线程状态,等待CUP调度。(通俗讲就是,线程调用了start方法之后进入该状态)。Runnable状态分两种:1、CPU正在执行这个线程;2、CPU随时可以调度执行该线程的状态③Blocked(阻...
2021-12-24 16:46:15
778
原创 java基础-java运行原理
Class文件内容:class文件包含JAVA程序执行的字节码,数据按照格式紧凑排列在class文件中的二进制流,中间没有任何分割符;文件开头有一个0xcafebabe(16进制)特殊的标志上图展示16进制的class文件内容这个文件有着复杂的格式,专门给JVM读取里面的内容,人阅读需要借助工具查看。内容包含:版本、访问标志、常量池、当前类、超级类、接口、字段、方法、属性。JVM运行时数据区:线程独占:每个线程都会有它的独立空间,随线程生命周期而创建和销毁。...
2021-12-24 01:49:30
990
原创 java高级工程师学习之路 -目录
1、高性能编程2、中间件3、容器化技术4、分布式系统5、后端项目实战6、商业化7、项目分享1、高性能编程2、中间件3、容器化技术4、分布式系统5、后端项目实战6、商业化7、项目分享...
2021-12-22 22:25:56
477
1
原创 序列化与反序列化
1、序列化的意义:①如何远程传输对象(java对象)?②序列化带来的性能如何优化?什么是序列化与反序列化?java允许在内存中创建可复用的java对象,但是只有jvm运行的时候,这个对象才存在。jvm停了,内存中的对象也没了。序列化:把对象的状态信息转换为可存储、可传输的可视化数据。反序列化:把可存储、可传输的可视化数据转换为java对象序列化的作用:1、服务器与服务器之前传输对象:ServerA序列化对象 远程通信传给ServerB,ServerB反序列化成对..
2021-12-22 22:03:37
806
原创 使用ajax将js对象数组传给java后台服务器
前端页面js写法: var objectArray=[]; for(var i=0;i<3;i++) { var data = { examineeId: 1, workTypeId: 2, classIdArray: 3 }; objectArra
2020-11-30 18:02:49
961
原创 微信小程序引入原生组件——WeUI组件库,详细步骤
第一步:查看是否可使用npm命令,没有则安装:我这里已经安装了,如果没有则安装node.jsnode官网下载地址:https://nodejs.org/en/注意这个windows 64位的:其他系统看这里:点击dowloads先点击LTS,下面可选 32位或者64位的下载好安装包,一路next即可。终端输入 npm -v ,看见版本号 即安装成功第二步:微信开发工具,打开微信小程序项目,没有就新建一个:这里我就新建一个 小程序项目:...
2020-08-27 15:49:46
4587
6
原创 互联网系统架构的演进过程
以一个网站为例:网站一开始就是大型的吗?我们应该一开始就设计一个大型网站吗?①不知名小网站 -> 低访问量,一台服务器满足需求。快速推出这个小网站,让人们认识到这个很有价值。最快速的技术LAMP:Linux+Apache+MySQL+PHP②随着网站的发展,越来越多的用户访问,面临问题:性能越来越差越来越多的数据导致存储空间不足选择解决方式:应用服务与数据服务分离原来一台服务器做全部事情,现在三台服务器分别做不同模块的事。能带来什么好
2020-08-20 21:28:06
639
2
原创 浏览器自动填充保存的账号密码
1、禁止浏览器表单自动填充一般文本框添加 autocomplete="off" 或者autocomplete="new-text"密码输入框添加 autocomplete="new-password"<input type="text" autocomplete="off" name="userName"/><input type="password" autocomplete="new-password" name="password"/>...
2020-07-08 17:22:41
407
3
原创 layui 数据表格选择框 部分不可选
直接上代码:layui数据表格部分代码 , page: true //是否显示分页 , limits: [10, 20, 50, 100] , limit: 10 //每页默认显示的数量 , id: "tableReload" , where: {} , text: { none: '暂无相关数据' },
2020-07-07 18:26:10
1208
原创 Layui 数据表格左右固定 ,内容换行为两行。且有字段隐藏
效果图:设置每行的css:<style type="text/css"> {# 设置table每一行的height #} .layui-table-cell { height: 50px; } {# 设置table每一行的复选框居中 #} .layui-table-fixed-l i{ margin-top: 21px; }</style>layui渲染表格时进行设置: .
2020-06-10 15:46:46
1579
原创 Springboot下使用easyExcel玩转Excel表的导入
Springboot下使用easyExcel玩转Excel表的导出https://blog.csdn.net/LemonSnm/article/details/106394075在前面的导出项目里继续添加导入工,直接放代码:1、写导入监听器EasyExcelListener(这里直接封装成模板类)该监听器可以验证①导入excel表模板的表头是否正确②导入的数据类型是否正确③若错误 返回错误位置信息④正确导入,则返回对应的List<>集合⑤返回的最终结果..
2020-06-10 13:56:09
917
2
原创 java通过读取网络文件url,获取输入流
/*读取网络文件*/ public static InputStream getFileInputStream(String path) { URL url = null; try { url = new URL(path); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); //设置超时间为3秒 ...
2020-06-10 13:36:47
5893
原创 虚拟机启动错误0x80004002
需求:虚拟机启动错误0x80004002总结了下网上现有的解决方案:1、兼容性问题:第一种方法无效,用第二种方法2、修改其注册表:HKEY_CLASSES_ROOT -------》 CLSID ---------》{00020420-0000-0000-C000-000000000046}HKEY_CLASSES_ROOT -------》 CLSID ---------》{00020424-0000-0000-C000-000000000046}...
2020-05-28 23:22:16
1945
原创 前端 传来js数组 java后端这样接收
第一种方法:前端传数组://定义一个数组var majorList = [1,2,3,4];//可以用表单或者ajax等方法将数组传给后端JSON.stringify(majorList); //将该数组封装成JSNO后端来接收://后端用用String类型 接收String majorList;JSONArray array = JSONArray.fromObject(majorList);//转换成Json for (int i = 0; i <
2020-05-14 17:45:54
3845
原创 input输入框输入日期之layDate日期与时间组件的使用
先上效果图:咱们这里 就用本地html演示,在项目里的话,导入正确路径即可本地构建目录:第一步:使用lyaui当然需要下载layui组件官网下载即可,点击这里下载完成后,只需要layui文件夹即可,放到自己的项目中。第二步:下载layDate控件点击这里,官网下载完成后,只需要laydate文件夹即可。第三步:i...
2020-01-15 17:12:08
2372
原创 项目打成Jar包和War包的介绍与区别
1.jar包的介绍JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。JavaSE程序可以打包成Jar包(J其实可以理解为Java了)。JAR 文件格式以流行的 ZIP 文件格式为基础。与 ZIP 文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用...
2020-01-11 19:01:44
3845
3
原创 Springboot项目打成War包和Jar包的区别以及如何转换
War包和Jar包的介绍以及区别(点击进入)1、如何将springboot项目打成jar包最简单的莫过于应IDEA自动创建时选择Jar或者War接下来我们来看看自动创建的两种方式①启动类数量:最明显的区别之一:左边打jar包只有一个启动类,右边打成war包,则由两个启动类。解释:打war的放在tomact运行,就会执行第二个启动类。原来是为了给tomact...
2020-01-11 18:50:57
2043
3
原创 在阿里云服务器上发布并运行自己的springboot项目
1、IDEA自动创建SpringBoot项目(点击进去)2、项目打包方式有jar和war包两种2.1、这里先以打war包的方式:选择war,项目搭建完成后。设置打包名(当然不设置后期可以手动修改文件名)开始打包找到侧边栏Maven Project,先clean后install。逐个右击 Run Maven Build完成后,生成target文件,其中的...
2020-01-11 18:01:37
5734
原创 本地文件如何上传至阿里云服务器(反之亦然),当然用winscp
1、文件上传至服务器将上面的软件都下载到本地,并上传到服务器(如果你的系统是Mac或LINUX,直接使用SCP命令行上传,具体指令可查询网上,如果您的系统维WIN,推荐使用filezilla可视化上传工具上传),或者您也可以直接登录服务器,wegt+ftp地址直接下载这些软件1.1、winscp安装①安装WinScp,下载地址:https://sourceforge.net/proje...
2020-01-11 17:16:22
3505
原创 阿里云 linux系统环境搭建。JDK、Tomact、Mysql、Redis的安装
1、环境相关文件下载(1)JDK(1.8)下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htmlTomact8下载地址:https://tomcat.apache.org/download-80.cgiMysql(80)repo源...
2020-01-11 16:56:56
496
原创 IDEA 创建springboot+maven+mybatis
第一步:IDEA创建springboot项目一路next就ok了等待相关依赖的下载。。。我们这边先建立数据库第二步:Mybatis建表这里使用navicat可视化工具。当然你可以使用其他工具,或者直接控制台操作Sql语句:CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMEN...
2019-11-19 12:03:39
1100
7
原创 下拉选择框 多级联动 动态显示
1、涉及知识内容1、js2、jquery3、js4、bootstrap样式2、效果图3、数据库CREATE TABLE `area` ( `id` int(11) NOT NULL AUTO_INCREMENT, `parent_id` int(11) NOT NULL DEFAULT '0', `area_level` int(11) NOT N...
2019-11-12 18:30:07
757
原创 springboot实现在浏览器上点击打印,自动读取数据库数据生成Excel文件
1、效果图:左图生成的excel,右图是数据库数据2、jar包生成Excel所有jar包 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --> <dependency> <groupId>org.apache.poi&l...
2019-11-01 18:07:45
2008
原创 springboot sql不用limit语句实现分页查询,很方便!!!
1、涉及内容:①springboot②java分页查询③bootstrap前端框架 表单④FreeMarker的<#if><#else>、<#list>标签使用1.1建表:CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varcha...
2019-10-29 13:38:04
1863
原创 java实现通过图片的URL地址下载图片
直接上代码:package com.lemon.photo;import java.io.ByteArrayOutputStream;import java.io.DataInputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.n...
2019-09-27 14:53:36
5846
原创 springboot实现web浏览器图片下载功能(图片以二进制的形式存储在数据库中)
1、实现思路:①前端url传给服务器图片id,根据id查找对应图片的二进制数据②图片实体类用byte[]接收图片二进制数据③repsonse设置浏览器响应设置④response.getWriter() 用于处理字符流数据 ⑤response.getOutputStream()用于输出字符流数据或者二进制的字节流数据 因为是字节,这里用⑤不用④ /** ...
2019-09-27 14:45:28
1876
转载 关于web浏览器下载上传的那些事
1、一秒刷新页面一次 response.setHeader("refresh","1");2、二秒跳到其他页面response.setHeader("refresh","2;URL=otherPagename");3、没有缓存:response.setHeader("Pragma", "No-cache");response.setHeader("Cache-Con...
2019-09-27 14:44:02
441
原创 java利用jdbc向数据库存入二进制图片数据
1、新建数据库CREATE TABLE `photo` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL COMMENT '姓名', `photo` longblob COMMENT '照片', PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCR...
2019-09-27 13:57:30
498
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人