The 2018 ACM-ICPC Chinese Collegiate Programming Contest(Ningxia)
A - Maximum Element In A Stack
题意:给出栈的一种进栈和出栈的规则,问栈中的最大值
题解:每次进栈的时候将进栈的值与栈中的最大值比较,将较大的值压入栈
#include
using namespace std;
const int maxn = 5e6 + 56;
typedef long long ll;
int n, p, q, m;
unsigned int SA, SB, SC;
stack s;
ll ans = 0;
unsigned int rng61(){
SA ^= SA << 16;
SA ^= SA >> 5;
SA ^= SA << 1;
unsigned int t = SA;
SA = SB;
SB = SC;
SC ^= t ^ SA;
return SC;
}
void gen(){
scanf("%d%d%d%d%u%u%u", &n, &p, &q, &m, &SA, &SB, &SC);
for(int i = 1; i <= n; i++){
if(rng61() % (p + q) < p){
//PUSH(rng61() % m + 1);
ll x = rng61() % m + 1;
//cout << x << endl;
if (!s.empty()) x = max(x, s.top());
s.push(x);
}
else{
if (!s.empty()) s.pop();
else continue;
}
if (!s.empty())ans ^= i * s.top();
}
}
int main()
{
int T;
cin >> T;
for (int t = 1; t <= T; t++){
ans = 0;
while (!s.empty()) s.pop();
printf("Case #%d: ", t);
gen();
cout << ans << '\n';
}
return 0;
}
B - Rolling The Polygon
题意:给一个凸多边形,问多边形旋转一周的过程中,凸多边形中的一点Q经过的路径的长度
题解:计算几何
#include
#define sqr(x) ((x)*(x))
using namespace std;
const int maxn = 100;
struct Point{
double x, y;
}p[maxn], Q;
struct Vec{
double x, y;
Vec(){}
Vec (double a, double b){
x = a, y = b;
}
double operator*(Vec a){
return a.x*x+a.y*y;
}
}v[maxn];
const Vec X = {1, 0};
double dis(Point a, Point b){
return sqrt(sqr(a.x - b.x) + sqr(a.y - b.y));
}
double len(Vec a){
return sqrt(sqr(a.x) + sqr(a.y));
}
double ang(Vec a, Vec b){
return acos((a * b) / len(a) / len(b));
}
Vec Mns(Point a, Point b){
return Vec(a.x - b.x, a.y - b.y);
}
int n;
int main()
{
int T;
cin >> T;
for (int t = 1; t <= T; t++){
printf("Case #%d: ", t);
scanf("%d", &n);
for (int i = 0; i < n; i++){
scanf("%lf%lf", &p[i].x, &p[i].y);
}
p[n] = p[0]; p[n+1] = p[1];
int sz= 0;
for (int i = 1; i <= n; i++){
v[i] = Mns(p[i+1], p[i]);
}
v[0] = v[n];
scanf("%lf%lf", &Q.x, &Q.y);
double ans = 0;
for (int i = 1; i <= n; i++){
double sita = ang(v[i], v[i-1]);
double l = dis(Q, p[i]);
ans += l * sita;
}
// cout << ans << endl;
printf("%.3f\n", ans);
}
return 0;
}
C - Caesar Cipher
题意:给出原码与密码的变换规则,要用给定的规则将给定的密码还原,当然加密规则特别简单
题解:水题
#include
using namespace std;
const int maxn = 100;
char p[maxn],c[maxn],s[maxn];
int n, m;
int main()
{
int T;
cin>>T;
for(int t = 1; t <= T; t++)
{
printf("Case #%d: ", t);
cin >> n >> m;
cin >> p >> c >> s;
int key=(int)p[0]-(int)c[0];
for(int i=0; i='a'&&c[i]<='z'){
if(s[i]+key>'z')
s[i]=(s[i]-26+key);
else if(s[i]+key<'a')
s[i]=s[i]+key+26;
else
s[i]=s[i]+key;
}
else
{
if(s[i]+key>'Z')
s[i]=(s[i]-26+key);
else if(s[i]+key<'A')
s[i]=s[i]+key+26;
else
s[i]=s[i]+key;
}
}
printf("%s\n",s);
}
return 0;
}
D - Take Your Seat
题意:两个问题,
第一个问题:飞机上n个人,第i个人要坐在第i个位置,但是第一个人忘了自己的位置,所以他就会随机找一个位置坐下来,被坐的这个人发现自己的位置被坐了就会随机找一个没有被坐的位置坐下,这n个人是按顺序上飞机的,问第n个人坐在第n个位置的概率是多少
第二个问题:如果这n个人不是按顺序上飞机的,第n个人坐在第n个位置的概率是多少
题解:第一问,可以推出
化简一下得 (1)
将n-1带入 (2)
将左边一个 移向变成 (3)
(3)-(1) 得
得
容易想到
第二问:可以推出
发现相比第一问就加了
#include
using namespace std;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const int maxn = 1e2 + 10;
int main()
{
int T;
double ans1 = 0,ans2 = 0;
scanf("%d", &T);
for (int t = 1; t <= T; t++){
printf("Case #%d: ", t);
double n, m;
scanf("%lf%lf", &n, &m);
if (n == 1) ans1 = 1.0;
else ans1 = 0.5;
double ans2 = (1.0 + m) / (2.0 * m);
//cout << ans1 << " " << ans2 << endl;
printf("%.6f %.6f\n", ans1, ans2);
}
return 0;
}
E - 2-3-4 Tree
题意:给出2-3-4树的构造方法,然后输出2-3-4树的前序遍历
题解:抄了人家的模板
#include
#define FOR(i,s,t) for(int i=(s);i<=(t);i++)
#define pb push_back
#define mp make_pair
using namespace std;
typedef long long LL;
const int maxn=1e5+5;
int a[maxn];
int cnt,rt;
struct Node
{
int f;
vectord,ch;
void init(int fa,int x)//f是该节点的父亲? x是当前的结点拥有的值?
{
f=fa;
d.clear(),ch.clear();
d.push_back(x);//当前节点拥有多少的所有的值
}
}tr[maxn];
void ins(int p,int x)//(1,x)
{
// cout<<"rt:"<cpy_d,cpy_ch;
cpy_d.swap(tr[p].d),cpy_ch.swap(tr[p].ch);//swap ?? 这时候cop_d 和cpy_ch拥有了ty[p].d和ty[p].ch的内容 而这两个变为空?
if(p==rt)//如果p和rt相等??代表已经是根节点了 上面没有结点
{
//相当于中间结点往上提 0 1 2三个结点 中间的自然是1 变为其它两个节点的父亲
tr[rt=++cnt].init(0,cpy_d[1]);//新的结点 父亲变为0 插入d[1]?
tr[++cnt].init(rt,cpy_d[0]);//新的结点 父亲变为rt 插入d[0]? 相当于成为左儿子
tr[p].init(rt,cpy_d[2]);//原来的结点父亲是rt 只剩下d[2]? 相当于成为右儿子
tr[rt].ch.push_back(cnt),tr[rt].ch.push_back(p);//把这两个结点加入到他们的父亲节点的孩子中
if(cpy_ch.size())//如果当前节点有孩子 自然孩子也需要进行操作
{
//左边两个分到左边 右边两个分到右边 大概是为了平衡吧。。。
tr[cnt].ch.push_back(cpy_ch[0]),tr[cpy_ch[0]].f=cnt;//原来的左儿子自然也就成为现在左儿子的左儿子了
tr[cnt].ch.push_back(cpy_ch[1]),tr[cpy_ch[1]].f=cnt;//为什么把1也归为左儿子的儿子?
tr[p].ch.push_back(cpy_ch[2]),tr[cpy_ch[2]].f=p;//为什么把2 3归为右儿子的儿子?
tr[p].ch.push_back(cpy_ch[3]),tr[cpy_ch[3]].f=p;
// cout<1;i--)//??为什么要交换? 懂了 因为你要保证孩子也是有序的呀 所以要把新插入的结点换到p之后
{
if(tr[f].ch[i-1]!=p) swap(tr[f].ch[i-1],tr[f].ch[i]);
else break;
}
if(cpy_ch.size())
{
tr[p].ch.push_back(cpy_ch[0]),tr[cpy_ch[0]].f=p;
tr[p].ch.push_back(cpy_ch[1]),tr[cpy_ch[1]].f=p;
tr[cnt].ch.push_back((cpy_ch[2])),tr[cpy_ch[2]].f=cnt;
tr[cnt].ch.push_back(cpy_ch[3]),tr[cpy_ch[3]].f=cnt;
}
p=f;
}
}
// cout<<"*"<tr[p].d[tr[p].d.size()-1]) ins(tr[p].ch[tr[p].ch.size()-1],x);//如果大于最后一个元素 显然是插到右孩子中的 递归右儿子
else//不比第一个小 不比最后一个大 则肯定插入到中间
{
for(int i=1;i >T;
int ca=1;
while(T--)
{
int N;
cin>>N;
for(int i=1;i<=N;i++) cin>>a[i];
cnt=rt=1,tr[rt].init(0,a[1]); //第一个点的父亲为0 拥有元素a[1]
for(int i=2;i<=N;i++) ins(rt,a[i]);//rt不是一直是1吗?
printf("Case #%d:\n", ca++);
dfs(rt);
}
return 0;
}
F - Moving On
题意:给出一个图,每条边有长度,每个城市有危险值,要求一条最短路,使得经过的城市的危险值都小于w
题解:离散化,弗洛伊德,按危险值排序,按危险值由小到大加入城市,计算最短路
#include
using namespace std;
typedef long long ll;
const ll INF=0x3f3f3f3f3f3f3f3f;
const int maxn=200 + 2;
int r[maxn];
int dis[maxn][maxn][maxn];
int id[maxn];
bool cmp(int i,int j){
return r[i]
G - Factories
题意:给出一颗有权树,每个叶子节点可以建设工厂,问建k个工厂,如何安排使得所有工厂的之间的距离之和最短
题解:树型dp
表示以i为根节点的子树,建设j个工厂的最小距离
#include
#define FOR(i,s,t) for(int i=(s);i<=(t);i++)
#define pb push_back
#define mp make_pair
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 2;
const int maxk = 100 + 2;
const ll inf = 1e12;
const ll INF = 0x3f3f3f3f3f3f3f3f;
vector > edge[maxn];
ll dp[maxn][maxk];
int sz[maxn];
int n, k, rt;
ll miner(ll a, ll b){
return a < b ? a : b;
}
void dfs(int u, int fa){
if (edge[u].size() == 1){
sz[u] = 1;
dp[u][1] = 0ll;
}
dp[u][0] = 0ll;
FOR(i, 0, edge[u].size() - 1){
int v = edge[u][i].first;
ll w = edge[u][i].second;
if (v == fa) continue;
dfs(v, u);
sz[u] += sz[v];
dp[u][k] = miner(dp[u][k], dp[v][k]);
for (int j = min(k, sz[u]); j >= 1; j--){
FOR(l, 1, min(j, sz[v])){
dp[u][j] = miner(dp[u][j], dp[u][j - l] + dp[v][l] +1ll * (ll)w *(ll)l * (ll)(1ll * k - 1ll * l));
}
}
}
}
int main() {
//freopen("G.in", "r", stdin);
//freopen("G.out", "w", stdout);
int T;cin >> T;
FOR(cas, 1, T){
printf("Case #%d: ", cas);
scanf("%d%d",&n, &k);
FOR(i, 1, n) FOR(j, 0, k) dp[i][j] =inf;
FOR(i, 1, n) edge[i].clear();
FOR(i, 1, n) dp[i][0] = 0ll;
FOR(i, 1, n) sz[i] = 0;
FOR(i, 1, n - 1){
int u, v;
ll w;
scanf("%d%d%lld", &u, &v, &w);
//printf("%d\n",w);
edge[u].pb(mp(v, w));
edge[v].pb(mp(u, w));
}
rt = 1;
FOR(i, 1, n){
if (edge[i].size() > 1){
rt = i;
break;
}
}
dfs(rt, -1);
printf("%lld\n", dp[rt][k]);
}
return 0;
}
H - Fight Against Monsters
题意:打怪兽,每个怪兽有生命值和攻击力,每个怪兽在没死之前单位时间都会攻击玩家,玩家每打一个怪兽伤害都是从1开始递增,问玩家最少需要承受多少伤害
题解:贪心(排序)
按 排序,Turn是需要打几回合怪兽才会死的回合数
#include
using namespace std;
const int maxn = 1e5 + 5;
typedef long long ll;
struct Monster{
int hp, atk;
}mons[maxn];
int n;
bool cmp(Monster A, Monster B){
ll x1 = ceil((sqrt(1.0 + 8.0 * A.hp) - 1) / 2.0);
ll x2 = ceil((sqrt(1.0 + 8.0 * B.hp) - 1) / 2.0);
if (1ll * A.atk * x2 == 1ll * x1 * B.atk) return A.atk > B.atk;
return 1ll * A.atk * x2 > 1ll * x1 * B.atk;
}
ll sum[maxn];
int main()
{
int T;
cin >> T;
for (int t = 1; t <= T; t++){
printf("Case #%d: ", t);
scanf("%d", &n);
for (int i = 0; i < n; i++){
scanf("%d%d",&mons[i].hp, &mons[i].atk);
}
sort(mons, mons+n, cmp);
ll turn = 0ll, ans = 0ll;
for (int i = 0; i <= n + 1; i++) sum[i] = 0ll;
for (int i = n - 1 ; i >= 0; i--){
sum[i] += sum[i + 1] + (ll)mons[i].atk;
}
int i = 0;
for (i = 0; i < n; i++){
turn = (ll)ceil((sqrt(1.0 + 8.0 * mons[i].hp) - 1) / 2.0);
ans += 1ll* sum[i] * (ll)turn;
// cout << turn << endl;
}
cout << ans <<'\n';
}
return 0;
}
J - Nested Triangles
题意:新定义之中东西,Nested Triangles,就是若干个公用一条边的三角形,除了公用的这条边另外的两条边都不相交或者重合,问最大的Nested Triangles最多有几个三角形
题解:几何+最长上升子序列
按照其中一边的边排序,另一边的边最最长上升子序列
#include
#define pb push_back
#define mp make_pair
#define FOR(i,s,t) for(int i=(s);i<=(t);i++)
using namespace std;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const ll INF = 0x3f3f3f3f3f3f3f3f;
const int maxn = 1e5 + 5;
struct Vec{
ll x, y;
Vec(){}
Vec(ll a, ll b){x = a,y = b;}
}PQ, QP;
struct Node{
ll x, y;
Vec operator -(const Node A)const{return Vec(x - A.x, y - A.y);}
}node[maxn],P, Q;
vector id[2];
int pre[maxn], f[maxn], c[maxn];
int n;
ll Cross(Vec A, Vec B){return A.x * B.y - A.y * B.x;}
ll Mult(Vec A, Vec B){return A.x * B.x + A.y * B.y;}
bool isUp(Node x){return Cross(PQ, x - P) > 0;}
int lowbit(int x) {return x&(-x);}
void modify(int x, int val){
for (int i = x; i < maxn; i+= lowbit(i)){
if (x != -1 && (c[i] == -1 || f[val] >= f[c[i]])){
if (c[i] == -1 || f[val] > f[c[i]]) c[i] = val;
//else if (f[x] == f[c[i]] && x < c[i]) c[i] = x;
else if (val < c[i]) c[i] = val;
}
}
return ;
}
int query(int x){
int ret = -1;
for (int i = x; i>0; i-=lowbit(i)){
if (c[i] != -1 && (ret == -1 || f[c[i]] >= f[ret])){
if (ret == - 1|| f[c[i]] > f[ret]) ret = c[i];
//else if (f[c[i]] == f[ret] && c[i] < ret) ret = c[i];
else if (c[i] < ret) ret = c[i] ;
}
}
return ret;
}
bool cmp1(int i, int j){return Cross(node[i] - P, node[j] - P) > 0;}
bool cmp2(int i, int j){return Cross(node[i] - Q, node[j] - Q) < 0;}
int a[maxn], b[maxn];
void print(int x){
int i = x;
while (i != -1){
printf("%d\n", i);
i = pre[i];
}
}
int main(){
int T;cin >> T;
FOR(cas, 1, T){
scanf("%lld%lld%lld%lld", &P.x, &P.y, &Q.x, &Q.y);
PQ = Q - P;
QP = P - Q;
id[0].clear();
id[1].clear();
scanf("%d", &n);
FOR(i , 1, n){
scanf("%lld%lld",&node[i].x, &node[i].y);
if (isUp(node[i])) id[0].pb(i);
else id[1].pb(i);
}
int M[2] = {0};
FOR(i, 0, 1){
sort(id[i].begin(), id[i].end(), cmp1);
for (int j = 0; j < id[i].size(); j++){
if (j == 0) a[id[i][j]] = 1;
else if (cmp1(id[i][j - 1], id[i][j])) a[id[i][j]] = a[id[i][j-1]] + 1;
else a[id[i][j]] = a[id[i][j-1]];
}
sort(id[i].begin(), id[i].end(), cmp2);
for (int j = 0; j < id[i].size(); j++){
if (j == 0) b[id[i][j]] = 1;
else if (cmp2(id[i][j - 1], id[i][j])) b[id[i][j]] = b[id[i][j-1]]+1;
else b[id[i][j]] = b[id[i][j-1]];
}
for (int j = 0; j <= id[i].size() ; j++) c[j] = -1;
for (int j = 0; j < id[i].size() ; j++){
int k = j;
while (k + 1 < id[i].size()&& b[id[i][k]] == b[id[i][k + 1]]) k++;
FOR(p, j , k){
int o = id[i][p];
pre[o] = query(a[o] - 1);
f[o] = pre[o] == -1 ? 1 : f[pre[o]] + 1;
M[i] = max(M[i], f[o]);
}
FOR(p, j ,k){
int o = id[i][p];
modify(a[o], o);
}
j = k;
}
swap(P, Q);
swap(PQ, QP);
}
//FOR(j, 1, n) cout << c[j] << " " ;cout << endl;
printf("Case #%d: %d\n", cas, max(M[1], M[0]));
FOR(j, 1, n){
if (f[j] == max(M[1], M[0])){
print(j);
break;
}
}
}
return 0;
}
L - Continuous Intervals
题意:给出一串数,定义一段区间是连续的表示这段区间排序以后相邻两个数的差不超过1
题解:用MAX表示这段区间的最大值,MIN表示这段区间的最小值,CNT表示这段区间的不同数的种类数;MAX-MIN=CNT-1时,满足条件,MAX-MIN>=CNT-1恒成立。简单化简一下就是一段区间的MAX-MIN-CNT+1=0,则这个区间符合条件。
枚举区间的R,计算有多少个L满足L,R这个区间满足条件,用线段树保存MAX-MIN-CNT-1的最小值及其数量,当枚举一个新的R时,最大值受到影响的区间就是右边第一个比a[L]大的数是a[R]的L,可以用单调栈维护,同理最小值也可以用单调栈维护。CNT受影响的区间就是a[R]上一次出现的位置到R这段区间的L,这段区间的每一个L,构成的区间[L,R]都多了一个新的数,所以CNT多了1,所以MAX-MIN-CNT+1,就少1。可以用map维护上一个a[R]出现的位置,也可以离散化。
#include
#define FOR(I,S,T) for(int I=(S);I<=(T);I++)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
using namespace std;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const ll INF = 0x3f3f3f3f3f3f3f3f;
const int maxn = 1e5 +10;
int M[maxn << 2], cnt[maxn << 2], tag[maxn << 2];
void gather(int p) {
M[p] = min(M[p << 1], M[p << 1 | 1]);
if (M[p << 1] == M[p << 1 | 1]) cnt[p] = cnt[p << 1] + cnt[p << 1 | 1];
else if (M[p << 1] < M[p << 1 | 1]) cnt[p] = cnt[p << 1];
else cnt[p] = cnt[p << 1 | 1];
}
void push(int p){
if (tag[p]){
tag[p << 1] += tag[p];
tag[p << 1 | 1] += tag[p];
M[p << 1] += tag[p];
M[p << 1 | 1] += tag[p];
tag[p] = 0;
}
}
void build(int p, int l, int r){
tag[p] = 0, cnt[p] = 1;
if (l < r){
int mid = (l + r) / 2;
build(p << 1, l, mid);
build(p << 1 | 1, mid + 1, r);
gather(p);
}
else M[p] = 0;
}
void modify(int p, int tl, int tr, int l, int r, int v){
if (tl > tr) return ;
if (tl > r || tr < l) return ;
if (l <= tl && tr <= r){
tag[p] += v;
M[p] += v;
return;
}
push(p);
int mid = (tl + tr) >> 1;
modify(p << 1, tl, mid, l, r, v);
modify(p << 1 | 1, mid + 1, tr, l, r, v);
gather(p);
}
int query(int p, int tl, int tr, int l, int r){
if (tl > tr) return 0;
if (tr < l || tl > r) return 0;
if (l <= tl && tr <= r) return M[p] == 0 ? cnt[p] : 0;
push(p);
int mid = (tl + tr) >> 1;
return query(p << 1, tl, mid, l, r) + query(p << 1 | 1, mid + 1, tr, l, r);
}
int a[maxn];
map pre;
stack up, down;
int main() {
int T;
cin >> T;
FOR(cas, 1, T){
int n;
ll ans = 0;
scanf("%d", &n);
build(1, 1, n);
while (!up.empty()) up.pop();
while (!down.empty()) down.pop();
pre.clear();
FOR(i,1,n) {
scanf("%d", a + i);
while (!up.empty() && a[up.top()] > a[i]) {
int o = up.top();
up.pop();
if (!up.empty()) modify(1, 1, n, up.top() + 1, o, a[o] - a[i]);
else modify(1, 1, n, 1, o, a[o] - a[i]);
}
up.push(i);
while (!down.empty() && a[down.top()] < a[i]) {
int o = down.top();
down.pop();
if (!down.empty()) modify(1, 1, n, down.top() + 1, o, a[i] - a[o]);
else modify(1, 1, n, 1, o, a[i] - a[o]);
}
down.push(i);
if (pre.find(a[i]) != pre.end()) modify(1, 1, n, pre[a[i]] + 1, i - 1, -1);
else modify(1, 1, n, 1, i - 1, -1);
pre[a[i]] = i;
ans += query(1, 1, n, 1, i);
}
printf("Case #%d: %lld\n", cas, ans);
}
return 0;
}
你可能感兴趣的:(acm)
笔记:代码随想录算法训练营day57:99.岛屿数量 深搜、岛屿数量 广搜、100.岛屿的最大面积
jingjingjing1111
深度优先 算法 笔记
学习资料:代码随想录注:文中含大模型生成内容99.岛屿数量卡码网题目链接(ACM模式)先看深搜方法:找到未标标记过的说明找到一片陆地的或者一片陆地的一个角落,dfs搜索是寻找相连接的陆地其余部分并做好标记#include#includeusingnamespacestd;intdirection[4][2]={0,1,-1,0,0,-1,1,0};voiddfs(constvector>&B612
笔记:代码随想录算法训练营day56:图论理论基础、深搜理论基础、98. 所有可达路径、广搜理论基础
jingjingjing1111
笔记
学习资料:代码随想录连通图是给无向图的定义,强连通图是给有向图的定义朴素存储:二维数组邻接矩阵邻接表:list基础知识:C++容器类|菜鸟教程深搜是沿着一个方向搜到头再不断回溯,转向;广搜是每一次搜索要把当前能够得到的方向搜个遍深搜三部曲:传入参数、终止条件、处理节点+递推+回溯98.所有可达路径卡码网题目链接(ACM模式)先是用邻接矩阵,矩阵的x,y表示从x到y有一条边主要还是用回溯方法遍历整个
【科大讯飞笔试题汇总】2024-04-21-科大讯飞春招笔试题-三语言题解(CPP/Python/Java)
春秋招笔试突围
最新互联网春秋招试题合集 python java 开发语言 春招笔试 互联网大厂笔试题
大家好这里是KK爱Coding,一枚热爱算法的程序员✨本系列打算持续跟新科大讯飞近期的春秋招笔试题汇总~ACM银牌|多次AK大厂笔试|编程一对一辅导感谢大家的订阅➕和喜欢KK这边最近正在收集近一年互联网各厂的笔试题汇总,如果有需要的小伙伴可以关注后私信一下KK领取,会在飞书进行同步的跟新,5月1日之前限时免费领取哦,后续会由ACM银牌团队持续维护~。文章目录01.硬币最少组合问题问题描述输入格式输
申请 Let's Encrypt 的 免费 TLS 证书实现网站的 https 访问
python
因为这个使用apt安装的python第三方包的版本为什么这么滞后?原因,所以我不是用sudo把证书弄到系统路径,而是选择到普通用户路径下面╭─pon@aliyun2core2GB~/certbot╰─➤tree.├──config│ ├──accounts│ │ └──acme-v02.api.letsencrypt.org│ │ └──directory│ │ └──9401598
第十四届蓝桥杯省赛C++C组——子矩阵(蓝桥杯篇章完结撒花)
Dawn_破晓
蓝桥杯一个月速成日志 蓝桥杯 c++ c语言
本来想写的速成日志也没写多少,cb国二,最后一题树形DP调了一小时发现h数组没置-1,最后无果,如果没马虎可能有国一水平了,正儿八经准备用了两个月,因为要考研,每天只学2-3小时的算法,一共刷了300多道题吧,由于之前选过ACM(实验课因为周六去,懒得去还给我挂了)和算法分析课,所以还是有点基础的,如果算上一年前刷的题总共加起来也就400多道题吧。说一下历程吧,一年前的题都是老师布置的作业,迫不得
算法刷题汇总 python版本
lanlinbuaa
python 算法 leetcode
OJ在线编程常见输入输出练习牛客网练习链接:https://ac.nowcoder.com/acm/contest/5657#question1.读取行数未知方法一:使用forlineinsys.stdinimportsysforlineinsys.stdin:a=line.split()#split()默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等print(int(a[0])+i
Mac下安装Zed以及Zed对MCP(模型上下文协议)的支持
skywalk8163
人工智能 macos 前端 服务器
Zed是当前新流行的一种编辑器,支持MCP(模型上下文协议)Mac下安装Zed比较简单,直接有安装包,在这里:brewinstall--caskzedMacMonterey下是可以安装上的,亲测有效。配置使用Ctrl+Shift+P调出AI,然后设置使用的模型可以使用deepseek,但是没有找到使用自建服务器的设置方法,有些遗憾。附加学习关于Zed里面的MCP部分,手册:ModelContext
在雷池社区版 WAF 通过文件更新 SSL 证书的方法
运维服务器ubuntu
有些用户在使用雷池WAF的证书管理功能时,觉得手动申请的证书需要去界面上传一次略显繁琐,想通过一个固定的目录存储证书文件,覆盖后让雷池自动检测并更新,这样可以通过一些自动化工具来完成整个流程。相关的ISSUE有:证书增加使用路径导入方式手动更新证书文件并重启容器后,【证书管理】界面的有效期时间没有同步关于结合acme.sh自动部署证书的建议因此为了解决或者优化上面的问题,雷池社区版在7.2.0版本
在M4 Mac Mini集群上运行DeepSeek V3 671B
强化学习曾小健
Deepseek原理与使用 macos
在M4MacMini集群上运行DeepSeekV3671B原创咖农小黄幻想发生器2024年12月30日10:50天津我们刚刚在苹果硅芯片上运行了最大的开源模型。直接来看在8台M4Pro64GBMacMini集群(总内存512GB)上运行DeepSeekv3(671B)的结果:模型首个Token时间(秒)每秒Token数DeepSeekV3671B(4位)2.915.37Llama3.1405B(4
HDU多校2019 第三场 1007(HDU 6609) Find the answer(离散化+树状数组)
沙雕.
2019HDU 多校
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6609解题思路:先把给出来的值离散化,对于值相同位置不同的数离散化后的值不相同。两个树状数组,一个维护区间内的和,一个维护区间内的个数。对于每个i二分答案,找到右界之后询问第二个树状数组得到剩余的个数x,那么去掉的就是(i-1)-x代码:(注意行末空格)#include#include#include#
重构:封装记录
Allenonlywork
重构
曾用名:以数据类取代记录(ReplaceRecordwithDataClass)//重构前organization={name:"AcmeGooseberries",country:"GB"};//重构后classOrganization{constructor(data){this.name=data.name;this._country=data.country;}getname(){retu
seacmsv9注入
2022计科一班唐文
oracle 数据库
一、当注入时,information_schema被禁用的解决方法information_schema数据库是MySQL和其他一些数据库系统中存储元数据的标准视图,包含表、列、权限等信息。攻击时可以直接查询这些信息来获取数据库结构,比如表名和列名。当information_schema被禁用时需要寻找其他途径来获取必要的信息。在information_schema数据库中储存了整个MySQL服务器
递推和递归_一文学会递归递推
HR刀姐
递推和递归
递归算法和递推算法无论是在ACM竞赛还是项目工程上都有着极为广泛的应用,但想要完全掌握两者的思想并不容易,对于刚刚接触编程的人来说更是这样,我在初次接触递归递推时就吃了很多的苦头,除了当时对编程语言不太熟悉之外,最大的原因就是难以理解其中的思想,本文将二者结合代码分别讲解,力求以"理论+实践"的方式使读者明白两种算法。一箭双雕,一文双递。一.递归和递推的区别学习递归递推的一个容易遇到的问题就是混淆
LWC-KD:图结构感知的推荐系统增量学习对比知识蒸馏
宇直不会放弃
GKD-Middle layer 人工智能 python chatgpt gpu算力 深度学习 机器学习 神经网络
LWC-KD:图结构感知的推荐系统增量学习对比知识蒸馏《GraphStructureAwareContrastiveKnowledgeDistillationforIncrementalLearninginRecommenderSystems》2021作者是YueningWang、YingxueZhang和MarkCoates论文地址:https://dl.acm.org/doi/10.1145/
作为 .NET CAD 二次开发工程师的核心知识与建议
周杰伦fans
ai学习参考 Cad二次开发.NET笔记 学习C#的笔记 .net
作为.NETCAD二次开发工程师的核心知识与建议一、必备知识与硬性要求编程技能与工具•C#与.NET平台:◦熟练掌握C#语法、面向对象编程(OOP)、泛型、LINQ等核心特性。◦需熟悉AutoCAD.NETAPI(如acdbmgd.dll、acmgd.dll),能通过CommandMethod创建自定义命令。示例:[CommandMethod("DrawLine")]publicvoidDrawL
电机的类型详解
全职编程-叶秋意
stm32(stm32F103 stm32L151) 电机 无刷电机 交流电机
目录1.直流电机(DCMotor)1.1永磁直流电机(PMDC)1.2无刷直流电机(BLDC)1.3有刷直流电机(BrushedDCMotor)2.交流电机(ACMotor)2.1感应电机(InductionMotor)2.1.1三相感应电机2.1.2单相感应电机2.2同步电机(SynchronousMotor)2.2.1永磁同步电机(PMSM)2.2.2励磁同步电机3.特殊类型电机3.1步进电机
动态规划--简单递推
一只IT小小鸟
算法知识 dp acm 动态规划学习 动态规划 递推
动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少,多元性强,主要考察思维能力、建模抽象能力、灵活度。*************************************************************************************************************动态规划(英语:Dynamicprogramming
【ACM独立出版-录用文章全部递交EI检索-检索稳定】2025年数字化教育与信息技术国际学术会议(DEIT 2025)
AEIC_GAO
数据挖掘 大数据 人工智能 数据分析 教育电商 zoom会议
【会议亮点】1.EI检索稳定:ACMInternationalConferenceProceedingsSeries独立出版2.参会人数多,口头报告和海报展示均提供正式的参会证书3.线下参会包含三餐,茶歇、会议物料:定制手提袋、会议手册、会议通知、会议日程、会议邀请函等证明类文件4.线上与线下同步进行,支持不便到线下的参会者线上参与,均享有与线下会场一样的发言权利5.主办单位为湖南师范大学教育科学
国内外算法比赛推荐
AspiringUstcer_1958
C++学习 算法 c++
引言在计算机科学领域,算法比赛是提升编程技能、检验学习成果的绝佳途径。对于C++语言的爱好者来说,选择一个高质量且对C++支持良好的算法比赛至关重要。今天,将从国内外两个维度为大家推荐这类比赛。国际知名算法比赛ACM国际大学生程序设计竞赛(ACM-ICPC)ACM-ICPC是一项在全球范围内极具影响力的大学生算法和编程竞赛,自1970年起举办,历史悠久且规模宏大。参赛队伍由三名大学生组成,需在五小
2024年图灵奖公布:两位AI先锋因强化学习获奖
吴脑的键客
人工智能 人工智能 chatgpt
据《纽约时报》报道,全球最大的计算机专业人士协会计算机协会(ACM)周三宣布,将2024年图灵奖授予安德鲁·巴托(AndrewBarto)博士和理查德·萨顿(RichardSutton)博士,以表彰他们在强化学习方面的研究。巴托目前是马萨诸塞大学荣誉退休教授。萨顿现在担任阿尔伯塔大学教授,他也是前DeepMind研究科学家。两人将分享图灵奖的100万美元奖金。图灵奖设立于1966年,常被称为“计算
【微代码】在Mellanox驱动中有哪些work?以及有哪些workqueue?
北冥的备忘录
网络 服务器 Mellanox
work比如常见的几个work:ib_cq_poll_work用来pollcq的health_recover_work用来fw健康恢复的mlx5e_tx_timeout_worktxtimeout的cma_work_handler用来管理rdmacm的事件的workqueueworkarp_repath->workipoib_repath_ahassoc->del_worknvmet_fc_del
CAD插件技术真心不难,无非是画点线条,CAD内部能实现的,C#调用acdbmgd.dll和acmgd.dll也能实现
思杰软件
c#
CAD插件看起来很神秘,其实一个合格码农经过几天就能快速掌握。没什么秘密,开发CAD插件和winform一样简单学几个类库用法就是(只是太多人不喜欢知识分享),在CAD里展现界面和winform略有不同(整个项目工程在文章的最后有下载)。学习CAD插件开发的动机是为了薪水,由于公司是做显示屏和触摸屏的,养了一堆CAD的设计工程师拿着8K以上的薪水,当时我做为信息系统开发人员才拿4K,4个人要开发维
编程题 - 汽水瓶【JavaScript/Node.js解法】
幸运小圣
编程题 javascript node.js
“学如逆水行舟,不进则退。”——《增广贤文》目录汽水瓶题目:解答分析:js代码解答-ACM模式:代码通过:题解分析:简洁思路代码:汽水瓶题目:某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。小张手上有n个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水。输入描述:本题将会给出1=3){letnewBottles=Math.floor(val/3);totalBott
【竞赛专用方法总结】蓝桥杯-ACM比赛参考
JokerSZ.
蓝桥杯 算法 数据结构 竞赛 编程
基础部分数位拆分进位模拟最大公约、最小公倍数、质数、素数试除法判定质数——模板题AcWing866.试除法判定质数boolis_prime(intx){if(x1)coutget_divisors(intx){vectorres;for(inti=1;i1)res=res/x*(x-1);returnres;}筛法求欧拉函数——模板题AcWing874.筛法求欧拉函数intprimes[N],cn
Cuppa CMS任意文件读取漏洞(CVE-2022-25401)
风中追风-fzzf
# 文件读取 安全 web安全
一、漏洞概述CuppaCMSv1.0中文件管理器的复制功能允许将任何文件复制到当前目录,从而授予攻击者对任意文件得读取权限,/templates/default/html/windows/right.php文件存在任意文件读取漏洞。二、影响范围v1.0三、访问页面四、漏洞复现1、访问接口POST接口/templates/default/html/windows/right.phpPOST/temp
使用 acme.sh 申请和管理 免费SSL 证书:告别 certbot 的繁琐
lihuang319
linux ssl
使用acme.sh申请和管理SSL证书:告别certbot的繁琐引言介绍SSL证书的重要性传统certbot的痛点(如live目录、复杂的配置)acme.sh的优势(轻量、灵活、自动化)一、acme.sh简介什么是acme.shacme.sh的主要特点支持多种DNS服务商自动化续期直接指定证书路径无需额外依赖二、安装acme.sh基本安装curlhttps://get.acme.sh|sh-sem
2024年下半年郑州大学ACM招新赛题解(ABCDEFGHIJKL)
lskkkkkkkkkkkk
C++ 题解 算法 数据结构 zzuacm招新赛
An-th题意已知公式π=∑k=0∞116k(48k+1−28k+4−18k+5−18k+6)\pi=\sum_{k=0}^{\infty}\frac{1}{16^k}(\frac{4}{8k+1}-\frac{2}{8k+4}-\frac{1}{8k+5}-\frac{1}{8k+6})π=∑k=0∞16k1(8k+14−8k+42−8k+51−8k+61)请你求出π\piπ的十六进制的小数点后
Mac M1安装Python---kalrry
kalrry
Python python macos 开发语言
MacM1安装Python---kalrry一、准备二、安装三、配置环境变量1、配置环境2、测试3、pip3与pip建立软链接四、参考备份一、准备Python3.9.1发布后开始支持苹果M1和macOS11BigSur也就是我们要下载3.9.1以后的版本,最好选择最新稳定版python官网下载python阿里网盘下载—sa65二、安装双击正常一路next安装即可三、配置环境变量1、配置环境命令行输
服务器/mac m1配置python环境
LoveSeven.Lin
macos python 开发语言
目录服务器配置环境一、安装miniconda二、创建环境三、激活环境四、conda安装Macm1配置环境一、安装Miniforge3二、创建环境三、激活环境四、安装tensorflow五、测试运行服务器配置环境一、安装miniconda#step1:获取安装shell脚本文件wgethttps://repo.continuum.io/miniconda/Miniconda3-latest-Linu
Mac M1芯片通过源码安装Python2.7.x
乌萨奇敲代码
macos python
文章目录MacM1芯片通过源码安装Python2.7.x1.下载源码2.安装依赖3.配置环境4.配置编译选项5.编译6.验证安装MacM1芯片通过源码安装Python2.7.x首先,由于AppleM1芯片使用的是ARM架构,已经不支持Python2.7.x了,所以需要利用Rosetta手动编译Python2.7.x,这里以安装Python2.7.17为例。1.下载源码首先,从Python官方网站下
jvm调优总结(从基本概念 到 深度优化)
oloz
java jvm jdk 虚拟机 应用服务器
JVM参数详解:http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html
Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。
【Scala十六】Scala核心十:柯里化函数
bit1129
scala
本篇文章重点说明什么是函数柯里化,这个语法现象的背后动机是什么,有什么样的应用场景,以及与部分应用函数(Partial Applied Function)之间的联系 1. 什么是柯里化函数
A way to write functions with multiple parameter lists. For instance
def f(x: Int)(y: Int) is a
HashMap
dalan_123
java
HashMap在java中对很多人来说都是熟的;基于hash表的map接口的非同步实现。允许使用null和null键;同时不能保证元素的顺序;也就是从来都不保证其中的元素的顺序恒久不变。
1、数据结构
在java中,最基本的数据结构无外乎:数组 和 引用(指针),所有的数据结构都可以用这两个来构造,HashMap也不例外,归根到底HashMap就是一个链表散列的数据
Java Swing如何实时刷新JTextArea,以显示刚才加append的内容
周凡杨
java 更新 swing JTextArea
在代码中执行完textArea.append("message")后,如果你想让这个更新立刻显示在界面上而不是等swing的主线程返回后刷新,我们一般会在该语句后调用textArea.invalidate()和textArea.repaint()。
问题是这个方法并不能有任何效果,textArea的内容没有任何变化,这或许是swing的一个bug,有一个笨拙的办法可以实现
servlet或struts的Action处理ajax请求
g21121
servlet
其实处理ajax的请求非常简单,直接看代码就行了:
//如果用的是struts
//HttpServletResponse response = ServletActionContext.getResponse();
// 设置输出为文字流
response.setContentType("text/plain");
// 设置字符集
res
FineReport的公式编辑框的语法简介
老A不折腾
finereport 公式 总结
FINEREPORT用到公式的地方非常多,单元格(以=开头的便被解析为公式),条件显示,数据字典,报表填报属性值定义,图表标题,轴定义,页眉页脚,甚至单元格的其他属性中的鼠标悬浮提示内容都可以写公式。
简单的说下自己感觉的公式要注意的几个地方:
1.if语句语法刚接触感觉比较奇怪,if(条件式子,值1,值2),if可以嵌套,if(条件式子1,值1,if(条件式子2,值2,值3)
linux mysql 数据库乱码的解决办法
墙头上一根草
linux mysql 数据库乱码
linux 上mysql数据库区分大小写的配置
lower_case_table_names=1 1-不区分大小写 0-区分大小写
修改/etc/my.cnf 具体的修改内容如下:
[client]
default-character-set=utf8
[mysqld]
datadir=/var/lib/mysql
socket=/va
我的spring学习笔记6-ApplicationContext实例化的参数兼容思想
aijuans
Spring 3
ApplicationContext能读取多个Bean定义文件,方法是:
ApplicationContext appContext = new ClassPathXmlApplicationContext(
new String[]{“bean-config1.xml”,“bean-config2.xml”,“bean-config3.xml”,“bean-config4.xml
mysql 基准测试之sysbench
annan211
基准测试 mysql基准测试 MySQL测试 sysbench
1 执行如下命令,安装sysbench-0.5:
tar xzvf sysbench-0.5.tar.gz
cd sysbench-0.5
chmod +x autogen.sh
./autogen.sh
./configure --with-mysql --with-mysql-includes=/usr/local/mysql
sql的复杂查询使用案列与技巧
百合不是茶
oracle sql 函数 数据分页 合并查询
本片博客使用的数据库表是oracle中的scott用户表;
------------------- 自然连接查询
查询 smith 的上司(两种方法)
&
深入学习Thread类
bijian1013
java thread 多线程 java多线程
一. 线程的名字
下面来看一下Thread类的name属性,它的类型是String。它其实就是线程的名字。在Thread类中,有String getName()和void setName(String)两个方法用来设置和获取这个属性的值。
同时,Thr
JSON串转换成Map以及如何转换到对应的数据类型
bijian1013
java fastjson net.sf.json
在实际开发中,难免会碰到JSON串转换成Map的情况,下面来看看这方面的实例。另外,由于fastjson只支持JDK1.5及以上版本,因此在JDK1.4的项目中可以采用net.sf.json来处理。
一.fastjson实例
JsonUtil.java
package com.study;
impor
【RPC框架HttpInvoker一】HttpInvoker:Spring自带RPC框架
bit1129
spring
HttpInvoker是Spring原生的RPC调用框架,HttpInvoker同Burlap和Hessian一样,提供了一致的服务Exporter以及客户端的服务代理工厂Bean,这篇文章主要是复制粘贴了Hessian与Spring集成一文,【RPC框架Hessian四】Hessian与Spring集成
在
【RPC框架Hessian二】Hessian 对象序列化和反序列化一文中
【Mahout二】基于Mahout CBayes算法的20newsgroup的脚本分析
bit1129
Mahout
#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information re
nginx三种获取用户真实ip的方法
ronin47
随着nginx的迅速崛起,越来越多公司将apache更换成nginx. 同时也越来越多人使用nginx作为负载均衡, 并且代理前面可能还加上了CDN加速,但是随之也遇到一个问题:nginx如何获取用户的真实IP地址,如果后端是apache,请跳转到<apache获取用户真实IP地址>,如果是后端真实服务器是nginx,那么继续往下看。
实例环境: 用户IP 120.22.11.11
java-判断二叉树是不是平衡
bylijinnan
java
参考了
http://zhedahht.blog.163.com/blog/static/25411174201142733927831/
但是用java来实现有一个问题。
由于Java无法像C那样“传递参数的地址,函数返回时能得到参数的值”,唯有新建一个辅助类:AuxClass
import ljn.help.*;
public class BalancedBTree {
BeanUtils.copyProperties VS PropertyUtils.copyProperties
诸葛不亮
PropertyUtils BeanUtils
BeanUtils.copyProperties VS PropertyUtils.copyProperties
作为两个bean属性copy的工具类,他们被广泛使用,同时也很容易误用,给人造成困然;比如:昨天发现同事在使用BeanUtils.copyProperties copy有integer类型属性的bean时,没有考虑到会将null转换为0,而后面的业
[金融与信息安全]最简单的数据结构最安全
comsci
数据结构
现在最流行的数据库的数据存储文件都具有复杂的文件头格式,用操作系统的记事本软件是无法正常浏览的,这样的情况会有什么问题呢?
从信息安全的角度来看,如果我们数据库系统仅仅把这种格式的数据文件做异地备份,如果相同版本的所有数据库管理系统都同时被攻击,那么
vi区段删除
Cwind
linux vi 区段删除
区段删除是编辑和分析一些冗长的配置文件或日志文件时比较常用的操作。简记下vi区段删除要点备忘。
vi概述
引文中并未将末行模式单独列为一种模式。单不单列并不重要,能区分命令模式与末行模式即可。
vi区段删除步骤:
1. 在末行模式下使用:set nu显示行号
非必须,随光标移动vi右下角也会显示行号,能够正确找到并记录删除开始行
清除tomcat缓存的方法总结
dashuaifu
tomcat 缓存
用tomcat容器,大家可能会发现这样的问题,修改jsp文件后,但用IE打开 依然是以前的Jsp的页面。
出现这种现象的原因主要是tomcat缓存的原因。
解决办法如下:
在jsp文件头加上
<meta http-equiv="Expires" content="0"> <meta http-equiv="kiben&qu
不要盲目的在项目中使用LESS CSS
dcj3sjt126com
Web less
如果你还不知道LESS CSS是什么东西,可以看一下这篇文章,是我一朋友写给新人看的《CSS——LESS》
不可否认,LESS CSS是个强大的工具,它弥补了css没有变量、无法运算等一些“先天缺陷”,但它似乎给我一种错觉,就是为了功能而实现功能。
比如它的引用功能
?
.rounded_corners{
[入门]更上一层楼
dcj3sjt126com
PHP yii2
更上一层楼
通篇阅读完整个“入门”部分,你就完成了一个完整 Yii 应用的创建。在此过程中你学到了如何实现一些常用功能,例如通过 HTML 表单从用户那获取数据,从数据库中获取数据并以分页形式显示。你还学到了如何通过 Gii 去自动生成代码。使用 Gii 生成代码把 Web 开发中多数繁杂的过程转化为仅仅填写几个表单就行。
本章将介绍一些有助于更好使用 Yii 的资源:
Apache HttpClient使用详解
eksliang
httpclient http协议
Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会
zxing二维码扫描功能
gundumw100
android zxing
经常要用到二维码扫描功能
现给出示例代码
import com.google.zxing.WriterException;
import com.zxing.activity.CaptureActivity;
import com.zxing.encoding.EncodingHandler;
import android.app.Activity;
import an
纯HTML+CSS带说明的黄色导航菜单
ini
html Web html5 css hovertree
HoverTree带说明的CSS菜单:纯HTML+CSS结构链接带说明的黄色导航
在线体验效果:http://hovertree.com/texiao/css/1.htm代码如下,保存到HTML文件可以看到效果:
<!DOCTYPE html >
<html >
<head>
<title>HoverTree
fastjson初始化对性能的影响
kane_xie
fastjson 序列化
之前在项目中序列化是用thrift,性能一般,而且需要用编译器生成新的类,在序列化和反序列化的时候感觉很繁琐,因此想转到json阵营。对比了jackson,gson等框架之后,决定用fastjson,为什么呢,因为看名字感觉很快。。。
网上的说法:
fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。
基于Mybatis封装的增删改查实现通用自动化sql
mengqingyu
DAO
1.基于map或javaBean的增删改查可实现不写dao接口和实现类以及xml,有效的提高开发速度。
2.支持自定义注解包括主键生成、列重复验证、列名、表名等
3.支持批量插入、批量更新、批量删除
<bean id="dynamicSqlSessionTemplate" class="com.mqy.mybatis.support.Dynamic
js控制input输入框的方法封装(数字,中文,字母,浮点数等)
qifeifei
javascript js
在项目开发的时候,经常有一些输入框,控制输入的格式,而不是等输入好了再去检查格式,格式错了就报错,体验不好。 /** 数字,中文,字母,浮点数(+/-/.) 类型输入限制,只要在input标签上加上 jInput="number,chinese,alphabet,floating" 备注:floating属性只能单独用*/
funct
java 计时器应用
tangqi609567707
java timer
mport java.util.TimerTask; import java.util.Calendar; public class MyTask extends TimerTask { private static final int
erlang输出调用栈信息
wudixiaotie
erlang
在erlang otp的开发中,如果调用第三方的应用,会有有些错误会不打印栈信息,因为有可能第三方应用会catch然后输出自己的错误信息,所以对排查bug有很大的阻碍,这样就要求我们自己打印调用的栈信息。用这个函数:erlang:process_display (self (), backtrace).需要注意这个函数只会输出到标准错误输出。
也可以用这个函数:erlang:get_s