如何修改thread 为public与private或private

请教一个线程同步的问题
来源:csdn
【有如下代码:
按我的理解 已经锁住了 那么x 的值应该是从70、40、10、-20、-50、-80 这么变化。但实际运行结果大多数都是
Thread-B :当前foo对象的x值= 70
Thread-B :当前foo对象的x值= 40
Thread-A :当前foo对象的x值= 70
Thread-B :当前foo对象的x值= 10
Thread-A :当前foo对象的x值= 40
Thread-A :当前foo对象的x值= 10
两个线程都改变了x的值 怎么会出现两个线程中的x值会是一样的,请问哪里出了问题,该如何修改代码?谢谢!】
codingjoy:
程序有2处错误:
1.锁对象必须为同一个对象,这样才能锁住啊,而this表示当前对象,显然是不同的,可以改为:
synchronized("锁")
2.想要x被两个对象一起改变,需要设置为static共享:
int x = 100;
codingjoy:
抱歉,第2个忘了改过来了:
private static int x = 100;
感谢您的回答,按照你的步骤的确可以解决这个问题,但有一个新问题,我试着把synchronized代码快放到Foo类中的fix方法,结果就不对了
void fix(int y) {
synchronized ("lock") {
运行结果:Thread-A :当前foo对象的x值= 40
Thread-B :当前foo对象的x值= 40
Thread-B :当前foo对象的x值= -20
Thread-A :当前foo对象的x值= -20
Thread-A :当前foo对象的x值= -80
Thread-B :当前foo对象的x值= -80
请教原因是什么 谢谢!
public class ThreadDemo extends Thread {
private Foo foo =Foo.getInstance();
public static void main(String[] args) {
Thread ta = new ThreadDemo("Thread-A");
Thread tb = new ThreadDemo("Thread-B");
ta.start();
tb.start();
public ThreadDemo(String name){
super(name);
public void run() {
for (int i = 0; i & 3; i++) {
synchronized(foo){
this.fix(30);
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println(Thread.currentThread().getName() + " :当前foo对象的x值= " + foo.getX());
public void fix(int y) {
foo.fix(y);
class Foo{
int x = 100;
private static Foo fool=new Foo();
private Foo(){
public static Foo getInstance() {
int getX() {
void fix(int y) {
package com.madhouse.thread04;
public class ThreadDemo extends Thread {
private Foo foo = new Foo();
public static void main(String[] args) {
Thread ta = new ThreadDemo("Thread-A");
Thread tb = new ThreadDemo("Thread-B");
ta.start();
tb.start();
public ThreadDemo(String name) {
super(name);
public void run() {
for (int i = 0; i & 3; i++) {
synchronized (ThreadDemo.class) {
this.fix(30);
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println(Thread.currentThread().getName() + " :当前foo对象的x值= " + foo.getX());
public void fix(int y) {
foo.fix(y);
class Foo {
private static int x = 100;
public int getX() {
public void fix(int y) {
最后其实是一个同步锁的问题,你这里写的事synchronized(this)是不对的,这个只是锁住对象,但是ta和tb是两个不同的对象,所以锁不会生效,这里应该改成synchronized (ThreadDemo.class),锁住字节码,不管你创建多少个对象,他们的字节码是相同的,才会进行同步
看了一下四楼的方法也是也是可以的,在Foo类里面添加了一个静态工厂,然后在类里面创建一个静态类,使得foo实例对象是一个唯一,使得锁资源同步,进而让你的线程进行同步。
感谢您的回答,按照你的步骤的确可以解决这个问题,但有一个新问题,我试着把synchronized代码快放到Foo类中的fix方法,结果就不对了
显然不对啊,因为每次去执行代码的时候,两个线程中的foo对象都是不一样的,锁不同步线程怎么同步
解决的方法就是使用四楼的方法,或者是你直接创建Foo对象就private static Foo foo = new Foo();这么创建,就可以了
codingjoy:
因为Synchronized同步代码块只有在run方法中才能锁定代码,你的写法相当于没有加锁的情况。
免责声明:本站部分内容、图片、文字、视频等来自于互联网,仅供大家学习与交流。相关内容如涉嫌侵犯您的知识产权或其他合法权益,请向本站发送有效通知,我们会及时处理。反馈邮箱&&&&。
学生服务号
在线咨询,奖学金返现,名师点评,等你来互动&p&别光收藏啊亲,点个赞吧!&/p&&img src=&/v2-ae6cc22e894cd738f3d58_b.png& data-rawwidth=&482& data-rawheight=&94& class=&origin_image zh-lightbox-thumb& width=&482& data-original=&/v2-ae6cc22e894cd738f3d58_r.png&&&p&&br&&/p&&p&收藏比赞多两倍,你们这样做真的是大丈夫吗TAT。&/p&&p&&a href=&/zhi/people/097600& class=&internal&&值乎 - 说点儿有用的&/a& (来值乎问我吧)&/p&&p&&b&》》》》》》&/b&&/p&&p&&b&距离发帖到现在(),已经有8位同学发来了感谢信,分别来自阿里巴巴(3人),蚂蚁金服(2人)百度,美团,蘑菇街。都是校招的同学。各位加油 :),我相信会有更多的人从这份答案中获得帮助。&/b&&/p&&p&&b&》》》》》&/b&&/p&&p&&br&&/p&&p&&br&&/p&&p&============================以下正文===================================&/p&&p&很荣幸的今年通过了阿里巴巴的实习生招聘!&/p&&p&我把我看过的书罗列一下吧!&/p&&ul&&li&《java核心技术:卷一》,这个是我入门java的时候看的,非常适合新手!&/li&&li&《java设计模式》这本书虽然是个外国人写的,但是感觉不是很好。评价一般。学习设计模式的时候我一般都看大牛的博客。&/li&&li&《深入理解jvm虚拟机》 这本书不用多说,业界非常非常好的一本书!多看几遍,每一遍都有很多收获 &/li&&li&《深入分析java web 技术内幕》 &a class=&member_mention& href=&///people/1a2988ddbcba60b97bb2579e& data-hash=&1a2988ddbcba60b97bb2579e& data-hovercard=&p$b$1a2988ddbcba60b97bb2579e&&@君山&/a& 山哥,竟然还能@你出来!(不得不说,这本说在各个方面都非常优秀,不愧是偶像写的书!还求山哥多多照顾。嘿嘿&/li&&li&《Spring技术内幕》在spring源码讲解方面,个人感觉非常不错。能够深入理解内部机制,但是需要多看几遍&/li&&li&《编程之美》业界翘楚,在算法方面终结的非常好,题目也非常有代表性&/li&&li&《剑指offer》不用多说,和上面一样,可以锻炼一些算法能力&/li&&li&《java编程思想》传说是java行业内的神书,但是目前表示还处于一知半解状态&/li&&li&《Hadoop技术内幕》这个可以pass掉,学习hadoop的时候看的&/li&&li&《TCP/IP详解,卷一:协议》可以对tcp有更加深刻的认识&/li&&li&《java网络编程》,不是很好,将就可以。学学api还是可以的&/li&&li&《大型网站技术架构》 &a class=&member_mention& href=&///people/bd5d5dc0b0& data-hash=&bd5d5dc0b0& data-hovercard=&p$b$bd5d5dc0b0&&@李智慧&/a&
在大型web架构方方面面简直膜拜,&/li&&li&------------------今天又想起一些------------------------&/li&&li&《分布式java应用:基础与实践》这个是毕玄大大写的书,非常不错哦&/li&&li&《how tomcat works》在讲解tomcat内部原理方面,个人觉得是非常不错的书!等级又要上升一个档次&/li&&li&《java并发编程实战》对java并发方面,讲得还算不错的书籍&/li&&li&当然还有一些杂七杂八的书(走了不少弯路,你懂的!),我就不列出来了,上诉都是笔者认为非常不错的书籍。&/li&&/ul&&p&最近正在看《算法导论》,和《算法》,md,其实我也想成为算法狗&/p&&img src=&/487ef0ff429c5e40b37d4d_b.jpg& data-rawwidth=&105& data-rawheight=&107& class=&content_image& width=&105&&&p&&br&&/p&&p&当然,上面这些书我表示只懂50%,惭愧。不能完全吸收大牛的精髓啊!&/p&&ol&&li&其他的,数据结构,计算机网络,操作系统,数据库都是平时学习的课本,数据库做项目的时候实践一下!先学习基础,在继续深入&br&&/li&&/ol&&ul&&li&数据结构不用多说,什么B树啊、红黑树啊、栈、队列等等,至少保证能够清楚的说出来,说出他们的原理!具体的应用场景是什么啊!,当然能写出来更好(手写btree会死人,其实还有一个数据结构叫skiplist,逃&br&&/li&&li&算法的话,建议题目多看看算法题目,或者把leetcode上的算法题目刷一遍(目前本人只AC的几道题,惭愧。知道该资源的时候已经晚了,现在在努力刷刷刷)。另外可以看看july的博客,&a href=&///?target=http%3A//blog.csdn.net/v_JULY_v& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&结构之法 算法之道&i class=&icon-external&&&/i&&/a&。目前july已经有自己的网站了,&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&七月问答 ─ 面试·算法·机器学习快速问答平台&i class=&icon-external&&&/i&&/a& .本人是july的忠实粉丝,在此感谢 &a class=&member_mention& href=&///people/2f780d2804bcea34d94a7f& data-hash=&2f780d2804bcea34d94a7f& data-hovercard=&p$b$2f780d2804bcea34d94a7f&&@July&/a& ,对我在算法方面有很大的帮助,谢谢&/li&&li&数据库就更多了,索引(结合B+tree,两个引擎的不同之处,推荐文章:&a href=&///?target=http%3A///24006/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&MySQL索引背后的数据结构及算法原理&i class=&icon-external&&&/i&&/a&)、存储过程、引擎、触发器,事务 &a class=&member_mention& href=&///people/d3a7e63ab4adffd7cd9de& data-hash=&d3a7e63ab4adffd7cd9de& data-hovercard=&p$b$d3a7e63ab4adffd7cd9de&&@沈询&/a&
实力打广告,还有沈大大的视频和博客(&a href=&///?target=http%3A///whisperxd& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/whisperxd&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&)微博里面有链接哦,ACID等等等等,SQL必须是要熟练的,写SQL的时候多考虑考虑效率,想想还有没有其他的语句能完成这个任务,在哪方面提高了,为何呢?数据库引擎要了解一下,分布式数据库也是,什么主从分离啊,分库、分表、分区啊,这些常见的解决方案&br&&/li&&li&操作系统我属于渣渣,个人就知道一些进程、线程、一些调度算法之类的~~~~(逃&/li&&li&计算机网络如果是研发岗位得话,TCP/IP这一张需要好好看看,HTTP协议不用多说,常见的状态码等等,一次http请求有哪些过程,这个要理解透彻&/li&&/ul&&p&java:基础非常重要,当然也要深入理解原理,什么JVM,JMM,Classloader,还有一些常见类的源码,自己可以试着分析一遍,现在让你说出LinkedList的内部实现你能不能说出来,HashMap不用多说了,80%的面试都会问到。还有重要的,多线程,并发,网络,IO。这些都是要看看看看的!自己多思考!还有楼主说的那些框架,说实话,你要是基础好了,这些都是能够学得很快的,很多问题,看一下源码什么都就懂了!特别是spring的源码要好好看看,里面的架构设计得非常好!各种设计模式满天飞!&/p&&p&另外,linux要了解一下,至少要回基本命令吧,脚本语言可以学习一个。比如py!前端要了解一下.&/p&&p&&br&&/p&&p&关于如何看书:两个字,&b&思考&/b&!三个字,&b&不要脸的思考!…………,书不在多,在于精,选书要慎重!反正题主一本叫做“王者归来”的书,我看见名字我就不想看!&/b&&/p&&p&除了这些然后呢:每天刷几遍CSDN,&b&平常可以上上oj刷刷题目,国内的牛客网(&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&牛客网-专业IT笔试面试备考平台,最全求职题库,全面提升IT编程能力&i class=&icon-external&&&/i&&/a&)非常不错,也可以去leetcode上面把题目刷一遍哦。&/b&关注一些好的社区(我一般混迹在CSDN高性能javaweb板块),睡觉之前看微信公众号,当然是技术方面的!推送的文章都挺不错的!&/p&&p&做程序员个人觉得眼界很重要,就算这不是你的领域,但是你也要知道一点,所以经常关注其他的新技术是非常重要的!平常多接触一点开源技术,多上上github,争取能在github上面贡献一点自己的东西!&/p&&p&&br&&/p&&p&然后,多看看别人的技术博客。思考自己!&/p&&p&&b&这是我学习路程的经验和一些资料总结,大家可以看看,链接——&&a href=&///?target=http%3A//yaccc.0xff.ws//%25E6%258A%%259C%25AF%25E6%E5%25AD%2597/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&技术文字 | 「浮生若梦」&i class=&icon-external&&&/i&&/a&可以再评论箱中评论,我会一一回复(下面贴一部分)&/b&&/p&&p&&b&我的经验与分享&/b&&/p&&p&关于我的学习方法和面试经验的分享&/p&&blockquote&下面是我写给我现在带的学弟在学习路线上的一些建议,大家可以参考一下!希望能够帮助到大家,有写得不太合适的地方,&b&还请大家指正&/b&!&/blockquote&&p&一、基础&/p&&ul&&li&主要看《java核心技术:卷一》的重点章节&/li&&li&掌握java常用技术,io、多线程、反射、常用集合框架&/li&&li&数据结构看一遍,作用至少要清楚。如hash冲突解决办法,常用排序算法的应用场景和空间/时间复杂度等&/li&&li&数据库,能看懂ER关系,熟悉数据库三大范式,熟练常用SQL语句&/li&&li&可以掌握一点java网络编程方面的知识,对tcp/ip有初步的认识&/li&&li&课程不能落下,专业课程(计算机网络,操作系统,数据结构,数据库,计算机组成原理)要好好学。&b&不要挂科&/b&&/li&&li&学习servlet/jsp,至少能写简单的图书管理系统,熟悉核心api&/li&&li&了解前后端交互方式,ajax、json/xml至少知道,会使用jquery,html,css,js最好&/li&&/ul&&p&二、提高&/p&&ul&&li&学习后端框架,SpringMVC/Struts2、Mybatis、Spring,熟悉MVC模式,知道三层架构及每一层之间的关系&/li&&li&会用chrome/firefox浏览器分析http请求,解决、定位问题。知道常用http状态码,了解TCP/IP,知道一次http请求发生了哪些事情&/li&&li&学习设计模式,23种设计模式都需要了解一点,熟悉常用的如:单例,工厂,模板,适配器,代理,责任链,构造器,装饰器,迭代器,策略,命令,观察者,外观,享元。理解他们的好处,可以找找在其他框架哪些用了这些设计模式。&/li&&li&可以适当的看一些源码,Spring的源码可以着重的看一下。tomcat可以从源码的角度看看tomcat的整体设计方案,一次请求tomcat如何处理,servlet在tomcat中的加载,编译过程。tomcat自定义的ClassLoader有什么作用。&/li&&li&会设计数据库,多对多,一对多,迭代,会写复杂的SQL,了解SQL调优,会写存储过程,触发器。熟悉索引的使用,了解视图。去了解一些常用NOSQL,比如Redis/mongodb&/li&&li&学习Linux,熟悉基本命令,学习一种脚本语言(shell/python)。会在linux下写脚本开发&/li&&/ul&&p&三、深入&/p&&ul&&li&算法,可以看看编程之美,算法导论。学习一些算法相关的知识&/li&&li&深入java:理解JVM,JMM,Classloader,GC算法,GC收集器。学会定位OOM问题所在。&/li&&li&源码分析,常用集合类如:Hashmap,Arraylist,linkedList,HashSet,ConcurrentHashmap等的源码分析,要非常熟悉java集合框架设计。最好能够分析一种框架源码,比如Spring&/li&&li&深入数据库,理解至少两种数据库引擎(Inndb/Mysiam)的差异性,熟悉索引的内部数据结构,熟悉常见的索引方式(Btree,hash),和索引类型(unique,full text,normal),会使用explain分析SQL语句,会优化SQL语句,熟悉一种NOSQL,知道内部实现原理(内部数据结构,在算法优化,内部机制),掌握分布式数据库的知识,分表,分库,分区,分布式事务等,可以学习一个数据库中间件(TDDL/COBAR)&/li&&li&架构设计,看看大型高流量/高并发的网站设计(CDN,异步,前端优化),了解缓存(分布式memcached/常用本地缓存),搜索引擎(lucene/solr/elasticSearch),分布式(负载均衡/分布式数据库/分布式应用集群),消息队列(ActiveMQ/Rabbitmq)在大型网站中的作用&/li&&li&还有一些其他的知识,如RPC框架,分布式服务架构,SOA,REST架构等等&/li&&li&可以接触一些云计算方面的知识,如Hadoop/Storm/Spark等,要是再能接触一点机器学习就更棒啦(反正我是没有,听着就吓人,跑个kmeans算法都要弄死人,(&i&+﹏+&/i&)逃&br&&/li&&/ul&&blockquote&那么除了看书籍之外还有哪些学习方式呢?下面说说其他的学习方式&/blockquote&&ol&&li&参加开源项目/自己写点东西放在GITHUB上面,笔者我写了一个自己的MVC框架(Dreamvc),github地址-&&a href=&///?target=https%3A///Yaccc& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Yaccc (Zhaodong Xie) · GitHub&i class=&icon-external&&&/i&&/a&.另外可以去fork下其他人的开源项目,如果感兴趣就贡献一下,不感兴趣就学习别人的编码风格,去其糟粕!&/li&&li&多看看大牛的博客,这里我列举一些&b&大牛&/b&的博客&/li&&/ol&&ul&&li&&a href=&///?target=http%3A//blog.csdn.net/v_JULY_v& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&结构之法,算法之道,july大神的博客&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A//blog.csdn.net/xieyuooo& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&xieyuooo的专栏,《java特种兵作者》&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///u/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&@兰亭风雨人任平生&i class=&icon-external&&&/i&&/a&|&a href=&///?target=http%3A//blog.csdn.net/ns_code%3Fviewmode%3Dlist& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&兰亭风雨的专栏, 目前人在腾讯,博客都写得很好,很深入!受益匪浅&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&机会永远留给有准备的人,享受编程和技术所带来的快乐(目前人在VMware)&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A//blog.csdn.net/yangbutao%3Fviewmode%3Dlist& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&分布式架构、大数据、机器学习、搜索、推荐、广告&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A//irfen.me/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&赵伊凡's Blog,涉及各个领域&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&搜索技术博客-淘宝,搜索团队的blog&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&廖雪峰的官方网站,python就是跟着他学的&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A//www.inbreak.net/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&空虚浪子心的灵魂,java安全,alibaba的安全专家&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A//jm-/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&阿里中间件团队博客,咱事业部的中间件,很厉害 (???ε ???)&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&服务器运维与网站架构|Linux运维|X研究,里面提到的技术都碉堡,博客质量也高。曾经memcached在哪里学到了很多&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A//.cn/s/blog_693fvibt.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&淘宝沈询_WhisperXD的博客,TDDL作者,ONS消息服务负责人,差点就跟着沈沈混了(o?????o)??° (?? `?) (???ε ???),在数据库方面强烈推荐&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///study_v2/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&跟阿铭学Linux&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&刘未鹏 | MIND HACKS,这个大牛简直不要太叼&i class=&icon-external&&&/i&&/a&&/li&&/ul&&p&&br&&/p&&ol&&li&多上一些高质量的网站,下面我列举一些,&b&每天&/b&都最好抽时间去走一遍&/li&&/ol&&ul&&li&&a href=&///?target=https%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub,程序员不知道这个可以考虑转行了(?? `?)&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A//blog.csdn.net/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CSDN.中国最大的it交流网站&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&cnblogs,还是有很多资料的,里面也有大神&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Stack Overflow,问答网站,回答质量高&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=https%3A///problemset/algorithms/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&LeetCode OJ,刷算法的oj&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&V2EX,一个关于分享和探索的地方。&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ITeye,前身为JavaEye。&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&并发编程网,致力于促进并发编程研究和传播的垂直性技术网站。&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///developerworks/cn/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&IBM developerWorks 中国,里面有高质量的文章&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A//www.oschina.net/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&开源中国,可以关注一些开源动态&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&7月算法,july的在线教育项目,主要是算法方面&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A//q.com/cn/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&InfoQ,促进软件开发领域知识与创新的传播&i class=&icon-external&&&/i&&/a&&/li&&/ul&&p&&br&&/p&&ol&&li&关注一些技术类的微信号(晚上睡觉或者平时杂碎时间看)&a href=&/people/Michael282694& class=&internal&&@Michael282694的知乎&/a&|&a href=&///?target=http%3A///post/ji-zhu-lei-xiang-guan-wei-xin-gong-zhong-zhang-hao-he-wang-zhan& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&cindy总结的 (???ε ???),这是原地址&i class=&icon-external&&&/i&&/a&&/li&&/ol&&p&&br&&/p&&p&最后送一句话,越努力,越幸运!&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&要私信我的同学,请先看这篇文章,谢谢!&a href=&/p/& class=&internal&&EchoQME只为最好的你 - 谢照东的文章 - 知乎专栏&/a&&/p&&p&&a href=&///?target=http%3A///r/1EX27jrEKGdXrX6N9xDG& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/r/1EX27jr&/span&&span class=&invisible&&EKGdXrX6N9xDG&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& (二维码自动识别)&/p&&p&“十年饮冰 难凉热血”,欢迎关注,推送互联网技术,也许是个自媒体. : )&/p&&p&PS:转载须经本人同意,并支付报酬&/p&
别光收藏啊亲,点个赞吧! 收藏比赞多两倍,你们这样做真的是大丈夫吗TAT。 (来值乎问我吧)》》》》》》距离发帖到现在(),已经有8位同学发来了感谢信,分别来自阿里巴巴(3人),蚂蚁金服(2人)百度,美团,蘑菇街。都是校招的同学。…
&img src=&/9317fae0ce2df924bbf8b_b.jpg& data-rawwidth=&600& data-rawheight=&337& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/9317fae0ce2df924bbf8b_r.jpg&&&p&用 Evernote 5年多了,从一个小白用户到现在有一万多条笔记,我把自己在学习,生活和工作中的点滴积累全都存放在里面。大约也是5年前,我第一次在知乎回答问题,慢慢成为知乎 &a href=&/topic/& class=&internal&&Evernote 话题&/a&下的最佳回答者,收到了很多知乎朋友的点赞。&/p&&p&每天会有很多人在知乎上分享他们的知识和经验,我喜欢看知乎,在这里收获了成长,也非常愿意将我使用 Evernote 过程中总结的方法在这里分享给大家。下面是 10 个印象笔记最常见用法。如果你曾听说过印象笔记,但没有真正用起来。或者你也是一个深度用户,想推荐一些印象笔记入门教程给身边的朋友,可以继续往下看。&/p&&ul&&li&印象笔记 ( Evernote ) 是什么?&br&&/li&&/ul&&p&&br&&/p&&p&“Evernote 是一款跨平台,有免费和付费版本,帮助你整理归档的云笔记软件,公司总部位于硅谷红木城。” 这是维基百科上 &a href=&/?target=https%3A//en.wikipedia.org/wiki/Evernote& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Evernote&i class=&icon-external&&&/i&&/a& 词条解释的第一句话。&/p&&p&补充信息:Evernote 2012年进入中国,取名印象笔记,并在中国设立独立的域名和服务。由于众所周知的原因,我在2013年也把 Evernote 国际版帐户里的笔记迁移到了国内印象笔记。目前 Evernoe 在全球有 2 亿用户,中国有2000万用户。&/p&&h2&&b&一 随时随地,记录一切&/b&&/h2&&p&相比普通的手机备忘录或日记软件,在印象笔记中写笔记除了新建文本,还可以添加任意附件,复选框,项目和数字编号,相册照片,拍照或扫描,录音,所有类型的文件信息都可以放在一条笔记中,并且附件Word和Excel打开是可以直接编辑同步的。&/p&&p&&br&&/p&&img src=&/d2af8bcfada_b.png& data-rawwidth=&394& data-rawheight=&361& class=&content_image& width=&394&&&p&&b&比如&/b&:在开会的时候,你可以在一条笔记中记下所有信息:一边打字,一边同时录音,拍照,并插入会议相关的 PDF,Excel 附件和勾选框代办事项。&/p&&p&视频教程 一&/p&&a class=&video-box& href=&/?target=https%3A///x/cover/fw/fw.html& target=&_blank& data-video-id=&363008& data-video-playable=&true& data-name=&1-随时随地记录一切-印象笔记快速入门_腾讯视频& data-poster=&/v2-38048fdf34facd1cc62de.jpg& data-lens-id=&&&
&img class=&thumbnail& src=&/v2-38048fdf34facd1cc62de.jpg&&&span class=&content&&
&span class=&title&&1-随时随地记录一切-印象笔记快速入门_腾讯视频&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&/x/cover/fw/fw.html&/span&
&p&&br&&/p&&h2&&b&二、收藏微信文章和聊天记录&/b&&/h2&&p&微信收藏只能在手机上查看,很不方便。有时要找聊天记录中一个非常重要的图片和附件会显示碎片看不到。印象笔记可以很方便地收藏微信朋友圈文章和聊天记录,并同步到你的手机和电脑印象笔记。我的印象笔记中有3000多条通过微信保存的笔记,平时在微信里看到有用和有意思的东西,随手存到印象笔记,之后在手机和电脑上都可以随时查看和编辑。&/p&&p&&br&&/p&&ul&&li&关注微信公众号“我的印象笔记” (扫描下面的二维码),按提示绑定印象笔记帐户&br&&a href=&/?target=http%3A///q/nHW28QbmaAYRxjK_s13Y& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/q/nHW28Qb&/span&&span class=&invisible&&maAYRxjK_s13Y&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& (二维码自动识别)&/li&&li&收藏微信网页文章&br&在微信中打开文章,点击右上角三个点,向左滑到,找到大象图标&br&&/li&&/ul&&img src=&/bdb68d02af6_b.png& data-rawwidth=&320& data-rawheight=&498& class=&content_image& width=&320&&&p&&br&&/p&&ul&&li&收藏微信聊天记录&br&长按消息,选“更多”,之后勾选所有你要保存的消息,再点右下角的【ooo】,选大象图标,就会永久保存,再也不同担心微信清缓存了。&/li&&/ul&&p&参考:&a href=&/question//answer/& class=&internal&&微信朋友圈文章和聊天记录如何保存到印象笔记? - 余知兮的回答&/a&&/p&&p&&br&&/p&&p&&br&&/p&&a class=&video-box& href=&/?target=https%3A///x/cover/o/o.html& target=&_blank& data-video-id=&060160& data-video-playable=&true& data-name=&微信干货永久珍藏-印象笔记快速入门-02_腾讯视频& data-poster=&/v2-ba74764ecfa6a.jpg& data-lens-id=&&&
&img class=&thumbnail& src=&/v2-ba74764ecfa6a.jpg&&&span class=&content&&
&span class=&title&&微信干货永久珍藏-印象笔记快速入门-02_腾讯视频&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&/x/cover/o/o.html&/span&
&p&&br&&/p&&h2&&b&三、一键保存网页&/b&&/h2&&p&&br&&/p&&p&手机和电脑浏览器都可以用印象笔记剪藏插件一键保存完整网页到印象笔记。&/p&&ul&&li&手机浏览器支持iPhone,iPad和安卓手机浏览器 &br&(手机上安装&a href=&/?target=https%3A///%3Futm_source%3Dzhihuzhuanlan%26utm_medium%3Dutm_campaign%3Dhome_zhihu& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&印象笔记app&i class=&icon-external&&&/i&&/a&后,按照下面的步骤就可以开启剪藏)&br&&/li&&/ul&&p&&br&&/p&&img src=&/62d0e6ec0efbd_b.png& data-rawwidth=&320& data-rawheight=&424& class=&content_image& width=&320&&&p&&br&&/p&&ul&&li&电脑浏览器剪藏功能更强大,可以一键去广告,智能保存有用的内容。&br&&a href=&/?target=https%3A///webclipper/install/%3Futm_source%3Dzhuanlan%26utm_medium%3Dutm_campaign%3Dclipper_zhihu& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&下载剪藏插件 Web Clipper &i class=&icon-external&&&/i&&/a&(支持Chrome,IE,Firefox,Safari,QQ,猎豹, 360极速/安全浏览器)&/li&&/ul&&p&参考:&a href=&/question//answer/& class=&internal&&如何下载印象笔记剪藏浏览器插件 Evernote Web Clipper ? - 余知兮的回答&/a&&/p&&p&&br&&/p&&a class=&video-box& href=&/?target=https%3A///x/cover/m/m.html& target=&_blank& data-video-id=&957888& data-video-playable=&true& data-name=&网页资料快速保存-印象笔记快速入门指南-3_腾讯视频& data-poster=&/v2-5e7a9e615fe87407e6dfd0adf04913ce.jpg& data-lens-id=&&&
&img class=&thumbnail& src=&/v2-5e7a9e615fe87407e6dfd0adf04913ce.jpg&&&span class=&content&&
&span class=&title&&网页资料快速保存-印象笔记快速入门指南-3_腾讯视频&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&/x/cover/m/m.html&/span&
&p&&br&&/p&&h2&&b&四、保存邮件&/b&&/h2&&p&邮箱需要联网才能搜索,且邮件附件不能搜索。把重要的邮件转发邮件到你的印象笔记私有邮箱地址 (类似 &username&.xxxxx@) 就可以保存完整邮件到印象笔记,离线查看和编辑。&/p&&p&查看印象笔记帐户的私有邮箱地址方法:&/p&&ul&&li&网页版:&a href=&/?target=https%3A///Settings.action& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&设置---帐户一览&i class=&icon-external&&&/i&&/a& 最下面 &br&&/li&&/ul&&img src=&/3d79d337750aac1b3ebd43d198dc0f8f_b.png& data-rawwidth=&488& data-rawheight=&93& class=&origin_image zh-lightbox-thumb& width=&488& data-original=&/3d79d337750aac1b3ebd43d198dc0f8f_r.png&&&p&&br&&/p&&ul&&li&Windows: 菜单栏&工具&帐户信息;&/li&&li&Mac: 主界面左上方点击用户名,进入帐户信息;&/li&&li&Android: 设置&帐户信息&私有邮箱地址;&/li&&li&iPhone, iPad 点击主界面左上角用户名&通用设置&私有邮箱地址;&/li&&/ul&&p&&br&&/p&&p&其他高级用法:在邮件标题后面使用@ 和 # 可以保存邮件到指定的笔记本并添加标签&/p&&img src=&/debefe7ee97_b.png& data-rawwidth=&405& data-rawheight=&207& class=&content_image& width=&405&&&p&例如,邮件标题:&b&煎饼果子 @烹饪 #菜谱 #素食。&/b&邮件会保存到烹饪笔记本,标题为煎饼果子,并加上标签菜谱和素食。&b&(注意:这个方法只能添加印象笔记账号中已有标签和笔记本)&/b&&/p&&p&参考:&a href=&/question//answer/& class=&internal&&如何保存邮件到印象笔记 Evernote? - 余知兮的回答&/a& &/p&&p&&br&&/p&&p&&br&&/p&&a class=&video-box& href=&/?target=https%3A///x/cover/q0526jjo9b4/q0526jjo9b4.html& target=&_blank& data-video-id=&172864& data-video-playable=&true& data-name=&重要邮件一键归档-印象笔记快速入门-5_腾讯视频& data-poster=&/v2-dc45ef4330e1bdadc7839b.jpg& data-lens-id=&&&
&img class=&thumbnail& src=&/v2-dc45ef4330e1bdadc7839b.jpg&&&span class=&content&&
&span class=&title&&重要邮件一键归档-印象笔记快速入门-5_腾讯视频&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&/x/cover/q0526jjo9b4/q0526jjo9b4.html&/span&
&p&&br&&/p&&h2&&b&五、多设备同步&/b&&/h2&&p&我在自己的手机,家里电脑,公司电脑还有Apple Watch上都安装和登录了印象笔记,工作中很少用Office文档,我都是直接写在印象笔记里面,微信聊天记录里面的图片文件,还有电脑桌面上重要的附件也会存到印象笔记。&/p&&p&因为我所有的手机和电脑上印象笔记都是随时同步的,上下班路上包里也不用背电脑。在公司公用的测试电脑上可以登录网页版即时同步,重要的笔记本在手机上会设置成离线笔记本,即使在地铁上网络不好,也可以随时查看编辑笔记,真的是随时随地移动办公。&/p&&p&印象笔记支持几乎所有我用过和没用过的设备:&br&&/p&&ul&&li&手机:苹果,安卓,Windows Phone, Blackberry&/li&&li&电脑:Windows, Mac OS X, Linux&br&&/li&&li&手表:Apple Watch,Pebble, Android Watch.&br&&/li&&/ul&&p&&br&&/p&&img src=&/cd6e25cdbd8090bcac8041_b.png& data-rawwidth=&728& data-rawheight=&298& class=&origin_image zh-lightbox-thumb& width=&728& data-original=&/cd6e25cdbd8090bcac8041_r.png&&&h2&&b&六、强大的全局搜索 (文字,图片,附件)&/b&&/h2&&p&印象笔记可以搜索到图片和附件里面的文字,因为 Evernote 团队最开始是靠给苹果做图片 OCR 文字识别起家的一个外包公司,目前国内只有印象笔记有这个技术,国内其他云笔记和云盘都做不到。除此之外印象笔记还可以通过高级搜索语法来根据创建日期、所含附件文件类型(音频、图片等)、创建的地点搜索笔记。&/p&&p&&b&1. 图片搜索&/b&&br&印象笔记可以搜索图片中文字,包括印刷体,中英文手写。比如下面这张照片是看《日瓦戈医生》时手边没有纸和笔,用手机直接拍照存到印象笔记,拍照可以做读书笔记因为可以照片中文字在印象笔记中可以搜索到。(汉字印刷体识别率很高)&/p&&p&&br&&/p&&img src=&/ec0dfccfa056dcb63bb2f2_b.png& data-rawwidth=&640& data-rawheight=&358& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/ec0dfccfa056dcb63bb2f2_r.png&&&p&手写文字也支持搜索 &/p&&p&(汉字手写工整的话识别率还可以,草书不行。英文和数字手写识别率非常高)&/p&&img src=&/2c8ffdb2a9d_b.png& data-rawwidth=&400& data-rawheight=&387& class=&content_image& width=&400&&&p&&b&2.
附件文档搜索&/b& &/p&&p&&br&&/p&&p&印象笔记可以搜索附件文件,如 Word、Excel、PDF 文档保存到印象笔记后,就再也不用在电脑的各个子文件夹中点来点去寻找一个文档。&/p&&p&&br&&/p&&p&&b&3. 相关搜索:&/b&&/p&&p&电脑浏览器安装剪藏插件后,在百度和Google搜索的时候可以同时显示你的印象笔记搜索结果的前三条笔记。&/p&&p&&br&&/p&&p&&b&4. 高级搜索语法和搜索快捷键&/b&&/p&&p&&br&&/p&&p&Mac 上强烈推荐使用 Cmd +J 搜索快捷键,非常好用。&/p&&p&&br&&/p&&p&另外还有一些高级搜索语法,我自己常用的比较有意思的几个:&/p&&ol&&li&intitle:咖啡 可以搜索标题中含有“咖啡”的笔记。&br&&/li&&li&encryption: 搜索所有包含文本加密的笔记,快速找到笔记里的小秘密并解密&/li&&li&source:mobile* 搜索所有我在手机上创建的笔记&br&&/li&&li&resource:audio/* 搜索所有含有录音文件的笔记&br&&/li&&li&todo:* 将搜索包含复选框的所有笔记&br&&/li&&li&created:day-30 筛选出最近一个月的笔记&br&&/li&&li&created: 找到去年今天你记了什么笔记&br&&/li&&li&-tag:* 筛选出 所有未加标签的笔记&/li&&/ol&&p&&br&&/p&&p&更多高级搜索语法可以参考::&a href=&/question//answer/& class=&internal&&印象笔记有哪些高级搜索用法?搜索语法和图片附件搜索怎么用? - 余知兮的回答&/a&&/p&&p&&br&&/p&&a class=&video-box& href=&/?target=https%3A///x/cover/q0526uvdt78/q0526uvdt78.html& target=&_blank& data-video-id=&953728& data-video-playable=&true& data-name=&深入搜索找到一切-印象笔记快速入门-9_腾讯视频& data-poster=&/v2-52a5d03a19efc552a14142d7.jpg& data-lens-id=&&&
&img class=&thumbnail& src=&/v2-52a5d03a19efc552a14142d7.jpg&&&span class=&content&&
&span class=&title&&深入搜索找到一切-印象笔记快速入门-9_腾讯视频&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&/x/cover/q0526uvdt78/q0526uvdt78.html&/span&
&p&&br&&/p&&h2&七、代办事项和提醒&/h2&&ul&&li&代办事项&/li&&/ul&&p&在印象笔记手机和电脑客户端编辑栏中都有一个勾选框,插入到笔记中就可以制作工作项目中代办事项,旅行物品清单。比如每次出行的前一天晚上复制一个清单模板笔记,把勾一个个都打完勾了就知道自己东西都带齐了。&/p&&img src=&/f7cbb9e8fd45fd5f27354_b.png& data-rawwidth=&522& data-rawheight=&485& class=&origin_image zh-lightbox-thumb& width=&522& data-original=&/f7cbb9e8fd45fd5f27354_r.png&&&ul&&li&笔记提醒&/li&&/ul&&p&&br&&/p&&p&每一条笔记都可以设置一个提醒时间,重要的笔记给自己设置一个提醒时间到期会弹出提醒,还可以开启邮件提醒,共享笔记本设置提醒,对方印象笔记也会收到提醒。另外印象笔记提醒还可以和Outlook日历绑定同步。&/p&&p&参考:&a href=&/question//answer/& class=&internal&&印象笔记提醒怎么同步到日历软件中? - 余知兮的回答&/a& &/p&&p&&br&&/p&&a class=&video-box& href=&/?target=https%3A///x/cover/d0526veo18r/d0526veo18r.html& target=&_blank& data-video-id=&621888& data-video-playable=&true& data-name=&列个大纲理清思路-印象笔记快速入门-6_腾讯视频& data-poster=&/v2-c2b09f589549.jpg& data-lens-id=&&&
&img class=&thumbnail& src=&/v2-c2b09f589549.jpg&&&span class=&content&&
&span class=&title&&列个大纲理清思路-印象笔记快速入门-6_腾讯视频&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&/x/cover/d0526veo18r/d0526veo18r.html&/span&
&p&&br&&/p&&h2&八、标注图片,网页和PDF&/h2&&p&原先售价 $ 19.99 的瑞士军刀级的 Mac 图片编辑器 Skitch 圈点 在2011年被 Evernote 收购以后免费了,后来被慢慢被整合到 Evernote 的笔记软件中。现在不用下载 Skitch 在印象笔记中就可以标注图片,网页和PDF。&/p&&p&标注时可以添加箭头,涂鸦,高亮,文本,圈圈,框框,图章,马赛克,旋转,裁剪调整大小,选择颜色和线条粗细。所有的这些功能在印象笔记手机或电脑客户端中打开笔记中图片和PDF,点击 @ 标注按钮或右键---标注图片都可以操作。使用电脑浏览器印象笔记剪藏插件时选择截图模式还可以直接标注网页。&/p&&img src=&/ef25c007d1ae0d53f388c5bb_b.png& data-rawwidth=&600& data-rawheight=&581& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/ef25c007d1ae0d53f388c5bb_r.png&&&h2&九、共享笔记&/h2&&p&印象笔记可以共享单条笔记,和笔记本。权限可以设置为仅查看,仅编辑,编辑和邀请。&/p&&img src=&/3c0ee3f4ed3c6ca2230a_b.png& data-rawwidth=&440& data-rawheight=&281& class=&origin_image zh-lightbox-thumb& width=&440& data-original=&/3c0ee3f4ed3c6ca2230a_r.png&&&h2&十、笔记模板&/h2&&p&推荐下面两个印象笔记官方的模板和清单大全,打开点击右上角可以保存到自己的印象笔记。&/p&&ul&&li&&a href=&/?target=https%3A///moban/%3Futm_source%3Dzhulan%26utm_medium%3Dutm_campaign%3Dlist_zhihu& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&印象笔记模板大全&i class=&icon-external&&&/i&&/a& &/li&&li&&a href=&/?target=https%3A///qingdan/%3Futm_source%3Dzhuanlan%26utm_medium%3Dutm_campaign%3Dlist_zhihu& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&印象笔记清单大全&i class=&icon-external&&&/i&&/a& &/li&&/ul&&p&&br&&/p&&img src=&/c3d742b4beb0bd401f42a7b_b.png& data-rawwidth=&523& data-rawheight=&303& class=&origin_image zh-lightbox-thumb& width=&523& data-original=&/c3d742b4beb0bd401f42a7b_r.png&&&p&更多模板和共享笔记本参考:&a href=&/question//answer/& class=&internal&&有哪些不错的 Evernote 或者印象笔记的共享笔记本? - 余知兮的回答&/a&&/p&&p&&br&&/p&&p&&br&&/p&&a class=&video-box& href=&/?target=https%3A///x/cover/g0526owaoho/g0526owaoho.html& target=&_blank& data-video-id=&280960& data-video-playable=&true& data-name=&实用模板轻松获取-印象笔记快速入门-4_腾讯视频& data-poster=&/v2-1c0ee6dbf30cedc8ea2fbfb.jpg& data-lens-id=&&&
&img class=&thumbnail& src=&/v2-1c0ee6dbf30cedc8ea2fbfb.jpg&&&span class=&content&&
&span class=&title&&实用模板轻松获取-印象笔记快速入门-4_腾讯视频&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&/x/cover/g0526owaoho/g0526owaoho.html&/span&
&p&&br&&/p&&p&写完了第一篇印象笔记从入门到精通文章,准备去睡觉了。。。&/p&&p&文章中视频出自印象笔记官方微信 &a href=&/?target=https%3A//mp./mp/homepage%3F__biz%3DMjM5OTA3MjUwMA%3D%3D%26hid%3D6%26sn%3Dfd5a0f51f22c82f0da81be%26devicetype%3DiOS10.3.3%26version%3Dlang%3Dzh_CN%26nettype%3DWIFI%26ascene%3D7%26fontScale%3D100%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&印象笔记&i class=&icon-external&&&/i&&/a& &a href=&/?target=https%3A//mp./mp/homepage%3F__biz%3DMjM5OTA3MjUwMA%3D%3D%26hid%3D6%26sn%3Dfd5a0f51f22c82f0da81be%26devicetype%3DiOS10.3.3%26version%3Dlang%3Dzh_CN%26nettype%3DWIFI%26ascene%3D7%26fontScale%3D100%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Evernote&i class=&icon-external&&&/i&&/a& &a href=&/?target=https%3A//mp./mp/homepage%3F__biz%3DMjM5OTA3MjUwMA%3D%3D%26hid%3D6%26sn%3Dfd5a0f51f22c82f0da81be%26devicetype%3DiOS10.3.3%26version%3Dlang%3Dzh_CN%26nettype%3DWIFI%26ascene%3D7%26fontScale%3D100%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&新手入门手册&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&p&下篇预告:如果Google 是一座图书馆,印象笔记就是我自己的小书架 ---- &a href=&/question//answer/& class=&internal&&如何高效使用和整理印象笔记(Evernote)? - 余知兮的回答&/a&&/p&
用 Evernote 5年多了,从一个小白用户到现在有一万多条笔记,我把自己在学习,生活和工作中的点滴积累全都存放在里面。大约也是5年前,我第一次在知乎回答问题,慢慢成为知乎 下的最佳回答者,收到了很多知乎朋友的点赞。每天会有很多人在知乎…
&p&我有一个学习的小技巧,就是学习新技术的时候,多看看“官方文档”。&/p&&br&&p&多年来的学习和工作经历,让我比较深刻认识到一点:&b&看“官方文档”非常重要&/b&。&/p&&br&&p&我们很多的问题和技术细节,其实,只要我们认真将官方文档过一遍,会发觉大部分的问题和认识模糊的地方都消失了。甚至,你还能发现自己之前通过搜索获得的到一些资料,可能是不准确或者已经过时的。官方文档是真正的好东西,&b&因为编写文档的人群,通常就是这些技术或者软件的开发者,他们才是对这些东西最了解的人&/b&,因此,他们写的文档质量是很高的,通常也是最新的。&/p&&br&&p&官方文档的不足的地方,大概是中文版本不多,看起来可能会比较吃力。不过,请相信我,下载一个翻译辅助软件,慢慢看还是可以的。另一方面,就是这些文档编写者,通常是技术界大牛,他们编写文档有时候是基于他们自己的技术认知水平,跳过了很多基础概念,也增加了阅读难度。不过,这个我们也可以通过多查资料,慢慢看来解决,并且通常会带来额外的学习收获。&/p&
我有一个学习的小技巧,就是学习新技术的时候,多看看“官方文档”。 多年来的学习和工作经历,让我比较深刻认识到一点:看“官方文档”非常重要。 我们很多的问题和技术细节,其实,只要我们认真将官方文档过一遍,会发觉大部分的问题和认识模糊的地方都消…
&p&在江湖中要练就绝世武功必须内外兼备,精妙的招式和深厚的内功,武功的基础是内功。对于武功低(就像江南七怪)的人,招式更重要,因为他们不能靠内功直接去伤人,只能靠招式,利刃上优势来取胜了,但是练到高手之后,内功就更主要了。一个内功低的人招式在奇妙也打不过一个内功高的人。比如,你剑法再厉害,一剑刺过来,别人一掌打断你的剑,你还怎么使剑法,你一掌打到一个武功高的人身上,那人没什么事,却把你震伤了,你还怎么打。同样两者也是相辅相成的,内功深厚之后,原来普通的一招一式威力也会倍增。&/p&&p&对于搞开发的我们其实也是一样,现在流行的框架越来越多,封装的也越来越完善,各种框架可以搞定一切,几乎不用关注底层的实现,初级程序员只要熟悉基本的使用方法,便可以快速的开发上线;但对于高级程序员来讲,内功的修炼却越发的重要,比如算法、设计模式、底层原理等,只有把这些基础熟练之后,才能在开发过程中知其然知其所以然,出现问题时能快速定位到问题的本质。&/p&&p&对于Java程序员来讲,spring全家桶几乎可以搞定一切,spring全家桶便是精妙的招式,jvm就是内功心法很重要的一块,线上出现性能问题,jvm调优更是不可回避的问题。因此JVM基础知识对于高级程序员的重要性不必言语,我司在面试高级开发的时候,jvm相关知识也必定是考核的标准之一。本篇文章会根据之前写的jvm系列文章梳理出jvm需要关注的所有考察点。&/p&&h2&jvm 总体梳理&/h2&&p&jvm体系总体分四大块:&/p&&ul&&li&类的加载机制&/li&&li&jvm内存结构&/li&&li&GC算法 垃圾回收&/li&&li&GC分析 命令调优&/li&&/ul&&p&&em&当然这些知识点在之前的文章中都有详细的介绍,这里只做主干的梳理&/em&&/p&&p&这里画了一个思维导图,将所有的知识点进行了陈列,因为图比较大可以点击右键下载了放大查看。&/p&&br&&img src=&/v2-fe745fc8eac99_b.jpg& data-rawwidth=&2899& data-rawheight=&4213& class=&origin_image zh-lightbox-thumb& width=&2899& data-original=&/v2-fe745fc8eac99_r.jpg&&&br&&h2&类的加载机制&/h2&&p&主要关注点:&/p&&ul&&li&什么是类的加载&/li&&li&类的生命周期&/li&&li&类加载器&/li&&li&双亲委派模型&/li&&/ul&&p&什么是类的加载&/p&&p&类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。&/p&&p&类的生命周期&/p&&p&类的生命周期包括这几个部分,加载、连接、初始化、使用和卸载,其中前三部是类的加载的过程,如下图;&/p&&br&&img src=&/v2-a0c3515abd75178ffc340_b.png& data-rawwidth=&694& data-rawheight=&225& class=&origin_image zh-lightbox-thumb& width=&694& data-original=&/v2-a0c3515abd75178ffc340_r.png&&&br&&ul&&li&加载,查找并加载类的二进制数据,在Java堆中也创建一个java.lang.Class类的对象&/li&&li&连接,连接又包含三块内容:验证、准备、初始化。1)验证,文件格式、元数据、字节码、符号引用验证;2)准备,为类的静态变量分配内存,并将其初始化为默认值;3)解析,把类中的符号引用转换为直接引用&/li&&li&初始化,为类的静态变量赋予正确的初始值&/li&&li&使用,new出对象程序中使用&/li&&li&卸载,执行垃圾回收&/li&&/ul&&blockquote&&p&&em&几个小问题?&/em&&br&&em&1、JVM初始化步骤 ? 2、类初始化时机 ?3、哪几种情况下,Java虚拟机将结束生命周期?&/em&&br&&em&答案参考这篇文章&a href=&/?target=http%3A///ityouknow/p/5603287.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&jvm系列(一):java类的加载机制&i class=&icon-external&&&/i&&/a&&/em&&/p&&/blockquote&&p&类加载器&/p&&br&&img src=&/v2-eb56deabf9f20b82b5edc28a43feb27d_b.png& data-rawwidth=&400& data-rawheight=&399& class=&content_image& width=&400&&&br&&ul&&li&启动类加载器:Bootstrap ClassLoader,负责加载存放在JDK\jre\lib(JDK代表JDK的安装目录,下同)下,或被-Xbootclasspath参数指定的路径中的,并且能被虚拟机识别的类库&/li&&li&扩展类加载器:Extension ClassLoader,该加载器由sun.misc.Launcher$ExtClassLoader实现,它负责加载DK\jre\lib\ext目录中,或者由java.ext.dirs系统变量指定的路径中的所有类库(如javax.*开头的类),开发者可以直接使用扩展类加载器。&/li&&li&应用程序类加载器:Application ClassLoader,该类加载器由sun.misc.Launcher$AppClassLoader来实现,它负责加载用户类路径(ClassPath)所指定的类,开发者可以直接使用该类加载器&/li&&/ul&&p&类加载机制&/p&&ul&&li&全盘负责,当一个类加载器负责加载某个Class时,该Class所依赖的和引用的其他Class也将由该类加载器负责载入,除非显示使用另外一个类加载器来载入&/li&&li&父类委托,先让父类加载器试图加载该类,只有在父类加载器无法加载该类时才尝试从自己的类路径中加载该类&/li&&li&缓存机制,缓存机制将会保证所有加载过的Class都会被缓存,当程序中需要使用某个Class时,类加载器先从缓存区寻找该Class,只有缓存区不存在,系统才会读取该类对应的二进制数据,并将其转换成Class对象,存入缓存区。这就是为什么修改了Class后,必须重启JVM,程序的修改才会生效&/li&&/ul&&h2&jvm内存结构&/h2&&p&主要关注点:&/p&&ul&&li&jvm内存结构都是什么&/li&&li&对象分配规则&/li&&/ul&&p&jvm内存结构&/p&&br&&img src=&/v2-2b1b3e2df9c5e5f07224_b.png& data-rawwidth=&652& data-rawheight=&625& class=&origin_image zh-lightbox-thumb& width=&652& data-original=&/v2-2b1b3e2df9c5e5f07224_r.png&&&br&&blockquote&&p&方法区和堆是所有线程共享的内存区域;而java栈、本地方法栈和程序计数器是运行是线程私有的内存区域。&/p&&/blockquote&&ul&&li&Java堆(Heap),是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。&/li&&li&方法区(Method Area),方法区(Method Area)与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。&/li&&li&程序计数器(Program Counter Register),程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。&/li&&li&JVM栈(JVM Stacks),与程序计数器一样,Java虚拟机栈(Java Virtual Machine Stacks)也是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧(Stack Frame)用于存储局部变量表、操作栈、动态链接、方法出口等信息。每一个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。&/li&&li&本地方法栈(Native Method Stacks),本地方法栈(Native Method Stacks)与虚拟机栈所发挥的作用是非常相似的,其区别不过是虚拟机栈为虚拟机执行Java方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的Native方法服务。&/li&&/ul&&p&对象分配规则&/p&&ul&&li&对象优先分配在Eden区,如果Eden区没有足够的空间时,虚拟机执行一次Minor GC。&/li&&li&大对象直接进入老年代(大对象是指需要大量连续内存空间的对象)。这样做的目的是避免在Eden区和两个Survivor区之间发生大量的内存拷贝(新生代采用复制算法收集内存)。&/li&&li&长期存活的对象进入老年代。虚拟机为每个对象定义了一个年龄计数器,如果对象经过了1次Minor GC那么对象会进入Survivor区,之后每经过一次Minor GC那么对象的年龄加1,知道达到阀值对象进入老年区。&/li&&li&动态判断对象的年龄。如果Survivor区中相同年龄的所有对象大小的总和大于Survivor空间的一半,年龄大于或等于该年龄的对象可以直接进入老年代。&/li&&li&空间分配担保。每次进行Minor GC时,JVM会计算Survivor区移至老年区的对象的平均大小,如果这个值大于老年区的剩余值大小则进行一次Full GC,如果小于检查HandlePromotionFailure设置,如果true则只进行Monitor GC,如果false则进行Full GC。&/li&&/ul&&blockquote&&p&&em&如何通过参数来控制个各个内存区域&/em&&br&&em&参考此文章:&a href=&/?target=http%3A///ityouknow/p/5610232.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&jvm系列(二):JVM内存结构&i class=&icon-external&&&/i&&/a&&/em&&/p&&/blockquote&&h2&GC算法 垃圾回收&/h2&&p&主要关注点:&/p&&ul&&li&对象存活判断&/li&&li&GC算法&/li&&li&垃圾回收器&/li&&/ul&&p&对象存活判断&/p&&p&判断对象是否存活一般有两种方式:&/p&&ul&&li&引用计数:每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收。此方法简单,无法解决对象相互循环引用的问题。&/li&&li&可达性分析(Reachability Analysis):从GC Roots开始向下搜索,搜索所走过的路径称为引用链。当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的,不可达对象。&/li&&/ul&&p&GC算法&/p&&p&GC最基础的算法有三种:标记 -清除算法、复制算法、标记-压缩算法,我们常用的垃圾回收器一般都采用分代收集算法。&/p&&ul&&li&标记 -清除算法,“标记-清除”(Mark-Sweep)算法,如它的名字一样,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。&/li&&li&复制算法,“复制”(Copying)的收集算法,它将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面,然后再把已使用过的内存空间一次清理掉。&/li&&li&标记-压缩算法,标记过程仍然与“标记-清除”算法一样,但后续步骤不是直接对可回收对象进行清理,而是让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存&/li&&li&分代收集算法,“分代收集”(Generational Collection)算法,把Java堆分为新生代和老年代,这样就可以根据各个年代的特点采用最适当的收集算法。&/li&&/ul&&p&垃圾回收器&/p&&ul&&li&Serial收集器,串行收集器是最古老,最稳定以及效率高的收集器,可能会产生较长的停顿,只使用一个线程去回收。&/li&&li&ParNew收集器,ParNew收集器其实就是Serial收集器的多线程版本。&/li&&li&Parallel收集器,Parallel Scavenge收集器类似ParNew收集器,Parallel收集器更关注系统的吞吐量。&/li&&li&Parallel Old 收集器,Parallel Old是Parallel Scavenge收集器的老年代版本,使用多线程和“标记-整理”算法&/li&&li&CMS收集器,CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。&/li&&li&G1收集器,G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征&/li&&/ul&&blockquote&&p&&em&GC算法和垃圾回收器算法图解以及更详细内容参考 &a href=&/?target=http%3A///ityouknow/p/5614961.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&jvm系列(三):GC算法 垃圾收集器&i class=&icon-external&&&/i&&/a&&/em&&/p&&/blockquote&&h2&GC分析 命令调优&/h2&&p&主要关注点:&/p&&ul&&li&GC日志分析&/li&&li&调优命令&/li&&li&调优工具&/li&&/ul&&p&GC日志分析&/p&&p&摘录GC日志一部分(前段为年轻代gc回收;后段为full gc回收):&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&T10:43:18.093+: [GC [PSYoungGen: 274931K-&1K)] 371093K-&0048K), 0.0668480 secs] [Times: user=0.17 sys=0.08, real=0.07 secs]
T10:43:18.160+: [Full GC [PSYoungGen: 10738K-&0K(274944K)] [ParOldGen: 136447K-&2592K)] 147186K-&7536K) [PSPermGen: 85411K-&8K)], 0.6763541 secs] [Times: user=1.75 sys=0.02, real=0.68 secs]
&/code&&/pre&&/div&&p&通过上面日志分析得出,PSYoungGen、ParOldGen、PSPermGen属于Parallel收集器。其中PSYoungGen表示gc回收前后年轻代的内存变化;ParOldGen表示gc回收前后老年代的内存变化;PSPermGen表示gc回收前后永久区的内存变化。young gc 主要是针对年轻代进行内存回收比较频繁,耗时短;full gc 会对整个堆内存进行回城,耗时长,因此一般尽量减少full gc的次数&/p&&p&young gc 日志:&/p&&br&&img src=&/v2-ac87daaece0b_b.jpg& data-rawwidth=&783& data-rawheight=&260& class=&origin_image zh-lightbox-thumb& width=&783& data-original=&/v2-ac87daaece0b_r.jpg&&&br&&br&Full GC日志:&br&&img src=&/v2-dc9c1a8c3beb5c893889c_b.jpg& data-rawwidth=&900& data-rawheight=&296& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&/v2-dc9c1a8c3beb5c893889c_r.jpg&&&br&&p&调优命令&/p&&p&Sun JDK监控和故障处理命令有jps jstat jmap jhat jstack jinfo&/p&&ul&&li&jps,JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程。&/li&&li&jstat,JVM statistics Monitoring是用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。&/li&&li&jmap,JVM Memory Map命令用于生成heap dump文件&/li&&li&jhat,JVM Heap Analysis Tool命令是与jmap搭配使用,用来分析jmap生成的dump,jhat内置了一个微型的HTTP/HTML服务器,生成dump的分析结果后,可以在浏览器中查看&/li&&li&jstack,用于生成java虚拟机当前时刻的线程快照。&/li&&li&jinfo,JVM Configuration info 这个命令作用是实时查看和调整虚拟机运行参数。&/li&&/ul&&blockquote&&p&&em&详细的命令使用参考这里&a href=&/?target=http%3A///java//jvm%25E8%25B0%%25BC%%2591%25BD%25E4%25BB%25A4%25E7%25AF%2587.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&jvm系列(四):jvm调优-命令篇&i class=&icon-external&&&/i&&/a&&/em&&/p&&/blockquote&&p&调优工具&/p&&p&常用调优工具分为两类,jdk自带监控工具:jconsole和jvisualvm,第三方有:MAT(Memory Analyzer Tool)、GChisto。&/p&&ul&&li&jconsole,Java Monitoring and Management Console是从java5开始,在JDK中自带的java监控和管理控制台,用于对JVM中内存,线程和类等的监控&/li&&li&jvisualvm,jdk自带全能工具,可以分析内存快照、线程快照;监控内存变化、GC变化等。&/li&&li&MAT,Memory Analyzer Tool,一个基于Eclipse的内存分析工具,是一个快速、功能丰富的Java heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗&/li&&li&GChisto,一款专业分析gc日志的工具&/li&&/ul&&blockquote&&p&&em&工具使用参考 &a href=&/?target=http%3A///java//jvm-tool.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&jvm系列(七):jvm调优-工具篇&i class=&icon-external&&&/i&&/a&&/em&&/p&&/blockquote&&br&&p&作者:纯洁的微笑&br&出处:&a href=&/?target=http%3A///java//jvm-overview.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&jvm系列(八):jvm知识点总览-高级Java工程师面试必备&i class=&icon-external&&&/i&&/a&&br&版权归作者所有,转载请注明出处&/p&
在江湖中要练就绝世武功必须内外兼备,精妙的招式和深厚的内功,武功的基础是内功。对于武功低(就像江南七怪)的人,招式更重要,因为他们不能靠内功直接去伤人,只能靠招式,利刃上优势来取胜了,但是练到高手之后,内功就更主要了。一个内功低的人招式在…
&img src=&/v2-412d80ba303f5dfc0991f_b.jpg& data-rawwidth=&1136& data-rawheight=&640& class=&origin_image zh-lightbox-thumb& width=&1136& data-original=&/v2-412d80ba303f5dfc0991f_r.jpg&&&p&&b&&b&各位道友大家好:&/b&&/b&&/p&&p&
“Angular2.0视频教程”来了!这是全球第一个完整的Angular 2.0系列视频教程,到目前为止也是唯一的,该系列的视频在优酷和youtube同步播出。 &/p&&p&
还是大漠穷秋老师,还是熟悉的声音,还是淡淡的小幽默。3年前,大漠老师在慕课网发布了“&a href=&/?target=http%3A///learn/156& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&AngularJS实战&i class=&icon-external&&&/i&&/a&” &a href=&/?target=http%3A///learn/156& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&AngularJS实战-慕课网&i class=&icon-external&&&/i&&/a& 系列视频教程,迄今为止已经有&b&&b&14万人&/b&&/b&学习,整体评分&b&&b&9.6分&/b&&/b&。很多道友反馈说,通过学习这门课程找到了心仪的工作,大漠老师感到非常开心,说明他的付出是有价值的。&/p&&p&
这一次,大漠老师再度倾力打造,从开发环境到完整案例,涵盖了Angular2的方方面面。如果你自己看文档,或者在网上寻寻觅觅,看那些碎片化的文章,可能需要几十个小时,甚至几个月才能摸到门道。而你来听大漠老师的系统讲解,只要&b&&b&8小时,&/b&&/b&你就是Angular开发专家了!整个课程全部基于大漠老师自己开发的NiceFish这个小项目,如果你想先睹为快,请自己检出代码上手试玩 &a href=&/?target=http%3A//git.oschina.net/mumu-osc/NiceFish& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&mumu-osc/NiceFish - 码云 - 开源中国&i class=&icon-external&&&/i&&/a& 。 &/p&&p&同时,大漠老师还给大家带来了一波小福利,每一节课都会送出2本《揭秘Angular2,&a href=&/?target=http%3A///.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&/.html&i class=&icon-external&&&/i&&/a& ,整个课程共送出&b&&b&20本&/b&&/b&。《揭秘Angular2》由广发证券金融团队编著,博文视点出版。这是第一本Angular2中文原创书籍,全书以广发证券的实际项目为背景,详细介绍了Angular2的方方面面,是目前市面上不可多得的参考书籍。最难能可贵的是,这本书得到了Angular核心团队PM---Naomi
Black女士、谷歌开发技术推广部大中华区主管---栾跃 (Bill Luan)先生的亲笔推荐,以及来自国内的8位顶级前端技术专家的评语。&/p&&img src=&/v2-afb379ad0cc54d8b011fc8e3ea49719b_b.jpg& data-rawwidth=&1024& data-rawheight=&768& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/v2-afb379ad0cc54d8b011fc8e3ea49719b_r.jpg&&&p&特别感谢汤桂川老师让我知道了《揭秘Angular2》这本书的存在,也感谢他在2016年Google Developers Day上协助Angular团队分享他的案例和经验,汤老师居然熟悉Angular演进过程中的各个RC版本的特性,这一点让我叹为观止!汤桂川对技术的热情深深感染了我! &br&&/p&&p&
来吧各位道友,请在优酷关注我的账号,我的ID是“真的大漠穷秋”,视频请点下面的链接:
&/p&&p&&b&//记得在优酷上面订阅我,这样我上传视频之后你就能收到通知了&/b&&br&&/p&&p&&b&&a href=&/?target=http%3A///v_show/id_XMjUwMjI2MDk2NA%3D%3D.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Angular2.0视频教程---课程大纲&i class=&icon-external&&&/i&&/a&(标清)&/b&&br&&/p&&p&&b&&a href=&/?target=http%3A///v_show/id_XMjUwMjYyNTA5Ng%3D%3D.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&第一节:1小时快速上手(1)(超清)&i class=&icon-external&&&/i&&/a&&/b&&/p&&p&&b&&a href=&/?target=http%3A///v_show/id_XMjUwNDA4Nzg0MA%3D%3D.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&第一节:1小时快速上手(2)(超清)&i class=&icon-external&&&/i&&/a&&/b&&/p&&p&&b&&a href=&/?target=http%3A///v_show/id_XMjUwNDA5Nzg1Mg%3D%3D.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&第一节:1小时快速上手(3)(超清)&i class=&icon-external&&&/i&&/a&&/b&&/p&&p&&b&&a href=&/?target=http%3A///v_show/id_XMjUwNDEwMTI3Mg%3D%3D.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&第一节:1小时快速上手(4)(超清)&i class=&icon-external&&&/i&&/a&&/b&&/p&&p&&b&&a href=&/?target=http%3A///v_show/id_XMjUwNDEwNDM5Mg%3D%3D.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&第一节:1小时快速上手(5)(高清)&i class=&icon-external&&&/i&&/a&&/b&&br&&/p&&p&&b&&a href=&/?target=http%3A///v_show/id_XMjUxMzAyOTk2NA%3D%3D.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&第二节:搭建开发环境(高清)&i class=&icon-external&&&/i&&/a&&/b&&br&&/p&&p&&b&&a href=&/?target=http%3A///v_show/id_XMjUwODE3OTk3Ng%3D%3D.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&第三节:详解组件(1)(超清) &i class=&icon-external&&&/i&&/a&&/b&&/p&&p&&b&&a href=&/?target=http%3A///v_show/id_XMjUwODE4NDc2NA%3D%3D.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&第三节:详解组件(2)(超清) &i class=&icon-external&&&/i&&/a&&/b&&/p&&p&&b&&a href=&/?target=http%3A///v_show/id_XMjUwODE4NTIwOA%3D%3D.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&第三节:详解组件(3)(超清) &i class=&icon-external&&&/i&&/a&&/b&&br&&/p&&p&&b&&a href=&/?target=http%3A///v_show/id_XMjUyNjUxMTEwMA%3D%3D.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&第四节:模块与共享模块(超清)&i class=&icon-external&&&/i&&/a&&/b&&br&&/p&&p&&b&&a href=&/?target=http%3A///v_show/id_XMjUzMDQzMzcwNA%3D%3D.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&第五节:路由与动态加载(超清) &i class=&icon-external&&&/i&&/a&&/b&&br&&/p&&p&&b&&a href=&/?target=http%3A///v_show/id_XMjUzMTM1ODU2OA%3D%3D.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&第六节:表单与数据校验(超清)&i class=&icon-external&&&/i&&/a&&/b&&br&&/p&&p&&b&&a href=&/?target=http%3A///v_show/id_XMjUwNTg5MjgzMg%3D%3D.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&第七节:服务端通讯与RxJS(超清)&i class=&icon-external&&&/i&&/a&&/b&&br&&/p&&p&&b&&a href=&/?target=http%3A///v_show/id_XMjUwNzM1NzE5Mg%3D%3D.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&第八节:i18n(超清) &i class=&icon-external&&&/i&&/a&&/b&&/p&&p&&b&&b&&a href=&/?target=http%3A///v_show/id_XMjU1MzExMDg4NA%3D%3D.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&第九节:前端自动化测试(超清)
&i class=&icon-external&&&/i&&/a&&/b&&br&&/b&&/p&&p&&b&//以下是视频对应的PPT&/b&&/p&&a href=&/?target=http%3A//git.oschina.net/mumu-osc/NiceFish/attach_files& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&项目附件 - 码云 - 开源中国&i class=&icon-external&&&/i&&/a&&p&如果你觉得以上内容对学习Angular2有帮助,请帮忙推荐给你的小伙伴儿,只要分享一个链接,就可以帮助别人节省数十小时的学习时间,何乐而不为?&/p&&p&如果你的公司或者组织需要Angular方面的演讲或者培训,请填写&a href=&/?target=https%3A//gdgdocs.org/forms/d/e/1FAIpQLSfKA15nS0md58fR__tAV6gSEIPsVsLksT9knOgObq9IbVPuQg/viewform& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&这份申请表单&i class=&icon-external&&&/i&&/a&。请注意,对于GDG组织和高校,是完全免费的。 &/p&
各位道友大家好: “Angular2.0视频教程”来了!这是全球第一个完整的Angular 2.0系列视频教程,到目前为止也是唯一的,该系列的视频在优酷和youtube同步播出。 还是大漠穷秋老师,还是熟悉的声音,还是淡淡的小幽默。3年前,大漠老师在慕课网发布了“
&p&那就做一个模仿个天猫官网的J2EE项目,来练手吧&/p&&p&&br&&b&1. 项目演示地址&/b&&br&前台 &a href=&///?target=http%3A///tmall& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/tmall&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&br&后台: &a href=&///?target=http%3A///tmall/admin& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/tmall/admin&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&&b&2. 学习思路&/b&&br&其实呢,要在网上找一个J2EE项目是很容易的,随便在百度或者git搜索,都是一大把。 但是拿到这样的搜索来的J2EE项目,其中包含了上百个java文件,jsp文件,各种配置信息,如果没有好几个实践过的J2EE项目经验,会觉得无从看起,难以下手,最后影响学习的效果。&br&为了使学习的曲线变得更平滑,逐渐建立学习的信心,我为这个模仿个天猫官网项目制作了由浅入深的学习教程。&/p&&p&&u&2.1 首先下载一个跑起来&/u&&/p&&p&看了演示地址之后,第一步总是要下载下来,把项目配置起来,自己也跑跑看看效果的。 如果下载出来的项目不能运行,为什么要跟着你做呢?&/p&&img src=&/v2-fea8659661_b.png& data-rawwidth=&189& data-rawheight=&52& class=&content_image& width=&189&&&br&&p&为了顺利的演示,不仅需要项目代码,还需要数据库中的数据, 所以提供了导入数据的SQL文件&/p&&img src=&/v2-1ed8ad7d372c36128e6c_b.png& data-rawwidth=&313& data-rawheight=&76& class=&content_image& width=&313&&&p&而导入的数据量比较大,上万条数据,使用工具导入不仅慢,还有可能出错,所以专门准备了一个命令行的方式导入,以保证导入的顺利进行&/p&&img src=&/v2-00e249b696b4de0df988a_b.png& data-rawwidth=&842& data-rawheight=&63& class=&origin_image zh-lightbox-thumb& width=&842& data-original=&/v2-00e249b696b4de0df988a_r.png&&&p&配置tomcat也是比较容易出错的环节,特意准备了一个完整的server.xml,直接复制粘贴,然后启动tomcat,就一定能够成功配置了。&/p&&img src=&/v2-3f792aa489a08dfac492d_b.png& data-rawwidth=&314& data-rawheight=&110& class=&content_image& width=&314&&&p&如此这般,便可以顺利的自己也搭建一个模仿天猫的J2EE项目,在自己的机器上看到效果。&/p&&p&&u&2.1 由浅入深,从零开始构建整个项目 &/u&&/p&&p&在确定了这个项目确实可用的前提下,就可以开展对这个项目的学习。但是这个项目里有许多的java,jsp.xml 等等各种类型的文件,彼此之间又有着各种关联关系,从哪里开始着手好呢? 其实,从哪里着手,都不好着手,毕竟项目有着相当的复杂度。 最好的方式,就是从零开始,由浅入深地构建出整个项目出来。&/p&&ul&&li&从需求分析开始,明确要做哪些功能。&/li&&li&然后分析表结构,确定什么样的表结构,表关系,可以支撑需求中的业务功能。&/li&&li&接着再做持久层的实体类和DAO设计&/li&&li&最后才开始进行前后台的功能开发&/li&&/ul&&img src=&/v2-cf8f7b0ce3a_b.png& data-rawwidth=&160& data-rawheight=&589& class=&content_image& width=&160&&&br&&p&&u&2.2 表结构设计&/u&&/p&&img src=&/v2-ff779bbe1a4c68266f6aae5e0e75da36_b.png& data-rawwidth=&172& data-rawheight=&300& class=&content_image& width=&172&&&br&&p&表结构设计是非常重要的,如果这一步没有做正确,将无法支持业务功能的需求,所以放在第一步来做。 &br&在这部分列出了表与表之间的关系,建表的SQL语句等等。 &br&值得一提的是,因为表比较多,为了便于理解每张表的作用,特意把表和前台页面截图做了对应,从感性上理解这些表都是干什么用的。 &/p&&p&比如这个产品表与产品页面的截图,这样表的每个字段在界面上分别对应什么样的显示数据,对于这个表有什么用,心里就会有底很多。&/p&&img src=&/v2-c8d602aac04b9408942acfaac7e60e87_b.png& data-rawwidth=&720& data-rawheight=&693& class=&origin_image zh-lightbox-thumb& width=&720& data-original=&/v2-c8d602aac04b9408942acfaac7e60e87_r.png&&&br&&p&&u&2.3 每个类的源代码,细致到方法级的讲解&/u&&/p&&p&项目里有非常多的类,如实体类,DAO类,Servlet类,Filter,JSP等等,不仅每个类提供源代码,而且每个类的每个方法有什么作用,与业务有什么关系,都有细致到方法级别的讲解, 力求把代码吃透,消化明白。 &/p&&img src=&/v2-bcde423d893fcd726f0ee9_b.png& data-rawwidth=&165& data-rawheight=&116& class=&content_image& width=&165&&&p&&u&2.4 业务类与界面的对应关系&/u&&/p&&br&&p&稍复杂的方法,还有与项目截图的一一对应关系,辅助理解。&/p&&img src=&/v2-04fb58ff626d999a0facc6c_b.png& data-rawwidth=&447& data-rawheight=&150& class=&origin_image zh-lightbox-thumb& width=&447& data-original=&/v2-04fb58ff626d999a0facc6c_r.png&&&br&&p&&u&2.5 后台第一个功能精讲&/u&&/p&&p&在功能开发环节,比如后台功能,通常来说,大部分后台功能是比较接近的,主要是业务数据的CRUD操作。 而做第一个的时候,不仅需要规范化,对于不熟悉的同学,也会略感吃力。 所以在讲解如何做后台第一个分类管理功能的时候,把其拆的特别细,碾碎到很小的颗粒,这样消化起来就容易多了。&/p&&img src=&/v2-c10bbc44f52a7148dcc97_b.png& data-rawwidth=&166& data-rawheight=&555& class=&content_image& width=&166&&&br&&p&&u&2.6 其他后台功能&/u&&br&在完成了第一个后台功能,并消化理解之后,再做其他的后台功能就会顺畅很多&/p&&img src=&/v2-fa4b32c766c30a8d2a4516617ffb227c_b.png& data-rawwidth=&176& data-rawheight=&338& class=&content_image& width=&176&&&br&&p&&u&2.7 前台第一个功能精讲&/u&&/p&&p&前台功能与后台功能的做法会有区别,所以与后台功能类似的,前台第一个功能也讲得很细致,便于理解与消化&/p&&img src=&/v2-ad5c5c955d6b41f08181d68_b.png& data-rawwidth=&168& data-rawheight=&334& class=&content_image& width=&168&&&br&&p&&u&2.8 其他前台功能&/u&&/p&&p&在完成了第一个前台功能,并消化理解之后,再做其他的前台功能就会顺畅很多&/p&&img src=&/v2-ffee8888c75_b.png& data-rawwidth=&388& data-rawheight=&637& class=&content_image& width=&388&&&p&2.9 视频讲解&/p&&p&光有文字讲解有时候也无法把一些较为复杂的概念、思路表达清楚。 所以在各个关键点,都有视频讲解,加深理解。&/p&&img src=&/v2-cbddfc206f6_b.png& data-rawwidth=&632& data-rawheight=&322& class=&origin_image zh-lightbox-thumb& width=&632& data-original=&/v2-cbddfc206f6_r.png&&&br&&br&&p&&b&3. 可运行项目&/b&&/p&&p&
每个知识点都有当前的可运行项目下载,以确保项目一定可以运行,保障持续学习的信心。&/p&&p&
学习一个较为复杂的项目,会有这样的体验:各个步骤差不多都跟着做了呀,但是为什么就是不能正确运行呢? 而且花很多时间,翻来覆去的改,越改越糟糕,越改越乱,犹如进入了茂密的丛林一般,几乎失去了方向。
如果进入这样的状态,真正可怕的是一点点丢失的学习的信心和动力,自然而然地开始怀疑项目本身是不是有问题喔,各种疑虑加上止步不前, 最后实在是学习不动了,只好放弃了。&/p&&p&
其实之所以跑不出来,大部分原因都是因为某个细节没有处理好。为了面对这种情况,我特意在每个学习步骤的右上角,准备当前学习进度对应的可以运行的项目。 如果自己老是搞不出来,那么就把右上角的项目下载下来,部署,运行,就跑通了。&/p&&img src=&/v2-b381fe697bc644bd16097b_b.png& data-rawwidth=&538& data-rawheight=&173& class=&origin_image zh-lightbox-thumb& width=&538& data-original=&/v2-b381fe697bc644bd16097b_r.png&&&br&&p&
这样做的作用是什么呢?&/p&&ul&&li&第1,确保了项目是可以运行的,教程没问题,打消了项目本身就有问题的疑虑&/li&&li&第2,此时就可以把自己写的代码与“标准答案” 代码进行比较,很快就能定位自己的问题所在了。 为此还特意在对应位置,为每个源代码提供了一个文件比较功能, 方便快速定位自己哪些 “细节” 不一样。&/li&&/ul&&img src=&/v2-4be2ff0b9da83ea3b5280d_b.png& data-rawwidth=&373& data-rawheight=&54& class=&content_image& width=&373&&&br&&img src=&/v2-fc12ddda358ff59c85624_b.png& data-rawwidth=&

我要回帖

更多关于 openmp threadprivate 的文章

 

随机推荐