月度归档: 2021 年 3 月

One Goal – 在菜单栏填入你的小目标

预览

one goal

为什么要做

我的记忆力不太好,有时候打开电脑浏览过一些邮件和新闻之后就忘记了自己一开始想要做什么。我希望打开电脑*件事情,设置好一个目标,时时提醒我当前*重要的事情是什么。

链接

  • 下载体验: https://github.com/timqian/one-goal/releases/download/v0.0/One.Goal.dmg
  • 官网: https://timqian.com/one-goal/
  • 开源代码: https://github.com/timqian/one-goal
23 条回复    2021-03-24 14:34:53 +08:00
bleepbloop
    1

bleepbloop   7 天前

我需要的不是一个目标,而是一个执行计划 (狗头)
anyforever
    2

anyforever   7 天前

需要这个东西,你这脑子是走神太多了。。。
ooops
    3

ooops   7 天前 via iPhone

只能输入一个么?
supercaizehua
    4

supercaizehua   7 天前 via Android

我需要这个东西!
timqian
    5

timqian   7 天前

@ooops 除非装两个 one goal ?
fx777
    6

fx777   7 天前   ❤️ 1

Goal:赚它一个亿。 今日完成度:0.0001%
saimax
    7

saimax   7 天前

挺需要这个的~ 比我贴个记事贴好看 哈
aero99
    8

aero99   7 天前

我倒是希望手机打开进入桌面就能看到壁纸上面一个提醒,试了任务和日程不行,除非修改壁纸,又很麻烦
domodomo
    10

domodomo   6 天前

系统自带的提醒事项不挺好用的吗?还可以多设备无缝切换

easylee
    11

easylee   6 天前

Catch the Flag!
bnrwnjyw
    12

bnrwnjyw   6 天前 via iPhone

一直想要这个
AlphaRobert
    13

AlphaRobert   6 天前

感觉可以加一个 progress indicator 垫在文字底下,一两 px 宽,然后在 pop-up 里加一个 slider 来控制进度
j165287
    14

j165287   6 天前

把备忘录放在 widget 里面不好吗 或者每天工作和下班时打开一次备忘录 习惯了不久好了
wangtcalex
    15

wangtcalex   6 天前

挺好的,已经用上了
goldenlove
    16

goldenlove   6 天前

结果状态栏图标太多位置不够还是看不见……(狗头)
mybdye
    17

mybdye   6 天前

状态栏本就不太够,还是不占位置了
666VS2333
    18

666VS2333   6 天前 via Android

阿哥有 win 版伐 ?
ufan0
    19

ufan0   6 天前 via Android

能放在 Touch Bar 吗?
timqian
    20

timqian   6 天前 via Android

@666VS2333 windows 好像没有 menu bar 吧?#18

@ufan0 暂时不得行,不过是个好主意,看下一代 mac 留不留 touch bar 再决定要不要支持了?

liuzhihang
    21

liuzhihang   6 天前 via iPhone

把系统自带的提醒放到菜单栏行不
aero99
    22

aero99   5 天前

@Zhongwei 目前在用 iOS,那么有没有类似的推荐一下,谢谢
KyrieJoshua
    23

KyrieJoshua   5 天前

支持一下,希望可以搞个小小的自定义进度条

常见的应用服务器

常见的应用服务器

Tomcat:免费开源,轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。只实现了JSP/Servlet的相关规范,不支持EJB

Jboss:免费开源,作为Java EE应用服务器,它不但是Servlet容器,而且是EJB容器,从而受到企业级开发人员的欢迎,从而弥补了Tomcat只是一个Servlet容器的缺憾。

Websphere:是IBM的收费平台,价格昂贵,单买一个但CPU的服务器也要十几万。除了web应用服务器还包含大量的工具和其他相关应用开发平台。正常EJB

weblogic:收费,包括EJB,JSP,Servlet,JMS等等,全能型的。是商业软件里排名*的容器(JSP、servlet、EJB等),并提供其他如JAVA编辑等工具,是一个综合的开发及运行环境。

Geronimo:是对Java EE 5标准100%的实现,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。

Resin: 收费,是CAUCHO公司的产品,是一个非常流行的application server,对servlet和JSP提供了良好的支持,性能也比较优良,resin自身采用JAVA语言开发。支持负载均衡。resin的速度要比tomcat快3倍,调试方便,resin的报错是十分简洁而明确的,可以让你一眼就可以看出程序错误的类型和位置,resin对于中文的支持要比tomcat好不少

jetty 免费开源,架构比较简单,也是一个可扩展性和非常灵活的应用服务器。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供

undertow:是一个用java编写的、灵活的、高性能的Web服务器,提供基于NIO的阻塞和非阻塞API。Undertow的架构是组合式的,可以通过组合各种小型的目的单一的处理程序来构建Web服务器。所以可以很灵活地的选择完整的Java EE servlet 3.1容器或初级非阻塞程序处理。

glassfish是Oracle 开发的官方Java EE容器,,也是同时支持Servlet和EJB,支持*新的特性,有自己的web容器,支持集群,支持热部署。

JRun:是由Allaire公司开发的JAVA服务器软件,它支持JSP1.1、Servlet2.2规范,目前*新的版本是JRun4,但是它的下载是要付费,它是Micromedia的一个应用服务器,它基于Sun公司的Java2平台企业版(J2EE)。

Jonas:一个开放源代码的J2EE实现,在ObjectWeb协会中开发。整合了Tomcat或Jetty成为它的Web容器,以确保符合Servlet 2.3和JSP 1.2规范。JOnAS服务器依赖或实现以下的Java API:JCA、JDBC、JTA 、JMS、JMX、JNDI、JAAS、JavaMail 。

ColdFusion是一个动态Web服务器,其CFML(ColdFusion Markup Language)是一种程序设计语言,类似现在的JavaServer Page里的JSTL(JSP Standard Tag Lib),从1995年开始开发,其设计思想被一些人认为非常先进,被一些语言所借鉴。

Python基础学习:函数(def)

Python基础学习:函数(def)

一. 函数的概念:
函数是带名字的代码块,用于完成具体的工作。为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小模块,这就是函数。
1
二. 函数的定义和调用:
代码示例1:定义函数

def get_love(): #函数名为:get_love()
print(“佳佳”)
get_love()

代码示例2:行参(parameter)与实参(argument)

def sum_num(a,b): #a,b为形参
print(a+b)
sum_num(3,5)) #3和5为实参
. 函数的返回值(return):
返回值能够将程序的大部分繁重工作移到函数中去完成,简化主程序。

代码示例1:简单返回值—求圆的面积

def S_yuan(pai,r):
return pai*r*r #返回函数的一个结果值
print(S_yuan(3,5))

代码示例2:返回一个字典

def person(pname,psex):
person={
“name”:pname,
“sex”:psex
}
return person
res=person(“刘德华”,”男”)
print(res)

代码示例3:函数与判断循环的使用

def person(p_name,p_sex,age):
#创建一个包含人物信息的字典。
person={
“name”:p_name,
“sex”:p_sex
}
if age:
person[“age”]=age
return person
while True: #这是一个无限循环
res=person(“刘德华”,”男”,50)
print(res)
break #必须用break结束循环体

四. 函数与列表的使用
代码示例1:列表反转字符串

def reverse_str(input_str):
ch=list(input_str)
lens=len(ch)
i=0
j=lens-1
while i < j:
tmp=ch[i]
ch[i]=ch[j]
ch[j]=tmp
i+=1
j-=1
return ”.join(ch)
print(reverse_str(‘weixiaonan’))

字符串的查找、修改、判断

字符串的查找、修改、判断

一、查找
find()
:检测某一个子串是否包含在这个字符串中,如果在返回这个子串的下标,如果不在则返回 -1
语法
字符串序列.find(子串,开始下标,结束下标)
注意开始下标和结束下标可以省略,表示在整个字符串中查找

str=”0123456789″
print(str.find(’10’))

结果为 :-1

a=’12345677′
print(a.find(’14’))

结果为 :-1

str=”0123456789″
print(str.find(‘345′))

结果为:3

a=’isc scjc dhsv jvdvud’
print(a.find(‘dhsv’))

结果为9

str=”0123456789″
print(str.find(‘8’))

结果为 :8

index()
检测某一个子串是否包含在这个字符串中:如果在返回这个子串开始下标,否则报错
语法 :字符串序列.index(子串,开始下标,结束下标)

txt = “Hello, welcome to my world.”

x = txt.index(“welcome”)

print(x)

结果:7

str=”0123456789″
print(str.index(‘23456′))

结果为:2

str=”0123456789″
print(str.index(’02’))

结果报错

查找的必须是单个的或者是连续的一个子串

index() 方法查找指定值的首次出现。
如果找不到该值,index() 方法将引发异常。
index() 方法与 find() 方法几乎相同,唯一的区别是,如果找不到该值,则 find() 方法将返回 -1。

rfind()和find()
功能相同但rfind是从右边开始查找

txt = “China is a great country. I love China.”

x = txt.rfind(“China”)

print(x)

结果为33

rindex 和index
功能相同但是查找方向从右边开始

txt = “Hello, welcome to my world.”

x = txt.rindex(“e”)

print(x)

结果为13

count()
返回某一个子串在字符串中出现的次数
语法 :字符串序列.count(子串,开始下标,结束下标)

txt = “I love apples, apple are my favorite fruit”

x = txt.count(“apple”, 10, 24)

print(x)

结果:1

strip() 方法删除开头和结尾的空白字符

a = ” Hello, World! ”
print(a.strip()) # returns “Hello, World!”

结果为Hello, World!

lower() 返回小写的字符串:
a = “Hello, World!”
print(a.lower())

结果为 hello, world

upper() 方法返回大写的字符串:
a = “Hello, World!”
print(a.upper())

结果为 HELLO, WORLD

title() 方法返回一个字符串,其中每个单词的*个字符均为大写。比如标题。
如果单词包含数字或符号,则其后的*个字母将转换为大写字母。

txt = “Welcome to my world”

x = txt.title()

print(x)

结果为Welcome To My World
请注意,非字母字母之后的*个字母将转换为大写字母:

txt = “hello d2d2d2 and 5g5g5g”

x = txt.title()

print(x)

结果为Hello D2D2D2 And 5G5G5G

Django中ORM框架概述

Django中ORM框架概述

本文旨在对于个人知识的梳理以及知识的分享,如果有不足的地方,欢迎大家在评论区指出

ORM框架的概念
ORM是对象关系映射的简称,由于当下的程序大多采用面向对象的思想,故ORM使我们可以使用面向对象的思想来设计数据库,使得数据库更加的简单

Model层开发流程
安装数据库驱动: pip install mysqlclient
Django中settings里面数据库的配置修改
DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.mysql’, # 数据库引擎类别
‘NAME’: ‘xxxx’, # 数据库名
‘USER’: ‘xxxx’, # 用户名
‘PASSWORD’: ‘xxxx’, # 密码
‘HOST’:’localhost’ / ‘127.0.0.1’, # 主机ip
‘PORT’:3306, # 端口号

创建app: python manage.py startapp app名称
在生成的app的models.py文件中定义model类
from django.db import models

class User(models.Model):
name = models.CharField(max_length=30)
password = models.CharField(max_length=30)

生成移植文件: python manage.py makemigrations
执行迁移操作: python manage.py migrate
ORM中的模型字段
字段类型 说明
SmallIntegerField 2字节
IntegerField 4字节
BigIntegerField 8字节
FloatField double
DecimalField max_digits=a, decimal_places=b,指的是该小数除小数点外一共a位,其中小数点后有b位
CharField max_length=a,表示*大长度为a
TextField 相当于mysql中的text
BooleanField 相当于mysql中的tinyint
DatetimeField 相当于mysql中的datetime
DateField auto_now_add=True表示该字段取决于该行数据首次添加的时间,auto_now=True表示该字段取决于该行数据修改的时间
ForeignKey ForeignKey(to=”对方的类或类名”, on_delete = 级联选项) 表示外键一对多
OneToOneField OneToOneField(to=”对方的类或类名”, on_delete = 级联选项) 表示外键一对一
ManyToManyField ManyToManyFiled(to=”对方的类或类名”) 表示外键多对多
ORM中的字段参数
null: 默认为False表示不能为空
default: 表示该字段的默认值,例: name = models.CharField(max_length=20, default=”FfFJ”)
primary_key: 定义当前列为主键
unique: 当前列是否唯一
db_column: 自定义列名,默认与定义的变量名相同
db_index: 是否在某列上建立索引
blank: 用于前端的form验证,表示在前端中该字段可以为空
meta:
class MyModel(models.Model):
salary = models.DecimalField(…)
…..
age = models.xxx
name = models.xxx
class Meta:
db_table = “表名” # 设置表名,修改Django默认的表名
unique_together = ((), ()) # 设置联合索引
ordering = [‘列名’]或[‘列名1’, ‘列名2’] # 规定表内数据的排序方式

Model-API的增删改查
这里以User这个model类为例

创建数据: User.objects.create()
删除数据: user = User.object.filter(id=1).first(), user.delete()
修改数据: user = User.object.filter(id=1).first(), user.username = “pfco”, user.save()
查询数据:
基本的查询方法:
all(): 返回QuerySet中的所有model对象 User.object.all()
get(): 返回一个model对象 User.object.get(id=1) 返回指定的一条数据,如果没有,则报错
filter(): 返回QuerySet对象,User.object.filter(id=1)
count(): 返回QuerySet集合中的对象个数 User.object.filter(age=12).count()
exclude(): 返回不满足条件的QuerySet对象,User.object.exclude(age=12),这行代码的意思是返回age不为12的所有用户
first(): 返回QuerySet中的*个数据
last(): 返回QuerySet中的*后一个数据
exists(): 判断当前Model类对应数据库表中是否有数据
order_by(‘列名’): 将查询到的QuerySet集合按照列名进行升序排列,如果要降序在列名前加’-’
lt, lte, gt, gte: 分别代表<、<=、>、>=,例如我们要找年龄大于等于18的所有用户,则对应的查询语句为User.objects.filter(age__gte=18)
模糊查询:
contains, icontains: 返回包含某个指定字符的所有数据,icontains指的是忽略大小写,User.objects.filter(name__contains=”s”),就是返回名字中包含s的所有用户
startswith, istartswith: 返回以某个指定字符开头的所有数据,istartswith指的是忽略大小写
endswith, iendswith: 返回以某个指定字符结尾的所有数据,iendswith指的是忽略大小写
范围查询:
in: 返回对应列数据在给定集合的所有行,例如User.objects.filter(age__in=(18, 20))返回的就是年龄为18或20的所有用户
range: 返回对应列数据在给定范围的所有行,例如User.objects.filter(age__range(18, 20))返回的就是年龄在[18, 20]之间的所有用户
空值查询: 返回对应字段为空的QuerySet集合,User.objects.filter(age__isnull=True)表示age字段为空的所有用户
日期查询:
year: 年份
month: 1-12 月份
day: 一年中的第几天
hour: 一年中的第几个小时
minute: 一年中的第几分钟
second: 一年中的第几秒
week: 一年中的第几周 1-52or53
week_day: 周几 周日=1, 周六=7

values(“列名1”, “列名2” … ): 返回符合条件的QuerySet集合中指定的列,这样每一个model对象都对应一个小字典
聚合函数(aggregate):
from django.db.models import Count, Max,Avg,Min,Sum
User.objects.aggregate(Max(“pk”), Min(“Salary”)) # 获得用户表中的*大id以及*少的薪水

分组查询(annotate):
# 分组查询是以values中的列作为分组条件
# 将所有的用户以age进行分组,并在每一组中找到*大id
User.objects.values(“age”).annotate(Max(“pk”))
# 将所有的用户以age进行分组,并找到所有组中id*大值大于15的所有组
User.objects.values(“age”).annotate(p = Max(“pk”)).filter(p__gt=15)

F()函数: 当当前的查询需要使用到表中另外的列时,使用F函数,例如User.objects.filter(id__gt=F(“age”))就是找到id大于年龄的所有用户
Q()函数: 当需要使用|或者~逻辑的时候,可以使用Q函数,例如User.objects.filter(Q(id__gt=15)|Q(id__lt=10))就是找到所有id大于15或者id小于10的用户
模型中的关联关系
一对一关系
class Passport(models.Model):
note = models.CharField(max_length=20)
person = models.OneToOneField(to=”Person”,on_delete=models.CASCADE,null=True) #关系属性
class Meta:
db_table=”t_passport”

class Person(models.Model):
name = models.CharField(max_length=20)
age = models.IntegerField()
class Meta:
db_table=”t_person”
“””
在一对一的关系中,互相都可以通过对方类名的小写调用对方
“””

一对多关系
class Category(models.Model):
title = models.CharField(max_length=20)
note = models.CharField(max_length=20)
class Meta:
db_table=”t_category”

class Goods(models.Model):
title = models.CharField(max_length=20,unique=True)
price = models.FloatField()
cate = models.ForeignKey(to=Category,on_delete=models.CASCADE)
class Meta:
db_table = “t_goods”
“””
在一对多的关系中,例如对于商品的分类而言,其中的某个对象我们假设为category,那么要获得
该分类下的所有商品的方法为category.goods_set,而要获得某个商品对象的分类的方式就是直
解good.cate就好了
“””

多对多关系
class Student(models.Model):
name = models.CharField(max_length=20)
age = models.IntegerField()
class Meta:
db_table=”t_student”

class Course(models.Model):
title = models.CharField(max_length=30)
expire = models.SmallIntegerField()
stu = models.ManyToManyField(to=Student) #关系属性
class Meta:
db_table=”t_course”
“””
在多对多的关系中,有对方属性的一方可以直接调用,没有的则需要加_set,例如上面的例子,当我们
获得当前学生对象为student,那么获得他所学的课程的方式就是student.course_set,而当我获得
当前课程对象为course时,获得学习该课程的所有学生的方式就是course.stu
“””

在有关联关系的表中增加数据的方式为(这里以一对多的关系为例):

cate = Category.objects.create(xxxxx)
good = Goods.objects.create(xxxxx, cate=cate)
1
2
在有关联关系的表中删除数据的时候,需要给外键指定它的级联方式,主要有一下几种:

#如果要删除主,所有从的外键置null (重要)
per = models.OneToOneField(to=Person,on_delete=models.SET_NULL,null=True)
#如果要删除主,所有从一起删除
per = models.OneToOneField(to=Person,on_delete=models.CASCADE,null=True)
#如果要删除主,django什么也不做,有数据库决定是否合法
per = models.OneToOneField(to=Person,on_delete=models.DO_NOTHING,null=True)
#如果要删除主,所有从的外键置为6 (重要)
cate = models.ForeignKey(to=”Category”,on_delete=models.SET(6))
#如果要删除主,所有从的外键置为默认值5 (重要)
cate = models.ForeignKey(to=”Category”,on_delete=models.SET_DEFALUT,default=”5″)
#如果要删除主,如果有从数据存在,不允许删除
cate = models.ForeignKey(to=”Category”,on_delete=models.PROTECT)

服务器系统备份的方案

dell 的服务器,系统是 centos,项目需要部署了很多服务和工具,目前想找个备份的方案,用于在新的机器上快速恢复系统,大家有推荐吗?谢谢

chinesestudio 1
chinesestudio 2019-06-26 02:12:41 +08:00 via Android
clonezilla dd 看你怎么个恢复法 懒得话 esxi proxmox 虚拟机 随便迁移
icekingcy 2
icekingcy 2019-06-26 02:56:14 +08:00 via iPhone
*近也在研究,一方面是 VM 一方面是 数据库和文档资料
Steps 3
Steps 2019-06-26 03:18:45 +08:00
为什么不在服务器里安装个虚拟化,然后这样就可以备份了哈!
loading 4
loading 2019-06-26 08:11:19 +08:00 via Android
我想了好久,还是应该用双机色备吧。
虚拟机的文件坏了就废了,除非你做直通。
wuqingwei 5
wuqingwei 2019-06-26 08:44:35 +08:00
@Steps 虚拟化暂时不考虑。
wzhpro 6
wzhpro 2019-06-26 09:15:04 +08:00
我的解决方案是把部署“服务和工具”的过程写出脚本,部署新服务器的时候直接跑下脚本就完了
wuqingwei 7
wuqingwei 2019-06-27 09:43:11 +08:00
@chinesestudio 如果用 esxi,esxi 对 pcie 扩展卡的驱动支持怎么样?
chinesestudio 8
chinesestudio 2019-06-27 12:49:53 +08:00 via Android
@wuqingwei 可以直通 一般服务器硬件都支持
wuqingwei 9
wuqingwei 2019-06-27 22:37:22 +08:00
@wzhpro 这种方法的确定是,安装软件需要联网,耗时较长,对脚本的要求较高,而且很多软件装完是需要配置的
QQ2171775959 10
QQ2171775959 2019-07-01 14:17:28 +08:00
可以做一个系统实时备份,当一个系统出现问题的话,另一个系统可以及时启动。数据及时更新。

wzhpro 2019-07-05 13:04:47 +08:00
@wuqingwei 不想联网就把安装包和脚本打包在一起,配置也是能通过脚本解决的。
wuqingwei 12
wuqingwei 2019-07-12 17:31:27 +08:00
@wzhpro 这种方法我也试试
tianyu1234 13
tianyu1234 2019-07-13 08:00:58 +08:00 via iPhone
diskgenius,全盘打包后新机恢复,简单粗暴。
080james 14
080james 2019-07-31 14:52:54 +08:00 via iPad
有各式各樣的雲端備份服務阿

如何选择*合适的服务器?服务器配置方案

如何选择*合适的服务器?服务器配置方案
在如今大数据流量剧增的网络应用时代,服务器租用越来越成为众多企业和运营商的首选。而性能和配置不达标的服务器选择只会给企业带来诸多运营问题;但不经过实际需求的评估,轻率的选择一台性能强劲、价格昂贵的服务器,无疑是会带来成本上的浪费;因此,不能一味的为了省钱而选择一台很容易称为计算瓶颈,或者没有充分考虑数据冗余的服务器,都是会影响正常的业务运行。

大家需要从不同的角度来决定选择一台什么样的服务器,找到满足技术需要、业务发展和成本控制之间的*佳平衡点,但这样是不容易,找到性价比*高的服务器*对还是需要有一点智慧存在的。今天小编就为大家整理和分享如何选择*合适的服务器,服务器配置方案。

在面对服务器的选择时,先不要急于决定选用什么样的CPU,多大的硬盘,多少内存,需要多少兆带宽这样的问题,这些都是我们*后需要得到的答案。而在这之前,我们需要先梳理几个需求性的问题:

1、服务器运行什么应用?

这是首先需要考虑的问题,在这里你要根据服务器的应用类型,也就是用途,来决定服务器的性能、容量和可靠性需求。我们按照前端服务器+应用程序服务器+数据服务器的常见基础架构来讨论:

(1)Web前端:正常情况下,我们认为大多数Web前端服务器(Front-end)对服务器的要求不大,例如静态Web服务器、动态Web服务器、图片服务器等等,因为在现有的技术框架中,我们有很多方案可以解决前端服务器的性能扩展和可靠性问题,例如LVS、Nginx反向代理、硬件负载均衡(F5,A10,Radware)等。

(2)应用服务器:由于承担了计算和功能实现,我们需要为基于Web架构的应用程序服务器(Application Server)选择足够快的服务器,另外应用程序服务器可能需要用大量的内存,尤其是基于Windows基础架构的Ruby,Python,Java服务器。这一类服务器至少需要使用单路至强的配置。对于可靠性的问题,如果你的架构中只有一台应用服务器,那肯定需要这台服务器足够可靠,RAID*对是不能忽视的选项。但如果有两台或更多的应用服务器,并设计了负载均衡机制,具有冗余功能,那我们则不必将每台服务器武装到底。

(3)特殊的应用:除了作为Web架构中的应用程序服务器之外,如果你的服务器是用来处理流媒体视频编码、服务器虚拟化、媒体服务器(Asterisk之类),或者作为游戏服务器(逻辑、地图、聊天)运行,则同样对CPU和内存需求比较高,我们至少要考虑单路至强的服务器,其中服务器虚拟化对存储的可靠性的要求都非常高。

(4)公共服务:我们指的是邮件服务器、文件服务器、DNS服务器、域控服务器这类服务器。通常情况我们会部署两台DNS服务器作为互相备份,域控主服务器也会拥有一台备份服务器(专用的或非专用的),所以对于可靠性,无需达到苛刻的地步。至于邮件服务器,至少需要具备足够的硬件可靠性和容量大小,这主要是为了对邮件数据负责,因为很多用户没有保存和归档邮件数据的习惯,当他们重装系统后,总会依赖重新下载服务器上的数据。关于性能问题,需要评估具体用户数量来*终决定。

(5) 数据库:我们*后讨论的应用,也是要求*高,*重要的服务器。无论你使用的是MySQL、SQLServer还是Oralce,一般情况下,我们认为它需要足够快的CPU,足够大的内存,足够稳定可靠的硬件。单路至强CPU/4GB内存/Raid1*对是入门配置。关于准确的配置我们需要再讨论业务需求后才能作决定。

2、服务器需要支持多少用户访问?

服务器肯定是为了提供某种服务,而使用这些服务的用户同样是我们必须考虑的因素,有几个具体的问题你需要做出评估:

有多少注册用户?正常情况下有多少用户会同时在线访问?每天同时在线访问的*高峰值大概是多少?这些问题,对我们决定采用什么样的CPU,多大的内存有着至关重要的影响。对于这些问题,建议*好和业务人员及技术服务沟通了解清楚。不过,你还要对未来的用户增长做一个尽可能准确的预测和规划,你的服务器需要支持越来越多的用户。

3、需要多大空间来存储数据?

我们需要从两个角度来计算这个问题,一个角度是有哪些类别的数据,包括:操作系统本身占用的空间、安装应用程序所需要的空间、应用程序所产生的数据、数据库、日志文件、邮件数据等等,如果是Web2.0类的网站,你还要计算每个用户的存储空间;另一个角度是从时间轴来考虑,这些数据每天都在增长,你至少要为未来1年(我们建议2~3年)的数据增长做个准确的测算,这可能仍然需要你的软件开发人员和业务人员一起提供足够的信息。*后你仍然需要为计算出来的数字结果乘1.5左右的系数,方便维护的时候做各种数据备份和文件转移操作。

以上就是大家在选择租用服务器时需要考虑和注意的问题,按照自己的实际需求选择*适合自己的服务器配置。

几种云架构的介绍

Dynamo 和 Bigtable
Dynamo是Amazon公司开发的并有详细的论文
Bigtable是Google公司开发的且也有详细的实现论文

下面将针对两者在存储数据的要求、体系架构、扩容、负载均衡、容错、数据存取及查询等方面进行一些简单的分析比较

a. 存储数据的要求
两者都是Key-Value形式进行存储

Dynamo偏向存储原数据,其所存储的数据是非结构化数据,对value的解析完全是用户程序的事情,不识别任何结构数据,都统一按照binary数据对待

Bigtable存储的是结构化或半结构化数据(web数据特点就是介于结构化和非结构化之间),其value是有结构的数据——就如关系数据库中的列一般,因而可支持一定程度的Query(比如可按单列进行)

Bigtable所存储的数据都是以字符串格式实现,所以对主建或者列(以及其自动加上的时间戳)排序都是以字符序进行,而dynamo的键值并非以字符串存储,而是统一经过md5算法转后成16字节md5_key存储的,因此对数据的访问必须知道key才可进行,故而对扫表(用游标)或者query访问则无能为力。当然在dynamo的基础上,配合一些方式我们实现query也并不可能.

b. 控制与存储架构
Dynamo是采用DHT(分布哈希表,请参看有关资料吧)作为基本存储架构和理念,这个架构*大特点是能让数据在环中“存储”均匀,各存储点相互能感知(因数据需要在环内转发,以及相互之间进行故障探测,因此需要节点之间的通讯),自我管理性强,因为它不需要Master主控点控制,有点是无热点,无单点故障危险

Bigtable的控制是采用传统的server farm形式,使用一个主控服务器+多个子表服务器构成。而数据存储形式是采用多维Map的稀疏结构,可看成是由多个列表组成,所谓稀疏是说每条记录并非要求有全列。其数据(包括索引,日志,记录数据)*终是存储在分布文件系统DFS之上——数据被以DFS所特有的文件形式分布存储在各各节点之上。

Server farm相比DHT的存储环自管理技术,它需要有master主控服务器来负责监控各客户存储节点(分配子表,失效检测,负载均衡等),另外索引文件的根也是集中存储,需要客户端首先读取(之后可以采用预读和缓存的技术减少读取索引表的次数)。这种集中控制的做法有一个缺陷就是系统存在单点故障 —— 因此单点需要高可用性,如记录恢复日志或双机备份等——但好处是更人为可控,方便维护,且集中管理时数据同步易于方便——显然,更新集中存储的原数据(如数据索引或节点路由等)相比DHT环中各个节点存储的原数据(如membership,即各点的路由关系)需要利用“闲谈机制”依次通知式地进行渐近更新要容易许多。

c. 容错问题
Dynamo和Bigtable都不是实验室应付领导参观,或者是炫耀技术的Demo,而是要实实在在进行商业运营的产品,因此首先要考虑的是机器成本问题!

*节约的方式就是采用普通PC服务器(目前市场价格大约2/3千元就能买到存储1T数据的机器——自然是没有显示器,声卡这些外设的)作为存储机器。

这些PC服务器自然是没有显示器,声卡这些外设的)作为存储机器。但做过大数据处理的人都知道,IDE/STAT硬盘的稳定性和寿命是无法和真正服务器中的SCSI硬盘相媲美(除硬盘外的其余部件的稳定性和寿命也一样和服务器差距颇大),在压力下损坏那是家常便饭——据Google说,1000台机器的集群中,平均每天坏掉一台机器——因此设计之初就将硬件故障认为是常态的,也就是说容错成为设计优先考虑的问题了。

Dynamo和Bigtable的数据都是冗余存放,也就是说一份数据会被复制成数份(副本数是可以根据数据要紧程度指定的),并被分散放在不同的机器上,以便发生机器宕机(偶然性宕机或网路不通属于临时故障,而硬盘坏掉则是永久故障,永久故障需要进行故障恢复——从副本恢复数据)时还有可用副本可继续提供服务——通常存放三个副本就已经可以高枕无忧了,因为要知道三个副本同期坏的可能性小到了 1000*1000*1000分之一

Dynamo 的冗余副本读写策略比较有趣,它定义了:N,W,R三个参数。其中N代表系统中每条记录的副本数,W代表每次记录成功写操作需要写入的副本数,R代表每次记录读请求*少需要读取的副本数。(详细参见论文)

Bigtable的容错问题论文中没有详细讲

d. 扩容问题
Dynamo将md5 key所围成的环行区间,尽量划分的粒度细一些,也就是多分成一些较小的区间/段(一个段对应存在硬盘上的一个数据表),但是要求一个物理机器不只存储一个段,而是存储连续区间的一组段表,并且在扩容期间不停服务

可参见Hypertable(Bigtable的开源C++实现)

e. 负载均衡问题
对于Dynamo系统而言是天生的优势,因为它采用了DHT方式将数据都均匀存储到各个点了,所以没有热点在(或者说要热,则环中所有的点一起热),各点的数据存储量和访问压力应该都是均衡的(这点由md5算法特性决定) – 注意Dynamo的Virtual Node概念

Bigtable的负载均衡是也是基于传统上server farm :依靠一个master服务器监视子表 server的负载情况,根据所有子表服务器的负载情况进行数据迁移的,比如将访问很热的列表迁移到压力轻的子表服务器上(数据*终还是落在了chunk server —— DFS上的存储服务点,从层级结构上来说处于子表服务器之下)

f. 数据存取和查询问题
都支持主建的随机查询

如果需要按照列进行查询,或者需要range的query查询,则Dynamo就无能为力了

Bigtable并没有关系数据那么强,对于query的支持也仅仅是支持条件是单个列,不能以多列为目标进行复合条件查询,更别说join查询

Simpledb 值的研究一下

Hbase
Hadoop的一个子项目,类似于Bigtable , *适合使用Hbase存储的数据是非常稀疏的数据(非结构化或者半结构化的数据)。Hbase之所以擅长存储这类数据,是因为Hbase和Bigtable一样,是列导向的存储机制

Couchdb
Apache下的一个面向文档存储,由Erlang开发而成,和其他新型存储系统一样它同样是分布存储系统,具有很好的扩展性。但不同在于没有任何统一的 schema可言,数据组织是平坦的,无行无列。如果需要查询等操作,则借助于用户自己提供的聚合与过滤算子,以Map/Reduce方式进行对文档信息进行全文检索处理——这个角度上说它也能实现类似数据库的查询,可方式方法完全不同——但它提供了一个view的数据关系逻辑接口,对用户而言,可以想象成传统的表

Simpledb
amazon公司开发的一个可供查询的分布数据存储系统,它是Dynamo键值存储的补充和丰富,目前用在其云计算服务中。其具体实现方式没有论文公开

Pig
yahoo捐献给apache的一个很有趣项目,它不是一个系统,而是一个类SQL语言, 具体目标是在MapReduce上构建的一种高级查询语言。目的是把一些运算编译进MapReduce模型的Map和Reduce中,允许用户可以自己的功能. Pig支持的很多代数运算、复杂数据类型(tuple,map)、统计运算(COUNT,SUM,AVG,MIN,MAX)和相关数据库检索运算(FILTER,GROUP BY,ORDER,DISTINCT,UNION,JOIN,FOREACH … GENERATE)

原文链接:https://blog.csdn.net/lzz313/article/details/5333630

求推荐静态网页可以存放点的服务器

搞了一个静态的个人 profile 网页,也不打算瞎折腾了,有什么性价比比较高的服务器。支持绑定域名、稳定点即可。

价格,一年 100 以内的

fredshao 1
fredshao 2019-07-08 19:10:07 +08:00
github pages
fredshao 2
fredshao 2019-07-08 19:10:21 +08:00
github pages,完全免费
imdong 3
imdong 2019-07-08 19:20:15 +08:00 ❤️ 1
OSS 之类的云存储,有的是允许 html 的,绑定域名以后不就是了。
当然,github pages 确实也很好用的。
hutng 4
hutng 2019-07-08 19:43:20 +08:00 via Android
x 迅云,对象存储,10G 免费流量
daodao 5
daodao 2019-07-08 19:51:10 +08:00
@imdong 感谢 居然搞定了
huiyifyj 6
huiyifyj 2019-07-08 19:55:16 +08:00
腾讯云 COS, 或者 FireBase 的 Hosting.

之前用过 hosting,
https://xn--02f.com
https://huiyi-fyj.web.app
https://huiyi-fyj.firebaseapp.com

后两个是他们提供的域名,前一个是自定义的。
huiyifyj 7
huiyifyj 2019-07-08 20:01:17 +08:00
不过 hosting 的缺点是需要用 firebase-tools (github.com/firebase/firebase-tools) 部署(这是 node 写的 cli )

重点是在国内是不能使用,因为它不支持 socks5 代理,不过这个功能有人提了 issue
https://github.com/firebase/firebase-tools/issues/883
大家帮忙点下大拇指?投票

我是用的国外服务器部署的。

重点是 hosting 对国内外速度都很快,而 cos 就不敢保证国外的速度。
terax 8
terax 2019-07-08 20:31:13 +08:00 via iPhone
netlify
agdhole 9
agdhole 2019-07-08 20:44:39 +08:00
良心云 cos,每月送 10G 流量包
linmq 10
linmq 2019-07-08 21:40:15 +08:00 via iPhone
netlify

dazkarieh 2019-07-08 21:55:00 +08:00
必须 github pages,原先 coding,又搬回 github pages
niubee1 12
niubee1 2019-07-08 21:56:25 +08:00
国内的均要求域名备案

国外的均有被墙危险……
opengps 13
opengps 2019-07-08 22:26:07 +08:00 via Android
不用服务器,用对象存储服务,七牛,阿里 OSS,腾讯 COS 都行
imdong 14
imdong 2019-07-08 22:43:00 +08:00
貌似楼主选择了用 OSS 之类的云存储做静态站;
那么,就友情提醒下,OSS 要配合 CDN 使用更香。

不建议直接使用 OSS 本身,因为 OSS 不带 CDN 分发优势。
ayson23 15
ayson23 2019-07-09 09:31:29 +08:00
个人主页的话,肯定是 GitHub pages 啦,操作又简单,主要是方便
thinkxen 16
thinkxen 2019-07-11 09:44:31 +08:00
香港是不会错的选择
www.vosent.com
请了解一下
tianyu1234 17
tianyu1234 2019-07-13 07:58:47 +08:00 via iPhone
阿里云虚机啊。有个 58 一年,1G 空间 50M 数据库,8G 流量每月,BGP 多线。支持 php,asp,.net ,mysql,mssql,静态。速度和延迟都不错。
QQ2171775959 18
QQ2171775959 2019-07-15 13:48:46 +08:00
可以放的,如果图片比较多,可以考虑用独立的服务器存放比较划算,具体的要看实际情况来弄。
1dian01 19
1dian01 2019-07-15 15:31:52 +08:00
@huiyifyj 请教一下,腾讯 cos 的二级域名是自动分配的吗?还是可以自己定义的?这个二级域名只是临时让用用,还是长期有效?
huiyifyj 20
huiyifyj 2019-07-15 16:24:00 +08:00 via Android
你可以自定义,它分配的是长期有效。
@1dian01 #19
1dian01 21
1dian01 2019-07-15 16:40:15 +08:00
@huiyifyj 谢谢
1dian01 22
1dian01 2019-07-15 17:23:45 +08:00 ❤️ 1
@huiyifyj 您那边速度怎么样,我这边感觉不是很快,不知道是不是我网络的原因
huiyifyj 23
huiyifyj 2019-07-15 18:59:49 +08:00 via Android
@1dian01 #22
cos 速度很快,只要你选的地区对了。
如果地区不对可以套腾讯的 CDN 加速
1dian01 24
1dian01 2019-07-16 10:32:42 +08:00
@huiyifyj 有建议的区域吗?谢谢
huiyifyj 25
huiyifyj 2019-07-16 22:59:27 +08:00 via Android
@1dian01 #24
忘你靠近的地方选啊。但是如果套 CDN,那就没太多区别。
vpsor 26
vpsor 2019-08-21 12:18:01 +08:00
1 年 100 块钱的预算,推荐硅云虚拟主机了,稳定是没问题的,只是容量只有 100M,不知道能否满足楼主。

村网通?MacOS在当前用户目录下,新建一个文件夹,命名为`Developer`,文件夹上会出现一个锤子

村网通?在当前用户目录下,新建一个文件夹,命名为`Developer`,文件夹上会出现一个锤子

参考截图

34 条回复    2021-03-26 14:05:46 +08:00
agagega
    1

agagega   4 天前 via iPhone   ❤️ 1

这个是看斯坦福老爷爷的 iOS 课知道的
ynyounuo
    2

ynyounuo   4 天前 via iPhone

/System/Library/CoreServices/CoreTypes.bundle/Contents/Info.plist
orangy
    3

orangy   4 天前 via iPhone   ❤️ 1

所以侧边栏的 bugaco 为啥不打码?
j165287
    4

j165287   4 天前   ❤️ 1

那如果新建一个 Farmer,是不是会出现一把镰刀,有点意思
zanyzephyr
    5

zanyzephyr   4 天前

@agagega 是的,被发现了?
“the canonical place”
zanyzephyr
    6

zanyzephyr   4 天前

@orangy 贴的时候发现这里忘记了。迫于懒,算了?
zanyzephyr
    7

zanyzephyr   4 天前

@ynyounuo 好吧,原来在这里定义的有~
zanyzephyr
    8

zanyzephyr   4 天前

@j165287 可能苹果遗忘了 Farmer?‍?
zanyzephyr
    9

zanyzephyr   4 天前

@zanyzephyr emoji 里却又有 farmer
Rrobinvip
    10

Rrobinvip   4 天前

有意思

Dvel
    11

Dvel   4 天前   ❤️ 2

我还以为是老罗的锤子
lostberryzz
    12

lostberryzz   4 天前

这是我一直用 Developer 作为开发目录的理由,而不是比较常见的 workspace, dev, src 等等
fatelight
    13

fatelight   4 天前

get
还有什么文件夹呢? mark 一下
ShuoHui
    14

ShuoHui   4 天前 via iPhone

@agagega #1 请问这是哪个课程
xaoflysho
    15

xaoflysho   4 天前

@fatelight

新建一个“website”文件夹,文件夹图标上还有一个 Safari

Autonomous
    16

Autonomous   4 天前

谢谢,已搞到锤子?
xaoflysho
    17

xaoflysho   4 天前

@fatelight 楼上写错了,是“Sites”

![image]( https://i.loli.net/2021/03/25/5g7PGCEopUlyNFm.png)

hahaFck
    18

hahaFck   4 天前

用英文的操作系统?
panlatent
    19

panlatent   4 天前

之前用 Mac 会改系统配置让英文文件夹在 Finder 显示中文名, 然后用 Image2Icon 修改文件夹图标.

后来修改配置要关闭掉保护模式, 就懒得乱搞了.

zanyzephyr
    20

zanyzephyr   4 天前

@hahaFck 中文的应该可以吧
banjintaohua
    21

banjintaohua   4 天前 via iPhone

请问下楼主 侧边栏的?是怎么搞出来的
MOETAN0
    22

MOETAN0   4 天前

@hahaFck 在文件夹内 touch .localized 就行
MOETAN0
    23

MOETAN0   4 天前

@hahaFck 中文 OS 也 ok 只是刚发现即使在文件夹内建立了.localized,发现目录名还是 Developer 。。。。
tsanie
    24

tsanie   4 天前

@banjintaohua Developer 拖到侧边栏
zanyzephyr
    25

zanyzephyr   4 天前

@banjintaohua 貌似 Big Sur 下有
aerzha
    26

aerzha   4 天前

@MOETAN0 中文 OS 有办法像其他的那样显示中文名吗
ubuntuGary
    27

ubuntuGary   3 天前

@aerzha 刚刚试了一下 Sites 文件夹可以变中文,Developer 文件夹无效
使用 @MOETAN0 提供的方法
zhanggang807
    28

zhanggang807   3 天前

@lostberryzz 赞一个
zhanggang807
    29

zhanggang807   3 天前

@ynyounuo 这个 怎么解析,好像是个二进制文件
zanyzephyr
    30

zanyzephyr   3 天前

@ShuoHui https://cs193p.sites.stanford.edu
ShuoHui
    31

ShuoHui   3 天前 via iPhone

@zanyzephyr #30 谢谢?
fatelight
    32

fatelight   3 天前

@xaoflysho 谢谢
AbelChe
    33

AbelChe   3 天前

啊这。。。刚试了下新建了 Sites 文件夹,发现删不掉?
AbelChe
    34

AbelChe   3 天前

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