营销策划网站适合女生的计算机专业有哪些

当前位置: 首页 > news >正文

营销策划网站,适合女生的计算机专业有哪些,阿里云域名服务,少儿编程课网课哪个好本次变更了以下内容: 为了使用之前ip2sta的ip到端点名的python,dic变量,将其存入redis hashset.使用地址/api/ip2dic 手动执行之.并且定义在/station/init,这个每天初始化redis的路径下.在rust axum的route中定义/sta/ip2dic,用来得到redis字典的内容,包含值和键.在前端的人名…本次变更了以下内容: 为了使用之前ip2sta的ip到端点名的python,dic变量,将其存入redis hashset.使用地址/api/ip2dic 手动执行之.并且定义在/station/init,这个每天初始化redis的路径下.在rust axum的route中定义/sta/ip2dic,用来得到redis字典的内容,包含值和键.在前端的人名下使用了乒乓操作.点击状态切换,并把签到的人汇总到请假列. 可以请假和取消请假. 三个集合存数据. *. 1端点对应的人名集合,key day/端点名 *. 2.签到的集合,key check:端点名 . 3,请假的集合 key check:端点名:thin (hashset,可以存放具体内容,但没使用)最后是调整caddy的反代,需要使用 个别路径的跳转,其中rust使用全新的根路径下的子路径,但是android入口也就是获得IP并且ip2sta转到端点名的路径,定义到新的rust接口.剩下的由rust实现,移动端的功能.需要使用以下语法快.在rust规划中应该加入somepath目录,这样,调试和发布,就能通用了. handle_path /somepath/ rewrite * /somerust{path}上个文章给出了示例redis连接池.本次在它基础扩展了几乎全部adroid,app,webkit所使用网页的实现方式,切换为axum.主要逻辑从python直接迁移.说下缺点: js,html,rust, 互相掺和在一起.至今也不愿隔离.由于include ,js,bootstrap,css,.这些都在运行环境,所以的cargo run的运行时虽然可以绑定redis,但是静态文件并不能直达.需要一个解决的办法.路径的话,归结为一个统一子路径,这样容易迁移,尤其在反向代理的时候,暴露一个统一子路径就比较好了.route不能如flask, /test /test/ test/:arg 定向到一个函数fn, 使用变量赋值缺省值的方式.路径下函数的调用,不太知道怎么做,所以功能的分离做起来挺费劲的.关于参数的传递有点太过神奇,不知道怎么就过去了,但是要想formt!()宏的第一个参数使用,一段文件里的内容最后怎么也无法实现,最后用了mut string的 replace. 速度和易用性肯定有提升,但是意义不算大.还有就是,可执行文件5.7M,不要建立python.环境.小功率设备也可以.这是全部的好处了.以下是总代码. Cargo.toml [package] name hello-axum version 0.1.0 edition 2021[dependencies] axum 0.8.0-alpha.1 bb8 0.8.5 bb8-redis 0.17.0 redis 0.27.2 tokio { version 1.0, features [full, macros, rt-multi-thread] } tracing 0.1 tracing-subscriber { version 0.3, features [env-filter] } chrono 0.4.39main.rc use axum::{extract::{FromRef, FromRequestParts, Path, State },http::{header::HeaderValue,request::{self, Parts}, StatusCode},response::Html,routing::get,http::HeaderMap,response::Redirect,Router, }; use std::{any::{type_name,type_name_of_val, TypeId}, result}; use bb8::{Pool, PooledConnection}; use bb8_redis::RedisConnectionManager; use redis::AsyncCommands; use tracing_subscriber::{fmt::format, layer::SubscriberExt, util::SubscriberInitExt};use chrono::Local; use bb8_redis::bb8;#[tokio::main] async fn main() {tracing_subscriber::registry().with(tracing_subscriber::EnvFilter::try_from_default_env().unwrap_orelse(|| format!({}debug, env!(CARGO_CRATE_NAME)).into()),).with(tracing_subscriber::fmt::layer()).init();tracing::debug!(connecting to redis);let redurlredis://ip:63799;let manager RedisConnectionManager::new(redurl).unwrap();let pool bb8::Pool::builder().build(manager).await.unwrap();{// ping the database before startinglet mut conn pool.get().await.unwrap();conn.set::str, str, ()(foo, barr).await.unwrap();let result: String conn.get(foo).await.unwrap();assert_eq!(result, barr);}tracing::debug!(successfully connected to redis and pinged it);// build our application with some routeslet app Router::new().route(/,get(using_connection_pool_extractor),// post.(using_connection_extractor),)//.route(/rsta/{day}/{sta}, get( bsta)).route(/sta/{day}/{sta}/{person}, get( bsta)).route(/check/{sta}/{person},get(check)).route(/test/{person},get(test)).route(/test/,get(test)).route(/thincheck/{sta}/{person},get(thincheck)).route(/sta/ip2sta,get(using_connection_extractor)).with_state(pool);// run itlet listener tokio::net::TcpListener::bind(0.0.0.0:3000).await.unwrap();tracing::debug!(listening on {}, listener.local_addr().unwrap());axum::serve(listener, app).await.unwrap(); }type ConnectionPool PoolRedisConnectionManager;async fn using_connection_pool_extractor(State(pool): StateConnectionPool, ) - ResultString, (StatusCode, String) {let mut conn pool.get().await.map_err(internal_error)?;let result: String conn.get(foo).await.map_err(internal_error)?;Ok(format!(车站:{},result)) } // my first python route async fn test(State(pool): StateConnectionPool,headers: HeaderMap,Path((person)):Path(String) ) - ResultRedirect, (StatusCode, String) {let mut conn pool.get().await.map_err(internal_error)?;// let result:VecString conn.keys().await.map_err(internal_error)?;//let keyformat!(2024-10-21/{},衡水北);// let keyformat!(check:{},衡水北) ;// let result:VecString conn.lrange(key,0,-1).await.map_err(internal_error)?;// let result :VecString conn.smembers(key).await.map_err(internal_error)?;// // Ok(format!({:?},headers))let mut strip10.80.145.40:544545;if let Some(ip) headers.get(X-Forwarded-For) {strip std::str::from_utf8(ip.as_bytes()).map_err(internal_error)?;} if let Some(ip) headers.get(X-Real-IP) {strip std::str::from_utf8(ip.as_bytes()).map_err(internal_error)?;} let mut cip String::from(strip);cip.truncate(cip.find(:).unwrap_or(cip.len()));let ipinconn.hexists(ip2sta, cip).await.map_err(internal_error)?;let mut staString::from(调度);if ipin{sta conn.hget(ip2sta,cip).await.map_err(internal_error)?;}// datetime.date.today().strftime(%Y-%m-%d) let now Local::now();let formatted now.format(%Y-%m-%d).to_string();Ok(Redirect::to(format!(/rk/sta/{}/{}/{},formatted,sta,person))) } async fn bsta(State(pool): StateConnectionPool,Path((day, sta,person )): Path(String, String,String) ) - ResultHtmlString, (StatusCode, String) {let mut conn pool.get().await.map_err(internal_error)?;// let result:VecString conn.keys().await.map_err(internal_error)?;//let keyformat!(2024-10-21/{},衡水北);// let keyformat!(check:{},衡水北) ;// let result:VecString conn.lrange(key,0,-1).await.map_err(internal_error)?;// let result :VecString conn.smembers(key).await.map_err(internal_error)?;let homebytes include_bytes!(home.html);let mut homestr String::from(std::str::from_utf8(homebytes).map_err(internal_error)?);let mut resultString::from();if sta.contains(){for ista in sta.split(){result.push_str( stacheck(State(pool.clone()), day, ista).await?.as_str());} } else {result.push_str( stacheck(State(pool.clone()), day, sta).await?.as_str()); } let cksformat!(r#script typetext/javascript function emitinfo(person,urlme){{console.log(person)window.golsocket.emit(mess, person)location.hrefurlme// fechange(person,urlme)}} window.onload function() {{ document.getElementById({person}).focus(); }}; /script body stylebackground: url(/images/backgroud.jpg) no-repeat center center fixed;-moz-background-size: cover;-webkit-background-size: cover;-o-background-size: cover;background-size: cover;div classpage-header stylewidth: 100%;h3 classopacity-75 aligncenter{sta} 会 议 签 到/h3p alignright idday {day}/p /div p{result}/pdiv style display: flex;justify-content: right;align-items: right;width:80%;height:70%;h2span classlabel label-success h5[未签到]回到会议,将弹框⏏︎到此签到⬆️,请试按此键☛/span /h2img stylewidth: auto src/images/docu2.jpg algsome//div #);let markif result.contains(V) {nill} else { null} ; let sec homestr.find({mark}).unwrap();homestr.replace_range(sec..(sec6),mark);// let homestr2 homestr1.replace({mark}, mark);let sec homestr.find({mainstr}).unwrap();homestr.replace_range(sec..(sec9),cks);Ok(Html(String::from(homestr))) }async fn stacheck( State(pool): StateConnectionPool ,day:str,sta:str )- ResultString, (StatusCode, String) {let mut conn pool.get().await.map_err(internal_error)?;// let mut conn pool.get().await.map_err(internal_error)?;let result:VecString conn.keys(*).await.map_err(internal_error)?;let keyformat!({day}/{sta} );let ckeyformat!(check:{},sta);let tkeyformat!(check:{}:thin,sta);let persons:VecString conn.lrange(key,0,-1).await.map_err(internal_error)?;let checks :VecString conn.smembers(ckey).await.map_err(internal_error)?;let thins :VecStringconn.hkeys(tkey).await.map_err(internal_error)?;// let re conn.del(tkey ).await.map_err(internal_error)?;// Ok(format!({:?},thins))let info if checks.len()0 {btn-warning}else {btn-light };let mut reformat!(r#li classlist-group-item lh-sm styleheight: 45px span class btn {info} {sta}: /span#);for i in persons{ //a href/thinks/{sta}/{i}有事/a let mark if (checks).contains(i) {r#greenV/font]/a# }else {r#redX/font]/a#}; re.push_str( format!(r#a classbtn btn-light href# οnclickemitinfo({i},/rk/check/{sta}/{i}) id{i} {i} [font color{mark}space/ #));}re.push_str(r#{span class btn {info}有事请单击:/span#);for i in checks{let mark if (thins).contains(i) {r#blueO/font]/a# } else {r#greenV/font]/a# }; re.push_str( format!(r#a classbtn btn-light href# οnclickemitinfo({i},/rk/thincheck/{sta}/{i} ) id{i}s {i} [font color{mark}space/ #));}re.push_str(format!(r#}}a classlable lable-light opacity-75 href#b sta{sta} id{sta}[more]/aspace//li#));//a classlable lable-light opacity-75 href# sta{sta} id{sta}Ok(format!({},re.as_str())) }async fn thincheck(State(pool): StateConnectionPool,headers: HeaderMap,Path((sta, person)): Path(String, String) ) - ResultRedirect, (StatusCode, String) {let mut conn pool.get().await.map_err(internal_error)?;let tkeyformat!(check:{}:thin,sta);let onthins conn.hexists(tkey,person).await.map_err(internal_error)?;if onthins { let result: String conn.hdel(tkey,person).await.map_err(internal_error)?;} else {let result: String conn.hset(tkey,person,thin).await.map_err(internal_error)?; } //let defHeaderValue::from_str(format!(/rk/test/{}s,person)).unwrap(); //let rurlheaders.get(referer).unwrap_or(def).to_str().unwrap_or_default(); let rurlformat!(/rk/test/{}s,person); Ok( Redirect::to( rurl)) } async fn check(State(pool): StateConnectionPool,headers: HeaderMap,Path((sta, person)): Path(String, String) ) - ResultRedirect, (StatusCode, String) {let mut conn pool.get().await.map_err(internal_error)?;let ckeyformat!(check:{},sta);let tkeyformat!(check:{}:thin,sta);// conn.del(ckey ).await.map_err(internal_error)?;let ischeck conn.sismember(ckey,person).await.map_err(internal_error)?;if ischeck {let result: String conn.srem(ckey,[person]).await.map_err(internal_error)?;let result: String conn.hdel(tkey,person).await.map_err(internal_error)?;} else {let result: String conn.sadd(ckey,[person]).await.map_err(internal_error)?; }// let defHeaderValue::from_str(format!(/rk/test/{},person)).unwrap();//let rurlheaders.get(referer).unwrap_or( def).to_str().unwrap_or_default();let rurlformat!(/rk/test/{},person);Ok( Redirect::to( rurl)) } // we can also write a custom extractor that grabs a connection from the pool // which setup is appropriate depends on your application struct DatabaseConnection(PooledConnectionstatic, RedisConnectionManager);implS FromRequestPartsS for DatabaseConnection whereConnectionPool: FromRefS,S: Send Sync, {type Rejection (StatusCode, String);async fn from_request_parts( _parts: mut Parts, state: S) - ResultSelf, Self::Rejection {let pool ConnectionPool::from_ref(state);let conn pool.get_owned().await.map_err(internal_error)?;Ok(Self(conn))} }async fn using_connection_extractor(DatabaseConnection(mut conn): DatabaseConnection, ) - ResultString, (StatusCode, String) {conn.set::str, str, ()(station, wjc,zhw,sd).await.unwrap();let result: String conn.hgetall(ip2sta).await.map_err(internal_error)?;// let result: String conn.hset(ip2sta,10.80.133.72,南宫东).await.map_err(internal_error)?;Ok(format!({:?},result)) } /// Utility function for mapping any error into a 500 Internal Server Error
/// response. fn internal_errorE(err: E) - (StatusCode, String)
whereE: std::error::Error, {(StatusCode::INTERNAL_SERVER_ERROR, err.to_string()) }这里的home.html是一个总页面模板.