月度归档: 2021 年 9 月

如何获得Linux内核版本?

Linux kernel is the core of the Linux based operating systems we call them simply Linux. But sometimes they called Linux Distributions. Kernel initialize system with hardware. Manages hardware to provide services for upper layer operating system application. Kernel do memory management which means allot memory for applications or frees the memory. Manages processes by creating, forking or killing them. Now some little Linux kernel history.

Linux内核是基于Linux的操作系统的核心,我们称之为Linux。 但是有时他们称Linux发行版。 内核使用硬件初始化系统。 管理硬件以为上层操作系统应用程序提供服务。 内核执行内存管理,这意味着为应用程序分配内存或释放内存。 通过创建,派生或杀死进程来管理进程。 现在了解一些Linux内核历史记录。

发行历史 (Release History)

  • 1.0 kernel released 1994

    1994年发布的1.0内核

  • 2.0 kernel released 1996

    2.0内核发布于1996年

  • 3.0 kernel released 2011

    3.0内核发布于2011年

  • 4.0 kernel released 2015

    2015年发布的4.0内核

Generally version exist major,minor numbers.

一般版本存在大,小编号。

Linux Kernel Version Map
Linux Kernel Version Map
Linux内核版本图

如何使用uname获得内核版本(How To Get Kernel Version With uname)

We can get kernel related information with uname . One of information uname provides is kernel version.

我们可以使用uname获得与内核相关的信息。 匿名提供的信息之一是内核版本。

$uname -a
How To Get Kernel Version With uname
How To Get Kernel Version With uname
如何使用uname获得内核版本
  • We provide -a to the uname  to get all information

    我们提供-auname以获取所有信息

  1. $uname -r
  2. 3.10.0-327.36.3.el7.x86_64
  • -r parameter will provide kernel version

    -r参数将提供内核版本

  • is the major version number

    3是主要版本号

  • 10 is minor version number

    10是次要版本号

  • other part is build number

    另一部分是内部编号

  • x86_64 is architecture of the kernel which is x86 64 bit

    x86_64是x86 64位内核的体系结构

从/ proc / version文件打印内核版本(Print Kernel Version From /proc/version File)

/proc directory provides different information about the Linux system. Linux kernel version is also provided from /proc/version file. We will use cat command in order to print Linux kernel version.

/proc目录提供有关Linux系统的不同信息。 Linux内核版本也从/proc/version文件提供。 我们将使用cat命令来打印Linux内核版本。

Print Kernel Version From /proc/version File
Print Kernel Version From /proc/version File
从/ proc / version文件打印内核版本

从dmesg获取内核版本(Get Kernel Version From dmesg)

dmesg is a tool used to print kernel level logs. Especially from system startup different type of logs are provided. During to the the kernel is loaded and the version information also provided to the dmesg log. We can use dmesg to print Linux kernel version information.

dmesg是用于打印内核级日志的工具。 特别是在系统启动时,提供了不同类型的日志。 在内核加载期间,还将版本信息提供给dmesg日志。 我们可以使用dmesg打印Linux内核版本信息。

$ dmesg | grep version
Get Kernel Version From dmesg
Get Kernel Version From dmesg
从dmesg获取内核版本
LEARN MORE  Linux VMware Workstation Not Enough Physical Memory Is Available Error and Solution
了解更多信息Linux VMware Workstation的可用物理内存不足错误和解决方案

如何获得Linux内核版本? 信息移植 (How To Get Linux Kernel Version? Infografic)

How To Get Linux Kernel Version? Infografic

android clipRect Op.xxx各个参数理解

有点小啰嗦的一篇学习笔记,可以直接看*后得出的结论:前面的各种图片和说明都是为*后的结论服务的

1)剪切:和平常画图工具剪切的作用一样,在画布上剪切一个区域,比如剪切一个Rect区域,画布canvas其余的部分都丢掉,之后所有的画图都在这个Rect区域内进行(如果不涉及save和restore方法)。

2)clip进行剪切的时候,不会影响之前已经画好的图形。

3)剪切是对canvas的操作,而不是在canvas上的图进行操作。

为了说明这几点,下面进行一下说明。

步骤1) 在剪切之前绘制一个全屏的蓝色的矩形。

2)定义剪切的矩形Rect区域,并进行剪切

3)设置剪切过后画布颜色为红色

运行的效果如下图所示:此时剪切过后画布的区域就是剪切的Rect区域,虽然剪切掉了canvas上面和下面的一部分,但是仍然会把途中所示的蓝色部分显示出来而不会剪切掉:也就是如上所说不会影响之前已经画好的图形。

%title插图%num

 

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
protected void onDraw(Canvas canvas) {
        int width = getMeasuredWidth();
        int height = getMeasuredHeight();
        
        
        Paint paint = new Paint();
        paint.setColor(Color.BLUE);    
        //全屏绘制一个蓝色的矩形画面
        canvas.drawRect(0, 0,width,height,paint);
    
        //定义剪切的Rect区域
        Rect rect = new Rect();
        rect.left = 0;
        rect.top = 300;//左上角(0,300)
        rect.right = width;
        rect.bottom = height/2; //右下角(width,height)
        //进行剪切   
        canvas.clipRect(rect)
        canvas.drawColor(Color.RED);
     
    }

上面的clipRect是只有一个参数的(默认为INTERSECT,下面看看它的重载方法Cliprect(rect,OP.xx)第二个参数以及各个参数的含义和运行效果:

开始之前做些准备工作:

区域A:剪切之前的画布区域

区域B:当前要剪切的区域,也就是clipRect的*个参数所表示的区域

在没有直接写代码测试之前对这些字段的翻译和查阅写数学资料并对Op.xxx的各种字段在心里做了如下假设:

XOR:异或运算,相同为0(false),不用为1(true),也就是两个区域重叠的地方为0,不同的地方为1,剪切过后的画布的区域就是两个区域不重叠的部分。

INTERSECT:交集运算,剪切过后的画布区域就是两个区域的交集区域。

REPLACE:这个有待验证,不明所以,从字面意思来说是代替的意思,应该就是用B的区域代替A的区域,所以剪切过后的画布区域可能就是只剩下B的区域,当然这个只是假设,有待下面的验证过。

DIFFERENCE:差集运算,剪切过后的画布的区域就是A-B

REVERSE_DIFFERENCE:差集运算,REVERSE为反向,逆向的意思,不难猜出剪切过后的画布区域是B-A的区域

UNION:并集运算,剪切过后的画布区域就是A和B的区域相加,当然重叠的地方只计算一次

下面就写程序注意验证上面的结果和得出相应的结论

先是全集和子集的情况:此时A为全集区域,B为A的子集

%title插图%num

a) Op.DIFFERENCE:即将剪切的区域(设置B)与当前canvas(设置A)之间的差集,剪切过后还剩下的画布canvas区域就是A-B的区域,看看运行结果

步骤还是之前的步骤,只是把canvas.clipRect(rect)改成canvas.clipRect(rect,Op.DIFFERENCE);运行结果如下:<喎�”/kf/ware/vc/” target=”_blank” class=”keylink”>vcD4KPHA+PGltZyBzcmM9″/uploadfile/Collfiles/20150212/2015021208423342.png” alt=”\”>

b) Op.REVERSE_DIFFERENCE:对比DIFFERENCE取A-B,REVERSE是相反的意思,所以为B-A,因为B为A的子集,所以该差集不存在,所以运行结果为下:

%title插图%num

c) Op.XOR:两个区域进行异或运算,异或运算的规则是:“相同为0(false),不同为1(true)”,当两个区域进行异或的时候,很显然“区域重叠的地方为0,不重叠的地方为1”,剪切过后剩下的画布canvas的区域就是不重叠的地方所在的区域,看看运行结果

%title插图%num

d) Op.UNION 取A和B的并集,所以运行结果为下图:

%title插图%num

 

e) Op.INTERSECT 取A和B的交集,因为上面的程序中A是全屏的画布范围,而B在A里面,所以剪切的结果为下图所示,所以说交集为B的范围

%title插图%num

f) Op.REPLACE,运行效果如下

%title插图%num

通过全集和子集的运行效果来看,REPLACE应该就是跟上面设想的一样,其余的倒是跟设想的结论一样。

所以我就测试了非全集和子集的情况

此时A区域和B区域的关系如图,C为A和B的交集区域:

%title插图%num

测试画图步骤:

1)绘制一个蓝色的矩形面

2)定义A的Rect对象(*次要剪切的区域),并开始剪切

3)定义B的rect对象并开始剪切,并且调用clipRect(rect,Op.xxx)来看不用xxx下剪切的效果

4)把剪切过后的画布设置为红色

上面步骤的代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
                int width = 1000;
                int height =1000;
                Paint paint = new Paint();
        paint.setColor(Color.BLUE);    
        //全屏绘制一个蓝色的矩形画面
        canvas.drawRect(0, 0,width,height,paint);
        
              //定义区域A的rect对象
        Rect rect = new Rect();
        rect.left =100;
        rect.top = 100;//左上角(0,300)
        rect.right = 300;
        rect.bottom = 300; //右下角(width,hei
        //剪切为A区域
        canvas.clipRect(rect);//同clipRect
        
                //设置b的rect对象
        rect.left =200;
        rect.top = 200;//左上角(0,300)
        rect.right = 400;
        rect.bottom = 400; //右下角(width,height) 
        canvas.clipRect(rect,Op.xxxx);
                //把剪切过后的画布设置红色
                canvas.drawColor(Color.RED);

 

a) DIFFERENCE的情况下的运行效果(A-B的差集):也就是A区域去掉C区域

%title插图%num

b) REVERSE_DIFFERENCE的运行效果如下图(B-A的差集):也就是B区域去掉C区域

%title插图%num

c) UNION 的运行结果 (A和B的并集)

%title插图%num

d) INTERSECT (交集运算)此时画布只剩下C区域可以显示,所以运行结果如下

%title插图%num

e)XOR 异或运算,剪切过后的结果为A和B区域不重叠的区域

%title插图%num

f)REPLACE 这个运算结果是什么呢?就是B区域,也就是剪切过后的结果只保留B区域,这也就是REPLACE代替或者替换的含义:当前还没被剪切的区域A被即将要剪切的区域B来代替。

%title插图%num

结论:

XOR:异或运算,相同为0(false),不用为1(true),也就是两个区域重叠的地方为0,不同的地方为1,剪切过后的画布的区域就是两个区域不重叠的部分。

INTERSECT:交集运算,剪切过后的画布区域就是两个区域的交集区域。

DIFFERENCE:差集运算,剪切过后的画布的区域就是A-B

REVERSE_DIFFERENCE:差集运算,REVERSE为反向,逆向的意思,不难猜出剪切过后的画布区域是B-A的区域

UNION:并集运算,剪切过后的画布的区域为A+B的区域

REPLACE:也就是剪切过后的结果只保留B区域,这也就是REPLACE代替或者替换的含义:当前还没被剪切的区域A被即将要剪切的区域B来代替。

clipRect 介绍

clipRect 介绍

android的clip有以下两点疑问:

Clip(剪切)的时机

Clip中的Op的参数的意思。

 

通常咱们理解的clip(剪切),是对已经存在的图形进行clip的。但是,在android上是对canvas(画布)上进行clip的,要在画图之前对canvas进行clip,如果画图之后再对canvas进行clip不会影响到已经画好的图形。一定要记住clip是针对canvas而非图形。

 

接下来通过android自带的APIdemo Clipping例子详细讲述Clip中的Op的参数的意思。Android提供clipRect、clipPath和clipRegion剪切区域的API。

Op一共有 DIFFERENCE,INTERSECT,UNION,XOR, REVERSE_DIFFERENCE, REPLACE六种选择。

 

例子:

在canvas上剪切从(0,0)到(60,60)的方块。下图蓝色区域加紫色区域。

在canvas上剪切从(40,40)到(100,100)的方块。下图橄榄色区域加紫色区域。

在canvas上剪切从(0,0)到(100,100)的方块。


先在第二方块上加上Op参数例如:canvas.clipRect(40, 40, 100, 100, Region.Op. DIFFERENCE);

首先,需要搞清楚Op参数针对的对象。接着了解其含义。

Op参数针对的对象是之前剪切的区域以及当前要剪切的区域。

在本例中涉及到区域是从(0,0)到(60,60)的方块和从(40,40)到(100,100)的方块。

那有哪些含义呢?就是表示当前要剪切的区域与之前剪切过的之间的关系。

 

DIFFERENCE:之前剪切过除去当前要剪切的区域(蓝色区域)。

INTERSECT:当前要剪切的区域在之前剪切过内部的部分(紫色区域)。

UNION:当前要剪切的区域加上之前剪切过内部的部分(蓝色区域+紫色区域+橄榄色区域)。

XOR:异或,当前要剪切的区域与之前剪切过的进行异或。(蓝色区域+橄榄色区域)。

REVERSE_DIFFERENCE:与DIFFERENCE相反,以当前要剪切的区域为参照物,当前要剪切的区域除去之前剪切过的区域(橄榄色区域);

REPLACE:用当前要剪切的区域代替之前剪切过的区域。(橄榄色区域+紫色区域);

没带Op参数效果与INTERSECT的效果一样,两个区域的交集。

Android中 Bitmap和Drawable相互转换的方法

Android中 Bitmap和Drawable相互转换的方法

1、Drawable –> Bitmap

  1.     Bitmap drawable2Bitmap(Drawable drawable) {
  2.         if (drawable instanceof BitmapDrawable) {  
  3.             return ((BitmapDrawable) drawable).getBitmap();  
  4.         } else if (drawable instanceof NinePatchDrawable) {  
  5.             Bitmap bitmap = Bitmap
  6.                     .createBitmap(
  7.                             drawable.getIntrinsicWidth(),
  8.                             drawable.getIntrinsicHeight(),
  9.                             drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
  10.                                     : Bitmap.Config.RGB_565);
  11.             Canvas canvas = new Canvas(bitmap);  
  12.             drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),  
  13.                     drawable.getIntrinsicHeight());
  14.             drawable.draw(canvas);
  15.             return bitmap;  
  16.         } else {  
  17.             return null;  
  18.         }
  19.     }

2、从资源中获取的Drawable –> Bitmap

  1.     Resources res = getResources();
  2.     Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.pic);

 

3、Bitmap –> Drawable

  1.     Drawable bitmap2Drawable(Bitmap bitmap) {
  2.         return new BitmapDrawable(bitmap);  
  3.     }

 

4、Bitmap –> byte[]

  1.     byte[] Bitmap2Bytes(Bitmap bm) {  
  2.         ByteArrayOutputStream baos = new ByteArrayOutputStream();  
  3.         bm.compress(Bitmap.CompressFormat.PNG, 100, baos);  
  4.         return baos.toByteArray();  
  5.     }

 

5、 byte[] –> Bitmap

    1.     Bitmap Bytes2Bimap(byte[] b) {  
    2.         if (b.length != 0) {  
    3.             return BitmapFactory.decodeByteArray(b, 0, b.length);  
    4.         } else {  
    5.             return null;  
    6.         }
    7.     }

Drawable 添加过滤色,改变图片颜色

Drawable 添加过滤色,改变图片颜色

复制代码
 /**
   * 更改图片颜色
   * @param drawable
   * @param color
   * @return
   */
  public Drawable getDrawable(Drawable drawable,int color){
    drawable.setColorFilter(color, PorterDuff.Mode.MULTIPLY);
    return drawable;
  }
复制代码

 

Android内存优化4 了解java GC 垃圾回收机制2 GC执行finalize的过程

Android内存优化4 了解java GC 垃圾回收机制2 GC执行finalize的过程

1. finalize的作用

 

  • finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法。
  • finalize()与C++中的析构函数不是对应的。C++中的析构函数调用的时机是确定的(对象离开作用域或delete掉),但Java中的finalize的调用具有不确定性
  • 不建议用finalize方法完成“非内存资源”的清理工作,但建议用于:① 清理本地对象(通过JNI创建的对象);② 作为确保某些非内存资源(如Socket、文件等)释放的一个补充:在finalize方法中显式调用其他资源释放方法。其原因可见下文[finalize的问题]

2. finalize的问题

  • 一些与finalize相关的方法,由于一些致命的缺陷,已经被废弃了,如System.runFinalizersOnExit()方法、Runtime.runFinalizersOnExit()方法
  • System.gc()与System.runFinalization()方法增加了finalize方法执行的机会,但不可盲目依赖它们
  • Java语言规范并不保证finalize方法会被及时地执行、而且根本不会保证它们会被执行
  • finalize方法可能会带来性能问题。因为JVM通常在单独的低优先级线程中完成finalize的执行
  • 对象再生问题:finalize方法中,可将待回收对象赋值给GC Roots可达的对象引用,从而达到对象再生的目的
  • finalize方法至多由GC执行一次(用户当然可以手动调用对象的finalize方法,但并不影响GC对finalize的行为)

3. finalize的执行过程(生命周期)

 

(1) 首先,大致描述一下finalize流程:当对象变成(GC Roots)不可达时,GC会判断该对象是否覆盖了finalize方法,若未覆盖,则直接将其回收。否则,若对象未执行过finalize方法,将其放入F-Queue队列,由一低优先级线程执行该队列中对象的finalize方法。执行finalize方法完毕后,GC会再次判断该对象是否可达,若不可达,则进行回收,否则,对象“复活”。
(2) 具体的finalize流程:
对象可由两种状态,涉及到两类状态空间,一是终结状态空间 F = {unfinalized, finalizable, finalized};二是可达状态空间 R = {reachable, finalizer-reachable, unreachable}。各状态含义如下:
  • unfinalized: 新建对象会先进入此状态,GC并未准备执行其finalize方法,因为该对象是可达的
  • finalizable: 表示GC可对该对象执行finalize方法,GC已检测到该对象不可达。正如前面所述,GC通过F-Queue队列和一专用线程完成finalize的执行
  • finalized: 表示GC已经对该对象执行过finalize方法
  • reachable: 表示GC Roots引用可达
  • finalizer-reachable(f-reachable):表示不是reachable,但可通过某个finalizable对象可达
  • unreachable:对象不可通过上面两种途径可达
状态变迁图:
%title插图%num
变迁说明:
  1. 新建对象首先处于[reachable, unfinalized]状态(A)
  2. 随着程序的运行,一些引用关系会消失,导致状态变迁,从reachable状态变迁到f-reachable(B, C, D)或unreachable(E, F)状态
  3. 若JVM检测到处于unfinalized状态的对象变成f-reachable或unreachable,JVM会将其标记为finalizable状态(G,H)。若对象原处于[unreachable, unfinalized]状态,则同时将其标记为f-reachable(H)。
  4. 在某个时刻,JVM取出某个finalizable对象,将其标记为finalized并在某个线程中执行其finalize方法。由于是在活动线程中引用了该对象,该对象将变迁到(reachable, finalized)状态(K或J)。该动作将影响某些其他对象从f-reachable状态重新回到reachable状态(L, M, N)
  5. 处于finalizable状态的对象不能同时是unreahable的,由第4点可知,将对象finalizable对象标记为finalized时会由某个线程执行该对象的finalize方法,致使其变成reachable。这也是图中只有八个状态点的原因
  6. 程序员手动调用finalize方法并不会影响到上述内部标记的变化,因此JVM只会至多调用finalize一次,即使该对象“复活”也是如此。程序员手动调用多少次不影响JVM的行为
  7. 若JVM检测到finalized状态的对象变成unreachable,回收其内存(I)
  8. 若对象并未覆盖finalize方法,JVM会进行优化,直接回收对象(O)
  9. 注:System.runFinalizersOnExit()等方法可以使对象即使处于reachable状态,JVM仍对其执行finalize方法

4. 一些代码示例

(1) 对象复活

  1. publicclass publicstaticnull publicstaticvoidthrows new null );
  2. ifnull
  3. else null );
  4. ifnull else
  5. protectedvoidthrows super this }

(2)覆盖finalize方法以确保资源释放

作为一个补充操作,以防用户忘记“关闭“资源,JDK中FileInputStream、FileOutputStream、Connection类均用了此”技术“,下面代码摘自FileInputStream类

  1. /**
  2.  * Ensures that the <code>close</code> method of this file input stream is
  3.  * called when there are no more references to it.
  4.  *
  5.  * @exception  IOException  if an I/O error occurs.
  6.  * @see        java.io.FileInputStream#close()
  7.  */ protectedvoidthrows ifnull          * will ensure that finalizer is only called when
  8.          * safe to do so. All references using the fd have
  9.          * become unreachable. We can call close()
  10.          */ }

macOS 下 修改 /etc/hosts 文件的办法

etc/hosts 文件是本地的 IP 和 域名的一个对应解析,在进行网站未上线之前的测试经常需要用到。

由于 macOS 系统权限的设置,默认的用户对 /etc/hosts 文件只有只读权限,没有修改权限,当然我们也可以启用 macOS 下的 root 用户。其实只要一条命令,我们可以在不启用 root 用户的情景下给 /etc/hosts 文件增加写的权限:

sudo /bin/chmod +a ‘user:用户名:allow write’ /etc/hosts
其中“用户名 ”是当前登录 macOS 系统的用户名,请做相应的修改。

%title插图%num

 

mac 修改 /etc/hosts 文件

1.切换 root 用户

 

 

 

sudo su复制代码

 

接着输入密码…

2.修改 hosts 文件

 

 

 

vi /etc/hosts复制代码

 

修改地址即可~

3.修改本地的 git 项目远程地址

在项目的根目录 .git 文件夹 找到 config 文件修改 remote url 即可

Mac系统下修改hosts文件

Mac系统下修改hosts文件

小巫只从买了macbook pro之后一直用来装逼还没认真用起来,因为确实在windows下有时候用起来比mac要方便一点,但比起流畅性和观赏性windows也是差了那么一节。因为还是要做Android开发,时不时要访问下官网,下面记录一下修改mac系统的hosts文件的方法。

*步:进入/private/etc文件夹下
%title插图%num

%title插图%num

第二步:使用文本编辑器打开hosts文件,修改方法类似windows
%title插图%num

%title插图%num

复制以下透明代码到hosts文件中,保存,搞定之后就可以访问我们的官网了。
由于hosts文件比较多,就不贴上来了,有需要的到我的资源下载。
下载地址:
https://raw.githubusercontent.com/devilWwj/google-hosts/master/hosts

%title插图%num

 

Mac OS系统下配置hosts的方法

首先,介绍下什么是hosts

Hosts是一个没有扩展名的系统文件,可以用系统自带的记事本等工具打开,作用就是将一些常用的网址域名与其对应的IP地址建立一个关联,当用户在浏览器输入一个需要登录的网址时,系统首先会自动从hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应的网址,如果没有找到,则系统会再将网址提交到DNS域名解析服务器进行IP地址的解析、
以192.168.1.64 m.taowaitao.cn 为例
表示每次访问 m.taowaitao.cn的时候,都不回去DNS域名解析服务器获取真实的IP地址,表示已经拦截下来了,而直接使用 192.168.1.64 打开对应的网址

简单的介绍下几个Hosts的作用
1、方便局域网用户
 在公司局域网中,会有服务器提供给用户使用。但由于局域网中一般很少架设DNS服务器,访问这些服务器时,要输入难记的IP地址。这对不少人来说相当麻烦。可以分别给这些服务器取个容易记住的名字,然后在Hosts中建立IP映射,这样以后访问的时候,只要输入这个服务器的名字就行了。
2、屏蔽网站(域名重定向)
  有很多网站不经过用户同意就将各种各样的插件安装到你的计算机中,其中有些说不定就是木马或病毒。对于这些网站我们可以利用Hosts把该网站的域名映射到错误的IP或本地计算机的IP,这样就不用访问了。在WINDOWS系统中,约定 127.0.0.1 为本地计算机的IP地址, 0.0.0.0是错误的IP地址。

如果,我们在Hosts中,写入以下内容:
127.0.0.1 # 要屏蔽的网站 A
0.0.0.0 # 要屏蔽的网站 B
这样,计算机解析域名A和 B时,就解析到本机IP或错误的IP,达到了屏蔽网站A 和B的目的。

配置方法
1、VI编辑器修改
  1. Last login: Thu Apr 27 16:50:28 on ttys001
  2. zhengmingxiangdeMac-mini:~ zhengmingxiang$ sudo vi /etc/hosts
  3. Password:

按上面的输入后,下面会出现一个password让你输入密码,当你输入的时候是不会出现任何*字符号的,也不会有任何的提示,你只要输入完密码后按下回车就好了。打开文件之后,按下 i 即可进入编辑模式

  1. ##
  2. # Host Database
  3. #
  4. # localhost is used to configure the loopback interface
  5. # when the system is booting. Do not change this entry.
  6. ##
  7. 127.0.0.1 localhost
  8. 255.255.255.255 broadcasthost
  9. ::1 localhost
  10. 119.63.61.166 kd.gdgb.com
  11. ~
  12. ~
  13. — INSERT —

看到这个INSERT之后,就代表可编辑了(可插入文本的意思),然后你就根据 IP地址 + 网址就可以了,编辑完成后之后按ESC就是退出编辑模式,再按ESC + SHIFT + : 然后再wq之后按回车,就保存了。

2、文件目录进行修改

首先找到这个标志右击选择前往文件夹(或者SHIFT + COMMAND + G) 地址栏输入

%title插图%num

点击前往后你就会找到这货

%title插图%num

先拷贝一份到桌面,然后再用系统的文本编辑器打开,打开修改完之后再拖回来,名字相同,你直接替换掉就OK了

友情链接: SITEMAP | 旋风加速器官网 | 旋风软件中心 | textarea | 黑洞加速器 | jiaohess | 老王加速器 | 烧饼哥加速器 | 小蓝鸟 | tiktok加速器 | 旋风加速度器 | 旋风加速 | quickq加速器 | 飞驰加速器 | 飞鸟加速器 | 狗急加速器 | hammer加速器 | trafficace | 原子加速器 | 葫芦加速器 | 麦旋风 | 油管加速器 | anycastly | INS加速器 | INS加速器免费版 | 免费vqn加速外网 | 旋风加速器 | 快橙加速器 | 啊哈加速器 | 迷雾通 | 优途加速器 | 海外播 | 坚果加速器 | 海外vqn加速 | 蘑菇加速器 | 毛豆加速器 | 接码平台 | 接码S | 西柚加速器 | 快柠檬加速器 | 黑洞加速 | falemon | 快橙加速器 | anycast加速器 | ibaidu | moneytreeblog | 坚果加速器 | 派币加速器 | 飞鸟加速器 | 毛豆APP | PIKPAK | 安卓vqn免费 | 一元机场加速器 | 一元机场 | 老王加速器 | 黑洞加速器 | 白石山 | 小牛加速器 | 黑洞加速 | 迷雾通官网 | 迷雾通 | 迷雾通加速器 | 十大免费加速神器 | 猎豹加速器 | 蚂蚁加速器 | 坚果加速器 | 黑洞加速 | 银河加速器 | 猎豹加速器 | 海鸥加速器 | 芒果加速器 | 小牛加速器 | 极光加速器 | 黑洞加速 | movabletype中文网 | 猎豹加速器官网 | 烧饼哥加速器官网 | 旋风加速器度器 | 哔咔漫画 | PicACG | 雷霆加速