日期: 2021 年 3 月 25 日

一加要换 colorOS 了?那还可以轻松地刷氧 os 吗?

一加要换 colorOS 了?那还可以轻松地刷氧 os 吗?
30 条回复 • 2021-03-24 11:56:34 +08:00
erwin985211 1
erwin985211 3 天前
有这种好事
fishercloud1024 2
fishercloud1024 3 天前
49 年入国军,买了一加 8T
Ga2en 3
Ga2en 3 天前 ❤️ 1
估计不会并行继续开发了吧。。。

昨天换了 X3PRO 发现竟然把 Android11 的分区存储给阉了。。。。
acrisliu 4
acrisliu 3 天前 via iPhone
氧 OS 还在,能不能刷还不知道,大概率可以的吧。
erwin985211 5
erwin985211 3 天前
@erwin985211 看了下论坛,确实是真滴。氧 os 还会更新,但氢 os 彻底凉凉
malagebidi 6
malagebidi 2 天前 via Android
手持 8t 氧 os,前一阵子刷氢刷不回去,现在不用回去了。
yehoshua 7
yehoshua 2 天前 via Android
据说不影响刷氧 OS 。担心的话只能等发布了确认
anUglyDog 8
anUglyDog 2 天前
老肾用户想问下,又是氢又是痒又是 color,都是一加的吗?
tankren 9
tankren 2 天前 ❤️ 1
@anUglyDog 爸爸都是 OPPO
tinkerer 10
tinkerer 2 天前
@anUglyDog 一加的东家是 oppo, oppo 搞的 coloros.

594kJ 11
594kJ 2 天前
个人觉得还是有一点希望能刷的,但是估计没有以前那么简单可以直接把 ROM 放在根目录就更新
反正我已经崩溃到看三星 S21 去了……
hanqian 12
hanqian 2 天前 via iPhone
氢 os 没了,氧 os 的公交卡支持怎么办
pkoukk 13
pkoukk 2 天前
本来觉得 1+7p 还能再战两年,结果氢这破系统 bug 越来越多还不修
kingfalse 14
kingfalse 2 天前 via Android
主要还是卖老外,氧应该不会动,氢没了倒是不太在意,一直是用氧
kingfalse 15
kingfalse 2 天前 via Android
@pkoukk 手持 7 等下一个非开孔屏的再换
594kJ 16
594kJ 2 天前
@kingfalse 同用氧 OS 。请问下如果国行不再支持刷氧,还会考虑一加吗?
JensenQian 17
JensenQian 2 天前
@hanqian #12 nfc-sim,微信乘车卡小程序
JensenQian 18
JensenQian 2 天前
@594kJ #16 又不是不能解锁,*差的结果就是和小米现在一样,只能解锁了再刷国际版,只能这样了
Hyouka 19
Hyouka 2 天前
慢慢等吧
一加 7 pro 路过….
到手就直接刷了氧 OS 用到安卓 11
JensenQian 20
JensenQian 2 天前 ❤️ 1
@hanqian #12 https://www.v2ex.com/t/763695#reply16
66beta 21
66beta 2 天前
张老板说了,氢 OS 会保留

既然都有 flyme 用了( oh 不,我是说 colorOS ),谁 tm 还要禅定 OS 啊
Hyouka 22
Hyouka 2 天前 ❤️ 1
我大清(氢)要完了
Muniesa 23
Muniesa 2 天前
氧肯定还在,互刷我觉得问题也不大,都有厂商签名,也就不用解锁了,不过一加解锁也不难
dingyx99 24
dingyx99 2 天前
一加国外论坛确认了依旧保证国际版是 OOS 不会换 ColorOS

https://www.ithome.com/0/541/499.htm
Sapp 25
Sapp 2 天前
还有这种好事? 老手机给更新吗
Logiase 26
Logiase 2 天前
不知道能不能给 1+7p 上,之前给母上换的 1+7p,什么功能都没有,用着十分难受
ychost 27
ychost 2 天前
还是觉得原版 Android 用着*省心,流畅
lisjiang 28
lisjiang 1 天前
@kingfalse +1
Infinite2K 29
Infinite2K 1 天前
@pkoukk #13 7pro 现在的系统更新只剩下安卓更新补丁了

@kingfalse #15 同等一个屏下的,手里的 7pro 永远的神,还能坚持到出屏下的时候
zzzzzzzzyp 30
zzzzzzzzyp 1 天前
赶紧换吧,氢 OS 小问题可太多了,用的头疼

云服务器下NFS文件挂载配置

什么是NFS
*近想为毕设搭个云服务器,所以想使用nginx+tomcat+nfs的方式搭建一下这个云服务器。所以有了这篇配置的文章。
NFS是网络文件系统,允许一个节点通过网络访问远程计算机的文件系统,远程文件系统可以被直接挂载到本地,文件操作和本地没有区别,如果是局域网的nfs那么io的性能也可以保证。下面就以CentOS 7.x为例,配置NFS。

服务器端配置
首先是服务端配置,服务端提供文件系统供客户端来挂载使用,配置过程如下:

首先检查是否缺少基础环境:
rpm -qa | grep nfs-utils
rpm -qa | grep rpcbind

如果这两个包存在那么可以直接使用,一般服务器安装的时候都会存在,如果没有的话执行下面命令安装:
yum -y install nfs-utils
yum -y install rpcbind

打开需要的端口:
一次正常的挂载操作中,会涉及这些端口。

nfs tcp 2049 这个很明显到处都是
sunrpc tcp 111 这个很明显到处都是
sunrpc udp 111 其中这个很难发现,仔细排查才看到
acp-proto udp 4046 其中仔细看udp的会找到
安装完成之后配置nfs访问目录,配置文件位置/etc/exports,默认是空的这里添加一行:
/nfs_test 192.168.1.8(rw,no_root_squash,no_all_squash,async)
共享的文件夹位置 允许访问的ip(该地址可执行的操作)
这个配置表示开放本地存储目录/nfs_test 只允许192.168.1.8这个主机有访问权限,rw表示允许读写;no_root_squash表示root用户具有完全的管理权限;no_all_squash表示保留共享文件的UID和GID,此项是默认不写也可以;async表示数据可以先暂时在内存中,不是直接写入磁盘,可以提高性能,另外也可以配置sync表示数据直接同步到磁盘;就配置这些就可以,保存退出。

现在配置完这些配置,启动相关服务:
systemctl start rpcbind.service
systemctl start nfs.service

启动之后可以通过status来查看状态,如果下次修改了配置,可以重启服务来使配置生效,也可以直接执行如下命令刷新配置:
exportfs -a

从机配置
现在服务端配置完毕,可以在对应的主机上来配置从机了,需要的环境和服务端一样,要保证安装nfs-utils和rpcbind。

保证环境没问题和上面一样启动rpcbind服务和nfs服务。不再赘述。

首先创建挂载点: mkdir /mnt/test1

然后挂载nfs:mount -t nfs 192.168.1.3:/nfs_test /mnt/test1
注意这里的ip是主机ip,主机挂载位置/nfs_test,从机挂载位置/mnt/test1

挂载成功之后通过 df -h 可以查看挂载的情况,nfs可用空间就是服务端/nfs_test目录所能使用的*大空间。

现在就可以往nfs写入数据了,服务端往/nfs_test读写数据和客户端往/mnt/test1读写数据是一样的,这样就实现了文件同步和共享。

卸载nfs和普通文件系统一样,使用:umount /mnt/test1

如果需要设置开机挂载,在/etc/fstab添加一行配置即可: 192.168.1.3:/nfs_test /mnt/test1 nfs rw,tcp,intr 0 1 然后服务端和客户端都要用enable设置nfs和rpcbind服务开机启动,然后才可以正常挂载。
————————————————
版权声明:本文为CSDN博主「No_Game_No_Life_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/No_Game_No_Life_/article/details/88388975

服务器搭建个人网站(阿里云服务器)

服务器搭建个人网站
一丶购买服务器

这里我选的是阿里云服务器,进入阿里云官网https://www.aliyun.com

阿里云提供了几种服务器,云服务器ESC、轻量应用服务器,ESC更好一点儿,我选了轻量级应用服务器。购买好了之后,在阿里云网站主页→控制台→轻量应用服务器。找到运行中的实例点进去就好了。服务器器就购买好了
%title插图%num

二、配置服务器环境

首先你要知道怎么把你本机的文件放到你的服务器里去:你在本机上复制文件,远程连接服务器(ctrl+R快捷键打开“运行”,敲“mstsc”可打开远程连接窗口),在服务器中粘贴即可,就这么简单。你也可以设置本机上的各个盘为共享也是OK的。其次千万要注意:要在阿里云服务器中把你的防火墙的端口打开比如8080,3306之类的,不打开你是访问不了的
%title插图%num

(1)JDK和JRE

去官网http://www.oracle.com/technetwork/java/javase/downloads/index.html找到对应的JDK下载,或者百度“JDK”进入官网下载也是OK的,下载之后配置环境变量,此电脑→属性→高级系统设置→高级→环境变量→系统变量,新建JAVA_HOME和JRE_HOME两个变量,变量的值就是JDK和JRE的安装位置,配好之后再在path中加入JAVA_HOME和JRE_HOME,可以不用配classPath变量,新的jdk不建议配。
%title插图%num

%title插图%num

(2)Tomcat(或者jetty也是可以的)

下载Tomcat解压到你想解压的地方,配下环境变量啥的,修改配置文件,在配置文件中加入你的服务器ip让外部能访问。只要能让它运行就OK,如果能运行就找台手机或电脑输入:你的服务器ip:8080,测试下

(3)Mysql

下载mysql,复制到服务器安装,注意:你要设置一个可以远程访问的账户,不然就只能localhost访问,远程无法访问

三、把你写好的东西放到webapps录下,可以打包成war文件

四、接下来你有可以做各种尝试,可以学习下wordpress(可以快速建站的一个东西)如果对你有帮助的话记得点个赞哦

ios8新特性:pushkit实战总结(voip开发者必读)

Question:pushkit是什么?

Answer:ios8苹果新引入了名为pushkit的框架和一种新的push通知类型,被称作voip push.该push方式旨在提供区别于普通apns push的能力,通过这种push方式可以使app执行制定的代码(在弹出通知给用户之前);而该通知的默认行为和apns通知有所区别,它的默认行为里面是不会弹出通知的。目前来看push kit的用途还局限于voip push(根据笔者的实战经验来看,其他类型的push暂时不能够起作用,sdk也正处于演进中)。

Question: pushkit能帮我们做什么?

Answer:pushkit中的voippush,可以帮助我们提升voip应用的体验,优化voip应用的开发实现,降低voip应用的电量消耗,它需要我们重新规划和设计我们的voip应用,从而得到更好的体验(voip push可以说是准实时的,实侧延时1秒左右);苹果的目的是提供这样一种能力,可以让我们抛弃后台长连接的方案,也就是说应用程序通常不用维持和voip服务器的连接,在呼叫或者收到呼叫时,完成voip服务器的注册;当程序被杀死或者手机重启动时,都可以收到对方的来电,正常开展voip的业务。也就是说,我们当前可以利用它来优化voip的体验,增加接通率;条件成熟时我们就可以完全放弃后台的长连接,走到苹果为我们规划的道路上。
对于pushkit,除了苹果framework官方文档:https://developer.apple.com/library/prerelease/ios/documentation/NetworkingInternet/Reference/PushKit_Framework/index.html#protocols 以外,能够找到的帮助理解pushkit的莫过于wwdc的视频:712_sd_writing_energy_efficient_code_part_2。该视频也可以从苹果官网下载。

pushkit的局限:

在当前,pushkit仅支持ios8;且该功能正处于演进中,稳定性和在不同ios8小版本设备上的表现也可能有差异,在苹果开发者论坛上也有不少人反馈问题;根据经验,在下个大版本(也就是ios9)上可以期待该功能可以稳定下来。

如果需要在ios8之前的设备上支持pushkit功能,那么需要开发者付出很多额外的努力,这里不展开,有兴趣的同学可以到苹果论坛的相关板块去了解,有一些开发者在这方面走的比较远:

在下面的链接中搜索pushkit关键字,可以查找到相关内容:https://devforums.apple.com/community/ios/connected/push

    在简单介绍了pushkit和它能做的事并且了解到它的局限以后,还对pushkit感兴趣的童鞋可以往下继续看了(:)为了避免浪费大家的宝贵时间)。

 pushkit的voip功能的实现:

1.跟apns push类似,pushkit的voippush也需要申请证书(apns证书的申请流程参考:https://www.pushwoosh.com/programming-push-notification/ios/ios-configuration-guide/);voip push的证书申请步骤截图如下:

%title插图%num
%title插图%num
%title插图%num
%title插图%num
%title插图%num

2.使用该证书导出并加载到push服务器上,服务器侧无需做改动,仅替换证书相关的东西即可(具体流程和此前apns证书的加载完全类同);服务器和客户端的交互流程也基本类似。

3.客户端实现:

step1:在工程中添加pushkit;

step2:在工程设置里面的backgroundmode里面添加voip、backgroundfetch、remotenotifications的支持。

step3:保险起见,建议开发者使用*新版本的xcode和*新的sdk;也建议重新申请一个mobile provision文件用于打包。

step4:类似apns通知的客户端实现流程,voip push客户端相关的流程也类似:注册voip push通知,实现pushkit相关的代理。

贴出主要代码:

   在应用启动(appdelegate的didfinishlaunchwithoptions)后或根控制器的初始化等方法内调用如下代码:
    PKPushRegistry *pushRegistry = [[PKPushRegistry alloc] initWithQueue:dispatch_get_main_queue()];
    pushRegistry.delegate = self;
    pushRegistry.desiredPushTypes = [NSSet setWithObject:PKPushTypeVoIP];
   
    UIUserNotificationSettings *userNotifySetting = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert categories:nil];
    [[UIApplication sharedApplication] registerUserNotificationSettings:userNotifySetting];
    上面的代码实现了在应用启动时对voip push的注册;

在appdelegate或框架viewcontroller类中实现voip push的代理:

@interface EPTabBarController : UITabBarController

– (void)pushRegistry:(PKPushRegistry *)registry didUpdatePushCredentials:(PKPushCredentials *)credentials forType:(NSString *)type
{
    if([credentials.token length] == 0)
    {
        NSLog(@”voip token NULL”);
        return;
    }
    
    ZeroPush * push = [[ZeroPush alloc] init];
    
   // push.apiKey = @”iosdev_1Z6JR3PKBWrAWbuHLbLQ”;
    
    push.apiKey = @”iosprod_HZDimW5ssYsRQgaSaEoE”;
    
    // iosprod_HZDimW5ssYsRQgaSaEoE
    
    [push registerDeviceToken:credentials.token channel:@”me”];
}

我们这里对接的push服务器是zeropush提供的服务;后面我们会大概介绍下该服务;上面的代理方法是设备从苹果服务器获取到了voip token,然后传递给应用程序;我们需要把这个token传递到push服务器(和apns push类似,我们也是要传递apns token到push服务器,但是这两个token的获取方式不同,分别在不同的代理方法中回调给应用,且这两个token的内容也是不同的)。

push server在获取到用户的voip token之后,在一切正常的情况下,另外一个回调会在push server下发消息到对应token的设备时被触发。

– (void)pushRegistry:(PKPushRegistry *)registry didReceiveIncomingPushWithPayload:(PKPushPayload *)payload forType:(NSString *)type
{
 
    NSLog(@”didReceiveIncomingPushWithPayload”);
    // 此时进行voip注册

    // write your voip related codes here
    
    UIUserNotificationType theType = [UIApplication sharedApplication].currentUserNotificationSettings.types;
    if (theType == UIUserNotificationTypeNone)
    {
        UIUserNotificationSettings *userNotifySetting = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert categories:nil];
        [[UIApplication sharedApplication] registerUserNotificationSettings:userNotifySetting];
    }

    UILocalNotification *backgroudMsg = [[UILocalNotification alloc] init];
    backgroudMsg.alertBody= NSInternationalString(@”You receive a new call”,nil);
    [[UIApplication sharedApplication] presentLocalNotificationNow:backgroudMsg];

}
上面的回调代码里仅仅打印了日志,触发了一个本地通知;这个代理方法是收到voip push通知时触发的;如果一切正常,该通知在手机重启、应用被系统回收、手动kill程序的情况下,依然能够被触发,且可以有一段时间用来执行自己的代码(比如voip注册等)。

我们这里简单设计一个业务供大家参考,主要是为了让大家直观的认识到pushkit的能力:

1.应用的voip长连接不保持,在收到呼叫或者发起呼叫时再连接;

2.当呼叫发送到voip 服务器时,对端若不在线,通过voip 服务器连接到pushserver向对端发push通知;

3.应用收到voip push通知时,迅速完成注册;

4.呼叫方通过延时操作等逻辑(复杂一点对voip服务器进行改造,被叫连接上来以后通知到主叫侧),再次发起呼叫,通话即成功建立。

zero push的介绍:https://www.zeropush.com/

zero push的技术支持邮箱:[email protected]

笔者曾就一个证书相关的问题尝试给该邮箱发信,很快得到了满意的答复,非常棒!

zero push 提供了一个免费试用的服务,这让我们体验voip push非常方便;

按照它的提示,注册账号,然后创建应用,上传voip 证书,从网页上获取到它的apikey(这个key在上传token之前要用到,在上面的代理方法中)。

下面是它对voip push的介绍文章,*后面是demo工程的github链接:

https://www.zeropush.com/guide/guide-to-pushkit-and-voip

需要注意的是,该工程使用swift语言编写,如果你的证书和provision文件等都是之前申请的,只用于oc创建的工程,那么该工程在真机运行时很可能会闪退;解决办法是重新生成你的证书和provision文件,并使用到工程中,然后重新打包,该问题即可得到解决了。

Python类的定义

Python类的定义

必须知道的概念
类 Class: 用来描述具体相同的属性和方法的对象的集合。定义了该集合中每个对象所共有的属性和方法。对象是类的示例。

类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。

实例变量:定义在方法中的变量,只作用于当前实例的类。

数据成员:类变量或者实例变量用于处理类及其实例对象的相关数据。

方法:类中定义的函数。在类内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self, 且为*个参数,self 代表的是类的实例。

构造函数:即__init()__,特殊的方法,在对象创建的时候被自动调用。

析构函数:即__del()__,特殊的方法,在对象被销毁时被自动调用。

实例化:创建一个类的实例,类的具体对象。就是将创建的类赋值给另一个变量。理解为赋值即可,a = class(),这个过程,就叫做实例化

对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟”是一个(is-a)”关系(例图,Dog是一个Animal)。

方法重写:如果从父类继承的方法不能满足子类的需求,可以对其 进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。

构造函数—— “ __init__()”
当类被实例化时自动执行的函数 __init__(),如果没有写自定义的构造函数,则会执行默认构造函数,该默认构造函数”什么也不干”。

 

析构函数——“__del__”
__del__()也是可选的,如果不提供,则Python 会在后台提供默认析构函数。当使用del 删除对象时,会调用他本身的析构函数,另外当对象在某个作用域中调用完毕,在跳出其作用域的同时析构函数也会被调用一次,这样可以用来释放内存空间。

可显示调用析构函数,使用del语句——“del  + 对象名”

 

属于类级别的变量,在使用它的时候一定要带上类型名字 比如 MyClass.count

属于每个对象级别的变量,在调用的时候一定要带上self表明属于当前对象。self.name

 

类中的self到底是干啥的
首先需要知道的是self只有在类的方法中才会有,且self在定义类的方法时是必须有的,但是在调用时不必传入相应的参数。

另外,self名称不是必须的,在python中self不是关键词,你可以定义成a或b或其它名字都可以。%title插图%num

class Person:
def _init_(myname,name):
myname.name=name
def sayhello(myname):
print(‘My name is:’,myname.name)
p=Person(‘Bill’)
print(p)
*后,self指的是类实例对象本身(注意:不是类本身)。%title插图%num%title插图%num

class Test:
def ppr(self):
print(self)
print(self.__class__)

t = Test()
t.ppr()
执行结果:
<__main__.Test object at 0x000000000284E080>
<class ‘__main__.Test’>
在上述例子中,self指向的是t这个对象,而不是类本身。在Python解释器的内部,当我们调用t.ppr()时,实际上Python解释成Test.ppr(t),也就是把self替换成了类的实例。

class Test:
def ppr():
print(self)

t = Test()
t.ppr()

运行结果:
Traceback (most recent call last):
File “cl.py”, line 6, in <module>
t.ppr()
TypeError: ppr() takes 0 positional arguments but 1 was given

class Test:
def ppr():
print(__class__)

Test.ppr()

运行结果:
<class ‘__main__.Test’>
类的私有变量、保护变量
私有变量:在类里面,在一个成员变量前加上“__”表示该变量是该类私有的,不能在外部通过类对象访问,只能在类的内部被使用。

保护变量:在类里面,在一个成员变量前加上“_”表示该变量是该类被保护的,这样的变量是可以在外部通过类的对象来访问的,但它的意思是“虽然我可以被访问,但是,请把我视为私有变量,不要随意访问”

注意:在Python中,变量名类似__xxx__的,也就是以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的,不是私有变量。

继承
继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”,继承的过程,就是从一般到特殊的过程。在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。

单继承
什么是单继承:一个子类只从一个父类派生。

构造函数书写问题:

1.python中如果子类有自己的构造函数,不会自动调用父类的构造函数,如果需要用到父类的构造函数,则需要在子类的构造函数中显式的调用。

2.如果子类没有自己的构造函数,则会直接从父类继承构造函数,这在单继承(一个子类只从一个父类派生)中没有任何理解上的问题。

3.如何调用父类的构造函数

a.经典类的写法: 父类名称.__init__(self,参数1,参数2,…)

b. 新式类的写法:super(子类,self).__init__(参数1,参数2,….)

 

系统运维常见问题及处理方式

1 Tomcat日志错误
1.1 java.lang.OutOfMemoryError: PermGen space
该错误是由于tomcat的bin目录下catalina.sh配置文件的内存设置过小导致的,需要修改export JAVA_OPTS=”$JAVA_OPTS -server -Xms512m -Xmx2048m -XX:PermSize=128m -XX:MaxPermSize=512m -Djava.awt.headless=true”中的-XX:PermSize=128m -XX:MaxPermSize=512m的数值。其中-Xms512m -Xmx2048m代表虚拟机堆内存,-XX:PermSize=128m -XX:MaxPermSize=512m代表虚拟机的非堆内存。

2 数据库
2.1 plsql能登录数据库,sqlplus登录会报用户名/密码无效
该错误只需要重新设置下登录用户密码即可
————————————————
%title插图%num

3 Liunx常用操作
3.1 同步服务器时间
liunx crond服务查看
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //查看服务

3.1.1 同步服务器时间命令:root执行/usr/sbin/ntpdate 时间同步服务器ip
————————————————
%title插图%num

添加定时任务
执行vim /etc/crontab,添加定时任务命令:

%title插图%num

.1.2 也可以先把同步脚本写到shell文本里,然后定时任务调执行该脚本
ntpdata.sh

%title插图%num

在/etc/crontab中添加

%title插图%num

使用“暴力“方法防止云服务器被暴力密码破解

*近在用腾讯云的云服务器给Minecraft建立游戏服务器,但是发现服务器经常会有网络卡顿,在几经排查后发现原来是服务器一直在被人暴力密码破解,在这里便留下一个暴力方法( 关闭远程端口)防止被暴力破解心得望能帮助到各位。

安全日志审查
如果想检查自己的云服务器是否正在被暴力密码破解,可以从事件查看器的安全日志中获得相关信息。经过具体检查,发现对方很鸡贼,每一次的登陆ip都是不同的,一般的ip屏蔽方法不太适用。
%title插图%num

反暴力破解
由于是云服务器,无法更改用户名(Administrator)同时也无法修改远程桌面的端口(3389),对方又很“聪明”的一直换ip暴力破解我的云服务器,无奈之下,我只能使出比他还“暴力”的方法。

1 关闭远程端口
一般服务器的使用都是作为网站或游戏等专用服务器,其实本身对服务器的操作并不需要很多,所以可以通过允许\拒*远程桌面端口的方式来*其简单的防止暴力破解密码。
一般的云服务器厂家都会有安全组配置的功能,所以我就使用安全组将远程端口(3389)关闭,防止对方暴力破解密码。
以下以腾讯云服务器为示例:

%title插图%num

如果想对服务器再次进行操作,只需要修改端口为允许再登录即可。

2 更改远程端口
详细的方法腾讯云有官方文档,关于windows和linux服务器的详细修改步骤均在文档里有写,这里将链接分享给大家:修改云服务器远程默认端口

小结
更改远程端口是十分有效的反暴力破解方法,但是其劣势也是可见的,就是端口处于暴露状态,仍有可能被暴力尝试获取可用的端口。虽然说通过端口开关的方法进行反暴力密码破解比较麻烦(每次登录和下线都需要先登录网页开关 ,也太麻烦了 ),但是也是从根源上杜*了暴力密码破解的问题。服务器的大多数用途并不是登录和使用,所以这个方法在多数情况下应该还是可行性很高的,希望可以帮到大家!

SSM搭建项目常见错误——Mybatis篇

1 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):com.scor.dao.XX.XX
当mapper.xml文件放在resources目录下时的解决方法有如下两种:

mapper.xml所在的包名与dao.java所在的包名一致;
若包名不一致则需要在spring-dao.xml中指定mapper.xml的路径,如下

————————————————
%title插图%num

当mapper.xml文件放在java目录下时的解决方法:

  1. 点击project structure,将mapper.xml所在的包设置为Resources文件夹,再在spring-dao.xml中指定mapper.xml的路径
  2. %title插图%num
  3. %title插图%num

Python类属性和方法的调用

Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。

一、类、对象概述
在面向对象程序设计中,把数据以及对数据的操作封装在一起,组成一个整体(对象),不同对象之间通过消息机制来通信或者同步。对于相同类型的对象进行分类、抽象后,得出共同的特征而形成了类。
类的抽象具体包括两个方面:
1.数据抽象:描述某类对象共有的属性或状态。
2.过程抽象:描述某类对象共有的行为或功能操作。
在python中,使用类来定义同一种类型的对象。类是广义的数据类型,能够定义复杂数据的特性,包括:
1.静态特性(即数据抽象):创建类时用变量形式表示对象特征的成员称为属性(数据成员)。
2.动态特性(即行为抽象,也就是对数据的操作方法):用函数形式表示对象行为的成员称为成员方法,数据成员和成员方法统称为类的成员。
类是实现代码复用和设计复用的一个重要方法,封装、继承、多态是面向对象程序设计的三个要素。
类是生成对象的抽象模板,对象是根据类创建出来的一个个具体的实例。
二、类的定义与使用
Python使用class关键字来定义类,class关键字之后是一个空格,接下来是类的名字,如果派生自其它基类的话则需要把所有父类放到一对圆括号中并使用逗号分隔,然后是一个冒号,*后换行并定义类的内部实现。
类名的首字母一般要大写。
class Car(object): #定义一个类,派生自object类(所有类的祖先,定义类时不存在其他父类就写object)
can_move=True #定义类属性
def infor(self): #定义成员方法
print(“This is a car”)
1
2
3
4
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的*个参数名称, 按照惯例它的名称是 self(self代表类的实例,而非类;self 不是 python 关键字,我们把他换成其他也是可以正常执行的)。
三、类属性和类方法的调用
定义了类之后,就可以用来实例化对象,并通过“对象名.成员”的方式来访问其中的数据成员或成员方法。

>>>spring=Bird() #实例化对象
>>>print(Bird.have_feather) #通过类名调用属性
>>>print(Bird.have_head) #通过对象名调用属性
>>>spring.move() #通过对象名调用方法
>
1
2
3
4
5

类方法大体分为 3 类,分别是类方法、实例方法和静态方法,其中实例方法用的是*多的。我们知道,实例方法的调用方式其实有 2种,既可以采用类对象调用,也可以直接通过类名调用。
通常情况下,我们习惯使用类对象调用类中的实例方法。但如果想用类调用实例方法,不能像如下这样:

class Study:
def info(self):
print(“学 Python”)
#通过类名直接调用实例方法
Study.info()
1
2
3
4
5
运行上面代码,程序会报出如下错误:

Traceback (most recent call last):
File “D:\python3.6\demo.py”, line 5, in <module>
Study.info()
TypeError: info() missing 1 required positional argument: ‘self’
1
2
3
4
其中,*后一行报错信息提示我们,调用 info() 类方式时缺少给 self 参数传参。这意味着,和使用类对象调用实例方法不同,通过类名直接调用实例方法时,Python 并不会自动给 self 参数传值。
读者想想也应该明白,self 参数需要的是方法的实际调用者(是类对象),而这里只提供了类名,当然无法自动传值。

因此,如果想通过类名直接调用实例方法,就必须手动为 self 参数传值。例如修改上面的代码为:

class Study:
def info(self):
print(“学 Python”)
clang = Study()
#通过类名直接调用实例方法
Study.info(clang)
1
2
3
4
5
6
再次运行程序,结果为:

学 Python
1
可以看到,通过手动将 clang 这个类对象传给了 self 参数,使得程序得以正确执行。实际上,这里调用实例方法的形式完全是等价于 clang.info()。

值得一提的是,上面的报错信息只是让我们手动为 self 参数传值,但并没有规定必须传一个该类的对象,其实完全可以任意传入一个参数,例如:

class Study:
def info(self):
print(self,”学 Python”)
#通过类名直接调用实例方法
Study.info(“zhangsan”)
1
2
3
4
5
运行结果为:

zhangsan 学 Python
1
可以看到,“zhangsan” 这个字符串传给了 info() 方法的 self 参数。显然,无论是 info() 方法中使用 self 参数调用其它类方法,还是使用 self 参数定义新的实例变量,胡乱的给 self 参数传参都将会导致程序运行崩溃。

总的来说,Python 中允许使用类名直接调用实例方法,但必须手动为该方法的*个 self 参数传递参数,这种调用方法的方式被称为“非绑定方法”。
用类的实例对象访问类成员的方式称为绑定方法,而用类名调用类成员的方式称为非绑定方法。
(此处参考)

四、私有成员与公有成员
私有成员在类的外部不能直接访问,一般是在类的内部进行访问和操作,或者在类的外部通过调用对象的公有成员方法来访问,而公有成员是可以公开使用的,既可以在类的内部进行访问,也可以在外部程序中使用。
从形式上看,在定义类的成员时,如果成员名以两个下划线开头但是不以两个下划线结束则表示是私有成员,否则就不是私有成员。
Python并没有对私有成员提供严格的访问保护机制,通过一种特殊方式“对象名._类名__xxx”也可以在外部程序中访问私有成员,但这会破坏类的封装性,不建议这样做。

在Python中,以下划线开头的变量名和方法名有特殊的含义,尤其是在类的定义中。
_xxx:受保护成员;
__xxx__:系统定义的特殊成员;
__xxx:私有成员,只有类对象自己能访问,子类对象不能直接访问到这个成员,但在对象外部可以通过“对象名._类名__xxx”这样的特殊方式来访问。
1
2
3
注意:Python中不存在严格意义上的私有成员。
————————————————

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