题目链接

题意:训练指南283页;

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
#include <map>
#include <algorithm>
#include <set>
#define MM(a) memset(a,0,sizeof(a))
typedef long long ll;
typedef unsigned long long ULL;
const double eps = 1e-14;
const int inf = 0x3f3f3f3f;
const double pi=acos(-1);
using namespace std; struct Point {
double x, y;
double ang;
Point() {}
Point(double x,double y) {
this->x = x;
this->y = y;
}
void read() {
scanf("%lf %lf", &x, &y);
}
bool operator <(const Point w) const
{
if(this->x==w.x) return this->y<w.y;
else return this->x<w.x;
}
};
typedef Point Vector;
/*
struct Line{
Point a;
Point v,nor;
double ang;
Line(){};
Line(Point u,Vector w):a(u),v(w){};
bool operator <(const Line q) const{
return this->ang<q.ang;
}
}; struct Circle {
Point c;
double r;
Circle(){};
Circle(Point c, double r) {
this->c = c;
this->r = r;
}
Point point(double a) {
return Point(c.x + cos(a) * r, c.y + sin(a) * r);
} };
*/
Vector operator + (Vector A, Vector B) {
return Vector(A.x + B.x, A.y + B.y);
} Vector operator - (Vector A, Vector B) {
return Vector(A.x - B.x, A.y - B.y);
} Vector operator * (Vector A, double p) {
return Vector(A.x * p, A.y * p);
} Vector operator / (Vector A, double p) {
return Vector(A.x / p, A.y / p);
} const double PI = acos(-1.0); int dcmp(double x) {
if (fabs(x) < eps) return 0;
else return x < 0 ? -1 : 1;
} bool operator == (const Point& a, const Point& b) {
return dcmp(a.x - b.x) == 0 && dcmp(a.y - b.y) == 0;
} bool operator < (const Point& a, const Point& b) {
return a.x < b.x || (a.x == b.x && a.y < b.y);
} double torad(double ang)
{
return ang/180*pi;
} double Dot(Vector A, Vector B) {return A.x * B.x + A.y * B.y;} //点积
double Length(Vector A) {return sqrt(Dot(A, A));} //向量的模
double Angle(Vector A, Vector B) {return acos(Dot(A, B) / Length(A) / Length(B));} //向量夹角
double Cross(Vector A, Vector B) {return A.x * B.y - A.y * B.x;} //叉积
double Area2(Point A, Point B, Point C) {return Cross(B - A, C - A);} //有向面积
double angle(Vector v) {return atan2(v.y, v.x);} Point GetLineIntersection(Point P, Vector v, Point Q, Vector w) {
Vector u = P - Q;
double t = Cross(w, u) / Cross(v, w);
return P + v * t;
} Vector Rotate(Vector A, double rad) {
return Vector(A.x * cos(rad) - A.y * sin(rad), A.x * sin(rad) + A.y * cos(rad));
} double DistanceToLine(Point P, Point A, Point B) {
Vector v1 = B - A, v2 = P - A;
return fabs(Cross(v1, v2)) / Length(v1);
} //线段的规范相交
bool SegmentProperIntersection(Point a1, Point a2, Point b1, Point b2) {
double c1 = Cross(a2 - a1, b1 - a1), c2 = Cross(a2 - a1, b2 - a1),
c3 = Cross(b2 - b1, a1 - b1), c4 = Cross(b2 - b1, a2 - b1);
return dcmp(c1) * dcmp(c2) < 0 && dcmp(c3) * dcmp(c4) < 0;
} //点在线段上(不含端点)
bool OnSegment(Point p, Point a1, Point a2) {
return dcmp(Cross(a1 - p, a2 - p)) == 0 && dcmp(Dot(a1 - p, a2 - p))<0;
} //线段不规范相交 (自己写的)
bool SegmentinProperIntersection(Point a1, Point a2, Point b1, Point b2)
{
if(SegmentProperIntersection(a1, a2, b1,b2))
return 1;
if(OnSegment(b1, a1, a2))
return 1;
if(OnSegment(b2, a1, a2))
return 1;
return 0;
} Point p[1005];
Vector v[105];
int n,num,f[505][505],vis[505];
vector<Point> q; bool Onanysegment(Point w)
{
for(int i=0;i<n;i++)
if(OnSegment(w,p[i],p[i+n]))
return true;
return false;
} bool Intercetwithangsegment(Point a,Point b)
{
for(int i=0;i<n;i++)
if(SegmentProperIntersection(a,b,p[i],p[i+n]))
return true;
return false;
} void init()
{
memset(f,0,sizeof(f));
memset(vis,0,sizeof(vis));
q.clear(); p[2*n]=Point(0,0);p[2*n+1]=Point(1000,1000);
q.push_back(p[2*n]);q.push_back(p[2*n+1]); for(int i=0;i<=2*n-1;i++)
if(!Onanysegment(p[i]))
q.push_back(p[i]);//对于处在线段中间的点,不进入构图,否则会错,想像一下,两条线段共端点且共线 num=q.size();
for(int i=0;i<num;i++)
for(int j=i+1;j<num;j++)
if(!Intercetwithangsegment(q[i],q[j]))
f[j][i]=f[i][j]=1;//说明这两个点可以直接到达 //for(int i=0;i<num;i++)
// for(int j=0;j<num;j++)
//cout<<i<<" "<<j<<" "<<f[i][j]<<endl;
} bool dfs(int cur)
{
// printf("cur:%d\n",cur);
if(cur==1) return true;
vis[cur]=1;
for(int i=0;i<num;i++)
if(!vis[i]&&f[cur][i]&&dfs(i))//dfs的标准格式
return true;
return false;
} void solve()
{
if(dfs(0)) printf("no\n");
else printf("yes\n");
} int main()
{
while(~scanf("%d",&n)&&n)
{
for(int i=0;i<n;i++)
{
p[i].read();p[i+n].read();
v[i]=(p[i+n]-p[i])/(Length(p[i+n]-p[i]));
p[i]=p[i]-v[i]*1e-5;
p[i+n]=p[i+n]+v[i]*1e-5;//进行端点的微小扰动
}
init();
solve();
}
return 0;
}

wa代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
#include <map>
#include <algorithm>
#include <set>
#define MM(a) memset(a,0,sizeof(a))
typedef long long ll;
typedef unsigned long long ULL;
const double eps = 1e-14;
const int inf = 0x3f3f3f3f;
const double pi=acos(-1);
using namespace std; struct Point {
int x, y;
double ang;
Point() {}
Point(int x,int y) {
this->x = x;
this->y = y;
}
void read() {
scanf("%lf%lf", &x, &y);
}
bool operator <(const Point w) const
{
if(this->x==w.x) return this->y<w.y;
else return this->x<w.x;
}
};
typedef Point Vector;
/*
struct Line{
Point a;
Point v,nor;
double ang;
Line(){};
Line(Point u,Vector w):a(u),v(w){};
bool operator <(const Line q) const{
return this->ang<q.ang;
}
}; struct Circle {
Point c;
double r;
Circle(){};
Circle(Point c, double r) {
this->c = c;
this->r = r;
}
Point point(double a) {
return Point(c.x + cos(a) * r, c.y + sin(a) * r);
} };
*/
Vector operator + (Vector A, Vector B) {
return Vector(A.x + B.x, A.y + B.y);
} Vector operator - (Vector A, Vector B) {
return Vector(A.x - B.x, A.y - B.y);
} Vector operator * (Vector A, double p) {
return Vector(A.x * p, A.y * p);
} Vector operator / (Vector A, double p) {
return Vector(A.x / p, A.y / p);
} const double PI = acos(-1.0); int dcmp(int x) {
if (fabs(x) < eps) return 0;
else return x < 0 ? -1 : 1;
} bool operator == (const Point& a, const Point& b) {
return dcmp(a.x - b.x) == 0 && dcmp(a.y - b.y) == 0;
} bool operator < (const Point& a, const Point& b) {
return a.x < b.x || (a.x == b.x && a.y < b.y);
} double torad(double ang)
{
return ang/180*pi;
} double Dot(Vector A, Vector B) {return A.x * B.x + A.y * B.y;} //点积
double Length(Vector A) {return sqrt(Dot(A, A));} //向量的模
double Angle(Vector A, Vector B) {return acos(Dot(A, B) / Length(A) / Length(B));} //向量夹角
double Cross(Vector A, Vector B) {return A.x * B.y - A.y * B.x;} //叉积
double Area2(Point A, Point B, Point C) {return Cross(B - A, C - A);} //有向面积
double angle(Vector v) {return atan2(v.y, v.x);} Point GetLineIntersection(Point P, Vector v, Point Q, Vector w) {
Vector u = P - Q;
double t = Cross(w, u) / Cross(v, w);
return P + v * t;
} Vector Rotate(Vector A, double rad) {
return Vector(A.x * cos(rad) - A.y * sin(rad), A.x * sin(rad) + A.y * cos(rad));
} double DistanceToLine(Point P, Point A, Point B) {
Vector v1 = B - A, v2 = P - A;
return fabs(Cross(v1, v2)) / Length(v1);
} //线段的规范相交
bool SegmentProperIntersection(Point a1, Point a2, Point b1, Point b2) {
int c1 = Cross(a2 - a1, b1 - a1), c2 = Cross(a2 - a1, b2 - a1),
c3 = Cross(b2 - b1, a1 - b1), c4 = Cross(b2 - b1, a2 - b1);
return dcmp(c1) * dcmp(c2) < 0 && dcmp(c3) * dcmp(c4) < 0;
} //点在线段上(含端点)
bool OnSegment(Point p, Point a1, Point a2) {
return dcmp(Cross(a1 - p, a2 - p)) == 0 && dcmp(Dot(a1 - p, a2 - p))<=0;
} //线段不规范相交 (自己写的)
bool SegmentinProperIntersection(Point a1, Point a2, Point b1, Point b2)
{
if(SegmentProperIntersection(a1, a2, b1,b2))
return 1;
if(OnSegment(b1, a1, a2))
return 1;
if(OnSegment(b2, a1, a2))
return 1;
return 0;
}
/*
Vector AngleBisector(Point p, Vector v1, Vector v2){//给定两个向量,求角平分线
double rad = Angle(v1, v2);
return Rotate(v1, dcmp(Cross(v1, v2)) * 0.5 * rad);
} //求线与x轴的真实角(0<=X<180)
double RealAngleWithX(Vector a){
Vector b(1, 0);
if (dcmp(Cross(a, b)) == 0) return 0.0;
else if (dcmp(Dot(a, b) == 0)) return 90.0;
double rad = Angle(a, b);
rad = (rad / PI) * 180.0;
if (dcmp(a.y) < 0) rad = 180.0 - rad;
return rad;
} //求直线与圆的交点
int getLineCircleIntersection(Point p, Vector v, Circle c, vector<Point> &sol) {
double a1 = v.x, b1 = p.x - c.c.x, c1 = v.y, d1 = p.y - c.c.y;
double e1 = a1 * a1 + c1 * c1, f1 = 2 * (a1 * b1 + c1 * d1), g1 = b1 * b1 + d1 * d1 - c.r * c.r;
double delta = f1 * f1 - 4 * e1 * g1, t;
if(dcmp(delta) < 0) return 0;
else if(dcmp(delta) == 0){
t = (-f1) / (2 * e1);
sol.push_back(p + v * t);
return 1;
} else{
t = (-f1 + sqrt(delta)) / (2 * e1); sol.push_back(p + v * t);
t = (-f1 - sqrt(delta)) / (2 * e1); sol.push_back(p + v * t);
return 2;
}
} //两圆相交
int getCircleCircleIntersection(Circle C1, Circle C2, vector<Point> &sol) {
double d = Length(C1.c - C2.c);
if (dcmp(d) == 0) {
if (dcmp(C1.r - C2.r) == 0) return -1; // 重合
return 0;
}
if (dcmp(C1.r + C2.r - d) < 0) return 0;
if (dcmp(fabs(C1.r - C2.r) - d) > 0) return 0;
double a = angle(C2.c - C1.c);
double da = acos((C1.r * C1.r + d * d - C2.r * C2.r) / (2 * C1.r * d));
Point p1 = C1.point(a - da), p2 = C1.point(a + da);
sol.push_back(p1);
if(p1 == p2) return 1;
sol.push_back(p2);
return 2; } //点到圆的切线
int getTangents(Point p, Circle C, Vector *v) {
Vector u = C.c - p;
double dist = Length(u);
if (dist < C.r) return 0;
else if (dcmp(dist - C.r) == 0) {
v[0] = Rotate(u, PI / 2);
return 1;
} else {
double ang = asin(C.r / dist);
v[0] = Rotate(u, -ang);
v[1] = Rotate(u, +ang);
return 2;
}
} //两圆公切线
//a[i], b[i]分别是第i条切线在圆A和圆B上的切点
int getCircleTangents(Circle A, Circle B, Point *a, Point *b) {
int cnt = 0;
if (A.r < B.r) { swap(A, B); swap(a, b); }
//圆心距的平方
double d2 = (A.c.x - B.c.x) * (A.c.x - B.c.x) + (A.c.y - B.c.y) * (A.c.y - B.c.y);
double rdiff = A.r - B.r;
double rsum = A.r + B.r;
double base = angle(B.c - A.c);
//重合有无限多条
if (d2 == 0 && dcmp(A.r - B.r) == 0) return -1;
//内切
if (dcmp(d2 - rdiff * rdiff) == 0) {
a[cnt] = A.point(base);
b[cnt] = B.point(base);
cnt++;
return 1;
}
//有外公切线
double ang = acos((A.r - B.r) / sqrt(d2));
a[cnt] = A.point(base + ang); b[cnt] = B.point(base + ang); cnt++;
a[cnt] = A.point(base - ang); b[cnt] = B.point(base - ang); cnt++; //一条内切线,两条内切线
if (dcmp(d2 - rsum*rsum) == 0) {
a[cnt] = A.point(base); b[cnt] = B.point(PI + base); cnt++;
} else if (dcmp(d2 - rsum*rsum) > 0) {
double ang = acos((A.r + B.r) / sqrt(d2));
a[cnt] = A.point(base + ang); b[cnt] = B.point(base + ang); cnt++;
a[cnt] = A.point(base - ang); b[cnt] = B.point(base - ang); cnt++;
}
return cnt;
} //三角形外切圆
Circle CircumscribedCircle(Point p1, Point p2, Point p3) {
double Bx = p2.x - p1.x, By = p2.y - p1.y;
double Cx = p3.x - p1.x, Cy = p3.y - p1.y;
double D = 2 * (Bx * Cy - By * Cx);
double cx = (Cy * (Bx * Bx + By * By) - By * (Cx * Cx + Cy * Cy)) / D + p1.x;
double cy = (Bx * (Cx * Cx + Cy * Cy) - Cx * (Bx * Bx + By * By)) / D + p1.y;
Point p = Point(cx, cy);
return Circle(p, Length(p1 - p));
} //三角形内切圆
Circle InscribedCircle(Point p1, Point p2, Point p3) {
double a = Length(p2 - p3);
double b = Length(p3 - p1);
double c = Length(p1 - p2);
Point p = (p1 * a + p2 * b + p3 * c) / (a + b + c);
return Circle(p, DistanceToLine(p, p1, p2));
} //求经过点p1,与直线(p2, w)相切,半径为r的一组圆
int CircleThroughAPointAndTangentToALineWithRadius(Point p1, Point p2, Vector w, double r, vector<Point> &sol) {
Circle c1 = Circle(p1, r);
double t = r / Length(w);
Vector u = Vector(-w.y, w.x);
Point p4 = p2 + u * t;
int tot = getLineCircleIntersection(p4, w, c1, sol);
u = Vector(w.y, -w.x);
p4 = p2 + u * t;
tot += getLineCircleIntersection(p4, w, c1, sol);
return tot;
} //给定两个向量,求两向量方向内夹着的圆的圆心。圆与两线均相切,圆的半径已给定
Point Centre_CircleTangentTwoNonParallelLineWithRadius(Point p1, Vector v1, Point p2, Vector v2, double r){
Point p0 = GetLineIntersection(p1, v1, p2, v2);
Vector u = AngleBisector(p0, v1, v2);
double rad = 0.5 * Angle(v1, v2);
double l = r / sin(rad);
double t = l / Length(u);
return p0 + u * t;
} //求与两条不平行的直线都相切的4个圆,圆的半径已给定
int CircleThroughAPointAndTangentALineWithRadius(Point p1, Vector v1, Point p2, Vector v2, double r, Point *sol) {
int ans = 0;
sol[ans++] = Centre_CircleTangentTwoNonParallelLineWithRadius(p1, v1, p2, v2, r);
sol[ans++] = Centre_CircleTangentTwoNonParallelLineWithRadius(p1, v1 * -1, p2, v2, r);
sol[ans++] = Centre_CircleTangentTwoNonParallelLineWithRadius(p1, v1, p2, v2 * -1, r);
sol[ans++] = Centre_CircleTangentTwoNonParallelLineWithRadius(p1, v1 * -1, p2, v2 * -1, r);
return ans;
} //求与两个相离的圆均外切的一组圆,三种情况
int CircleTangentToTwoDisjointCirclesWithRadius(Circle c1, Circle c2, double r, Point *sol){
double dis1 = c1.r + r + r + c2.r;
double dis2= Length(c1.c - c2.c);
if(dcmp(dis1 - dis2) < 0) return 0;
Vector u = c2.c - c1.c;
double t = (r + c1.r) / Length(u);
if(dcmp(dis1 - dis2)==0){
Point p0 = c1.c + u * t;
sol[0] = p0;
return 1;
}
double aa = Length(c1.c - c2.c);
double bb = r + c1.r, cc = r + c2.r;
double rad = acos((aa * aa + bb * bb - cc * cc) / (2 * aa * bb));
Vector w = Rotate(u, rad);
Point p0 = c1.c + w * t;
sol[0] = p0;
w = Rotate(u, -rad);
p0 = c1.c + w * t;
sol[1] = p0;
return 2;
}
//判断点与圆的位置关系(自己写的)
int pointincircle(Point a,Circle o)
{
double l=Length(o.c-a);
if(dcmp(l-o.r)>0)
return 1;
else if(dcmp(l-o.r)==0)
return 0;
else if(dcmp(l-o.r)<0)
return -1;
}
int ConvexHull(Point *p, int n, Point* ch) //求凸包
{
sort(p, p + n);//先按照x,再按照y
int m = 0;
for(int i = 0; i < n; i++)
{
while(m > 1 && Cross(ch[m-1] - ch[m-2], p[i] - ch[m-2]) <= 0) m--;
ch[m++] = p[i];
}
int k = m;
for(int i = n-2; i >= 0; i--)
{
while(m > k && Cross(ch[m-1] - ch[m-2], p[i] - ch[m-2]) <= 0) m--;
ch[m++] = p[i];
}
if(n > 1) m--;
return m;
} double Polygonarea(Point *p,int n)
{
double area=0;
for(int i=1;i<n-1;i++)
area+=Cross(p[i]-p[0],p[i+1]-p[0]);
return area/2;
} //判断点是否在凸多边形内,注意是凸多变形,不是多边形
int Pointinpolygon(Point p,Point *q,int m)
{
for(int i=0;i<m;i++)
if(Cross(q[i+1]-q[i],p-q[i])<=0)
return 0;
return 1;
} Point ne[105],tubao[105]; void rotating_calipers(Point *p,int k)
{
double ans=0;
p[k]=p[0];
int q=1,temp;
for(int i=0;i<k;i++)
{
while(temp=Cross(p[i+1]-p[i],p[q+1]-p[q])>0) q=(q+1)%k;
ans=max(Length(tubao[q]-tubao[i]),ans);
if(!temp) ans=max(ans,Length(tubao[q+1]-tubao[i]));
}
printf("%d\n",(int)(ans*ans+0.5));
}
*/
Point p[1005];
Vector v[105];
int n,f[505][505],vis[505];
;
void init()
{
for(int i=0;i<n;i++)
{
p[i]=p[i]-v[i]*1e-5;
p[i+n]=p[i+n]+v[i]*1e-5;
}
memset(f,0,sizeof(f));
memset(vis,0,sizeof(vis));
p[2*n]=Point(0,0);p[2*n+1]=Point(100,100);
cout<<":7"<<endl;
for(int i=0;i<=2*n+1;i++)
for(int j=i+1;j<=2*n+1;j++)
{
int flag=1;
cout<<":9"<<endl;
for(int k=0;k<n;j++)
if(SegmentProperIntersection(p[i],p[j],p[k],p[k+n]))
{cout<<13<<endl;flag=0;break;}
cout<<":10"<<endl;
if(flag) f[i][j]=f[j][i]=1;
cout<<":8"<<endl;
}
cout<<":9"<<endl;
} int dfs(int cur)
{
if(!vis[cur]) vis[cur]=1;
else return 0;
for(int i=0;i<=2*n+1;i++)
if(!vis[i]&&f[cur][i]&&i!=cur)
{
if(i==2*n+1) return 1;
else if(dfs(i)) return 1;
cout<<":3"<<endl;
}
cout<<":4"<<endl;
return 0;
} void solve()
{
if(dfs(2*n)) printf("yes\n");
else printf("no\n");
} int main()
{
while(~scanf("%d",&n)&&n)
{
for(int i=0;i<n;i++)
{
scanf("%d %d",&p[i].x,&p[i].y);
scanf("%d %d",&p[i+n].x,&p[i+n].y);
v[i]=(p[i+n]-p[i])/(Length(p[i+n]-p[i]));
}
cout<<":1"<<endl;
init();
cout<<":2"<<endl;
solve();
}
return 0;
}

LA 2797的更多相关文章

  1. LA 2797 (平面直线图PLSG) Monster Trap

    题意: 平面上有n条线段,一次给出这n条线段的两个端点的坐标.问怪兽能否从坐标原点逃到无穷远处.(两直线最多有一个交点,且没有三线共交点的情况) 分析: 首先说明一下线段的规范相交:就是交点唯一而且在 ...

  2. LA 2797 平面区域dfs

    题目大意:一个平面区域有n条线段,问能否从(0,0)处到达无穷远处(不穿过任何线段) 分析:若两条线段有一个端点重合,这种情况是不能从端点重合处穿过的 的.因此对每个端点延长一点,就可以避免这个问题. ...

  3. leggere la nostra recensione del primo e del secondo

    La terra di mezzo in trail running sembra essere distorto leggermente massima di recente, e gli aggi ...

  4. Le lié à la légèreté semblait être et donc plus simple

    Il est toutefois vraiment à partir www.runmasterfr.com/free-40-flyknit-2015-hommes-c-1_58_59.html de ...

  5. Mac Pro 使用 ll、la、l等ls的别名命令

    在 Linux 下习惯使用 ll.la.l 等ls别名的童鞋到 mac os 可就郁闷了~~ 其实只要在用户目录下建立一个脚本“.bash_profile”, vim .bash_profile 并输 ...

  6. Linux中的动态库和静态库(.a/.la/.so/.o)

    Linux中的动态库和静态库(.a/.la/.so/.o) Linux中的动态库和静态库(.a/.la/.so/.o) C/C++程序编译的过程 .o文件(目标文件) 创建atoi.o 使用atoi. ...

  7. Mac OS使用ll、la、l等ls的别名命令

    在linux下习惯使用ll.la.l等ls别名的童鞋到mac os可就郁闷了-- 其实只要在用户目录下建立一个脚本“.bash_profile”,并输入以下内容即可: alias ll='ls -al ...

  8. .Uva&LA部分题目代码

    1.LA 5694 Adding New Machine 关键词:数据结构,线段树,扫描线(FIFO) #include <algorithm> #include <cstdio&g ...

  9. 获取在线人数 CNZZ 和 51.la

    string Cookies = string.Empty; /// <summary> /// 获取在线人数 (51.la统计器) /// </summary> /// &l ...

随机推荐

  1. spring依赖注入三种方式

    一.构造器注入 构造器注入是在程序中实现构造器,可以注入任意类型,如自定义类,集合,String等,注:构造器所有有final修饰的变量都必须在构造方法中注入. 二.设值注入(setter方式注入) ...

  2. 多模块环境下修改包名Rename directory与Rename package

    选中包名->右键Refactor->Rename,如果会弹出的警告框让选择Rename directory和Rename package时,若选择Rename directory,则是只修 ...

  3. 关于Windows10内存随时间不断升高问题

    问题描述 电脑买了10个月了,头半年的运行内存都是正常的,基本不会超过60%,但是最近几个月发现自己电脑的运行内存会随时间不断地升高,关机后重启也无法解决这个问题QAQ 常见的症状为一开机,点开任务管 ...

  4. linux小白家教学<一>

    <数据中心规划与实施> 教学大纲  编写人:Allen 一. 课程教学内容及目标: (一) 知识目标 1.掌握企业级LINUX部署以及相关配置: 2.掌握LINUX操作系统基本的创建.删除 ...

  5. Dango之模版系统

    1.模板渲染 可以传列表,字典,对象等 {{ 变量 }} {% 逻辑 %} -- 标签 urls.py path('login/', views.login), views.py def login( ...

  6. [Nest] 02.nest之控制器

    控制器 Controller Nest 的核心概念 模块 Module 控制器 Controller 服务与依赖注入 Provider Dependency injection 控制器负责处理应用的特 ...

  7. 客户端相关知识学习(五)之什么是webView

    webview是什么?作用是什么?和浏览器有什么关系? Android系统中内置了一款高性能 webkit 内核浏览器,在 SDK 中封装为一个叫做 WebView 组件也就是说WebView是一个基 ...

  8. webpack4 打包

    1. 基本安装及命令 npm config set registry https://registry.npm.taobao.org     //  淘宝镜像npm install webpack-c ...

  9. Ansible-Playbook实战

    一.Playbook 实战案例 1.准备环境 角色 外网IP(NAT) 内网IP(LAN) 部署软件 m01 eth0:10.0.0.61 eth1:172.16.1.61 ansible ly-ba ...

  10. linux基本操作和常用命令(2)

    linux基本操作和常用命令(2) 第二部分主要是涉及到用户和组的概念,以及一些操作.涉及到用户和组的共三个文件,分别存放在/etc/shadow(密码信息) /etc/group(组信息) /etc ...