Mac下启动Apache

停止服务:sudo /usr/sbin/apachectl stop

开启服务:sudo /usr/sbin/apachectl start

重启服务:sudo /usr/sbin/apachectl restart

马化腾:未来或许通过脑电波进行沟通而不再依靠移动终端设备

avatar
第二届世界互联网大会在中国乌镇召开,此次大会主题为“互联互通·共享共治——构建网络空间命运共同体”。腾讯公司董事会主席兼首席执行官马化腾在演讲中表示,互联网和各行各业融合得很快,这不仅可以帮助我们探索新的经济增长方式,同时也为解决社会发展的问题提供新的思路。

马化腾详细解释,第一,互联网行业在中国的发展已经超越行业的属性,互联网和实体经济、各行各业在连接,并且这种连接已经变得规模化。

比如2013年是互联网和金融方面的结合,互联网这个新兴领域和传统金融领域的结合诞生出很多新兴机会;移动互联网的发展则让其与传统交通领域衔接的越来越紧密。

根据这种趋势,腾讯在这两三年的发展中调整了战略,定位于做“连接器”,从微信、QQ等大家熟悉的应用入手,与传统行业和各行各业相连接,希望有更多发展。

第二,互联网在人们的生活、社会等方面的影响越来越多。比如微信和公益结合非常多,腾讯在2006年的PC时代就创造了公益平台;在移动互联网时代,腾讯通过社交网络和大量公益的非盈利组织进行连接,做出大量贡献。

第三,信息沟通方式的变化将会对社会经济产生重大影响。

马化腾认为,QQ在PC互联网时代非常流行,之所以创造出微信,最大的根源是在于互联网信息终端的演变。“因此,我们在思考下一代移动互联网、下一代的信息社会应该是什么样的业态,往什么方向走。”马化腾说。

马化腾表示,从PC演进到手机,几乎每二十年终端的演变就会对整个信息业态、对经济业态带来重大转变,那么下一代的信息终端会是什么?会是汽车、穿戴设备,甚至AR、VR,未来的趋势可能是通过视网膜、脑电波来沟通,而不是现在的手机。“我相信,未来如果基于这种信息沟通的业态发生巨大转变的时候,整个经济社会将发生极大的变化。”

以下是演讲全文:

主持人:谢谢肖西·索瓦莱尼副首相先生,下面我们有请腾讯集团董事局主席马化腾先生演讲,大家欢迎。

马化腾:首先非常感谢给我这个机会,能够跟大家交流我们在互联网方面的进展。刚才嘉宾的分享让我也有很多启发,今天我是第二次来到世界互联网的论坛,有很多的感触。

今天我主要想谈三个方面的一些感受。

首先我想谈一下,我们互联网行业在中国的发展已经越来越超越本身这个行业的领域。我们看到互联网和实体经济各行各业之间的连接,各种连接已经是越来越成规模。比如说,我们在两年前的2013年,首先看到了互联网和金融方面的结合,大家提到互联网本身这个的新兴领域,和传统的金融领域的结合,诞生出了很多新兴的机会。

我们再看互联网和交通的结合,也看到越来越多的跟随着移动互联网发展而带来的变化,比如与传统交通领域的连接也是越来越剧烈。从滴滴、优步等运用,互联网和传统的交通这个领域的结合可以看出,移动互联网已经越来越多地改变人们的衣食住行的方方面面。这是我的一个很大的感受。

腾讯在这两三年发展过程中,因为这个趋势的发展我们调整了我们的战略。我们从微信、QQ这些大家最熟悉的应用入手,我们开发出了和传统行业各行各业的连接。我们从定位为“连接器”出发,希望能够和各行各业的传统实业能够有更多的发展。

第二个感想就是,我们看到互联网在人们很多生活方面,比如在经济以外,在社会的方方面面,已经有越来越多的影响。比如说,我们在微信里面,我们可以看到,移动互联网和公益的结合是非常多的。2006年的时候,在PC的互联网时代,我们就已经创造了公益的平台。但是我们也看到,在移动互联网的时代,我们可以通过社交网络和数千家的NGO组织连接。我们在这种公益的非盈利组织的连接方面,做出了大量的贡献。我们看到,通过我们微信的社交公益平台,可以帮助用户和公益组织进行连接,创造了大量的连接机会。

我们也看到在健康方面,在互联网和医疗健康领域有越来越多的广泛的结合机会。比如在乌镇,中国首家的互联网医院也是我们投资的一个公司所提供的这样一个服务。

第三点我想谈一下,就是说在未来我们很多人会思考说,你们的微信在这五年来非常成功,那么未来会有什么样的应用和产品能够颠覆微信呢?其实这个问题非常好。因为我们在PC互联网的时代,QQ已经是非常的流行。但是为什么会创造出一个新的和QQ非常类似,但是又具有颠覆性的这样一个产品呢?其实最大的根源是在于互联网信息终端的这种演变,所以我们在思考下一代移动互联网,下一代的信息社会应该是什么样的业态,往什么方向走。

我们在想在过去几十年里面,比如说上个世纪的60年代,从大型机到PC这个演变,仅仅是一个计算终端的变化会产生出相当多的机会。我们在大型机到PC,PC从单机运行到连接互联网,以及连接互联网的终端,从一个在桌面的PC演进到大家手中的手机,我们发现很有趣的现象,就是几乎是每隔20年,这个终端的演变就会对整个信息业态,甚至对整个经济的业态会产生一个重大转变。

我们在思考下一代的信息终端会是什么呢?会是汽车还是穿戴设备?比如说我们看到AR、VR这种增强现实技术和虚拟现实技术,我们可能未来戴个眼镜通过视网膜的透视,就可以跟人、服务、设备建立连接,不需要现在用手机,通过视网膜就可以沟通。这是我们现在看到这种未来的趋势,但是我们不知道这个是不是未来。我相信所有的人都会关注整个科技界的发展。甚至在未来我们可以想像,也许未来我们和信息的沟通是通过脑电波的方式,也许通过戴穿戴设备和你的脑电波就可以沟通。我相信,未来如果基于这种信息沟通的业态发生巨大转变,这个时候,我们整个经济社会会发生多大的变化。今天这个论坛,因为是谈到可持续发展,所以我特别关注我们未来信息社会和互联网这种连接。希望我的演讲能给大家带来一些启发,

谢谢!

无言的世界

未来也许 沟通不再依赖电话,交流不再依赖眼,嘴,耳,理解甚至不再依赖语言,文字。进入一个无言的世界。当我想与你沟通时,我的思维通过某种介质,传递到你的大脑中,你就能理解我的想法。人与人是在思维意识层次上的交流,是大脑与大脑的交流。省去思维意识到语言 语言到思维意识的转换。世界上不再需要语言。所有的动物,甚至植物相互都能进行精确的,无障碍交流。 人类的历史不再用文字记录,而直接能进入大脑的思维意识。 在某种层次上,人类的大脑与其他生物的大脑工作原理是一致的,可以理解相同的某种信号信息。在这种层次上,可以建立人与其它生物的沟通。 世界上不再有显示器,广播音响。街边的大型广告不在存在,取而代之的是一个思维意识发射器。所有通过的人都能感受到其发出的信息。 言语不是人类固有的,是人类依据自身发明的交流沟通的工具。如果言语只是一个工具,这一点被认同的话,那么,既然是工具,总是有可能会被替代的。如果一个工具不被替代,那也只是在一定的历史的,生产力的,技术的环境中不会被替代,如果这些都变化了,那么言语这个工具也将被替代。这一工具在一定的历史条件下十分有用。如果有更好的工具,言语可能会被替代。 心灵与心灵的直接沟通,酣畅淋漓。更直接,更准确。

那年夏天

那个夏天,我在街上漫步,心里一直在思念,思念着你。

那个夏天,我沿河泛舟,一直为我们的故事流泪,痛哭。

那个夏天,我画笔零乱,思绪万千,陷入深深的悲痛之中不能自持,泣不成声。

那个夏天,我怀着你的话语入眠,在漆黑的夜里,我一次次地梦到你笑容。

谁能告诉我

谁能理解我

当初,我的决定是那么的坚定。

而如今我的感受却是…

从此

那个夏天的夜晚,我停下了脚步,去仰望美丽而深蓝的夜空,去寻找那可爱的星星。

那个夏天的夜晚,我放下了双桨,去聆听潺潺的河水,和她一起歌唱

那个夏天的夜晚,我放下了画笔,静静地呆着,让自己变成了一幅图画,

那个夏天的夜晚,我不再入睡,整夜整夜地回忆和你一起的美好时光

我期待着清晨第一屡阳光拥抱着我,给我温暖。

我在等待,等待,我也只需等待。

但是,不久我就睡着了。

我进入了一个有你的梦乡。

我选择在梦中与你畅所欲言,没有人知道我是多么的从容。

我选择午夜里在你身边尽情欢笑,你不知道我有多么的轻松。

最后我选择带着那种,那种美妙的感觉面对现实的世界。

最后我选择了微笑,微笑着看你从我身边经过。

最后我选择独自一人做个诚实的自己,而不是在人群中掩饰自己。

今天,是一个美好夏日里的一天,你已经走进了我美好的幻想中。

明天,一样,直到永远……

带着这样的感觉我将变得坚强快乐直到永远。
我,我行吗?

忘记我们的过去,去过快乐的生活,
你,你能吗?

我想:如果我从来没有来到这个世界,没有经历我们的故事,那么我就从来没有活过。

我想:如果不是偶然之间听到你的歌声,我将永远不能从你那获得足够的勇气。

如果说这是我生活中的一部分,必定也是你生活中的一部分,但没有人相信。

可是,一旦我相信了,我的世界会有所不同。

那个夏天,就像四季中的任何一天,没什么不同。

我的故事也是如此的短暂、微不足道,但是我的感觉、我的回忆却是如此的绵长。

那个夏天,是如此的美好,但我必须努力,努力地忘记,因为现在已是深秋,冬天也将临近…..

最后送上我深深的祝愿

希望你能安稳的入睡,过上幸福的生活

就这样吧……

我们的未来

1、脑电波带来的第n次信息技术革命,彻底改变了人类传统的沟通方式。无言的交流。
2、重新定义人类。人类的进化,会从基因层面上,吸收其他物种的优秀基因,可以有选择地长出其他物种的器官。人类也不再千篇一律的相似,一个牛头马面的人不再罕见。满世界形形色色的人类,人类不再局限于两只手脚,一个脑袋,直立行走。也不再局限于陆地生活。那时人类将重新定义自己。那时人与人的区别,就像现在不同服装的区别。 人类可以通过基因制造出和目前各类电子设备功能相同的器官,如无线电收发器、显示器。 人类可以适应更高的温度,更低的寒冷。 数字化的人类,人类的生死,把一个人的思维意识记忆等数字化,人类的死亡也仅仅只是身体的报废。通过把数字化的意识记忆复制到新的躯体大脑中,满血复活。 一个人的消亡,是意识记忆的消亡。保存意识记忆的U盘丢失或损坏。把一个人的意识记忆的数字带到世界的另一端 起死回生。 人类指导下的有目的的进化,代替自然选择。人类设计师,生物在自然界缓慢进化。人类设计师可以快速设计出更优秀的自己。
3、交通
4、能源
5、政治
6、思想
7、外星生物
8、人类能否完全认知整个世界,把整个宇宙搞明白。 大道至简,我们的认知过程,总是从一个大的特定到一个小的特定。就如果洋葱,我们被包裹在最里层,想知道外面的宇宙。我们只有一层一层的向外认知。

Redis 为什么使用单进程单线程方式也这么快

Redis 采用的是基于内存的采用的是单进程单线程模型的 KV 数据库,由 C 语言编写。官方提供的数据是可以达到100000+的 qps。这个数据不比采用单进程多线程的同样基于内存的 KV 数据库 Memcached 差。 Redis 快的主要原因有: 完全基于内存; 数据结构简单,对数据操作也简单; 使用多路 I/O 复用模型; 第一、二点不细讲,主要围绕第三点采用多路 I/O 复用技术来展开。 多路 I/O 复用模型是利用 select、poll、epoll 可以同时监察多个流的 I/O 事件的能力,在空闲的时候,会把当前线程阻塞掉,当有一个或多个流有 I/O 事件时,就从阻塞态中唤醒,于是程序就会轮询一遍所有的流(epoll 是只轮询那些真正发出了事件的流),并且只依次顺序的处理就绪的流,这种做法就避免了大量的无用操作。这里“多路”指的是多个网络连接,“复用”指的是复用同一个线程。采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络 IO 的时间消耗),且 Redis 在内存中操作数据的速度非常快(内存内的操作不会成为这里的性能瓶颈),主要以上两点造就了 Redis 具有很高的吞吐量。 多路 I/O 复用模型 和 Memcached 不同,Redis 并没有直接使用 Libevent,而是自己完成了一个非常轻量级的对 select、epoll、evport、kqueue 这些通用的接口的实现。在不同的系统调用选用适合的接口,linux 下默认是 epoll。因为 Libevent 比较重,更通用,代码量也就很庞大,拥有很多 Redis 用不上的功能,Redis 为了追求“轻巧”并且去除依赖,就选择自己去封装了一套。 单进程单线程好处 代码更清晰,处理逻辑更简单 不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗 不存在多进程或者多线程导致的切换而消耗 CPU 单进程单线程弊端 无法发挥多核 CPU 性能,不过可以通过在单机开多个 Redis 实例来完善; 其他一些优秀的开源软件采用的模型 多进程单线程模型:Nginx 单进程多线程模型:Memcached

SQL Server 中WITH (NOLOCK)浅析

概念介绍 开发人员喜欢在SQL脚本中使用WITH(NOLOCK), WITH(NOLOCK)其实是表提示(table_hint)中的一种。它等同于 READUNCOMMITTED 。 具体的功能作用如下所示(摘自MSDN): 1: 指定允许脏读。不发布共享锁来阻止其他事务修改当前事务读取的数据,其他事务设置的排他锁不会阻碍当前事务读取锁定数据。允许脏读可能产生较多的并发操作,但其代价是读取以后会被其他事务回滚的数据修改。这可能会使您的事务出错,向用户显示从未提交过的数据,或者导致用户两次看到记录(或根本看不到记录)。有关脏读、不可重复读和幻读的详细信息,请参阅并发影响.aspx)。 2: READUNCOMMITTED 和 NOLOCK 提示仅适用于数据锁。所有查询(包括那些带有 READUNCOMMITTED 和 NOLOCK 提示的查询)都会在编译和执行过程中获取 Sch-S(架构稳定性)锁。因此,当并发事务持有表的 Sch-M(架构修改)锁时,将阻塞查询。例如,数据定义语言 (DDL) 操作在修改表的架构信息之前获取 Sch-M 锁。所有并发查询(包括那些使用 READUNCOMMITTED 或 NOLOCK 提示运行的查询)都会在尝试获取 Sch-S 锁时被阻塞。相反,持有 Sch-S 锁的查询将阻塞尝试获取 Sch-M 锁的并发事务。有关锁行为的详细信息,请参阅锁兼容性(数据库引擎).aspx)。 3: 不能为通过插入、更新或删除操作修改过的表指定 READUNCOMMITTED 和 NOLOCK。SQL Server 查询优化器忽略 FROM 子句中应用于 UPDATE 或 DELETE 语句的目标表的 READUNCOMMITTED 和 NOLOCK 提示。 功能与缺陷 使用WIHT(NOLOCK)有利也有弊,所以在决定使用之前,你一定需要了解清楚WITH(NOLOCK)的功能和缺陷,看其是否适合你的业务需求,不要觉得它能提升性能,稀里糊涂的就使用它。 1:使用WITH(NOLOCK)时查询不受其它排他锁阻塞 打开会话窗口1,执行下面脚本,不提交也不回滚事务,模拟事务真在执行过程当中

BEGIN TRAN

   UPDATE TEST SET NAME='Timmy' WHERE OBJECT_ID =1;

   --ROLLBACK



打开会话窗口2,执行下面脚本,你会发现执行结果一直查询不出来(其实才两条记录)。当前会话被阻塞了

SELECT * FROM TEST;

打开会话窗口3,执行下面脚本,查看阻塞情况,你会发现在会话2被会话1给阻塞了,会话2的等待类型为LCK\_M\_S:“当某任务正在等待获取共享锁时出现”

SELECT wt.blocking_session_id AS BlockingSessesionId

,sp.program_name                           AS ProgramName

,COALESCE(sp.LOGINAME, sp.nt_username)     AS HostName

,ec1.client\_net\_address                    AS ClientIpAddress

,db.name                                   AS DatabaseName

,wt.wait_type                              AS WaitType

,ec1.connect_time                          AS BlockingStartTime

,wt.WAIT\_DURATION\_MS/1000                  AS WaitDuration

,ec1.session_id                            AS BlockedSessionId

,h1.TEXT                                   AS BlockedSQLText

,h2.TEXT                                   AS BlockingSQLText

FROM sys.dm_tran_locks AS tl

INNER JOIN sys.databases db

ON db.database\_id = tl.resource\_database_id

INNER JOIN sys.dm_os_waiting_tasks AS wt

ON tl.lock\_owner\_address = wt.resource_address

INNER JOIN sys.dm_exec_connections ec1

ON ec1.session\_id = tl.request\_session_id

INNER JOIN sys.dm_exec_connections ec2

ON ec2.session\_id = wt.blocking\_session_id

LEFT OUTER JOIN master.dbo.sysprocesses sp

ON SP.spid = wt.blocking\_session\_id

CROSS APPLY sys.dm_exec_sql_text(ec1.most_recent_sql_handle) AS h1

CROSS APPLY sys.dm_exec_sql_text(ec2.most_recent_sql_handle) AS h2

[![clipboard](http://images.cnitblog.com/blog/73542/201408/301157577044817.png "clipboard")](http://images.cnitblog.com/blog/73542/201408/301204003457660.png)   此时查看会话1(会话1的会话ID为53,执行脚本1前,可以用SELECT  @@spid查看会话ID)的锁信息情况,你会发现表TEST(ObjId=1893581784)持有的锁信息如下所示   [![clipboard[1]](http://images.cnitblog.com/blog/73542/201408/301157597984445.png "clipboard[1]")](http://images.cnitblog.com/blog/73542/201408/301204032351645.png)  打开会话窗口4,执行下面脚本.你会发现查询结果很快就出来,会话4并不会被会话1阻塞。     SELECT * FROM TEST WITH(NOLOCK) 从上面模拟的这个小例子可以看出,正是由于加上WITH(NOLOCK)提示后,会话1中事务设置的排他锁不会阻碍当前事务读取锁定数据,所以会话4不会被阻塞,从而提升并发时查询性能。   2:WITH(NOLOCK) 不发布共享锁来阻止其他事务修改当前事务读取的数据,这个就不举例子了。 本质上WITH(NOLOCK)是通过减少锁和不受排它锁影响来减少阻塞,从而提高并发时的性能。所谓凡事有利也有弊,WITH(NOLOCK)在提升性能的同时,也会产生脏读现象。 如下所示,表TEST有两条记录,我准备更新OBJECT_ID=1的记录,此时事务既没有提交也没有回滚 [![clipboard[2]](http://images.cnitblog.com/blog/73542/201408/301158015956927.png "clipboard[2]")](http://images.cnitblog.com/blog/73542/201408/301204049076101.png)

BEGIN TRAN

UPDATE TEST SET NAME=’Timmy’ WHERE OBJECT_ID =1;

–ROLLBACK

此时另外一个会话使用WITH(NOLOCK)查到的记录为未提交的记录值 [clipboard[3]](http://images.cnitblog.com/blog/73542/201408/301204060011901.png) 假如由于某种原因,该事务回滚了,那么我们读取到的OBJECT_ID=1的记录就是一条脏数据。 脏读又称无效数据的读出,是指在数据库访问中,事务T1将某一值修改,然后事务T2读取该值,此后T1因为某种原因撤销对该值的修改,这就导致了T2所读取到的数据是无效的。 WITH(NOLOCK)使用场景 什么时候可以使用WITH(NOLOCK)? 什么时候不能使用WITH(NOLOCK),这个要视你系统业务情况,综合考虑性能情况与业务要求来决定是否使用WITH(NOLOCK), 例如涉及到金融或会计成本之类的系统,出现脏读那是要产生严重问题的。关键业务系统也要慎重考虑。大体来说一般有下面一些场景可以使用WITH(NOLOCK) 1: 基础数据表,这些表的数据很少变更。 2:历史数据表,这些表的数据很少变更。 3:业务允许脏读情况出现涉及的表。 4:数据量超大的表,出于性能考虑,而允许脏读。 另外一点就是不要滥用WITH(NOLOCK),我发现有个奇怪现象,很多开发知道WITH(NOLOCK),但是有不了解脏读,习惯性的使用WITH(NOLOCK)。 WITH(NOLOCK)与 NOLOCK区别 为了搞清楚WITH(NOLOCK)与NOLOCK的区别,我查了大量的资料,我们先看看下面三个SQL语句有啥区别 SELECT FROM TEST NOLOCK SELECT FROM TEST (NOLOCK); SELECT * FROM TEST WITH(NOLOCK); 上面的问题概括起来也就是说NOLOCK、(NOLOCK)、 WITH(NOLOCK)的区别: 1: NOLOCK这样的写法,其实NOLOCK其实只是别名的作用,而没有任何实质作用。所以不要粗心将(NOLOCK)写成NOLOCK 2:(NOLOCK)与WITH(NOLOCK)其实功能上是一样的。(NOLOCK)只是WITH(NOLOCK)的别名,但是在SQL Server 2008及以后版本中,(NOLOCK)不推荐使用了,”不借助 WITH 关键字指定表提示”的写法已经过时了。 具体参见MSDN http://msdn.microsoft.com/zh-cn/library/ms143729%28SQL.100%29.aspx 2.1 至于网上说WITH(NOLOCK)在SQL SERVER 2000不生效,我验证后发现完全是个谬论。 2.2 在使用链接服务器的SQL当中,(NOLOCK)不会生效,WITH(NOLOCK)才会生效。如下所示 [clipboard[4]](http://images.cnitblog.com/blog/73542/201408/301204068133785.png) 消息 4122,级别 16,状态 1,第 1 行 Remote table-valued function calls are not allowed. WITH(NOLOCK)会不会产生锁 很多人误以为使用了WITH(NOLOCK)后,数据库库不会产生任何锁。实质上,使用了WITH(NOLOCK)后,数据库依然对该表对象生成Sch-S(架构稳定性)锁以及DB类型的共享锁, 如下所示,可以在一个会话中查询一个大表,然后在另外一个会话中查看锁信息(也可以使用SQL Profile查看会话锁信息) 不使用WTIH(NOLOCK) [clipboard[5]](http://images.cnitblog.com/blog/73542/201408/301204078603599.png) 使用WITH(NOLOCK) [clipboard[6]](http://images.cnitblog.com/blog/73542/201408/301204088769183.png) 从上可以看出使用WITH(NOLOCK)后,数据库并不是不生成相关锁。 对比可以发现使用WITH(NOLOCK)后,数据库只会生成DB类型的共享锁、以及TAB类型的架构稳定性锁. 另外,使用WITH(NOLOCK)并不是说就不会被其它会话阻塞,依然可能会产生Schema Change Blocking 会话1:执行下面SQL语句,暂时不提交,模拟事务正在执行

BEGIN TRAN

ALTER TABLE TEST ADD Grade VARCHAR(10) ;

会话2:执行下面语句,你会发现会话被阻塞,截图如下所示。

SELECT * FROM TEST WITH(NOLOCK)

image

作者:潇湘隐者

出处:http://www.cnblogs.com/kerrycode/

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.