javase
文章平均质量分 60
取酒鱼食--【余九】
我们活着不能与草木同腐,
不能醉生梦死,枉度人生,
要有所作为!——方志敏
展开
-
Servlet详解
Servlet详解JavaEE简介Servlet简介Tomcat详解Servlet技术详解JavaEE简介在 JavaEE 平台规范了在开发企业级 web 应用中的技术标准。在 JavaEE 平台共包含了 13 个技术规范(随着 JavaEE 版本的变化所包含的技术点的数量会有增多)。它们分别是:JDBC、JNDI、EJB、RMI、Servlet、JSP、XML、JMS、Java IDL、JPA、JTA、JavaMail 和JAFServlet简介Tomcat详解Servlet技术详解...原创 2021-10-23 12:45:01 · 203 阅读 · 0 评论 -
properties文件注释方法【学习笔记】
(1)很简单,就是用#开头就可以了,一般习惯用#–XXX–这样来写,XXX表示你写的注释。但是不能支持中文,所以只能用native2ascii来进行对中文进行ascii编码,打开开始菜单中的运行,输入cmd,输入native2ascii回车后再输入要转化的中文,然后回车就会出现需要的ascii码了。附图一张:以后不会为了不知道键值对应的原因和转化编码而烦恼了。(2)properties文件中增加或者取消#注释,都可以通过 Ctrl + / 实现。可选中一行或多行内容进行操作,即可实现单行或多行内容原创 2022-03-12 17:29:51 · 4690 阅读 · 0 评论 -
零基础入门数据库
(一)mysql简介Mysql是一个关系型数据库管理系统,关系型数据库将数据保存在不同的表中,而不是所有数据放在一个大仓库中,这样就可以增加了速度并提高了灵活性,相对链接: https://pan.baidu.com/s/1-f-z6yoQefBRdQ76Lk-uew 提取码: 2yvp 复制这段内容后打开百度网盘手机App,操作更方便哦...原创 2021-11-04 14:31:53 · 1828 阅读 · 2 评论 -
深入浅出——Mybaties 入门码农避坑必备(一)
Mybatis实战提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录Mybatis实战前言一、Mybaties是什么?二、使用步骤1.引入库2.读入数据总结前言Mybatis例如:随着大数据的不断发展,Mybaties这门技术也越来越重要,很多人都开启了学习框架,本文就介绍了Mybaties的基础内容。提示:以下是本篇文章正文内容,下面案例原创 2022-01-31 08:00:00 · 511 阅读 · 0 评论 -
java项目实现发送邮箱激活用户功能
配置邮箱第三方登录。我们在系统中使用邮箱发送邮件属于第三方登录,而市面上的邮箱默认是不能第三方登录的。我们需要登录邮箱,配置第三方登录。在用户注册时,通过发送一个邮件给用户,来激活用户,主要是用来看看该用户是否不为空用户。用密保手机向1069070069发送短信配置邮件客户端,发送完成后点击我已发送。①在yml中配置项目路径。②编写service类。原创 2022-08-27 08:00:00 · 1287 阅读 · 0 评论 -
redis工具类
【代码】redis工具类。原创 2022-10-27 08:00:00 · 241 阅读 · 0 评论 -
安装RabbitMQ【普通安装+Docker安装(首选)】
RabbitMQ是使用Erlang语言编写的,所以在安装RabbitMQ前需要先安装Erlang环境。路径: http://ip地址:15672 ,用户名: guest ,密码: guest。路径:http://ip地址:15672, 用户名:guest ,密码:guest。此时会提示guest账户只允许本地使用,我们可以配置允许使用guest远程访问。guest账户默认只允许本地使用,我们可以创建新账户远程访问RabbitMQ。④通过管控台访问rabbitmq。原创 2022-09-19 22:14:07 · 1118 阅读 · 0 评论 -
JVM高性能调优宝典【包含VisualVM工具下载安装教程】持续更新优化
如果要操作对象,必须通过引用来进行,如果一个对象没有任何引用与之关联,则说明该对象基本不太可能在其他地方被使用到,那么这个对象就成为可被回收的对象了,这种方法实现简单,效率较高,但是它无法解决循环引用问题,因此在java中并没有采用这种方式(pyhon使用的是引用计数法)原创 2022-09-10 17:43:26 · 1623 阅读 · 0 评论 -
redis实现商品查询缓存【解决常见问题】
当我们客户端访问不存在的数据时,先请求redis,但是此时redis中没有数据,此时会访问到数据库,但是数据库中也没有数据,这个数据穿透了缓存,直击数据库,我们都知道数据库能够承载的并发不如redis这么高,如果大量的请求同时过来访问这种不存在的数据,这些请求就都会访问到数据库,简单的解决方案就是哪怕这个数据在数据库中也不存在,我们也把这个数据存入到redis中去,这样,下次用户过来访问这个不存在的数据,那么在redis中也能找到这个数据就不会进入到缓存了。因为锁能实现互斥性。原创 2022-10-26 08:00:00 · 1198 阅读 · 0 评论 -
Nginx的安装及启动【编译安装+Docker拉取安装(开发时首选)】
更改Nginx服务器的配置和加入新模块后,如果希望当前的Nginx服务应用新的配置或使新模块生效,就需要重启Nginx服务。当然我们可以先关闭Nginx服务,然后使用新的Nginx配置文件重启服务。进入到 Nginx 解压包目录/opt/apps/Nginx-1.20.1 目录中,查看 Nginx 的目录。平缓停止是指允许Nginx服务将当前正在处理的网络请求处理完成,但不再接收新的请求,之后关闭连接,停止工作。Nginx所有配置文件的目录,极其重要。Nginx命令的目录,如Nginx的启动命令。原创 2022-09-11 17:45:02 · 1558 阅读 · 0 评论 -
JVM调优常用工具及命令
jmap -dump:format=b,file=heap.hprof PID:在出现内存溢出异常时,将堆内存的信息下载到文件中。运行后会产生heap.hprof文件,普通软件打开会乱码,用上面的wat打开即可,就可以追踪到造成异常的原因。运行 GCViewer:输入命令 java -jar gcviewer-1.36-SNAPSHOT.jar。就会出现一下窗口,打开生成的gc.log文件(查看决定性能的两个因素:吞吐量和暂停时间)jmap -heap PID:查看堆存储快照。原创 2022-09-17 08:00:00 · 888 阅读 · 0 评论 -
Redis代替session实现短信登录
通过以上讲解,我们可以得知 每个用户其实对应都是去找tomcat线程池中的一个线程来完成工作的, 使用完成后再进行回收,既然每个请求都是独立的,所以在每个用户去访问我们的工程时,我们可以使用threadlocal来做到线程隔离,每个线程操作自己的一份数据。原创 2022-10-25 08:00:00 · 147 阅读 · 0 评论 -
项目部署教程
通过xshell远程控制实现安装Docker。(3)开启远程docker服务。(1)首先关闭虚拟机防火墙。(2)然后安装Docker。原创 2022-08-28 08:00:00 · 275 阅读 · 0 评论 -
商场秒杀模块
场景分析二:随着我们商城规模越来越大,mysql的单表的容量不宜超过500W,数据量过大之后,我们要进行拆库拆表,但拆分表了之后,他们从逻辑上讲他们是同一张表,所以他们的id是不能一样的, 于是乎我们需要保证id的唯一性。比如时间是否充足,如果时间充足,则进一步判断库存是否足够,如果两者都满足,则扣减库存,创建订单,然后返回订单id,如果有一个条件不满足则直接结束。当用户开始进行下单,我们应当去查询优惠卷信息,查询到优惠卷信息,判断是否满足秒杀条件。原创 2022-10-28 08:00:00 · 347 阅读 · 0 评论 -
解决集群环境下的并发问题【分布式锁】
解决方案:解决方案就是在每个线程释放锁的时候,去判断一下当前这把锁是否属于自己,如果属于自己,则不进行锁的删除,假设还是上边的情况,线程1卡顿,锁自动释放,线程2进入到锁的内部执行逻辑,此时线程1反应过来,然后删除锁,但是线程1,一看当前这把锁不是属于自己,于是不进行删除锁逻辑,当线程2走到删除锁逻辑时,如果没有卡过自动释放锁的时间点,则判断当前这把锁是属于自己的,于是删除这把锁。需求:修改之前的分布式锁实现,满足:在获取锁时存入线程标示(可以用UUID表示)原创 2022-10-29 08:00:00 · 1338 阅读 · 2 评论 -
Nginx配置多虚拟主机
文件路径:C:\Windows\System32\drivers\etc\hosts。两个域名指向同一个nginx服务器,用户访问不同的域名时显示不同的内容。请求8888端口则访问html8888目录下的index.html。请求9999端口则访问html9999目录下的index.html。Nginx对提供8888与9999两个端口的监听服务。原创 2022-09-16 08:00:00 · 953 阅读 · 0 评论 -
前端用户注册—随机生成验证码图片
一般在后台生成验证码后,一方面将验证码保存到session中,另一方面将验证码做成一张图片,将图片传到前台。用户认出验证码后,输入验证码传到后台,如果正确即可判断操作者为真人。它是后台随机生成的一串字符串,但我们不能将该字符串直接传到前台,否则机器直接读到字符串,验证码将没有任何意义。@ServletComponentScan在使用原生的servlet的时候需要加,否则无法扫描到我们上面所写的servlet类。// 在方法后添加参数的原因是,如果不添加参数,img.src的属性不会改变,此时浏览器不会。原创 2022-08-26 08:00:00 · 415 阅读 · 0 评论 -
Nginx配置指令
用于配置运行Nginx服务器用户的指令是user语法格式:如果希望所有用户都可以启动Nginx进程,有两种办法:将次指令注释:或者把用户(和用户组)设置为nobody;worker process是Nginx服务器实现并发处理的关键所在。理论来说worker_process的值越大,可以支持的并发处理也越多。语法格式:number 指定nginx进程最多可以产生的worker_process数。auto ,设置此值,Nginx进程将自动检测。在默认的配置文件中,Number=1.启动Ngin原创 2022-09-11 23:43:58 · 1479 阅读 · 0 评论 -
线程
线程:核心概念程序:Program,是一个指令的集合进程:Process,(正在执行中的程序)是一个静态的概念进程:Process,(正在执行中的程序)是一个静态的概念每个进程都是独立的,由3部分组成cpu,data,code缺点:内存的浪费, cpu的负担线程:————是进程中一个“单一的连续控制流程”( 线程又被称为轻量级进程(lightweight process))一个进程可拥有多个并行的(concurrent)线程;一个进程中的线程共享相同的内存单元/内存地址空间->可以原创 2021-02-22 22:30:01 · 211 阅读 · 1 评论 -
io流
flush与close的区别package IO.demo01;import java.io.FileWriter;import java.io.IOException;public class Reader2 { public static void main(String[] args) { FileWriter fw = null; try { fw = new FileWriter("E:\\b.txt"); ...原创 2021-03-01 21:15:38 · 149 阅读 · 0 评论 -
javaScript
JavaScriptJS事件(1)点击事件<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <script> function run1() { alert("点击事件执行了") } window.onclick=function() { run1(); } &l原创 2021-05-12 15:43:18 · 105 阅读 · 0 评论 -
JDK9对集合的优化
JDK9对集合的优化package cn.itcase.day27.demo01.demo02.demo03;import java.util.List;import java.util.Set;/*自jkd9之后的集合的优化* Set、List、Map接口可使用of方法进行多个数值的添加* 相当于Collections集合里面的addAll方法* 注意事项:* 1、of方法只适用于Set、Map、List接口而不适用与其实现类例如:ArrayList,HashMap,HashSe原创 2021-02-19 10:24:46 · 314 阅读 · 2 评论 -
java异常错误处理
https://www.cnblogs.com/SnowPhoenix/p/12539383.html转载 2021-06-02 15:50:36 · 233 阅读 · 0 评论 -
java斗地主案例(利用集合或数组储存牌/Colletions中的shuffle进行打乱)
package cn.itcase.day26.demo01.demo02.dapai;import java.util.ArrayList;import java.util.Collections;import java.util.Random;public class Demodapai { public static void main(String[] args) { ArrayList<String> poker = new ArrayList<原创 2022-03-13 06:00:00 · 575 阅读 · 4 评论 -
执行过程内存分析
虚拟机栈,堆,方法区的特点;虚拟机栈:1、每个方法被调用是都会创建一个栈帧2、jvm为每个线程都创建了栈,用于存放该线程的执行方法;3、栈是私有的,不能实现线程共享;4、栈的存储方式是“先进后出”,“后进先出”;5、栈是由系统自动分配的,速度快,是个连续的内存空间;堆:1、堆是用来存储对象和数组的2、java中只有一个堆,堆是共享的3、堆是不连续的,灵活性强,速度慢方法区;方法区是java虚拟机规范:1、(1)在jdk7以前;是永久代;(2)jdk7,去除永久代,字符串常量池..原创 2021-06-02 02:12:49 · 244 阅读 · 0 评论 -
java斗地主中级案例(利用了HashMap 集合的key不可重复,而value不可重复的特点)
package cn.itcase.day27.demo01.demo02.demo03;import java.util.*;//最后每个人的牌是按顺序拍好的(任务)/*Java斗地主升级版* 1、利用HashMap来存储牌,打乱是打乱的是键,到时候获取键所对应的value值即可* 2、Collections 中的shuffle()方法来进行打乱* 3、用sort进行排序 */public class Doudizhu { public static void main(Stri原创 2022-03-13 06:00:00 · 654 阅读 · 2 评论 -
练习:模拟多窗口售票(解决线程安全问题)
当多个线程执行共享数据时,有可能出现线程安全问题;线程安全问题:1、共享数据重复出现2、出现的数据不在范围之内(比如售票是出现出售的票号为-1,0等等)解决安全问题的方法有三种:同步代码块:格式:synchronized(锁对象){可能出现问题的代码(访问共享数据的代码)}注意:1、锁对象可以是任意类对象2、保证多个线程的锁对象是同一个同步方法:public synchronized 返回值类型 方法名称(参数){}==public 返回值类型 方法名(){synchroniz原创 2022-03-13 06:00:00 · 727 阅读 · 2 评论