如何用正则表达式提取所有符合「介于两个特定字符串a和b之间」这一条件的内容?

例如有这样一段文本(无标点符号):

请问您的姓名是什么姓名张三对吗

现在需要提取姓名,即"张三"。需要提取的姓名,位于"姓名"和"对"这两个固定的字符串之间,故使用以下正则表达式规则:

(?<=姓名)(.*?)(?=对)

提取结果只有一条,如下:

是什么姓名张三

请问怎样的正则表达式可以完整地返回以下两个结果:

是什么姓名张三

张三

2个回答

完整地返回以下两个结果:
(?<=姓名)(.*?((?<=姓名).*?)?)(?=对)/)
第一个子匹配结果:是什么姓名张三
第二个子匹配结果:张三

如果要直接获取“张三”
(?<=姓名)((?:(?!姓名).)*?)(?=对)

u012163199
Xeon AMG 回复天际的海浪: 非常感谢!
11 个月之前 回复
jslang
天际的海浪 回复Xeon AMG: (?<=姓名)(.*?((?<=姓名).*?)?)(?=对)
11 个月之前 回复
u012163199
Xeon AMG 感谢您的回答!第二条规则可以工作,但第一条规则运行时会报错,请问如何解决呢?
11 个月之前 回复

不用这么复杂把!你这里主要是想搞清楚一个贪婪和非贪婪匹配的区别。
我理解贪婪程序是从姓名开始找,找到第一个对结束。然后再往后找第二个对。所以我认为 (?<=姓名)(.*?)(?=对) 非贪婪匹配就是是什么姓名张三
第一个匹配我就不说了。我觉得第二个匹配这么写你可能好理解一些。
re.search(r'(?<=姓名).*(?<=姓名)(.*)(?=对)',youstr)
re.search(r'(?<=姓名)(.{2,4})(?=对)'youstr)

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
在GAN中,把真实的x和由生成器生成的G(z)同时输入到D中,输出的结果是一个值还是两个值?
在GAN中 把真实的x和由生成器生成的G(z)同时输入到D中 输出的结果是一个介于0~1的概率值还是两个0~1的概率值?
ORA-01847: 月份中日的值必须介于 1 和当月最后一日之间
数据库的表是之前建好的,数据也是以前录的,有一个出生日期的字段是varchar类型的,查询出生日期的时候用to_date转型时报错:ORA-01847: 月份中日的值必须介于 1 和当月最后一日之间 怎么样才能解决这个问题呢,不保证错误呢? 怎样才能把这些错误的信息全部查询出来呢? 急,在线等。
关于css的一个问题,为什么没有p的字体大小没有改变
<style> .red-text { color: red; p { font-size: 16px; } } </style> <h2 class="red-text">我家的猫咪</h2> <p class="red-text">在大家心目中,猫是慵懒的可爱的化身,它可以睡饱了再起来吃饭,可以逗趣小耗子,可以卖得了萌,使得了坏,这样百变的小怪兽就集结在一只宠物上,怎能不惹人怜爱。</p> <p >养动物有的时候,就是介于爱与恨之间,当你钦羡别人萌宠这么可爱的时候,你一定没有想过,狗狗和猫猫会到处拉屎,甚至会屯老鼠,啃鞋子,用爪子爬门,你不理它,它就挠你,你要对它发脾气,它会比你更来劲。所以,狗猫慎入,没有一定的准备,切勿随便去侍养动物。它们一旦认定你了,你就是它们的主人,如果你抛弃它们,它们必定心中重创。</p>
ora-01841 年份值必须介于-4713和9999之间,且不为0
update bdc_regn_dy a set a.djsj=to_date(substr(a.slid,1,8),'yyyymmdd') where a.djsj is null and a.slid not like 'BL%'
怎么排除两个日期之间的节假日,下面我这个是计算排除周末的工作时间,怎么把节假日排除掉,求指教
package server; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class CalculateHours { SimpleDateFormat format = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); //这里的格式可以自己设置 //设置上班时间:该处时间可以根据实际情况进行调整 int abh = 9;//上午上班时间,小时 int abm = 00;//上午上班时间,分钟 int aeh = 12;//上午下班时间,小时 int aem = 0;//上午下班时间,分钟 int pbh = 13;//下午上班时间,小时 int pbm = 00;//下午上班时间,分钟 int peh = 18;//下午下班时间,小时 int pem = 0;//下午下班时间,分钟 float h1 = abh+(float)abm/60; float h2 = aeh+(float)aem/60; float h3 = pbh+(float)pbm/60; float h4 = peh+(float)pem/60; float hoursPerDay = h2-h1+(h4-h3);//每天上班小时数 int daysPerWeek = 6;//每周工作天数 long milsecPerDay = 1000*60*60*24;//每天的毫秒数 float hoursPerWeek = hoursPerDay*daysPerWeek;//每星期小时数 public float calculateHours(String beginTime, String endTime){ System.out.println("设置的上班时间为:"+abh+":"+abm+"-"+aeh+":"+aem +" "+pbh+":"+pbm+"-"+peh+":"+pem); System.out.println("每天工作时间为:"+hoursPerDay+"小时"); //对输入的字符串形式的时间进行转换 Date t1 = stringToDate(beginTime);//真实开始时间 Date t2 = stringToDate(endTime);//真实结束时间 System.out.println("设置的开始时间为:"+printDate(t1)); System.out.println("设置的结束时间为:"+printDate(t2)); //对时间进行预处理 t1 = processBeginTime(t1); t2 = processEndTime(t2); System.out.println("预处理后的开始时间为:"+printDate(t1)); System.out.println("预处理后的结束时间为:"+printDate(t2)); //若开始时间晚于结束时间,返回0 if(t1.getTime()>t2.getTime()){ System.out.println("总工作时间为:0小时"); return 0; } //开始时间到结束时间的完整星期数 int weekCount = (int) ((t2.getTime()-t1.getTime())/(milsecPerDay*7)); System.out.println("时间间隔内共包含了"+weekCount+"个完整的星期"); float totalHours = 0; totalHours += weekCount * hoursPerWeek; //调整结束时间,使开始时间和结束时间在一个星期的周期之内 t2.setTime(t2.getTime()-weekCount*7*milsecPerDay); System.out.println("结束时间调整为:"+printDate(t2)); int dayCounts = 0;//记录开始时间和结束时间之间工作日天数 //调整开始时间,使得开始时间和结束时间在同一天,或者相邻的工作日内。 while(t1.getTime()<=t2.getTime()){ Date temp = new Date(t1.getTime()+milsecPerDay); temp = processBeginTime(temp); temp.setHours(t1.getHours()); temp.setMinutes(t1.getMinutes()); if(temp.getTime()>t2.getTime()){ break; }else{ t1 = temp; dayCounts++; } } System.out.println("开始时间向后移动了"+dayCounts+"个工作日"); System.out.println("开始时间调整为:"+printDate(t1)); totalHours += dayCounts * hoursPerDay; float hh1 = t1.getHours() + (float)t1.getMinutes()/60; float hh2 = t2.getHours() + (float)t2.getMinutes()/60; //处理开始结束是同一天的情况 if(t1.getDay()==t2.getDay()){ float tt = 0; tt = hh2 - hh1; if(hh1>=h1&&hh1<=h2&&hh2>=h3){ tt = tt - (h3-h2); } totalHours += tt; }else{ //处理开始结束不是同一天的情况 float tt1 = h4 - hh1; float tt2 = hh2 - h1; if(hh1<=h2){ tt1 = tt1 - (h3-h2); } if(hh2>=h3){ tt2 = tt2 - (h3-h2); } totalHours += (tt1 + tt2); } System.out.println("总工作时间为:"+totalHours+"小时"); return totalHours; } /** * 格式化输出时间: yyyy-mm-dd hh:mm:ss 星期x * @param t * @return */ private String printDate(Date t) { String str; String xingqi = null; switch (t.getDay()) { case 0: xingqi = "星期天"; break; case 1: xingqi = "星期一"; break; case 2: xingqi = "星期二"; break; case 3: xingqi = "星期三"; break; case 4: xingqi = "星期四"; break; case 5: xingqi = "星期五"; break; case 6: xingqi = "星期六"; break; default: break; } str = format.format(t)+" "+xingqi; return str; } /** * 对结束时间进行预处理,使其处于工作日内的工作时间段内 * @param t * @return */ private Date processEndTime(Date t) { float h = t.getHours() + (float)t.getMinutes()/60; //若结束时间晚于下午下班时间,将其设置为下午下班时间 if(h>=h4){ t.setHours(peh); t.setMinutes(pem); }else { //若结束时间介于中午休息时间,那么设置为上午下班时间 if(h>=h2&&h<=h3){ t.setHours(aeh); t.setMinutes(aem); }else{ //若结束时间早于上午上班时间,日期向前推一天,并将时间设置为下午下班时间 if(t.getHours()<=h1){ t.setTime(t.getTime()-milsecPerDay); t.setHours(peh); t.setMinutes(pem); } } } //若结束时间是周末,那么将结束时间向前推移到最近的工作日的下午下班时间 if(t.getDay()==0){ t.setTime(t.getTime()-milsecPerDay*(t.getDay()==6?1:2)); t.setHours(peh); t.setMinutes(pem); } return t; } /** * 对开始时间进行预处理 * @param t1 * @return */ private Date processBeginTime(Date t) { float h = t.getHours() + (float)t.getMinutes()/60; //若开始时间晚于下午下班时间,将开始时间向后推一天 if(h>=h4){ t.setTime(t.getTime()+milsecPerDay); t.setHours(abh); t.setMinutes(abm); }else { //若开始时间介于中午休息时间,那么设置为下午上班时间 if(h>=h2&&h<=h3){ t.setHours(pbh); t.setMinutes(pbm); }else{ //若开始时间早于上午上班时间,将hour设置为上午上班时间 if(t.getHours()<=h1){ t.setHours(abh); t.setMinutes(abm); } } } //若开始时间是周末,那么将开始时间向后推移到最近的工作日的上午上班时间 if(t.getDay()==0){ t.setTime(t.getTime()+milsecPerDay*(t.getDay()==6?2:1)); t.setHours(abh); t.setMinutes(abm); } return t; } /** * 将字符串形式的时间转换成Date形式的时间 * @param time * @return */ private Date stringToDate(String time){ try { return format.parse(time); } catch (ParseException e) { e.printStackTrace(); return null; } } public static void main(String[] args) { String beginTime = "2015-08-28 10:00:00"; String endTime = "2015-08-31 13:30:00"; CalculateHours ch = new CalculateHours(); float a=ch.calculateHours(beginTime, endTime); System.out.println(a); float b = (float)(Math.round(a*10))/10; System.out.println(b); } }
介于String和StringBuffer的性能问题
都说String是final,那么在第二次赋值的时候,实际上是新开辟了内存空间,新建了String对象赋值,在多次赋值的情况下,这样是很浪费性能 StringBuffer在开辟了一次内存之后,多次append都不会新建对象,所以不浪费什么的 我早上无意间看了下源码,StringBuffer在初始化的时候,默认16位长度的字节数组,OK,底层用的数组实现,那必然涉及到自动扩展,果然,字符数超出长度则自动复制内容,原长度 * 2 + 2 我想问的是,在多次赋值后,String相对StringBuffer所谓的性能低,是因为创建对象然后需要回收对象所带来的消耗?那StringBuffer在每次append之后,都需要检查甚至可能会需要赋值内存空间出来,原来那块内存空间的内容也不管了,这消耗比String带来的消耗要低嘛??
年份值必须介于-4713和+9999之间,且不为0
select case when rr.ENDDATE - rr.STARTDATE + 1 = 0 then 0 + nvl(tt.gagag, 0) else ((LEAST(rr.ENDDATE, trunc(sysdate,'MM')-1) - GREATEST(rr.STARTDATE, DATE '${STARTDATE}') + 1) the 1 end as 金额 from sfddf rr 出问题的地方在DATE '${STARTDATE}'
加载配置文件时出错: 滴答数必须介于
昨天非正常关机,今天早上调试本地asp.net网站出现这个错误,昨天之前都是正常的,至少报的不是错误,网上找了下对着操作了一遍也不对,急,在线等。。 加载配置文件时出错: 滴答数必须介于 DateTime.MinValue.Ticks 和 DateTime.MaxValue.Ticks的错误,然后也没有显示具体错误行,最下面显示asp.net默认系统配置文件 C:\Windows\Microsoft.NET\Framework\v2.0.50727\Config\machine.config 0行。
如何对python代码进行优化,以提高运行速度
遇到个代码优化的问题。。想请教下。。这段代码,结构或是哪里该如何优化下,以提高运行速度。。 大致情况先介绍下: 1. 代码需要考虑指定文件的输出---也就是相应数据是否需要计算;代码中的if output1 / output2 in condition,即是用来判断是否需要进行计算; 2. 计算需要分步骤进行。大致是先根据原始数据,计算原始数据的x1值(该步骤已经执行)。再根据x1值,计算相应的x1x2值,和x3值。然后将x1x2和x3拼接起来。 3. 数据量是10W行,为时间数据。。分两种情况进行计算(也就是两种情况的结果输出)。一种是每行时间数据,均要输出一个结果。另一种是对某个字段进行分组,然后根据分组来输出计算结果(比如企业)。 具体代码如下: ``` t05 = time.time() #计算x1x2和x3的值(x1值已计算出来) for i in std_level: max_std,min_std,l_1,l_2,l_3,l_4,l_5 = std_level[i][0] #生成标准的数据表,用于对照取值 #对原x1的字段的空值填充为0,方便跳过数值0进行数据处理。同时便于后期与目标值比较。 if output1 in condition: #这个情况,是根据用户需求,进行相应的输出。如用户有需求,则执行下面的代码 data['%s_x1'%i].fillna(0,inplace =True) if output2 in condition: f_data['%s_x1'%i].fillna(0,inplace =True) #定义x1x2的函数 #x1为原始数据对应的等级,值为1--6(如原数据缺失,则为空值。为便于判断,需将x1的缺失值填充为0) #原则是,如x1(数据等级)为空值,则不进行判定(返回空值)。如等级为1或6,单独计算。如等级介于1和6之间,则统一计算。 def tran_x1x2(x): dj = x['%s_x1'%i] jc = x[i] if dj == 0: return np.NaN #务必要返回np.NaN,否则返回空字符串None,影响后面x2的计算。 else: if dj not in [1,6]: #根据介于等级1和6之间时的x1x2的计算公式 up = std_level[i][0][int(dj)] dn = std_level[i][0][int(dj)+1] return round(dj + (up - jc) / (up -dn),1) else: if dj == 1: return 1.0 else: return round(dj + (l_5 - jc) / l_5 * 4,1) #需事先定义好x1x2的函数,方能进行apply。而x1x2的函数定义,又需要事先对x1填充。。所以需要将条件判断,分开两次重复进行 #本来考虑可以将条件判断合并到一起。。但是这样会增加重复的代码量,而且不能保证提高速度。 #我也想用函数的方式来处理,但是不知道如何实现。。具体结构该怎么弄。。。 if output1 in condition: data['%s_x1x2'%i] = data.apply(tran_x1x2,axis=1) #生成实时数据的x1x2 if output2 in condition: f_data['%s_x1x2'%i] = f_data.apply(tran_x1x2,axis=1) #生成综合数据的x1x2 #注意顺序,需先计算x1x2的值,才能计算x3的值 def tran_x3(x): dj = x['%s_x1'%i] dj_x1x2 = x['%s_x1x2'%i] dj_x2 = (dj_x1x2 - dj) *10 #计算x2的值。不建议单独生成x2字段,否则字段过多,影响调试查看。 if dj == 0: #等级数据不可能为0,其值原为空值,只是为了便于比较,将空值填充为0处理(第7/9行代码中实现)。 return np.NaN else: if dj <= x['TARGET']: #[‘TARGET’]为目标字段,用于比较 return 0 else: if dj_x2 == 0: return dj - x['TARGET'] -1 else: return dj - x['TARGET'] #新的x3存在空值的情况,需要事先填充 if output1 in condition: #这个情况,是根据用户需求,进行相应的输出。如用户有需求,则执行下面的代码 data['%s_x3'%i] = data.apply(tran_x3,axis=1) #生成实时数据的x3 data['%s_x3'%i].fillna(-1,inplace =True) #因x3可能为0,空值需填充为-1,以便区分和格式转换 data['%s_x1x2'%i] = data['%s_x1x2'%i].astype(str) #转字符格式,方便拼接 data['%s_x3'%i] = data['%s_x3'%i].astype(int).astype(str) data['%s_x1x2x3'%i] = np.where(data['%s_x3'%i]!= '-1',data['%s_x1x2'%i]+data['%s_x3'%i],np.NaN) #生成单因子标识指数 data['%s_x1x2x3'%i] = data['%s_x1x2x3'%i].astype(float) #求X1X2前,需记得将字符串转浮点型格式,否则无法求均值。 if output2 in condition: f_data['%s_x3'%i] = f_data.apply(tran_x3,axis=1) #生成综合数据的x3 f_data['%s_x3'%i].fillna(-1,inplace=True) f_data['%s_x1x2'%i] = f_data['%s_x1x2'%i].astype(str) #转字符格式,方便拼接 f_data['%s_x3'%i] = f_data['%s_x3'%i].astype(int).astype(str) f_data['%s_x1x2x3'%i] = np.where(f_data['%s_x3'%i]!= '-1',f_data['%s_x1x2'%i] + f_data['%s_x3'%i],np.NaN) f_data['%s_x1x2x3'%i] = f_data['%s_x1x2x3'%i].astype(float) t06 = time.time() print(t06-t05) ``` 这段代码,我用10W行的数据来跑,用了24秒左右。。 我发现其中比较耗时的就是要输出output1的计算。。。这个就是计算每行数据的结果,计算量可能较大。 个人觉得代码还有较大的提升空间,只是水平有限,实在不知道如何优化。。 求高手指点
自动化立体车库存取车优化策略:matlab仿真程序
为定量进行分析,本论述对立体车库作如下假设: (1)立体车库的输入输出过程符合排队规则,按照 车辆到达时间间隔服从泊松分布;车辆在库内存放时 间服从正态分布;车辆到达时若没有车位则离去;顾客 接受服务遵循先到先服务原则。 (2)如果车位位于 i 列 j 行,则标记为(i,j)点,车库 出入口位于 O 点,假设车位长度为 l,高度为 h,堆垛机 的运行速度为 v,横移机构存取车辆的时间为 t。 2.3 不同调度策略下的数学模型 (1)存车优先的数学模型 按照该策略向(a,b)车位存入车辆,则运行时间 为: T(a ,b)=2×(max(a ν ,b ν )+t) 存取 k 次的总时间∑T 为: ∑T= m a = 1 ∑ n b = 1 ∑K(a,b)T(a,b) (2)原地待命的数学模型 前一次从(a,b)车位取车,后一次向(c,d)车位存 车,所需的时间 T1为: T1= max(c ν ,d ν )+t 前一次从(a,b)取车,后一次从(c,d)车位取车,所 需时间 T2为: T2=2*max(c ν ,d ν )+t 前一次向(a,b)车位存车,后一次向(c,d)车位存 车,所需时间 T3为: T3=max(a ν ,b ν )+ max(c ν ,d ν )+t 前一次向(a,b)车位存车,后一次从(c,d)车位取 车,所需时间 T4为: T4=max( , )+ max(c ν ,d ν )+t (3)交叉存取策略的数学模型 当车库中同时有几辆车需要存取作业时,可以用 交叉存取的方式,在有车辆需要存入后紧接着执行取 车操作,当有取车操作后直接执行存车操作。该策略是 对存取车序列进行了优化,使存车和取车任务进行组 合,以达到最少的存取车时间,执行一次存取车的复合 作业分别是 T1和 T4的过程。 3 仿真及结果分析 以排队论为基础建立参数为 λ 的泊松分布,车辆 在库内停放时间符合参数为(μ,σ)的正态分布,取 λ= 图 2 巷道堆垛式立体车库坐标编号 Z O X 33甘肃科技纵横 工业科技2016 年(第 45 卷)第 7 期 1,μ=90,σ=30,模拟车库高峰时段一个小时内的存取车 情况,得到存车任务的时间序列和取车任务的时间序 列,根据此时间序列和立体车库模型以及存取策略进 行仿真模拟,结果见图 3 所示。 (1)存车优先花费时间较多,堆垛机每次完成作业 后都需要返回到出入口,如果前一次存车后一次取车 就需要多运行一个来回,要比原地待命的策略更加耗 时,但存车优先策略适用于办公场所、居住区等场所的 早晚存车的高峰时段,在早晚固定时段采用存车优先 的策略会显著减少车库运行时间。 (2)交叉存取策略耗时最少,其优越性表现在对车 辆的存取序列进行了一定的优化,大大减少了堆垛机 的空载行程,尤其是商业中心区存取车任务繁重,存取 时间较随机,通过对存取序列的重新组合,可以提高车 库运行效率,较少顾客等待时间。 (3)原地待命策略耗时介于存车优先和交叉存取 之间。原地待命的策略不需要进行前期准备,无形中减 少了个别不必要的往返运行。 综合考虑实际情况,立体车库可以在原地待命的 基础上,在出入库频繁的高峰期采用交叉存取策略,在 车流量不大且连续存车居多的情况下使用存车优先策 略,通过不同时段存取车特点选择合适的调度策略可以有效减少存取车时间与顾客的等待时间。 ![图片说明](https://img-ask.csdn.net/upload/201905/31/1559270847_436052.png) 想要这个matlab仿真得程序,有会的大佬加QQ2630014573
请编程实现(a) 快速排序(quicksort)算法 和 (b) 二路归井排序(mergesort)算法。
说明:使用随机数函数产生16个随机随机数,其值皆介于10至99之间,再利用以上算法来完成由小至大之排序,并输出显示
如何查询xml文件中介于两个数据之间的值,并返回这两个值(C#)
数据库不会用,有稍许数据就用xml了,但是这个问题难道我了,刚注册cdsn,没有币,大家帮忙啊 下面是我的xml文件内容,原理是把用户界面中的lx/ly计算后查询,得到的数字在xml里lxdivly元素值的2个之间的,则返回这2个元素,我要做插值运算。比如lx/ly=0.54,,介于第一和第二个lxdivly之间,则返回第一和第二个元素的值,下一步做插值运算获取后面的mx,my ``` <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <calc_ban gongkuang="三角荷载下三边固定一边自由"> <BanData> <lxdivly>0.5</lxdivly> <Mx>0.02364</Mx> <My>0.0129</My> <Mx0>-0.04982</Mx0> <My0>-0.04581</My0> </BanData> <BanData> <lxdivly>0.55</lxdivly> <Mx>0.02228</Mx> <My>0.01273</My> <Mx0>-0.04737</Mx0> <My0>-0.0447</My0> </BanData> <BanData> <lxdivly>0.6</lxdivly> <Mx>0.02098</Mx> <My>0.01254</My> <Mx0>-0.04505</Mx0> <My0>-0.04358</My0> </BanData> <BanData> <lxdivly>0.65</lxdivly> <Mx>0.01975</Mx> <My>0.01235</My> <Mx0>-0.04275</Mx0> <My0>-0.04247</My0> </BanData> <BanData> <lxdivly>0.7</lxdivly> <Mx>0.01859</Mx> <My>0.01214</My> <Mx0>-0.0405</Mx0> <My0>-0.04135</My0> </BanData> <BanData> <lxdivly>0.75</lxdivly> <Mx>0.01751</Mx> <My>0.01191</My> <Mx0>-0.03833</Mx0> <My0>-0.04024</My0> </BanData> <BanData> <lxdivly>0.8</lxdivly> <Mx>0.0165</Mx> <My>0.01165</My> <Mx0>-0.03644</Mx0> <My0>-0.03914</My0> </BanData> <BanData> <lxdivly>0.85</lxdivly> <Mx>0.01557</Mx> <My>0.01137</My> <Mx0>-0.0347</Mx0> <My0>-0.03806</My0> </BanData> <BanData> <lxdivly>0.9</lxdivly> <Mx>0.01471</Mx> <My>0.01107</My> <Mx0>-0.03304</Mx0> <My0>-0.03701</My0> </BanData> <BanData> <lxdivly>0.95</lxdivly> <Mx>0.01393</Mx> <My>0.01076</My> <Mx0>-0.03145</Mx0> <My0>-0.03598</My0> </BanData> <BanData> <lxdivly>1</lxdivly> <Mx>0.01322</Mx> <My>0.01042</My> <Mx0>-0.02993</Mx0> <My0>-0.03498</My0> </BanData> <BanData> <lxdivly>1.1</lxdivly> <Mx>0.01198</Mx> <My>0.00972</My> <Mx0>-0.02717</Mx0> <My0>-0.03308</My0> </BanData> <BanData> <lxdivly>1.2</lxdivly> <Mx>0.01097</Mx> <My>0.00899</My> <Mx0>-0.02502</Mx0> <My0>-0.03133</My0> </BanData> <BanData> <lxdivly>1.3</lxdivly> <Mx>0.01015</Mx> <My>0.00826</My> <Mx0>-0.02306</Mx0> <My0>-0.02972</My0> </BanData> <BanData> <lxdivly>1.4</lxdivly> <Mx>0.00971</Mx> <My>0.00755</My> <Mx0>-0.02134</Mx0> <My0>-0.02825</My0> </BanData> <BanData> <lxdivly>1.5</lxdivly> <Mx>0.00939</Mx> <My>0.00686</My> <Mx0>-0.01997</Mx0> <My0>-0.0269</My0> </BanData> <BanData> <lxdivly>1.6</lxdivly> <Mx>0.00897</Mx> <My>0.00621</My> <Mx0>-0.01955</Mx0> <My0>-0.02566</My0> </BanData> <BanData> <lxdivly>1.7</lxdivly> <Mx>0.00849</Mx> <My>0.00559</My> <Mx0>-0.01918</Mx0> <My0>-0.02451</My0> </BanData> <BanData> <lxdivly>1.8</lxdivly> <Mx>0.00797</Mx> <My>0.00502</My> <Mx0>-0.0187</Mx0> <My0>-0.02345</My0> </BanData> <BanData> <lxdivly>1.9</lxdivly> <Mx>0.00743</Mx> <My>0.0045</My> <Mx0>-0.01813</Mx0> <My0>-0.02245</My0> </BanData> <BanData> <lxdivly>2</lxdivly> <Mx>0.00689</Mx> <My>0.00402</My> <Mx0>-0.0175</Mx0> <My0>-0.0215</My0> </BanData> </calc_ban> ```
算法问题(博弈论相关的)
问题描述   闲暇时,福尔摩斯和华生玩一个游戏:   在N张卡片上写有N个整数。两人轮流拿走一张卡片。要求下一个人拿的数字一定是前一个人拿的数字的约数或倍数。例如,某次福尔摩斯拿走的卡片上写着数字“6”,则接下来华生可以拿的数字包括:   1,2,3, 6,12,18,24 ....   当轮到某一方拿卡片时,没有满足要求的卡片可选,则该方为输方。   请你利用计算机的优势计算一下,在已知所有卡片上的数字和可选哪些数字的条件下,怎样选择才能保证必胜!   当选多个数字都可以必胜时,输出其中最小的数字。如果无论如何都会输,则输出-1。 输入格式   输入数据为2行。第一行是若干空格分开的整数(每个整数介于1~100间),表示当前剩余的所有卡片。   第二行也是若干空格分开的整数,表示可以选的数字。当然,第二行的数字必须完全包含在第一行的数字中。 输出格式   程序则输出必胜的招法!! 样例输入 2 3 6 3 6 样例输出 3 样例输入 1 2 2 3 3 4 5 3 4 5 样例输出 4
ORA-01841: (完整) 年份值必须介于 -4713 和 +9999 之间, 且不为 0
("insert into mw_app.MWT_UD_JXRWBL_INFO(ID,YXJHSQ_BH,YXJHSQ_JHMC,YXJHSQ_ZYGZNR,YXJHSQ_JHKSSJ,YXJHSQ_YXYW,YXJHSQ_TBR,"+ "YXJHSQ_SJSJGS,YXJHSQ_SLSJ,FLAG,YXJHSQ_TBDW,YXJHSQ_TBRDLM,C_USERID)values((select sys_guid() from dual),'"+checkValue(flag)+"','"+checkValue(jhmcArr[i])+"','"+checkValue(zygznrArr[i])+"','','"+checkValue(yxywArr[i])+ "','"+checkValue(tbrArr[i])+"','"+checkValue(sjsjgdArr[i])+"',to_date('"+checkValue(blsjArr[i])+"','yyyy-mm-dd hh24:mi:ss'),'"+checkValue(flag)+"','"+checkValue(tbdwArr[i])+"','"+checkValue(tbrdlmArr[i])+"','"+checkValue(mw.Portal.currentUser.id)+"')"); 这是原sql Caused by: nariis.pi3000.framework.data.DataAccessException: 执行SQL[insert into mw_app.MWT_UD_JXRWBL_INFO(ID,YXJHSQ_BH,YXJHSQ_JHMC,YXJHSQ_ZYGZNR,YXJHSQ_JHKSSJ,YXJHSQ_YXYW,YXJHSQ_TBR,YXJHSQ_SJSJGS,YXJHSQ_SLSJ,FLAG,YXJHSQ_TBDW,YXJHSQ_TBRDLM,C_USERID)values((select sys_guid() from dual),'临时任务','null','null','','null','null','[{"strat_time":"2015-12-27 18:30","end_time":"2015-12-27 20:30"}]',to_date('null','yyyy-mm-dd hh24:mi:ss'),'临时任务','null','null','8697D72E-C77B-4C70-A434-ED7D488ADC36')]时发生异常
添加 ota 升级百分比显示?
在android 7.0 里面 install.cpp 文件中 有两个设置 ota 进度条进度的函数 ui->ShowProgress(fraction * (1-VERIFICATION_PROGRESS_FRACTION), seconds); (两个参数 分别是 已经安装的时间, 需要安装的总时间) ```````` ui->SetProgress(fraction); (参数:安装时间的百分比 介于 0~1之间) 现在就是想问 怎样能够把这些数字打印到ota升级时候的界面上,不仅显示本身的进度条,也显示添加的百分比?
学生成绩管理 C语言数据结构
学生成绩管理可以实现班级学生成绩的添加,最低分、最高分查找,学生成绩删除等功能。请使用带头节点的单链表实现学生成绩管理的功能 程序中已经给出链表节点,操作函数的定义和main函数。请完成InsertAhead(),DisplayMinAndMaxScore(),DeleteScore(),DeleteScoreBetweenNM(),DisplayList()函数代码编写,实现函数要求的功能。 ``` #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include<stdlib.h> typedef struct LLNode //链表节点的定义 { int score; struct LLNode * next; }LLNode, *ListNodePtr; int InitialLinkList(ListNodePtr &LL);//链表初始化 int InsertAhead(ListNodePtr &LL, int N);//接收输入的N以及N个学生的成绩,采用头插法依次添加到链表中 int DisplayMinAndMaxScore(ListNodePtr &LL);//显示学生成绩的最低分和最高分,如果链表为空,显示字符“NO”,显示结束后换行 int DeleteScore(ListNodePtr &LL, int k);//删除链表中第K个学生的成绩,释放节点 int DeleteScoreBetweenNM(ListNodePtr &LL, int N, int M);//删除链表中成绩介于[N M]的节点(N<=M) int DisplayList(ListNodePtr &LL);//显示链表中所有学生的成绩,以空格分隔 int main() { int op = 0, N = 0, M = 0, K = 0; ListNodePtr ScoreList = NULL;//ScoreList是指向链表头节点的指针 if (!InitialLinkList(ScoreList)) return 0; scanf("%d", &op); //接收每行第一个负数,代表一种操作 while (op >= -5 && op <= -1) { switch (op) { case -1: //接收输入的N以及N个学生的成绩,采用头插法依次添加到链表中 scanf("%d", &N); InsertAhead(ScoreList, N); break; case -2: //显示学生成绩的最低分和最高分 DisplayMinAndMaxScore(ScoreList); break; case -3: //显示链表中所有学生的成绩,以空格分隔 DisplayList(ScoreList); break; case -4: //删除链表中第K个学生的成绩,释放节点 scanf("%d", &K); DeleteScore(ScoreList, K); break; case -5://删除链表中成绩介于[N M]的节点(N<=M) int N = 0, M = 0; scanf("%d%d", &N, &M); DeleteScoreBetweenNM(ScoreList, N, M); break; } scanf("%d", &op); } return 0; } int InitialLinkList(ListNodePtr &LL)//链表初始化 { LL = (ListNodePtr)malloc(sizeof(LLNode)); if (!LL) return 0; LL->next = NULL; return 1; } // 在此处补充你的代码 ``` 等一个老哥帮帮小白,自己敲出来的全是错
oracle 探讨关于where条件过滤逻辑,和子查询顺序的问题
在oracle数据库清理分区的时候,需要把一段时间以前的分区清空, 用到的语句是 select SUBSTR(PARTITION_name, 4), to_date(SUBSTR(PARTITION_name, 4), 'yyyymmdd') from user_segments where segment_name = 'CHECK_TAB_COL_VALID' --and partition_name <> 'PH_MAX'-----1 --and SUBSTR(PARTITION_name, 4)<>'MAX'------2 and to_date(SUBSTR(PARTITION_name, 4), 'yyyymmdd') <> date'2019-09-27' 想探讨的是为什么如上语句中在条件当中的 1的写法为什么没有起倒过滤'PH_MAX'作用,to_date(SUBSTR(PARTITION_name, 4), 'yyyymmdd') 还是将PH_MAX 的记录传入to_date(SUBSTR(PARTITION_name, 4), 'yyyymmdd') 函数转化为时间,故有报错 ORA-01841: (完整) 年份值必须介于 -4713 和 +9999 之间, 且不为 0 但是在2的写法就有起倒过滤作用, 另关于系统表和自己建的表的区别数据一致的情况下,为什么user_segments 1的写法不行,自己创建的表第一种写法就可以, 还有关于字查询,查询顺序的探讨:在寻找问题原因的时候,测试了这种写法 select * from (select to_date(SUBSTR(PARTITION_name,4),'yyyymmdd')time from user_segments where segment_name='CHECK_TAB_COL_VALID' and partition_name<>'PH_MAX') where time<date'2019-09-27' 依然会报:ORA-01841错误,这种查询的逻辑是不是先吧()里面的记录先查询出来?在做时间条件的判断?但是为什么还是会报?ORA-01841错误
求算法或思路(二维数据处理)
这个算法问题是有关三维空间的,我先简化为二维问题以便于讨论,不知道是否适合在此提问,但我要用java实现它。请推荐更适合发此帖的论坛。 问题描述: 在二维图形空间XY(尺寸10000x10000),分布有n(>40000)个不相互交叠的小四边形(接近但不是矩形),纵横直径介于30-50。已知每个小四边形4个角的坐标及它的8个方向的相邻四边形ID,每个小四边形有0到8个相邻四边形。现给定任意两点(x1,y1)(x2,y2),连成一线,求此线穿过哪些四边形。(见附图) 我现有的算法如下: 1,根据两点间距,平均分割k小段(含首尾点,共k+1个标志点,约一般250-350个),k的取值使小段尺寸小于小四边形,保证此线穿过的小四边形至少有落上1-3个标志点 2,按顺序从此线取一个标志点 3,循环历遍所有n个小四边形,看此标志点是否落在某个小四边形内(根据标志点坐标和四边形角点空间关系判定,称方法A),如果找到,终止循环,输出此四边形的ID编号 4,取下个标志点,如果其前个标志点没有落在某个小四边形内,回到第3步 5,如果其前个标志点落在一个小四边形内,看是否当前标志点也在同个小四边形内,如果是,重复第4步,如果否,则查看此标志点是否落在前个小四边形的0-8个相邻四边形内,如果找到,输出此四边形的ID编号 6,重复第4-5步,直到此线终点 算法可以解决问题,但比较慢: 主要耗时在第3步,因为往往要循环n次方法A,历遍每个小四边形(可能无功而返,没有匹配的四边形),而实际上n很大。k个标志点实际上只有1/3落在小四边形内(达到第5步),另外2/3k个标志点都要经过第3步。所以大约需要调用2/3*k*n次方法A。 求高手能优化此算法或给出其他思路,非常感谢
关于java Anotation注释成员斌值问题,是不是必须为每一个注释成员斌值?
java中自定义Annotation时,是不是一定要为每一个注释成员斌值呢,不知道javax.persistence.Column注释是怎么实现的 使用javax.persistence.Column时为什么不用为每一个注释成员斌值。 本人现做一个小测验如下: 一、Validate.java,验证用的注解 package com.wanghaisheng.generator.support; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface Validate { //必输字段 boolean required(); //最小长度 public abstract int minLength(); //最大长度 public abstract int maxlength(); //[3,10] 长度介于 3 和 {1} 之间的字符串 public abstract String rangelength(); //[100,1000] 只能是100和 1000 之间的值 public abstract String range(); //最小值 public abstract long min(); //最大值 public abstract long max(); //验证邮箱 public abstract boolean email(); //验证是否是合法的网址 public abstract boolean url(); //验证是否是合法的日期 new Date() 类型格式 public abstract boolean date(); //验证是否是合法的日期 年/月/日 或 年-月-日 格式 public abstract boolean dateISO(); //验证是否是合法的数字 public abstract boolean number(); //验证是否为整数 public abstract boolean digits(); //验证合法的信用卡号 public abstract boolean creditCard(); //要匹配的元素如:’#cnfpass’ , 验证两次输入值是否相同 public abstract String equalTo(); //“gif|png|jpg” 验证是否是合法后缀名的字符串 public abstract String accept(); } 然后我定义一个POJO使用该注解 二、User.java package com.wanghaisheng.model; import com.wanghaisheng.generator.support.Validate; public class User { private String userName; private String password; @Validate(accept = "", creditCard = false, date = false, dateISO = false, digits = false, email = false, equalTo = "", max = 0, maxlength = 0, min = 0, minLength = 0, number = false, range = "", rangelength = "", required = false, url = false) public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } 各位大侠,能不能邦小弟实现使用Validate注解时只为其中的几个成员斌值,或不用为他们斌值, 如: @Validate(email = true) public String getUserName() { return userName; } 而不用当使用Validate注解时加上那么一大堆难看的无用的代码。 我知道javax.persistence.Column注解是能够实现的。 大侠们,望快点伸出援手啊,小弟急啊
Kafka实战(三) - Kafka的自我修养与定位
Apache Kafka是消息引擎系统,也是一个分布式流处理平台(Distributed Streaming Platform) Kafka是LinkedIn公司内部孵化的项目。LinkedIn最开始有强烈的数据强实时处理方面的需求,其内部的诸多子系统要执行多种类型的数据处理与分析,主要包括业务系统和应用程序性能监控,以及用户行为数据处理等。 遇到的主要问题: 数据正确性不足 数据的收集主要...
volatile 与 synchronize 详解
Java支持多个线程同时访问一个对象或者对象的成员变量,由于每个线程可以拥有这个变量的拷贝(虽然对象以及成员变量分配的内存是在共享内存中的,但是每个执行的线程还是可以拥有一份拷贝,这样做的目的是加速程序的执行,这是现代多核处理器的一个显著特性),所以程序在执行过程中,一个线程看到的变量并不一定是最新的。 volatile 关键字volatile可以用来修饰字段(成员变量),就是告知程序任何对该变量...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
有哪些让程序员受益终生的建议
从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很长,但绝对是精品,记得帮我点赞哦!!!! 一腔肺腑之言,能看进去多少,就看你自己了!!! 目录: 在校生篇: 为什么要尽量进大厂? 如何选择语言及方...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
GitHub开源史上最大规模中文知识图谱
近日,一直致力于知识图谱研究的 OwnThink 平台在 Github 上开源了史上最大规模 1.4 亿中文知识图谱,其中数据是以(实体、属性、值),(实体、关系、实体)混合的形式组织,数据格式采用 csv 格式。 到目前为止,OwnThink 项目开放了对话机器人、知识图谱、语义理解、自然语言处理工具。知识图谱融合了两千五百多万的实体,拥有亿级别的实体属性关系,机器人采用了基于知识图谱的语义感...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
微信支付崩溃了,但是更让马化腾和张小龙崩溃的竟然是……
loonggg读完需要3分钟速读仅需1分钟事件还得还原到昨天晚上,10 月 29 日晚上 20:09-21:14 之间,微信支付发生故障,全国微信支付交易无法正常进行。然...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
YouTube排名第一的励志英文演讲《Dream(梦想)》
Idon’t know what that dream is that you have, I don't care how disappointing it might have been as you've been working toward that dream,but that dream that you’re holding in your mind, that it’s po...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
相关热词 c# clr dll c# 如何orm c# 固定大小的字符数组 c#框架设计 c# 删除数据库 c# 中文文字 图片转 c# 成员属性 接口 c#如何将程序封装 16进制负数转换 c# c#练手项目
立即提问