- 博客(40)
- 收藏
- 关注
原创 java线程同步-volatile及原子型处理-JUC包工具类
下面执行的效果:执行一直在进行,做死循环,说明vt中修改的flag值没有在主线程中读到。即使我们在子线程中将线程的共享变量flag的值修改成了false,但是主线程在while条件判断的时候读到的flag一直是false,这是什么原因导致的呢?这就涉及到内存的可见性问题了,在讲怎么解决内存可见性问题之前,什么是内存可见性。共享变量:如果一个变量在多个线程的工作内存中都存在副本,那么这个变量就是这几个线程的共享变量可见性:一个线程对共享变量值的修改,能够及时的被其他线程看到(包括主线程)
2025-04-02 12:27:57
367
原创 java-静态块-包装类-==和equals方法-抽象类-接口-内部类
static关键字还有一个比较关键的作用就是用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。为什么说static块可以用来优化程序性能,是因为它的特性:只会在类加载的时候执行一次。
2025-03-10 06:12:17
129
原创 java网络编程和http协议提交响应
网络编程的目的就是直接或间接地通过网络协议与其他计算机进行通信。在 Java 语言中包含网络编程所需要的各种类,编程人员只需要创建这些类的对象,调用相应的方法,就可以进行网络应用程序的编写。要进行网络程序的编写,编程人员需要对下面5个方面的基础知识有一定的了解:1.计算机网络2.网络分类3.网络编程模式4.套接字5.网络通信协议计算机网络指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,
2025-02-22 12:21:04
1122
原创 IO模型与NIO基础--NIO网络传输选择器--字符编码
通过调用Selector.open()方法创建一个Selector,如下:Selector selector = Selector.open();通过Channel.register()方法来实现,注意:Channel和Selector一起使用时,Channel必须处于非阻塞模式下。channel.configureBlocking(false); //设置通道为非阻塞模式SelectionKey key = channel.register(selector,Selectionkey.OP_RE
2025-02-19 06:14:44
398
原创 IO模型与NIO基础二
比如说mark(10),那么在read()10个以内的字符时,reset()操作指针可以回到标记的地方,然后重新读取已经读过的数据,如果已经读取的数据超过10个,那reset()操作后,就不能正确读取以前的数据了,mark()打标记已经失效,reset()会报错。有时候在BufferedInputStream类中调用mark(intreadlimit)方法后,即使读取超过readlimit字节的数据,mark标记仍可能有效,仍然能正确调用reset方法重置。
2025-01-17 12:22:47
542
原创 jsp基础知识
1.安装jdk2.安装tomcat 8.5(解压版的)3.创建Dynamic Web Project这里是jsp基础学习,不用IDEA,也不用创建maven工程,12.3.4.创建jsp文件。
2024-12-26 10:12:00
812
原创 jsp-servlet开发
* js部分的Date相关是防止浏览器缓存后不能正常刷新,添加时间的唯一性来实现能够及时刷新和展示。1.index.jsp嵌入由下面的servlet生成的图片并刷新可重新获得验证码。js 部分可以参阅:JavaScript 语言入门。3.Servlet逻辑判断验证是否正确,再进行相应的跳转。2.Servelt生成验证码图片。
2024-12-23 06:21:35
455
原创 C语言-信号
2.si_code,表示信号来源,由sigqueue()发送的实时信号来说,该值是SI_QUEUE,由用户用kill命令发送的信号,该值是SI_USER。//pid < -1 发送给进程组id = pid的绝对值的进程组下的每个进程,效果等同killpg(pid_t pgrp, int sig);之后如果解除了对该信号的阻塞,就会把该信号传递给此进程(就算在阻塞期间发生了N次,解除时只会传递1次,而实时信号可以排队)。//一个所给定进程ID存在并不一定是你想要找的进程,或许它是一个新的进程,
2024-05-23 12:49:37
918
原创 C语言-进程通信
多线程模型主要优势为线程间切换代价较小,因此适用于I/O密集型的工作场景(),因为I/O密集型的工作场景经常会由于I/O阻塞导致频繁的切换线程。多进程模型的优势是CPU,多进程模型适用于需要频繁的计算场景,比如多机分布式,其实网络编程也可以说是一种跨主机进程通信。
2024-05-20 12:20:10
1274
原创 c语言-mian函数的理解
main函数,又称主函数,是程序执行的起点,也是终点。有且仅有一个。C语言规定main函数函数形参有两个:①argc:参数计数器,整型变量 ,表示参数的个数.②argv:参数数组本身,指向字符串的指针数组,表示存放参数的具体内容.【参数表】【注意】:argv[0]保存自身运行的目录路径和程序名,从argv[1]开始才是指向对应的参数。
2024-05-13 16:29:27
630
原创 C语言-进程-线程
USER: 启动这些进程的用户PID: 进程的ID%CPU 进程占用的CPU百分比;%MEM 占用内存的百分比;VSZ:进程占用的虚拟内存大小(单位:KB)RSS:进程占用的物理内存大小(单位:KB)
2024-05-06 11:40:30
1326
原创 C语言-目录、用户信息和时间的相关操作函数
在系统命令行下我们可以通过 “ mkdir” , “ rmdir” 命令通过Shell来实现帮我们创建一个目录和删除一个目录,倘若参数buf 为NULL,getcwd()会依参数size 的大小自动配置内存(使用malloc()),如果参数size 也为0,则getcwd()会依工作目录绝对路径的字符串长度来决定所配置的内存大小,然后返回自动配置内存的指针,既然是malloc分配的堆内存,用完后记得要用free释放。如果成功,它返回指针buf,我们可以访问buf来获取当前的目录。成功返回0,否则返回-1。
2024-05-04 06:03:49
354
原创 C语言-标准IO及系统调用IO-文件属性的相关操作函数
I/O输入/输出(Input/Output),分为IO设备和IO接口两个部分。在C语言中的I/O,个人理解就是把数据传输到程序就是I,从程序中把数据传输出去就是O。很多时候,数据来源就是文件,所有很多时候我们把对文件的操作,也叫做I/O操作了。关于这样的I/O操作,在Linux操作系统上分两种,其中一个是标准IO,另一个是系统调用IO。
2024-04-28 20:43:30
1181
原创 C语言-Makefile文件—静态库与动态库
我们的课里写的源码文件,也写了一些文件例子,最多也就几个,我们还可以用.c一下子联合编译了make命令执行的时候需要一个说明文件,这个文件名字默认叫,Makefile文件中描述了整个软件工程的编译规则和各个文件之间的依赖关系,我们把这个文件里的内容叫规则;Makefile就像是一个脚本程序一样,它带来的好处就是:一旦写好Makefile文件里的规则,只要一个make命令,整个工程就会自动编译,自动生成最终的可执行文件,能极大的提高了软件开发的效率;
2024-04-25 12:26:49
1653
原创 C语言的内存
程序写好编译后保存在磁盘,然后加载到内存中运行的,一名合格的程序员必须了解内存,学习C语言更是要多了解些内存的知识点,C语言是一门偏向硬件的编程语言。
2024-04-23 13:29:50
877
原创 C语言-构造类型
C语言中构造类型一共有4种,它们分别是: 数组(array)、结构体(struct)、枚举类型(enum)、共用体(union)。1、结构体的基本用法 结构体(Struct)从本质上讲是一种自定义的数据类型,只不过这种数据类型比较复杂,和前面讲过的数组有点像,差别就在数组里的元素必须是同一个类型,而结构体里的成员可以是不同类型的。 在实际开发中,我们可以将一组类型不同的、但是用来描述同一件事物的变量放到一个结构体中。例如,学生有姓名、学号、年龄、班级、成绩等属性,学了
2024-04-18 12:46:08
1163
1
原创 微信小程序云开发
如下图两张所示,直接点击开通内容管理(CMS)即可,两个位置点开##小程序与cms通信------实际上我们用得最多还是数据库,也就是说,操作cms建立的数据,与直接访问数据库一样,首先到云环境后台设置操作权限。
2024-04-18 09:57:12
811
原创 用户与用户组管理
Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。这个文件对所有用户都是可读的。
2023-06-08 13:16:12
316
原创 vim工具的应用
在 vim 中可以同时打开两个文件,只要执行如下命令:#-o 小写 o 会上下分屏打开两个文件#-O 大写 O 会左右分屏打开两个文件这样可以同时打开两个文件, 方便操作。如果是 “-o” 上下打开两个文件, 可以通过先按 “ctrl+w” ,再按“上下箭头”的方式在两个文件之间切换。如果是“-O”左右打开两个文件,可以通过先按“ctrl+w”,再按“左右箭头”的方式在两个文件之间切换。
2023-06-07 10:10:03
197
原创 挂载命令mount
Linux中的根目录以外的文件要想被访问,需要将其“关联”到根目录下的某个目录来实现,这种关联操作就是“挂载”,这个目录就是“挂载点”,解除此关联关系的过程称之为“卸载”。(1)目录事先存在,可以用mkdir命令新建目录;(2)挂载点目录不可被其他进程使用到;(3)挂载点下原有文件将被隐藏。挂载点下最好是空的!
2023-06-06 21:05:01
10725
原创 管道符(文本流)》(追加输出)>(覆盖输出)
命令格式: 命令 1 | 命令 2 或 命令 1 | 命令 2 | 命令3… 命令 1 的正确输出作为命令 2 的操作对象例子 1:把ls -l 命令输出的结果,分页显示: 可是这样操作实在不方便,这时就可以利用管道符了。命令如下:例子 2:在命令 ll /etc/的结果中搜索 yum开头 的文件,grep是检索文件内容的命令例子 3:查看指定端口正在被监听的数量,显示正处在链接状态的远程访问终端的个数 读懂这个需求,先看看什么是端口 一台拥有IP地址的主机可以提供许多服务
2023-06-06 12:03:12
194
原创 xfs文件系统的备份和恢复与磁盘管理
centos7选择xfs格式作为默认文件系统,而且不再使用以前的ext,但它仍然支持ext4,xfs专为大数据产生,每个单个文件系统最大可以支持8eb,单个文件可以支持16tb,不仅数据量大,而且扩展性高。还可以通过xfsdump,xfsrestore来备份和恢复数据。这里我们就先玩玩怎么在xfs文件系统中,完整备份和恢复数据。
2023-06-06 11:14:39
3811
原创 搜索命令whereis,which find grep,locate
A-Za-z] 等价于 [[:alpha:]][0-9] 等价于 [[:digit:]][A-Za-z0-9] 等价于 [[:alnum:]]tab,space 等所有空白字符 [[:space:]][A-Z] 等价于 [[:upper:]][a-z] 等价于 [[:lower:]]标点符号 [[:punct:]]例子:[root@CentOS7 ~]# grep “[[:punct:]]” ./grepdemo.txt。
2023-06-06 06:46:30
520
原创 linux-权限管理基本命令
d:目录文件l:链接文件b:块设备文件s:套接口文件c:字符设备文件p:管道文件,特殊少见的设备-: 表示普通文件w:写r: 读x:执行。
2023-06-05 14:03:15
2182
原创 Docker
首先笼统地说,Docker就是我们上面说的容器模型中的一种具体的实现产品,是一个运行在Windows或Linux上的软件。总体来说,在平时我们口头交流上,说的Docker可能是下面的几种情况:1、Docker公司。2、Docker引擎。3、Docker开源项目( Moby )。Docker 公司Docker公司位于旧金山,由法裔美籍开发者和企业家Solomon Hykes创立,其标志如图:“Docker”一词来自英国口语,意为码头工人(Dock Worker),即从船上装卸货物的人。
2023-06-05 11:50:31
180
原创 linux-Centos7系统时间管理、帮助命令、关机命令和启动级别、恢复root密码
查看和修改系统时间:查看硬件时间:# hwclock查看系统时间:# date修改时间date命令:-s, --set=STRING 把时间设为字符串所描述的时间: 前面我们说过Linux的命令有几千条这多,所以,不可能在课上全部讲完,也不可能一直记得住这门多命令,那么,在工作的时候忘记了某个命令的具体用法,出来查笔记和百度外怎么办?可以查系统自带的帮助文档:1—man 命令 :查看手册页或命令描述例:man ls man命令查看帮助时,支持它支持上翻下翻,搜索(直接输入斜线),退
2023-06-05 11:48:27
166
原创 Centos7.6yum配置
远程连接软件SecureCRT,免安装,解压即可用,可以预先添加所需要连接的主机,打包上传到网盘或其它自已能下载的地方,再次使用时,下载解压直接可用,省不少时间呢。baseurl=file:///mnt -------> /mnt表示的是光盘的挂载点 . file:后面有3个///这是规定。gpgcheck=0 ---->取消验证,自己的yum源一般不用校验它。name=CentOS-server ----->描述信息。enabled=1 ------>启用。
2023-06-03 11:56:24
2857
原创 Docker三剑客
Compose 项目是 Docker 官方的开源项目,其代码目前在https://github.com/docker/compose上开源。通过前面的学习,我们知道使用一个 Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。
2023-05-27 07:02:58
759
2
原创 redis主从复制高可用性-哨兵
哨兵模式就是我们常讲的主从切换技术了,在哨兵模式没出来前,当我们的主服务器宕机了之后,需要人为的去将从机切换成主机去顶一下,在从机中输入命令:slaveof no one ,让 从机 篡位 成为 主机,而主从机的区别就是主机能”写、读“,而从机只能”读“,而人为干预主从切换会造成一段时间内服务不可以使用的问题,于是在Redis2.8之后正式的提供了Sentinel(哨兵模式)架构来解决这个问题,所以哨兵模式也可以理解为:当 某门派大佬驾崩的时候,根据门派内的投票数直接让新老大上位。
2023-04-21 16:03:54
336
1
原创 redis基础
-----Redis是一个使用C语言编写的基于内存的NoSql数据库,它是目前最流行的键值对存储数据库。Redis是由一个Key,Value映射的字典构成,与其它NoSQL不同,Redis中的Value的类型不局限于字符串,还支持冽 表,集合,有序集合,散列等。Redis不仅可以当作缓存使用,还可以配置持久化后当作Nosql数据库用.
2023-04-18 11:56:14
285
1
原创 软件测试A
---站在软件测试的角度来看,软件:是计算机中与 硬件相互依存的一部分,包念了:1。程序2。数据(程序片段)3。相关文档(使用手册)软件测试概念:标准化:ISO(国际标准委员会)GB(国标)IEEE(电子与电气工程师协会):软件测试是使用人工或自动的手段来运行或测定某个软件系统的过程,其目在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。《软件测试的艺术》:软件测试就是一个过程或一系列过程,用来确认计算机代码完成了其应该完成的功能,而不执行其不该有的功能。
2022-11-29 10:51:02
288
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人