月度归档: 2021 年 9 月

Class.forName()的作用与使用总结

Class.forName()的作用与使用总结

1、Class类简介:


Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识。这项信息纪录了每个对象所属的类。虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类是Class类。Class类封装一个对象和接口运行时的状态,当装载类时,Class类型的对象自动创建。
Class 没有公共构造方法。Class 对象是在加载类时由Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的,因此不能显式地声明一个Class对象。
虚拟机为每种类型管理一个独一无二的Class对象。也就是说,每个类(型)都有一个Class对象。运行程序时,Java虚拟机(JVM)首先检查是否所要加载的类对应的Class对象是否已经加载。如果没有加载,JVM就会根据类名查找.class文件,并将其Class对象载入。
基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也都对应一个 Class 对象。
每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。
一般某个类的Class对象被载入内存,它就用来创建这个类的所有对象。

一、如何得到Class的对象呢?有三种方法可以的获取:

1、调用Object类的getClass()方法来得到Class对象,这也是*常见的产生Class对象的方法。例如:
MyObject x;
Class c1 = x.getClass();

2、使用Class类的中静态forName()方法获得与字符串对应的Class对象。例如:
Class c2=Class.forName(“MyObject”),Employee必须是接口或者类的名字。

3、获取Class类型对象的第三个方法非常简单。如果T是一个Java类型,那么T.class就代表了匹配的类对象。例如
Class cl1 = Manager.class;
Class cl2 = int.class;
Class cl3 = Double[].class;
注意:Class对象实际上描述的只是类型,而这类型未必是类或者接口。例如上面的int.class是一个Class类型的对象。由于历史原因,数组类型的getName方法会返回奇怪的名字。

二、Class类的常用方法

1、getName()

一个Class对象描述了一个特定类的属性,Class类中*常用的方法getName以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。

2、newInstance()

Class还有一个有用的方法可以为类创建一个实例,这个方法叫做newInstance()。例如:
x.getClass.newInstance(),创建了一个同x一样类型的新实例。newInstance()方法调用默认构造器(无参数构造器)初始化新建对象。

3、getClassLoader()

返回该类的类加载器。

4、getComponentType()
返回表示数组组件类型的 Class。

5、getSuperclass()
返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的超类的 Class。

6、isArray()
判定此 Class 对象是否表示一个数组类。

三、Class的一些使用技巧

1、forName和newInstance结合起来使用,可以根据存储在字符串中的类名创建对象。例如
Object obj = Class.forName(s).newInstance();

2、虚拟机为每种类型管理一个独一无二的Class对象。因此可以使用==操作符来比较类对象。例如:
if(e.getClass() == Employee.class)…

2、 Class.forName()方法:


Class.forName:返回与给定的字符串名称相关联接口的Class对象。

Class.forName是一个静态方法,同样可以用来加载类。该方法有两种形式:Class.forName(String name, boolean initialize, ClassLoader loader)和 Class.forName(String className)。*种形式的参数 name表示的是类的全名;initialize表示是否初始化类;loader表示加载时使用的类加载器。第二种形式则相当于设置了参数 initialize的值为 true,loader的值为当前类的类加载器。

static Class<?>

forName(String className)

Returns the Class object associated with the class or interface with the given string name.

static Class<?> forName(String name, boolean initialize, ClassLoader loader)

Returns the Class object associated with the class or interface with the given string name, using the given class loader.

说明:

publicstatic Class<?> forName(String className)

Returns the Class object associated withthe class or interface with the given string name. Invokingthis method is equivalent to:

Class.forName(className,true, currentLoader)

where currentLoader denotes the definingclass loader of the current class.

For example, thefollowing code fragment returns the runtime Class descriptor for theclass named java.lang.Thread:

Class t =Class.forName("java.lang.Thread")

A call to forName("X") causes theclass named X to beinitialized.

Parameters:

className – the fully qualifiedname of the desired class.

Returns:

the Class object for the classwith the specified name.

从官方给出的API文档中可以看出:

Class.forName(className)实际上是调用Class.forName(className,true, this.getClass().getClassLoader())。第二个参数,是指Class被loading后是不是必须被初始化。可以看出,使用Class.forName(className)加载类时则已初始化。

所以Class.forName(className)可以简单的理解为:获得字符串参数中指定的类,并初始化该类。

 

一.首先你要明白在java里面任何class都要装载在虚拟机上才能运行。

1.      forName这句话就是装载类用的(new是根据加载到内存中的类创建一个实例,要分清楚)。

2.      至于什么时候用,可以考虑一下这个问题,给你一个字符串变量,它代表一个类的包名和类名,你怎么实例化它?

A a = (A)Class.forName(“pacage.A”).newInstance();这和 A a =new A();是一样的效果。

3.      jvm在装载类时会执行类的静态代码段,要记住静态代码是和class绑定的,class装载成功就表示执行了你的静态代码了,而且以后不会再执行这段静态代码了。

4.      Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段。

5.      动态加载和创建Class 对象,比如想根据用户输入的字符串来创建对象

String str = 用户输入的字符串

Class t = Class.forName(str);

t.newInstance();

 二.在初始化一个类,生成一个实例的时候,newInstance()方法和new关键字除了一个是方法,一个是关键字外,*主要有什么区别?

1.它们的区别在于创建对象的方式不一样,前者是使用类加载机制,后者是创建一个新类。

2.那么为什么会有两种创建对象方式?

这主要考虑到软件的可伸缩、可扩展和可重用等软件设计思想。
Java中工厂模式经常使用newInstance()方法来创建对象,因此从为什么要使用工厂模式上可以找到具体答案。例如:

class c = Class.forName(“Example”);

factory = (ExampleInterface)c.newInstance();

其中ExampleInterface是Example的接口,可以写成如下形式:

String className = “Example”;

class c = Class.forName(className);

factory = (ExampleInterface)c.newInstance();

进一步可以写成如下形式:

String className = readfromXMlConfig;//从xml 配置文件中获得字符串

class c = Class.forName(className);

factory = (ExampleInterface)c.newInstance();

上面代码已经不存在Example的类名称,它的优点是,无论Example类怎么变化,上述代码不变,甚至可以更换Example的兄弟类Example2 , Example3 , Example4……,只要他们继承ExampleInterface就可以。
3.从JVM的角度看,我们使用关键字new创建一个类的时候,这个类可以没有被加载。  但是使用newInstance()方法的时候,

就必须保证:

1、这个类已经加载;

2、这个类已经连接了。

而完成上面两个步骤的正是Class的静态方法forName()所完成的,这个静态方法调用了启动类加载器,即加载 java API的那个加载器。
现在可以看出,newInstance()实际上是把new这个方式分解为两步,即首先调用Class加载方法加载某个类,然后实例化。这样分步的好处是显而易见的。我们可以在调用class的静态加载方法forName时获得更好

的灵活性,提供给了一种降耦的手段。

三.*后用*简单的描述来区分new关键字和newInstance()方法的区别:

1. newInstance: 弱类型。低效率。只能调用无参构造。
2. new: 强类型。相对高效。能调用任何public构造。

3、应用情景:


情景一:加载数据库驱动的时候

Class.forName的一个很常见的用法是在加载数据库驱动的时候。

如:

  1. Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);  
  2. Connection con=DriverManager.getConnection(“jdbc:sqlserver://localhost:1433;DatabaseName==JSP”,”jph”,”jph”);      

为什么在我们加载数据库驱动包的时候有的却没有调用newInstance( )方法呢?

即有的jdbc连接数据库的写法里是Class.forName(xxx.xx.xx);而有一些:Class.forName(xxx.xx.xx).newInstance(),为什么会有这两种写法呢?

刚才提到,Class.forName(“”);的作用是要求JVM查找并加载指定的类,如果在类中有静态初始化器的话,JVM必然会执行该类的静态代码段。

而在JDBC规范中明确要求这个Driver类必须向DriverManager注册自己,即任何一个JDBCDriver的Driver类的代码都必须类似如下:
public classMyJDBCDriver implements Driver {

static{

DriverManager.registerDriver(new MyJDBCDriver());

}

}

既然在静态初始化器的中已经进行了注册,所以我们在使用JDBC时只需要Class.forName(XXX.XXX);就可以了。

情景二:使用AIDL与电话管理Servic进行通信

Method method =Class.forName(“Android.os.ServiceManager”)

.getMethod(“getService”,String.class);

// 获取远程TELEPHONY_SERVICE的IBinder对象的代理

IBinder binder =(IBinder) method.invoke(null, new Object[] { TELEPHONY_SERVICE});

// 将IBinder对象的代理转换为ITelephony对象

ITelephonytelephony = ITelephony.Stub.asInterface(binder);

// 挂断电话

telephony.endCall();

如何调用一个 function 而不用等待其返回

比如现在有两个 function,一个 fun a,一个 fun b,在 fun a 中需要调用 fun b,但是对 b 的执行结果毫不关心,也不用等待 b 执行完,怎么实现比较合适?
Fun function 调用 等待11 条回复 • 2021-09-25 02:35:01 +08:00
wd 1
wd 2 天前 via iPhone
async 或者线程
kealm 2
kealm 2 天前
“`js
async function b() {
return new Promise((resolve) => setTimeout(resolve, 10000))
}

function a() {
console.time(‘b’)
b()
console.timeEnd(‘b’)
}

async function aa() {
console.time(‘b’)
await b()
console.timeEnd(‘b’)
}
“`
ila 3
ila 2 天前 via Android
celery
Abbeyok 4
Abbeyok 2 天前 via Android
threading.Thread
rootit 5
rootit 2 天前
python 肯定首选 asyncio.create_task() 了,再次 threading 起线程
zhangdeplives 6
zhangdeplives 2 天前
了解一下异步
demonzoo 7
demonzoo 2 天前
就直接在 a 里面调用 b() 就好了啊。。。不要 await b()
IsaacYoung 8
IsaacYoung 2 天前
thread
meiyoumingzi6 9
meiyoumingzi6 2 天前
哈哈哈哈哈哈 我当时刚接触 python 的时候也思考过这个问题

0. 多线程, 把 b 丢进新的线程计算
1. 多进程, 同上
3. 协程 async
4. celcry 等异步框架
5. 换 golang, 无脑 go 就行了 [手动狗头
yianing 10
yianing 2 天前 via Android
golang:go 就完了
dangyuluo 11
dangyuluo 2 天前
这种情况 Async 比多线程要好

使用 pycharm 遇到问题

1
aloxaf 2 天前 ❤️ 2
稍等,我去拿一下水晶球(
zhangdeplives 2
zhangdeplives 2 天前 ❤️ 1
建议移动主题到悬丝诊脉
z740713651 3
z740713651 2 天前
塔罗牌我放家里了
您要不发个面相
麻衣神相我能对着翻
ila 4
ila 2 天前 via Android
掐指一算,明天放假,后来再告诉你
ReferenceE 5
ReferenceE 2 天前 via Android
嗨呀,这个问题我见过,上次就是上面的老哥巴拉巴拉给我算卦算好的
nightwitch 6
nightwitch 2 天前
我抽了一张塔罗牌,占卜的结果是愚者。
ErwinCheung 7
ErwinCheung 2 天前
嗨呀,这个问题我见过,上次就是上面的老哥巴拉巴拉给我算卦算好的
abersheeran 8
abersheeran 2 天前
你等我翻一下易经看看你是什么问题哈。
MiketsuSmasher 9
MiketsuSmasher 2 天前
我刚刚算过一卦,问题应该出在楼主那里
sweetsorrow211 10
sweetsorrow211 1 天前
你等等,等我二大爷托梦了我问问他
cco 11
cco 1 天前
刚烧了一个乌龟壳,显示的卦象是 䝕齛?䬡??,我找专家确认了一下,翻译过来是:这是楼主的锅。

求一个获取 lambda 对象源代码的方法

我先说一下我试过的方法,以及为什么不行:

inspect.getsource:这玩意只能获取*行,比如定义一个多行的 lambda 它也只能拿到*行。并且如果 lambda 前面还有东西,它会一并拿回来,这部满足我的需求,我只想要从 lambda 关键词开始到整个 lambda 结束的定义,是不是原有格式我不在乎,只要完整且不多余就行。
lambda_object.__code__.co_firstlineno:这个同上,实际上 inspect.getsource 就是用这个值去拿的。这个值只能标识*行所在,却不能标识开始的横轴位置以及*后的坐标。
我能想到的解决方式是直接拿到 lambda 对象的字节码,从字节码反编译到 Python 源代码,但是我需要 2.7 和 3.9 、3.10 三个版本同时兼容的……我对字节码反编译不太熟悉,目前找到的都是以文件为单位的反编译,不知道有没有以对象为代码的反编译库。

我想做一个把类似于 User.filter(lambda user: user.age > 18) 这样的语句翻译到 SQL 的玩意。但是卡在了这里。

lambda 字节码 tso urce18 条回复 • 2021-09-26 11:07:16 +08:00
chinvo 1
chinvo 1 天前 ❤️ 1
python 不清楚, C# 里面的 lambda 会被编译成 expression, 就能直接用了.

python 大概也有类似机制?
v2exblog 2
v2exblog 1 天前
同问
hsfzxjy 3
hsfzxjy 1 天前 via Android
我之前实现一个拿 lambda 的 AST 的功能,但这个有个限制就是需要保证前置的 token 是固定的,具体可参考 https://github.com/hsfzxjy/lambdex/blob/master/lambdex/utils/ast.py#L97

比如要求用户写成 def_(lambda: …) ,然后将这个 lambda 对象以及字符串 ‘def_’ 传入这个函数,就可以拿到 AST

可能对你有帮助
hsfzxjy 4
hsfzxjy 1 天前 via Android
@hsfzxjy #3 这个在 3.5-3.10 应该都可以,2.7.没测过
penguinWWY 5
penguinWWY 1 天前
先说这个问题,瞎猜一下

一个方法是通过这个 lambda 反向拿到 module,然后把这个 py 文件编译到 ast 再做遍历

另一个是 PyCodeObject 对象中有一个属性是 co_linetable,这个属性的类型是一个 PyBytesObject,可以看 cpython 中对它的解析方法,应该可以拿到起始行列和终止行列
https://github.com/python/cpython/blob/main/Include/cpython/code.h#L77
penguinWWY 6
penguinWWY 1 天前
@hsfzxjy
@abersheeran

再借楼说下,https://www.v2ex.com/t/804224#reply4
二位有没有兴趣
chenxytw 7
chenxytw 1 天前 ❤️ 1
你的问题本身我不是很了解….但从你要做的事情来看,我在想,是不是没必要用你题目中提出的方法。而是通过实现 User 里 age 的 `__gt__` 之类的魔术方法,在这之中保存一些状态,然后将 Model 本身传给这个 lambda 就能做到你想要的事情了…这应该是*常见的实现类似事情的做法了….当然因为你要做的事情没有详细描述,所以不知道是不是有什么需求导致了你不采用这种方案….
fgwmlhdkkkw 8
fgwmlhdkkkw 1 天前 via Android
@chenxytw Python 的 orm 都是这么做的。
2i2Re2PLMaDnghL 9
2i2Re2PLMaDnghL 1 天前
参考下 PyMacro ?
abersheeran 10
abersheeran 1 天前
@hsfzxjy 你这个思路我也想到过,但是有一个问题我不知道该如何解决,比如同一行出现两个 lambda……

@penguinWWY 在 CPython 运行时用 Python 拿 PyBytesObject 的原始指针做不到的吧?

@chenxytw 这个办法我也想过,问题在于重载运算符不能把 and 、or 、not 运算给重载了……
penguinWWY 11
penguinWWY 1 天前
@abersheeran 当然是使用 C API 辣
O5oz6z3 12
O5oz6z3 1 天前
本质上也许是寻找一个表达式的源码位置:
1. lambda 有多少行?
2. 同一行里有几个 lambda ?
3. 是否嵌套 lambda ?
4. 是否有’lambda’字面字符串?
http://xion .io/post/code/python-get-lambda-code.html
看到这篇文章和#3 楼的实现,想到一个未验证的思路:对 inspect.getsource() 获取的源码进行修剪并编译成 ast,遍历 ast 提取所有 lambda 节点,用 Python3.9 的 ast.unparse() 获取近似的源码,用 co_code 判断源码编译后是否等价。
hsfzxjy 13
hsfzxjy 1 天前 via Android
@penguinWWY co_linetable 应该只存了行号,co_columntable 能拿到列号,但这是 3.10 新加的,兼容性不太好
hsfzxjy 14
hsfzxjy 1 天前 via Android
@abersheeran 我当时的解决方法是强制用户给同一行的 lambda 加不同的前缀,当然这个就比较丑了。同期待更好的方法
abersheeran 15
abersheeran 1 天前
@O5oz6z3 一语惊醒梦中人,只要对比源码编译后的 __code__ 就行了。一行*多也就几个 lambda 。

@hsfzxjy 好家伙,不同前缀有点暴力了
O5oz6z3 16
O5oz6z3 1 天前
@abersheeran #15 我指的是 __code__.co_code 字节码,是从那篇文章中学来的,虽然我也不确定这个字节码比较是否可靠。顺便写了两个 demo 。
简单的情况:
source_text = inspect.getsourcelines(lambda_func)[0][0]
source_ast = ast.parse(source_text)
lambda_node = next((node for node in ast.walk(source_ast) if isinstance(node, ast.Lambda)), None)
lambda_text = ast.unparse(lambda_node)
复杂的情况:
text = ‘lambda’ + inspect.getsource(lambda_func).partition(‘lambda’)[2].rstrip()
while text:
… try:
… … tree = ast.parse(‘({})’.format(text))
… … srcs = [ast.unparse(node) for node in ast.walk(tree) if isinstance(node, ast.Lambda)]
… … break
… except SyntaxError:
… … text = text[:-1]
test = lambda src: compile(src,”,’eval’).co_consts[0].co_code==lambda_func.__code__.co_code
hits = list(filter(test, srcs))
hsfzxjy 17
hsfzxjy 1 天前 ❤️ 1
@O5oz6z3 #16 co_code 不可靠,一个简单的反例

(lambda: print(1)).__code__.co_code == (lambda: sum(1)).__code__.co_code # True

这是因为变量名一类的不存在于字节码中,而是在 __code__.co_names 里
hsfzxjy 18
hsfzxjy 1 天前 ❤️ 2
还有另一个问题是你要考虑 lambda 所在的闭包,看一个例子

def f():
… a = 1
… return lambda: a + 1
a = 1
f().__code__.co_code == (lambda: a + 1).__code__.co_code # False

这两个 lambda 虽然代码相同但是他们字节码不一样。原因是 f() 中的 a 是个 local 变量,读取时会使用 LOAD_DEREF ;而后一个是 global 变量,读取时会使用 LOAD_GLOBAL 。总而言之 corner cases 有很多很多

能否通过代码直接调起 iOS 系统的截屏功能?

App 想做一个截屏的小功能,主要是截屏的时候,还可以有笔刷稍微绘制一下,具体功能如下:
1. 截屏页面,并可拖动设定截屏区域。
2. 有画笔 /橡皮,可以简单编辑 /绘制截图区域。
3. *后,获取到*终图片的 UIImage 数据。

而这些功能正好是系统的截屏功能(除了第 3 点,系统截屏是直接保存文件)。所以我就想有没有办法直接通过代码的方式,来调起 iOS 系统的截屏功能,用户处理完后能够拿到图片数据。
截屏 功能 绘制 iOS10 条回复 • 2021-09-27 14:24:54 +08:00
wipbssldo 1
wipbssldo 13 天前
对 App 的 view 进行截屏就可以了,没办法也不需要调起 iOS 系统的截屏功能
James369 2
James369 13 天前
@wipbssldo 这样虽然可以,但是我就需要额外的开发 笔刷 /橡皮的功能。
qq2511296 3
qq2511296 13 天前
https://share.api.weibo.cn/share/250411462.html?weibo_id=4332707376341309
感觉想起了多年前看到的 jsbox 作者的一条微博 很像是你要的功能,咋实现的不清楚
minamike 4
minamike 13 天前 ❤️ 1
@James369 笔刷 /橡皮可以直接调用系统的 pencilkit 吧
JHExp 5
JHExp 12 天前
找个第三方的编辑图片的库用下好了
cairnechen 6
cairnechen 12 天前
@qq2511296 链接无法访问
MX123 7
MX123 12 天前
苹果好烦人,有些功能系统已经有了,就是不开放给开发者用,比如扫码功能。
Building 8
Building 12 天前 via iPhone
苹果截屏绘图这套框架是开放的,基本上就是把 View 截图成为 Image 再扔给框架就可以了,什么都不用管。
ryh 9
ryh 3 小时 38 分钟前
@MX123 换一个例子吧,不要张口就来了
https://developer.apple.com/documentation/vision/vnbarcodeobservation
MX123 10
MX123 1 小时 39 分钟前
@ryh 不是 Api,是系统相册这类的功能!

请问 KVM-QEMU 中当虚拟机 insmod 某个 ko 的时候直接死机,如何进行调试?

如题,虚拟机 insmod 某个 ko 的时候直接死机,ko 在物理机的时候是正常使用的 看不到 bug…一点问题都没有,希望有大佬能帮帮我 谢谢大家

insmod 死机 物理机 虚拟9 条回复 • 2021-09-23 10:38:26 +08:00
kakyoin 1
kakyoin 5 天前
看不到 bug,一点修的思路都没有…顶顶~
westoy 2
westoy 5 天前
虚拟机里 dmesg 和 syslog 都没错误提示么?
wzxlovesy 3
wzxlovesy 4 天前 via Android
先看看 KVM 相关的 Log,说不定有有用的信息。如果是 QEMU 闪退,那有可能是什么指令执行错了;如果是 QEMU 宕机没闪退,那尝试用 QEMU 内置的 Monitor Console 看看代码执行到了哪里,卡在哪个内存位置,然后 disassemble 那个位置的代码看看是啥。当然如果能修改 ko 对应的代码的话,print debug 试试。当然还有个猜测是,如果你在宿主机编制了 ko,复制到 QEMU 里运行的话,可能有些编译出来的指令不支持,试试在 QEMU 内部重新编译一下。
lilogo 4
lilogo 4 天前
关于指令不支持这个*近也刚踩过坑,建议可以先看下 VM 内 CPU 指令集。
liuweisj 5
liuweisj 4 天前
给 vm 加个串口,从 console 会有 log 打印出来
feather12315 6
feather12315 4 天前 via Android
启用 kdump
wzxlovesy 7
wzxlovesy 4 天前 via Android
@lilogo 我*近踩过另一个深坑是 code segment 错误,导致发生中断时 QEMU 直接崩溃,当时调了很久的 interrupt handler 死活找不到问题……
kakyoin 8
kakyoin 4 天前
@westoy 应该有,但是 insmod 某个 ko,虚拟机直接卡死,就进不去了,之前用 ssh 可以看到一点,但是后面还是卡住了
kakyoin 9
kakyoin 4 天前
@wzxlovesy 好的!谢谢前辈,我去试试

求推荐微型主机

想用teamsns给外教建一个内部工作交流平台,占用空间80MB以内,流量不多,50元/年以内,有这样的主机吗?
以内 主机9 条回复 • 1970-01-01 08:00:00 +08:00
ihacku 1
ihacku 2012-10-17 19:46:37 +08:00
http://www.host1m.com/
yiqingfeng 2
yiqingfeng 2012-10-17 20:35:05 +08:00
@ihacku 还有年付19元的虚拟主机,这靠啥挣钱呢?恶性竞争啊。
ming 3
ming 2012-10-17 21:02:30 +08:00
@yiqingfeng http://www.incapsula.com/pricing-and-plans/compare-all-plans 这家的代理
qiuai 4
qiuai 2012-10-17 21:16:57 +08:00
来我这吧.香港.免备案.支持PHP+MYSQL. http://ihkhost.com

价格要稍高几十块.私聊

Q:39831817
perrydu 5
perrydu 2012-10-17 22:30:10 +08:00
@ihacku 不错的样子
@qiuai 价格不在预期内,不想浪费资源。
ihacku 6
ihacku 2012-10-17 22:53:34 +08:00
@yiqingfeng 我只是恰巧看到一个v2exer的博客 顺手查了下主机 然后又看到lz的帖子
dotbuddle 7
dotbuddle 2012-10-17 22:57:43 +08:00
为甚不用sae或bae?
tedd 8
tedd 2012-10-17 22:58:01 +08:00
我也想买个这个价位的来学习
gongweixin 9
gongweixin 2012-10-18 17:24:13 +08:00
mark 一下

虚拟主机咨询

近期打算花时间弄一个本地社区网站,主机选择方面心里还真没谱,国内的备案太麻烦,香港的又不知道速度各方面怎么样。v2ex有没有这方面的同学给推荐一个呢?

说明:
网站性质 -> 本地社区
程序 -> phpwind
社区 本地 网站7 条回复 • 1970-01-01 08:00:00 +08:00
9hills 1
9hills 2010-12-23 13:21:24 +08:00
直接上美国的主机算了,没必要在国内混—
lin 2
lin 2010-12-23 13:39:31 +08:00
http://hostandup.com/
年后会升价。
v2ex有几个朋友买了,效果可以问问看。
sytao 3
sytao 2010-12-23 13:52:16 +08:00
@9hills 是有这打算,不过还没想好去选择谁。
@lin 有演示站没?跑phpwind如何?
Kymair 4
Kymair 2010-12-23 14:31:35 +08:00
可以去 http://www.webhostingtalk.com 看看
不过首先得确定你的预算。

另外就是尽量不要买那种不限流量不限空间的,必定是超售无疑
itopidea 5
itopidea 2010-12-23 14:42:06 +08:00
国内推荐meyu.net

国外推荐bluehost
lin 6
lin 2010-12-23 22:12:01 +08:00
@sytao http://geekaa.com http://meow.im phpwind应该没问题。想使用可以把域名发我邮箱: linuximo # gmail.com
thinktrance 7
thinktrance 2012-10-26 14:25:43 +08:00
如果你也在需要靠谱的PHP主机,可以看看 http://www.vosent.com/hk-host/
万网康盛香港同机房 顶级品质~~~

关于香港的 VPS

毕竟离的更近,延迟会低很多。

大家有谁用过香港的 VPS 么,推荐一家吧。
VPS 香港 延迟24 条回复 • 1970-01-01 08:00:00 +08:00
ninjai 1
ninjai 2010-11-22 01:01:46 +08:00
香港的VPS国际带宽低,一台主机*多只有2M,所以用起来会比较悲剧
napoleonu 2
napoleonu 2010-11-22 07:51:00 +08:00
离的近,延迟不一定会低,用过一个,很烂。
CupTools 3
CupTools 2010-11-22 08:02:32 +08:00
1、香港是很近,但是带宽不便宜
2、香港有>10海底光缆连接全世界,但是容量都很小
3、香港是有VPS,不过既然你是决心买,还是买独服吧
napoleonu 4
napoleonu 2010-11-22 08:06:30 +08:00
@CupTools 我用的就是独服,所以我推测VPS也会很烂 ^,.^
c 5
c 2010-11-22 08:51:02 +08:00
据说ping很低,下载速度很慢。
licess 6
licess 2010-11-22 09:00:24 +08:00
香港都是2Mbps的小水管。。。流量大了会比较杯具的
ludwig 7
ludwig 2010-11-22 10:17:24 +08:00
http://store.taobao.com/shop/view_shop-80ad8e3e5803065a47263b0740adb066.htm
中国万维网,买了一个vps给人家远程上网用,速度和服务还可以。
flytwokites 8
flytwokites 2010-11-22 12:37:58 +08:00
这么杯具啊,浪费了这么好的地理位置. 不过台湾也很近啊?
CupTools 9
CupTools 2010-11-22 13:16:14 +08:00
@flytwokites 近没用,你要看出口带宽
hermitu 10
hermitu 2010-12-05 17:54:16 +08:00
没想到香港的带宽竟然那么小……我也曾经萌生过买香港服务器的想法。
fanzeyi 11
fanzeyi 2010-12-05 18:12:43 +08:00
那Google .hk ? = =
kayue 12
kayue 2010-12-15 08:19:38 +08:00
have anyone tried http://01link.net/ before?
Showfom 13
Showfom 2011-01-24 23:23:51 +08:00
@fanzeyi Google和Microsoft在香港有自己的机房,带宽是按G来算的。。。
randomx 14
randomx 2011-01-25 00:04:18 +08:00
不是这家就行 http://vps. la 去掉空格。。
Mianco 15
Mianco 2011-01-25 00:08:10 +08:00
马来西亚的如何,好像也是个重要的节点。
acgism 16
acgism 2011-01-27 11:01:04 +08:00
可以考虑加拿大…香港PING其实不低…
apoclast 17
apoclast 2011-01-27 12:21:43 +08:00
以前一个客户买过给我用过, 提供的服务很少, 不过速度倒是奇快(从上海电信访问)
http://icdsoft.com.hk
claliu 18
claliu 2011-01-27 12:59:54 +08:00
在选择vps或者hosting provider的时候 我认为首先要确认的是 网站的visitor 他们的地理位置以及所使用的网络 他们在访问网站的时候 一般情况下 会经由哪些as provider network进行访问 然后在进行相关的测试

http://traceroute.org/ 可以帮助我们理解上述事实及make the right decision

@_@
thinktrance 19
thinktrance 2012-10-26 14:25:17 +08:00 ❤️ 1
@ninjai 主要是楼主需求了,2M其实可以做很多事情了。

如果每月流量没有上百G的话,1M带宽足够了~~~

当然香港也有超越2M的大带宽独享VPS~~~
flyingkid 20
flyingkid 2012-10-26 14:34:51 +08:00
好吧。我知道一个。不过我决定沉默了。
andyliu 21
andyliu 2012-10-26 14:45:20 +08:00
@flyingkid 分享吧,亲
Eyon 22
Eyon 2012-10-26 14:49:55 +08:00
@cosbeta *近上线了香港vps,号称自有机房
cabinw 23
cabinw 2012-10-26 15:06:17 +08:00
用的香港VPS,但是是自己架的服务器
zhangzheng 24
zhangzheng 2012-10-26 15:06:29 +08:00
vr.org
cosbeta 25
cosbeta 2012-10-26 17:13:42 +08:00
@Eyon 是的,朋友在香港做的这个业务,一起合作,不是托管是自有的
*批已经卖完了

你们的VPS都装了什么发行版的Linux ?

我的是Arch ,会不会太激进?
VPS Linux Arch41 条回复 • 1970-01-01 08:00:00 +08:00
azure 1
azure 2012-11-08 12:00:19 +08:00
unbuntu12是不是很弱?
alexrezit 2
alexrezit 2012-11-08 12:02:33 +08:00
Debian… 不是我装的, 要是我装就装*新版的 Ubuntu, 是不是很懒? orz
sophy 3
sophy 2012-11-08 12:04:18 +08:00
ubuntu10.10
skydiver 4
skydiver 2012-11-08 12:06:18 +08:00
arch不装x还算稳定吧
eric_q 5
eric_q 2012-11-08 12:11:12 +08:00
all ubuntu 12.04 now
chendahui007 6
chendahui007 2012-11-08 12:36:04 +08:00
@skydiver 肯定不装X
aisk 7
aisk 2012-11-08 12:42:46 +08:00
Ubuntu12.04
hyq 8
hyq 2012-11-08 13:01:36 +08:00
要么装Debian,要么装Ubuntu,这两个顺手,实在没办法才考虑CentOS
Mrlee 9
Mrlee 2012-11-08 13:02:21 +08:00
CentOS
chendahui007 10
chendahui007 2012-11-08 13:37:14 +08:00
@hyq Debian 哪个版本好? 一般需要升级吧?
hyq 11
hyq 2012-11-08 13:44:45 +08:00
@chendahui007 我不知道哪个版本,反正平常不怎么折腾
Debian和Ubuntu的apt我比较喜欢,yum用起来比较蛋疼
clino 12
clino 2012-11-08 13:46:57 +08:00
ubuntu12.04
其实是因为只用过这个发行版…对其他的有畏惧感.
maxduke 13
maxduke 2012-11-08 13:47:50 +08:00
Debian
DeepBlue 14
DeepBlue 2012-11-08 14:41:20 +08:00
arch…习惯pacman了
话说只装常用服务器程序的话各发行版能差多少呢……
chendahui007 15
chendahui007 2012-11-08 18:57:54 +08:00
@DeepBlue 我也习惯pacman和yaourt了 ,我也想知道各服务器版本差异在哪里,就性能,稳定性等
jiazhoulvke 16
jiazhoulvke 2012-11-08 19:01:51 +08:00
用arch确实激进了点……毕竟是服务器啊,还是稳定性重要点
shanks 17
shanks 2012-11-08 19:47:45 +08:00
ubuntu server 10.04
plprapper 18
plprapper 2012-11-08 20:25:53 +08:00
*近买的vps装了ubuntu12.04
LokiSharp 19
LokiSharp 2012-11-08 22:12:44 +08:00
CentOS
jacy 20
jacy 2012-11-08 22:23:12 +08:00
windows撸过。。。*顺手
foru17 21
foru17 2012-11-08 22:25:15 +08:00
centos 6.几忘记了
little_cup 22
little_cup 2012-11-09 00:49:28 +08:00
Debian
chendahui007 23
chendahui007 2012-11-09 01:22:50 +08:00
@jiazhoulvke 还好,自己玩的
Semon 24
Semon 2012-11-09 02:14:23 +08:00
CentOS
sinxccc 25
sinxccc 2012-11-09 03:49:29 +08:00
Fedora 17…
cyokvip 26
cyokvip 2012-11-09 07:48:04 +08:00
ubuntu12.10
CNBorn 27
CNBorn 2012-11-09 09:54:41 +08:00
Gentoo
amirfish 28
amirfish 2012-11-09 10:07:01 +08:00
centos 5
chendahui007 29
chendahui007 2012-11-09 10:54:53 +08:00
@CNBorn 佩服用Gentoo的!
xiaoye 30
xiaoye 2012-11-09 11:14:34 +08:00
Gentoo
lerry 31
lerry 2012-11-09 12:10:26 +08:00
Gentoo,我想用Debian来着
wuxqing 32
wuxqing 2012-11-16 02:05:07 +08:00
CentOS,用习惯了
da_a 33
da_a 2012-11-18 23:14:03 +08:00
debian
myhost123 34
myhost123 2012-12-02 18:39:13 +08:00
不装面板
releasa 35
releasa 2012-12-03 14:58:07 +08:00
CentOS..习惯了,装软件好装。
66450146 36
66450146 2012-12-03 14:59:12 +08:00
debian testing
batilo 37
batilo 2012-12-03 15:10:02 +08:00
CentOS
zhouquanbest 38
zhouquanbest 2012-12-03 17:18:45 +08:00
CentOS
更接近生产关键还是比较好的
自己用的Ubuntu 所以想多学点东西
breestealth 39
breestealth 2012-12-03 21:31:46 +08:00
Debian,简单而且比较省事。
zhangxiao 40
zhangxiao 2012-12-03 22:07:23 +08:00
arch

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