自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 Iterator删除元素数组越界(java.base/java.util.HashMap$KeyIterator.next)

使用iterator遍历的时候,如果删除了set中的元素,会报错,要使用iterator的方式去删除才不会报错HashSet<Integer> set = new HashSet<>(); set.add(1); set.add(0); set.add(2); Iterator<Integer> iterator = set.iterator(); while (iterator.hasNe

2021-08-29 12:30:24 421

原创 WeakHashMap和HashMap使用Demo对比

WeakHashMapWeakHashMap 特殊之处在于 WeakHashMap 里的entry可能会被垃圾回收器自动删除,也就是说即使你没有调用remove()【remove()会把对应的entry清除掉】或者clear()方法,它的entry也可能会慢慢变少。所以多次调用比如isEmpty,containsKey,size等方法时可能会返回不同的结果。WeakHashMap中的key是间接保存在弱引用中的,所以当key没有被继续使用时,就可能会在GC的时候被回收掉(回收掉对应的entry)。它的

2021-07-30 14:04:33 257

原创 CSRF攻击和防御

CSRF攻击过程用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求(这个请求是网站B构建的,只是

2021-07-19 20:29:34 286

原创 定时任务Quartz和线程池的使用示例

任务执行和调度线程池JDK线程池1.JDK普通线程池:ExecutorService // JDK普通线程池,工厂方法去创建 private ExecutorService executorService = Executors.newFixedThreadPool(5); @Test public void testExecutorService() { Runnable task = new Runnable() { @

2021-07-15 16:10:50 2238

原创 转发和重定向

转发和重定向// return "/site/admin/data"这种是返回到模板,// 模板交给dispatchersevlet去后续处理return "/site/admin/data";// forward转发到另一个请求而不是模板,再继续处理;return "forward:/data";重定向的方法response.sendRedirect(“list.jsp”);转发方法getRequestDispatcher()包含两个重要方法,分别是请求转发和请求包含。一个请求跨多个

2021-07-14 15:07:57 1290

原创 Kafka,异步消息系统

牛客社区网站系统消息发送阻塞队列Kafka入门Spring整合Kafka发送系统通知阻塞队列BlockingQueue(java接口)解决线程通信的问题阻塞方法:put、take;阻塞时不会占用系统资源生产者消费者模式实现类:ArrayBlockingQueue、LinkedBlockingQueue、PriorityBlockingQueue、SynchronousQueue、DelayQueue;Kafka入门kafka是分布式的流媒体平台,应用:消息系统,日志收集,用户行为追踪,

2021-07-13 16:51:39 448

转载 Linux解压tar.xz文件时提示gzip:stdin:not错误

在解压tar.xz文件的时候报错[Sun@localhost Downloads]$ tar -xzvf /data/software/mysql-8.0.25-linux-glibc2.12-x86_64.tar.xzgzip: stdin: not in gzip formattar: Child returned status 1tar: Error is not recoverable: exiting now原因是这个压缩包没有用gzip格式压缩,所以不用加z指令[Sun@local.

2021-07-12 16:54:09 1863

原创 程序包org.slf4j不存在问题解决

问题:lombok插件已经安装,导入了相应包import lombok.extern.slf4j.Slf4j;仍报错添加依赖即可

2021-07-09 14:22:47 3075

转载 完整的GC过程

原文地址: https://www.cnblogs.com/shuiyj/p/12640692.htmlGC流程是每一个Java开发人员都应该掌握的内容。你知道什么时候触发Minor GC?什么时候触发Minor GC 的过程是怎么样的?Full GC 的过程又是怎么样的?这一切都要从「压死骆驼的最后一根稻草」说起。看图,看图,看图。跟着我画的流程图走一遍,就清楚了!挤满新生代的最后一个对象我们应当知道,新创建的对象一般会被分配在新生代中。常用的新生代的垃圾回收器是 ParNew 垃圾回收器,它

2021-05-18 21:25:09 12251 1

原创 社区开发1

社区开发项目(1)技术使用技术使用敏感词过滤权限控制登陆功能服务端程序如何处理浏览器的请求:Spring MVC服务端程序如何访问数据库:MyBatis权限验证:Spring Security系统监控:Spring Actuator开发环境:构建工具:Apache Maven数据库:MySQL、Redis应用服务器:Apache Tomcat(Web要部署到应用服务器才能运行)版本控制工具:GitMeavnMeavn 构建项目、管理项目中jar包...

2021-05-17 13:54:17 398

原创 美团一面(记第一次实习面试)

美团一面(记第一次实习面试)面试上来就是写代码,然后在写的过程中去引导问问题。1.Integer和int的比较,通过==比较,复合拆箱应用场景,是直接比较值的,Integer变量之间的比较,对于范围-127-128之间的整数,两个Integer对象的地址是相同的,但是不在这个范围内的时候,地址就不相同了。2.synchronized,修饰普通方法和修饰静态方法有什么不同?3.锁的获取是对于线程而言的,不是对于对象而言的,一个线程获取了一把锁访问了一个同步方法,如果这把锁还是其他方法的锁,那本线程还可

2021-05-13 23:16:17 446

原创 社区项目2

社区项目21.发送邮件2.开发注册功能1.发送邮件邮箱设置 :启用客户端SMTP服务,程序中所填的邮箱密码要为开通pop3/smtp服务时所给的授权码。Spring Email:导入jar包,邮箱参数设置,使用JavaMailSender发送邮件模板引擎:使用Thymeleaf发送HTML邮件2.开发注册功能web项目每一个功能可以按照请求去分解,浏览器与服务器之间的交互每次请求用三层架构去开发访问注册页面点击顶部区域内的链接,打开注册页面提交注册数据通过表单提交数据服务端验证

2021-05-13 11:17:44 742

原创 社区开发4

Spring Boot社区开发Redis常用命令RedisNoSQL数据库:除了关系型数据库以外的数据库Redis:基于键值对的NoSQL型数据库,key只是String,value支持多种数据结构:字符串(String)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等Redis将所有的数据存到内存中,读写性能很好,同时Redis可以以快照或日志的形式把内存中的数据保存到硬盘上,以保证数据的安全Redis的典型的应用场景:缓存、排行榜、计数器、社交

2021-05-13 11:17:31 218

原创 社区开发3

Spring Boot社区开发过滤敏感词发布帖子帖子详情事务管理过滤敏感词前缀树名称:Trie、字典树、查找树特点:查找效率高,消耗内存大应用:字符串检索、词频统计、字符串排序等敏感词过滤器定义前缀树根据敏感词,初始化前缀树编写过滤敏感词的方法前缀树的特点:1.前缀树的根节点不包含字符,除了根节点以外的节点只包含一个字符 2.从根节点到叶子节点途径的字符连起来就是字符串;3.每个节点的所有子节点包含的字符串不相同发布帖子异步请求:当前网页不刷新,访问服务器,服务器返回一些不是网页

2021-05-13 11:17:25 354

原创 String的拼接问题和intern方法

new String(“abc”);创建了什么?堆:一个abc对象常量池:如果没有abc则创建一个abcString S= new String(“a”) + “b”; 创建了多少对象?堆:new String(“a”) 和 ab两个对象常量池常量:a,b(**注意:**没有ab)引用:Sintern方法作用(1) 当常量池中不存在"abc"这个字符串的引用,将这个对象的引用加入常量池,返回这个对象的引用。(2) 当常量池中存在"abc"这个字符串的引用(堆中的一个对象),返回这个对象的引

2021-05-10 16:20:20 205

原创 Spring家族

JDBC(Java Database Connectivity):java数据库连接,是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。2.**ORM(Object Relational Mapping):**即对象关系映射,是在pymysq之上又进行了一层封装,对于数据的操作,我们无需再去编写原生sql,取代代之的是基于面向对象的思想去编写类、对象、调用相应的方法等,ORM会将其转换/映射成原生SQL然后交给pymysql执行。3.**jav.

2021-04-18 09:05:33 967 1

原创 类的初始化

类的初始化问题总结类初始化时机类初始化时机有且只有六种情况对类进行立刻初始化1) 遇到new, getstatic, putstatic,invokestatic这四条字节码指令时,如果类型没有初始化,要立刻进行初始化。生成这四条指令的java场景有:使用new关键字实例化对象的时候;读取或者设置(赋值)一个类型的静态字段(类变量,静态变量)时,不过被final修饰、已在编译期间把结果放入常量池的静态字段除外;调用一个类型的静态方法的时候。2) 使用反射的方式来强制创建某个类或者接口对应的ja

2021-04-17 09:50:16 212

原创 基本的排序算法

排序算法总结桶排序计数排序桶排序计数排序 //计数排序 public static void sort(int[] arr) { int min = arr[0]; int max = arr[0]; //产生一个大小为数据最大值减最小值+1的辅助数组help, for (int i = 0; i < arr.length; i++) { min = min > arr[i] ? arr[i

2021-04-17 09:49:03 135

原创 二叉树问题总结

二叉树问题先中后序遍历问题先中后序遍历问题1.分别按照二叉树先序,中序和后序打印所有的节点;private int i =0; //成员变量,方法也可以使用,因此不用再向递归中传递了 private int j = 0; private int k = 0; public int[][] threeOrders (TreeNode root) { // write code here int size = getsize(root);

2021-04-17 09:47:56 335

原创 操作系统

操作系统概念功能1.作为系统资源的管理者处理机管理存储器管理文件管理设备管理2.作为用户个计算机硬件之间的接口命令接口(用户直接使用) : 联机命令接口 (交互式)、脱机命令接口(批处理命令接口)程序命令接口:用户程序间接使用 由一组系统调用GUI:图形用户界面3.作为最接近硬件层次扩充机器操作系统的特征并发、共享、虚拟、异步并发和共享是操作系统的最基础的两个特征并发和并行共享:互斥共享、同时共享(宏观同时进行,微观上可能是交替进行)并发性和共享性是互为存在条件的虚

2021-04-17 09:46:27 447 1

原创 I/0复用

select缺点select本质上是通过设置或者检查存放fd标志位的数据结构来进行下一步处理。这样所带来的缺点是:1、 单个进程可监视的fd(网络请求)数量被限制,即能监听端口的大小有限。一般来说这个数目和系统内存关系很大,具体数目可以cat /proc/sys/fs/file-max察看。32位机默认是1024个。64位机默认是2048.2、 对socket进行扫描时是线性扫描,即采用轮询的方法,效率较低:当套接字比较多的时候,每次select()都要通过遍历FD_SETSIZE个Socket来

2021-04-17 09:25:55 159

原创 链表问题

链表问题记录链表反转随机链表复制链表反转随机链表复制//这种方法有问题public RandomListNode Clone(RandomListNode pHead) { if(pHead == null){ return null; } RandomListNode node = pHead; RandomListNode cur = new RandomListNode(-1); Rando

2021-03-28 13:16:59 151

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除