自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MyBatis常用标签和注解(绝对经典)

<select id=“findUserByName”resultType=“User”>SELECT * FROM UserWHERE valid = 1AND name like #{name}2、choose (when, otherwise)<select id=“findUser”resultType=“User”>SELECT * FROM User WHERE age = 26AND name like #{name}AND sex l

2022-05-10 12:56:41 603

原创 mybatis以及spring的整合

JDBC:此配置使用了JDBC的提交和回滚设置MANAGE:让容器来管理整个事务的整个生命周期。7.mapper元素指定mybatis映射文件的位置,一般使用以下4种引入方式。1.类路径 resource属性2.本地文件 url属性3.接口类 class属性4.包名 name属性[](()mybatis的默认别名由于别名不区分大小写。所以不建议使用,容易出现重复定义的覆盖问题。下面(左:别名,右:映射的类型)_byte byte.

2022-05-10 12:55:02 734

原创 Log4j 严重漏洞修最新修复方案参考

缓解方式1:接入安全产品============第一时间上WAF规则、RASP拦截等措施,给修复争取时间。但是也要注意一些静态规则上的绕过,log4j 支持的写法比较多,有非常多绕过姿势。比如:KaTeX parse error: Expected '}', got 'EOF' at end of input: {{lower:j}upper:n{upper:n}upper:n{lower:d}upper:i:{upper:i}:upper:i:{lower:r}m${lower:i}}😕 《一线.

2022-05-10 12:52:43 827

原创 Linux面试必备20个常用命令

| — | — || -r | 赋予读取权限 || -w | 赋予写入权限 || -x | 赋予执行权限 || 777 | 赋予可读、可写、可执行权限(读:4,写:2,执行:1) |权限说明:(例:-rw-r--r-x 的权限为645)权限显示位一共为10位,分为四段,从第二位算起,每三个一组第1位代表文件类型(-表示为普通文件)第2-4位代表文件所属用户拥有的权限(rw-:4+2=6)第5-7位代表该用户所属组拥有的权限(-r--:4)第8-10位代表其他用户拥有的

2022-05-10 12:50:45 5652

原创 Linux操作系统的常用基本指令

功能:改变龚总目录,将当前工作目录改变到指定的目录下cd …: 返回上级目录cd ~:进入到用户的home(家)目录(也可直接使用cd)cd - :返回最近访问目录cd 目录名 表示就可以进入到当前目录内部touch指令语法:touch 【选项 】 文件功能:touch表示创建一个新的文件(空文件),touch的命令参数可更改文档或目录的日期时间,包括存取时间和更改时间touch java.txt //表示在当前目录下创建一个java.txt文件,如果之前已经存在ja

2022-05-10 12:48:34 194

原创 leetcode402

输入: num = “10200”, k = 1输出: "200 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 "解释: 移掉首位的 1 剩下的数字为 200. 注意输出不能有任何前导零。示例 3 :输入: num = “10”, k = 2输出: “0”解释: 从原数字移除所有的数字,剩余为空就是0。思路:遇到右边相邻数字比本身小,就删除。比如13531,删5是最佳选择。如果不删,接下来的数字不论怎么操作,都会是1

2022-05-10 12:46:53 166

原创 leetcode330

解释:根据 nums 里现有的组合 [1], [3], [1,3],可以得出 1, 3, 4。现在如果我们将 2 添加到 nums 中, 组合变为: [1\ 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 ], [2], [3], [1,3], [2,3], [1,2,3]。其和可以表示数字 1, 2, 3, 4, 5, 6,能够覆盖 [

2022-05-10 12:45:14 184

原创 JVM常见面试题。答题思路,问题解析

思路: 给面试官画一下JVM内存模型图,并描述每个模块的定义,作用,以及可能会存在的问题,如栈溢出等。答案:JVM内存结构程序计数器:当前线程所执行的字节码的行号指示器,用于记录正在执行的虚拟机字节指令地址,线程私有。Java虚拟栈:存放基本数据类型、对象的引用、方法出口等,线程私有。Native方法栈:和虚拟栈相似,只不过它服务于Native方法,线程私有。Java堆:java内存最大的一块,所有对象实例、数组都存放在java堆,GC回收的地方,线程共享。方法区.

2022-05-10 12:41:44 184

原创 JAVA自学-8大基础类型详解

常量:final boolean isLoveYourGirlFriend = true变量:boolean isLoveYourGirlFriend; 后续可以重新赋值如:isLoveYourGirlFriend = false占用大小:JAVA中的8种基础数据类型中,只有boolean类型没有给出明确的存储空间大小,因为实际上boolean类型在编译到JAVA的虚拟机时,是使用其他的数据类型进行替代的,因此,在网上关于boolean类型占用的空间大小也存在许多种说法:说法1: b..

2022-05-09 13:39:05 500

原创 Java线程池的简单使用

ExecutorService executorService = Executors.newSingleThreadExecutor();Thread thread = new Thread(() -> { System.out. **《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】** println("hello world!");});executorService.execu..

2022-05-09 13:36:39 227

原创 Java线程(七):Callable和Future

下面来看另一种方式使用Callable和Future,通过ExecutorService的submit方法执行Callable,并返回Future,代码如下:[java]  [view plain](() [copy](() [print](() [?](() [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1bArfsGD-1652074444137)(https://code.csdn.net/assets/CODE_ico.png)] [外链图片转存失败,源站

2022-05-09 13:34:22 310

原创 Java程序员必备的21个核心技术,你都掌握了哪些?

class 二进制字节码结构, class loader 体系 , class加载过程 , 实例创建过程方法执行过程Java各个大版本更新提供的新特性(需要简单了解)2. JAVA的运行这条可能出看很简单,java程序的运行谁不会呢?不过很多时候, 我们只是单纯通过IDE去执行java程序,底层IDE又是如何执行java程序呢?很多人并不了解。这个知识点是最最基本的java开发者需要掌握的,第一个肯定是教你如何在命令行中执行java程序,但是很多人一旦把java学完了,IDE用上..

2022-05-09 13:32:34 259

原创 Java核心编程总结(四、异常与线程)

定义一个线程类继承Thread类重写run()方法创建一个新的线程对象Thread t = new MyThread();调用线程对象的start()方法启动线程public class ThreadDemo {// 启动后的ThreadDemo当成一个进程。// main方法是由主线程执行的,理解成main方法就是一个主线程public static void main(String[] args) {// 3.创建一个线程对象Thread t = new MyTh..

2022-05-09 13:28:51 188

原创 Java开发者生产力报告,Java到底有多强

如果你想要学习Java的话,我给你分享一些Java的学习资料,你不用浪费时间到处搜了,从Java入门到精通的资料我都给你整理好了,这些资料都是我做Java这几年整理的Java最新学习路线,Java笔试题,Java面试题,Java零基础到精通视频课程,Java开发工具,Java练手项目,Java电子书,Java学习笔记,PDF文档教程,Java程序员面经,Java求职简历模板等,这些资料对你接下来学习Java一定会带来非常大的帮助,每个Java初学者都必备,请你进我的**[Java技术qq交流群127522.

2022-05-09 13:26:32 247

原创 Java并发(五)

就是返回了底层的state变量,也就是AQS的state[](()hasQueuedPredecessors方法这个方法是用来判断线程是否需要排队的(返回false不需要排队),因为是公平锁,所以这个判断是必须的,否则就不公平了,因为没有判断排队操作,那么只要一个线程释放了锁,那么后来的线程也是可以抢到的(透露一下:非公平锁的实现就是仅仅少了这个判断而已)可以看到,这个方法是AQS里面的,tail和head属性前面已经提到过,是底层队列的头尾结点关键在于return语句他主要有两个判断头结

2022-05-09 13:24:32 235

原创 Java并发系列「3」---- 容器

由浅入深逐步往里面研究;[](()List================================================================ArrayList 底层由数组组成; 事件复杂度查询是O(1): 插入是O(N)每次插入的时候会去检查是否需要扩容;非线程安全的;如果单单调用add(Object)时间 复杂度是O(1);因为它会在数组尾部进行数据的添加;优化方案:提前知晓数组长度 提前扩容数组;减少扩容次数;LinkedList: 底层是由链表组成;

2022-05-09 13:23:01 585 1

原创 Java并发关键字-synchronized

[](()synchronized简介在学习知识前,我们先来看一个现象:public class SynchronizedDemo implements Runnable {private static int count = 0;public static void main(String[] args) {for (int i = 0; i < 10; i++) {Thread thread = new Thread(new SynchronizedDemo());thread.s

2022-05-09 13:21:03 253

原创 Linux的常用命令及操作

是系统管理员使用的系统管理程序。/selinux:这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。/srv:该目录存放一些服务启动之后需要提取的数据。/sys:这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。sysfs 文件系统集成了下面3种文件系统的信息:针.

2022-05-08 10:28:43 225

原创 Linux故障排查(亲身经历)

%MEM - 进程占用的物理内存百分比TIME+ - 进程启动后占用的总的CPU时间Command - 进程启动的启动命令名称通过%cpu列就能看出cpu占用情况,现在找到罪魁祸首后就该杀的杀该关的关关闭进程执行top命令出现任务列表后,如果想关闭进程,直接按键盘上的K键此时会让你输入想要关闭进程的pid(任务列表第一列,如果不输入的话默认关闭排在第一的进程)比如你想关闭上面图片中的“51466”进程,输入54166后按回车切记!切记!切记!这里输入数字时注意不要按小键盘.

2022-05-08 10:26:57 252

原创 Linux在windows上共享目录

四、配置共享目录sudo vi /etc/samba/smb.conf在文件尾追加以下内容[share]path = /data/home/t_route/available = yesvalid users = rootread only = nobrowsable = yespublic = yeswritable = yesshare:外部访问的目录名path:linux上需要共享的目录valid users:添加的账户名五、重启smbd服务service s

2022-05-08 10:24:29 589

原创 Linux~修改文件属性与权限(chgrp、chown

总用量 12drwxrwxr-x 2 listen listen 4096 9月 10 19:30 ./drwxr-xr-x 17 listen listen 4096 9月 10 17:14 …/-rw-r–r-- 1 root root 10 9月 10 19:31 one.exeroot@listen-virtual-machine:/home/listen/test# chgrp users one.exeroot@listen-virtual-machine:/ho

2022-05-08 10:22:42 1266

原创 leetcode977

class Solution {public:vector sortedSquares(vector& nums) {vector v;for(int num : nums){int temp = pow(num,2);v.push_back(temp);}sort(v.begin(),v.end());return v;}};[](()2:双指针思路:1.利用双指针,在数组的头和尾各定义一个指针(模拟指针)2.我们可以知道的是原数组是升序的 不过会现负数,那么最大值.

2022-05-08 10:20:22 108

原创 Leetcode--Java--15

[](()思路双指针。 双指针需要有序,先将数组排序,保证指向的值 i < j < k固定i,双指针枚举k,j ,如果j增大,k必然减小,因为 i + j + k = 0去重。若当前数和上一个数是一样的话,就跳过。 因为上一个已经把取nums[i]的情况枚举完了优化后的方法:固定i,动态调整另外两个指针i指针要去重。同时在加入到将结果集后l 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶

2022-05-08 10:18:15 191

原创 LeetCode - Medium - 1123

方法一:自己写的,用后序遍历模式方法二:别人写的,用后序遍历模式[](()Submissionimport com.lun.util.BinaryTree.TreeNode;public class LowestCommonAncestorOfDeepestLeaves {//方法一:自己写的,用后序遍历模式public TreeNode lcaDeepestLeaves(TreeNode root) {Object[] r 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+

2022-05-08 10:16:32 111

原创 LeetCode - 430 - 扁平化多级双向链表 - Java - 细喔

[](()题目解析===================================================================总的来说 :就是遍历一个链表,如果 child 为 null,则继续遍历下一个节点,但如果 child 不为 null,也就是说中止当前链表遍历,遍历 当前节点的child 所在链表,那么下一次遍历的节点就是从child指向的节点开始(并插入到当前链表节点的next位置),直到遍历完 child 所在的链表所有节点(前提是 child 所在的链表的所.

2022-05-08 10:14:28 127

原创 JVM虚拟机-垃圾回收机制与垃圾收集器概述

在JVM学习中,垃圾回收几乎是最重要的知识点。那么,自动垃圾回收机制到底是如何实现的呢,下面我们来梳理一遍。[](()什么是垃圾回收==========================================================================垃圾回收(Garbage Collection)诞生于1960年 MIT 的 Lisp 语言,距今已经超过半个世纪了。垃圾回收顾名思义,就是收集垃圾,JVM中的垃圾就是指的内存中不再使用的对象。将这些不再使用的对象清除,

2022-05-08 10:12:13 165

原创 JMM 最最最核心的概念:Happens-before 原则

事实上,从 JMM 设计者的角度来看,可见性和有序性其实是互相矛盾的两点:一方面,对于程序员来说,我们希望内存模型易于理解、易于编程,为此 JMM 的设计者要为程序员提供足够强的内存可见性保证,专业术语称之为 “强内存模型”。而另一方面,编译器和处理器则希望内存模型对它们的束缚越少越好,这样它们就可以做尽可能多的优化(比如重排序)来提高性能,因此 JMM 的设计者对编译器和处理器的限制要尽可能地放松,专业术语称之为 “弱内存模型”。对于这个问题,从 JDK 5 开始,也就是在 JSR-13

2022-05-08 10:10:30 448

原创 MySQL笔记【基础篇】

char 适用于数长度不会发生改变的时候,是定长的,例如:性别,生日varchar 当一个字段数据长度不确定,例如:简介、姓名、等都是采用varcharchar是直接开辟一定长度的空间,varchar是根据存储数据的长度动态的开辟空间!测试案例#创建表CREATE TABLE user(id INT(10),username VARCHAR(30),PASSWORD VARCHAR(30) #最后一行不需要,);[](()2.删除表:drop table..

2022-05-06 12:47:06 705

原创 MySQL的简单整理

select 字段 from 表名 GROUP BY 要分组的字段having 与 where 的区别:1.having 是在分组后对数据进行过滤. where 是在分组前对数据进行过滤2.having 后面可以使用聚合函数(统计函数) where 后面不可以使用聚合函数注:WHERE 是对分组前记录的条件,如果某行记录没有满足 WHERE 子句的条件,那么这 行记录不会参加分组;而 HAVING 是对分组后数据的约束。[](()6.分页limitselect * from 表名 limit

2022-05-06 12:45:21 72

原创 MySQL常见面试题解析

2.mysql里记录货币用什么字段类型好NUMERIC 和DECIMAL 类型被MySQL实现为同样的类型,这在SQL92标准允许。他们被用于保存值,该值的准确精度是极其重要的值,例如与金钱有关的数据。DECIMAL和NUMERIC值作为字符串存储,而不是作为二进制浮点数,以便保存那些值的小数精度。3.MySQL中myisam与innodb的区别InnoDB支持事务,而MyISAM不支持事务InnoDB支持行级锁,而MyISAM支持表级锁InnoDB支持MVCC, 而MyISAM不支

2022-05-06 12:42:56 335

原创 MySQL原理 - InnoDB引擎 - 行记录存储 - Off-page 列

Redundant 中 off-page 列处理对于 Redundant 行格式中比较长的列,只有前 768 字节会被存储在数据行上,剩下的数据会被放入其他页。我们来看一个实例,运行以下 SQL,创建一个测试表,插入测试数据:drop table if exists long_column_test;CREATE TABLE long_column_test (large_content varchar(32768) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHA

2022-05-06 12:40:34 164

转载 MySQL InnoDB MVCC原理

MVCC(Mutil-Version Concurrency Control)多版本并发控制,指的就是在使用已提交读(READ COMMITTD)、可重复读(REPEATABLE READ)这两种隔离级别的事务在执行普通的SEELCT操作时访问记录的版本链的过程,这样子可以使不同事务的读-写、写-读操作并发执行,从而提升系统性能。这两个隔离级别的一个很大不同就是:生成ReadView的时机不同, 已提交读在每一次进行普通SELECT操作前都会生成一个ReadView,而可重复读只在第一次进行普通SELEC

2022-05-06 12:39:03 97

原创 MyCat配置文件详解(二)

schema 标签 用于定义 MyCat实例中的逻辑库 , 一个MyCat实例中, 可以有多个逻辑库 , 可以通过 schema 标签来划分不同的逻辑库。MyCat中的逻辑库的概念 , 等同于MySQL中的 database概念 , 需要操作某个逻辑库下的表时, 也需要切换逻辑库:use ITCAST;1.属性schema 标签 的属性如下 :name指定逻辑库的库名 , 可以自己定义任何字符串 ;checkSQLschema取值为 true / false ;如果设置为true时 , 如果我们执

2022-05-06 12:36:54 662

原创 mycat入门:落地分库分表与读写分离

<dataHost name=“localhost1” maxCon=“1000” minCon=“10” balance=“0”writeType=“0” dbType=“mysql” dbDriver=“native” switchType=“1” slaveThreshold=“100”>select user()<writeHost host=“hostM1” url=“localhost:3306” user=“root”password=“root”><dat..

2022-05-06 12:34:52 499

原创 Mybatis框架技术总结(一)

resultType:指定结果映射的对象类型。SQL 获取参数: #{属性名}示例DELETE FROM student WHERE id = #{id}[](()2、Mybatis核心配置文件=================================================================================核心配置文件包含了 MyBatis 最核心的设置和属性信息。如数据库的连接、事务、连接池信息等。<?xml versio

2022-05-06 12:33:02 261

原创 MyBatis-日志工厂

public void test(){SqlSession sqlSession= MybatisUtils.getSession();BlogMapper mapper= sqlSession.getMapper(BlogMapper.class);List blogList=mapper.selectBlogAll();// List blogList=sqlSession.selectList(“com.yixin.dao.BlogMapper.selectBlogAll”);for (Bl

2022-05-06 12:31:00 127

原创 mybatis-复习-05----limit实现分页-----使用注解开发-------CRUD

分页插件:mybatis-pageHelper[](()二.使用注解开发[](()2.1 面向接口编程根本原因 : 解耦 , 可拓展 , 提高复用 , 分层开发中 , 上层不用管具体的实现 , 大家都遵守共同的标准 , 使得开发变得容易 , 规范性更好[](()2.2 使用注解开发①注解在接口上实现@Select(“select * from user”)List getUsers();②需要在核心配置文件中绑定接口③测试本质:反射机制实现底层:动态代理![在这里插入图片描述

2022-05-06 12:29:15 345

原创 K8s Kubernetes集群部署

[root@master ~]# yum -y install docker-ce[root@master ~]# systemctl enable --now dockerCreated symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.[root@master ~]# docker --versionDocker version 2

2022-05-05 17:00:30 1783 1

原创 JVM 调优之 glibc 引发的内存泄露

malloc ? 这是申请内存的函数啊,为什么要申请这么多呢?难道没有释放? 于是想到用 pmap 命令看一下内存映射情况。Pmap 提供了进程的内存映射,pmap 命令用于显示一个或多个进程的内存状态。其报告进程的地址空间和内存状态信息执行了以下命令:pmap -x 1 | sort -n -k3复制代码发现了一些端倪:有一些 64M 左右的内存分配,且越来越多。glibc搞不懂了,于是 google 了一下。发现是有这一类问题由于涉及许多底层基础知识,这里就大概解析一下,有兴趣的读

2022-05-05 16:58:07 1244

原创 java高并发系列 - 第24天:ThreadLocal、InheritableThreadLocal

我们还是以解决问题的方式来引出ThreadLocal、InheritableThreadLocal,这样印象会深刻一些。目前java开发web系统一般有3层,controller、service、dao,请求到达controller,controller调用service,service调用dao,然后进行处理。我们写一个简单的例子,有3个方法分别模拟controller、service、dao。代码如下:package com.itsoku.chat24;import ja.

2022-05-05 16:52:23 192

空空如也

空空如也

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

TA关注的人

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