Java开发的应该如何掌握上述相关技术?
一:首先,有这样的一种情况很常见,对于想自学Java开发的人来说,他们
大多数都是非常盲目的,不知道自己改如何入手,很多人在网上找一些视频,然后疯狂的过视频,很快就把一块内容都学完,他们理解的学完了就是视
频看完了,但是让他们动手去做东西却做不出来,而我的理解学完了就是自己能写出东西,所以对于初学者来说一定不能盲目,要有自己的规划,不然
就是浪费时间白忙活。
二:既然是学习Java开发专业技术,我个人的建议是,一定要有一个能指导
你的人,不能都靠自己闭门造车,这样的行为并不聪明,结识一位这方面的人才,时不时去问问人家问题,不然你可能会发现一个小问题能困扰你一天
,**后还不知道是什么原因。
三:学习Java开发技术,不能跟学数学语文一样对待,比较刚接触代码是不
容易记住的,所以要掌握上述的技术,你还要知道学习Java开发技术有哪些“坑”。对于学习方法这块是尤为重要的,怎么学才能让你学完了能记住之
前学的那些,不至于学完了就忘,这个问题值得你学习之前去思考的。
四:根据我多年的学习情况来看,你平时一定要养成好的学习习惯,就说我
自己吧!我就喜欢把自己曾经遇到的问题整理在电脑的日记本上,然后我会搜集一下博客相关的Java技术文章,一些我认为比较有用的网站,以后都能
用的上,这是我个人的学习习惯,相信我,如果你想走的更远,一定要养成习惯。
**后给大家一些详细的学习安排路线:
Java基础:Java基础语法、数组、类与对象、继承与多态、异常、范型、集
合、流与文件、反射、枚举、自动装箱和注解。
数据库:mysql、oracle
Javaweb:HTML与CSS网页开发基础、Java脚本语言、搭建开发环境、JSP基
本语法、JSP内置对象、JavaBean技术、Servlet技术、Ajax技术
框架:Struts2、Hibernate、Spring、SpringMVC、mybatis
课程大纲
一阶段
|
二阶段
|
三阶段
|
-
语言基础、Java基础
-
Java多线程
-
Java网络编程
-
程序调试/单元测试
-
XML
-
数据库
-
数据结构与算法
|
|
-
设计模式
-
MyBatis
-
Redis
-
Spring
-
SpringBoot
-
JMS
-
SpringCloud
-
Docker
-
Java前沿技术 常用
企业解决方案
-
UML/OOD/OOP
|
|BZOJ 2199|2-SAT|[Usaco2011 Jan]奶牛议会
>
BZOJ传送门
luogu免权限地址
2-SAT模板题,用2-SAT建图后,枚举每个议案能否**
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
#define ms(i,j) memset(i,j, sizeof i);
using namespace std;
const int MAXN = 1000 5;
const char orz[10] = { Y , N , ? };
int n,m;
int ans[MAXN];
struct twoSAT//这里标号从0开始
{
vector<int> G[MAXN*2];//邻接表
bool mark[MAXN*2];//每个点是否被标记
int n;
int init(int ni)//初始化
{
n = ni;
for (int i=0;i<2*n;i ) G[i].clear();
}
int addEdge(int x, int y, int xv, int yv)//加一个条件
{
x = x*2 xv;
y = y*2 yv;
G[x^1].push_back(y);
G[y^1].push_back(x);//2i是假,2i 1是真
}
int dfs(int x)
{
if (mark[x^1]) return false;//对应点被标记,不符合要求
if (mark[x]) return true;//已经被标记直接返回
mark[x] = true;//标记
for (int i=0;i<G[x].size();i )//继续标记
{
if (!dfs(G[x][i])) return false;
}
return true;
}
int check(int x)//检查一个议案是否**
{
ms(mark, false);
return dfs(x);
}
}ts;
int main()
{
scanf("%d%d", &n,&m);
ts.init(n);
for (int i=0;i<m;i )
{
int bi,ci;
char vbi,vci;
scanf("%d %c %d %c", &bi,&vbi,&ci,&vci);
int vvbi = false, vvci = false;
if (vbi== Y ) vvbi = true;
if (vci== Y ) vvci = true;
ts.addEdge(bi-1,ci-1,vvbi,vvci);
}
for (int i=0;i<n;i )
{
int p = ts.check(i*2);
int q = ts.check(i*2 1);
if (!p&&!q) {PRintf("IMPOSSIBLE"); return 0;}
if (p&&q) ans[i] = 2;
else if (!p) ans[i] = 0;
else ans[i] = 1;
}
for (int i=0;i<n;i ) putchar(orz[ans[i]]);
return 0;
}
相关推荐:
苏州JAVA培训 苏州JAVA培训班 苏州JAVA培训机构