1.xdmԴ??
2.debianä¸linuxå
³ç³»debianä¸linux
3.想成为Java工程师有什么要求?
4.Linux进程和线程的基础与管理
xdmԴ??
最好手里有DM的评估板,管评估板的供货商要实验例程。但这些例程中的算法一般是封装后不提供源码的,这时可以参看TI网站上xdm相关接口的文档,结合DVSDK中TI提供的例子程序逐渐上手,设计ARM下调用DSP端的(源码 副图算法还是比较复杂的事,最好让评估板提供商给你一些循序渐进开发算法的例子和实验文档。
debianä¸linuxå ³ç³»debianä¸linux
Linuxåè¡çUbuntuä¸Debianä¹é´æåªäºä¸åä¹å¤ï¼ä¸å¤§å®¶æ:
Fedora
æ¯åºäºRHELï¼CentOSï¼ScientificLinux,åOracleLinuxç社åºçæ¬ãç¸æ¯RHELï¼Fedoraæå äºæ¾èçæ´å¤ç软件å ãå ¶ä¸ä¸ä¸ªåå æ¯ï¼å¤æ ·åç社åºåä¸Fedoraç建设;å®ä¸åªæ¯ä¸å®¶å ¬å¸ãå¨è¿ä¸ªè¿ç¨ä¸ï¼CentOSç¨äºæ´»å¨ï¼æ¼ç¤ºåå®éªï¼å 为å®æ¯å¯¹æç»ç¨æ·å è´¹æä¾çï¼å¹¶å ·ææ¯Fedoraçä¸ä¸ªæ´é¿çåå¸å¨æï¼é常æ¯éåå¹´å·¦å³åå¸ä¸ä¸ªæ°çæ¬ï¼ãSUSE
,SUSELinuxEnterpriseServer(SLES),åopenSUSEä¹é´çå ³ç³»ç±»ä¼¼äºFedora,RedHatEnterpriseLinux,åCentOSçå ³ç³»ãDebian
æ¯å æ¬Ubuntuå¨å 许å¤åè¡ççä¸æ¸¸ï¼èUbuntuåæ¯LinuxMintåå ¶ä»åè¡ççä¸æ¸¸ãDebianå¨æå¡å¨åæ¡é¢çµèé¢åé½æç广æ³çåºç¨ãDebianæ¯ä¸ä¸ªçº¯å¼æºè®¡å并çéå¨ä¸ä¸ªå ³é®ç¹ä¸ï¼ç¨³å®æ§ãå®åæ¶ä¹æä¾äºæ大çåå®æ´ç软件ä»åºç»ç¨æ·ãå ¨æè§:Linuxåè¡çæ¯ä»ä¹ï¼å®åä¸Linuxå æ ¸æä»ä¹èç³»ï¼
BTW:个人åç±Fedora(软件åå«ä¸ä¸å¤±ç¨³å®ï¼æå®åéåçRedhatä¸ºå ¶æä¾ææ¯æ¯æï¼å ¨çé½æ社åºäººåå¨ä¸ºå ¶è´¡ç®(ä¸å½æFedoraä¸æ社åº
)).对@å»éªå³°
çï¼ç¬¬4个åå·ä¹åçï¼ï¼ä¸¥éå对+毫æ 帮å©!å¾çæ¥æº:Tuxradar
debianlinuxæä¹å®è£ GCCï¼
linuxä¸Cçç¼è¯å¨ä¸è¬æ¯gccï¼æ以ä¸è¬å®è£ çé½æ¯GCCãå®è£ GCCæ两ç§æ¹æ³å¨çº¿å®è£ å¯ä»¥ä½¿ç¨å¨çº¿å®è£ å½ä»¤ç´æ¥å®è£ ãsuduapt-getinstallgcc离线å®è£ ä¸è½½gccæºç å 解ågccæºç å è¿å ¥gcc解åä¹åçè·¯å¾æ§è¡makeå½ä»¤æ§è¡makeinstall
linuxæä¹æè½½windowså ±äº«æ件夹ï¼
æä½æ¥éª¤ï¼
1ãå¨å°è¯è®¿é®Windowså ±äº«ä¹åï¼éè¦é¦å 确认samba-clientå·²ç»å®è£ äºãæç®åçæ¹å¼æ¯å½ä»¤è¡æ¥è¯¢ârpm-qa|grepsamba-clientâï¼å½ç¶ä¹å¯ä»¥ä½¿ç¨âyumâå·¥å ·æ¥è¯¢ï¼å¦âyuminfosamba-clientâæâyumlistsamba-clientâä¹ç±»çå½ä»¤ã
2ãå¦æsamba-client没æå®è£ ï¼å°±éè¦ä½¿ç¨å½ä»¤âyuminstallsamba-clientâå®è£ ä¸ä¸ï¼yumä¼èªå¨å®è£ samba-clientæéçç¸å ³ä¾èµåºï¼å®è£ æ¶éæ©Yå°±è¡äºã
é对常è§çDebianLinuxåè¡çï¼å¦UbuntuæCentOSï¼ä¹å¯ä»¥ä½¿ç¨âsudoapt-getinstallsmbclientâåâsudoapt-getinstallsmbfsâå®è£ ç¸åºçå ±äº«è®¿é®å·¥å ·ã
3ãåå¤åå½ï¼å°±å¯ä»¥å°è¯è®¿é®Windowså ±äº«æ件夹äºãæ们å¯ä»¥é¦å 使ç¨âsmbclient-L//IPå°å-Uç¨æ·åâæ¥çä¸ä¸è¯¥ç¨æ·å ±äº«æéä¸çå ±äº«æ åµãå ¶ä¸ä¸å¸¦â$âçé£ä¸ªï¼å°±æ¯æ们å¯ä»¥è®¿é®çå ±äº«æ件夹äºï¼å ¶ä¸â-Uâæ¯ç¨æ¥æå®æ¥è¯¢å ±äº«æéçç¨æ·åçã
4ãLinuxå°å ±äº«æ件夹ä¹æ¯å½ä½ç£çèµæºå¯¹å¾ çï¼å æ¤éè¦ä½¿ç¨mountå·¥å ·å°å ¶æè½½å°æ¬å°æ件空é´æå¯ä»¥è®¿é®ï¼è¿ä¸ç¹å°±åWindows常ç¨çç½ç»ç£çæ å°æ¯ä¸æ ·çã
å æ¤ï¼é¦å æ们éè¦å建ä¸ä¸ªæè½½ç¹ï¼ä¹å°±æ¯å¨æ¬å°ç®å½ç©ºé´ä¸å建ä¸ä¸ªæè½½ç®å½ï¼å¦âmkdir-p/mnt/MYSHAREâã
æè½½ç¹å建ä¹åï¼å°±å¯ä»¥ä½¿ç¨mountå½ä»¤æè½½å ±äº«æ件夹äºï¼âmount-tcifs-ouser=ç¨æ·å称,password=å ±äº«å¯ç ,iocharset=utf8,codepage=cp//å ±äº«IPå°åæNetBIOSå称/å ±äº«ç®å½âï¼å ¶ä¸cifs使ç¨Linux常ç¨çç½ç»æ件类åï¼ä¹å¯ä»¥ä½¿ç¨smbfsï¼ä»¥ç³»ç»å¯ä»¥è¯å«ä¸ºåï¼å¦Ubuntu常è§å½ä»¤å°±æ¯âsudomount-tsmbfs-ouser=ç¨æ·å称,password=å ±äº«å¯ç ,iocharset=utf8,codepage=cp//å ±äº«IPå°åæNetBIOSå称/å ±äº«ç®å½âãâ-oâ表示æè½½åæ°ï¼å¸¸è§çæ¯éè¦æä¾å ±äº«çç¨æ·ååå¯ç ï¼å¦å¤éè¦æ³¨æçæ¯iocharsetåcodepageï¼è¿ä¸¤ä¸ªåæ°æ¯ç¨æ¥è§£å³ç³»ç»ä¹é´çå符ç¼ç 转æ¢çï¼å¦æåºç°ä¹±ç çæ åµï¼æ¯éè¦è°æ´è¿ä¸¤ä¸ªåæ°çï¼é对ç®ä½ä¸æï¼ä½¿ç¨utf8åcpä¸è¬é½å¯ä»¥è§£å³é®é¢ï¼å ³äºå符ç¼ç å·²ç»è¶ åºäºæ¬ç»éªçèå´ã
æè½½å®æä¹åï¼å°±å¯ä»¥å使ç¨æ¬å°æ件ç®å½ä¸æ ·è®¿é®Windowså ±äº«æ件夹åæ件äºã
5ãå½ç¶ï¼Linuxä¹æå¾å½¢åçèµæºç®¡çå¨ï¼æè½½ä¹åï¼èµæºç®¡çå¨ä¹å¯ä»¥æ£å¸¸è®¿é®çãè¿å ¥Linuxæ¡é¢ï¼æå¼âæççµèâã
6ãç¶åå°±å¯ä»¥åæµè§æ¬å°æ件ä¸æ ·ï¼æµè§å ±äº«çWindowsæ件夹åæ件äºï¼ä¸å½ä»¤è¡å¹¶æ²¡æ太å¤çå·®å¼ã
7ãWindowså ±äº«èµæ使ç¨å®æ¯ä¹åï¼ä¹å¯ä»¥å°å ¶ä½¿ç¨umountå½ä»¤å¸è½½ï¼å¸è½½å°±å¾ç®åäºï¼ç´æ¥ä½¿ç¨âumount/mnt/MYSHAREâå°±å¯ä»¥äºï¼å ¶ä¸MYSHAREæ¯å°±æ¯æ们åé¢å建çæè½½ç¹äºã
å¦æ以åä¸éè¦ï¼ä¹å¯ä»¥å°æè½½ç¹å é¤çã
8ãæè½½çWindowså ±äº«æ件夹å¨Linuxéå¯ä¹åå°±ä¼æ¶å¤±çï¼å¦æè¿è¦ä½¿ç¨ï¼æ¯éè¦éæ°æè½½çã
å¦ä½ç¨Uçå®è£ debianlinuxç³»ç»ï¼
å¦ä½å¨Windowsä¸éè¿Uçå®è£ Debian
å建å®è£ Uçé¦å éè¿/debian/wheezymainnon-freecontribdeb-src/debian/wheezymainnon-freecontrib
debpatibleâshouldbecommentedout.å°èæ¯è®¾ä¸ºé»è²åï¼è¿éè¦å°gnome-terminalçé¢è²æ¹æ¡ä¹è®¾ä¸ºé»åºæè¡ã
ibuså¼æºèªå¨å¯å¨sudoln-s/usr/share/applications/ibus.desktop/etc/xdg/autostart/
请é®å¦ä½è®©debianlinuxå¯å¨ä¹åå¦ä½è¿å ¥å¾å½¢çé¢ï¼
è£ äºXç¯å¢äºæ²¡ï¼å¦æè£ äºï¼ä½ è¿éè¦è£ ä¸ä¸ªå¾å½¢çé¢çç»å½ç®¡çå¨ï¼xdmæ¯xorgèªå·±çï¼gdmæ¯gnomeçï¼kdmæ¯kdeçï¼ä¸è¿ä½ è¦æ¯è£ äºå¾å½¢çé¢å对åºçå¾å½¢æ¡é¢å¥ä»¶ï¼è¿äºä¸è¥¿é½æ¯èªå¨è£ ä¸çã
èä¸æè®°å¾ä¹æ¯é»è®¤å¯å¨çï¼éå¯è®¡ç®æºå³å¯ãä¸ç¶è¯·èªå·±æ·»å 对åºæå¡çå¯å¨é¡¹ï¼æå¡çååå°±æ¯ä»ä»¬ãdebianæ ¹æ¬å°±ä¸æç §/etc/inittabç设置æ¥å¯å¨å¾å½¢çé¢ï¼åªä½å«æ èå¤å¶ç²è´´äºã想成为Java工程师有什么要求?
首先,你学得知识不一定就是你用的全部知识,我们除了要学习基本的知识之外,也需要去了解一下其他的知识,而这些知识就是从你所做的每一个小项目来的,当你需要使用这个知识点的时候自然的就会去学习你不会的知识总之就是一句话,要想学好Java,你付出多少努力就能够得到多少回报
然后是你的一个学习问题,自己在做的时候做不出来,那就是一个问题,在做题目的时候不去思考,自己的动手敲代码的时间也是非常的少
想要改变你的现状就得先解决这些困难,每天学习的%时间必须拿来敲代码,这样你才会拿到一个题目的时候有自己的思路,通过自己的思考然后把思路转为代码去实现,这才是学习Java的正确姿势
学习Java不要把自己的思维关在一个笼子里面,有时候多跟一起学习的人或者前辈多多交流,多去吸取他们学习的方法以及在处理错误的时候思维
在Java的学习过程中,出现异常和bug是难免的,这些虽然是你在学习道路上的绊脚石,但是这些绊脚石能够加快你的成长,让你的经验暴增
阶段1 java语言基础
1-1-Java基础语法
1、第1节 java运行环境 提取码:8ax6
2、第2节 HelloWorld案例 提取码:us3j
3、第3节 关键字&标识符 提取码:dl
4、第4节 常量&变量 提取码:
5、第5节 数据类型转换 提取码:9glo
6、第6节 运算符 提取码:ys2n
7、第7节 方法入门 提取码:b1ib
8、第8节 JDK9新特性-Jshell 提取码:ounw
9、第9节 选择结构-if语句-switch语句 提取码:0d
、第节 循环结构-for-while-do..while 提取码:k2ig
、第节 开发工具-IDEA 提取码:i
、第节 方法复习 提取码:ulku
、第节 方法重载 提取码:wfkr
、第节 数组 提取码:p8ml
小总结:
这个阶段我花了半个月的时间去学习,也就是个小时的时间,其中有个小时是我用来看理论的知识,另外的preloader源码个小时是我用来给自己练手的,每一个知识点我都要做很多的题目,直到自己拿到题目的时候,能够把自己的思路转为代码实现
毫无疑问,这个阶段最耗时的自然是循环结构、选择结构,因为这两个知识点对于一个初学者来说很不友好,不仅代码量增加了,逻辑思维也是很绕的,如果不保持自己的思路清晰,你就理解不了他每一步的结果
然后就是数组,这一个阶段可以说是全新的阶段,我们可以把我们需要的数据都保存在数组里面,在这个知识点结束之后我还做了一个数组版的学生管理系统
1-2 -面向对象和封装
1、1_2_1__面向对象思想的概述 提取码:q
2、1_2_1__面向对象思想的举例 提取码:lv2s
3、1_2_1__类和对象的关系 提取码:7rs3
4、1_2_1__类的定义 提取码:xvhx
5、1_2_1__对象的创建及其使用 提取码:xsal
6、1_2_1__手机类练习 提取码:lnho
7、1_2_1__一个对象的内存图 提取码:wnaz
8、1_2_1__两个对象使用同一个方法的内存 提取码:thet
9、1_2_1__两个引用指向同一个对象的 提取码:3he6
、1_2_1__使用对象类型作为方法的参 提取码:w4
、1_2_1__使用对象类型作为方法的返 提取码:gjmn
、1_2_1__成员变量和局部变量的区别 提取码:eqep
、1_2_1__面向对象三大特征之封装性 提取码:zlcz
、1_2_1__private关键字的作用及使用 提取码:4i
、1_2_1__练习使用private关键字定义 提取码:dctu
、1_2_1__this关键字的作用 提取码:xz
、1_2_1__构造方法 提取码:8xkz
、1_2_1__定义一个标准的类 提取码:opmf
小总结:
这一个阶段花的时间足足有一个月,时间的分配也是按照%的时间去看理论,%的时间去动手敲代码
我觉得这个阶段每一个知识点都是特别的重要,在这个阶段我学会了什么是对象,学会了如何面向对象编程,也学会了如何使用对象编程去偷懒,把重复的事情都封装成了一个对象,交给这个对象去帮我做
1-3-Java语言高级
1、-常用API_1 提取码:alfe
2、-继承与多态 提取码:h5o7
3、-常用API第二部分 提取码:olnf
4、-集合 提取码:ca
5、-异常与多线程 提取码:mu
6、-File类与IO流 提取码:4bpt
7、-网络编程 提取码:s5ks
8、IGCN源码-JDK8新特性 提取码:jnbj
9、-基础加强 提取码:1ngz
、-MySQL 提取码:y4
、 -JDBC 提取码:q7
小总结:
是的,这个阶段我花了两个月,一个月学完JavaSE,然后一个月学完了MySQL跟JDBC,话说这个阶段是最难的,也是最重要的,这个阶段的东西你学不懂就代表你后面的知识都处于一个危机边缘
在这个阶段我做了四个小项目,和一些零零碎碎的练习题,代码加起来应该有三四万行了吧;其中有三个项目是学生管理系统,我从数组版把它改为了集合版,然后又改为了IO版,最后改为了MySQL版;然后还做了一个ATM小型的桌面程序
然后个人感觉我在这个阶段学得是比较扎实的,期间还去看了许多的集合的源码,虽然有的看不懂,但是对于我一个初学者来说已经很了不起了
阶段2 JavaWeb+旅游网
小总结:
这个阶段的知识非常多,我不仅学习了前端三剑客,还学了JavaWEB、JSP、JSTL、EL,然后为了做一个项目去练手,还学习了Redis和Maven
这个阶段我花了两个月的时间,包括跟着做好这个项目,因为我前面的基础部分学得比较扎实吧,所以感觉这部分比较简单,难点就是JavaWEB的过滤器,这个知识点我花的时间比较多
然后就是大概的从面向对象编程转为了面向接口编程了
HTML和CSS
1、第1节 概念介绍 提取码:dal6
2、第2节 基本标签 提取码:4uyq
3、第3节 表单标签 提取码:h1ok
4、第4节 CSS概述 提取码:ubyx
5、第5节 CSS_选择器 提取码:zep7
6、第6节 CSS属性 提取码:9l4h
7、第7节 CSS_案例-注册页面 提取码:onc6
JavaScript
1、 JavaScript_简介 提取码:2efk
2、 JavaScript基础语法 提取码:bl
3、 JavaScript运算符 提取码:v9sh
4、 JavaScript特殊语法 提取码:yj6p
5、 JavaScript_语法_流程控制语 提取码:tx9j
6、 JavaScript_对象 提取码:df4q
7、 DOM和事件的简单学习 提取码:ljt5
8、 BOM对象 提取码:jwwy
9、navcog 源码 DOM对象 提取码:ukah
、JavaScirpt中的事件 提取码:ab1w
BootStrap
1、 快速入门 提取码:5jhm
2、Bootstrap_栅格系统 提取码:1xuu
3、Bootstrap_全局CSS样式 提取码:fjka
4、Bootstrap_组件和插件 提取码:g5wp
5、案例_旅游网 提取码:jxy3
XML
1、 xml基础 提取码:jose
2、 xml_约束 提取码:q0xr
3、 xml_解析 提取码:bbsn
Tomcat
1、web相关概念 提取码:p2az
2、 tomcat基本操作 提取码:zqqx
3、 tomcat_部署项目 提取码:i4a2
-Servlet和HTTP请求协议
1、Servlet_快速入门 提取码:ah8k
2、Servlet_生命周期方法 提取码:w7t9
3、Servlet_3.0注解配置 提取码:d8zy
4、 IDEA与tomcat相关配置 提取码:5rvl
5、 Servlet_体系结构与urlpartten配置 提取码:qf3i
6、 HTTP请求协议 提取码:5f7v
-Request和Respons
1、 Request原理和继承体系 提取码:3hxr
2、 Request_获取请求数据 提取码:oxl7
3、 请求转发和request共享数据 提取码:9xbq
4、 Request_获取ServletContext 提取码:yfaz
5、 request登录案例 提取码:owgj
6、 HTTP响应协议 提取码:xs8k
7、 response之重定向 提取码:i8de
8、 response之相对路径和绝对路径 提取码:6p8q
9、 response之输出数据 提取码:fe
、 response之验证码 提取码:uy
、 ServletContext对象 提取码:yopc
、 文件下载 提取码:szv9
-Cookie和Session
1、第1节 Cookie快速入门 提取码:ncss
2、第2节 Cookie_细节 提取码:la7v
3、第3节 Cookie案例 提取码:mamn
4、第4节 JSP改造Cookie案例 提取码:fpkd
5、第5节 Session快速入门 提取码:0tyf
6、第6节 Session细节 提取码:obu1
7、第7节 Session之验证码案例 提取码:fxtt
-JSP,EL和JSTL
1、第1节 JSP基础语法 提取码:7rvw
2、第2节 MVC 提取码:ywmz
3、第3节 EL介绍和运算符 提取码:5gxf
4、第4节 EL获取域中存储的数据 提取码:yha0
5、第5节 JSTL常用标签 提取码:mr
-综合案例(用户信息)
1、第1节 登录功能 提取码:d7v4
2、第2节 添加删除修改功能 提取码:df
3、eipoa 源码第3节 删除选中功能 提取码:jhlx
4、第4节 分页查询功能 提取码:8mxb
5、第5节 复杂条件查询功能 提取码:qj8m
-Filter和Listener
1、第1节 Filter快速入门 提取码:7qrm
2、第2节 Filter细节 提取码:s2w9
3、第3节 Filter案例 提取码:fs
4、第4节 监听器 提取码:kjwy
-Jquery
1、第1节 JQuery基础 提取码:0uj1
2、第2节 JQuery选择器 提取码:ow
3、第3节 Jquery基础案例 提取码:5u3t
4、第4节 JQuery动画和遍历 提取码:ut
5、第5节 JQuery事件绑定和切换 提取码:e5sv
6、第6节 Jquery高级案例 提取码:ytj4
-Ajax和JSON
1、第1节 原生JS方式实现Ajax 提取码:xh
2、第2节 JQuery方式实现Ajax 提取码:woaa
3、第3节 JSON基础语法 提取码:pqhj
4、第4节 JSON_解析器 提取码:zbzx
-Redis
1、第1节 Redis环境搭建 提取码:poob
2、第2节 Redis命令操作 提取码:bq6d
3、第3节 Redis持久化 提取码:0x4x
4、第4节 Jedis代码操作 提取码:bon3
5、第5节 Jedis连接池 提取码:hu0n
6、第6节 redis案例 提取码:cosn
-Maven基础
1、第1节 基本概念 提取码:4fok
2、第2节 maven的安装和仓库种类 提取码:gw1r
3、第3节 maven标准目录结构和常用命令 提取码:3jn7
4、第4节 maven生命周期和概念模型图 提取码:oqrb
5、第5节 使用骨架创建maven的java工程 提取码:kp
6、第6节 maven工程servlet实例 提取码:xdmw
-旅游网
1、 准备工作 提取码:uprl
2、 注册功能 提取码:9pf5
3、 登陆和退出功能 提取码:0hkk
4、 BaseServlet抽取 提取码:qswt
5、 分类数据展示功能 提取码:n
6、 旅游线路分页展示分页展示 提取码:o6v6
7、 旅游线路查询 提取码:pzjb
8、 旅游线路详情 提取码:wtke
9、 旅游线路收藏 提取码:
阶段三:基本框架SSM
小总结:
这个阶段相对于JavaWEB来说还是比较简单的,少了很多的代码量,但是却多了很多的配置,稍微不注意就会把这些配置给搞错,期间出现了好几次注入bean失败的错误,这是我最不能够容忍的,同样的错误居然出现了好几次,而且都是没有给service加上@Service这个注解导致的;所以,在同一个地方跌倒多次是最不应该的,以后一定的加强注意了
在此期间,我还把JavaWEB做的那个项目改为了SSM版的,在改的过程中才体会到这些代码真的是很浪费,之前一个一个参数的接收,现在只需要一个对象就可以接收到了,而且更加的让我明白面向接口编程的含义了
阶段3 1.Mybatis
1、.Mybatis课程介绍及环境搭建 提取码:6zwc
2、.Mybatis入门案例 提取码:2aoi
3、.自定义Mybatis框架 提取码:r9wc
4、.自定义Mybatis框架基于注解开发 提取码:1jzg
5、.使用Mybatis完成CRUD 提取码:d4b7
6、.使用Mybatis完成DAO层的开发 提取码:dzvr
7、.Mybatis的连接池及事务 提取码:ij3e
8、.动态SQL 提取码:yiys
9、.Mybatis的多表操作 提取码:dt9w
、.JNDI扩展知识 提取码:u5fx
、.Mybatis的缓存 提取码:ng
、.Mybatis注解开发 提取码:yh6z
阶段3 2.Spring
1、.Spring框架简介 提取码:va1x
2、.程序间耦合 提取码:s8cg
3、.Spring的 IOC 和 DI 提取码:of
4、.Spring的常用注解 提取码:tfw5
5、.基于XML的IOC的案例1 提取码:1gf9
6、.Spring的新注解 提取码:pjzs
7、.银行转账案例 提取码:um2b
8、.面向切面编程 AOP 提取码:4tv2
9、.JdbcTemplate的基本使用 提取码:vjxx
、.Spring中事务控制 提取码:rx3v
阶段3 3.SpringMVC
1、.SpringMVC概述及入门案例 提取码:e2ty
2、.参数绑定及自定义类型转换 提取码:g
3、.SpringMVC常用注解 提取码:emrc
4、.SpringMVC返回值类型及响应数据类型 提取码:bd9t
5、.文件上传 提取码:pzy7
6、.异常处理及拦截器 提取码:7a2y
7、.SSM整合案例 提取码:lzzd
阶段四:高级框架
小总结:
这个阶段可不止Spring Boot,还有springcloud,springsecurity等等这些框架,就不一一列出来了,资料网上一大堆
学了Spring Boot之后你才会发现,SSM是多么的麻烦,Spring Boot为不仅为我们减少了代码量,还为我们减少了很多的配置,采用注解的方式
当然,这么智能的框架,我能不把做的项目改为Spring Boot版本吗?
阶段4 4.Spring Boot
1、.spring boot 介绍 提取码:fzi8
2、.spring boot 入门 提取码:bp
3、.spring boot 原理分析 提取码:8yer
4、.spring boot 配置文件 提取码:wvoc
5、.spring boot 集成 提取码:ywin
阶段4 5.Git
1、.Git简介及安装使用 提取码:a0kx
2、.连接远程仓库 提取码:kziq
3、.Git分支 提取码:5rm2
原文链接:网页链接
Linux进程和线程的基础与管理
一.进程的基本概念程序是为了完成某种任务而设计的软件,比如vi是程序。什么是进程呢? 进程就是运行中的程序。一个运行着程序,可能有多个进程。比如Web服务器是Apache服务器,当管理员启动服务后,可能会有好多人来访问,也就是说许多用户同时请求working)
#3 - full multiuser mode
#4 - unused
#5 - X
#6 - reboot (do not set initdefault to this)
#
//表示当前缺省运行级别为5,启动系统进入图形化界面
id:5:initdefault:
//启动时自动执行/etc/rc.d/rc.sysinit脚本
#system initialization.
si::sysinit:/etc/rc.d/rc.sysinit
:0:wait:/etc/rc.d/rc 0
:1:wait:/etc/rc.d/rc 1
:2:wait:/etc/rc.d/rc 2
:3:wait:/etc/rc.d/rc 3
:4:wait:/etc/rc.d/rc 4
//当运行级别为5时,以5为参数运行/etc/rc.d/rc脚本,init将等待其返回
:5:wait:/etc/rc.d/rc 5
:6:wait:/etc/rc.d/rc 6
//在启动过程中允许按[ctrl-alt-delete]重启系统
#trap ctrl-alt-delete
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
#
..................................
#
//在运行级别2、3、4、5以上ttyX为参数执行/sbin/mingetty程序,打开ttyX终端用于用户登录,如果进程退出则再次运行mingetty程序
#run gettys in standard runlevels
1::respawn:/sbin/mingetty tty1
2::respawn:/sbin/mingetty tty2
3::respawn:/sbin/mingetty tty3
4::respawn:/sbin/mingetty tty4
5::respawn:/sbin/mingetty tty5
6::respawn:/sbin/mingetty tty6
//在级别5上运行xdm程序,提供xdm图形方式登录界面,并在退出时重新执行
x:5:respawn:/etc/x/prefdm -nodaemon
#run xdm in runleverl 5
Inittab配置文件每行的基本格式如下。
id:runlevels:action:procees
其中某些部分可以为空,下面我们逐一介绍。
1.id
1~2个字符,配置行的惟一标识,在配置文件中不能重复。
2.runlevels
配置行适用的运行级别,在这里可填入多个运行级别,比如或者等。
Linux有7个运行级别:
0:关机
1:单用户字符界面
2:不具备网络文件系统(NFS)功能的多用户字符界面
3:具有网络功能的多用户字符界面
4:保留不用
5:具有网络功能的图形用户界面
6:重新启动系统
3.action
init有如下几种行为,如下表所示。
init行为
行为
描述
respawn
启动并监视第4项指定的process,若process终止则重启它
wait
执行第4项指定的process,并等待它执行完备
once
执行第4项指定的process
boot
不论在哪个执行等级,系统启动时都会运行第4项指定的process
bootwait
不论在哪个执行等级,系统启动时都会运行第4项指定的process,且一直等它执行完备
off
关闭任何动作,相当于忽略该配置行
ondemand
进入ondemand执行等级时,执行第4项指定的process
initdefault
系统启动后进入的执行等级,该行不需要指定process
sysinit
不论在哪个执行等级,系统会在执行boot及bootwait之前执行第4项指定的process
powerwait
当系统的供电不足时执行第4项指定的process,且一直等它执行完备
powerfailnow
当系统的供电严重不足时执行第4项指定的process
ctrlaltdel
当用户按下ctrl+alt+del 时执行的操作
kbrequest
当用户按下特殊的组合键时执行第4项指定的process,此组合键需在keymaps文件定义
4.process
Process为init执行的进程,这些进程都保存在目录/etc/rc.d/rcX中,其中的X代表运行级别,rc程序接收X参数,然后运行/etc/rc.d/rc.X下面的程序。使用如下命令可以查看/etc/rc.d目录内容。
复制代码
代码如下:
#ls –l /etc/rc.d/
total
drwxr-xr-x 2 root root 3/ : init.d
-rxwr-xr-x 1 root root -3- rc
drwxr-xr-x 2 root root 3/ : rc0.d
drwxr-xr-x 2 root root 3/ : rc1.d
drwxr-xr-x 2 root root 3/ : rc2.d
drwxr-xr-x 2 root root 3/ : rc3.d
drwxr-xr-x 2 root root 3/ : rc4.d
drwxr-xr-x 2 root root 3/ : rc5.d
drwxr-xr-x 2 root root 3/ : rc6.d
-rxwr-xr-x 1 root root -3- rc.local
-rxwr-xr-x 1 root root -3- rc.sysinit
…………
使用如下命令查看/etc/rc.d/rc5.d的内容。
复制代码
代码如下:
#ls –l /etc/rc.d/rc5.d
这些文件都是符号链接,以S打头的标识启动该程序,而以K打头的标识终止该程序,后面的数字标识执行顺序,越小越先执行,剩下的标识程序名。系统启动或者切换到该运行级别时会执行以S打头的程序,系统切换到该运行级别时会执行以K打头的程序。
这个目录下的程序可通过chkconfig程序进行管理,当然这个目录下的程序需要符合一定规范,如果了解shell编程,可以查看这些符号链接所指向的程序的源码。
init也是一个进程,和普通的进程具有一样的属性。比如修改了/etc/inittab,想让修改马上生效,可通过运行“kill-SIGHUP 1”来实现,也可通过运行“init q”来实现。
八.Linux的线程简介
1.Linux线程的定义
线程(thread)是在共享内存空间中并发的多道执行路径,它们共享一个进程的资源,如文件描述和信号处理。在两个普通进程(非线程)间进行切换时,内核准备从一个进程的上下文切换到另一个进程的上下文要花费很大的开销。这里上下文切换的主要任务是保存老进程CPU状态并加载新进程的保存状态,用新进程的内存映像替换进程的内存映像。线程允许你的进程在几个正在运行的任务之间进行切换,而不必执行前面提到的完整的上下文。另外本文介绍的线程是针对POSIX线程的,也就是Pthread。也因为Linux对它的支持最好,相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。在串行程序基础上引入线程和进程是为了提高程序的并发度,从而提高程序运行效率和响应时间。也可以将线程和轻量级进程(LWP)视为等同的,但其实在不同的系统/实现中有不同的解释,LWP更恰当的解释为一个虚拟CPU或内核的线程。它可以帮助用户态线程实现一些特殊的功能。Pthread是一种标准化模型,它用来把一个程序分成一组能够同时执行的任务。
2.什么场合使用Pthread,即线程
(1)在返回前阻塞的I/O任务能够使用一个线程处理I/O,同时继续执行其他处理任务。
(2)在有一个或多个任务受不确定性事件,比如网络通信的可获得性影响的场合,能够使用线程处理这些异步事件,同时继续执行正常的处理。
(3)如果某些程序功能比其他的功能更重要,可以使用线程以保证所有功能都出现,但那些时间密集型的功能具有更高的优先级。
以上三点可以归纳为:在检查程序中潜在的并行性时,也就是说在要找出能够同时执行任务时使用Pthread。上面已经介绍了,Linux进程模型提供了执行多个进程的能力,已经可以进行并行或并发编程,可是纯种能够让你对多个任务的控制程序更好、使用资源更少,因为一个单一的资源,如全局变量,可以由多个线程共享。而且,在拥有多个处理器的系统上,多线程应用会比用多个进程实现的应用执行速度更快。
3.Linux进程和线程的发展
年1月发布的Linux 2.2内核中,进程是通过系统调用fork创建的,新的进程是原来进程的子进程。需要说明的是,在2.2.x版本中,不存在真正意义上的线程(thread)。Linux中常用的线程Pthread实际上是通过进程来模拟的。也就是说Linux中的线程也是通过fork创建的,是“轻”进程。Linux 2.2只默认允许个进程/线程同时运行。高端系统同时要服务上千个用户,所以这显然是一个问题,它一度是阻碍Linux进入企业级市场的一大因素。
年1月发布的Linux 2.4内核消除了这个限制,并且允许在系统运行中动态调整进程数上限。因此,进程数现在只受制于物理内存的多少。在高端服务器上,即使安装了MB内存,现在也能轻而易举地同时支持1万6千个进程。
年月发布的2.6内核,进程调度经过重新编写,去掉了以前版本中效率不高的算法。以前,为了决定下一步要运行哪一个任务,进程调度程序要查看每一个准备好的任务,并且经过计算机来决定哪一个任务相对来更为重要。进程标识号(PID)的数目也从升到亿。内核内部的大改变之一就是Linux的线程框架被重写,以使NPTL(Native POSIX Thread Library)可以运行于其上。对于运行负荷繁重的线程应用的Pentium Pro及更先进的处理器而言,这是一个主要的性能提升,也是企业级应用中的很多高端系统一直以来所期待的。线程框架的改变包含Linux线程空间中的许多新的概念,包括线程组、线程各自的本地存储区、POSIX风格信号,以及其他改变。改进后的多线程和内存管理技术有助于更好地运行大型多媒体应用软件。
4.总结
线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源的管理和保护;而进程正相反。同时,线程适合于在对称处理器的计算机上运行,而进程则可以跨机器迁移。另外,进程可以拥有资源,线程共享进程拥有的资源。进程间的切换必须保存在进程控制块PCB(Process Control Block)中。同一个进程的多个线程间的切换不用那么麻烦。最后一个实例来作为本文的结束:当你在一台Linux PC上打开两个OICQ,每一个OICQ是一个进程;而当你在一个OICQ上和多人聊天时,每一个聊天窗口就是一个线程。