自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (1)
  • 收藏
  • 关注

原创 mybatis笔记

开发步骤:(1)添加依赖</</</</</</</</</</(2)创建User数据表(3)编写User实体类(4)编写映射文件UserMapper.xml</</(5)编写核心文件SqlMapConfig.xml</</</</</</(6)测试。

2023-10-24 21:04:41 87

原创 springcloud笔记

配置Feign日志:方式一:配置文件方式feign:client:config:default: #default表示对所有service的调用生效,也可以写具体的服务名方式二:java代码@Bean。

2023-10-24 21:03:42 87

原创 springboot笔记

我们也可以直接写对应日志框架的配置文件:#自定义静态资源文件夹位置#自定义webjars路径前缀#自定义静态资源路径前缀把重命名为abc.yml,启动jar:案例:记录系统访客独立IP访问次数业务功能开发@Autowired//当前的request对象的注入工作由使用当前starter的工程提供自动装配@Autowired")//详细模式System.out.println(" IP访问监控");} else {//简单模式自动配置类。

2023-10-24 21:03:00 139

原创 spring笔记

Spring入门POM依赖:<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.1.6.RELEASE</version></dependency>Bean定义文件/resource/spring-context.xml:&l

2023-10-24 21:01:36 47

原创 zip和unzip

【代码】zip和unzip。

2023-08-23 08:19:43 36

原创 xargs

默认情况下xargs将其标准输入中的内容以空白(包括空格、Tab、回车换行等)分割成多个之后当作命令行参数传递给其后面的命令,并运行之,我们可以使用 -d 命令指定分隔符。-E选项:选项指定一个字符串,当xargs解析出多个命令行参数的时候,如果搜索到-e指定的命令行参数,则只会将-e指定的命令行参数之前的参数(不包括-e指定的这个参数)传递给xargs后面的命令。-n 选项:该选项表示将xargs生成的命令行参数,每次传递几个参数给其后面的命令执行。-p选项:打印出要执行的命令,询问用户是否要执行。

2023-08-23 08:19:21 39

原创 iptables

数据包会依次经过不同的链。我们可以创建“自定义链”,作为默认链的target使用。相似的规则放在一个表中,一个表只能适用于某些链上。iptables为我们提供了如下”表”:(1)filter表:过滤数据包。(2)nat表:网络地址转换。(3)mangle表:拆解报文,做出修改,并重新封装。(4)raw表:关闭nat表上启用的连接追踪机制。表的优先顺序:raw -> mangle -> nat -> filter表适用的链:增加规则iptables命令格式:(1)-t 表raw, mangle, nat

2023-08-23 08:18:57 98

原创 Linux网络设备

(5)当一个母设备拥有多个VLAN子设备时,子设备之间是隔离的,不存在Bridge那样的交换转发关系,原因如下:802.1.qVLAN协议的主要目的是从逻辑上隔离子网。当母设备收到一包数据时,它将会分析其中的VLANTag,如果有对应的子设备存在,则把数据转发到那个子设备上并根据设置移除VLANTag,否则丢弃该数据。发送到虚拟网络接口中的数据也会出现在该字符设备上。和Bridge一样,母子设备的数据也是有方向的,子设备收到的数据不会进入母设备,同样母设备上请求发送的数据不会被转到子设备上。

2023-08-23 08:18:28 195

原创 inet_pton函数和inet_ntop函数

family,AF_INET 或者 AF_INET6(如果以不被支持的地址族作为family的参数,这两个函数就都返回一个错误,并将errno置为EAFNOSUPPORT。地址的表达格式通常是ASCII字符串,数值格式则是存放到套接字地址结构中的二进制值。如果len太小,不足以容纳表达式结果(包括结尾的空字符),那么返回一个空指针,并置errno为ENOSPC。返回:若成功则为指向结果的指针(就是strptr值),若出错则为NULL。len:存放字符串的大小,防止溢出。addrptr,指向二进制结构体。

2023-08-23 08:17:56 530

原创 主机序与网络序转换

主机字节顺序(HBO,Host Byte Order): 不同的机器HBO不相同,与CPU设计有关,数据的顺序是由cpu决定的,而与操作系统无关。网络字节顺序(NBO,Network Byte Order): 按从高到低的顺序存储,在网络上使用统一的网络字节顺序,可以避免兼容性问题。由于这个原因不同体系结构的机器之间无法通信,所以要转换成一种约定的数序,也就是网络字节顺序。计算机数据表示存在两种字节顺序:NBO与HBO。

2023-08-22 16:42:17 93

原创 使用LD_PRELOAD劫持rand()函数

ode),这通常是您如何构建共享库的方式。这会使代码被加载到随机地址空间中,并阻止其尝试对跳转或调用固定地址。rand()是一个libc函数,如果一个具有相同函数名的共享库被加载到二进制程序中,它将代替真实的函数。设置一个名为LD_PRELOAD的环境变量,并将其值设置为共享库的相对路径或共享库的绝对路径。此选项将二进制文件编译为“位置无关代码”(用于劫持的共享库:rand_hijiack.c。选项,它告诉gcc将其构建为共享库ELF。正常的业务代码:hello.c。

2023-08-22 16:41:59 33

原创 Makefile笔记

endef就好像使用变量一样。在这个命令包的使用中,命令包“run-yacc”中的“就是“fooy”,“^”就是“foo.y”, “就是fooy@”就是“foo.c”。

2023-08-22 16:33:02 20

原创 【linux】ip命令

【代码】【linux】ip命令。

2023-08-22 16:24:43 500

原创 java-库-String

存储一个字符,这样做的目的是为了节省内存,因为大量的长度较短的。类在内存中有不同的优化方式。具体来说,早期JDK版本的。内部的优化不影响任何已有代码,因为它的。仅包含ASCII字符,则每个。存储一个字符,否则,每两个。类型实际上就是两个字节的。对于不同版本的JDK,而较新的JDK版本的。

2023-08-22 16:23:12 23

原创 java-库-Object

equals()不相等,则hashCode()有可能相同(不同对象的哈希值可能冲突)。hashCode()不相同,则一定equals()不相等。equals()相等,则一定hashCode()相同。

2023-08-22 16:21:41 20

原创 java-库-Map

Map的key必须实现equals()方法和hashCode()方法,如果key被用于TreeMap,它必须实现Comparable。

2023-08-22 16:21:04 28

原创 java-库-BigDecimal

方法来比较,它根据两个值的大小分别返回负数、正数和。的值是否相等时,要特别注意,使用。,分别表示小于、大于和等于。的源码,可以发现,实际上一个。的值相等,还要求它们的。表示一个完整的整数,而。

2023-08-22 16:19:52 33

原创 java-库-BigInteger

【代码】java-库-BigInteger。

2023-08-22 16:19:13 54

原创 java-库-随机数

实际上有多种不同的底层实现,有的使用安全随机种子加上伪随机数算法来产生安全的随机数,有的使用真正的随机数生成器。的安全性是通过操作系统提供的安全的随机种子来生成随机数。这个种子是通过CPU的热噪声、读写磁盘的字节、网络流量等各种随机事件产生的“熵”。无法指定种子,它使用RNG(random number generator)算法。

2023-08-22 16:17:13 50

原创 java-库-日志

Commons Logging的特色是,它可以挂接不同的日志系统,并通过配置文件指定挂接的日志系统。默认情况下,Commons Loggin自动搜索并使用Log4j(Log4j是另一个流行的日志系统),如果没有找到Log4j,再使用JDK Logging。SLF4J类似于Commons Logging,也是一个日志接口,而Logback类似于Log4j,是一个日志的实现。Commons Logging,可以作为“日志接口”来使用。(1)默认级别是INFO,因此,INFO级别以下的日志,不会被打印出来。

2023-08-21 08:28:19 20

原创 java-其他-Unsafe

在Java中创建的对象都处于堆内内存(heap)中,堆内内存是由JVM所管控的Java进程内存,并且它们遵循JVM的内存管理机制,JVM会采用垃圾回收机制统一管理堆内存。:与之相对的是堆外内存,存在于JVM管控之外的内存区域,Java中对堆外内存的操作,依赖于Unsafe提供的操作堆外内存的native方法。实现线程的阻塞和唤醒的,而LockSupport的park、unpark方法实际是调用Unsafe的park、unpark方式来实现。堆外内存的分配、拷贝、释放、给定地址值操作等方法。

2023-08-21 08:27:12 44

原创 java-其他-NIO

AIO:等待就绪事件是非阻塞的,实际读写过程也是异步的。是基于事件和回调机制实现的,也就是应用操作之后会直接返回,不会堵塞在那里,当后台处理完成,操作系统会通知相应的线程进行后续的操作。NIO:会一次获取多个就绪的读写事件,这个过程是阻塞的,然后读写也是同步的;BIO:执行某个读操作或写操作,会阻塞直到完成操作,所以为了同时进行多个读写操作需要创建多个线程。《不断升级,Java之BIO、NIO、AIO的演变》《Java 中 NIO 看这一篇就够了》阻塞:指等待IO事件发生的过程。

2023-08-21 08:26:31 19

原创 java-其他-jvm

当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到与之关联的引用队列中。弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用所引用的对象被垃圾回收,JAVA 虚拟机就会把这个软引用加入到与之关联的引用队列中。弱引用可以和一个引用队列(ReferenceQueue)联合使用,如果弱引用所引用的对象被垃圾回收,Java 虚拟机就会把这个弱引用加入到与之关联的引用队列中。

2023-08-21 08:24:27 24

原创 java-其他-junit5使用

cp 要包含 HelloTest.class,还要包含 Hello.class(因为HelloTest.class中有引用)。HelloTest.java 中引用了 Hello 和一些 junit 相关以依赖,要在 -cp 中指定。使用junit5实现类jar包(内部打包了所有junit相关依赖)来执行测试。目录下生成class文件。目录下生成class文件。把它放到工程同级目录下。

2023-08-21 08:23:43 29

原创 java-其他-java agent

Java agent是在JDK1.5引入的,是一种可以动态修改Java字节码的技术。java类编译之后形成字节码被JVM执行,JVM在执行这些字节码之前获取这些字节码信息,并且对这些字节码进行修改,来完成一些额外的功能,这种就是java agent技术。

2023-08-21 08:20:03 59

原创 java-工具-maven

这些 phase 就相当于 Maven 提供的统一的接口,然后这些 phase 的实现由 Maven 的插件来完成。最全的maven的pom.xml文件详解:https://www.cnblogs.com/wkrbky/p/6357884.html。default(或build):部署项目(包含阶段:compile,test,package,install,deploy等)其实就是phase,在一个生命周期中,运行某个阶段的时候,它之前的所有阶段都会被运行。每个生命周期包含多个阶段。每个插件包含多个目标。

2023-08-21 08:16:53 32

原创 java-工具-jdb

JDB是java调试工具。查看jdwp的使用说明:java -agentlib:jdwp=help。

2023-08-21 08:16:20 182

原创 java-并发-AQS应用之Semaphore

本质:类似资源池,池中有n个资源,获取资源时如果不够则等待,释放资源时唤醒等待的线程原理:构造函数入参permits,表示资源个数。获取资源 acquire() 时,如果permits==0则等待,被唤醒后执行 permits = permits-1。释放资源 release() 时,执行 permits = permits + 1,唤醒其他线程。

2023-08-21 08:12:22 36

原创 java-并发-AQS应用之CyclicBarrier

本质:线程到达栅栏后等待,直到n个线程都到达,然后n个线程开始奔向下一个栅栏原理:使用ReentrantLock和Condition实现。

2023-08-21 08:11:46 25

原创 java-并发-AQS应用之CountDownLatch

本质:等待其他线程完成(有m个线程是做任务的,有n个线程在某个栅栏上等待这m个线程做完任务,当所有m个任务完成后,n个线程同时通过栅栏)原理:构造方法传入一个不小于0的整数,表示内部的state=n;countDown() 方法每次调用都会将 state 减 1,当 state 的值为 0 时唤醒所有阻塞在 await() 的线程;而 await() 是一个阻塞方法,当 state 减为 0 的时候,await 方法才会返回。CountDownLatch是一次性的,state值不能重置。

2023-08-19 18:46:55 70

原创 java-锁-自旋锁

原理:自旋锁是指当一个线程尝试获取某个锁时,如果该锁已被其他线程占用,就一直循环检测锁是否被释放,而不是进入线程挂起或睡眠状态。原理:基于链表的可扩展、高性能、公平的自旋锁,申请线程只在本地变量上自旋,它不断轮询前驱的状态,如果发现前驱释放了锁就结束自旋。原理:基于链表的可扩展、高性能、公平的自旋锁,申请线程只在本地变量上自旋,直接前驱负责通知其结束自旋,减少缓存同步的开销。2、从自旋的条件来看,CLH是在前驱节点的属性上自旋,而MCS是在本地属性变量上自旋。适用:锁保护的临界区很小的情况。

2023-08-19 18:45:53 126

原创 java-锁-Lock

当两个线程同时通过lock.lockInterruptibly()想获取某个锁时,假若此时线程A获取到了锁,而线程B只有在等待,那么对线程B调用threadB.interrupt()方法能够中断线程B的等待过程。(1)假设两个线程竞争同一个锁,如果获取锁的线程由于要等待IO或者其他原因(比如调用sleep方法)被阻塞了,但是又没有释放锁,其他线程便只能干巴巴地等待,这将影响程序执行效率。当有多个线程读写文件时,读操作和写操作会发生冲突现象,写操作和写操作会发生冲突现象,但是读操作和读操作不会发生冲突现象。

2023-08-19 18:45:13 100

原创 java-锁-synchronized

的实现使用的是 monitorenter 和 monitorexit 指令,其中monitorenter指令指向同步代码块的开始位置,monitorexit指令则指明同步代码块的结束位置,当执行monitorenter指令时,当前线程将试图获取 objectref(即对象锁) 所对应的 monitor 的持有权,当 objectref 的 monitor 的进入计数器为 0,那线程可以成功取得 monitor,并将计数器值设置为 1,取锁成功。所以锁消除可以节省毫无意义的请求锁的时间。

2023-08-19 18:44:38 171

原创 java-锁-volatile

主线程 A 等待子线程 B 完成(主线程 A 通过调用子线程B 的 join() 方法实现),当子线程 B 完成后(主线程 A 中 join() 方法返回),主线程能够看到子线程的操作。可见性:保证共享变量对所有线程的可见性,当一个线程修改了共享变量的值,新值能立即同步到主内存,其它线程每次使用前立即从主内存刷新。A Happens-Before B,且 B Happens-Before C,那么A Happens-Before C。子线程start()后,子线程中能看到start()前的变量。

2023-08-19 18:43:33 65

原创 java-JDBC

幻读:没有读到的记录,以为不存在,但其实是可以更新成功的,并且,更新成功后,再次读取,就出现了(因为本事务开始生成了查询快照,执行更新操作后就会重新生成一次查询快照,这时其他事务的更新就能够读到了)。脏读: 一个事务会读到另一个事务更新后但未提交的数据,如果另一个事务回滚,那么当前事务读到的数据就是脏数据,这就是脏读(Dirty Read)。SQL数据库对SQL语句相同,但只有参数不同的若干语句可以作为batch执行,即批量执行,这种操作有特别优化,速度远远快于循环执行每个SQL。

2023-08-19 18:41:21 24

原创 java-IO

下面的例子演示了如何编写一个int n;= -1) {// 为什么是继承 FilterInputStream,因为它已经帮我们实现了基本方法,并包含了内部 InputStreamsuper(in);if (n!if (n!

2023-08-19 18:40:45 20

原创 java-注解

1、由编译器使用的注解,这类注解不会被编译进入文件,它们在编译后就被编译器扔掉了。如、。2、由工具处理文件使用的注解,比如有些工具会在加载class的时候,对class做动态修改,实现一些特殊的功能。这类注解会被编译进入文件,但加载结束后并不会存在于内存中。这类注解只被一些底层库使用,一般我们不必自己处理。3、在程序运行期能够读取的注解,它们在加载后一直存在于JVM中,这也是最常用的注解。例如,一个配置了的方法会在调用构造方法后自动被调用(这是Java代码读取该注解实现的功能,JVM并不会识别该注解)。(1

2023-08-19 18:39:59 21

原创 java-正则表达式

(1)正则表达式默认使用贪婪匹配:任何一个规则,它总是尽可能多地向后匹配。如果我们要把搜索到的指定字符串按规则替换,比如前后各加一个。记做一个分组,分组编号从 1 开始。仔细观察上述实际匹配结果,实际上它是完全合理的,因为。给定一个字符串表示的数字,判断该数字末尾。判断是否匹配成功,匹配成功后,才能调用。,而后再加上正则表达式,构成非捕获组。表示该括号只起包裹作用,不作为一组。的时候,我们传入的第二个参数可以使用。,实际上我们期望的结果是。尽量多匹配,我们就必须让。,而后才是正则表达式。

2023-08-19 18:39:10 16

原创 java-异常

表示严重的错误,程序对此一般无能为力。则是运行时的错误,它可以被捕获并处理。

2023-08-19 18:37:21 19

原创 java-序列化

毫无疑问,使用反射。(4)如果父类没有实现Serializable接口,但其子类实现了此接口,那么这个子类是可以序列化的,但是在反序列化的过程中会调用父类的无参构造函数,所以在其直接父类(注意是直接父类)中必须有一个无参的构造函数。(2)使用默认机制在序列化对象时,不仅会序列化当前对象,还会对该对象引用的其它对象也进行序列化,同样地,这些其它对象引用的另外对象也将被序列化,以此类推。(2)因此,第一次写入对象后,修改对象,再写入,修改并不会生效,因为第二次写入的对象指向第一次写入的对象。

2023-08-18 08:22:03 31

WinSetupFromUSB 启动盘制作工具

有了 WinSetupFromUSB 系统安装盘制作工具,你就可以在一个U盘/移动硬盘里同时塞进 Windows 8、XP、WinPE、Ubuntu、CentOS 等多个不同操作系统的安装盘镜像了,以后无论哪台电脑需要重装哪款系统,你的多合一U盘都能发挥作用!

2018-05-12

空空如也

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

TA关注的人

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