首页
归档
留言
友链
广告合作
壁纸
更多
美女主播
Search
1
博瑞GE车机升级/降级
5,611 阅读
2
Mac打印机设置黑白打印
4,953 阅读
3
修改elementUI中el-table树形结构图标
4,896 阅读
4
Mac客户端添加腾讯企业邮箱方法
4,675 阅读
5
intelliJ Idea 2022.2.X破解
4,358 阅读
后端开发
HarmonyOS Next
Web前端
微信开发
开发辅助
App开发
数据库
随笔日记
登录
/
注册
Search
标签搜索
Spring Boot
Java
Vue
Spring Cloud
Mac
MyBatis
WordPress
MacOS
asp.net
Element UI
Nacos
.Net
Spring Cloud Alibaba
MySQL
Mybatis-Plus
Typecho
jQuery
Java Script
IntelliJ IDEA
微信小程序
Laughing
累计撰写
627
篇文章
累计收到
1,421
条评论
首页
栏目
后端开发
HarmonyOS Next
Web前端
微信开发
开发辅助
App开发
数据库
随笔日记
页面
归档
留言
友链
广告合作
壁纸
美女主播
搜索到
627
篇与
的结果
2025-04-18
JDK自带的虚拟机性能监控、故障处理工具
Java在个版本的JDK中为我们提供了各种JVM性能监控及故障处理的小程序,当然,随着JDK版本的迭代,这些小工具的数量和功能也在不知不觉的增加与增强。本文我们会介绍JDK自带的摘日常开发过程中常用的监控虚拟机运行状态和故障处理的工具。{mtitle title="jps:虚拟机进程查看工具"/}jps命令与Linux下的ps命令类似,可以列示当前正在运行的虚拟机进程,并显示虚拟机进程的主类名称以及泽泻进程本地虚拟机唯一的ID(LVMID),后续我们介绍的工具,大都需要提供虚拟机的LVMID。对于本地虚拟机而言,LVMID与操作系统的进程ID是一致的。jps命令格式jps [option] [hostid]jps工具组要选项 选项 擢用 -q 只输出LVMID,省略主类的名称 -m 输出虚拟机进程启动时传输主类main()函数的参数 -l 输出主类的全称,如果执行的是JAR包,则输出JAR包路径 -v 输出虚拟机集成启动时的JVM参数 当然我们常用的就是jps -l命令,输出所有信息。{mtitle title="jstat:虚拟机统计信息监视工具"/}jstat用于监视虚拟机各种运行状态信息,可以显示本地或者远程虚拟机进程中的类加载、内存、垃圾回收、即时编译等运行时数据。jstat命令格式jstat [option] [lvmid] [internal] [count]option是各类参数lvmid是虚拟机进程的ID,也就是我们jps查询出的IDinternal是间隔多长时间刷新一次count是一共刷新的次数 选项 作用 -class 监视类加载、卸载信息、总空间以及类装载耗时 -gc 监视Java堆状况,包括Eden区、2个Survivor区,老年带、永久带的容量,已使用空间、垃圾收集时间合计等信息 -gccapacity监视内容与-gc基本相同,单输出内容主要关注Java堆各个区域使用到的最大、最小空间-gcutil监视内容基本与-gc相同,但输出内容主要关注已使用空间占总空间的百分比-gccause与-gcutil功能一样,但是会额外输出导致上一次垃圾回收的原因-gcnew监视新生代垃圾收集情况-gcnewcapacity监视内容与-gcnew基本相同,输出主要关注使用的最大、最小空间-gcold监视老年代垃圾收集情况-gcoldcapacity监视内容与-gcold基本相同,输出主要关注使用的最大、最小空间-gcmetacapacity元空间的最大、最小空间-compiler输出即时编译器编译过的方法、耗时等信息-printcompiilation输出已经被即时编译的方法-class类加载统计jstat -class 24272Loaded:加载class的数量Bytes:所占用空间大小Unloaded:未加载数量Bytes:未加载占用空间Time:时间-gc垃圾回收统计jstat -gc 24272S0C:第一个幸存区的大小S1C:第二个幸存区的大小S0U:第一个幸存区的使用大小S1U:第二个幸存区的使用大小EC:伊甸园区的大小EU:伊甸园区的使用大小OC:老年代大小OU:老年代使用大小MC:方法区大小MU:方法区使用大小CCSC:压缩类空间大小CCSU:压缩类空间使用大小YGC:年轻代垃圾回收次数YGCT:年轻代垃圾回收消耗时间FGC:老年代垃圾回收次数FGCT:老年代垃圾回收消耗时间GCT:垃圾回收消耗总时间-gccapacity堆内存统计jstat -gccapacity 24272NGCMN:新生代最小容量NGCMX:新生代最大容量NGC:当前新生代容量S0C:第一个幸存区大小S1C:第二个幸存区的大小EC:伊甸园区的大小OGCMN:老年代最小容量OGCMX:老年代最大容量OGC:当前老年代大小OC:当前老年代大小MCMN:最小元数据容量MCMX:最大元数据容量MC:当前元数据空间大小CCSMN:最小压缩类空间大小CCSMX:最大压缩类空间大小CCSC:当前压缩类空间大小YGC:年轻代gc次数FGC:老年代GC次数-gcutil堆内存占比统计jstat -gcutil 24272S0:幸存1区当前使用比例S1:幸存2区当前使用比例E:伊甸园区使用比例O:老年代使用比例M:元数据区使用比例CCS:压缩使用比例YGC:年轻代垃圾回收次数FGC:老年代垃圾回收次数FGCT:老年代垃圾回收消耗时间GCT:垃圾回收消耗总时间-gcnew新生代垃圾回收统计jstat -gcnew 24272S0C:第一个幸存区大小S1C:第二个幸存区的大小S0U:第一个幸存区的使用大小S1U:第二个幸存区的使用大小TT:对象在新生代存活的次数MTT:对象在新生代存活的最大次数DSS:期望的幸存区大小EC:伊甸园区的大小EU:伊甸园区的使用大小YGC:年轻代垃圾回收次数YGCT:年轻代垃圾回收消耗时间-compiler编译统计jstat -compiler 24272Compiled:编译数量。Failed:失败数量Invalid:不可用数量Time:时间FailedType:失败类型FailedMethod:失败的方法{mtitle title="jinfo:Java配置信息工具"/}jinfo(Configuration Info for Java)的作用是实时查看和调整虚拟机各项参数。说是能调整,但是基本也不会有人调整吧,其实主要还是查看参数信息,特别是一些我们没有指定的隐式的默认参数。-sysprops:查看该进程的全部配置信息jinfo -sysprops 24272其实会输出很多信息,这里只截取了部分。-flags:查看曾经赋过值的参数值jinfo -flags 24272-flag: 查看具体参数的值用法如下jinfo -flag [options] [lvmid]比如查看最大堆内存jinfo -flag MaxHeapSize 24272{mtitle title="jmap:Java内存映像工具"/}jmap主要用于生成堆转储快照,类似与java启动命令的-XX:+HeapDumpOnOutOfMemoryError。除此之外,jmap还可以查询finalize执行队列、Java堆和方法区的想起信息。选项作用-dump生成Java堆转储快照,格式为-dump:[live,]format=b,file=>,其中live子参数说明是否只dump出存活的对象-finalizerinfo显示在F-Queue中等待Finalizer线程执行finalize方法的对象-heap显示Java堆详细信息-histo显示堆中对象统计信息,包括类、实例数量、合计容量-F当虚拟机进程堆-dump选项无响应时,可强制生成dump快照-dump生成堆转储快照jmap -dump:format=b,file=test.hsprof 24272然后可以对堆转储快照进行分析。{mtitle title="jstack:Java堆栈跟踪工具"/}jstack(Stack Trace for Java)命令用于生成虚拟机当前时刻的线程快照(一般称为threaddump或者javacore文件)。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的目的通常是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间挂起等,都是导致线程长时间停顿的常见原因。线程出现停顿时通过jstack来查看各个线程的调用堆栈,就可以获知没有响应的线程到底在后台做些什么事情,或者等待着什么资源。命令格式jstack [ option ] lvmid选项作用-F当正常输出的请求不被响应时,强制输出线程堆栈-l出堆栈外,额外显示锁信息-m如果调用本地方法的话,可以显示C/C++的堆栈jstack 24272
2025年04月18日
12 阅读
0 评论
0 点赞
2025-04-16
常用的dump文件分析工具
当系统发生内存溢出时,我们一般的处理方式都是通过抓取内存堆转储快照的形式进行分析,本文我们介绍几种日常常用的dump文件分析工具。准备工作我们通过-XX:+HeapDumpOnOutOfMemoryError参数让虚拟机在出现内存溢出时Dump出当前的内存堆转储快照,然后对Dump出的文件进行分析。示例代码如下import java.util.ArrayList; import java.util.List; public class HeapDump { static class HeapDumpObject { } public static void main(String[] args) { List<HeapDumpObject> heapDumpObjectList = new ArrayList<>(); while (true) { heapDumpObjectList.add(new HeapDumpObject()); } } }我们通过命令运行程序javac HeapDump.java java -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError HeapDump此时程序会在程序运行目录下生成.hprof格式的dump文件,我们可以针对此文件进行分析,查找内存泄漏对象的引用路径,并定位到代码具体位置。工具一:JVisualVMJVisualVM是JDK自带的dump,目前在JDK中已经没有预置此工具了,我们可以通过 官网进行下载。点击左上角,可以加载我们的dump文件可以切换摘要、线程等页签,查看不同的跟踪信息。工具二:IntelliJ Idea自带的分析器依次打开【视图】-【工具窗口】- 【分析器】点击【打开快照】,选择我们上方生成的.hprof文件可以分析最大对象以及定位我们异常发生的位置。工具三:MATMAT全称Memory Analyzer,是eclipse出品的一款独立的内存分析工具,可以在 官网下载。{message type="success" content="下载时,注意选择镜像位置,默认日本节点较慢"/}打开软件后,选择[Open a Heap Dump]可以查看对象占用空间等信息,也可以定位具体代码位置工具三:JProfilerJProfiler 是一款强大的性能分析工具,能够深入分析 Java 应用程序的 CPU 使用情况、内存消耗、线程状态和数据库查询,从而帮助快速定位性能瓶颈。打开JProfiler后,点击左上角【会话】-【打开快照】,可以选择我们本地的dump文件。双击占用最大的类,然后引用选择【传入引用】在【引用】页签,选择点击【显示更多】,可以查看异常代码的位置。
2025年04月16日
16 阅读
0 评论
0 点赞
2025-04-16
java获取JVM信息
在Java或者Spring Boot日常开发过程中,因为Java的自动垃圾回收机制,我们可能很少关注JVM的信息,面临性能问题时,我们可能也会更多的借助JProfiler等第三方工具进行问题分析。比如我们需要做一个程序运行健康监控功能,我们可能就需要获取Jvm的信息,下面我们就看一下如何在Java中获取Jvm信息。首先我们定义两个公共方法,分别是用来将毫秒转换成时分秒,另外一个方法是将时间戳转换成时分秒毫秒。/** * 毫秒转换成时分秒 * * @param uptime 毫秒 * @return 时分秒 */ protected static String toDuration(double uptime) { NumberFormat fmtI = new DecimalFormat("###,###", new DecimalFormatSymbols(Locale.ENGLISH)); NumberFormat fmtD = new DecimalFormat("###,##0.000", new DecimalFormatSymbols(Locale.ENGLISH)); uptime /= 1000; if (uptime < 60) { return fmtD.format(uptime) + " 秒"; } uptime /= 60; if (uptime < 60) { long minutes = (long) uptime; return fmtI.format(minutes) + "分"; } uptime /= 60; if (uptime < 24) { long hours = (long) uptime; long minutes = (long)((uptime - hours) * 60); String s = fmtI.format(hours) + "时"; if (minutes != 0) { s += " " + fmtI.format(minutes) + "分"; } return s; } uptime /= 24; long days = (long) uptime; long hours = (long)((uptime - days) * 24); String s = fmtI.format(days) + "天"; if (hours != 0) { s += " " + fmtI.format(hours) + "时"; } return s; } /** * 时间戳钻日期 * * @param timeStamp 时间戳 * @return 日期 */ protected static String timeStamp2Date(long timeStamp) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.ENGLISH); return simpleDateFormat.format(timeStamp); }{mtitle title="获取Jvm基本信息"/}可以获取jvm的名称、jvm版本、jvm制造商、java版本、jvm启动时间、jvm运行时间等信息RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean(); System.out.printf("jvm名称:%s %n", runtimeMXBean.getVmName()); System.out.printf("jvm版本:%s %n", runtimeMXBean.getVmVersion()); System.out.printf("jvm制造商:%s %n", runtimeMXBean.getVmVendor()); System.out.printf("java版本:%s %n", System.getProperty("java.version")); System.out.printf("jvm启动时间:%s %n", timeStamp2Date(runtimeMXBean.getStartTime())); System.out.printf("jvm运行时间:%s %n", toDuration(runtimeMXBean.getUptime()));{mtitle title="获取编译信息"/}可以获取编译器名称、编译耗时及是否支持及时编译器编译监控。CompilationMXBean compilationMXBean = ManagementFactory.getCompilationMXBean(); System.out.printf("编译器名称:%s %n", compilationMXBean.getName()); System.out.printf("编译耗时:%s %n", toDuration(compilationMXBean.getTotalCompilationTime())); System.out.printf("是否支持及时编译器编译监控:%s %n", compilationMXBean.isCompilationTimeMonitoringSupported());{mtitle title="获取线程信息"/}可以获取总线程数、守护进程线程数、峰值线程数、Java虚拟机启动后创建并启动的线程总数、是否支持测量当前线程的CPU时间等信息。ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean(); System.out.printf("总线程数(守护+非守护):%s %n", threadMXBean.getThreadCount()); System.out.printf("守护进程线程数:%s %n", threadMXBean.getDaemonThreadCount()); System.out.printf("峰值线程数:%s %n", threadMXBean.getPeakThreadCount()); System.out.printf("Java虚拟机启动后创建并启动的线程总数:%s %n", threadMXBean.getTotalStartedThreadCount()); System.out.printf("是否支持测量当前线程的CPU时间:%s %n", threadMXBean.isCurrentThreadCpuTimeSupported()); System.out.printf("当前线程的总CPU时间:%s %n", threadMXBean.getCurrentThreadCpuTime()); System.out.printf("当前线程在用户模式中执行的CPU时间:%s %n", threadMXBean.getCurrentThreadUserTime()); {mtitle title="堆内存使用情况"/}可以获取初始化堆内存、已使用堆内存、可使用堆内存、最大堆内存等信息MemoryUsage heapMemoryUsage = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage(); System.out.printf("初始化堆内存:%sm %n", heapMemoryUsage.getInit() / 1024 / 1024); System.out.printf("已使用堆内存:%sm %n", heapMemoryUsage.getUsed() / 1024 / 1024); System.out.printf("可使用堆内存:%sm %n", heapMemoryUsage.getCommitted() / 1024 / 1024); System.out.printf("最大堆内存:%sm %n", heapMemoryUsage.getMax() / 1024 / 1024); 为了方便查询数据,我们可以手工编译、运行代码javac JvmInfo.java java -Xmx20m JvmInfo{mtitle title="非堆内存使用情况"/}也可以获取非堆内存,也就是永久代的信息。需要注意,JDK1.7之后已经废弃了永久代的概念,使用元空间进行替代MemoryUsage noHeapMemoryUsage = ManagementFactory.getMemoryMXBean().getNonHeapMemoryUsage(); System.out.printf("初始化非堆内存:%sm %n", noHeapMemoryUsage.getInit() / 1024 / 1024); System.out.printf("已使用非堆内存:%sm %n", noHeapMemoryUsage.getUsed() / 1024 / 1024); System.out.printf("可使用非堆内存:%sm %n", noHeapMemoryUsage.getCommitted() / 1024 / 1024); System.out.printf("最大非堆内存:%sm %n", noHeapMemoryUsage.getMax() / 1024 / 1024); {mtitle title="系统概况"/}可以获取操作系统名称、操作系统版本、处理器数量、系统平均负载、电脑架构等信息OperatingSystemMXBean operatingSystemMXBean = ManagementFactory.getOperatingSystemMXBean(); System.out.printf("操作系统名称:%s %n", operatingSystemMXBean.getName()); System.out.printf("操作系统版本:%s %n", operatingSystemMXBean.getVersion()); System.out.printf("可用处理器数量%s %n", operatingSystemMXBean.getAvailableProcessors()); System.out.printf("系统平均负载:%f %n", operatingSystemMXBean.getSystemLoadAverage()); System.out.printf("电脑架构:%s %n", operatingSystemMXBean.getArch());{mtitle title="类加载情况"/}可获取当前加载类数量、未加载类数量、总加载类数量ClassLoadingMXBean classLoadingMXBean = ManagementFactory.getClassLoadingMXBean(); System.out.printf("当前加载类数量%s %n", classLoadingMXBean.getLoadedClassCount()); System.out.printf("未加载类数量%s %n", classLoadingMXBean.getUnloadedClassCount()); System.out.printf("总加载类数量%s %n", classLoadingMXBean.getTotalLoadedClassCount()); 也可以获取内存池对象public static void main(String[] args) { List < MemoryPoolMXBean > memoryPoolMXBeanList = ManagementFactory.getMemoryPoolMXBeans(); for (MemoryPoolMXBean memoryMXBean: memoryPoolMXBeanList) { final String kind = memoryMXBean.getType().name(); final MemoryUsage usage = memoryMXBean.getUsage(); System.out.println( "内存模型: " + getKindName(kind) + ", 内存空间名称: " + getPoolName(memoryMXBean.getName()) + ", jvm." + memoryMXBean.getName() + ".init(初始化):" + bytesToMB(usage.getInit())); System.out.println( "内存模型: " + getKindName(kind) + ", 内存空间名称: " + getPoolName(memoryMXBean.getName()) + ", jvm." + memoryMXBean.getName() + ".used(已使用): " + bytesToMB(usage.getUsed())); System.out.println( "内存模型: " + getKindName(kind) + ", 内存空间名称: " + getPoolName(memoryMXBean.getName()) + ", jvm." + memoryMXBean.getName() + ".committed(可使用):" + bytesToMB(usage.getCommitted())); System.out.println( "内存模型: " + getKindName(kind) + ", 内存空间名称: " + getPoolName(memoryMXBean.getName()) + ", jvm." + memoryMXBean.getName() + ".max(最大):" + bytesToMB(usage.getMax())); } } protected static String getKindName(String kind) { if ("NON_HEAP".equals(kind)) { return "NON_HEAP(非堆内存)"; } else { return "HEAP(堆内存)"; } } protected static String getPoolName(String poolName) { switch (poolName) { case "Code Cache": return poolName + "(代码缓存区)"; case "Metaspace": return poolName + "(元空间)"; case "Compressed Class Space": return poolName + "(类指针压缩空间)"; case "PS Eden Space": return poolName + "(伊甸园区)"; case "PS Survivor Space": return poolName + "(幸存者区)"; case "PS Old Gen": return poolName + "(老年代)"; default: return poolName; } } protected static String bytesToMB(long bytes) { return (bytes / 1024 / 1024) + " MB"; }
2025年04月16日
14 阅读
0 评论
0 点赞
2025-04-14
DataGrip配置MySQL数据库导出
DataGrip各种地方都挺好,但是唯独MySQL数据库的导出不如Navicat或者phpMyAdmin方便,比如Navicat可以直接右键转储Sql,实现整个数据库的备份,但是DataGrip如果实现相同的功能就相对复杂一些,需要手工配置mysqldump。下面以Windows系统为例,介绍一下DataGrip如何配置mysqldump。过程中需要的文件已经上传到百度网盘,可以在文末下载,下载mysqldump文件在文末提供的百度网盘中,下载自己对应版本的mysqldump文件。下载后存储到某个位置,无需安装。配置DataGrip找到自己的数据库链接,点击右键,依次选择【导入/导出】- 使用'mysqldump'导出在【可执行文件路径】选择上面mysqldump文件,【将结果输出到】按自己需要选择,下面的一些参数,都是mysqldump自带的参数,可以按需选择。配置完成后,点击【运行】按钮,就可以导出整个数据库了。{message type="info" content="配置信息,只需要配置一次,下次导出时,会自动使用上次的配置信息"/}{mtitle title="mysqldump下载"/}{cloud title="mysqldump工具" type="bd" url="https://pan.baidu.com/s/1SIAyUTvJKmVyiuAcQlAEEA?pwd=apav" password="apav"/}
2025年04月14日
14 阅读
0 评论
0 点赞
2025-04-13
2025齐鲁车展小纪-蔚来还有未来吗
2025年齐鲁春季车展于4月10日至4月14日在山东国际会展中心举办,今天闲来无事,带着老婆孩子一起去逛了逛,相较于几年前的齐鲁春季车展,感觉这次的变化还是挺大的。整个车展几乎看不到燃油车的身影整个车展,除了凯迪拉克、宝马等极少数品牌主打燃油车,其他基本都是纯电、混动、增程车辆。整个展馆几乎已是国产车的天下也许是齐鲁车展影响力不够大吧,整个展馆大概2/3的展位都是国产车,合资车像本田、丰田、别克等少数品牌的展位都不大,而且展馆内甚至没看到奔驰的展位。展馆内的活动,像是送点小礼物啥的,基本也都是国产车在搞活动,合资车几乎没啥礼物;另外为数不多的车模走秀等也基本都是国产车,合资车好像没看到有请车模的。不同品牌冰火两重天的出境最近看蔚来推出各种优惠政策,网络上充斥着蔚来订单爆了的消息,我以为蔚来展位上会有很多人呢,但是今天实际看了一下感觉很是意外,一是蔚来跟乐道目前还是单独的展位,而且两个品牌甚至不在同一个展馆;二是与其他国产车人头攒动的热闹境况不同,蔚来的展位虽然不能用门可罗雀来形容,但是人数确实很少,感觉与别克等合资车的人数差不多,甚至不如凯迪拉克、林肯展位上的人多。另外,因为是坐地铁2号线过去的,经过宜家,发现那里又一家蔚来换电站,今天大概10:30左右路过的,但是换电站竟然是关门状态,不确定是新建的换电站尚未营业还是说有其他原因暂停营业了。2025年确实是蔚来生死存亡的关键一年,但是今天的所见所闻,感觉今年蔚来的日子可能也并不好过。
2025年04月13日
10 阅读
0 评论
0 点赞
2025-04-12
个人对纯血鸿蒙卓易通的一些看法
{mtitle title="卓易通简介"/}可能好多人对于卓易通比较陌生。所以我们先对卓易通的开发背景进行一些简单的介绍。纯血鸿蒙系统由于彻底移除了安卓相关的代码,所以在纯血鸿蒙系统,已经无法使用安卓的App。由于鸿蒙系统是一个全新的生态,在当前时间点上,虽然华为投入大量资源联系头部App进行适配。但是由于不同App的复杂性,目前不同厂商对自家App鸿蒙的适配工作进展也比较缓慢,像微信、头条系等App,虽然推出了鸿蒙版,但是目前来看,只能保证基本功能的使用,如果完全达到安卓或者IOS下App的完整性,恐怕还有挺长的路要走;另外还有一些厂商特别是一些小厂商的App,甚至不会推出鸿蒙版,比如网易云音乐。在这种背景下,鸿蒙应用商店上架了一款名叫卓易通的App,允许用户在纯血鸿蒙系统中直接使用安卓App。卓易通自身介绍是一款HarmonyOS NEXT系统的工具软件,汇聚丰富三方应用,提供应用下载、管理、更新等服务,全方位满足用户多元需求。{mtitle title="个人看法"/}卓易通的推出确实让纯血鸿蒙用户能够更方便地使用Android应用,虽然在短期内,可能会让对纯血鸿蒙系统升级持观望态度的用户升级到纯血鸿蒙系统,但它毕竟违背了鸿蒙系统推广的初衷。卓易通运行安卓App与Windows 11运行运行安卓App原理类似,都是在系统中模拟一个安卓的虚拟机,所以,我们不能因此去断定鸿蒙就是套壳安卓,就像我们知道windows 11肯定不是套壳安卓一个道理。因为在当前系统中又虚拟化了一套安卓系统,所以无可避免的会导致系统资源占用高、耗电高的问题,除此之外App闪退、消息无法推送、流畅度较差等硬伤,也导致卓易通整体体检不是很友好。因此,卓易通只能是现阶段升级了纯血鸿蒙系统的用户使用安卓App的临时解决方案,绝不是长久之计。对华为来讲,在现阶段,投入大量人力物力推动各安卓App适配鸿蒙的过程中,卓易通的出现无疑是对华为的“背刺”,小厂开发者可能会减少对鸿蒙的投入,当然目前卓易通规定,只能下载未在鸿蒙应用市场上架的Android应用,从而为已有的鸿蒙应用市场增添一层保护。
2025年04月12日
46 阅读
0 评论
0 点赞
2025-04-12
适合程序员使用的文本编辑器
作为程序员,选择一款趁手的文本编辑器能极大提升开发效率。经过多年使用体验,我想分享几款我认为最适合程序员使用的编辑器。{mtitle title="VS Code"/}VS Code是微软出品的一款免费开源的跨平台的代码编辑器。支持Windows、Linux及macOS,支持丰富的扩展插件,不仅能当做文本编辑器,还支持几乎所有的编程语言。可以自定义主题及快捷键。{mtitle title="Sublime Text"/}Sublime Text是一款功能强大的跨平台文本编辑器,支持Windows、Linux及macOS,它支持多种编程语言和标记语言,用户可以使用主题进行定制,并通过插件扩展其功能。软件是收费的,但是可以无限免费试用。{mtitle title="Sublime Text"/}EditPlus是一款功能强大的文本编辑器,只适用于Windows操作系统。它提供了许多方便的功能,使得编辑和编写各种类型的文本文件变得更加容易和高效。软件是收费的,界面比较复古,前些年使用用户比较多,目前很少看到周边还有人在使用。{mtitle title="Notepad ++"/}Notepad++是一款免费的文本编辑器,支持多种语言。它具有高效、功能丰富、多语言、同时文本和源代码编辑功能,能无压力的打开超大的文件,是开发人员或任何需要使用代码的人的理想工具。只支持Windows系统,开发者是台湾人,其某些政治言论比较危险,所以就导致了一些类NotePad++的衍生产品。{mtitle title="Notepad --"/}Notepad--是使用C++编写的轻量级免费的文本编辑器, 可以支持Window/Mac/Linux操作系统平台。NotePad--正是因为NotePad++作者的危险言论而产生的,NotePad--在界面、操作等方便几乎与NotePad++一模一样。{mtitle title="Notepad Next"/}NotePad Next是来自GitHub的一款使用简单、功能强大、免费无广告的跨平台的文本编辑器。它目前支持Windows、MacOS、Linux等平台,界面几乎也是与NotePad++一模一样。{mtitle title="Notepads"/}Notepads是一个现代、轻量级、极简主义设计的开源文本编辑器,UWP应用,只支持Windows,整体界面与Windows自带的NotePad差不多。
2025年04月12日
12 阅读
0 评论
0 点赞
2025-04-12
你是否有必要升级纯血鸿蒙,且听我来分析
纯血鸿蒙已经发布了很长时间了,由于纯血鸿蒙彻底移除了底端安卓代码,所以我们在升级纯血鸿蒙之前必须要考虑新系统的整个生态链。升级后是否能满足我们日常的使用,包括我们使用的一些小众的App是否能兼容(目前来看官方应用商店商家了一款卓易通App,能够在纯血鸿蒙中运行安卓App)都是我们不得不考虑的一些因素。纯血鸿蒙的优缺点总结优点更流畅的系统体验:去除安卓包袱,底层优化更彻底,响应速度更快更强的多设备协同:超级终端、无缝流转等功能更稳定更长的系统维护:华为对老机型的支持可能比安卓更长更高的安全性:减少安卓生态的安全隐患,隐私保护更强未来生态优势:鸿蒙原生应用可能带来更高效的AI、物联网体验缺点应用兼容性问题:初期部分安卓App无法运行,需依赖开发者适配学习成本:操作逻辑可能变化,部分用户需要适应游戏体验可能受影响:部分游戏可能无法直接运行初期版本可能存在Bug:建议普通用户等待稳定版下面我们从不同用户群体的角度进行分析,并总结纯血鸿蒙的核心优势与潜在问题,帮助你做出明智的选择。{mtitle title="华为全家桶用户"/}{alert type="success"}推荐升级{/alert}华为全家桶用户推荐升级,就目前而言,纯血鸿蒙已经能够满足日常使用。升级纯血鸿蒙后,超级终端、多屏协同等功能更加流畅,设备互联延迟更低;鸿蒙原生应用适配更好,未来生态更统一;长期系统维护,避免安卓停更风险;都知道华为的系统以广告多著称的,升级纯血鸿蒙后,可以避免广告的打扰;如果有使用的小众App,可以通过卓易通运行。{mtitle title="普通手机用户(仅使用华为手机)"/}{alert type="info"}可以升级,建议观望{/alert}如上面说的,纯血鸿蒙能够满足日常使用,但是仍然有小众App不兼容,即便通过卓易通可以运行,毕竟不如原生运行来的流畅;纯血鸿蒙目前并没有给用户体验带来质的提升(起码我这么觉得),系统层面可能增加了一些过渡动画,但是整体流畅度我个人觉得还是差点(不如Color OS),所以你是日常使用的普通用户,建议观望,如果想体验新系统带来的快感,导致可以升级。{mtitle title="游戏玩家 & 高性能需求用户"/}{alert type="error"}不建议升级{/alert}目前很多游戏可能因兼容性问题无法运行(如依赖谷歌服务或特定插件),高性能模式调校可能不如安卓成熟(初期版本),这块不止需要华为努力,游戏厂商可能也需要时间进行一些适配。{mtitle title="老旧机型用户(如Mate 30/P40系列等)"/}{alert type="success"}推荐升级{/alert}华为通常会为老机型提供更长时间的系统更新,纯血鸿蒙优化更好,可能提升老机型的流畅度。当然新系统对硬件要求肯定更高,所以有些新的特性,老机型可能就无福享受了。{mtitle title="商务人士)"/}{alert type="info"}视场景决定{/alert}商务人士日常使用的邮件、钉钉、企业微信目前虽然支持不够完善,起码都已经支持了。但是如果企业内部有些App,还得看一下是否已经适配了鸿蒙,如果已经适配了,建议升级,否则不建议升级。{mtitle title="开发人员"/}{alert type="success"}推荐升级{/alert}如果你是开发人员,负责开发的App需要适配纯血鸿蒙,那么建议你今早适配,占领先机。
2025年04月12日
12 阅读
0 评论
0 点赞
2025-04-11
FileLocator Pro 8.5 激活
在数字时代,我们的电脑硬盘中存储着数以万计的文件——文档、图片、视频、代码等各种格式。Windows自带的搜索功能往往难以满足专业需求,速度慢、功能有限、无法深入搜索文件内容。这时,FileLocator Pro作为一款专业的文件搜索工具脱颖而出,成为许多专业人士的首选。{mtitle title="FileLocator Pro介绍"/}FileLocator Pro是一款功能强大的文件搜索工具,主要特点包括:超快速全文搜索:可在数秒内搜索数十万文件支持多种文件格式:包括Office文档、PDF、ZIP压缩包等高级搜索语法:支持正则表达式、布尔运算等专业搜索技术脚本化搜索:可通过脚本自动化复杂搜索任务搜索结果管理:可保存、导出、打印搜索结果FileLocator Pro填补了Windows自带搜索工具和专业开发者工具之间的空白,既提供了友好的用户界面,又不牺牲高级功能。无论是日常办公还是专业开发,它都能显著提升文件搜索效率,节省宝贵时间。对于经常需要处理大量文件的用户来说,FileLocator Pro无疑是一项值得投资的效率工具。其免费试用版可供用户体验完整功能,建议下载试用,亲自感受专业搜索工具的强大之处。{mtitle title="FileLocator Pro下载"/}{cloud title="File Location Pro.zip" type="bd" url="https://pan.baidu.com/s/1d3SdHO3ZtjBnKm3kAV5jOQ?pwd=ghjn" password="ghjn"/}
2025年04月11日
16 阅读
0 评论
0 点赞
2025-04-11
Beyond Compare_5.0.1绿色版免激活版本下载
{mtitle title="Beyond Compare介绍"/}Beyond Compare是一款由Scooter Software开发的专业文件和文件夹对比工具,广泛用于开发人员、系统管理员和数据分析师等职业场景。它通过直观的可视化界面,帮助用户快速识别文件差异、同步数据或合并代码变更,大幅提升工作效率。{mtitle title="Beyond Compare核心功能亮点"/}多类型文件对比文本文件:支持代码、日志等文本的差异高亮显示,自动识别不同编码格式。二进制文件:直接对比图片、可执行文件等二进制内容。表格与Excel:逐行逐列对比数据表格差异。文件夹同步与管理快速比较两个文件夹的内容差异,支持按大小、日期、内容等多种过滤条件。一键同步文件夹,确保数据一致性(支持 FTP、SFTP 等协议)。版本控制集成无缝对接 Git、SVN、Mercurial 等版本控制系统,方便代码合并与冲突解决。自动化任务支持脚本命令行操作,可集成到持续集成(CI)流程中,实现自动化对比与同步。三向合并高级用户可通过三向合并功能解决复杂冲突,尤其适合团队协作开发。{mtitle title="Beyond Compare绿色版"/}本文提供的是Beyond Compare 5.0.1版本,直接解压使用即可,无需激活。{cloud title="Beyond Compare_5.0.1.29877_64bit_Green.zip" type="bd" url="https://pan.baidu.com/s/1Oie_mjs486FcZACzI0LYNA?pwd=edqu" password="edqu"/}压缩包内的!)添删右键菜单.bat文件,可以直接双击添加资源管理器右键菜单项或者移除资源管理器右键菜单项。
2025年04月11日
24 阅读
0 评论
0 点赞
2025-04-09
分享几个纯净版系统镜像下载网站
前些年的时候,为了方便安装系统,我基本上都会安装Ghost系统,像是雨霖沐风、电脑城、深度、番茄花园等Ghost系统,当年的电脑配置也是比较低,记得系统往往用不了多长时间就会变得卡顿(现在想来也许就是因为安装Ghost系统导致的),所以当年几乎手头常备一个启动U盘,反正电脑卡了就重新装一下。但是Ghost系统存在诸多安全隐患和风险,比如系统安装完成后自带的360全家桶、2345全家桶以及永远无法修改的浏览器主页,甚至不少Ghost系统系统被植入木马、后门、挖矿程序或广告软件(如“番茄花园”事件),可能导致用户数据被盗、系统被远程控制,甚至成为僵尸网络的一部分。现在购买电脑,出厂自带的OEM系统,哪怕重装之后,还是能够自动激活,所以现在Ghost系统已经完全没有使用的必要了。为了方便大家下载正版的、纯净的系统,我这里也帮大家整理了一些正规的正版系统镜像下载网站。{mtitle title="MSDN, 我告诉你"/}官方网站: https://next.itellyou.cn/ 相信在国内如果下载过纯净版系统的一定不会感到陌生,新版的网站要求注册账号或者直接通过QQ等第三方账号也能登录。网站提供Windows、Linux、Mac OS、Chromium OS等系统镜像下载,但是除了Windows镜像更新比较及时之外,其他的基本可以忽略,所以如果是下载Windows镜像可以考虑这个网站,其他的不建议,另外网站只提供ED2K、BT下载链接,所以如果下载,还得借助迅雷等第三方下载工具。{mtitle title="微软官网"/}微软官网:https://www.microsoft.com/zh-cn/software-download/ 绝对能保证正版的一个网站,提供Windows 7、Windows 8、Windows 10及Windows 11镜像下载,下载速度也比较快。如果希望下载最新的系统,微软官网绝对是首选。{mtitle title="UUP dump"/}官方网站: https://in.uupdump.cn/ 网站打开速度比较慢,提供的Windows镜像也不是很全,我简单浏览了一下,只发现了Windows 11还有Windows 10以及部分Windows Server下载镜像,感觉整个网站使用起来比较复杂,另外搜索功能也不是很好用。{mtitle title="山己几子木"/}官方网站:https://msdn.sjjzm.com/ 只提供Windows系统镜像,支持阿里云盘、百度网盘、移动网盘、ed2k、BT等多种下载方式,镜像更新比较及时。{mtitle title="MSDN系统库"/}官方网站:https://www.xitongku.com/ 只提供Windows镜像,镜像更新比较及时,无需登录,支持ed2k、BT、百度网盘、夸克网盘、天翼云盘等多种下载方式,并且网站有提供的系统安装教程,缺点就是点击下载按钮,会强制弹出广告。ok,今天就给大家提供这几个好用的系统镜像下载网站,后续如果发现其他更好的网站,我也会及时汇报给大家。
2025年04月09日
34 阅读
2 评论
0 点赞
2025-04-04
Typecho使用Joe主题修改文章图片尺寸
{mtitle title="适用场景"/}使用Typecho搭建博客,主题使用的Joe主题。因为我们平时插入图片的时候,各种尺寸的图片都有,如果图片尺寸比较大,会导致整个屏幕只剩下一张图片了,严重影响阅读体验。所以,我们的想法是,在文章页面,限制图片尺寸大小,当然修改的时候,尽量保持比例,不至于因为图片缩放导致变形。如果适用Wrdpress搭建网站或者使用其他主题,也可以参照本文方法进行修改。找到Joe主题assets\css\joe.global.min.css文件。{message type="success" content="我这里的主题格式化了,行数可能不一致"/}我们搜索.joe_detail__article img:not([class])将原来的max-width:100%修改成以下内容max-width:400px; max-height:300px;修改后如下
2025年04月04日
12 阅读
0 评论
0 点赞
1
2
3
...
53