Quantcast
Channel: 看得透又看得远者prevail. ppt.cc/flUmLx ppt.cc/fqtgqx ppt.cc/fZsXUx ppt.cc/fhWnZx ppt.cc/fnrkVx ppt.cc/f2CBVx
Viewing all 20566 articles
Browse latest View live

mockmail

$
0
0
An email (SMTP) server that accepts all emails and shows them in a web interface.

Inspired by the now apparently defunct mockemail project. License: GPL3+

Installation

mockmail is written in Python 3. Legacy support for 2.6+ is maintained at the moment. mockmail requires no external dependencies.
To install mockmail on your system, run
sudo make install
By default, mockmail runs a the SMTP server on port 2525. The mails received on that port can be seen on http://127.0.0.1:2580/ , from the local machine only.
To change this configuration, edit /etc/mockmail.conf and restart mockmail with service restart mockmail. Common changes are:
  • Set smtpport to 25 to not require any configuration. Make sure you disable your old MTA (you can find it with $ netstat -ltpn | grep :25) before restarting.
  • Set httphost to "" to allow anyone to access the web interface. Alternatively, you can let your webserver proxy mockmail. Currently, mockmail cannot serve its content over IPv6 due to a limitation in the Python HTTP server.

Alternatively, you can run mockmail manually, like this:
./bin/mockmail.py
Use the -c option to provide a configuration file.

from https://github.com/phihag/mockmail

利用go_proxy2翻墙

$
0
0
登陆linux vps.
mkdir go_proxy2-exec
cd go_proxy2-exec
wget https://github.com/qq906907952/go_proxy2/releases/download/linux/linux_x86-64.tar
tar xvf linux_x86-64.tar
(会解压出来目录go_proxy2)
cd go_proxy2
rm -rf client.json
cd cert/serv
nano serv.cnf
(把IP.1的值改为你的vps的公网ip)
./create_serv_crt.sh
(会在当前目录下,生成root.crt,root.key,server.crt,server.key文件。稍后,要下载server.crt到本地机器
cd ../..
nano server.json
内容如下:
{

  "Servers": [
    {
      "Tls": {
        "On": true,
        "Tcp_encrypt":true,
        "Server_cert_path": "cert/serv/server.crt",
        "Server_private_key_path": "cert/serv/server.key",
        "Client_cert_paths": [
          "cert/client/client.crt"
        ]
      },
      "Listen_port": 1199,
      "Enc_method": "chacha20",
      "Password": "12345678901234567890123456789012"
    }
  ],

  "Ulimit": 1024000,
  "Udp_timeout": 30
}


看到上面的"cert/client/client.crt"了吗?稍后,我们需要上传客户机器上所生成的client.crt文件到cert/client/目录。

./go_proxy -c server.json --daemon
服务器端搭建完成。

在本地机器mac上。
mkdir go_proxy2-exec
cd go_proxy2-exec
wget https://github.com/qq906907952/go_proxy2/releases/download/osx/osx_x86-64.tar
tar xvf  osx_x86-64.tar
(会解压出来目录go_proxy2)
cd go_proxy2
rm -rf server.json
cd cert
cd serv
(把服务器上的server.crt下载到当前目录)
cd ..
cd client
./create_cli_crt.sh
(会在当前目录下,生成client.crt和client.key,把client.crt上传到服务器上的cert/client/目录。)
cd ../..
nano client.json
其内容如下:
{

  "Clients": [
    {
      "Mode": "http",
      "Ipv6": false,
      "Local_addr": "0.0.0.0:3939",
      "Server_addr": "vps-ip:1199",
      "Enc_method": "chacha20",
      "Password": "12345678901234567890123456789012",
      "Local_dns_addr": "114.114.114.114:53",
      "Remote_dns_addr": "8.8.4.4:53",
      "Connection_max_payload": 10,
      "Domain_cache_time": 3600,
      "Tls": {
        "On": true,
        "Server_name":"",
        "Tcp_encrypt": true,
        "Root_cert_path": "cert/serv/server.crt",
        "Client_cert": [
          {
            "Cert": "cert/client/client.crt",
            "Private_key": "cert/client/client.key"
          }

        ]
      }
    },
    {
      "Mode": "socks5",
      "Ipv6": false,
      "Local_addr": "0.0.0.0:4949",
      "Server_addr": "vps-ip:1199",
      "Enc_method": "chacha20",
      "Password": "12345678901234567890123456789012",
      "Local_dns_addr": "114.114.114.114:53",
      "Remote_dns_addr": "8.8.8.8:53",
      "Connection_max_payload": 10,
      "Domain_cache_time": 3600,
      "Udp_in_tcp": false,
      "Tls": {
        "On": true,
        "Server_name": "",
        "Tcp_encrypt": true,
        "Root_cert_path": "cert/serv/server.crt",
        "Client_cert": [
          {
            "Cert": "cert/client/client.crt",
            "Private_key": "cert/client/client.key"
          }
        ]
      }
    }

  ],

  "Ulimit": 1024000,
  "Udp_timeout": 30
}


然后,运行:
./go_proxy -c client.json -s start
不要关闭此terminal.

然后,设置本地机器的浏览器的http proxy为127.0.0.1,端口为3939或
设置本地机器的浏览器的socks5 proxy为127.0.0.1,端口为4949,浏览器即可翻墙。
建议使用浏览器chrome+switchyomega.
如果使用浏览器ff,则只能设置ff的socks5 proxy,才能翻墙。
若是设置ff的http proxy,翻墙会失败。

项目地址:
https://github.com/qq906907952/go_proxy2/
https://github.com/qq906907952/go_proxy2/releases

中国人的智商税是诺贝尔奖得主收到的另一份馈赠

$
0
0
2006年,时年46岁的梅洛,在美国麻省大学医学院担任教授。
当他惊闻自己因为发现RNA干扰现象,而获得了诺贝尔生理或医学奖的时候,绝对想不到,老天爷不仅在当年给予了他68.5万美元的奖金,更为他打开了财富之门。
这扇大门,面向遥远的东方,大洋彼岸的中国。
2018年11月14日,他应邀请,来到了中国天津市的武清开发区。在这里,天狮集团的董事长李金元、副总裁阎玉朋,已经等候他多时了。
按照双方早就签订好的合作协议,天狮集团给他颁发了顾问聘书,邀请他参观了天狮旗下的"天元大学",并让他为数百名学生,未来的保健品传销员们,上了一堂课。
他很开心地走完了每一个流程,甚至在天狮产品展览室里,对着各种不明来历的保健品,赞许式地点头。
他也许看不懂,也许早就一眼洞穿了这套"皇帝的新装",但是无论如何,他不介意继续演下去。
天狮的总部位于距天津市中心西北方50多公里的武清。那是中国传销行业的大本营,堪称行业里的"黄埔军校"。
从这里,走出了权健、无限极、完美、如新、天士力、尚赫、康婷等行业活跃公司的骨干分子们。他们口中谈到天狮,就如同高中生谈到清华大学一样。
李金元,就是这个保健品传销帝国的掌舵者。40岁之前曾经开办过食品厂、面粉厂、猪饲料厂,后来灵光乍现,将原来的厂子悉数关闭,原地变成了保健品厂。
他将无任何医药资质的保健品,卖到了非洲,声称"承袭中医5000年光辉灿烂的民族文化精华,既能治愈普通感冒和跌打损伤,也能专治非洲土地上艾滋病等疑难杂症"。
他为了将传销事业正名,组织6200余名来自中国的员工和直销伙伴们,身着统一的服装,喊着一致的口号,将法国尼斯的海滩塞满了。
为了将同时正在巴黎,由法国总统组织的二战胜利日阅兵气势给比下去,他乘坐经典的二战时期的军车,头顶滑翔而过的战斗机,向着传销弟子们挥手致意。
但是,这些都掩盖不了围绕在"天狮"身上的斑斑罪恶。
2009年以来,全国以"天津天狮"名义进行的传销活动引发各类刑事案件2781例,罪名除了有"组织、领导传销活动罪"还有:非法拘禁、故意伤害、抢劫、过失致人死亡、故意杀人等,共致155人死亡。
2018年,同城"天津权健"倒台后,听到风声的李金元迅速隐匿了起来,已经消失了1年有余,"天狮集团"也寿终正寝了。
诺贝尔奖得主梅洛的站台,将中国最大的保健品黑洞帝国,再次推到了前台,席卷了成千上万的年轻人,和数十万不明真相的老百姓。
这些淳朴的中国人,要么沦为了保健品传销帝国的蝼蚁,要么用真金白银的血汗钱,进贡了自己。
可是,对梅洛而言,他才不会去关心后事。因为,在过去的12年时间里,多次来华参与这样的场合,他早就轻车熟路了。在他获得诺奖之后的12年时间里,至少来华10次,每次都能刮起一阵旋风。
这次的出场费才200万元。和他以前收到的礼包相比,不值一提。2011年,他被邀请成为广东省第二批创新科研团队带头人之一,并且获得了达到8500万元的资助。
也许,他只会觉得遗憾,因为他太晚认识到,这里是一片热土,充满了机会。
在下面这位诺奖得主面前,他来华的频率,真是小巫见大巫了。
02
谢克曼,1948年生于美国明尼苏达州,直到2013年,已经65岁的高龄了,才获得当年的诺贝尔生理或医学奖。获奖理由是他发现了细胞囊泡运输与调节机制。
他比梅洛大12岁,却比他晚7年才获得诺奖。
但是,自从他找到了打开中国市场的钥匙后,大器晚成的他,在来华捞金的频率和力度上,却将晚辈甩得连影子都望尘莫及。
2018年3月26日,"合发全球"传销公司,和谢克曼,在北京雁栖湖会议中心,举行了所谓的"盗龄溯源干细胞产品发布会"。"合发全球"号称使用人工智能和区块链技术,研发了精华笔、眼唇膏、面霜等化妆品,获得诺奖获得者的认可和赞誉。
然而,时隔不到半年时间,"合发全球"就因为非法传销、集资诈骗,被上海市公安局浦东分局立案调查,负责人已经逃之夭夭。
2019年8月21日,谢克曼和"卡维达"集团签约仪式在浙江省杭州市举行,谢克曼成为这家著名微商的科学顾问。
丰胸、减脂、私处护理、护肤补水、纳米美颜仪、水光枪、减肥茶、冻龄胶原蛋白,女人想要的,"卡维达"都能生产。没有他们做不到,只有你想不到。
他们不仅生产,还与时俱进,将传统传销行业的多级加盟和代理制度,搬到了移动互联网上,进驻了你的微信朋友圈,生怕你不知道,诺奖得主都在为他们的产品站台。
2019年9月份,化妆品公司丸美,聘请谢克曼担任首席科学家,"将在人体皮肤研究,人体细胞蛋白运输研究等方面展开合作"。
这家公司的主打产品是眼霜、眼部护理、彩妆等女性化妆品,是一家地地道道的中国企业,却给自家产品命名为:"丸美日本花弹润娇嫩系列"、"丸美日本酒御龄冰肌露"、"丸美日本酒系列",Marubi Tokyo。
这家公司于2019年7月25日登陆股市上市,明哥查阅了下财务报表,2018年广告费用是3.9亿元,研发费用却不足3400万元,不足广告费的十分之一。
2019年3月12日,广药集团举办集团及旗下研究总院首席科学家聘任仪式,聘请谢克曼担任首席科学家,将在抗肿瘤药物研发等方面展开合作。
广药集团的产品之一,就是:王老吉。
王老吉,能够让人记住的,不仅仅是"怕上火,喝王老吉"的广告语,和"加多宝"旷日持久的官司,也包括董事长李楚源在2017年底的一番话:国家863计划研究结果表明,喝王老吉可延长寿命大约10%。
原来,2013年,广药集团就开了一次发布会,宣布"王老吉"具有延长动物寿命的功能,证据在于,课题组以576只老鼠为样本,进行为期2年的安全实验,发现王老吉凉茶实验组的大鼠存活率优于对照组,因此得出结论:王老吉可以延长动物寿命。
不知道董事长,有没有当面向诺贝尔奖得主求证,这种断言,是否科学?
谢克曼,频繁走穴的对象,仅仅是传销产品、国产化妆品、中医保健品、饮料等商业企业吗?
如果你这么想,就太小瞧了我大中国对科学技术进步翘首以盼的高校、医院,和急需政绩的地方要员了。
—— 2017年10月31日,"台州恩泽-谢克曼诺贝尔奖获得者工作站"挂牌成立仪式在浙江省台州医院举行。作为浙江省首家"诺奖获得者工作站","它的成立将为造福台州百姓的健康做出新的贡献"。
——2018年3月29日,山东省济南市主要官员出席,和谢克曼共同为"诺奖工作站"揭牌。
—— 2018年7月31日,"谢克曼国际联合医学实验室"签约与揭牌仪式,在深圳市宝安区南方医科大学隆重举行。团队依托该校医院和深圳市宝安中医院(集团),联合共建以生物医学研究,产业转化为一体的诺奖级实验室,"相当于在宝安区播下了现代生物医学研究的希望种子"。
—— 2018年8月1日下午,"辽宁中添诺贝尔奖得主谢克曼工作站"启动仪式在辽宁省沈阳市同方广场举行,这标志着东北地区首家诺贝尔奖获得者工作站正式落户沈阳。沈阳市相关部门、中国医科大学、医大一院等医疗机构负责人以及部分医疗机构代表等五十余人参加了本次活动。
—— 2019年8月21日,山东省青岛市的相关要员,会见了谢克曼教授一行,共同签署了国际再生医学(青岛)研究中心合作协议,并为研究中心揭牌。
看着这一长串的日程安排,明哥的好奇心大增,梳理了一下谢克曼2019年来华的有据可查的详细日程,每次时间大约在1周,但是都要赶场跑3-4个城市,出席2-8个签约仪式,马不停蹄,连喝口水、睡个好觉的时间,都挤不出来了。
03
我们疑惑的是,来华的诺奖得主们,像梅洛、谢克曼这样频繁走穴亮相的人,是少数个例,还是普遍现象呢?
明哥不把答案亮出来,需要读者们自己去找。
曾分别于2006和2010年获得诺贝尔经济学奖的埃德蒙·费尔普斯、克里斯托弗·皮萨里德斯,2015年9月12日来到广州颐和大院,与开发商、购房潜在业主、300多位企业家们,围绕"创新的榜样"主题,展开对话。会后,3000多万元一套的别墅,被豪客们一举拿下。
2018年10月29日,上海滴水湖论坛,"邀请来了包括26位诺贝尔奖得主和8位沃尔夫奖、拉斯克奖、图灵奖、麦克阿瑟天才奖等世界著名学术奖项得主在内的37位世界顶尖科学家,和17位中国两院院士、18位中外杰出青年科学家一起,共赴一场全球顶尖的原创科学思想和科研成果的智慧盛宴。
声势颇为壮大,只是不知道,这些专家们的发言,对我们的基础科学研究、科研体制的梳理,真的能起到作用吗?能召唤出第二个屠呦呦、袁隆平吗?
这些诺贝尔奖的获得者,牺牲休假时间,行程塞得满满当当,目不暇接地转场,说着言不由衷的话,究竟是为了什么呢?
我们从2011年诺贝尔经济学奖得主:萨金特,在2012年来中国广州的招商方案中,可以管中窥豹。
他的此次来华,日程安排,全部交由第三方商业经纪机构进行安排,并且负责招商。
是的,你没看错,他的每一次演讲、互动对话、参访企业、共餐会话,都是商业行为,都需要"招商"。
他做1次公众演讲会,经纪机构为市场开出的门票数量和价格分别是:特惠票180张,980元/张;普通票400张,1680元/张;嘉宾票30张,4980元/张;贵宾票5张,9980元/张;还有面向富豪阶层的特等票1张,限量版,5万元/张。你只要会小学数学,就能简单计算出来,时长不超过1个小时的演讲,进账可达110万元。
他公开露面的任何场合,背景板都成为了广告位。这些广告位上可以放置不同级别赞助商的广告牌或广告语。
只要商业经纪机构熟悉中国市场,将这些招商方案落地实施,那么他此行的赞助费用,可以入账665万元。
不管是保健品公司、微商公司,还是医院、地方政府设立的工作站,只要需要诺奖得主签字、拍照、配合宣传的流程,起步价是100万元。经济学奖、生理或医学奖得主们,话题正好和当前的市场需求结合起来,价格达到了200万元一场。
所以,只要来一趟中国,招商方案做得天衣无缝的话,就可以将千万元人民币收入囊中,比诺贝尔委员会颁发的奖金,不知道高到哪里去了。
人家能不爱来这片热土吗?
04
只要稍微具备大学本科在理工科、生物、医学、经济专业的知识常识的人,一定知道,现在科学的进展,已经到了非常细分的程度了。
近几十年来,获得诺贝尔奖的科学家,更多是因为在细分领域上的工作而得到认可,并不是在学科基础理论,或者学科大厦的基石上做出了奠基性的工作。
所以,获奖者在自己擅长的细分学科上,可能是世界前沿的,但是一旦切换到其他学科领域,他们并不一定比普通科研人员,更有话语权。
更关键的是,几乎所有的获奖者,在成名之前,都是甘坐冷板凳,默默无闻的年轻科学家。
正是因为这种甘坐冷板凳、为了追求真相而永不放弃、勇于走入科研无人区,数十年如一日的坚持精神,才有可能帮助他们摘得科学的真知桂冠,为人类带来进步。
但是,我们的社会风气,却恰恰相反。
我们宁愿追捧那些已经成名的大科学家,给予他们无数的镁光灯、物质回报,把他们从实验室里拽出来,来为自己贴金。
是因为我们中国人的学历普遍较低,因而对学术巨擘,产生了谜之一样的崇拜之情吗?部分原因,是的。
中国自恢复高考以来的41年时间,总共有1.15亿人考上大学。剔除其中一半以上的专科生,本科学历人口不超5700万,占总人口比例的4.1%。
然而,在狂热追捧外国诺奖得主的国人之中,恰恰是那些企业家、部分地方的公务要员、大学和医院的负责人们,最为热衷,也只有他们,才能给诺奖得主们最丰厚的待遇。
而在另一边,我们国家的各大高校、科研院所的博士、青年教师、资历较浅的科研人员,待遇却很低,连在一二线城市买房安家的能力都没有,怎么可能安心科研呢?
当我们为那些已经垂垂老矣的外国诺贝尔奖得主们,双手奉上成百上千万元的智商税时,我们的年轻人才们,正在为一座安家的房子,一次学术交流的差旅费,而苦恼不已。
只有当我们社会,将目光和资源,投入到现在埋头苦干、甘坐冷板凳的年轻人才身上,我们才可能收获未来的诺贝尔奖得主。

一段基于Python的socks5服务器脚本

$
0
0
把下面的内容保存为socks-by-xiaoxia.py

import socket, sys, select, SocketServer, struct, time

class ThreadingTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer): pass
class Socks5Server(SocketServer.StreamRequestHandler):
    def handle_tcp(self, sock, remote):
        fdset = [sock, remote]
        while True:
            r, w, e = select.select(fdset, [], [])
            if sock in r:
                if remote.send(sock.recv(4096)) <= 0: break
            if remote in r:
                if sock.send(remote.recv(4096)) <= 0: break
    def handle(self):
        try:
            print 'socks connection from ', self.client_address
            sock = self.connection
            # 1. Version
            sock.recv(262)
            sock.send(b"\x05\x00");
            # 2. Request
            data = self.rfile.read(4)
            mode = ord(data[1])
            addrtype = ord(data[3])
            if addrtype == 1:       # IPv4
                addr = socket.inet_ntoa(self.rfile.read(4))
            elif addrtype == 3:     # Domain name
                addr = self.rfile.read(ord(sock.recv(1)[0]))
            port = struct.unpack('>H', self.rfile.read(2))
            reply = b"\x05\x00\x00\x01"
            try:
                if mode == 1:  # 1. Tcp connect
                    remote = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                    remote.connect((addr, port[0]))
                    print 'Tcp connect to', addr, port[0]
                else:
                    reply = b"\x05\x07\x00\x01" # Command not supported
                local = remote.getsockname()
                reply += socket.inet_aton(local[0]) + struct.pack(">H", local[1])
            except socket.error:
                # Connection refused
                reply = '\x05\x05\x00\x01\x00\x00\x00\x00\x00\x00'
            sock.send(reply)
            # 3. Transfering
            if reply[1] == '\x00':  # Success
                if mode == 1:    # 1. Tcp connect
                    self.handle_tcp(sock, remote)
        except socket.error:
            print 'socket error'
def main():
    server = ThreadingTCPServer(('', 6080), Socks5Server)
    server.serve_forever()
if __name__ == '__main__':
    main()


然后在linux vps上运行:
python socks-by-xiaoxia.py &

这样,在服务器的6080端口就建立了一个socks5 proxy.
代码来自这里:http://xiaoxia.org/2011/03/29/written-by-python-socks5-server/

功績比霍去病更牛的虎將- 班超,只帶36人滅了50國,沒有他,中國的領土将少1/3

苗族人的祖先是蚩尤

夢想街之全能事務所 四中全會接班人胎死腹中!權鬥落幕?習近平保位密計!

全面挑战西方制度 习近平下决心一条道走到黑?

$
0
0
同前任不同,习近平的要害在于,他真的相信存在着一个抛弃普世价值的中国方案,把他上任七年来在唯唯诺诺的官员面前发表的所有讲话,报告叠加组合,形成一个所谓的中国治理体系,并随即被官媒誉之为“中国之治”,“第五个现代化”,“中国方案”。他的中国方案实质上是回归毛时代,党领导一切,自己独裁一切。习在掌权后,通过反腐清理了党内的对手或者潜在的反对派,大权在握,2018年更通过修宪取消国家主席任期制,为终身制铺平道路,使其本人有机会把这套制度向世界推广,这一举措给他随后而来的一系列挫败埋下了重大的伏笔
习的野心唤醒了美国,美国本期望一个'越来越开放的中国'的大梦终于被惊醒,这从彭斯去年的对华政策演说,他在10月23日的对华演说,以及美国国务卿蓬佩奥30日的对华演说中表述得再清楚不过。近两年来,美国对中国采取的一系列的贸易反击,本质上仍然是一场捍卫自由与维护专制之战美国明确表明,绝不放任一个专制的,违背商业规则的中国继续做大,甚至主宰世界。美国领导人亦向西方盟邦呼吁,是认清中共的本质和野心的时候了。美国两党,美国人民这一点上已获得了共识,这不能不说是习近平偏执的野心遭遇的最重大挫败。
自由不是西方制度的专利,民主运作是人类斗争的成果,习近平的中共在互联网空前发达的今天,要把一个非人道的,反自由的制度永远地施加于人民?这个中国方案越是具有“现代化”的能力,人民受到的恐惧就越大。北京对香港的方式就是最好的一例。这种方案一旦走向世界会造成什么样的后果?
有些分析人士质疑,习近平为什么不断地讲自信,讲两个维护?这不正是自信缺失/疑神疑鬼的表现吗?还有,被专制的中国人民能够永远接受这种限制他们最起码的言论自由的制度吗?蓬佩奥在演说中明确表示,中国人民与中共是有区别的,大约美国对中国人民的觉醒仍然抱有某种希望。中国人民到底会在某日觉醒,谁都无从知道,这或许只是中国人民自己的事,如中共一句全世界熟悉的官话:“这是我们的内政”,但是习近平要把管制中国人民的方案在一个获得终身制保险的强人指挥下推向世界,是一件匪夷所思的事情。(套用共匪的话语,这其实也是“痴心妄想”)

学历是块敲门砖

$
0
0
前阵子弟弟考上了研究生,家里照惯例请亲戚朋友一起吃饭庆祝,大家都夸弟弟,说他给家里人长了脸。
但是表叔却说:‌‌“研究生毕业了能怎么样还不好说呢,现在大学生我看也都那样吧,最后出来还不是给人打工。你看小东,高中没毕业,不也照样自己开厂子做老板吗。‌‌”
现在关于‌‌“学历不值钱,上学没用‌‌”的言论甚嚣尘上,但事实上,在现代社会中学历仍然是影响一个人人生方向的重要因素。
我上大学的时候一直认为读研会耽误我进入职场的时间,所以本科一毕业就进了一家公司的基层行政部,每天干劲十足,对升职加薪充满了期待。
工作了半年左右,公司来了一个实习生,虽然没有什么工作经验,但因为他有重点大学的研究生学历,所以直接空降进入了总裁办公室,那是我们公司最有前途的部门,是大家工作好几年,也未必能进去的部门,薪资和福利都比我高一大截。
我有点心理不平衡,闷闷不乐地去问人力,为什么会选一个还没毕业的学生进总裁办公室实习?人力大姐笑着说了一句:‌‌“人家可是985知名高校的研究生。‌‌”
我当时是不服气的。直到后来,经历了辞职、再就业、考公务员,并且因为学历不够出色,连续碰了几次壁之后,我才想通,学历不行就意味着升职会被卡,考证会被卡,换工作会被卡,甚至谈恋爱的时候学历都会变成一个筹码。
那些说着‌‌“我们更看重能力‌‌”的公司,在筛选简历的时候,最低的标准都是211、985高校,出众的学历代表着在概率学上你比其他人优秀的可能性更大,也代表着你被用人单位选中的概率更大。
在我求职的岁月里,简历不知道多少次在第一轮就进了垃圾桶。
这些失败的经验告诉我,学历就是一块敲门砖,是我们进入社会的名片,没有学历,你连敲门的资格都没有,更别说展示能力了。对于大多数出身普通的人来说,考一个响当当的大学才是改变自己命运最直接有效的方式。
但学历并不是成功的代名词,学历只是决定着进入社会后你的起点在哪里,而能力则决定着你能在那条路上走多远。
大学老师说过这么一段话:在毕业的五年内,你或许可以依靠学校的光环找工作,但五年后,你能否取得更进一步的发展,更取决于你的能力。
我现在的公司去年特招了一个国内顶尖学校的毕业生,名校光环加持着,大家总会不自然地觉得这个人一定有什么过人之处,公司领导还特地抽调他和财务部其他几个资深的老员工一起负责新项目。
但因为他是文科生,所以对数字方面的东西很不敏感,做的报告也有些浮于表面,过于形式化。
其实他的学习能力挺好的,理论都能听得懂,但是一到财务实操就不行。他在调了两次岗后被公司劝退,顶替他的是一个普通学校毕业,但因为能力突出所以特地从分公司破例调上来的人。
我们要明白的是,职业发展是一场长跑,不是短期冲刺,这个过程需要不断思考、不断总结经验教训,不断跟上社会脚步来锻炼自己,以满足社会的需求
领导都喜欢能力强的下属,他们要的是你能逢山开路,遇水架桥,实在过不去,绕个弯也会前进,你能力越强,上限也就越高。
如果你能力不足,又不懂得修炼精进,不断提高自己,那么就算学历给你镀上了一层金,早晚有一天也会褪色。
我们都说当下的社会是个浮躁的社会,优秀的人不一定发光,平凡的人也不一定就一直落寞。但社会生存的基本法则始终没变,那就是适者生存,优胜劣汰。
如果你还在读书或者还有读书的机会,那么就不要听那些读书无用的闲言碎语,尽可能去提高自己的学历,因为这是社会评价一个人永远不会改变的第一标准。
如果你已经进入了职场,也不必因为自己的学历低而妄自菲薄,你只需要以谦虚好学的态度去学习,快速地总结经验然后成长,那么总有一天,你也能在人生的道路上拥有无限的可能性。

后端架构师技术图谱

$
0
0
(Toc generated by simple-php-github-toc )

数据结构

队列

集合

链表、数组

字典、关联数组

二叉树

每个节点最多有两个叶子节点。

完全二叉树

  • 《完全二叉树》
    • 叶节点只能出现在最下层和次下层,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树。

平衡二叉树

左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

二叉查找树(BST)

二叉查找树(Binary Search Tree),也称有序二叉树(ordered binary tree),排序二叉树(sorted binary tree)。

红黑树

B,B+,B*树

MySQL是基于B+树聚集索引组织表

LSM 树

LSM(Log-Structured Merge-Trees)和 B+ 树相比,是牺牲了部分读的性能来换取写的性能(通过批量写入),实现读写之间的平衡。 Hbase、LevelDB、Tair(Long DB)、nessDB 采用 LSM 树的结构。LSM可以快速建立索引。
    • B+ 树读性能好,但由于需要有序结构,当key比较分散时,磁盘寻道频繁,造成写性能较差。
    • LSM 是将一个大树拆分成N棵小树,先写到内存(无寻道问题,性能高),在内存中构建一颗有序小树(有序树),随着小树越来越大,内存的小树会flush到磁盘上。当读时,由于不知道数据在哪棵小树上,因此必须遍历(二分查找)所有的小树,但在每颗小树内部数据是有序的。
    • 极端的说,基于LSM树实现的HBase的写性能比MySQL高了一个数量级,读性能低了一个数量级。
    • 优化方式:Bloom filter 替代二分查找;compact 小数位大树,提高查询性能。
    • Hbase 中,内存中达到一定阈值后,整体flush到磁盘上、形成一个文件(B+数),HDFS不支持update操作,所以Hbase做整体flush而不是merge update。flush到磁盘上的小树,定期会合并成一个大树。

BitSet

经常用于大规模数据的排重检查。

常用算法

排序、查找算法

选择排序

冒泡排序

插入排序

快速排序

归并排序

希尔排序

TODO

堆排序

计数排序

桶排序

基数排序

按照个位、十位、百位、...依次来排。

二分查找

Java 中的排序工具

布隆过滤器

常用于大数据的排重,比如email,url 等。 核心原理:将每条数据通过计算产生一个指纹(一个字节或多个字节,但一定比原始数据要少很多),其中每一位都是通过随机计算获得,在将指纹映射到一个大的按位存储的空间中。注意:会有一定的错误率。 优点:空间和时间效率都很高。 缺点:随着存入的元素数量增加,误算率随之增加。

字符串比较

KMP 算法

KMP:Knuth-Morris-Pratt算法(简称KMP) 核心原理是利用一个“部分匹配表”,跳过已经匹配过的元素。

深度优先、广度优先

贪心算法

回溯算法

剪枝算法

动态规划

朴素贝叶斯

推荐算法

最小生成树算法

最短路径算法

并发

Java 并发

多线程

线程安全

一致性、事务

事务 ACID 特性

事务的隔离级别

  • 未提交读:一个事务可以读取另一个未提交的数据,容易出现脏读的情况。
  • 读提交:一个事务等另外一个事务提交之后才可以读取数据,但会出现不可重复读的情况(多次读取的数据不一致),读取过程中出现UPDATE操作,会多。(大多数数据库默认级别是RC,比如SQL Server,Oracle),读取的时候不可以修改。
  • 可重复读: 同一个事务里确保每次读取的时候,获得的是同样的数据,但不保障原始数据被其他事务更新(幻读),Mysql InnoDB 就是这个级别。
  • 序列化:所有事物串行处理(牺牲了效率)
    • 幻读的例子非常清楚。
    • 通过 SELECT ... FOR UPDATE 解决。
    • 图解脏读、不可重复读、幻读问题。

MVCC

Java中的锁和同步类

公平锁 & 非公平锁

公平锁的作用就是严格按照线程启动的顺序来执行的,不允许其他线程插队执行的;而非公平锁是允许插队的。

悲观锁

悲观锁如果使用不当(锁的条数过多),会引起服务大面积等待。推荐优先使用乐观锁+重试。

乐观锁 & CAS

ABA 问题

由于高并发,在CAS下,更新后可能此A非彼A。通过版本号可以解决,类似于上文Mysql 中提到的的乐观锁。

CopyOnWrite容器

可以对CopyOnWrite容器进行并发的读,而不需要加锁。CopyOnWrite并发容器用于读多写少的并发场景。比如白名单,黑名单,商品类目的访问和更新场景,不适合需要数据强一致性的场景。

RingBuffer

可重入锁 & 不可重入锁

    • 通过简单代码举例说明可重入锁和不可重入锁。
    • 可重入锁指同一个线程可以再次获得之前已经获得的锁。
    • 可重入锁可以用户避免死锁。
    • Java中的可重入锁:synchronized 和 java.util.concurrent.locks.ReentrantLock
    • synchronized 使用方便,编译器来加锁,是非公平锁。
    • ReenTrantLock 使用灵活,锁的公平性可以定制。
    • 相同加锁场景下,推荐使用 synchronized。

互斥锁 & 共享锁

互斥锁:同时只能有一个线程获得锁。比如,ReentrantLock 是互斥锁,ReadWriteLock 中的写锁是互斥锁。 共享锁:可以有多个线程同时或的锁。比如,Semaphore、CountDownLatch 是共享锁,ReadWriteLock 中的读锁是共享锁。

死锁

操作系统

计算机原理

CPU

多级缓存

典型的 CPU 有三级缓存,距离核心越近,速度越快,空间越小。L1 一般 32k,L2 一般 256k,L3 一般12M。内存速度需要200个 CPU 周期,CPU 缓存需要1个CPU周期。

进程

TODO

线程

协程

  • 《终结python协程----从yield到actor模型的实现》
    • 线程的调度是由操作系统负责,协程调度是程序自行负责
    • 与线程相比,协程减少了无谓的操作系统切换.
    • 实际上当遇到IO操作时做切换才更有意义,(因为IO操作不用占用CPU),如果没遇到IO操作,按照时间片切换.

Linux

设计模式

设计模式的六大原则

  • 《设计模式的六大原则》
    • 开闭原则:对扩展开放,对修改关闭,多使用抽象类和接口。
    • 里氏替换原则:基类可以被子类替换,使用抽象类继承,不使用具体类继承。
    • 依赖倒转原则:要依赖于抽象,不要依赖于具体,针对接口编程,不针对实现编程。
    • 接口隔离原则:使用多个隔离的接口,比使用单个接口好,建立最小的接口。
    • 迪米特法则:一个软件实体应当尽可能少地与其他实体发生相互作用,通过中间类建立联系。
    • 合成复用原则:尽量使用合成/聚合,而不是使用继承。

23种常见设计模式

应用场景

    • 结构型模式:
      • 适配器:用来把一个接口转化成另一个接口,如 java.util.Arrays#asList()。
      • 桥接模式:这个模式将抽象和抽象操作的实现进行了解耦,这样使得抽象和实现可以独立地变化,如JDBC;
      • 组合模式:使得客户端看来单个对象和对象的组合是同等的。换句话说,某个类型的方法同时也接受自身类型作为参数,如 Map.putAll,List.addAll、Set.addAll。
      • 装饰者模式:动态的给一个对象附加额外的功能,这也是子类的一种替代方式,如 java.util.Collections#checkedList|Map|Set|SortedSet|SortedMap。
      • 享元模式:使用缓存来加速大量小对象的访问时间,如 valueOf(int)。
      • 代理模式:代理模式是用一个简单的对象来代替一个复杂的或者创建耗时的对象,如 java.lang.reflect.Proxy
    • 创建模式:
      • 抽象工厂模式:抽象工厂模式提供了一个协议来生成一系列的相关或者独立的对象,而不用指定具体对象的类型,如 java.util.Calendar#getInstance()。
      • 建造模式(Builder):定义了一个新的类来构建另一个类的实例,以简化复杂对象的创建,如:java.lang.StringBuilder#append()。
      • 工厂方法:就是 一个返* 回具体对象的方法,而不是多个,如 java.lang.Object#toString()、java.lang.Class#newInstance()。
      • 原型模式:使得类的实例能够生成自身的拷贝、如:java.lang.Object#clone()。
      • 单例模式:全局只有一个实例,如 java.lang.Runtime#getRuntime()。
    • 行为模式:
      • 责任链模式:通过把请求从一个对象传递到链条中下一个对象的方式,直到请求被处理完毕,以实现对象间的解耦。如 javax.servlet.Filter#doFilter()。
      • 命令模式:将操作封装到对象内,以便存储,传递和返回,如:java.lang.Runnable。
      • 解释器模式:定义了一个语言的语法,然后解析相应语法的语句,如,java.text.Format,java.text.Normalizer。
      • 迭代器模式:提供一个一致的方法来顺序访问集合中的对象,如 java.util.Iterator。
      • 中介者模式:通过使用一个中间对象来进行消息分发以及减少类之间的直接依赖,java.lang.reflect.Method#invoke()。
      • 空对象模式:如 java.util.Collections#emptyList()。
      • 观察者模式:它使得一个对象可以灵活的将消息发送给感兴趣的对象,如 java.util.EventListener。
      • 模板方法模式:让子类可以重写方法的一部分,而不是整个重写,如 java.util.Collections#sort()。

单例模式

责任链模式

TODO

MVC

IOC

  • 《理解 IOC》
  • 《IOC 的理解与解释》
    • 正向控制:传统通过new的方式。反向控制,通过容器注入对象。
    • 作用:用于模块解耦。
    • DI:Dependency Injection,即依赖注入,只关心资源使用,不关心资源来源。

AOP

UML

微服务思想

康威定律

    • 定律一:组织沟通方式会通过系统设计表达出来,就是说架构的布局和组织结构会有相似。
    • 定律二:时间再多一件事情也不可能做的完美,但总有时间做完一件事情。一口气吃不成胖子,先搞定能搞定的。
    • 定律三:线型系统和线型组织架构间有潜在的异质同态特性。种瓜得瓜,做独立自治的子系统减少沟通成本。
    • 定律四:大的系统组织总是比小系统更倾向于分解。合久必分,分而治之。

运维 & 统计 & 技术支持

常规监控

命令行监控工具

APM

APM — Application Performance Management

统计分析

持续集成(CI/CD)

Jenkins

环境分离

开发、测试、生成环境分离。

自动化运维

Ansible

puppet

chef

测试

TDD 理论

  • 《深度解读 - TDD(测试驱动开发)》
    • 基于测试用例编码功能代码,XP(Extreme Programming)的核心实践.
    • 好处:一次关注一个点,降低思维负担;迎接需求变化或改善代码的设计;提前澄清需求;快速反馈;

单元测试

压力测试

全链路压测

A/B 、灰度、蓝绿测试

虚拟化

KVM

Xen

OpenVZ

容器技术

Docker

云技术

OpenStack

DevOps

文档管理

中间件

Web Server

Nginx

OpenResty

Tengine

Apache Httpd

Tomcat

架构原理

调优方案

Jetty

  • 《Jetty 的工作原理以及与 Tomcat 的比较》
  • 《jetty和tomcat优势比较》
    • 架构比较:Jetty的架构比Tomcat的更为简单。
    • 性能比较:Jetty和Tomcat性能方面差异不大,Jetty默认采用NIO结束在处理I/O请求上更占优势,Tomcat默认采用BIO处理I/O请求,Tomcat适合处理少数非常繁忙的链接,处理静态资源时性能较差。
    • 其他方面:Jetty的应用更加快速,修改简单,对新的Servlet规范的支持较好;Tomcat 对JEE和Servlet 支持更加全面。

缓存

本地缓存

客户端缓存

服务端缓存

Web缓存

Memcached

Redis

    • 使用 ziplist 存储链表,ziplist是一种压缩链表,它的好处是更能节省内存空间,因为它所存储的内容都是在连续的内存区域当中的。
    • 使用 skiplist(跳跃表)来存储有序集合对象、查找上先从高Level查起、时间复杂度和红黑树相当,实现容易,无锁、并发性好。
    • RDB方式:定期备份快照,常用于灾难恢复。优点:通过fork出的进程进行备份,不影响主进程、RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。缺点:会丢数据。
    • AOF方式:保存操作日志方式。优点:恢复时数据丢失少,缺点:文件大,回复慢。
    • 也可以两者结合使用。

架构

回收策略

Tair

  • 官方网站
  • 《Tair和Redis的对比》
  • 特点:可以配置备份节点数目,通过异步同步到备份节点
  • 一致性Hash算法。
  • 架构:和Hadoop 的设计思想类似,有Configserver,DataServer,Configserver 通过心跳来检测,Configserver也有主备关系。
几种存储引擎:
  • MDB,完全内存性,可以用来存储Session等数据。
  • Rdb(类似于Redis),轻量化,去除了aof之类的操作,支持Restfull操作
  • LDB(LevelDB存储引擎),持久化存储,LDB 作为rdb的持久化,google实现,比较高效,理论基础是LSM(Log-Structured-Merge Tree)算法,现在内存中修改数据,达到一定量时(和内存汇总的旧数据一同写入磁盘)再写入磁盘,存储更加高效,县比喻Hash算法。
  • Tair采用共享内存来存储数据,如果服务挂掉(非服务器),重启服务之后,数据亦然还在。

消息队列

消息总线

消息总线相当于在消息队列之上做了一层封装,统一入口,统一管控、简化接入成本。

消息的顺序

RabbitMQ

支持事务,推拉模式都是支持、适合需要可靠性消息传输的场景。

RocketMQ

Java实现,推拉模式都是支持,吞吐量逊于Kafka。可以保证消息顺序。

ActiveMQ

纯Java实现,兼容JMS,可以内嵌于Java应用中。

Kafka

高吞吐量、采用拉模式。适合高IO场景,比如日志同步。

Redis 消息推送

生产者、消费者模式完全是客户端行为,list 和 拉模式实现,阻塞等待采用 blpop 指令。

ZeroMQ

TODO

定时调度

单机定时调度

分布式定时调度

RPC

Dubbo

** SPI ** TODO

Thrift

gRPC

服务端可以认证加密,在外网环境下,可以保证数据安全。

数据库中间件

Sharding Jdbc

日志系统

日志搜集

配置中心

servlet 3.0 异步特性可用于配置中心的客户端

API 网关

主要职责:请求转发、安全认证、协议转换、容灾。

网络

协议

OSI 七层协议

TCP/IP

HTTP

HTTP2.0

HTTPS

网络模型

    • 五种I/O模型:阻塞I/O,非阻塞I/O,I/O复用、事件(信号)驱动I/O、异步I/O,前四种I/O属于同步操作,I/O的第一阶段不同、第二阶段相同,最后的一种则属于异步操作。
    • 三种 Web Server 工作方式:Prefork(多进程)、Worker方式(线程方式)、Event方式。
    • select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的。
    • select 有打开文件描述符数量限制,默认1024(2048 for x64),100万并发,就要用1000个进程、切换开销大;poll采用链表结构,没有数量限制。
    • select,poll “醒着”的时候要遍历整个fd集合,而epoll在“醒着”的时候只要判断一下就绪链表是否为空就行了,通过回调机制节省大量CPU时间;select,poll每次调用都要把fd集合从用户态往内核态拷贝一次,而epoll只要一次拷贝。
    • poll会随着并发增加,性能逐渐下降,epoll采用红黑树结构,性能稳定,不会随着连接数增加而降低。
    • 在连接数少并且连接都十分活跃的情况下,select和poll的性能可能比epoll好,毕竟epoll的通知机制需要很多函数回调。
    • NIO 是一种同步非阻塞的 IO 模型。同步是指线程不断轮询 IO 事件是否就绪,非阻塞是指线程在等待 IO 的时候,可以同时做其他任务

Epoll

Java NIO

kqueue

连接和短连接

框架

零拷贝(Zero-copy)

序列化(二进制协议)

Hessian

Protobuf

数据库

基础理论

关系数据库设计的三大范式

  • 《数据库的三大范式以及五大约束》
    • 第一范式:数据表中的每一列(每个字段)必须是不可拆分的最小单元,也就是确保每一列的原子性;
    • 第二范式(2NF):满足1NF后,要求表中的所有列,都必须依赖于主键,而不能有任何一列与主键没有关系,也就是说一个表只描述一件事情;
    • 第三范式:必须先满足第二范式(2NF),要求:表中的每一列只与主键直接相关而不是间接相关,(表中的每一列只能依赖于主键);

MySQL

原理

InnoDB

优化

索引

聚集索引, 非聚集索引

MyISAM 是非聚集,InnoDB 是聚集

复合索引

    • 文中有一处错误:
    对于复合索引,在查询使用时,最好将条件顺序按找索引的顺序,这样效率最高; select * from table1 where col1=A AND col2=B AND col3=D 如果使用 where col2=B AND col1=A 或者 where col2=B 将不会使用索引
    • 原文中提到索引是按照“col1,col2,col3”的顺序创建的,而mysql在按照最左前缀的索引匹配原则,且会自动优化 where 条件的顺序,当条件中只有 col2=B AND col1=A 时,会自动转化为 col1=A AND col2=B,所以依然会使用索引。

自适应哈希索引(AHI)

explain

NoSQL

MongoDB

  • MongoDB 教程
  • 《Mongodb相对于关系型数据库的优缺点》
    • 优点:弱一致性(最终一致),更能保证用户的访问速度;内置GridFS,支持大容量的存储;Schema-less 数据库,不用预先定义结构;内置Sharding;相比于其他NoSQL,第三方支持丰富;性能优越;
    • 缺点:mongodb不支持事务操作;mongodb占用空间过大;MongoDB没有如MySQL那样成熟的维护工具,这对于开发和IT运营都是个值得注意的地方;

Hbase

搜索引擎

搜索引擎原理

Lucene

Elasticsearch

Solr

sphinx

性能

性能优化方法论

容量评估

CDN 网络

连接池

性能调优

大数据

流式计算

Storm

Flink

Kafka Stream

应用场景

例如:
  • 广告相关实时统计;
  • 推荐系统用户画像标签实时更新;
  • 线上服务健康状况实时监测;
  • 实时榜单;
  • 实时数据统计。

Hadoop

HDFS

MapReduce

Yarn

Spark

安全

web 安全

XSS

CSRF

SQL 注入

Hash Dos

脚本注入

漏洞扫描工具

验证码

DDoS 防范

用户隐私信息保护

  1. 用户密码非明文保存,加动态salt。
  2. 身份证号,手机号如果要显示,用 “*” 替代部分字符。
  3. 联系方式在的显示与否由用户自己控制。
  4. TODO

序列化漏洞

加密解密

对称加密

  • 《常见对称加密算法》
    • DES、3DES、Blowfish、AES
    • DES 采用 56位秘钥,Blowfish 采用1到448位变长秘钥,AES 128,192和256位长度的秘钥。
    • DES 秘钥太短(只有56位)算法目前已经被 AES 取代,并且 AES 有硬件加速,性能很好。

哈希算法

非对称加密

服务器安全

数据安全

数据备份

TODO

网络隔离

内外网分离

TODO

登录跳板机

在内外环境中通过跳板机登录到线上主机。

授权、认证

RBAC

OAuth2.0

双因素认证(2FA)

2FA - Two-factor authentication,用于加强登录验证
常用做法是 登录密码 + 手机验证码(或者令牌Key,类似于与网银的 USB key)

单点登录(SSO)

常用开源框架

开源协议

日志框架

Log4j、Log4j2

Logback

ORM

MyBatis:

网络框架

TODO

Web 框架

Spring 家族

Spring
Spring Boot
Spring Cloud

工具框架

分布式设计

扩展性设计

稳定性 & 高可用

    • 可扩展:水平扩展、垂直扩展。 通过冗余部署,避免单点故障。
    • 隔离:避免单一业务占用全部资源。避免业务之间的相互影响 2. 机房隔离避免单点故障。
    • 解耦:降低维护成本,降低耦合风险。减少依赖,减少相互间的影响。
    • 限流:滑动窗口计数法、漏桶算法、令牌桶算法等算法。遇到突发流量时,保证系统稳定。
    • 降级:紧急情况下释放非核心功能的资源。牺牲非核心业务,保证核心业务的高可用。
    • 熔断:异常情况超出阈值进入熔断状态,快速失败。减少不稳定的外部依赖对核心服务的影响。
    • 自动化测试:通过完善的测试,减少发布引起的故障。
    • 灰度发布:灰度发布是速度与安全性作为妥协,能够有效减少发布故障。
    • 设计原则:数据不丢(持久化);服务高可用(服务副本);绝对的100%高可用很难,目标是做到尽可能多的9,如99.999%(全年累计只有5分钟)。

硬件负载均衡

软件负载均衡

限流

  • 《谈谈高并发系统的限流》
    • 计数器:通过滑动窗口计数器,控制单位时间内的请求次数,简单粗暴。
    • 漏桶算法:固定容量的漏桶,漏桶满了就丢弃请求,比较常用。
    • 令牌桶算法:固定容量的令牌桶,按照一定速率添加令牌,处理请求前需要拿到令牌,拿不到令牌则丢弃请求,或进入丢队列,可以通过控制添加令牌的速率,来控制整体速度。Guava 中的 RateLimiter 是令牌桶的实现。
    • Nginx 限流:通过 limit_req 等模块限制并发连接数。

应用层容灾

    • 雪崩效应原因:硬件故障、硬件故障、程序Bug、重试加大流量、用户大量请求。
    • 雪崩的对策:限流、改进缓存模式(缓存预加载、同步调用改异步)、自动扩容、降级。
    • Hystrix设计原则:
      • 资源隔离:Hystrix通过将每个依赖服务分配独立的线程池进行资源隔离, 从而避免服务雪崩。
      • 熔断开关:服务的健康状况 = 请求失败数 / 请求总数,通过阈值设定和滑动窗口控制开关。
      • 命令模式:通过继承 HystrixCommand 来包装服务调用逻辑。
    • 主要策略:失效瞬间:单机使用锁;使用分布式锁;不过期;
    • 热点数据:热点数据单独存储;使用本地缓存;分成多个子key;

跨机房容灾

    • 通过自研中间件进行数据同步。
    • 注意延迟问题,多次跨机房调用会将延时放大数倍。
    • 建房间专线很大概率会出现问题,做好运维和程序层面的容错。
    • 不能依赖于程序端数据双写,要有自动同步方案。
    • 数据永不在高延迟和较差网络质量下,考虑同步质量问题。
    • 核心业务和次要业务分而治之,甚至只考虑核心业务。
    • 异地多活监控部署、测试也要跟上。
    • 业务允许的情况下考虑用户分区,尤其是游戏、邮箱业务。
    • 控制跨机房消息体大小,越小越好。
    • 考虑使用docker容器虚拟化技术,提高动态调度能力。

容灾演练流程

平滑启动

数据库扩展

读写分离模式

分片模式

    • 中间件: 轻量级:sharding-jdbc、TSharding;重量级:Atlas、MyCAT、Vitess等。
    • 问题:事务、Join、迁移、扩容、ID、分页等。
    • 事务补偿:对数据进行对帐检查;基于日志进行比对;定期同标准数据来源进行同步等。
    • 分库策略:数值范围;取模;日期等。
    • 分库数量:通常 MySQL 单库 5千万条、Oracle 单库一亿条需要分库。
    • 分区:是MySQL内部机制,对客户端透明,数据存储在不同文件中,表面上看是同一个表。
    • 分表:物理上创建不同的表、客户端需要管理分表路由。

服务治理

服务注册与发现

服务路由控制

  • 《分布式服务框架学习笔记4 服务路由》
    • 原则:透明化路由
    • 负载均衡策略:随机、轮询、服务调用延迟、一致性哈希、粘滞连接
    • 本地路由优先策略:injvm(优先调用jvm内部的服务),innative(优先使用相同物理机的服务),原则上找距离最近的服务。
    • 配置方式:统一注册表;本地配置;动态下发。

分布式一致

CAP 与 BASE 理论

  • 《从分布式一致性谈到CAP理论、BASE理论》
    • 一致性分类:强一致(立即一致);弱一致(可在单位时间内实现一致,比如秒级);最终一致(弱一致的一种,一定时间内最终一致)
    • CAP:一致性、可用性、分区容错性(网络故障引起)
    • BASE:Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)
    • BASE理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。

分布式锁

    • 基于数据库的分布式锁:优点:操作简单、容易理解。缺点:存在单点问题、数据库性能够开销较大、不可重入;
    • 基于缓存的分布式锁:优点:非阻塞、性能好。缺点:操作不好容易造成锁无法释放的情况。
    • Zookeeper 分布式锁:通过有序临时节点实现锁机制,自己对应的节点需要最小,则被认为是获得了锁。优点:集群可以透明解决单点问题,避免锁不被释放问题,同时锁可以重入。缺点:性能不如缓存方式,吞吐量会随着zk集群规模变大而下降。
    • 清楚的原理描述 + Java 代码示例。
    • 基于 setnx(set if ont exists),有则返回false,否则返回true。并支持过期时间。
    • 利用 memcached 的 add(有别于set)操作,当key存在时,返回false。

分布式一致性算法

PAXOS

Zab

Raft

Gossip

两阶段提交、多阶段提交

幂等

  • 《分布式系统---幂等性设计》
    • 幂等特性的作用:该资源具备幂等性,请求方无需担心重复调用会产生错误。
    • 常见保证幂等的手段:MVCC(类似于乐观锁)、去重表(唯一索引)、悲观锁、一次性token、序列号方式。

分布式一致方案

分布式 Leader 节点选举

TCC(Try/Confirm/Cancel) 柔性事务

  • 《传统事务与柔性事务》
    • 基于BASE理论:基本可用、柔性状态、最终一致。
    • 解决方案:记录日志+补偿(正向补充或者回滚)、消息重试(要求程序要幂等);“无锁设计”、采用乐观锁机制。

分布式文件系统

唯一ID 生成

全局唯一ID

    • Twitter 方案(Snowflake 算法):41位时间戳+10位机器标识(比如IP,服务器名称等)+12位序列号(本地计数器)
    • Flicker 方案:MySQL自增ID + "REPLACE INTO XXX:SELECT LAST_INSERT_ID();"
    • UUID:缺点,无序,字符串过长,占用空间,影响检索性能。
    • MongoDB 方案:利用 ObjectId。缺点:不能自增。
    • 在数据库中创建 sequence 表,用于记录,当前已被占用的id最大值。
    • 每台客户端主机取一个id区间(比如 1000~2000)缓存在本地,并更新 sequence 表中的id最大值记录。
    • 客户端主机之间取不同的id区间,用完再取,使用乐观锁机制控制并发。

一致性Hash算法

设计思想 & 开发模式

DDD(Domain-driven Design - 领域驱动设计)

    • 概念:DDD 主要对传统软件开发流程(分析-设计-编码)中各阶段的割裂问题而提出,避免由于一开始分析不明或在软件开发过程中的信息流转不一致而造成软件无法交付(和需求方设想不一致)的问题。DDD 强调一切以领域(Domain)为中心,强调领域专家(Domain Expert)的作用,强调先定义好领域模型之后在进行开发,并且领域模型可以指导开发(所谓的驱动)。
    • 过程:理解领域、拆分领域、细化领域,模型的准确性取决于模型的理解深度。
    • 设计:DDD 中提出了建模工具,比如聚合、实体、值对象、工厂、仓储、领域服务、领域事件来帮助领域建模。
    • 领域(Doamin)本质上就是问题域,比如一个电商系统,一个论坛系统等。
    • 界限上下文(Bounded Context):阐述子域之间的关系,可以简单理解成一个子系统或组件模块。
    • 领域模型(Domain Model):DDD的核心是建立(用通用描述语言、工具—领域通用语言)正确的领域模型;反应业务需求的本质,包括实体和过程;其贯穿软件分析、设计、开发 的整个过程;常用表达领域模型的方式:图、代码或文字;
    • 领域通用语言:领域专家、开发设计人员都能立即的语言或工具。
    • 经典分层架构:用户界面/展示层、应用层、领域层、基础设施层,是四层架构模式。
    • 使用的模式:
      • 关联尽量少,尽量单项,尽量降低整体复杂度。
      • 实体(Entity):领域中的唯一标示,一个实体的属性尽量少,少则清晰。
      • 值对象(Value Object):没有唯一标识,且属性值不可变,小二简单的对象,比如Date。
      • 领域服务(Domain Service): 协调多个领域对象,只有方法没有状态(不存数据);可以分为应用层服务,领域层服务、基础层服务。
      • 聚合及聚合根(Aggregate,Aggregate Root):聚合定义了一组具有内聚关系的相关对象的集合;聚合根是对聚合引用的唯一元素;当修改一个聚合时,必须在事务级别;大部分领域模型中,有70%的聚合通常只有一个实体,30%只有2~3个实体;如果一个聚合只有一个实体,那么这个实体就是聚合根;如果有多个实体,那么我们可以思考聚合内哪个对象有独立存在的意义并且可以和外部直接进行交互;
      • 工厂(Factory):类似于设计模式中的工厂模式。
      • 仓储(Repository):持久化到DB,管理对象,且只对聚合设计仓储。
    • 聚合:比如一辆汽车(Car)包含了引擎(Engine)、车轮(Wheel)和油箱(Tank)等组件,缺一不可。

命令查询职责分离(CQRS)

CQRS — Command Query Responsibility Seperation

贫血,充血模型

  • 《贫血,充血模型的解释以及一些经验》
    • 失血模型:老子和儿子分别定义,相互不知道,二者实体定义中完全没有业务逻辑,通过外部Service进行关联。
    • 贫血模型:老子知道儿子,儿子也知道老子;部分业务逻辑放到实体中;优点:各层单项依赖,结构清楚,易于维护;缺点:不符合OO思想,相比于充血模式,Service层较为厚重;
    • 充血模型:和贫血模型类似,区别在于如何划分业务逻辑。优点:Service层比较薄,只充当Facade的角色,不和DAO打交道、复合OO思想;缺点:非单项依赖,DO和DAO之间双向依赖、和Service层的逻辑划分容易造成混乱。
    • 肿胀模式:是一种极端情况,取消Service层、全部业务逻辑放在DO中;优点:符合OO思想、简化了分层;缺点:暴露信息过多、很多非DO逻辑也会强行并入DO。这种模式应该避免。
    • 作者主张使用贫血模式。

Actor 模式

TODO

响应式编程

Reactor

TODO

RxJava

TODO

Vert.x

TODO

DODAF2.0

Serverless

无需过多关系服务器的服务架构理念。
    • Serverless 不代表出去服务器,而是去除对服务器运行状态的关心。
    • Serverless 代表一思维方式的转变,从“构建一套服务在一台服务器上,对对个事件进行响应转变为构建一个为服务器,来响应一个事件”。
    • Serverless 不代表某个具体的框架。
    • 依赖于 Baas ((Mobile) Backend as a Service) 和 Faas (Functions as a service)

Service Mesh

项目管理

架构评审

重构

代码规范

代码 Review

制度还是制度! 另外,每个公司需要根据自己的需求和目标制定自己的 check list

RUP

看板管理

SCRUM

SCRUM - 争球

敏捷开发

TODO

极限编程(XP)

XP - eXtreme Programming
  • 《主流敏捷开发方法:极限编程XP》
    • 是一种指导开发人员的方法论。
    • 4大价值:
      • 沟通:鼓励口头沟通,提高效率。
      • 简单:够用就好。
      • 反馈:及时反馈、通知相关人。
      • 勇气:提倡拥抱变化,敢于重构。
    • 5个原则:快速反馈、简单性假设、逐步修改、提倡更改(小步快跑)、优质工作(保证质量的前提下保证小步快跑)。
    • 5个工作:阶段性冲刺;冲刺计划会议;每日站立会议;冲刺后review;回顾会议。

结对编程

边写码,边review。能够增强代码质量、减少bug。

PDCA 循环质量管理

P——PLAN 策划,D——DO 实施,C——CHECK 检查,A——ACT 改进

FMEA管理模式

TODO

通用业务术语

TODO

技术趋势

TODO

政策、法规

法律

严格遵守刑法253法条

我国刑法第253条之一规定:
  • 国家机关或者金融、电信、交通、教育、医疗等单位的工作人员,违反国家规定,将本单位在履行职责或者提供服务过程中获得的公民个人信息,出售或者非法提供给他人,情节严重的,处3年以下有期徒刑或者拘役,并处或者单处罚金。
  • 窃取或者以其他方法非法获取上述信息,情节严重的,依照前款的规定处罚。
  • 单位犯前两款罪的,对单位判处罚金,并对其直接负责的主管人员和其他直接责任人员,依照各该款的规定处罚。
最高人民法院、最高人民检察院关于执行《中华人民共和国刑法》确定罪名的补充规定(四)规定:触犯刑法第253条之一第1款之规定,构成“出售、非法提供公民个人信息罪”;触犯刑法第253条之一第2款之规定,构成“非法获取公民个人信息罪”

避风港原则

“避风港”原则是指在发生著作权侵权案件时,当ISP(网络服务提供商)只提供空间服务,并不制作网页内容,如果ISP被告知侵权,则有删除的义务,否则就被视为侵权。如果侵权内容既不在ISP的服务器上存储,又没有被告知哪些内容应该删除,则ISP不承担侵权责任。 后来避风港原则也被应用在搜索引擎、网络存储、在线图书馆等方面。

架构师素质

    • 业务理解和抽象能力
    • NB的代码能力
    • 全面:1. 在面对业务问题上,架构师脑海里是否会浮现出多种技术方案;2. 在做系统设计时是否考虑到了足够多的方方面面;3. 在做系统设计时是否考虑到了足够多的方方面面;
    • 全局:是否考虑到了对上下游的系统的影响。
    • 权衡:权衡投入产出比;优先级和节奏控制;
    • 要去考虑的细节:模块化、轻耦合、无共享架构;减少各个组件之前的依赖、注意服务之间依赖所有造成的链式失败及影响等。
    • 基础设施、配置、测试、开发、运维综合考虑。
    • 考虑人、团队、和组织的影响。
    • 素质:业务理解、技术广度、技术深度、丰富经验、沟通能力、动手能力、美学素养。
    • 成长路径:2年积累知识、4年积累技能和组内影响力、7年积累部门内影响力、7年以上积累跨部门影响力。
    • 第一层的架构师看到的只是产品本身
    • 第二层的架构师不仅看到自己的产品,还看到了整体的方案
    • 第三层的架构师看到的是商业价值

团队管理

TODO

招聘

资讯

行业资讯

公众号列表

TODO

博客

团队博客

个人博客

综合门户、社区

国内:
国外:

问答、讨论类社区

行业数据分析

专项网站

其他类

推荐参考书

在线电子书

纸质书

更多架构方面书籍参考: awesome-java-books

开发方面

  • 《阿里巴巴Java开发手册》详情

架构方面

  • 《软件架构师的12项修炼:技术技能篇》详情
  • 《架构之美》详情
  • 《分布式服务架构》详情
  • 《聊聊架构》 详情
  • 《云原生应用架构实践》详情
  • 《亿级流量网站架构核心技术》详情
  • 《淘宝技术这十年》详情
  • 《企业IT架构转型之道-中台战略思想与架构实战》 详情
  • 《高可用架构(第1卷)》详情

技术管理方面

  • 《CTO说》详情
  • 《技术管理之巅》详情
  • 《网易一千零一夜:互联网产品项目管理实战》详情

基础理论

工具方面

TODO

大数据方面

技术资源

开源资源

手册、文档、教程

国内:
    • HTML 、 CSS、XML、Java、Python、PHP、设计模式等入门手册。
    • 很多很多中文在线电子书,是一个全新的开源技术文档分享平台。
    • 付费电子书。
    • AI、大数据方面系列中文文档。
国外:

在线课堂

会议、活动

活动发布平台:

常用APP

找工作

工具

代码托管

文件服务

  • 七牛
  • 又拍云

综合云服务商

VPS


Java 技术书籍大全

$
0
0
本文档目前已收录 277本 Java相关领域经典技术书籍,从初级开发者到资深架构师,涵盖 Java 从业者的各个阶段,并持续更新。
涵盖领域:Java入门书籍,Java基础及进阶书籍,框架与中间件,架构设计,设计模式,数学与算法,JVM周边语言,项目管理&领导力&流程,职业素养与个人成长,格局与视野,面试参考书等。

目录:

TOC generated by simple-php-github-toc

入门书籍

基础书籍

多线程与并发

网络编程

数据结构

语言基础

进阶

性能优化

响应式编程

JVM虚拟机

代码&设计优化

设计模式

框架与中间件

数据库

缓存与NoSQL

消息队列

ORM框架

Spring家族

高并发

分布式

搜索引擎

大数据

架构

分布式架构

微服务架构

架构方法论

JVM周边语言

项目管理&领导力&流程

项目管理

团队管理

数学与算法

数学

算法

职业素养与个人成长

职业素养提升

个人软技能

大厂出品

阿里巴巴技术丛书

京东技术丛书

工具书

面试求职

格局与视野

Java之外

网络知识

安全知识

工具

运维&DevOps

from  https://github.com/sorenduan/awesome-java-books

edge和urge的发音是不一样的。

$
0
0
最近我在听一段英语演讲,就把urge听成了edge,而不知所云。
其实edge的发音是[edʒ] ,urge的发音是[ɜːdʒ] ,二者是不一样的。urge做名词时,意思是“冲动;强烈愿望”,等于strong desire.

诗词情话,句句动人,你想说给谁听?

$
0
0
我们一生都在寻找一个人,一个能与我们互相取暖,陪我们度过悠长岁月的人。
如果那个人出现在我们面前,我们会说什么呢?
表白的话有很多很多,但是最走心的只有那一句。诗词君列出了恋爱的八个阶段,你觉得哪句诗、哪句话最能代表你的心呢?

第一阶段:一见钟情
浣花溪上见卿卿,脸波明,黛眉轻。
——张泌《江城子》

春日游,杏花吹满头。陌上谁家年少,足风流。
——韦庄《思帝乡》

有美一人,清扬婉兮。邂逅相遇,适我愿兮。
——《诗经·野有蔓草》

众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。
——辛弃疾《青玉案·元夕》

只缘感君一回顾,使我思君朝与暮。
——《古相思曲》


第二阶段:情窦初开

静女其姝,俟我于城隅。爱而不见,搔首踟蹰。
——《诗经·静女》

锦幄初温,兽烟不断,相对坐调笙。
——周邦彦《少年游》
月上柳梢头,人约黄昏后。
——欧阳修《生查子·元夕》

夕阳谁唤下楼梯,一握香荑。回头忍笑阶前立,总无语,也依依。
——纳兰性德《落花时》

见客入来,袜刬金钗溜。和羞走,倚门回首,却把青梅嗅。
——李清照《点绛唇》

第三阶段:心心相印

夜月一帘幽梦,春风十里柔情
——秦观《八六子·倚危亭》

换我心,为你心,始知相忆深
——顾夐《诉衷情·永夜抛人何处去》

只愿君心似我心,定不负相思意。
——李之仪《卜算子》

海水梦悠悠,君愁我亦愁。
——《西洲曲》

心似双丝网,中有千千结。
——张先《千秋岁·数声鶗鴂》

何当共剪西窗烛,却话巴山夜雨时。
——李商隐《夜雨寄北》

第四阶段:海誓山盟

生当复来归,死当长相思。
——《留别妻》

春蚕到死丝方尽,蜡炬成灰泪始干。
——李商隐《无题·相见时难别亦难》

枕前发遍千般愿,要休且待青山烂。
——《菩萨蛮》
愿我如星,君如月,夜夜流光相皎洁。
——范成大《车遥遥篇》

第五阶段:情有独钟

出其东门,有女如云。虽则如云,匪我思存。缟衣綦巾,聊乐我员。
——《诗经·出其东门》

识尽千千万万人,终不似、伊家好。
——施酒监《卜算子·赠杭妓乐婉》
曾经沧海难为水,除却巫山不是云。
——元稹《离思五首·其四》

任凭弱水三千,我只取一瓢饮。
——《红楼梦》

第六阶段:情比金坚

问世间、情是何物,直教生死相许。
——元好问《摸鱼儿·雁丘词》

君当作磐石,妾当作蒲苇,蒲苇纫如丝,磐石无转移。
——《孔雀东南飞》


第七阶段:生死相伴

榖则异室,死则同穴。谓子不信,有如皦日。
——《诗经·王风·大车》

人事多错迁,与君永相望。
——杜甫《新婚别》

第八阶段:白头偕老

宜言饮酒,与子偕老。琴瑟在御,莫不静好。
——《诗经·女曰鸡鸣》

愿得一心人,白头不相离。
——卓文君《白头吟》

死生契阔,与子成说。执子之手,与子偕老。
——《诗经·击鼓》


罗伊·克里夫特写过这么一句话:“我爱你,不光因为你的样子,还因为和你在一起时,我的样子。”
愿你能因为某个人的出现而让世界变得丰盈,愿你的生活如同贺卡上烫金的祝词欢脱,愿这悠长岁月,温柔安好,有回忆煮酒,愿你没有软肋,也不需要盔甲,愿你和你爱的人,一起浪费人生,热泪盈眶,长生不老。

秦观 《八六子·倚危亭》

$
0
0
倚危亭。恨如芳草,萋萋刬尽还生。念柳外青骢别后,水边红袂分时,怆然暗惊。
无端天与娉婷。夜月一帘幽梦,春风十里柔情。怎奈向、欢娱渐随流水,素弦声断,翠绡香减,那堪片片飞花弄晚,蒙蒙残雨笼晴。正销凝。黄鹂又啼数声。


译文
我独自依靠在高高的亭子上,那怨情就像春草,刚刚被清理,不知不觉又已长出来。一想到在柳树外骑马分别的场景,一想到水边与那位红袖佳人分别的情形,我就伤感不已。
佳人,上天为何赐你如此美丽?让我深深投入无力自拔?当年在夜月里,我们共同醉入一帘幽梦,温柔的春风吹拂着你我。真是无可奈何,往日的欢乐都伴随着流水远去,绿纱巾上的香味渐渐淡去,再也听不到你那悦耳的琴声。如今已到了暮春时令,片片残红在夜色中飞扬,点点细雨下着下着又晴了,雾气一片迷迷蒙蒙。我的愁思正浓,忽然又传来黄鹂的啼叫声,一声一声。

《千秋岁·数声鶗鴂》

$
0
0

千秋岁
数声鶗鴂,又报芳菲歇。惜春更把残红折。雨轻风色暴,梅子青时节。永丰柳,无人尽日花飞雪。
莫把幺弦拨,怨极弦能说。天不老,情难绝心似双丝网,中有千千结。夜过也,东窗未白,凝残月.

《千秋岁·数声鶗鴂》是宋代词人张先的作品,被选入《宋词三百首》。此词写爱情横遭阻抑的幽怨和坚决不移的信念。上阕写暮春景色:雨轻风紧,催落繁花;杜鹃啼血,呼唤着春天完结,造成浓重的感伤气氛。惜春的词人,在花丛中寻找并采摘着残花,传神地刻画出词人伤春惜花的拳拳真情。接着以飘零的杨花,写春之落寞及心之寒冷。下阕抒情:“不老”的“天”与“难绝”的“情”相对比,再以“千千结”的“双丝网”比忧思百结的愁心,将愁情怨怀表达得淋漓尽致。最后以夜将尽的孤灯景象作结,让整个的抒情氛围笼罩在漆黑的深渊中,很富抒情效果。全词含蓄发越,体现了张先的词风。

java快速开发平台: Jeecg-Boot (前后端分离版本)

$
0
0

 一款基于代码生成器的JAVA快速开发平台!采用最新技术,前后端分离架构:SpringBoot 2.x,Ant Design&Vue,Mybatis-plus,Shiro,JWT。强大的代码生成器让前后端代码一键生成,无需写任何代码,绝对是全栈开发福音!! JeecgBoot的宗旨是提高UI能力的同时,降低前后分离的开发成本,JeecgBoot还独创在线开发模式,No代码概念,一系列在线智能开发:在线配置表单、在线配置报表、在线设计流程等等。

当前最新版本: 2.1.1(发布日期:20191021)
AURGitHub starsGitHub forks

项目介绍:

Java RAD framework for enterprise web applications

Jeecg-Boot 是一款基于SpringBoot+代码生成器的快速开发平台!前后端分离架构:SpringBoot,Ant Design Vue,Mybatis,Shiro,JWT。强大的代码生成器让前端和后台代码一键生成,不需要写任何代码,保持jeecg一贯的强大,绝对是全栈开发福音!! JeecgBoot在提高UI能力的同时,降低了前后分离的开发成本,JeecgBoot还独创在线开发模式(No代码概念),一系列在线智能开发:在线配置表单、在线配置报表、在线图表设计、在线设计流程等等。
JEECG宗旨是: 简单功能由Online Coding配置实现(在线配置表单、在线配置报表、在线图表设计、在线设计流程、在线设计表单),复杂功能由代码生成器生成进行手工Merge,既保证了智能又兼顾了灵活; 业务流程采用工作流来实现、扩展出任务接口,供开发编写业务逻辑,表单提供多种解决方案: 表单设计器、online配置表单、编码表单。同时实现了流程与表单的分离设计(松耦合)、并支持任务节点灵活配置,既保证了公司流程的保密性,又减少了开发人员的工作量。

适用项目

Jeecg-Boot快速开发平台,可以应用在任何J2EE项目的开发中,尤其适合企业信息管理系统(MIS)、内部办公系统(OA)、企业资源计划系统(ERP)、客户关系管理系统(CRM)等,其半智能手工Merge的开发方式,可以显著提高开发效率70%以上,极大降低开发成本。

技术文档

交流互动

为什么选择JEECG-BOOT?

  • 1.采用最新主流前后分离框架(Springboot+Mybatis+antd),容易上手; 代码生成器依赖性低,灵活的扩展能力,可灵活实现二次开发;
  • 2.开发效率很高,采用代码生成器,单表数据模型和一对多(父子表)数据模型,增删改查功能自动生成,菜单配置直接使用;
  • 3.代码生成器提供强大模板机制,支持自定义模板风格。目前提供四套风格模板(单表两套、一对多两套)
  • 4.封装完善的用户、角色、菜单、组织机构、数据字典、在线定时任务等基础功能,支持访问授权、按钮权限、数据权限等功能
  • 5.常用共通封装,各种工具类(定时任务,短信接口,邮件发送,Excel导入导出等),基本满足80%项目需求
  • 6.简易Excel导入导出,支持单表导出和一对多表模式导出,生成的代码自带导入导出功能
  • 7.集成简易报表工具,图像报表和数据导出非常方便,可极其方便的生成图形报表、pdf、excel、word等报表;
  • 8.采用前后分离技术,页面UI风格精美,针对常用组件做了封装:时间、行表格控件、截取显示控件、报表组件,编辑器等等
  • 9.查询过滤器:查询功能自动生成,后台动态拼SQL追加查询条件;支持多种匹配方式(全匹配/模糊查询/包含查询/不匹配查询);
  • 10.数据权限(精细化数据权限控制,控制到行级,列表级,表单字段级,实现不同人看不同数据,不同人对同一个页面操作不同字段
  • 11.在线配置报表(无需编码,通过在线配置方式,实现曲线图,柱状图,数据等报表)
  • 12.页面校验自动生成(必须输入、数字校验、金额校验、时间空间等);
  • 13.集成工作流activiti,并实现了只需在页面配置流程转向,可极大的简化bpm工作流的开发;用bpm的流程设计器画出了流程走向,一个工作流基本就完成了,只需写很少量的java代码;
  • 14.在线流程设计,采用开源Activiti流程引擎,实现在线画流程,自定义表单,表单挂靠,业务流转
  • 15.多数据源:及其简易的使用方式,在线配置数据源配置,便捷的从其他数据抓取数据;
  • 16.提供单点登录CAS集成方案,项目中已经提供完善的对接代码
  • 17.表单设计器,支持用户自定义表单布局,支持单表,一对多表单、支持select、radio、checkbox、textarea、date、popup、列表、宏等控件
  • 18.专业接口对接机制,统一采用restful接口方式,集成swagger-ui在线接口文档,Jwt token安全验证,方便客户端对接
  • 19.接口安全机制,可细化控制接口授权,非常简便实现不同客户端只看自己数据等控制
  • 20.高级组合查询功能,在线配置支持主子表关联查询,可保存查询历史
  • 21.提供各种系统监控,实时跟踪系统运行情况(监控 Redis、Tomcat、jvm、服务器信息、请求追踪、SQL监控)
  • 22.消息中心(支持短信、邮件、微信推送等等)
  • 21.集成Websocket消息通知机制
  • 22.提供APP发布方案国际化:
  • 23.支持多语言,提供国际化方案;
  • 24.数据变更记录日志,可记录数据每次变更内容,通过版本对比功能查看历史变化
  • 25.平台UI强大,实现了移动自适应
  • 26.平台首页风格,提供多种组合模式,支持自定义风格
  • 27.提供简单易用的打印插件,支持谷歌、IE浏览器等各种浏览器
  • 28.示例代码丰富,提供很多学习案例参考
  • 29.采用maven分模块开发方式
  • 30.支持菜单动态路由
  • 31.权限控制采用 RBAC(Role-Based Access Control,基于角色的访问控制)

技术架构:

开发环境

  • 语言:Java 8
  • IDE(JAVA): IDEA / Eclipse安装lombok插件
  • IDE(前端): WebStorm 或者 IDEA
  • 依赖管理:Maven
  • 数据库:MySQL5.7+ & Oracle 11g& Sqlserver2017
  • 缓存:Redis

后端

  • 基础框架:Spring Boot 2.1.3.RELEASE
  • 持久层框架:Mybatis-plus_3.1.2
  • 安全框架:Apache Shiro 1.4.0,Jwt_3.7.0
  • 数据库连接池:阿里巴巴Druid 1.1.10
  • 缓存框架:redis
  • 日志打印:logback
  • 其他:fastjson,poi,Swagger-ui,quartz, lombok(简化代码)等。

前端

功能模块

├─系统管理
│ ├─用户管理
│ ├─角色管理
│ ├─菜单管理
│ ├─权限设置(支持按钮权限、数据权限)
│ ├─表单权限(控制字段禁用、隐藏)
│ ├─部门管理
│ └─字典管理
│ └─树分类字典
│ └─系统公告
│ └─我的组织机构
├─消息中心
│ ├─消息管理
│ ├─模板管理
├─智能化功能
│ ├─代码生成器功能(一键生成前后端代码,生成后无需修改直接用,绝对是后端开发福音)
│ ├─代码生成器模板(提供4套模板,分别支持单表和一对多模型,不同风格选择)
│ ├─代码生成器模板(生成代码,自带excel导入导出)
│ ├─查询过滤器(查询逻辑无需编码,系统根据页面配置自动生成)
│ ├─高级查询器(弹窗自动组合查询条件)
│ ├─Excel导入导出工具集成(支持单表,一对多 导入导出)
│ ├─平台移动自适应支持
├─系统监控
│ ├─性能扫描监控
│ │ ├─监控 Redis
│ │ ├─Tomcat
│ │ ├─jvm
│ │ ├─服务器信息
│ │ ├─请求追踪
│ │ ├─磁盘监控
│ ├─定时任务
│ ├─系统日志
│ ├─消息中心(支持短信、邮件、微信推送等等)
│ ├─数据日志(记录数据快照,可对比快照,查看数据变更情况)
│ ├─系统通知
│ ├─SQL监控
│ ├─swagger-ui(在线接口文档)
│─报表示例
│ ├─曲线图
│ └─饼状图
│ └─柱状图
│ └─折线图
│ └─面积图
│ └─雷达图
│ └─仪表图
│ └─进度条
│ └─排名列表
│ └─等等
│─常用示例
│ ├─单表模型例子
│ └─一对多模型例子
│ └─打印例子
│ └─一对多TAB例子
│ └─内嵌table例子
│ └─常用选择组件
│ └─异步树table
│ └─接口模拟测试
│ └─一对多JEditable
│ └─图片拖拽排序
│ └─图片翻页
│ └─图片预览
│ └─PDF预览
│ └─分屏功能
│─封装通用组件
│ ├─行编辑表格JEditableTable
│ └─省略显示组件
│ └─时间控件
│ └─高级查询
│ └─用户选择组件
│ └─报表组件封装
│ └─字典组件
│ └─下拉多选组件
│ └─选人组件
│ └─选部门组件
│ └─通过部门选人组件
│ └─封装曲线、柱状图、饼状图、折线图等等报表的组件(经过封装,使用简单)
│ └─在线code编辑器
│ └─上传文件组件
│ └─验证码组件
│ └─树列表组件
│ └─表单禁用组件
│ └─等等
│─更多页面模板
│ ├─各种高级表单
│ ├─各种列表效果
│ └─结果页面
│ └─异常页面
│ └─个人页面
├─高级功能
│ ├─提供单点登录CAS集成方案
│ ├─提供APP发布方案
│ ├─集成Websocket消息通知机制
├─Online在线开发(暂未开源)
│ ├─Online在线表单 - 功能已开放
│ ├─在线代码生成器 - 功能已开放
│ ├─Online在线图表
│ ├─Online图表模板配置
│ ├─Online在线报表
│ ├─高级表单设计器
│─流程模块功能 (暂不开源)
│ ├─流程设计器
│ ├─在线表单设计
│ └─我的任务
│ └─历史流程
│ └─历史流程
│ └─流程实例管理
│ └─流程监听管理
│ └─流程表达式
│ └─我发起的流程
│ └─我的抄送
│ └─流程委派、抄送、跳转
│ └─。。。
└─其他模块
└─更多功能开发中。。

后台开发环境和依赖

  • java
  • maven
  • jdk8
  • mysql
  • redis
  • 数据库脚步:jeecg-boot\docs\jeecg-boot-mysql.sql
  • 默认登录账号: admin/123456

前端开发环境和依赖

项目下载和运行

  • 拉取项目代码
git clone https://github.com/zhangdaiscott/jeecg-boot
cd jeecg-boot/ant-design-jeecg-vue
  1. 安装node.js
  2. 切换到ant-design-jeecg-vue文件夹下
# 安装yarn
npm install -g yarn


# 下载依赖
yarn install

# 启动
yarn run serve

# 编译项目
yarn run build

# Lints and fixes files
yarn run lint 
 
from  https://github.com/zhangdaiscott/jeecg-boot

Awesome Online IDE list

$
0
0
A list of awesome online development environments

 Awesome

A curated list of awesome online implementations of Integrated Development Environments (IDE)
An (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. This typically includes a text editor, syntax highlighting, file explorer, debugger, version control, and build/run/deploy options. Another defining feature of an IDE is some form of intelligent code completion, sometimes called intellisense.
An "Online IDE" has the features mentioned above but runs in a web browser instead of installing as a native application. An "Online IDE" can be made accessible in offline mode without an internet connection and still satisfy the above conditions.

Contents

Legend

IconMeaning
Open source or source code available
Docker image or other self-hosted option available
Sign-up required before usage

Full IDE

  • AWS Cloud9 - Run any language on a full VM complete with a terminal built on Ace Editor.
  • CodeEnvy - Run any language on a full VM complete with Eclipse Che.
  • StackBlitz - Run JavaScript with starting templates for Angular, React, or Ionic with full intellisense + instant error checking.
  • CodeSandbox - Run JavaScript with starting templates for React, Vue, Angular, Preact and more with full intellisense, lint error checking and live collaborative editing.
  • Snack Expo - Run JavaScript with React Native in the browser and on your mobile iOS or Android.
  • Codeanywhere - Run many languages in a container with pre-built environment and a terminal.
  • WebAssembly Studio - Run C, Rust, Wat, or AssemblyScript code as WebAssembly in the browser.
  • Remix - Run Solidity with a compiler, debugger, Static Analyzer for security, and direct access to Ethereum main network and testing networks.
  • Nativescript Playground - Run NativeScript with Angular, JavaScript, TypeScript, or Vue.js on your mobile iOS or Android device by scanning a QR code.
  • Wide - Run Go with full intellisense code-completion, expression-info, and jump to declaration.
  • Glitch - Run full Node.js projects with support for automating hosting, version control, CDN for assets, secure storage of secrets, real-time collaboration, full console access, GitHub import/export, server-side debugger, instant deployments, and more.
  • Theia - Run any language on a full VM complete with a terminal built on Monaco Editor.
  • Datalore - Run Python notebooks for data analysis and visualization, with real-time collaboration, incremental calculation, and integrated version control.
  • MATLAB Online - Run MATLAB code, visualize results, share scripts and collaborate on mathematical computing software.
  • Colaboratory - Run Python in a Jupyter notebook with ML libraries and free GPUs for running experiments.
  • Coder - Run most languages on a full Linux VM complete with a terminal, go-to-definition, linting, live collaboration, and auto-scaling.
  • Gitpod - Run any language on a full Linux VM complete with terminals, GitHub and Git integration, content assist, go-to-definition, linting, live collaboration, custom Docker workspaces, and integrated code review support.
  • Browxy - Run Java, C, C++, C#, Python, or PHP with some syntax highlighting, input arguments, and publish to a public URL.
  • Superblocks Lab - Run Solidity with a built-in browser Ethereum blockchain VM, Metamask integration (deployments to Testnet/Mainnet), transaction logger and live code your WebApp, powered by Monaco Editor.
  • Codiad - Run most of languages on a self-hosted, resource-constrained server with plugins and shell execution.
  • Appitr - Run JavaScript ES6 with React Native in the browser built on Monaco Editor and React Native Web.
  • DrRacket - Run Racket with support for macro debugging.

Snippets

  • Glot - Run snippets from over 30 languages as docker containers including C#, Kotlin, Julia, Go, and Ruby.
  • Codiva - Run C, C++, Java snippets with background compilation and some intellisense code-completion.
  • Try It Online - Run snippets from over 300 languages including esoteric code-golf languages.
  • JDoodle - Run snippets from over 100 languages including Haskell, Prolog, MySQL, and MongoDB.
  • Judge0 - Run snippets from over 40 languages including Erlang, Elixir, OCaml and Octave.
  • Ideone - Run snippets from over 60 languages including AWK, Swift, and SQLite.
  • The Online Compiler - Run snippets from over 10 languages including C++, Java, Python, C# code with some intellisense code-completion.
  • CPP Shell - Run C++ snippets with input flags for warning level and optimization level.
  • Repl.it - Run snippets from over 50 languages including Clojure, Scheme, Enzyme, and Jest.
  • RunKit - Run Node.js snippets + visualizations but requires a sign-in.
  • OnlineGDB - Run snippets of C, C++, Java, Python, PHP, HTML with some intellisense code-completion.
  • SQLFiddle - Run snippets of MySQL, MSSQL, PostgreSQL, SQLite, and Oracle.
  • Go Playground - Run snippets for Go programming language.
  • Rust Playground - Run snippets of Rust programming language.
  • TypeScript Playground - Run snippets of TypeScript with tsconfig options and full intellisense.
  • Python Tutor - Run snippets of Python, JavaScript, TypeScript, Java, Ruby, C, and C++ code and see detailed step-by-step visualizations of run-time state.
  • Codeboard.io - Run snippets in C, C++, Eiffel, Haskell, Java, Python, and use tests for automatic grading of code written by students.
  • kotlin-web-demo - Run Kotlin snippets with auto-completion, type checking and automatically translate Java to Kotlin code.
  • 3v4l PHP Playground - Run PHP snippets on 200+ versions simultaneously with VLD opcodes and performance comparison.
  • PasteRack - Run Racket snippets with support for sample and recent snippets.
  • myCompiler.io - Run snippets from over 12 languages including C, C++, Java, Python, Ruby, Nodejs and more with auto code-completion, syntax highlighting, collaboration features like forking, commenting and sharing of code snippets.

Web Snippets

  • CodePen - Run snippets in HTML/CSS/JS, popular with designers.
  • JS Bin - Run snippets in HTML/CSS/JS/TS, provides Codecasting.
  • JSFiddle - Run snippets in HTML/CSS/JS and collaborate in real-time.
  • Flems - Run snippets in HTML/CSS/JS without a connection to the server (after page load).
  • Plunker - Run snippets in HTML/CSS/JS/TS and collaborate by forking, commenting, and participating in the forums.
  • Popcode - Run snippets in HTML/CSS/JS for use in the classroom, with student-friendly error messages and offline editing.
  • Webpaw - Run snippets in HTML/CSS/JS with realtime collaboration, import sources and development utilities.
from  https://github.com/styfle/awesome-online-ide

在线测试网站:http://runnable.com/

frontend-dev-bookmarks

$
0
0
 Awesome
Manually curated collection of resources for frontend web developers.
You are viewing a browseable version, split by category in many small files. There is also a really huge file with every single resource on one page. Proceed to the totally gigantic file if you are into this kind of thing.
This is the current version, which receives ongoing updates. If you want the good old bookmarks, please use the tag v.1.0. Keep in mind, that the old version has many outdated links.
frontend.directoryGitterTwitter

Appearance

The outward or visible aspect of a website.
  • Animation: The process of creating motion and shape change.
  • Typography: The style, arrangement, or appearance of typeset matter.
  • Visualization: Placing data in a visual context.

Architecture

High level structure of the frontend code and the discipline of creating such structures.
  • Algorithms: A self-contained step-by-step set of operations to be performed. Algorithms perform calculation, data processing, and/or automated reasoning tasks.
  • Design Patterns: Best practices that the programmer can use to solve common problems when designing an application or system.
  • Designs: Ready to use and well documented structures and frameworks for frontend development.
  • Event-Driven Programming: Event-driven programming is a programming paradigm in which the flow of the program is determined by events such as user actions, sensor outputs, or messages from other programs/threads.
  • Functional Programming: Functional programming is a programming paradigm, that treats computation as the evaluation of mathematical functions and avoids changing-state and mutable data.
  • Functional Reactive Programming (FRP): FRP is a programming paradigm for asynchronous dataflow programming using the building blocks of functional programming.

Compatibility

Ability of a product to work with different input/output devices and rendering software. Including printers, email, mobile devices and different browsers.
  • Cross Browser: Cross-browser refers to the ability of a website, web application, HTML construct or client-side script to function in environments that provide its required features and to bow out or degrade gracefully when features are absent or lacking.
  • E-Mail: Preparing HTML based electronic mail.
  • Keyboard: Working with keyboard input in a web browser.
  • Mobile: Development of websites optimized for viewing on smartphone and tablet devices.
  • Printers: Manipulation of printer output through CSS.
  • Responsive Web Design (RWD): RWD responds to the needs of the users and the devices they’re using. The layout changes based on the size and capabilities of the device.
  • Web Accessibility: Web accessibility means that people with disabilities can perceive, understand, navigate, and interact with the Web, and that they can contribute to the Web.

Ecosystem

Important developers, companies, organizations and news sources.
  • Communities Around Projects: Successful open source projects attract many developers who produce plugins, libraries, tutorials and other resources. This section collects such resources.
  • News: Websites & newsletters which provide daily and weekly news related to frontend web development.
  • Notable Community Members: Important engineers, evangelists, architects and other celebrities.
  • Organizations: Commercial companies and nonprofit organizations around web development.
  • Podcasts: A podcast is a form of digital media that consists of an episodic series of audio, video, digital radio, PDF, or ePub files subscribed to and downloaded automatically through web syndication or streamed online to a computer or mobile device.

Languages, Protocols, Browser APIs

Programming/mark-up languages and web related standards.
  • Cascading Style Sheets (CSS): CSS are a stylesheet language used to describe the presentation of a document written in HTML or XML. It describes how elements should be rendered on screen, on paper, in speech, or on other media.
  • Document Object Model (DOM): The DOM is a programming interface for HTML, XML and SVG documents. It defines methods that allow access to the tree, so that they can change the document structure, style and content.
  • HyperText Markup Language (HTML): HTML is the standard markup language used to create web pages and its elements form the building blocks of all websites.
  • Hypertext Transfer Protocol (HTTP): The Hypertext Transfer Protocol (HTTP) is an application protocol for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web.
  • JavaScript (EcmaScript): JavaScript is a full-fledged dynamic programming language that, when applied to an HTML document, can provide dynamic interactivity on websites. It is defined by ECMAScript standard.
  • JavaScript Object Notation (JSON): JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language.
  • Scalable Vector Graphics (SVG): An XML-based vector image format for two-dimensional graphics with support for interactivity and animation.
  • Service Workers: A method that enables applications to take advantage of persistent background processing, including hooks to enable bootstrapping of web applications while offline.
  • Templating Languages and Engines: Template engines are tools to separate program-logic and presentation into two independent parts. This makes the development of both logic and presentation easier, improves flexibility and eases modification and maintenance.
  • Transpiled Languages: Abstract languages converted to native, browser supported standards like JavaScript or CSS.
  • Uniform Resource Identifier (URI): URI is a string of characters used to identify a resource. The most common form of URI is the Uniform Resource Locator (URL).
  • Web Animations API: Web Animations is a new JavaScript API for driving animated content on the web. By unifying the animation features of SVG and CSS, Web Animations unlocks features previously only usable declaratively, and exposes powerful, high-performance animation capabilities to developers.
  • WebAssembly: WebAssembly is meant to fill a place that JavaScript has been forced to occupy up to now: a low-level code representation that can serve as a compiler target.

User Interface Components

Drop-in UI components for web sites and applications.
  • Buttons: The term button refers to any graphical control element that provides the user a simple way to trigger an event, like searching for a query at a search engine, or to interact with dialog boxes, like confirming an action.
  • Code: Code viewers and editors designed for embedding inside a website.
  • Forms: A HTML form on a web page allows a user to enter data that is sent to a server for processing. Web users fill out the forms using checkboxes, radio buttons, or text fields.
  • Galeries & Image Sliders: A sophisticated way to present a collection of images on your website.
  • Grid: CSS Grid Layout Systems.
  • Rich Text Editors: A rich text editor is the interface for editing rich text within web browsers. The aim is to reduce the effort for users trying to express their formatting directly as valid HTML markup.
  • Table Of Contents: Components for automatic table of contents generation.
  • UI Kits: Collections of ready to use components.
  • Video & Audio: Components for playing audio and video files on a website.

Workflow

Task automation and asset delivery.
  • Automated Testing: Automated software testing is a process in which software tools execute pre-scripted tests on a software application before it is released into production.
  • Build Tools: Toolkits and their ecosystems, that help you automate painful and repeated tasks.
  • CSS Tools: Tools for analysis, pre and post processing of CSS files.
  • Code Editors: Text editor programs designed specifically for editing source code of a website.
  • Documentation: Writing, generating, publishing and consuming documentation for web deliverables.
  • Fonts for Programmers: Programmers need special fonts, which help align the code and distinguish between characters, that look alike.
  • Getting Started: Step by step guides for setting up a frontend development workflow.
  • HTML Tools: Tools for pre and post processing of the HTML source code.
  • Image Post Processing: Tools for image conversion and optimization.
  • JavaScript Tools: Tools for static analysis, pre and post processing of JavaScript files.
  • Package Management: A package manager or package management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing reusable libraries and components in a consistent manner.
  • Sourcemaps: Sourcemap is a way to map a combined/minified file back to an unbuilt state.
  • Version Control: Version control or source control is a system that records changes to a file or set of files over time so that you can recall specific versions later.
from https://github.com/dypsilon/frontend-dev-bookmarks

一个基于 php的文本代码存储网站的源码-PrivateBin

$
0
0
A minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted in the browser using 256 bits AES.

Current version: 1.3.1
PrivateBin is a minimalist, open source online pastebinwhere the server has zero knowledge of pasted data.
Data is encrypted and decrypted in the browser using 256bit AES in Galois Counter mode.
This is a fork of ZeroBin, originally developed by Sébastien Sauvage. ZeroBin was refactored to allow easier and cleaner extensions. PrivateBin has many more features than the original ZeroBin. It is, however, still fully compatible to the original ZeroBin 0.19 data storage scheme. Therefore, such installations can be upgraded to PrivateBin without losing any data.

What PrivateBin provides

  • As a server administrator you don't have to worry if your users post content that is considered illegal in your country. You have no knowledge of any of the pastes content. If requested or enforced, you can delete any paste from your system.
  • Pastebin-like system to store text documents, code samples, etc.
  • Encryption of data sent to server.
  • Possibility to set a password which is required to read the paste. It further protects a paste and prevents people stumbling upon your paste's link from being able to read it without the password.

What it doesn't provide

  • As a user you have to trust the server administrator not to inject any malicious javascript code. For basic security, the PrivateBin installation has to provide HTTPS! Otherwise you would also have to trust your internet provider, and any country the traffic passes through. Additionally the instance should be secured by HSTS and ideally by HPKP using a certificate. It can use traditional certificate authorities and/or use DNSSECprotected DANErecord.
  • The "key" used to encrypt the paste is part of the URL. If you publicly post the URL of a paste that is not password-protected, anyone can read it. Use a password if you want your paste to be private. In this case, make sure to use a strong password and only share it privately and end-to-end-encrypted.
  • A server admin might be forced to hand over access logs to the authorities. PrivateBin encrypts your text and the discussion contents, but who accessed a paste (first) might still be disclosed via access logs.
  • In case of a server breach your data is secure as it is only stored encrypted on the server. However, the server could be misused or the server admin could be legally forced into sending malicious JavaScript to all web users, which grabs the decryption key and sends it to the server when a user accesses a PrivateBin.
    Therefore, do not access any PrivateBin instance if you think it has been compromised. As long as no user accesses this instance with a previously generated URL, the content can't be decrypted.

Options

Some features are optional and can be enabled or disabled in the configuration file:
  • Password protection
  • Discussions, anonymous or with nicknames and IP based identicons or vizhashes
  • Expiration times, including a "forever" and "burn after reading" option
  • Markdown format support for HTML formatted pastes, including preview function
  • Syntax highlighting for source code using prettify.js, including 4 prettify themes
  • File upload support, images get displayed (disabled by default, possibility to adjust size limit)
  • Templates: By default there are bootstrap CSS, darkstrap and "classic ZeroBin" to choose from and it is easy to adapt these to your own websites layout or create your own.
  • Translation system and automatic browser language detection (if enabled in browser)
  • Language selection (disabled by default, as it uses a session cookie)
  • QR code generation of URL, to easily transfer pastes over to a mobile device

Further resources

Run into any issues? Have ideas for further developments? Please report them!

from  https://github.com/PrivateBin/PrivateBin

imo,是一个全球免费的视频和通话社交平台

$
0
0
Imo,又写作imo,是一个全球免费的视频和通话社交平台,IMO用户既能自由的发消息和打电话,又能分享他们生活的瞬间。[1]
IMO于2014年由来自硅谷的创业团队发表[2],后被总部位于新加坡的海外视频社交网络公司Bigo收购(该公司于2019年3月被YY完全收购)[3]。截止2019年,imo已经连接了全球超过2.1亿用户和他们的朋友及家人。[4][5]

支持平台

主要功能

[9]
音视频通话
通过imo进行音频和视频通话,可以与朋友和家人进行免费和稳定的通话,尽管有时他们身在国外
IM(消息文本表达)
随时随地免费向朋友发送消息
故事
通过图片、视频和文字与朋友,与朋友的朋友分享、交换生活
传输文件
在imo上,可以无限制地发送不超过10G的音乐、视频、PDF等文件
大群[10]
可以在多达10万人的大群里与同事、朋友、家人甚至同样兴趣的人聊天,并分享有趣的事物

参见



  • Liz,Sommer. IMO APP GUIDE. 2018-09-24 [2019-06-19](英语).

  • Paul,Fidalgo. Messaging app imo passes 500 million downloads. 2018-01-06 [2019-06-19](英语).

  • Jinli,Song. China’s live streamer YY expects its video conference app IMO to grow into a super app. 2019-05-29 [2019-06-19](英语).

  • YY Reports First Quarter 2019 Unaudited Financial Results. 2019-05-28 [2019-06-19](英语).

  • YY李学凌:完成海外用户流闭环布局.... 2019-05-31 [2019-06-19](中文(中国大陆)‎).

  • Alex, Dobie. Messaging app imo launches video calling. 2013-08-27 [2019-06-19](英语).

  • moinmoin. „imo free video calls and text“-Chat-App für Windows 10 Mobile und WP 8.1. 2016-07-23 [2019-06-19](英语).

  • Nadeem Unuth. Imo Instant Messenger Review. 2019-04-14 [2019-06-19](英语).

  • Maham Mmkhtar. WhatsApp Vs IMO: The Complete Comparison. 2017-04-17 [2019-06-19](英语).

    1. 4D Tech Pro. How to create imo big group. 2019-05-03 [2019-06-19].

    外部链接

    http://imo.im/ imo官网

    from https://zh.wikipedia.org/wiki/Imo
    Viewing all 20566 articles
    Browse latest View live
    <script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>