# 先马后看
别犹豫了,马就完事了。在这里每个人都是分享者,你可以分享技能/干货/安装包/电影/图书等等宇宙内的所有资源。
···
1627人正在讨论
#
小研子
杭州电子科技大学·2022届

有偿电子书籍论文提供

资源丰富,涉及各专业。诚信交易。有意者可以留言
分享
1
先马后看
有_青年→本少_
伯明翰大学·2022届

Java工程师学习指南初级篇(项目篇)

Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好。原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都是站在Java后端的全局上进行思考和总结的,忽略了很多小白们的感受,而很多朋友都需要更加基础,更加详细的学习路线。 所以,今天我们重新开一个新的专题,分别按照四篇文章讲述Java的学习路线(分别是入门篇,初级篇,中级篇,高级篇),笔者也打算趁此机会,回忆一下自己的Java学习历程。 今天我们要讲的是,小白同学如何入门Java。 先声明一点,文章内容不会详细到每一步怎么操作,只会提供大致的思路和方向,给大家以启发,如果真的要一步一步指导操作的话,那至少需要一本书的厚度啦。 本文所述的方法不一定适合所有人,如有错误敬请谅解。 01 Java Web项目指南 jav在上一篇文章中,我们讲到了入门Java的几个步骤,先搭建好环境,然后熟悉基本语法,接着熟悉Java的一些核心技术,并且在代码中进行实现。 如果你已经完成了这部分内容的学习,应该会感觉自己对Java已经有一定了解了,可以轻松地写出一些Java代码,比如实现多线程输出数字,再如操作IO流等等。 当然,这些代码通常只是一些demo,我们在实际的项目中可能并不会这么简单地使用这些技术,我们可能会同时使用集合类,多线程,以及操作数据库的API。 所以,在今天的初级篇中,我们就来谈谈怎么做项目吧。 Java Web项目 对于大部分Java新手来说,最适合他们入门的项目就是Java Web了。因为Java天然适合做Web应用,并且生态完善,更有很多开源的工具和框架去支撑这些应用,比如Spring,Hibernate,SpringMVC等等。 那么,如何开始着手做一个Java Web项目呢。个人认为最好的方式就是看视频了。因为,看书的话,很多内容比较过时,并且一般不会提供源代码。也有一些大佬喜欢推荐开源的项目(在GitHub上面的项目),但是对于小白来说,如果没有很完整的文档去指导他们,那也是毫无意义的。 曾几何时,Java Web的项目还在使用JSP + Servlet进行开发,后来出现了Struts2,再后来,出现了我们现在也一直在用的SpringMVC,说实话,不论使用哪种开发框架,你都需要先花一些时间去学习相关的技术,否则你会发现,即使是看视频,你也不知道里面在讲什么。 要想做好一个JavaWeb项目,你不仅需要一个好的项目课程,还需要足够的知识储备,下面就让我们来理一理这些内容把。 知识储备 Java基础部分的内容咱们上次说过了,这里就不再重复啦~下面我们分别来说说其他几方面的知识储备把 02 前端知识 推荐资源:在w3cschool学习html,css和js,支持在线测试代码。 既然是做Web,就难免要涉及到前端技术,不过,现在前后端分离已经是一种趋势,所以,如果你对前端不感兴趣,也没必要花太多时间去学习。 对于大部分同学来说,你最好要了解html的基本标签和格式,自己能够写一些简单页面,CSS的话,也可以稍微接触一些。相对于前面两个服务于样式的技术,我们倒是更应该去学习一下JavaScript,了解它的一些基本语法,以及ajax的使用,因为在前后端交互时,ajax是非常重要的。 所以,做一个Java Web项目,你不需要花太多时间在写前端页面上,如果有源代码可以直接使用,当然,对于一些需要修改的前端页面,你得怎么去做修改它,因为有时候你需要使用JSP,JSP既包括前端代码也包括Java代码,如果你完全看不懂前端代码的话,那就很尴尬了。 03 Java Web常用技术 JavaWeb的技术栈其实比较庞大,所以我们不要求面面俱到,只是希望你能够熟悉一下项目中可能用到的技术。下面列举一些常见的技术,大家最好要了解一下。 1 JSP和Servlet 推荐资源:《JavaWeb入门到精通》,慕课网、极客学院等网站上的JavaWeb基础课程 这是Java Web开发最原始的形态,现在很少直接使用了,但是后来的各种框架其实也是建立在servlet之上来做的。你们需要了解这两个技术分别是用***什么的,最好能写一些demo来实践。 对于JSP,有时候你可能还要学习jstl等标签语言,因为这些标签可以让你更方便地往JSP中插入Java代码。 2 Spring和SpringMVC 推荐资源:《Spring实战》,慕课网、极客学院等网站上的SpringMVC基础课程。 事实上,除了上述资源之外,你也可以直接到官网上查看快速开始文档。 Struts2早已被时代抛弃,Spring则是当今的霸主,你需要了解Spring如何使用,以及SpringMVC如何使用,并且学会在项目中使用它。 由于SpringBoot最近很火,并且搭建方式比SpringMVC更简单,你也可以先学习SpringBoot,以便更快速地搭建起你的第一个Java Web项目。 3 MySQL 推荐资源:《Sql必知必会》,Runoob上的MySQL基础教程,慕课网、极客学院等网站上的视频课程 一个JavaWeb应用一定要有数据啊,所以我们需要用到数据库,其实搭一个mysql数据库是非常简单的,但是对于初学者来说最麻烦的就是写sql了,所以,先学会建表,熟悉sql,对你以后做项目也是大有裨益的。 4 Hibernate和Mybatis 推荐资源:Runoob上的Hibernate和Mybatis基础教程,慕课网、极客学院等网站上的视频课程 当你学会了使用sql去查询数据,可能还不足以让你在项目中很方便地处理数据,因为我们还需要一个步骤,就是把数据库的数据转化成Java里的对象。orm框架就是为了解决这一问题而出现的,它可以让一张表和Java类一一对应,让数据查询变得非常方便。Hibernate和Mybatis都是orm框架,只不过现在mybatis越来越火了。 所以,你需要了解这一技术,因为它会广泛地运用到大部分Java Web项目中。 5 Maven 推荐资源:《maven实战》,易百教程里的maven教程,慕课网、极客学院等网站上的视频课程 刚才咱们已经说过了Spring,orm框架,以及MySQL等方面的技术了。实际上,一个简单的Java Web项目也只需要这些东西了。 但是,有一个问题,就是:一个项目里用到这么多技术,所需要的jar包也会很多,我们如何管理这些jar包呢。如果直接导入所需jar包,那当jar包更新或者需要替换时,每次都要手动操作,非常麻烦。另外,当jar包很多时,项目打包后的war格式文件也会很大,不利于传输。 为了解决上述问题,maven应运而生了。maven通过pom.xml文件来指定所需的jar包,并且自带了很多构建相关的功能,比如编译,打包,运行单元测试等等,因为它本身就是一个构建工具。 当然,新手可能还难以理解这些概念,你必须要知道的是,大部分Java Web项目需要用maven来管理,你需要学会maven的基本用法,最基本的用法就是:学会修改pom.xml文件。 6 Tomcat 推荐资源:慕课网、极客学院等网站上的视频课程。 对于小白来说,Tomcat相关的技术是非常复杂的,毕竟它是一个应用服务器啊,事实上这个时候,你只需要学会如何安装Tomcat即可。毕竟,它在项目中的作用就是提供一个运行环境而已。 正常来说,你只要下载解压Tomcat的压缩包即可。由于现在的IDE都支持集成Tomcat,所以一般情况下你都可以在IDE中配置好你的Tomcat路径,然后设置好你的项目路径,IDE会自动把你的工程代码部署到Tomcat服务器上。 如果你使用想跳过IDE直接部署工程到Tomcat上,也可以直接编译工程并且打包得到war格式的文件(这个步骤可以使用maven来完成),然后拷贝war文件到Tomcat下的特定目录即可。 上述两种部署方式的详细步骤请到搜索引擎寻找答案。 7 Git和GitHub 推荐资源:廖雪峰的Git教程,GitHub官网,慕课网、极客学院等网站上的视频课程。 既然要做项目,为什么不把它发布在GitHub上。当你熟悉了Git指令之后,你可以很方便地发布你项目中的每一次更新,并且同步到GitHub上,这样既可以让你更好地管理项目版本,又可以让你GitHub更加活跃,为你未来的面试加分。 所以,赶紧学好Git指令,然后开启你的项目之旅吧。 04 其他常用组件 除了上面几种必备的技术之外,有时候我们在项目中还会用到其他东西,在这里我们把它们叫做组件。这里只做简单的介绍,至于具体怎么使用,在网上都可以很容易地找到相关文章。 1 日志系统 当项目代码比较多的时候,容易发生错误,日志可以很好地记录代码运行时的错误,常用的日志系统有log4j,logging等等,另外你还需要了解一下slf4j。 2 单元测试 日志系统可以记录代码问题,单元测试则是为了避免代码出错,常用的单元测试组件主要是JUnit,建议你找个文档看一看,然后下载下来玩一下。 3 JSON JSON逐渐成为前后端数据交互的标准格式,为了在项目中使用JSON的API,你也需要导入它的jar包,一般我们都会使用阿里提供的fastjson,赶快下载来玩一玩吧。 当然,常用的Java Web组件还有很多,比如HTTPClient,再比如一些加密工具,一些压缩工具等等,这里就不再一一列举了。 05 推荐项目课程 现在网上的项目课程那么多,哪一款更适合你呢? 其实我看过的视频课程也不是很多,早先在慕课网和极客学院看过一些项目课程,觉得比较一般,对新手来说不太友好。 我的一些同学看过一些培训机构的课程,专业讲师录的项目课程可能会稍微好一点。我比较推荐的分别是Java中级项目课和Java高级项目课。 主要有几点原因吧: 1 叶神讲课,比较了解同学们的情况,而且技术功底摆在那里没的说。 2 所做的项目比较接地气,用的技术栈也比较新,比较全。 3 我自己全程跟着牛客网的项目课做了一遍,感觉确实有收获,而且每个章节的安排也比较合理。 4 配套有PPT,项目代码以及部分安装包,可以让你省去很多繁琐的环节。 当然,你也可以自己去找一些你感兴趣的项目课程,后续我也会收集更多的视频课程来分享给大家。 PS:如果找不到我说的这些资源,也可以微信私我。老规矩,公众号后台回复“少侠”可以勾搭作者。 06 总结 今天的内容就到这里了,与其说是初级篇,反而更像是“项目篇”呢。因为学完基础内容之后,做项目是最好的复习和实践方式了。所以这篇文章围绕着做项目来展开,也就不足为奇了。 今天我们主要讲的是,做好一个JavaWeb项目,需要哪些知识储备,需要了解哪些技术,并且我也推荐一些比较精品的视频课程。 后面我还会写一篇文章,专门讲一讲怎么做项目,会更加详细,更加侧重怎么去做,敬请期待吧。 总结以下今天说的几个要点吧: 1 Java基础知识储备 2 前端知识储备 3 了解和使用JavaWeb常用技术 4 JavaWeb常用组件介绍 5 视频课程推荐 俗话说的好,磨刀不误砍柴工,相信你看了本文之后,可以更好地做好知识储备,然后开始Java Web的项目实践,希望你能够顺利地完成你的第一个项目。 — END —
分享
10
先马后看
张三水
中央财经大学·2022届

java的封神之路

一、基础篇 1.1 JVM 1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http://www.jcp.org/en/jsr/detail?id=133 http://ifeve.com/jmm-faq/ 1.1.2. 了解JVM各种参数及调优 1.1.3. 学习使用Java工具 jps, jstack, jmap, jconsole, jinfo, jhat, javap, … http://kenai.com/projects/btrace http://www.crashub.org/ https://github.com/taobao/TProfiler https://github.com/CSUG/HouseMD http://wiki.cyclopsgroup.org/jmxterm https://github.com/jlusdy/TBJMap 1.1.4. 学习Java诊断工具 http://www.eclipse.org/mat/ http://visualvm.java.net/oqlhelp.html 1.1.5. 自己编写各种outofmemory,stackoverflow程序 HeapOutOfMemory Young OutOfMemory MethodArea OutOfMemory ConstantPool OutOfMemory DirectMemory OutOfMemory Stack OutOfMemory Stack OverFlow 1.1.6. 使用工具尝试解决以下问题,并写下总结 当一个Java程序响应很慢时如何查找问题 当一个Java程序频繁FullGC时如何解决问题,如何查看垃圾回收日志 当一个Java应用发生OutOfMemory时该如何解决,年轻代、年老代、永久代解决办法不同,导致原因也不同 1.1.7. 参考资料 http://docs.oracle.com/javase/specs/jvms/se7/html/ http://www.cs.umd.edu/~pugh/java/memoryModel/ http://gee.cs.oswego.edu/dl/jmm/cookbook.html 1.2. Java基础知识 1.2.1. 阅读源代码 java.lang.String java.lang.Integer java.lang.Long java.lang.Enum java.math.BigDecimal java.lang.ThreadLocal java.lang.ClassLoader & java.net.URLClassLoader java.util.ArrayList & java.util.LinkedList java.util.HashMap & java.util.LinkedHashMap &java.util.TreeMap java.util.HashSet & java.util.LinkedHashSet &java.util.TreeSet 1.2.2. 熟悉Java中各种变量类型 1.2.3. 熟悉Java String的使用,熟悉String的各种函数 1.2.4. 熟悉Java中各种关键字 1.2.5. 学会使用List,Map,Stack,Queue,Set 上述数据结构的遍历 上述数据结构的使用场景 Java实现对Array/List排序 java.uti.Arrays.sort() java.util.Collections.sort() Java实现对List去重 Java实现对List去重,并且需要保留数据原始的出现顺序 Java实现最近最少使用***,用LinkedHashMap 1.2.6. Java IO&Java NIO,并学会使用 java.io.* java.nio.* nio和reactor设计模式 文件编码,字符集 1.2.7. Java反射与javassist 反射与工厂模式 java.lang.reflect.* 1.2.8. Java序列化 java.io. Serializable 什么是序列化,为什么序列化 序列化与单例模式 google序列化protobuf 1.2.9. 虚引用,弱引用,软引用 java.lang.ref.* 实验这些引用的回收 1.2.10. 熟悉Java系统属性 java.util.Properties 1.2.11. 熟悉Annotation用法 java.lang.annotation.* 1.2.12. JMS javax.jms.* 1.2.13. JMX java.lang.management.* javax.management.* 1.2.14. 泛型和继承,泛型和擦除 1.2.15. 自动拆箱装箱与字节码 1.2.16. 实现Callback 1.2.17. java.lang.Void类使用 1.2.18. Java Agent,premain函数 java.lang.instrument 1.2.19. 单元测试 Junit,http://junit.org/ Jmockit,https://code.google.com/p/jmockit/ djUnit,http://works.dgic.co.jp/djunit/ 1.2.20. Java实现通过正则表达式提取一段文本中的电子邮件,并将@替换为#输出 java.lang.util.regex.* 1.2.21. 学习使用常用的Java工具库 commons.lang, commons.*… guava-libraries netty 1.2.22. 什么是API&SPI http://en.wikipedia.org/wiki/Application_programming_interface http://en.wikipedia.org/wiki/Service_provider_interface 1.2.23. 参考资料 JDK src.zip 源代码 http://openjdk.java.net/ http://commons.apache.org/ https://code.google.com/p/guava-libraries/ http://netty.io/ http://stackoverflow.com/questions/2954372/difference-between-spi-and-api http://stackoverflow.com/questions/11404230/how-to-implement-the-api-spi-pattern-in-java 1.3. Java并发编程 1.3.1. 阅读源代码,并学会使用 java.lang.Thread java.lang.Runnable java.util.concurrent.Callable java.util.concurrent.locks.ReentrantLock java.util.concurrent.locks.ReentrantReadWriteLock java.util.concurrent.atomic.Atomic* java.util.concurrent.Semaphore java.util.concurrent.CountDownLatch java.util.concurrent.CyclicBarrier java.util.concurrent.ConcurrentHashMap java.util.concurrent.Executors 1.3.2. 学习使用线程池,自己设计线程池需要注意什么 1.3.3. 锁 什么是锁,锁的种类有哪些,每种锁有什么特点,适用场景是什么 在并发编程中锁的意义是什么 1.3.4. synchronized的作用是什么,synchronized和lock 1.3.5. sleep和wait 1.3.6. wait和notify 1.3.7. 写一个死锁的程序 1.3.8. 什么是守护线程,守护线程和非守护线程的区别以及用法 1.3.9. volatile关键字的理解 C++ volatile关键字和Java volatile关键字 happens-before语义 编译器指令重排和CPU指令重排 http://en.wikipedia.org/wiki/Memory_ordering http://en.wikipedia.org/wiki/Volatile_variable http://preshing.com/20130702/the-happens-before-relation/ 1.3.10. 以下代码是不是线程安全?为什么?如果为count加上volatile修饰是否能够做到线程安全?你觉得该怎么做是线程安全的? public class Sample { private static int count = 0; public static void increment() { count++; } } 1.3.11. 解释一下下面两段代码的差别 // 代码1 public class Sample { private static int count = 0; synchronized public static void increment() { count++; } } // 代码2 public class Sample { private static AtomicInteger count = new AtomicInteger(0); public static void increment() { count.getAndIncrement(); } } 1.3.12. 参考资料 http://book.douban.com/subject/10484692/ http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html 二、 进阶篇 2.1. Java底层知识 2.1.1. 学习了解字节码、class文件格式 http://en.wikipedia.org/wiki/Java_class_file http://en.wikipedia.org/wiki/Java_bytecode http://en.wikipedia.org/wiki/Java_bytecode_instruction_listings http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/ http://asm.ow2.org/ 2.1.2. 写一个程序要求实现javap的功能(手工完成,不借助ASM等工具) 如Java源代码: public static void main(String[] args) { int i = 0; i += 1; i *= 1; System.out.println(i); } 编译后读取class文件输出以下代码: public static void main(java.lang.String[]); Code: Stack=2, Locals=2, Args_size=1 0: iconst_0 1: istore_1 2: iinc 1, 1 5: iload_1 6: iconst_1 7: imul 8: istore_1 9: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream; 12: iload_1 13: invokevirtual #3; //Method java/io/PrintStream.println:(I)V 16: return LineNumberTable: line 4: 0 line 5: 2 line 6: 5 line 7: 9 line 8: 16 2.1.3. CPU缓存,L1,L2,L3和伪共享 http://duartes.org/gustavo/blog/post/intel-cpu-***s/ http://mechanical-sympathy.blogspot.com/2011/07/false-sharing.html 2.1.4. 什么是尾递归 2.1.5. 熟悉位运算 用位运算实现加、减、乘、除、取余 2.1.6. 参考资料 http://book.douban.com/subject/1138768/ http://book.douban.com/subject/6522893/ http://en.wikipedia.org/wiki/Java_class_file http://en.wikipedia.org/wiki/Java_bytecode http://en.wikipedia.org/wiki/Java_bytecode_instruction_listings 2.2. 设计模式 2.2.1. 实现AOP CGLIB和InvocationHandler的区别 http://cglib.sourceforge.net/ 动态***模式 Javassist实现AOP http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/ ASM实现AOP http://asm.ow2.org/ 2.2.2. 使用模板方法设计模式和策略设计模式实现IOC 2.2.3. 不用synchronized和lock,实现线程安全的单例模式 2.2.4. nio和reactor设计模式 2.2.5. 参考资料 http://asm.ow2.org/ http://cglib.sourceforge.net/ http://www.javassist.org/ 2.3. 网络编程知识 2.3.1. Java RMI,Socket,HttpClient 2.3.2. 用Java写一个简单的静态文件的HTTP服务器 实现客户端缓存功能,支持返回304 实现可并发下载一个文件 使用线程池处理客户端请求 使用nio处理客户端请求 支持简单的rewrite规则 上述功能在实现的时候需要满足“开闭原则” 2.3.3. 了解nginx和apache服务器的特性并搭建一个对应的服务器 http://nginx.org/ http://httpd.apache.org/ 2.3.4. 用Java实现FTP、SMTP协议 2.3.5. 什么是CDN?如果实现?DNS起到什么作用? 搭建一个DNS服务器 搭建一个 Squid 或 Apache Traffic Server 服务器 http://www.squid-***.org/ http://trafficserver.apache.org/ http://en.wikipedia.org/wiki/Domain_Name_System 2.3.6. 参考资料 http://www.ietf.org/rfc/rfc2616.txt http://tools.ietf.org/rfc/rfc5321.txt http://en.wikipedia.org/wiki/Open/closed_principle 2.4. 框架知识 spring,spring mvc,阅读主要源码 ibatis,阅读主要源码 用spring和ibatis搭建java server 2.5. 应用服务器知识 熟悉使用jboss,https://www.jboss.org/overview/ 熟悉使用tomcat,http://tomcat.apache.org/ 熟悉使用jetty,http://www.eclipse.org/jetty/ 三、 高级篇 3.1. 编译原理知识 3.1.1. 用Java实现以下表达式解析并返回结果(语法和Oracle中的select sysdate-1 from dual类似) sysdate sysdate - 1 sysdate - 1/24 sysdate - 1/(12*2) 3.1.2. 实现对一个List通过DSL筛选 QList<Map<String, Object>> mapList = new QList<Map<String, Object>>; mapList.add({"name": "hatter test"}); mapList.add({"id": -1,"name": "hatter test"}); mapList.add({"id": 0, "name": "hatter test"}); mapList.add({"id": 1, "name": "test test"}); mapList.add({"id": 2, "name": "hatter test"}); mapList.add({"id": 3, "name": "test hatter"}); mapList.query("id is not null and id > 0 and name like '%hatter%'"); 要求返回列表中匹配的对象,即最后两个对象; 3.1.3. 用Java实现以下程序(语法和变量作用域处理都和JavaScript类似): 代码: var a = 1; var b = 2; var c = function() { var a = 3; println(a); println(b); }; c(); println(a); println(b); 输出: 3 2 1 2 3.1.4. 参考资料 http://en.wikipedia.org/wiki/Abstract_syntax_tree https://javacc.java.net/ http://www.antlr.org/ 3.2. 操作系统知识 Ubuntu Centos 使用linux,熟悉shell脚本 3.3. 数据存储知识 3.3.1. 关系型数据库 MySQL 如何看执行计划 如何搭建MySQL主备 binlog是什么 Derby,H2,PostgreSQL SQLite 3.3.2. NoSQL Cache Redis Mem***d Leveldb Bigtable HBase Cassandra Mongodb 图数据库 neo4j 3.3.3. 参考资料 http://db-engines.com/en/ranking http://redis.io/ https://code.google.com/p/leveldb/ http://hbase.apache.org/ http://cassandra.apache.org/ http://www.mongodb.org/ http://www.neo4j.org/ 3.4. 大数据知识 3.4.1. Zookeeper,在linux上部署zk 3.4.2. Solr,Lucene,ElasticSearch 在linux上部署solr,solrcloud,,新增、删除、查询索引 3.4.3. Storm,流式计算,了解Spark,S4 在linux上部署storm,用zookeeper做协调,运行storm hello world,local和remote模式运行调试storm topology。 3.4.4. Hadoop,离线计算 Hdfs:部署NameNode,SecondaryNameNode,DataNode,上传文件、打开文件、更改文件、删除文件 MapReduce:部署JobTracker,TaskTracker,编写mr job Hive:部署hive,书写hive sql,得到结果 Presto:类hive,不过比hive快,非常值得学习 3.4.5. 分布式日志收集flume,kafka,logstash 3.4.6. 数据挖掘,mahout 3.4.7. 参考资料 http://zookeeper.apache.org/ https://lucene.apache.org/solr/ https://github.com/nathanmarz/storm/wiki http://hadoop.apache.org/ http://prestodb.io/ http://flume.apache.org/,http://logstash.net/,http://kafka.apache.org/ http://mahout.apache.org/ 3.5. 网络安全知识 3.5.1. 什么是DES、AES 3.5.2. 什么是RSA、DSA 3.5.3. 什么是MD5,SHA1 3.5.4. 什么是SSL、TLS,为什么HTTPS相对比较安全 3.5.5. 什么是中间人攻击、如果避免中间人攻击 3.5.6. 什么是DOS、DDOS、CC攻击 3.5.7. 什么是CSRF攻击 3.5.8. 什么是CSS攻击 3.5.9. 什么是SQL注入攻击 3.5.10. 什么是Hash碰撞拒绝服务攻击 3.5.11. 了解并学习下面几种增强安全的技术 http://www.openauthentication.org/ HOTP http://www.ietf.org/rfc/rfc4226.txt TOTP http://tools.ietf.org/rfc/rfc6238.txt OCRA http://tools.ietf.org/rfc/rfc6287.txt http://en.wikipedia.org/wiki/Salt_(cryptography) 3.5.12. 用openssl签一个证书部署到apache或nginx 3.5.13. 参考资料 http://en.wikipedia.org/wiki/Cryptographic_hash_function http://en.wikipedia.org/wiki/Block_cipher http://en.wikipedia.org/wiki/Public-key_cryptography http://en.wikipedia.org/wiki/Transport_Layer_Security http://www.openssl.org/ https://code.google.com/p/google-authenticator/ 四、 扩展篇 4.1. 相关知识 4.1.1. 云计算,分布式,高可用,可扩展 4.1.2. 虚拟化 https://linuxcontainers.org/ http://www.linux-kvm.org/page/Main_Page http://www.xenproject.org/ https://www.docker.io/ 4.1.3. 监控 http://www.nagios.org/ http://ganglia.info/ 4.1.4. 负载均衡 http://www.linuxvirtualserver.org/ 4.1.5. 学习使用git https://github.com/ https://git.oschina.net/ 4.1.6. 学习使用maven http://maven.apache.org/ 4.1.7. 学习使用gradle http://www.gradle.org/ 4.1.8. 学习一个小语种语言 Groovy Scala LISP, Common LISP, Schema, Clojure R Julia Lua Ruby 4.1.9. 尝试了解编码的本质 了解以下概念 ASCII, ISO-8859-1 GB2312, GBK, GB18030 Unicode, UTF-8 不使用 String.getBytes() 等其他工具类/函数完成下面功能 public static void main(String[] args) throws IOException { String str = "Hello, 我们是中国人。"; byte[] utf8Bytes = toUTF8Bytes(str); FileOutputStream fos = new FileOutputStream("f.txt"); fos.write(utf8Bytes); fos.close(); } public static byte[] toUTF8Bytes(String str) { return null; // TODO } 想一下上面的程序能不能写一个转GBK的? 写个程序自动判断一个文件是哪种编码 4.1.10. 尝试了解时间的本质 时区 & 冬令时、夏令时 http://en.wikipedia.org/wiki/Time_zone ftp://ftp.iana.org/tz/data/asia http://zh.wikipedia.org/wiki/%E4%B8%AD%E5%9C%8B%E6%99%82%E5%8D%80 闰年 http://en.wikipedia.org/wiki/Leap_year 闰秒 ftp://ftp.iana.org/tz/data/leapseconds System.currentTimeMillis() 返回的时间是什么 4.1.11. 参考资料 http://git-scm.com/ http://en.wikipedia.org/wiki/UTF-8 http://www.iana.org/time-zones 4.2. 扩展学习 4.2.1. JavaScript知识 4.2.1.1. 什么是prototype 修改代码,使程序输出“1 3 5”: http://jsfiddle.net/Ts7Fk/ 4.2.1.2. 什么是闭包 看一下这段代码,并解释一下为什么按Button1时没有alert出“This is button: 1”,如何修改: http://jsfiddle.net/FDPj3/1/ 4.2.1.3. 了解并学习一个JS框架 jQuery ExtJS ArgularJS 4.2.1.4. 写一个Greasemonkey插件 http://en.wikipedia.org/wiki/Greasemonkey 4.2.1.5. 学习node.js http://nodejs.org/ 4.2.2. 学习html5 ArgularJS,https://docs.angularjs.org/api 4.2.3. 参考资料 http://www.ecmascript.org/ http://jsfiddle.net/ http://jsbin.com/ http://runjs.cn/ http://userscripts.org/ 五、 推荐书籍 《深入Java虚拟机》 《深入理解Java虚拟机》 《Effective Java》 《七周七语言》 《七周七数据》 《Hadoop技术内幕》 《Hbase In Action》 《Mahout In Action》 《这就是搜索引擎》 《Solr In Action》 《深入分析Java Web技术内幕》 《大型网站技术架构》 《高性能MySQL》 《算法导论》 《计算机程序设计艺术》 《代码大全》 《JavaScript权威指南》
分享
3
先马后看
陈朝气
哥伦比亚大学·2022届

我的毕业季之实习一个月的感受

毕业季,不知道是怎么走到今天的,现在还能清晰地记得当初拿着煎饼匆匆参加宣讲会的身影,还有为了排队面试饿肚子的场景。大四的我们总是行色匆匆,不过还好,总算一路走来一路收获。 当时带着不确定的心情来到千喜鹤,到了第一感觉就是这里人好。我来的那天公司刚从文津国际搬到用友软件园,宿舍什么的都是师兄帮忙打扫的,部长还亲自打电话问需要什么生活用品他们好统一采购回来,当时就觉得这个集体跟我之前想象中的工作团队是不一样的,换句话说,比较有人气儿,后来的工作也证实了这一点。在这培训了一周后就正式开始了上班族的生活。之前的工作时间是标准的八小时制,但是总经理担心早起过马路太赶怕有危险,就把时间推到八点半上班了,但是下班时间还是晚上六点,可能不是值得提的一件事,但是我觉得这正体现了公司对人的看重。开会的时候是严肃的,下班的时候大家又都回复了本来的模样,该开玩笑开玩笑,没有什么等级阶级之类的东西。        说实话,当初决定来实习一方面是学校也没事了想着还不如早点出来见见世面,另一方面是公司的实习待遇确实不错,据我了解,身边的同学实习工资一般都在1500-2500左右,最多就是管个住宿,千喜鹤这边拿着3000的工资外还包住宿,对应届生来说确实是个很大的诱惑。其实来之前在网上看了一下别人对千喜鹤的评价,总的来说骂得多夸得少,我确实犹豫过,后来又想亲自来看看又不会怎么的,大不了做不来就走人,再加上刚好赶上校招的第一批培训,然后就忐忑不安的来了。现在想来,我庆幸自己迈出了第一步,也没后悔来到这里。     我的岗位是市场开发经理助理,之所以选市场有两个原因,一是我觉得市场方面的工作是最公平的,开单就是开单,业绩就是业绩,这是做不了假的,只要有能力肯定是能混出头;二是我觉得市场是最能锻炼人的,现代社会不就是跟人打交道的吗,人来了后续的也都好说了。当然肯定有的筒子想的不一样哈!        现在我一边负责市场,一边负责人力,虽然事很多,但是学到了在学校里学不到的东西,这句话有点官方,但是事实就是如此。以前我不知道什么是提点,不知道什么是劳动合同台账,不知道就餐模式有哪几种,不知道合作模式是什么,不知道什么是劳务什么是大包,不知道什么是有效什么是可跟,甚至不知道怎么与人沟通,现在我可以很轻松的说出来劳务与大包的区别,有效与可跟的不同等等。但是学无止境,工作的越久越发现自己不知道的东西越多。 发帖不为别的,就是想感谢一下工作以来前辈师兄对我的照顾,以及身在这个集体中的舒适感。大家有什么问题可以直接跟我交流,都是大四党,我觉得会有很多共同话题的哈 属于我们的毕业季,不论你在哪,都要记得不忘初心,因为你知道,没有梦想,到哪里都是流浪。
分享
1
先马后看
樱落成思
合肥工业大学·2022届

学习编程道路上的必备书籍之C语言篇

1.书名:《C语言函数大全》 PDF或网页链接:http://t.cn/Rfw85Hg 2.书名:《C 语言解析教程》 PDF或网页链接:http://t.cn/RfwRQuE 3.书名:《C语言深度解剖》 PDF或网页链接:http://t.cn/RfwRs6f
分享
10
先马后看
爱喝烧仙草
上海外国语大学·2022届

最后3个月,考研各科超详细复习规划

考研党转眼就迎来了预报名,之后还有下个月考研正式报名。 除了10月10日考研报名正式开始之外,11月中旬现场(网上)确认,12月考前打印准考证。其中,又以考研正式报名最为重要。 除了这三件程序性的事情之外,最重要的莫过于考研复习。在这三个月,能否充分利用时间,能否有所突破和提高,能否保持平稳的心理和身体状态,都直接关系到考研成败。事情很多也很重要,但是同学们也不要过于紧张。只要抓住时间节点,按照程序办事就可以。 一.总体规划 每天复习时间最好不要超过11个小时,有效复习时间保证8个小时。而且这段时间,必须要注意复习的效率了,提高效率比延长学习时间更重要,尤其是面对政治记忆性的内容。 数学、英语需要十分清醒的头脑才能思考钻研问题,一般的人学习最清醒的时候是上午,也有的人是上午和晚上。一般来讲,按照前一阶段的学习作息习惯就好,然后坚持下去。 在复习科目安排上(指的是政治的各科和英语的各科)最好一个晚上复习一门。例如,周一晚上就看英语阅读,周二晚上就看专业课,周三晚上就看英语作文,周四就看政治的某科等,用整块的时间进行单项突破效率会大增。 二.英语 1、继续记单词。单词直到考前都是不可以或缺的基础,应该坚持每天记单词,利用零散时间记单词,不贪多,只求记得牢固。注意一些特殊用法,和熟词僻意。 2、研究真题。同学们注意,这里用的是"研究"这个词,而不是"做"真题。很多同学所谓做题,只是比比划划在脑子里过一遍,这样完全没有真正发掘出真题的价值。真题都是指向性非常高的,英语一有很多真题,而且逐渐可以摸索出命题人的大致思路,做到猜透命题人意图是最好不过的了。 3、保持阅读理解训练,严格控制答题时间 4、开始作文训练。英语大小作文总共30分,是除阅读之外的第二大得分点。更重要的是,作文相对阅读理解比较容易得分。只要能写上及时是一句话也能得分。有一种流行的观点认为,在考前一个月只需复习一下作文就可以了。其实,这种做法可能只对学霸适用。 如果你不是学霸,那么从现在开始每天至少安排一个小时复习作文绝对有必要。千万不要把如此重要的一件事情放在考前一个月。同时,强烈建议大家在复习作文的时候不要押宝在几篇模板上面。要细致研究范文并背诵几篇,整理词汇运用、固定搭配及篇章结构的安排,并且要坚持练笔。如此真正下功夫才能有真正的收获。 三.政治 1、结合新大纲练习真题,按大纲识记要点 2、阅读大纲解析,并标记重难点考点。每天看1.5-2小时足够了。解析的每一句话、每一个字都要看(最后的时政部分不用看)。其中,哲学和政经部分必须全部理解。 3、买一本配套的练习册,按章训练。至于是看完一章就做一章的习题或看完一部分就做一部分的习题,根据你的习惯来就好。不要把答案写在书上,因为这些题你不止做一遍。做错的题要返回到大纲解析中,把相应的知识点再仔细看一遍。 4、整理归纳错题本。没有时间整理的话可以将做错的题标记出来,相应的知识点也要在大纲解析中着重标记出来,这些都是你没有掌握好的知识点,一定要加强复习。还有一个建议,可以把你错选的选项记在练习册的解析部分,提醒自己:我上次犯了这样的错误,下次不能再犯了。 四.数学 1、开始建立比较完整的框架的体系,铺开自己的知识体系。对近15年的真题进行分类总结,通过对真题的讲解和综合练习检验知识水平与实际考试要求的差距,发现知识漏洞并及时补强。 2、整理错题,寻找自己的薄弱问题,以便我们可以在提高阶段进行专题的复习。 3、在做真题之前,先将真题进行简单的分类,然后从真题的类别入手,来进行复习。通过真题讲解和训练。进一步提高解题能力和技巧,对考试重点题型和自己薄弱的内容进行攻坚复习,达到全面掌握,不留空白和软肋,让训练达到或稍微超过真题难度。 五.专业课 专业课复习当然是以研究真题为主,只不过这个时候除了前文所说"研究"真题考查知识点、命题思路和高频考点等之外,最重要的是要"动手做题"。 所谓研究真题,光看不做死路一条。因为,只有动手做才能进一步巩固所学,才能真正发现自己在哪些方面有欠缺,也才能真正总结掌握出真题的做题方法和技巧。 无论是名词解释,还是简答、论述和计算题,对于每一类型的题目,同学们都要总结出相应的答题思路。 例如,第一题名词解释,要求解释某一个与本专业有关的历史人物。参考教材上有关这位历史人物的论述很多,但是都比较分散,答题的时候需要总结。但是到底写哪些东西呢?这就需要同学们在仔细分析研究,然后把答案写下来,特别是要点一定要写到位。 名词解释要当做简答题来做,简答题要当做论述题来做。怎样才能把答案要点有效组织起来需要下大力气。
分享
11
先马后看
太美的承诺只是沉迷ヘ
利兹大学·2022届

技术岗回馈牛客: 实习和正式工作后的经历&建议

本人去年应届生,现就职于某二线互联网公司。 目前入职了半年多也顺利转正,算上去年实习也差不多工作8个月了。 (感想和经历不想看的话,校招建议在后面) 先谈谈去年实习的感想和经历,去年5月份菜鸡一个运气好才拿到了实习offer第二周就答应入职了。 作为菜鸡啥都不会啊(连Git都不会用),第一周基本就是看看代码,熟悉下开发环境。第一周基本没啥事,想必大家现在的实习也是如此吧。 但可怕的事第二周就来了,老大给安排了需求,说有不会的不懂的随便问。 作为萌新菜鸡没有一点经验,虽说有导师带但是瑟瑟发抖啊。 然后给了wiki,给了Prd,what?wiki和prd是啥?我都不知道。 排期10天,10天懂的同学应该知道是很大的活了,然而为了这个需求我整整连续上了14天班,没错你没看错,上了14天,周末也去。 索性也照猫画虎框架来照搬(类似参照copy改改)。 深深的记得好几个接口搞不明白参数,让导师帮我看,最后发现是一个大小写字母错了,我fxxxxx佛慈悲。 然而提测的时候让测试小哥疯了,提了两位数的bug,然后测试小哥下来帮我改bug,没错我就是这样菜。 以上是简单聊下实习做的项目过程总结一下(实习做了很多项目,这个算最难也是第一个),其实周围同事大不了你几岁都是90后,人都很好所以有什么不懂的不要不好意思问,当然态度要好,要让别人看到你的努力和认真。 因为是实习生也不会因为你的问题和出错对你如何如何,相反会帮助你快速融入工作状态和解决问题。 老大跟我常说的就是一定要学会沟通,有时事情就是良好的沟通才会更好的解决,技术是工作的一部分,沟通才是关键;当前遇到问题前要学会自己思考和研究,你所遇到的问题别人一定遇到过,并且会发布到网上都有解决办法,这样自己踩坑才能成才起来。 再说说正式入职,2月份正式入职了。一到公司很熟悉的环境和氛围,每天差不多1095或者10105吧双休不加班。 因为实习过所以都很轻车熟路,很快的进入工作当中。需求来了也不瑟瑟发抖了,拿起来就做不懂就问没什么好怂的。 正式工作后最大的感觉就是自己的责任感更重了,因为你是正式员工了,要有责任意识了。 还有就是你要自己去把握项目进度和安排了,去沟通协调各个部门了,这恰恰也更能锻炼沟通能力。 沟通的态度和学会说话也是一门艺术,和测试、产品都处的不错所以需求做起来还是比较顺利的。你可能会问加班咋样,加班肯定是会加班,但也还行平均一天2小时吧。 工作这半年就是感觉坐的时间长腰疼,眼睛也疼。身体是不太行了(愁)。 其实如果你有实习的经历,正式工作没啥太多的感想。如果你第一次入职更多的是新鲜感和对工作的期待感。 目前完全可以独立承担需求项目,更新维护组内代码,造些轮子,调研东西等等,成长真的是在项目中去慢慢积累慢慢踩坑,不要偷懒不要糊弄。 对于现在校招的建议: 十一后各大招聘蜂拥而至,若你现在实习中不管哪个公司拿不拿到转正offer都赶紧溜吧,拿到的话还想再找找就回去复习面试,总结实习项目更新简历;没拿到更要溜了同样回去准备。 正式秋招简历怎么写,一页简历简洁干净就好,重点把你实习经历项目的部分,然后结合面经的基础可能会问到的,略吹点牛逼,面试问的话你回答(比如你优化了多少,提高了多少量,带来了什么结果,用了什么方法),面试时间较短也不会再深入问你,因为面试官听你回答差不多就心里有数了。 怎么准备: 想必大家参加过春招实习了,那么应该都会有博客或小本子记录面经和重点部分,其实看多了你会发现面经都大同小异。 怎么准备基础知识部分我就不多说了,没什么建议,建议就是看面经、总结面经、不行就背面经、多手撕练代码。 说说面试吧: 面试现场一般40分钟,手撕10分钟,基础10分钟,问项目和其他20分钟,现场一般大概3轮,大厂4.5面没啥建议都是高P面你,问的千奇百怪深的很看命吧。 前面2轮你要怎么突出你? 举个例子比如问到一个优化点,好像面经都那么几个,那么你就需要说出不一样的并且结合你自己项目说,并且你要会引导提前自己说自己会的。面试官问那你介绍下你的项目(大家都会遇到这么问的吧),balabala说完,到这里肯定会问你遇到什么问题,叮!前面说的优化,你肯定提前要准备说出不一样的地方,同时把你这个项目遇到的所有坑和问题都说出来,比如遇到兼容性问题,并且怎么解决的并且很自信的那种说,再说下解决后提高了多少(此处可以小吹一下没关系),现场面试自信并且有逻辑的表达是超级加分的,因为这样面试官会觉得你真的是做过,并且解决过问题而不是背面经那种。据我经历宣讲会现场直接面试通过率更高,一定要去学校的宣讲会,更要多打听会去哪些学校直接去就好,不然你会错过好多机会。到hr面试的时候更不用慌了,差不多是准offer了,到这里舔就完了。 时刻调整心态面试不要怕,失败了就多总结经验,所谓熟能生巧。牛客的面经我当时几乎看遍了,每一次都去搜答案研究下,肯定的说牛客所有面经都研究过,二线厂可以随便拿offer。那么对于公司怎么选肯定是大公司优先,然后是自己喜欢的工作,其次横向对比部门(找人打听),如果都差不多就面向工资编程。更重要的我觉得是leader和导师,有一个好leader和导师太重要了,我幸运的都遇到了;第一会带你迅速成长,第二对你升职加薪也有帮助,为什么有的人升的快有的人升的慢。还有工作中也多留个心眼,比如跨部门沟通不经流程直接提需求的,你自己接了出力可能还不讨好,leader不知道你就自己做,做不好算谁的,真正有问题了就是你自己的锅。 还有由于工作了确实会忙,常常和家里人联系下,我们的长大他们的变老,最遗憾的事情就是我们的成功却抵不过家人的变老速度,当视频看到老妈瘦了,心里真的挺难过的,假期多回家看看。 长大工作了朋友都很忙,出门在外没人想着你惦记你的,只有家人了;对,我还有女票,我觉得我委屈女票的,真的对我太好了,然而还老惹她生气,直男老哥无以言表借牛客表白女票比心。 记得看到一句话:人生没什么可怕,可怕的是你懦弱。 😉😉
分享
8
先马后看
🚛日常
中央民族大学·2022届

速来!21考研资料免费分享

21考研资料免费分享,自己取,保存完烦请顶下贴~ https://note.youdao.com/ynoteshare1/index.html?id=9a8ac343326f0955580061940878982f&type=note 有些分享不出来也么的办法
分享
评论
先马后看
陆仁贾
郑州大学·2022届

后台研发工程师应该阅读的好书推荐

后台开发工程师,必备书籍篇 1. <深入理解计算机系统>(第三版) 简称:CSAPP ---英文原本+翻译本都是豆瓣计算机技术书籍最高分.内容非常充实和完备,是每个计算机开发的同学必备书籍之一,原作者是美国三院院士,通俗易懂且深入浅出. 阅读评分:10分 (满分10分) 2. <现代操作系统>(第四版) --- 操作系统书籍很多,可选的还有<操作系统概念>等,我两本都看过,更推荐这本,因为翻译上和知识点的延伸上这本都稍好.主要是理解进程线程,系统调度和信号量等算法设计相关,更多的是思想上的学习,把自己当成操作系统的设计师,学习大师一步步的完善系统.如果单纯准备面试笔试,买<王道论坛 操作系统考研辅导>或<天勤 操作系统考研高分笔记>,上面全是知识点的堆积和题目,应试的话这种书最适合不过了. 时间充足肯定要看这种大砖头,里面的内容终生受益. 操作系统基础请必备一本以上推荐.  阅读评分:9.5分 3. <TCP/IP详解 卷1:协议> --- TCP/IP一共三卷,我跨专业所以只看了卷一和一些其他计算机网络书籍.有些人可能觉得这本书太老了,是不是不适合了.答案是否定的,最主要是作者斯蒂文森突然去世,让我们错失他的众多书籍的再版,但是本系统书籍出版的时候,居然出现了几百篇论文的引用,大家都知道,写进书里的东西都比科研要滞后很多,可想而知本书的魅力多大.你的面试官当年也是学的这个哦.可选还有 <计算机网络 自顶向下方法>(主要是从应用层向下讲到物理层,可能适合某些人,评分9分左右,很多人推荐) <计算机网络 谢仁希版>(据说国内教科书的良心之作,被骂的最少,推荐最多的国产技术读物,很多学校上课都是这本,9分). 计算机网络请必备一本以上推荐 阅读评分: 9.5分 4. <算法>(第四版) --- 名字虽然叫算法,但是主要讲的还是数据结构的内容,内容非常详细和易懂,由于是JAVA版,所以作业和例题都做了封装,网上有连接可以下载全部资料,当然作者还有公开课.特别是红黑树部分讲的非常清楚,(面头条的时候妈妈再也不怕问红黑树了),Robert其实就是红黑树的改进作者之一.本书的缺点是没有图部分,如果准备笔试这本书是不够的,笔试的时候图问题还是比较常见的.知识点一天就能看完一章,但是习题要做1-2星期,一定要做哦  阅读评分:9.5分 5. <数据结构与算法分析 -- C语言描述> --- 维斯的这本书还有C++和JAVA版,但是这么多翻译人翻的的都不算太好,这本已经是矮子里面拔将军了,翻译的还算能看,英语好的可以去看原书.维斯是这方面的教育大师,书写的非常给力.书上的题目也选的很不错,面试笔试原题很多.  阅读评分:9分 6. <数据结构 C++语言版> --- 邓俊辉老师是清华的ACM教练之一.书的内容非常有深度和启发,适合有一定数学基础和数据结构基础的人做强化学习.本书有完整的配套视频在学堂在线免费观看,书籍是双色印刷,看起来非常舒服,我是看完维斯的书再学习的这个,收货非常大.ps:邓老师接受采访的时候说书里的内容比清华上课的时候讲的要浅一点,好的,我会跪着看完的...  阅读评分:10分 7. <算法设计与分析基础>(第三版) --- 上面提到的都是数据结构的书,设计的算法只有排序和查找,真到了刷题的时候,没有算法思想肯定是不够的,那么这本就能很好的解决. 这本是我研究生算法课的教材,翻译的不错,内容很全也很庞大,算法研究上不能和<算法导论>并论,但是当作自学读物,这本更适合一点.书上有五六百的例题和习题,都是经过精选的,笔试面试大量原题书上都有. 以下更新C++篇相关书籍,JAVA党往下跳 8. <C++ primer>(第五版) --- 800多页的巨物,C++开发者必备词典级读物.完整的讲解了C++的基本语言(请注意基本两个字),第五版涵盖了C++11.也就是业内说的C++2.0 , 特别是智能指针和移动构造等新知识点无论工作和面试都是必会的内容.千万别买错买了<C++ primer puls>,那本完全不能和这本相提并论.即使你是C++新人,一定要读这本.b站搜AV:av19038490 侯捷老师的课,讲的不仅是不错. 阅读评分:10分 9. <系统编程APUE>和<网络编程UNP>是每个C++服务端开发者必备的技能之一.这两本都是斯蒂文斯的遗作,后续更新全靠同行在支持,奈何同行都不怎么耐操,曾经好几个人接手更新都被骂的很惨,现在更新的时候新作者的名字都不敢写,还写的原作者~. 阅读评分: 10分 10. <Linux系统编程手册> --- 如果没人教的情况下,纯自学,这本书比上面两本更适合一点,我AUPE看完后看的这个,醍醐灌顶,瞬间明白了很多.很多面试遇到的网络编程问题,书上都有答案,由于1176页,所以分成了上下册,这种情况下还是很厚,所以出版社选的纸张不怎么厚,质量比较一般. 和上面两本2选一,个人更推荐这本 阅读评分:10分 JAVA篇相关书籍,C++党向下跳 1. <JAVA编程思想>(第四版) --- 当时看JAVA就直接看的这本,由于有点C++基础,所以上手很快,书比较老了,java1.5-1.6版本,但是没有愧对编程思想4个字.能学到很多东西.JAVA学习必备书籍之一  阅读评分:10分\ 2. <深入理解JAVA虚拟机>(第二版) --- 不了解JVM,你说自己写JAVA的,可能会被嘲笑,同类型书籍,这本书推荐最多,我也看的这个,没看完,但是内容非常棒,如果自己能找到同行一起做实践,那么成长会非常快.JAVA学习和面试必备书籍 阅读评分: 10分 3. 如果你看的<JAVA编程思想>,那么这本就必须要看了,毕竟JAVA1.8是个大的更新点,虽然很多企业但是还是1.6-7版本,但是面试官已经逐渐开始面1.8上面的内容.  阅读评分:8.5分 4. <JAVA编程的逻辑> --- 这本书是作者公众号--老马说编程 的组合书籍,大家可以去看下作者的公众号,如果内容很喜欢,可以买这本,至少我很喜欢这本书,有基础内容,有源码分析,文笔也很好   阅读评分:9分 由于我转JAVA时间小半年,之后又专心学C++了,所以能推荐的东西真的不是很多,希望各位同行能做出补充,比如并发相关的书籍,我虽然买了几本,但是都没看,不能瞎推荐 以下是单个领域的重点推荐书籍,不区分语言 1. 你是否因为代码bug太多而被吐槽,你是否因为不知道如果修改代码而苦恼,你时候会因为代码太丑而找不到女朋友.... 那么这本<重构>就是来拯救你的良药. 但是切记,看完给自己代码做实践就好,别傻不拉几的跑去和leader说:要不我们把xx系统重构一下吧!! leader会对你表示强烈的肯定然后懒得理你. 阅读推荐:9分 2. <高性能Mysql>(第三版) --- 重点了解各个索引优化  阅读推荐:9.5分 3. <深入理解Nginx>(第二版) --- Nginx设置和源码解析都非常的棒,作者写这本书也非常用心,源码解读是一行一注释的形式,典型的源码走读风格,非常nice.C++服务端开发必备书籍之一  阅读推荐:9.5分 4. <Redis设计与实现> --- 作者图形结合源码剖析非常的给力,有侯捷那味,我读了3遍,结合源码看的.面试的时候源码层面和面试官讨论非常加分,对我找实习和秋招收货最大的一本书    阅读推荐:10分 暂时只介绍这些我看过的书籍,还有一些看过的但是也不知道怎么评价的好书没做简评了,如<流畅的Python>,<机器学习实战>等.还有很多好书我孤陋寡闻没人读过的,欢迎各位大佬下面做评论或私聊我,我会补充上去,为后来者做点小贡献.希望各位都能读好书,好读书. ps:我看书的方法是快读法,读完一章开始给自己讲解,就是费曼学习法.不是每本书每个章节都掌握到完美才去读下一章或下一本,重点知识要重点掌握,难点不一定是重点,但是20%的难点会浪费你80%的时间. over~
分享
4
先马后看
莫多说
天津财经大学·2022届

通信工程职业发展与规划

以往相关帖子,关于电子信息类,通信类就业问题解答:https://m.wondercv.com/community/article/11089 很多同学问通信工程的规划和发展,但是很多工种我只是看到过或者听说过,并没有经历过,所以不能给出很好的建议。我之前也列举过一些可以从事的职业,有兴趣的小伙伴们可以根据自己的特长去做做相关调查,听听从事这方面的学长的建议更好,以免我在这误人子弟。但是我可以就我所从事的软件研发的经验给同学们给出一定的建议,如果你还在读书,可以参考下,如果你刚进大一,可以按着我所提供的路子一步一步来,四年后可以保证你不仅是通信工程的软件人才,而且能力会超出大部分学CS的同学。但如果你是从高中初中甚至小学就编程的大牛们,请忽略以下文字吧。 有些童鞋指出想在本科毕业后找到研发方面的工作最好及早转CS,此话估计会打击很多通信人的积极性。可能现在互联网太火了,都觉得互联网才是真正的研发。大佬们说过:站在风口上,猪都能飞。现在互联网正是火了几年的风口,产生这样的想法情有可原。那么下一个风口是哪个?我认为是:物联网。物联网的英文简称是IoT,Internet of Things,意即万物相连。IoT的深远影响将会带来第四次工业革命,即国外专家指出的工业4.0,规模将会数十倍乃至百倍于现在的互联网。现在各大IT厂商都已经为物联网布局了好久,想必童鞋们已经有所耳目。我觉得物联网简直就是为通信工程量身定做的一个职业,为什么?因为软硬兼施,不仅有软件,而且必须与硬件相结合,同时协议框架影响巨大,当然云计算、大数据之类的CS专业也很重要。通信工程的专业课程在这方面基本上都用得上,如果软硬同时精通,将会是IoT领域不可多得的人才。同学们可以做下相关调查。首先说在前面,如果列举出的书目国内有英文影印原版,务必选择英文原版,因为国内的翻译水平参差不齐,很多翻译错误,而且语句不通,还不如英文原版来的顺。同学们不要惧怕原版书籍,阅读技术文档比四六级的阅读题好多了,顺便也把英语巩固下,岂不一举两得。 好了,接下来我会就我的经验列举出一些通信软件工程师修行的计划和书目,有兴趣的同学们可以参考下。 (1)语言类 C/C++:如果连C都学不好那基本上与通信的研发无缘了。教材毋庸置疑是K&R的C语言圣经《The C Programming Language》,这是基础中的基础,务必打牢。进阶教材:《C和指针》、《C陷阱与缺陷》、《C专家编程》、《C标准库》。这前三本与K&R合称C语言四大圣经,《C标准库》也很经典,介绍了所有标准库函数的实现原理,可以研究下。C++教程可以选《C++ Primer》,很厚的砖头书,不过啃透之后C++也可以算得上熟悉了。进阶教材:《Effective C++》、《STL源码剖析》、《C++ Coding Standards》。为什么要学C++?因为这是个面向对象的世界,而且我之前也说过老外喜欢用C++,如果想进外企C++务必要好。 Python:为什么要学Python?因为方便,好学,而且用处大,不仅在文本处理,网络编程,而且系统管理方面等都极其有用。我现在做那些路由协议软件bug分析的时候,光产生的日志文件都是几十M甚至几百M,用文本编辑器打开都要半分多钟。这时候如果跑一段脚本代码做一些字符串处理,将自己需要的内容生成另一个简单的文本再打开方便多了。推荐教材:《Python核心编程》,也是一本砖头书,不过不需要每章都读,选前面的一些基础东西看下,后面的进阶内容留着需要的时候再看。进阶教材:《Python Cookbook》、《Python for Unix and Linux System Administration》。前者是一些Python技巧的总结,各个方面都有涉及到,后者是Python在Unix/Linux系统运维管理可以用得上。 Objective-C/Swift:可能同学们更疑惑了,为啥要学这东东?因为我大苹果啊,工资高啊,待遇好啊。这是一方面。我觉得这两个语言值得学是因为在现在的物联网领域,Apple目前是绝对的老大。国内的IT公司还在对智能家居进行深度布局,但是Apple的智能家居产品已经在开卖了,iWatch、Hue智能灯泡等等都挺火。更重要的是苹果有一套自己的智能家居开发API:HomeKit。到目前为止还有哪个其他厂商会有自己的一套智能家居API?而且苹果貌似在和一些协议组织联合定制物联网协议框架。现在物联网还是半温不火的状态,很重要的一个原因就是没有统一的协议框架,各大厂商只能各自为阵。如果谁能插手协议制定,谁就有发言权。苹果目前做到了,所以以后国内外在智能家居产业支持苹果设备的我认为会很多。因此这两个语言值得学下,技多不压身嘛。推荐教材为苹果的官方文档,可以在苹果的开发者中心下载。 (2)嵌入式 51单片机:这是最好入门的单片机,把51系列的8位单片机功能掌握后,嵌入式一些基本功能也就熟悉了,比如GPIO、ADC/DAC、PWM、USART、SPI、I2C、中断、定时器、看门狗等等,对以后学习更高深单片机也就有好基础。学51的话首先去某宝淘一个开发板,不贵才100多,该有的功能都会有,然后就是不断学习编程实现功能了。教材的话目前国外的我还没不知道,如果有同学知道请务必告诉我哈。国内的教材我推荐一套(不是广告啊,我是真觉得写得好):《51单片机应用从零开始》、《51单片机应用实例讲解》。两本书的作者为同一人,写的非常细致,这两本搞定后51也就摸透了。但是这两本书全部是用的汇编语言,貌似没有用C,因此要自己用C实现。这位作者还有另一本书我觉得也挺好,《电子设计从零开始》,都是针对小白的,如果想做电子设计竞赛的同学可以参考下。 STM32:为什么要学STM32?因为Cortex-M系列的32位单片机功能强大,功耗低,而且价格低廉,正在取代8位单片机的地位(但并不是说8位的以后就无用武之地了)。在物联网领域Cortex-M系列的单片机绝对大有作为,因此想从事物联网开发的同学务必学好。首先也是去某宝淘一块开发板回来,接着就学习文档进行编程。教材的话相关开发板都会有配套的教材,可以先学一下。熟悉之后最重要的教材就是相关芯片的《STM32 Reference Manual》和《ARM Cortex-M3权威指南》,前者对相关芯片的所有功能寄存器进行了详细讲解,后者对Cortex-M内核框架和相关环境开发做了讲解。另外还有一本《Cortex-M3之STM32嵌入式系统设计》我也觉得不错,这本书讲了怎么用C++来封装STM32相关函数。学习STM32的时候建议首先按着教材,对着固件库函数先实现各个功能。之后再深入研究相关寄存器,这时就会对固件库的函数为什么会这样写一目了然了。 Cortex-A系列芯片:Cortex-M和Cortex-A都是属于ARMv7技术框架的东东,但是M系列是属于微控制器和低成本领域,作为工业控制是不二选择,但是如果想要跑诸如Linux和VxWorks之类的操作系统就有点吃力。A系列为高端领域,可以很好的支持Linux、VxWorks、WinCE等操作系统,现在手机领域的大半壁江山都属于A8和A9。由于答主目前也是在学习这一块,还没有深入了解,因此不能给出很好的建议。也希望熟悉的同学能赐教,先谢谢哈~! (3)系统修炼 Unix编程:Linux系统的重要性想必大家都知道,因此想进行通信的开发必须学会用Linux环境进行编程。推荐教材绝对是Stevens大神的六本书(如果能写出一本之类的书就足以名垂千史,Stevens大神写了六本。。。):《Unix环境高级编程》、《Unix网络编程》两卷、《TCP/IP详解》三卷。第一本书国内简称为APUE,这本书对UNIX系统调用函数进行了极其详细的讲解。学习APUE最好配合另一本经典教材:《Unix/Linux编程实践教程》。这本书会教你怎样实现Linux环境下一些常见的命令,比如ls、pwd等等,后面涉及到了unix编程的所有方面,包括线程、IPC、socket等等。这两本配合着看有奇效,谁吃谁知道。《Unix网络编程》国内简称为UNP,第一卷介绍了Unix环境下的各种网络调用系统函数,第二卷讲解了IPC。把第一卷吃透后Unix网络编程就不在话下了(其中SCTP部分可以跳过,貌似用的很少),第二卷可以选着看。《TCP/IP详解》着重看第一卷和第三卷,第一卷介绍了从二层到三层的一些主要协议,第三卷介绍了HTTP等应用层领域的协议,第二卷的话讲实现,有兴趣可以看下。把APUE、UNP第一卷、TCP/IP详解第一卷都吃透之后,我可以保证你毕业的薪水不会少于1W。 数据结构与算法:数据结构在软件修炼中很重要,因为程序=数据结构+算法,基本的诸如链表、堆栈、二叉树等等必须要熟悉,这些在通信领域中用的太多太多,虽然代码可能不用你写,但是还是对实现过程要了如指掌。算法之类的在具体工作中用的很少,反正我到现在为止还没碰到几个要实现的复杂算法,但是了解下总是好的。学通信的同志可能这方面会较CS的同学较欠缺,CS的大牛们都会去刷ACM题库,通信的子弟们好像很少有这种热情,如果感兴趣可以刷下。推荐教材:《数据结构与算法分析--C语言描述》,很经典的一本书,对复杂度描述、各种数据结构做了深入讲解,而且附加相关C代码,啃透了内功也算是深厚了。另外如果觉得这本比较难的话可以从国内的一些小白教材开始,比如《大话数据结构》、《啊哈!算法》都是国内的上乘之作。《算法导论》的话,如果你时间充足,毅力顽强可以挑战下,如果啃完了你会是大牛。 操作系统:这是通信的薄弱环节,据我所知通信工程很少有开OS这门课的,反正答主当年是没在课堂上学过,全是课外自学的。学了OS可以对系统调用函数有深一层次的了解,会知道进程怎样组织和切换,内核级线程和用户级线程的区别,虚拟内存是怎么回事等等。如果想从事驱动开发的话,OS功底就要很好了。推荐书籍:《现代操作系统》。这是一本OS的经典书籍,而且比较容易读懂,适合入门初学者,着重学习 2、3、4、5、6章。对OS相关概念熟悉后,就可以阅读Linux源代码了,推荐书籍:《Linux内核设计与实现》,比较适合入门。另外像STM32单片机可以跑uCos操作系统,因此如果对这方面感兴趣学下uCos,代码开源并且简单易学,可以先学习uCos,然后再学习Linux之类的,推荐书籍:《uCos-II嵌入式实时操作系统》。 以上是针对通信工程软件研发的一些建议和书目,这些都弄通之后你将成为一名极其优秀的通信软件研发工程师了。答主只是一名普通的工程师,上面有些书我也是只看了一部分或者甚至还没开始看,也是在不断学习进步的过程中。所以通信领域是一个落后就要挨打的领域,必须不停的学习知识。 另外有些同学问到网络工程师该怎么培养,我可以给出以下建议: 首先要明确网络工程师的具体职责任务。 网络工程师要组网,因此必须对各种路由协议要熟悉,比如OSPF、ISIS、BGP、RIP、MPLS等等。 另外确实网络工程师不需要写代码,但最好还是学会一门脚本语言,因为在组网配置大型网络的时候命令会很多,这样一行一行敲会很累,因此一般都会运行脚本文件。学习的时候可以去学校实验室,一般都会提供具体厂商的通信设备,如果没有这条件可以下载相关模拟器,Cisco和华为都有自己设备的模拟器,可以直接在PC上模拟组网,效果和设备是一样的。 然后就要学习各种协议,从二层到三层到大型路由协议,每个协议的功能、报文、状态机都要熟悉,这样才能对各种组网能随身所欲。之后就要熟悉设备的命令行,因为路由功能都是相同的,因此不同设备的相关命令行都是相似的,可以一通百通。推荐教材:Cisco的一系列考证官方教程,从浅到深依次为CCNA、CCNP、CCIE,都有相关的培训教材。 另外华三出了一套教材,《路由交换技术》,一共好像4卷,应该也不错。另外《TCP/IP路由技术》两卷书是学习所有路由协议的不二选择。 MPLS也应当好好学下,因为现在核心网中都用MPLS,并且与L2、L3 VPN结合的相当好,所以很重要,推荐教材:《MPLS技术架构》、《MPLS与VPN体系结构》。前者是带领答主入门MPLS协议族的书籍,后者介绍了L2、L3 VPN方面的内容。等踏上工作岗位后,应该还要研究具体协议的RFC文档。因为答主对MPLS比较熟悉,因此列一些MPLS相关RFC文档:RFC3031(MPLS框架协议,重要)、RFC3032(介绍了MPLS报文的组织)、RFC3209(RSVP-TE协议)、RFC3036(LDP协议)、VPN相关draft草案。 另外有些学妹们问到女生在通信领域好就业么? 对此我只能做这样的回答:如果你想从事研发,最好去读个研,因为女生读研出来之后做研发会很有保障(不是性别歧视啊,是我所见到的事实);如果想做测试,本科毕业应该就够了,毕竟不用编码;另外一些像工程维护之类的,不建议女生,你愿意一年到头风餐露宿的在各地来回跑么?据我所知一些通信设备国企里面研发和测试的女生占到了三分之一甚至更多,因此可以考虑下。 学妹们不要灰心,通信公司都是狼多肉少的地方,你们进去后会很受欢迎的哦,至少个人问题不用愁啦。
分享
3
先马后看
风居住的街道
湖南师范大学·2022届

冷门艺术类专业女生的求职路【媒体、广告、互联网、美术馆、画廊等】

写这个帖子,主要原因是我从未在各大社区上看到跟我同专业的同学的帖子,所以我想,我这个帖子也许对艺术类专业的同学有一点点参考意义。我的专业有多冷门呢,艺术类,大家能想到的也许是设计、绘画、音乐、电影等。但我的专业却是偏向理论的,是【艺术史论】。 我本科毕业于国内八大美院之一的艺术史论系,事实上这个专业在国外一般都设置在文学系下面,而不是美术学院。大三的时候,我确定了自己不适合也不愿意一辈子做艺术史或艺术理论的研究,于是研究生期间我就换了一个更为经世致用的专业,即香港中文大学的文化管理专业。 教育背景之外,我的实习经历主要在两个方面: 1.本专业相关的实习,如文博会、独立影展、文化调研之类。说实话我都不愿意把这些叫做实习,因为大部分都只是打酱油而已。 2.互联网。这是我本科期间唯一认真对待,并做了两个月以上的实习。大三的暑假我在新浪做产品运营,而这段经历也为我后来在互联网公司的求职铺了路。 但是这篇帖子的主要目的,不仅分享我的求职路,更是与艺术类专业的小伙伴们分享和讨论自己的心路历程和以后地职业选择。这也是这篇帖子的两个部分。 一.                    我的求职路。 先讲一下结果吧,那就是到目前为止我还没有任何正式工作的Offer,有一个实习Offer,以及拒了一个广告公司的Offer。事实上我的求职路很短,四月中到五月底。但五月底收到了一个自己很满意的实习Offer,为期三个月,所以我就打算一边实习一边找正式工作。但这一个半月的求职路,已经让我自己明白了我想做的是什么,想要的生活是怎样的。而这个实习Offer也是我想做的行业里的顶尖机构,所以我的职业生涯算是有了一个开始,因此才有了这个总结与反思的帖子。 1.      广告这个Offer是我最早的Offer,职位是AE,四月初就拿到了,但考虑之后我还是拒绝了这家公司。这家公司不是做传统广告业务,而是做互联网广告的,国内同类公司里能排上前五吧。事实上我对于广告业的知识基本上来自于美剧《广告狂人》,而《广告狂人》的时代背景是1950s-1960s,显然是不怎么适用于互联网广告业的。但是广告业的门槛比较低,我的思维也比较活跃,面试的时候,面试官让我现场想一个广告slogan,我的答案她应该也比较满意,于是我很快就收到了Offer。在考虑是否接收这个职位的时候,我阅读了好几本相关书籍来弥补我的广告知识,比如《从零开始做AE》等等。最后我拒了这家的Offer,原因不在于做AE辛苦、门槛低之类,而是在稍微了解了广告行业之后,我知道并不是我想要做的行业。 到现在我也觉得,虽然拿到了Offer,但这是一次失败的尝试,因为我那时还没有想出来我想做什么就开始贸然行动。 2.      互联网由于互联网行业我只做过产品运营的实习,所以这部分的言论也许有失偏颇。整个四月中下旬我在同时忙着两个面试,其中一个就是腾讯的暑期实习生面试。我报的是深圳的产品岗,最终走到了终面,但也跪在了终面。不过完整了经历了腾讯的面试流程,在此记下,有需要的学弟学妹们也可以参考。 初面:群面,10人一组,时间我记得是40还是50分钟,忘了。我们组的题目是,我们作为一个团队要研发一个新的音乐类产品,列出了我们团队的优势和劣势,再给出了该产品可以做的十几个功能。因为条件限制,我们只能选取其中3项作为主要功能,我们组内必须达成统一保留哪三项,并给出自己的解释并自圆其说。我在组内既不是leader也不是timekeeper,能进入下一轮面试,应该是我在讨论中很活跃,并提出了自己比较有价值的观点吧。我感觉群面没必要很抢眼,表现出自己的思考和想法就够了。 二面:专业面,30分钟。面试官是群面的面试官之一,她还记得我在群面时候的表现,问了一些群面相关的问题,比如给自己的表现打几分之类的。我建议以后面互联网的同学们一定要关注一下自己所报区域的主要业务是什么。我在专业面之前了解到今年的产品岗实习生主要是做游戏运营,所以针对游戏做了些准备,而这些准备在面试中80%都用到了。比如说,你最近在玩什么游戏?它们的优缺点?向面试官推荐一款游戏,只能用三句话。为这款游戏写一个100字以内的宣传文案,你会怎么写?30分钟的面试里,聊游戏聊了有20分钟吧,所以事先了解所报岗位的业务是很有必要的。 三面:HR面,30分钟。这一面就比较程式化了,没有问什么专业问题,主要就是挖掘你的简历。所以简历一定要真实,一定要细节,而且每个细节都要有故事和经历,否则遇到腾讯HR这种抠细节的就真的死定了。终面:总监面,30分钟。总监面我跪了。在面试内容上跟专业面比较相似,但是更为严苛,面试官对你会步步紧逼,不停地质疑你,让你不停地感到自己简直是弱爆了。在得知自己没有通过总监面之后我并不意外,因为自己的专业储备不够,对互联网行业,对互联网产品,说到底也只是一个稍微有所了解的门外汉而已。而自己失败的第二个原因,我想应该是我并没有表现出对这个行业的积极和热爱,也没有强烈的入职渴望。 事实上,我非常感激企鹅在最后关头刷掉了我。 正因为最后的失败,我才想明白,最初投企鹅的职位,只是因为 1.我有过产品运营的实习经历,投这个职位比较有优势; 2.这个行业是目前的热门行业,前景和薪水都不错。早在新浪实习的时候,我就感觉虽然并不讨厌做运营,但也说不上喜欢,在心底里我对互联网行业并没有爱。企鹅给了我完整的面试机会,让我得到了成长,但最后刷掉我,让我思考自己是否真的喜欢这个行业,所以我真心感谢企鹅。 不过呢,互联网的产品岗不限专业,前景和薪水都挺不错,也很锻炼人,如果同学们真心感兴趣,还是很建议大家投递一下试试的。 3.媒体跟互联网一样,媒体行业也是我在还没想清楚自己的职业生涯要做什么的时候的一个尝试。四月中下旬同时备战的两个面试,除了腾讯,就是一家传统媒体,广东省三大报业集团之一。 我报的岗位是记者,这家报业集团的流程是简历筛选-群面-笔试-终面,我最终死在了笔试上。不过呢,跟腾讯一样,在这家媒体的失利反而让我开始反思我是不是真的愿意做记者?如果做记者,如果以后要跑我不喜欢的新闻线,我会不会愿意?我真的愿意一直在媒体行业工作吗?如果不是传统媒体,而是新媒体呢?我的一个朋友已经做了三年记者,目睹了她的生活状态,再结合了自己的兴趣爱好之后,我最终决定媒体也不是自己未来想要从事的行业。 4.美术馆、画廊于是,四月底我先后收到了腾讯与这家报业集团的拒信。接着,五月初,我返回香港开始对付我学生时代的最后一个期末。不管是本科还是研究生,我所在专业都基本没有考试,而是要完成论文、调研报告、企划书等。在对付期末期间我没有再投简历,而是将精力都放在了论文上面。我的其中一门课的期末作业是完成一次展览的策划,从展品选择、布置、运作时间表和流程等等,一切都需要我们自己来做。我花了很多时间与精力来完成这个作业,并且乐在其中。在做作业期间,我也想明白了一件事。那就是,我不能放弃我的本专业,我最想做的,还是与艺术相关的工作,我的职业生涯也想在这个领域发展。 于是,在交完作业的同时,我也完全明白了自己下一步的求职路要怎么走,那就是:美术馆,画廊或拍卖行。前面已经说过,我明白自己不适合做学术研究,所以我没有考虑过学术道路,至少暂时不考虑。 然而,艺术行业不像其他行业,比如快消、金融、甚至也不像我投过的互联网和媒体,艺术行业基本上不会有大型的面向应届生的招聘。于是我只能是各个击破。我列出了美术馆、画廊和拍卖行这三类机构的每一个我感兴趣的机构,然后去它们的官网或官方微博看它们近期有没有招聘计划,就算没有,能够找到联系方式的,我也一一发邮件向它们咨询,顺便推荐了自己。同时,我也借助了学校老师和师兄师姐们的帮助,告诉他们我想在这个领域工作,如果有工作机会,我会很感激他们的推荐。 截止到今天,我一共投了8家美术馆,3家画廊,2家拍卖行,正式工作和实习都投了。从数字上来讲,艺术行业不可能像其他行业那样海投(而且一旦确定目标行业,我也不会再海投),其中,4家美术馆和2家画廊给了我回复,拍卖行压根没有理会我。也对,我投的拍卖行都是行业龙头,还有保利拍卖那样的背景深厚的央企,怎么会搭理我这么一个经验不足的应届小姑娘?不过呢,比起画廊或拍卖行这样的商业机构,美术馆或博物馆的工作更吸引我。原因在于,美术馆或博物馆不仅仅是一个展出艺术品的地方,更有着学术与公共教育的功能,在美术馆工作我能感觉自己对社会更有益处,能对社会的进步起到一点点作用。相比起来,画廊和拍卖行的商业味就要浓得多。我不是清高看不起商业化或艺术市场,只是非营利机构更符合我的价值观。 五月底,我收到了中国美术馆的实习Offer,同时还在等广州的一个美术馆的面试通知。于是我的求职之路就暂时告一段落了,接下来就是去北京工作,并尽力在实习的这几个月期间找到正式工作,目标仍然是美术馆、画廊或拍卖行。 二.              心路历程与反思。 详细写下自己的求职过程,也是自己的心态和心理转变的过程。 整个过程看似顺利,但是自己其实是一个非常容易焦虑的人,焦虑到极点的时候还会出现心跳过快,身体发抖、呼吸急促等生理不适的现象。其间我经历了不少的迷茫、失眠、压力甚至崩溃。好在现在我已经明白了自己想要做的,也有了一个不错的开头。虽然还没有正式工作,但至少现在有了事情做,我也不怎么焦虑了。 而我对跟我类似冷门专业(比如艺术史论、历史学、博物馆学、文化产业管理等)的学弟学妹们的建议是,一定要想清楚你要不要放弃本专业。没错,这些文科或艺术类的专业是偏冷门,找到对口的工作并不容易,不仅没有大量的招聘,刚入行的时候报酬也不高。据我所知,这些专业的部分同学是被调剂,或出于各种原因,念这些专业并不是他们的本意。我有一些同学在毕业后放弃本专业去做了公务员、银行职员等常见的工作,但也有不少学姐学长一直在艺术行业打拼,并逐渐成长为行业中坚。 而我呢,选择这个专业是我自己做的决定,我从小就喜欢画画,小时候的梦想是做画家。后来自己读了不少艺术类相关的书,但是并没有想过要考美院。高三的时候无意间得知了艺术史论这个专业,各方面都与自己志气相投,于是试着报考,结果阴差阳错就考上了,于是走上了这条路。我自己也犹豫了很久我究竟要不要做这一行,就像前面所写到的,我尝试了媒体行业和互联网行业,但最终发觉,自己内心真正渴望的,还是跟儿时一样,虽然已经没有做画家的可能,但看来这一辈子也没法离开艺术行业了。 如果打定主意做这一行,那最好能够得到父母和爱人(如果有的话)的支持。因为中国内地的环境,大部分父母还是希望子女能够谋得一份安逸稳定的工作,如果父母思想比较保守,或者爱人想要安逸和稳定,那么做这一行是有比较大的压力的。幸运的是我的男友跟我算是同行,而我的父母非常的开明,念高中开始,我所有的重要决定,比如选专业、去哪儿读研和工作灯,都是自己做的。我是四川人,不过读书期间北京、广州、深圳和香港四个城市跑来跑去,父母也都无条件支持我,找工作的目标城市也是北上广深这四个一线城市和香港。没办法,要是回到家乡,我根本找不到想做的工作。这些年我也目睹了一些子女与父母之间价值观的冲突,比如我的一个朋友,职业能力非常优秀的姑娘,在北京做了半年记者之后被父母强行“绑”回了成都老家,把她安排到某国企做月薪3000元的办公室文员工作,而现在这个姑娘已经跟父母断绝关系,开始备考研究生。我从没有考虑过近国企或者做公务员,一来专业不符,二来性格不符。装逼一点说,我是“放荡不羁爱自由”的人。所以,啰嗦这么多,就是想说,如果寻求稳定安逸,或者价值观比较偏向家庭,或者父母比较保守,那么,做这一行也许会面临更大的压力。 前不久坐地铁,在地铁电视上的新闻节目看到说今年的毕业生达750万,就业压力非常大,毕业生应该转变就业观念,找工作的时候不要太凭着自己的兴趣云云。对于这种论调我是不以为然的,如果真有内心所爱,坚持自己的道路也没有什么不对。 最后啰嗦几句关于在香港和在内地工作的选择,不少人问过我“你会在香港工作吗”,我心里都很无奈。我放弃香港的工作机会也实属无奈,主要原因是语言。虽说香港的公司和机构发邮件发文件都是英语,但除了金融、投行等少数行业之外,大部分行业在跟人打交道的时候还是要用粤语的。而我由于缺乏对粤语学习的兴趣,对香港的文化环境也有着比较复杂的态度(爱的地方很爱,讨厌的地方也十分讨厌),所以我的粤语真的非常糟糕。综合考虑之后我还是倾向于回内地工作。不过,如果粤语流利,想体验香港的工作环境和节奏,或者待满7年拿永久居留权,那香港确实是一个值得体验的城市。 本来只是想对自己这段时间做一个总结,没想到居然写了5000字。 希望对相关专业的学弟学妹们哪怕有一点参考价值吧。
分享
18
先马后看
少冲浪多睡觉
华中农业大学·2022届

【🐎】12款超实用的开发框架总结!

从根本上说,框架是一个集合,或者更确切地说,是一系列文件(包括html文件、js文件、css文件等等)的集合,用于帮助或协助开发人员开发网站,或者从头开始开发基于Web的应用程序。 1.Apache Aurora Apache Aurora运行应用程序,并且通过很多不同的机器来提供长效的服务,此外还负责保证它们的运行。怎么做呢?当其中一台机器遇到技术故障时,Apache Aurora会自动将工作重新安排给正常的系统。 官方网站:http://aurora.incubator.apache.org/ 2.TouchStone.js 这是一款由React.js提供驱动的用户界面框架,用于创建和开发混合移动app。几乎用户想要的它都有,如导航功能、组件等等,因而是市场上最受欢迎的框架。 官方网站:http://touchstonejs.io/ 3.Schema Schema是一款模块化以及响应式的前端框架,易于使用且速度快,有助于你快速启动项目进程中极为复杂的web接口部分。它有12列网格,非常灵活,让你面对不同的视窗变换也有熟悉的体验。 官方网站:http://danmalarkey.github.io/schema/ 4.WordPress Plugin Boilerplate 正如名字中“Boilerplate”的意思,它从根本来说是一个模板。你需要做的就是在注释中说明你的工作、写好代码,然后,搞定代码。不用做任何无用功。可用于创建高品质的WordPress插件。 官方网站:http://wppb.io/ 5.Enyo Enyo是一款通用框架,可用于构建本地HTML5应用程序。此框架的优势是,跨平台兼容,并已经历过实战检验。用Enyo写的应用程序已用于PALM手机、惠普的TouchPad,以及LG的智能TV。 官方网站:http://enyojs.com/ 6.Mootor 对开发人员来说,简化设计的好处很多。这就是为什么开发人员选择Mooter框架的原因,因为它能够提供简约化的设计,是一款可用于开发移动应用的HTML5框架。 官方网站:https://mootor.voolks.com/ 7.Materialize 想要快速开发?Materialize能让你如愿以偿!Materialize是一款基于材料设计的CSS前端框架。 官方网站:https://github.com/Dogfalo/materialize 8.Themosis Themosis框架从根本上说是一个通过WordPress来开发网站和基于web应用程序的工具。它使用的代码语法十分优雅又极度简单,可以帮助你维护结构和用一种很好的方式组织代码。它也被认为是MVC框架和WordPress的综合,非常独特。 官方网站:http://framework.themosis.com/ 9.Material—UI 有点像是TouchStone.js和Materialize的合并。同样基于反应框架和材料框架的Material—UI是一款CSS框架。此CSS框架实际上是用LESS写的,所以你必须会编译! 官方网站:http://material-ui.com/ 10.Furtive 这是一款思维超前的CSS微型框架,大概只有2.5KB,真的很小哦! 官方网站:http://furtive.co/ 11.Foundation for Apps Foundation for Apps,顾名思义,为构建应用程序提供基础。如果你想要构建最棒功能的app,那么它就是最佳选择。 官方网站:http://foundation.zurb.com/apps/ 12.Elf Elf从根本上说是一款小巧又强大的用calc()制作的触屏网格。 官方网站:http://corysimmons.github.io/elf/ 介绍完毕,如果各位有不同见解,欢迎补充~~~
分享
2
先马后看
莫多说
天津财经大学·2022届

关于电子信息类,通信类的就业问题

因为我本科也是电子信息工程专业,硕士是通信类的,看到很多学弟学妹对专业对口有些疑问,所以开个帖子希望对大家有帮助。 当然了,首先虽然本人是通信毕业的,不过现在算转了半个行吧,做产品经理了,当然了,转行互联网也算是一条路吧,做开发产品运营等等,各位来这肯定或多或少也有这方面的意愿,毕竟是一个互联网为主的论坛。 今天看到大家的疑问,想到了去年看到的一篇某乎的回答,翻了半天才翻出来,觉得这位学长说的很到位,现在转过来,希望给大家一些参考。。 。 通信党路过,现身说法。介绍一下,本科时候985学校的通信工程,到现在工作满4年,在武汉一私企,14K月薪,这水平在很多北上广的程序猿眼中可能不算什么,但在武汉这个互联网二线城市里拿这个价我已经很满足了。当时选专业的时候觉得这名字蛮叼,通信工程,communication engineering,卧槽,带你装逼带你飞,毫不犹豫的跳坑了。 结果四年下来,最大的感受就是,尼玛学的东西太多了,但是然并卵。。。我敢说,通信工程是所有工科学科中要学科目最多的一种,金工实习马列主义思想通识这些扯蛋的课就不说了,高等数学概率论线性代数这些理工科最基本的基础也不提了,但是我们尼玛还学化学!没错!大!学!化!学!你敢说这不是然并卵系列?!好在这门课趣味性强,考试也不难。但是大学物理就坑的一逼了。你可能会说大学物理也是基础呀,没错,是基础,但是以后的专业课基本用不到啊,而且巨尼玛难啊,什么动能角动量谐波热力学电场磁场光学电磁波,想想就头疼,而且要学整整两个学期,反正当时身边的同学们上课基本都是玩手机,是的,这就是985大学上物理课的风景。结果到考试的时候老师又在报复社会,班上基本一半以上都要补考,答主当年人品爆发,清晰的记得大物第一学期63,第二学期61,是不是很叼。大二的时候学了好多数学科目,复变函数、积分变换、离散数学等等,不得不说,这几门课还真得好好学,如果你想做通信理论,复变和积分必须学好,这是信号系统的基础,如果以后想搞软件,离散数学就必须扎实,问问现在CS的同学,算法才是优秀程序员与一般程序员的分水岭。答主也是毕业一两年后才悟出的,当年没重视这些,搞得现在还天天学数学,学弟学妹们吸取教训啊。到了大二下学期,专业课来了,尼玛又是巨多坑,硬件软件理论学了个遍,软件方面有C、C++、MFC、数据结构,硬件方面模电、数电、高频电路、EDA、DSP、单片机、通信电路、计算机组成原理、PCB电路板焊接,理论方面计算机网络、通信原理、信号与系统、离散信号处理、电磁场与电磁波(真正虐心)、数字图像处理数字语音处理(这两门好像是选修)。是的,你没看错!不要四年!不要三年!也不要两年!只要一年半的时间就能上这么多课程!还在犹豫什么,赶快拿起电话报名吧!冷静冷静,嗯。。这么多课程就压缩到一年半的时间学完,你觉得能学到什么?很多都是走马观花的上一遍,到了考试又要求老师指点江山,考完之后发觉只领略到了一点皮毛。现在是不是觉得然并卵? 不过可以理解,通信工程本来就是一个很大的学科,是很多学科交叉的重灾区,是一个理论与实践紧密结合的典型科目,里面每一个方面都是可以独成一面的大学问,本科生也就只能这样走马观花似的教学了,不可能面面深入。这样做的好处是通信工程学生的接触面都很广,而且这样能帮助你发现自己的兴趣点,到底自己是适合软件,适合硬件,还是适合搞理论。毕业后我大部分同学都直接工作了,到现在做什么的都有(刚毕业那会还有成天玩***赚了不少钱的人),但是真正搞技术的貌似不多了,销售、技术支持、跑工程的比较多,所以想要搞技术还必须得耐得住性子。工作的话看你自己擅长什么,就我自己的经历而言给学弟学妹们提供一些经验,能帮一些是一些吧,毕竟江湖险恶人心叵测社会不好混啊。 如果你喜欢软件,可以选择以下方面:嵌入式软件,BSP驱动,通信协议,上层应用软件。 简单的嵌入式软件的话就是单片机之类的,像什么51、STM32、AVR,一般都是做工业控制,搞这一类就必须对单片机的具体功能和实现特别熟悉,什么USART、I2C、PWM、DMA之类的都要信手拈来,而且要对芯片寄存器很熟悉,知道哪个功能配哪个寄存器,像SMT32这种提供外围设备驱动的还要对提供的固件库函数熟悉,运气好的话会碰到让你用单片机实现算法之类。但是这一类的话技术含量不是太高,因为毕竟知识点只有那么多,所以薪水不会太可观(当然特别厉害的除外),在武汉的话一般就是5K左右。所以一般搞单片机的都要往更深层次发展,就是裸板上跑跑操作系统,比如Linux或者VxWorks。只要上了操作系统,那内容可就多了,拿Linux来说,命令行要会用吧,系统编程要会写吧,网络编程要熟悉吧,GCC要会耍吧,Vim要会玩吧,操作系统的基础知识要熟悉吧,兴致来了兴许还要跑跑shell或者python之类的脚本文件,高级点的就要玩玩内核和驱动。个人建议通信工程的学生其实可以往驱动方面走,因为软硬件都懂,恰好驱动就是软硬结合的一个方面,而且一个产品中驱动如果做成熟之后就不用经常变了,我现在的项目组里面那几个做BSP的哥们儿就是立项之后那一段时间忙死,但是现在都是让我们羡慕嫉妒恨的对象,每天准时乐呵乐呵下班。但是驱动这条路学习曲线很陡,操作系统知识必须烂熟于心,内核代码也要好好研究,相关的硬件也要懂(数电必须懂,模电的话看个人造化),还时不时来个芯片让你驱动,那就还要去研究相干芯片的datasheet。但是学出来就好了,因为底层的知识变化不会那么快,所以做驱动的不会像做手机软件的整天加班成狗。如果VxWorks功底好,那工资不是一般的高。 通信协议,咩哈哈,答主感触颇深,因为就是靠这个薪水基本一年翻一番。可能是运气好,当时毕业的时候进了MPLS协议组(不懂的同学可以查下),这个协议很重要,现在电信联通的核心网里都用,但是做的人比较少,市场供不应求,恰好几年来工作的时候都是做这方面的协议,什么LDP、RSVP、L2 VPN、OAM之类的都懂,因此找工作可以放心跟别人谈价钱。这是我的经历,但是还有很多协议啊,像什么OSPF、ISIS、BGP等等,这些协议的RFC文档都是一百多页,光把协议看懂都要花不少时间(RFC文档都是全英文,所以英文必须要好,切记切记!),更不用说编码实现了。不过还好,现在大公司里基本上都会买别人成熟的代码,只会让你维护,不会从头开始写。这些协议只要精通其中某一个,你都会成为通信市场上抢手的人才,因为实在是太重要了。但是搞协议有很多短处,其中最大的一个就是方向面特窄,到最后只会这一个协议,对整个产品的架构能力不会提高,而且都是买的成熟代码,编码能力不会得到很大的提升,所以你如果以后想自己创业的话就最好不要选协议,或者就要在业余时间多下点功夫学东西。 上层应用软件的话就不多说了,iOS,安卓,做好了工资高得离谱,但是数学必须要好,数据结构算法什么的必须烂熟于心。看看那些BAT的面试不都是问算法题么。 硬件方面不太懂,不做这一块,如果想做硬件的话,最基本的像模拟电路、数字电路、PCB布线等等必须要好。现在不是开源硬件挺火的么,想做硬件的同学们可以去看看。 理论的话可就深了,信号与系统、离散信号处理、数字图像处理、数字语音处理、通信系统集成等等,这些都是高大上的理论知识,研究透了成了大牛了基本不缺银子,而且市场需求比较广,比如美图的图像处理、微信的摇一摇歌曲识别功能,这里面就多少信号与系统的知识。想从事理论的话最好去读研读博,同时基础数学必须要好,复变函数、积分变换、微积分、概率论、模式识别这一类的课程很重要。同时也要加强自己的编程能力,因为光会理论不行,还要理论与实践相结合,C语言要会,MATLAB要会玩,C++最好也要会,因为老外喜欢用C++封装功能。 发现写了好多。。。 不过这都是一个通信工程过来人的感受,如果能给学弟学妹们有所帮助我就已经感激涕零了。是的,我们要学的课程是很多,但是只要你认真学,并且在某一个方面研究的有深度,你就是一个通信市场的人才,而且是跨市场的人才,我们不仅可以做硬件,还能做软件,学CS的是不是羡嫉恨?嘿嘿。但是,学习是无止境的,刚毕业后你会发现学校里的东西太不够用了,因此必须不断的学习,不断的充实,这样才能保持自己不仅是在在通信市场,而且是在整个IT市场的竞争力。 always stay hungry stay foolish,这是一个通信人应有的工作和生活态度。 很多同学问到以后的就业方向,那我就我所经历和看到的情况给大家列出一些通信行业常见而且吃得香的岗位,还没毕业的同学可以参考下。 软件方面: 1、嵌入式软件工程师。这算是最大的一个种类了,常见的就是基于SoC系统来实现某些具体功能,常见的芯片有51、ARM9、基于Cortex-M、基于MIPS的SoC系列等等,基本上都是基于硬件工程师设计的板子上进行系统开发工作,这里面的种类太多了,只要是负责编码的都属于这一块。一般用C,有些可能还会用到C++,所以想从事这方面工作的同学C语言功底一定要扎实。 2、驱动工程师。这是一个需要付出大量努力进行学习的工种,但是学好了一定吃得香。驱动,顾名思义就是要通过软件来让板子上的硬件跑起来,简单的驱动就是基于裸奔的单片机通过各种外设让相关硬件工作,更复杂的就是通过操作系统来驱动。简单的基于单片机的驱动比较好学习,只要把相关单片机的功能寄存器弄明白,按照相关硬件功能需求,编码实现就可以了。但是只要上了操作系统,那就是另一个世界了,要深入内核进行学习,所以建议想从事驱动的同学一定要学好C、操作系统和数电方面的知识。 3、应用层软件工程师。这里说的应用层是指基于操作系统的应用层,现在通信行业主流的操作系统有uCos、Linux和VxWorks。这方面主要是对OS的各种系统调用API要熟悉,同时要有很好的编程功底,要懂得进程、线程、IPC、死锁等等操作系统方面的知识,编程来实现各种功能。这里面还要懂网络编程,要熟悉五层模型、主流的二层三层协议(ARP、PPP、ICMP、FTP、TCP、UDP等等等,参考TCP/IP详解卷一),知道Linux系统的网络调用相关函数,懂得基本的网络编程模型(阻塞、多进程、多线程、select和epoll的IO复用),最好还去研究一下linux的内核,看看里面究竟是怎样实现网络的各种功能的。这编程能力就毋庸置疑了,C++也要熟悉,数据结构算法也挺重要。 4、协议软件工程师。咳咳,答主的行业。简单的说,就是编码实现各种通信协议。说道协议,那可就多了TCP/IP协议栈里就有一大堆的协议,通信设备上的协议也不少,一些主流路由协议像RIP、OSPF、ISIS等几百页的RFC文档就会让你头疼,好在大部分通信公司都是买成熟代码,编码苦手们的福音。这一方面主要是对交换机路由器的功能要熟悉,什么MAC地址、VLAN转发表、IP路由相关的概念要懂,再就是要对具体的协议很熟悉,这里的协议主要指比较大型的协议,比如OSPF、ISIS、BGP、MPLS、LDP、RSVP、L2 VPN、L3 VPN等等,这些个协议有些公司一个协议就要十几号人负责,每个协议的状态机、协议报文、实现算法都要熟悉。从事这个行业C语言要好,网络编程要熟悉,同时英语也很重要,不然几百页的RFC文档会让你吐血。但是短处我也提到过,就是方向性太窄,不适合什么都懂的技术宅。 5、FAE。Field Application Engineer,通俗点说就是技术支持工程师。从事这岗位的人一般都是从研发转过去的,而且之前都是从事芯片驱动的工作,要对某一款或几款通信芯片特别熟悉,比如Broadcom,然后等你不想写代码了就做这些芯片的技术支持,如果有公司用到你所支持的芯片出现了某些问题不能解决,就找你救急了。据我所知FAE的工资很高,而且一个区域就两三个这样的人,所以对人的研发能力也是有很高的要求。但是如果能从事FAE的话,办公比较自由,没事的话完全可以soho,发发邮件,打打电话,再不行就到现场支持(貌似是这样的,如果有误请原谅并指出)。 6、网络工程师。就是各种组网,懂得利用通信设备来组织具体功能需求的网络,主流设备有Cisco、Juniper、华为、中兴、烽火等。这个岗位需要对通信的各种路由协议很熟悉,但是不用知道协议的实现具体原理,只需要知道协议的功能和具体配置。这个岗位可能需要一系列证书,比如CCNA、CCIE、CCNP、华三的各种认证等,我一大学同学大四考了个CCIE(考试费用很贵,机试+笔试当时一共18000,而且当时要到香港去考),毕业之后在通信公司从事组网工作,年薪30W。这个岗位貌似出差比较多,而且必须手机24小时开机,因为工程上指不定出什么问题了第一时间就是找你。 硬件方面(硬件我不懂,只能举出我身边的一些例子): 1、硬件工程师。就是能根据需求来制定电路板,包括各种电路的设计、电器元件的选择、芯片选型等等。这方面的工作硬件知识就一定要强了,什么模电数电要信手拈来,而且对常用的各种电器元件和芯片要熟悉,知道什么功能用什么硬件来实现,也要懂画PCB,焊接功夫不用说,各种工具比如万用表、示波器要像长在自己身上一样。硬件工程师比较重要的还有调试能力,因为硬件的调试不像软件,必须要上板子调,而且硬件是个自然学科,有时候出现什么古怪问题可能新手会死命查不出,所以我觉得硬件工程师的话是一个很靠经验的行当。不过硬件不会像软件那样需要不停的学新东西,底层的知识变化没那么快。 2、射频工程师。RF,Radio Frequency,就是负责无线射频技术。这行当可就深了,首先一般从事RF的都是微波专业的,也就是学电磁场与电磁波专业,这专业学通信的都知道,巨费脑细胞,反正答主当年上课全是在当听天书。但是这个行业潜力巨大,RFID是风头正好的物联网的基础核心,如果射频工程师硬件好,同时软件也会,那完全就是各大射频芯片制造公司的抢手山芋,薪水让你掉下巴,我一师姐就在武汉的一个芯片公司,月薪接近3W,注意,是在武汉。所以微波专业的同学硬件是一定要懂的,因为据我的所见射频工程师天天都在调各种板子,如果软件功底够好那完全衣食无忧。 3、FPGA工程师。这个在通信行业很重要,因为数据转发不是靠芯片就是靠这个,因为FPGA是并行运算,速度够快,比如像OAM这类保护倒换就必须用FPGA来实现发包,这样才能达到时间性能需求。同时FPGA可以用来实现芯片功能,比如我现在所在的公司就有很多FPGA工程师开发公司自己的转发芯片。FPGA用的是VHDL硬件语言,而且数电模电功底要扎实。 4、PCB制板工程师。就是画电路板,这个一般的硬件工程师都会,但是大点的公司里面都有专门的PCB专项组,专门从事PCB布线工作。 非研发类: 1、销售。大家都知道,每个行业都少不了销售。如果嘴皮子好,性格比较外向的同学可以从事这方面的工作。销售做好了不缺银子,我一大学寝室哥们在深圳从事某品牌手机销售工作,四年了现在是东南亚的区域经理,而且经常出入泰国(你懂的),逍遥的很。但是不要以为销售不用懂技术,最起码那些通信的具体参数你要能脱口成章吧。更懂技术的销售才是通信行业的好销售。 2、文档工程师。就是写文档喽,公司的设备都需要指导手册来指导用户进行操作呀。这个岗位英语一定要好,因为文档一般都会写中英文双份。沟通能力也要好,各种功能的实现你要找相应的工程师来了解才能制定文档。所以这岗位我觉得比较适合女生,本来就是个笔头功夫,而且在狼多肉少的通信公司,一个女生去进行各种功能沟通会很受欢迎的哦,嘿嘿。工作量的话看情况,设备不复杂就还好,如果需要写大型通信设备比如什么高端交换机之类的文档,可能会稍微大点,一本手册就是一本厚厚的书,但是第一版写完之后也就轻松了。 3、预研部门。这个部门在稍微大一点的通信设备公司都有,就是通过市场调查,来找出最符合公司下一步产品的技术和功能,然后制定各种计划给研发部门来实现。这个也比较适合女生(这个部门我不是很清楚,大致是这样,如果有错误请原谅并指出)。 4、测试工程师。在通信设备厂商,测试是一个很重要的部门,人数有可能比研发的还多,因为测试部门包揽着公司所有设备的测试工作,如果设备种类较多,设备功能较大,测试部门就有的忙了。测试工作的话不用怎么懂编程,设备每个功能的研发人员会提供相关的测试文档,或者有相关的测试标准(比如移动选型测试标准),照着这些资料进行配置,然后检查结果就OK了,如果没通过就找相应的研发人员解决。所以研发工程师打交道最多的就是测试工程师了,你们的关系一定要好哦,么么哒。现在的测试很多都是自动化脚本了,所以最好会一门相关的脚本语言,比如Python。工作量的话不好说,就我的经验,小公司还好,但是大型通信公司测试相当累,要陪着研发加班,设备超多,有的公司为了防止机房着火甚至每天还要安排测试人员通宵守着,而且机房里的设备很多,噪声超大,即使带上耳塞也会很烦躁,反正我如果在里面呆上半个小时就受不了了,不敢想那些测试人员怎么可以一呆那么长时间。因为不用编码,不怎么费脑细胞,比较适合女生。 码字好累啊。。。 也写了这么多了,同学们大概也有了个谱。其实还有很多种类,我没有经历过或者看到过,如果以上说的地方有什么错误或者没有说到的,还请各位原谅并指出,我好修改,以免提供错误的信息。反正通信工程就是一个很大的专业,什么都能干。但是就像各位所经历的,学的很多,可都学的不深。同学们这时候就要及早找准自己的兴趣点了,看自己对哪一方面感兴趣就着重学习那方面的知识。还有就是选择了一个方面,就要持续不断的深入学习,这里面有两方面的意思,一个是持续,另一个是不断学习。持续就是在一个行业里面不断积累经验,不要东一下西一下,等你在某个行业里摸爬滚打到一定程度成某一方面的专家后,你就很受欢迎了。不断深入学习,就是一定要不停的催自己学习新知识,哪方面不懂就学哪方面,IT领域变化太快,不肯学习只喜欢肯老本,过个十几年就有得你受了。我也见过一些30好几的工程师来面试,有些没有在一领域持续深入,反而什么都做过,结果成了什么都会但什么都不深的万金油,还有一些就是做一个产品做了十几年,一直在啃老本,结果技术十几年没进步过,结果公司产品线一换就不行了。这两类人都被刷掉过,学弟学妹们谨记哦。 加班到现在一直在写这个,没码代码,心好有愧啊,滚去工作去了,方便的话各位就点个赞呗~~
分享
8
先马后看
蜜桃汽水乌龙茶
上海师范大学·2022届

CFA三级科目资产配置介绍,它的重难点是什么?

如题 求介绍
分享
1
先马后看
杨溢
河北工业大学·2022届

《明解Java》笔记:第2章

官方小结: 变量可以自由存取数值等数据。需要变量时,赋予其类型和名称,进行声明。 在从变量中取出值之前,必须进行初始化或赋值,将值赋给该变量。初始化是在创建变量时赋予初始值,赋值则是将值赋给创建好的变量。 变量是在需要时进行声明的。另外,最好在声明中赋上初始值,明确将变量初始化。 final变量通过初始化或赋值,只赋入一次值。在给常量赋予名称时可以使用该变量。 在诸多的类型中,Java语言提供的标准类型是基本类型。 int型是一种表示整数的整形。 像13这样的常量称为整数常量。 double型是一种表示实数(浮点数)的浮点型。 像3.14这样的常量称为浮点型常量。 用于表示字符串(字符序列)的是String型。该类型不是基本类型。 执行运算的符号是运算符,作为运算对象的表达式则是操作数。运算符根据操作数的个数分为3类:一元运算符、二元运算符、三元运算符。 用括号括起来的运算会优先执行。 在“字符串+数值”或“数值+字符串”的运算中,数值要转换为字符串之后再进行拼接。 读入通过键盘输入的值时使用标准输入流。Scanner类的next…方法用来读取标准输入流中的字符。 通过生成随机数,可以创建随机的值。Random类的nexe…方法用来生成随机数。 通过“整数/整数”运算得到的商是舍去小数部分后的整数值。 Finersoft按阿里规范格式化后的代码: https://github.com/finersoft/ShinMeiKaiJava/tree/master/src/com/finersoft/chap02  Finersoft的课后作业 2-1 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 package com.finersoft.chap02.homework;   /**  * 名称:作业2-1<br />  * 说明:  * @author Finersoft  * @date 2018年3月23日  */ public class Ex0201 {       /**      * @param args      */     public static void main(String[] args) {             // x是int型变量             int x;             // y是int型变量             int y;             //定义一个浮点型变量z             double z;                           // 把63赋给x             x = 63;             // 把18赋给y             y = 18;                           //错误说明             // 把63.0赋给x:Type mismatch: cannot convert from double to int             //x = 63.0;             // 把18.1赋给y:Type mismatch: cannot convert from double to int             //y = 18.1;                           //解决办法:加强制转换或修改参数定义类型             // 把63.0赋给x:Add cast to 'int'             x =(int) 63.0;             // 把18.1赋给y:Change type of 'y' to 'double'             //y = 18.1;             z=18.0;                           // 显示x的值             System.out.println("x的值是" + x + "。");             // 显示y的值             System.out.println("y的值是" + y + "。");             // 显示z的值             System.out.println("z的值是" + z + "。");             // 显示合计值             System.out.println("合计值是" + (x + y) + "。");             // 显示平均值             System.out.println("平均值是" + (x + y) / 2 + "。");       }   }        2-2 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 package com.finersoft.chap02.homework;   import java.util.Scanner;   /**  * 名称:作业2-2 <br />  * 说明:编写一个程序对三个整数赋值,并计算合计值和平均值。  *   * @author Finersoft  * @date 2018年3月23日  */ public class Ex0202 {       /**      * @param args      */     public static void main(String[] args) {         Scanner stdIn = new Scanner(System.in);           try {             System.out.println("本程序用于输入三个数,并输出总计和平均值。");             System.out.print("请输入整数值a:");             int a = stdIn.nextInt();             System.out.print("请输入整数值b:");             int b = stdIn.nextInt();             System.out.print("请输入整数值c:");             int c = stdIn.nextInt();                           System.out.println("你输入的a、b、c为:"+a+"、"+b+"、"+c);             System.out.println("三数之和为:"+(a+b+c));             System.out.println("三数之平均数为:"+((a+b+c)/3));         } catch (Exception e) {             e.printStackTrace();         } finally {             if (stdIn != null) {                 stdIn.close();             }         }     } }        2-3 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 package com.finersoft.chap02.homework;   import java.util.Scanner;   /**  * 名称:作业2-3<br />  * 说明:显示键盘输入的数字。  *   * @author Finersoft  * @date 2018年3月23日  */ public class Ex0203 {     public static void main(String[] args) {         Scanner stdIn = new Scanner(System.in);           try {             System.out.print("请输入整数值:");             int a = stdIn.nextInt();             System.out.println("你输入的是:" + a+"。");         } catch (Exception e) {             e.printStackTrace();         } finally {             if (stdIn != null) {                 stdIn.close();             }         }     } }        2-4 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 package com.finersoft.chap02.homework;   import java.util.Scanner;   /**  * 名称:作业2-4<br />  * 说明:对键盘输入的数字加10输出,对键盘输入的数字减10再输出 。  * @author Finersoft  * @date 2018年3月23日  */ public class Ex0204 {     public static void main(String[] args) {         Scanner stdIn = new Scanner(System.in);           try {             System.out.print("请输入整数值:");             int a = stdIn.nextInt();             System.out.println("加10之后的值是:" + (a+10)+"。");             System.out.println("减10之后的值是:" + (a-10)+"。");         } catch (Exception e) {             e.printStackTrace();         } finally {             if (stdIn != null) {                 stdIn.close();             }         }     } }        2-5 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 package com.finersoft.chap02.homework;   import java.util.Scanner;   /**  * 名称:作业2-5 <br />  * 说明:编写一个程序对两个浮点数赋值,并计算合计值和平均值。  *   * @author Finersoft  * @date 2018年3月23日  */ public class Ex0205 {     public static void main(String[] args) {         Scanner stdIn = new Scanner(System.in);           try {             System.out.println("本程序用于输入两个浮点数,并输出总计和平均值。");             System.out.print("请输入浮点数值a:");             double a = stdIn.nextDouble();             System.out.print("请输入浮点数值b:");             double b = stdIn.nextDouble();                           System.out.println("你输入的a、b为:"+a+"、"+b);             System.out.println("两数之和为:"+(a+b));             System.out.println("两数之平均数为:"+((a+b)/2));         } catch (Exception e) {             e.printStackTrace();         } finally {             if (stdIn != null) {                 stdIn.close();             }         }     } }        2-6 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 package com.finersoft.chap02.homework;   import java.util.Scanner;   /**  * 名称:作业2-6 <br />  * 说明:编写一个程序接收三角形的底边长和高,并输出三角形的面积。  *   * @author Finersoft  * @date 2018年3月23日  */ public class Ex0206 {     public static void main(String[] args) {         Scanner stdIn = new Scanner(System.in);           try {             System.out.println("本程序用于接收三角形的底边长和高,并输出三角形的面积。");             System.out.print("请输入三角形的底a:");             double a = stdIn.nextDouble();             System.out.print("请输入三角形的高b:");             double b = stdIn.nextDouble();               System.out.println("你输入的底(a)、高(b)为:" + a + "、" + b);               System.out.println("三角形的面积为(底*高/2,a*b/2):" + (a * b / 2));         } catch (Exception e) {             e.printStackTrace();         } finally {             if (stdIn != null) {                 stdIn.close();             }         }     } }        2-7 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 package com.finersoft.chap02.homework;   import java.util.Random;   /**  * 名称:作业2-7<br />  * 说明:随机数:生成1到9中一个值,生成-9到-1中的一个值,显示10到99中的一个值。  *   * @author Finersoft  * @date 2018年3月23日  */ public class Ex0207 {     public static void main(String[] args) {         Random rand = new Random();         //rand.nextInt的值域[0,n),所以左右取极限         // [1,9]=[1,10) = [0+1,9+1)         System.out.println("随机一位正整数:" + (rand.nextInt(9) + 1) + "。");         // 上面乘以-1         System.out.println("随机一位负整数:" + ((rand.nextInt(9) + 1) * -1) + "。");         // [10,99]=[10,100) = [0+10,90+10)         System.out.println("随机两位正整数:" + (rand.nextInt(90) + 10) + "。");     } }        2-8 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 package com.finersoft.chap02.homework;   import java.util.Random; import java.util.Scanner;   /**  * 名称:作业2-8<br/>  * 说明:输入一个整数,显示这个整数前后5个数范围内的随机数  *   * @author Finersoft  * @date 2018年3月23日  */ public class Ex0208 {     public static void main(String[] args) {         Scanner stdIn = new Scanner(System.in);         try {             System.out.println("本程序用于输入一个整数,显示这个整数前后5个数范围内的随机数。");             System.out.print("请输入整数值a:");             int a = stdIn.nextInt();             Random rand = new Random();             // a的前后5个数,包括a自己,就是11个数,所以随机数肯定是11个,开区间定义如下 [0,11)             // 怎么用0-10和a来表示a的前后5个数?             // 把a-5再加上随机数[0,11)应该就可以了。             // 最小 a-5+0             // 最大a-5+10             // 哎,倒指头算出来的公式             System.out.println("输入数前后五个数以内的随机数可能为:" + (a -5+ rand.nextInt(10)));         } catch (Exception e) {             e.printStackTrace();         } finally {             if (stdIn != null) {                 stdIn.close();             }         }     } }        2-9 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 package com.finersoft.chap02.homework;   import java.util.Random;   /**  * 名称:作业2-9<br />  * 说明:随机数:生成0.0到1.0中一个值,生成0.0到10.0中的一个值,显示-1.0到1.0中的一个值。  * @author Finersoft  * @date 2018年3月23日  */ public class Ex0209 {     public static void main(String[] args) {         Random rand = new Random();         //rand.nextDouble的值域[0.0,1.0),所以左右取极限         // [0.0,1.0)         System.out.println("随机大于等于0小于1数:" + (rand.nextDouble())+ "。");         // 上面乘以10         System.out.println("随机大于等于0小于10数:" + (rand.nextDouble()*10)+ "。");         // [0.0,1.0)*2-1.0         System.out.println("随机大于等于-1小于1数:" + (rand.nextDouble()*2-1)+ "。");     } }        2-10 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 package com.finersoft.chap02.homework;   import java.util.Scanner;   /**  * 名称:作业2-10<br />  * 说明:用键盘分两次输入你的姓和名,在程序中输出打招呼  *   * @author Finersoft  * @date 2018年3月23日  */ public class Ex0210 {     public static void main(String[] args) {         Scanner stdIn = new Scanner(System.in);           try {             System.out.print("您的姓是:");             // 读入1行字符串             String s1 = stdIn.nextLine();             System.out.print("您的名是:");             // 读入1行字符串             String s2 = stdIn.nextLine();             // 显示             System.out.println("你好" + s1+s2 + "先生。");         } catch (Exception e) {             e.printStackTrace();         } finally {             if (stdIn != null) {                 stdIn.close();             }         }     } }        复制代码 1 2 3 您的姓是:Finer 您的名是:Soft 你好FinerSoft先生。
分享
1
先马后看