Loading
首页
文章分类
技术教程
知识积累
新闻日报
知识分享
今日新闻
其他页面
网站统计
友情链接
高清壁纸
虎牙直播
关于轩灵
热门文章
VS2019避免全部安装至C盘
2023-04月17号更新v2
中兴F450光猫破解隐藏模式让路由器拨号
影子系统出现BAD_SYSTEM_CONFIG_INFO蓝屏问题
WPS专业版密钥经常提示过期解决方案
标签搜索
windows
linux
python
centos
centos7
网络技术
android
win11
windows 11
游戏
系统重装
Deepseek
ai
安卓
系统
Ubuntu
docker
windows server
vmware
esxi
发布
登录
注册
找到
122
篇与
技术
相关的结果
- 第 13 页
2019-01-04
linux下swap分区创建(添加),删除以及相关配置
在添加swap分区之前我们可以了解下当前系统swap是否存在以及使用情况,可用: free -h 或 swapon -s swap total大小不为0则说明开启了swap 了解硬盘使用情况可用: df -hal (一般/dev/vsdb或者/dev/vsdb1又或者/dev/xsdb等为挂载数据硬盘) 添加swap分区 使用dd命令创建名为swap 的swap交换文件(文件名和目录任意): dd if=/dev/zero of=/www/swap bs=1024 count=2097152 count是swap分区的大小 这里为2g 计算方式 就是把2G转为KB 计算方式102410242 就是2G大小了 执行完毕后,对交换文件格式化并转换为swap分区: mkswap /www/swap 挂载并激活分区: swapon /www/swap 执行以上命令可能会出现:“不安全的权限 0644,建议使用 0600”类似提示,不要紧张,实际上已经激活了,可以忽略提示,也可以听从系统的建议修改下权限: chmod -R 0600 /www/swap 这时候可以用 free -h 或 swapon -s命令查看新swap分区是否正常添加并激活使用。 修改 fstab 配置,设置开机自动挂载该分区: vim /etc/fstab 或者 vi /etc/fstab 在fstab文件末尾追加如下内容后:wq!保存即可: /www/swap swap swap defaults 0 0 或不进入vi、vim模式直接对fstab进行echo追加输入命令: echo "/www/swap swap swap defaults 0 0" >> /etc/fstab 重启服务器 在输入free -h 或 swapon -s命令查看新swap分区是否正常添加并激活使用。 删除某swap分区 先停止正在使用swap分区: swapoff /www/swap 删除swap分区文件 rm -rf /www/swap 删除或注释掉我们之前在fstab文件里追加的开机自动挂载配置内容: vi /etc/fstab #/www/swap swap swap defaults 0 0 更改Swap配置(进阶级) swappiness值(0-100),系统对swap分区的依赖程度,越高则越倾向于使用swap分区。 当然,高度依赖swap会造成物理内存远未使用完,就使用swap分区,我们知道swap分区性能远不如物理内存,这反而降低了系统性能,违背了我们创建swap分区的初衷。 我们希望在物理内存即将满荷时再使用swap,这就决定了swappiness值一般为10-60为宜,固态硬盘可以偏高些。 查看当前的swappiness数值: cat /proc/sys/vm/swappiness 修改swappiness值,这里以50为例。 sysctl vm.swappiness=50 若希望vm.swappiness=50永久生效,则需要修改sysctl配置文件,直接echo追加配置内容,重启系统后即可生效: echo "vm.swappiness = 50" >> /etc/sysctl.conf
技术
分享
# linux
轩灵
2019-01-04
0
8,677
158
2019-01-04
linux系统挂载数据盘的方法
挂载/卸载磁盘 登录 用Linux 的SSH 登陆软件(xshell 或者putty) 登陆主机服务器。 查看磁盘信息 在没有分区和格式化数据盘之前,使用 df –h(回车)命令,是无法看到数据盘的,可以使fdisk -l(回车)命令查看。如下图: title="https://blog.wenfxl.com/usr/uploads/2019/01/152481997.jpg"图片 友情提示:若您执行fdisk -l命令,发现没有 /dev/xvdb、/dev/xsdb、/dev/sdb、/dev/xsdb等任意一个,表示您的云服务无数据盘,那么您无需进行挂载,此时该教程对您不适用 对数据盘进行分区 执行fdisk -S 56 /dev/xvdb(回车) 命令,对数据盘进行分区; 根据提示,依次输入 n(回车) p(回车) 1(回车) (直接回车) (直接回车) wq(回车) 分区就开始了,很快就会完成。 title="https://blog.wenfxl.com/usr/uploads/2019/01/843008131.jpg"图片 查看新分区 使用fdisk -l命令可以看到,新的分区xvdb1已经建立完成了。 title="https://blog.wenfxl.com/usr/uploads/2019/01/819121234.jpg"图片 格式化新分区 使用mkfs.ext3 /dev/xvdb1命令对新分区进行格式化,格式化的时间根据硬盘大小有所不同。 (也可自主决定选用 ext4 格式) title="https://blog.wenfxl.com/usr/uploads/2019/01/2792397957.jpg"图片 建立挂载目录 mkdir /mnt/xvdb1 mount /dev/xvdb1 /mnt/xvdb1 --------挂载到/mnt/sdb1目录下 这里要说一点的是,因为我系统盘里有www目录,先把数据盘挂载到其他盘。然后进行数据转移,在把数据盘挂载到www目录下,另外一篇《linux www目录大小调整或增加分区/硬盘的方法》会写 添加分区信息 使用echo '/dev/xvdb1 /mnt/xvdb1 ext3 defaults 0 0' >> /etc/fstab命令 回车写入新分区信息。 然后使用cat /etc/fstab命令查看,出现以下信息就表示写入成功。 title="https://blog.wenfxl.com/usr/uploads/2019/01/1832531235.png"图片 输入reboot重启服务器 开机输入df -h查看dev/xvdb1还在就可以使用了 卸载分区 umount /dev/xvdb1 -------卸载分区 fdisk /dev/xvdb -------根据提示输入d,删除分区
技术
分享
轩灵
2019-01-04
0
850
152
2019-01-02
python学生管理系统
student_infos=[] def print_menu(): print("="*42) print("某学院学生管理系统") print("1.添加学生信息") print("2.删除学生信息") print("3.修改学生信息") print("4.显示所有学生信息") print("5.查看学生各科成绩与总分") print("6.查看学生最低成绩") print("7.查看学生最高成绩") print("0.退出系统") print("=" * 42) def add_info(): global student_infos new_id = int (input("输入学生学号:")) new_name=input("输入学生名字:") new_sex = input("输入学生性别:(男or女)") new_phone=input("输入学生电话:") new_math = int(input("语文成绩:")) new_chinese = int(input("数学成绩:")) new_english = int(input("英语成绩:")) for t_info in student_infos: if t_info['id'] == new_id: print("此用户名已经被占用,请重新输入") return new_infos={} new_infos['id'] = new_id new_infos['name']=new_name new_infos['sex']=new_sex new_infos['phone']=new_phone new_infos['chinese'] = new_chinese new_infos['math'] = new_math new_infos['english'] = new_english student_infos.append(new_infos) def del_info(): #删除学生学号 global student_infos del_id = int(input("请输入要删除的学生学号:")) i = 0 for t_info in student_infos: if t_info['id'] == del_id: del_flag = input("你确定要删除么?(yes/no)") if del_flag == "yes": del student_infos[i] print("\n\n删除成功!") else: print("输入学号有误,请重新输入") i += 1 def modify_info(): id = int(input("请输入你要修改学生的学号:")) # 检测是否有此学号,然后进行修改信息 i = 0 leap = 0 for t in student_infos: if t['id'] == id: leap = 1 break else: i = i + 1 if leap == 1: while True: Name = input("输入更改后的姓名:") Sex = input("输入更改后的性别:") phone = input("输入更改后的手机号码:") t['name'] = Name t['sex'] = Sex t['phone'] = phone print("修改成功") break else: print("没有此学号,修改失败!") def Search_num(student_infos, new_id): print("学号 姓名 性别 手机号码 语文 数学 英语 总分") count = 0 for t_info in student_infos: if t_info['id'] == new_id: scorenum=int(t_info['chinese']+t_info['math']+t_info['english']) print (t_info['id'], '\t' ,t_info['name'],'\t', t_info['sex'],'\t',t_info['phone'], '\t', t_info['chinese'], '\t',t_info['math'], '\t',t_info['english'], '\t',scorenum) break count = 0 if count == len(student_infos): print ("没有该学生学号!") def max_min(x, y, z): global maxmark global minmark maxmark = minmark = x if y > maxmark: maxmark = y else: minmark = y if z > maxmark: maxmark = z else: minmark = z def min_mark(student_infos, new_id): count = 0 for t_info in student_infos: if t_info['id'] == new_id: max_min(t_info['chinese'],t_info['math'],t_info['english']) print("学号 姓名 性别 手机号码 最低成绩 ") print (t_info['id'], '\t' ,t_info['name'],'\t', t_info['sex'],'\t',t_info['phone'], '\t', minmark) break count = 0 if count == len(student_infos): print ("没有该学生学号!") def max_mark(student_infos, new_id): count = 0 for t_info in student_infos: if t_info['id'] == new_id: max_min(t_info['chinese'],t_info['math'],t_info['english']) print("学号 姓名 性别 手机号码 最高成绩 ") print (t_info['id'], '\t' ,t_info['name'],'\t', t_info['sex'],'\t',t_info['phone'], '\t', maxmark) break count = 0 if count == len(student_infos): print ("没有该学生学号!") def show_infos(): print("=" * 42) print("学生信息如下:") print("=" * 42) print("学号 姓名 性别 手机号码 语文 数学 英语") i=0 for temp in student_infos: print("%d %s %s %s %d %d %d"%(temp['id'],temp['name'],temp['sex'],temp['phone'],temp['chinese'],temp['math'],temp['english'])) i=i+1 def main(): while True: print_menu() key=input("输入对应的数字") if key=='1': add_info() elif key=='2': del_info() elif key == '3': modify_info() elif key == '4': show_infos() elif key == '5': ID = int(input("请输入学生的学号")) Search_num(student_infos, ID) elif key == '6': ID = int(input("请输入学生的学号")) min_mark(student_infos, ID) elif key == '7': ID = int(input("请输入学生的学号")) max_mark(student_infos, ID) elif key == '0': quit_confirm=str(input("退出yes or no?偷偷告诉你没有返回键!")) if quit_confirm.lower()=='yes': break elif quit_confirm.lower()=='no': continue else: print("输入有误,重新输入代码!") main()本python管理系统是博主帮“搞机帮-林林”那个蠢货写的23333
默认分类
技术
分享
# python
轩灵
2019-01-02
0
827
133
2018-12-30
(自行研究结果)华为emui9.0 root教程
华为emui9.0 root教程 首先需要华为emui9.0 的刷机包,大家可以把手机进入fastboot模式,插在电脑上,用华为手机助手点击修复系统,会自动下载好官方系统。或者使用华为官改刷机包。 提取刷机包内recovery_ramdisk.img放入手机。怎么提取请自行解决。如果这都不会,那就不需要弄root了 安装Magisk Manager这个软件。安装好运行后,点击修补boot镜像,选择提取的recovery_ramdisk.img文件。 把刚才保存生成的文件,路径sdcard/Download/patched_boot.img传输到电脑。 手机插上数据线,进入fastboot模式。刷过机的都会 使用adb命令输入fastboot flash recovery_ramdisk patched_boot.img这个命令。 完成后记住,重启手机到rec模式,一定记住是rec模式才能正常使用root。 注:当然,root首先得用解锁码解锁手机。不过华为7月份已关闭解锁通道。以后使用手机重启时,不能进行正常开机系统,一定要重启到rec,重启就到Magisk Manager这个软件里面内置的重启按钮重启。或者开机时,按音量加和电源键一起开机进入rec模式,就会自动进入系统。正常的rec模式就已经坏了,如果想要更新系统,先还原之前没有修补的recovery_ramdisk.img。教程思路来自国外xda大神文章所启发。
技术
分享
轩灵
2018-12-30
5
4,645
113
2018-12-25
Win10启动提示Winload.exe 0xc000000e
我们有时候在升级系统或者做些其他操作后,容易出现这个问题。当我们出现了这个问题的时候不需要惊慌,只需要按照以下方式操作即可。 使用制作好的启动盘,插上电脑。进入启动盘系统安装界面,我们不要点击下一步,直接按shift+F10呼出命令行界面输出以下命令 cd c:\windows\system32\ bcdedit /set {default} osdevice boot bcdedit /set {default} device boot bcdedit /set {default} detecthal 1操作成功后 重启电脑,如果依然无法解决重装系统即可。
技术
分享
知识积累
# windows
轩灵
2018-12-25
0
1,809
197
2018-11-16
记一次服务器磁盘突然爆满
昨日,阿里云发来一条消息,磁盘监控报警。 开始没有在意,以为是当时请求量过高导致的,直到晚上的时候,发现站点无法打开,数据库也无法连接,查看监控信息发现系统磁盘全部满了。。 开始以为: 原因就是,当一个文件正在被一个进程使用时,用户删除此文件,文件只会从目录结构中删除,但并没有从磁盘删除。当使用这个文件的进程结束后,文件才会真正的从磁盘删除,释放占有的空间。 尝试kill掉进程,清空/tmp目录,无解。磁盘仍然是占满的状态。 然后检查目录大小,发现我的web站点目录26G。服务器被注入文件了? 看到runtime目录,占用了26G的储存。runtime目录是thinkphp框架的缓存和日志目录。 进这个目录后,发现里面有N个日志文件,每个文件2M。 打开某个日志后查看详细信息后,里面全是数据库连接失败的错误日志,到这里已经知道是什么原因导致thinkphp5生成了这么多的日志文件了。 由于站点使用了队列来处理一些代码,为了方便,队列使用数据库作为驱动,而队列会持续查询数据库队列表,来处理任务。 而队列执行时是在cli模式下的,在thinkphp5.1文档里连接数据库一章有提到: 如果你使用的是长连接或者命令行,在超出一定时间后,数据库连接会断开,这个时候你需要开启断线重连才能确保应用不中断。 正是因为没有开始断线重连,数据库断开后但是队列一直在轮询着,才导致了框架一直生成错误日志,正好框架日志生成,默认没有自动删除日志配置,日志文件会一直累加。 接下来知道原因,解决方法就简单了。 框架开启数据库断线重连 开启日志自动清理(thinkphp V5.1.6+)
默认分类
技术
分享
# linux
轩灵
2018-11-16
0
1,400
145
2018-11-08
启动盘制作时出现错误解决方式
微软最新的 9 月份 1803 系统 install.wim 超过了 4G 软碟通下载打开链接 找到必备工具 即可看到软碟通 机械师工具箱下载 问题: 1. 在用软碟通写入镜像文件 install.wim 大于 4G 的时候,会发现这个文件写不进去 2. 在软碟通写入完成后,重装时会提示 install.wim 错误 分析: 由于 uefi 启动所支持的是 fat32 格式的磁盘,也就是我们 U 盘磁盘格式为fat32 这种类型,但是 fat32 有一个弊端就是不支持单个文件大于 4G。而在微软某些版本中 install.wim 这个文件已经超过了 4G。所以显然写不进去。 也有些人说用最新软碟通写进去了,但我想说的是。为什么能够写进去,因为磁盘格式转换成了 ntfs 格式。因为 ntfs 支持单个文件大于 4G。但是在很多情况下 uefi 启动是不支持 ntfs 的,这个需要主板支持。所以本文档的解决方式不推荐这种把磁盘转换为 ntfs 和 exfat 这种格式进行 注:不要用 ntfs 格式来做启动盘,这样对 U 盘会造成不可逆转的损伤。 首先解决这种问题的方式有好几种 把磁盘直接转换为 ntfs 格式,然后把镜像文件用压缩软件打开,把所有文件解压到 U 盘。然后启动盘就制作完毕了。 把磁盘直接转换为 exfat 格式,然后把镜像文件用压缩软件打开,把所有文件解压到 U 盘。然后启动盘就制作完毕了。 用 rufus 软件制作启动盘。可以制作单个文件大于 4G。 用软碟通选择 usb+hdd+v2 高级隐藏方式写入,写入后删除 1 分区sources/install.wim 文件,然后用打开 cmd 命令提示符以管理员方式运行,使用convert E: /fs:ntfs 命令转换 2 分区为 ntfs,注意盘符。在复制 1 分区所有文件到 2 分区,再把镜像里面完整的 install.wim 复制到 2 分区的 sources 目录。大功告成。 用软碟通进行常规方式写入,写入后进入 U 盘删除 sources/install.wim 文件。因为单文件大于 4G 而 fat32 支持最大单文件不超过 4G 所以这个 install 文件在这里就只有 100 多 MB 或者几百 MB。如下图 1 图 2: 解压镜像文件。解压后找到 sources/install.wim 文件。然后把这个文件复制到 C 盘。复制到 C 盘后 此时运行机械师工具箱,点击对应功能按钮,等待执行完毕。如图 3 然后会看到 C 盘多出来了 2 个 swm 格式的 install 文件。把这 2 个文件复制到 U 盘的sources 目录里面即可。如图 4 好了 关于单个文件大于 4G 制作启动盘的方法就讲到这里了。所有方式我在制作启动盘的过程中都使用过,经常使用第 4 种和第 5 种,但是有些主板不支持第 1.2.3.4 种方式,写入后启动不了,或者重装的安装界面报错。个人推荐使用第 5 种方法。因为第 5种方法 u 盘磁盘格式为 fat32。这是 uefi 启动兼容性最好的格式。
默认分类
技术
分享
# windows
轩灵
2018-11-08
0
2,900
179
2018-10-11
Java 堆栈信息对象 StackTraceElement,获取当前线程的执行方法
java.langStackTraceElement类保存了Java中线程中的方法栈信息: 4个属性: /** * 声明的类,是类的全限定名 */ private String declaringClass; /** * 方法名 */ private String methodName; /** * 文件名一般指:XXX.java */ private String fileName; /** * XX.java类中的行数 */ private int lineNumber;一个简单的在SpringBoot 2.0.5-RELEASE 下的示例: for ( StackTraceElement ele : Thread.currentThread().getStackTrace()) { System.out.println("线程栈信息输出:" + ele.getClassName() + "$" + ele.getMethodName() + "$" + ele.getFileName() + "$" + ele.getLineNumber()); }输出结果如下: 线程栈信息输出:java.lang.Thread$getStackTrace$Thread.java$1559 线程栈信息输出:com.example.myboot.businessTests.RabbitMQTest$test2$RabbitMQTest.java$54 线程栈信息输出:sun.reflect.NativeMethodAccessorImpl$invoke0$NativeMethodAccessorImpl.java$-2 线程栈信息输出:sun.reflect.NativeMethodAccessorImpl$invoke$NativeMethodAccessorImpl.java$62 线程栈信息输出:sun.reflect.DelegatingMethodAccessorImpl$invoke$DelegatingMethodAccessorImpl.java$43 线程栈信息输出:java.lang.reflect.Method$invoke$Method.java$498 线程栈信息输出:org.junit.runners.model.FrameworkMethod$1$runReflectiveCall$FrameworkMethod.java$50 线程栈信息输出:org.junit.internal.runners.model.ReflectiveCallable$run$ReflectiveCallable.java$12 线程栈信息输出:org.junit.runners.model.FrameworkMethod$invokeExplosively$FrameworkMethod.java$47 线程栈信息输出:org.junit.internal.runners.statements.InvokeMethod$evaluate$InvokeMethod.java$17 线程栈信息输出:org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks$evaluate$RunBeforeTestExecutionCallbacks.java$73 线程栈信息输出:org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks$evaluate$RunAfterTestExecutionCallbacks.java$83 线程栈信息输出:org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks$evaluate$RunBeforeTestMethodCallbacks.java$75 线程栈信息输出:org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks$evaluate$RunAfterTestMethodCallbacks.java$86 线程栈信息输出:org.springframework.test.context.junit4.statements.SpringRepeat$evaluate$SpringRepeat.java$84 线程栈信息输出:org.junit.runners.ParentRunner$runLeaf$ParentRunner.java$325 线程栈信息输出:org.springframework.test.context.junit4.SpringJUnit4ClassRunner$runChild$SpringJUnit4ClassRunner.java$251 线程栈信息输出:org.springframework.test.context.junit4.SpringJUnit4ClassRunner$runChild$SpringJUnit4ClassRunner.java$97 线程栈信息输出:org.junit.runners.ParentRunner$3$run$ParentRunner.java$290 线程栈信息输出:org.junit.runners.ParentRunner$1$schedule$ParentRunner.java$71 线程栈信息输出:org.junit.runners.ParentRunner$runChildren$ParentRunner.java$288 线程栈信息输出:org.junit.runners.ParentRunner$access$000$ParentRunner.java$58 线程栈信息输出:org.junit.runners.ParentRunner$2$evaluate$ParentRunner.java$268 线程栈信息输出:org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks$evaluate$RunBeforeTestClassCallbacks.java$61 线程栈信息输出:org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks$evaluate$RunAfterTestClassCallbacks.java$70 线程栈信息输出:org.junit.runners.ParentRunner$run$ParentRunner.java$363 线程栈信息输出:org.springframework.test.context.junit4.SpringJUnit4ClassRunner$run$SpringJUnit4ClassRunner.java$190 线程栈信息输出:org.junit.runner.JUnitCore$run$JUnitCore.java$137 线程栈信息输出:com.intellij.junit4.JUnit4IdeaTestRunner$startRunnerWithArgs$JUnit4IdeaTestRunner.java$68 线程栈信息输出:com.intellij.rt.execution.junit.IdeaTestRunner$Repeater$startRunnerWithArgs$IdeaTestRunner.java$47 线程栈信息输出:com.intellij.rt.execution.junit.JUnitStarter$prepareStreamsAndStart$JUnitStarter.java$242 线程栈信息输出:com.intellij.rt.execution.junit.JUnitStarter$main$JUnitStarter.java$70从结果中我们可以看出, 栈顶是Thread的getStackTrace方法,这个很好理解。Thread.currentThread().getStackTrace()[1] 是当前执行查看堆栈信息的方法RabbitMQTest的test2。 栈底是 JUnitStarter的main 方法,然后我们看到实际调用了 org.springframework.test.context.junit4.SpringJUnit4ClassRunner的run 方法。
技术
分享
轩灵
2018-10-11
0
2,008
153
上一页
1
...
12
13
14
...
16
下一页