使用了replace()函数,结果却没有变化?

我想把一个字符串'6,105.00'中的','去掉,方便后面转化为浮点数,

但是使用了.replace(',', '')后并没有效果,系统还是报错?求解原因,谢谢!

代码:

import pandas as pd
import sys

# input_file = sys.argv[1]
# output_file = sys.argv[2]
input_file = input()
output_file = input()

data_frame = pd.read_csv(input_file)

data_frame['Cost'] = data_frame['Cost'].str.strip('$').replace(',', '').astype(float)
data_frame_value_meets_condition = data_frame.loc[(data_frame['Supplier Name'].str.contains('Z')) | (data_frame['Cost'] > 600.0), :]

报错:

return arr.astype(dtype, copy=True)

ValueError: could not convert string to float: '6,015.00 '

2个回答

replace 是字符串函数,结果也是字符串
astype好像是不同数据类型的转换,比如int 转float
直接用float('6105.00')应该就可以了

jxlyin
jxlyin 回复里头奇奇: 一步步来,先拿到str看一下,.strip('$')后在看一下,.replace(',', '')之后再看一下是不是符合预期的数据,然后再转换
10 个月之前 回复
litouqiqi
里头奇奇 data_frame['Cost'] = float(data_frame['Cost'].str.strip('$').replace(',', '')) 还是会报错:ValueError: could not convert string to float: '6,015.00 '
10 个月之前 回复
litouqiqi
里头奇奇 把原来语句里那遗憾代码改成:
10 个月之前 回复

已找到解决方法:分成两行代码完成转换

原:

data_frame['Cost'] = data_frame['Cost'].str.strip('$').replace(',', '').astype(float)

换成:

data_frame['Cost'] = data_frame['Cost'].str.strip('$')
data_frame['Cost'] = data_frame['Cost'].str.replace(',', '').astype(float)

即可

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Oracle数据泵导入设置table_exists_action=replace 依然报错

数据泵导入时, 设置table_exists_action=replace意思是:存在该表的话,先drop再插入数据, 所以有我要执行的表的话应该是正常情况吧,但是为什么会报错呢。 执行语句为: ``` impdp atomic/******** directory=DATA_PUMP_DIR dumpfile=EXPDP_SIT20190315.dmp schemas=atomic table_exists_action=replace logfile=EXPDP_SIT20190315.log ``` 但是该错误不影响结果,数据成功导入了。 部分日志如下: import: Release 11.2.0.4.0 - Production on Fri Mar 22 09:23:12 2019 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. ;;; Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options Master table "ATOMIC"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded Starting "ATOMIC"."SYS_IMPORT_SCHEMA_01": atomic/******** directory=DATA_PUMP_DIR dumpfile=EXPDP_SIT20190315.dmp schemas=atomic table_exists_action=replace logfile=EXPDP_SIT20190315.log Processing object type SCHEMA_EXPORT/USER ORA-31684: Object type USER:"ATOMIC" already exists Processing object type SCHEMA_EXPORT/SYSTEM_GRANT Processing object type SCHEMA_EXPORT/ROLE_GRANT Processing object type SCHEMA_EXPORT/DEFAULT_ROLE Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA Processing object type SCHEMA_EXPORT/TYPE/TYPE_SPEC ORA-31684: Object type TYPE:"ATOMIC"."FSI_ADJUST_AMORT_TYPE_OBJ" already exists ORA-31684: Object type TYPE:"ATOMIC"."FSI_ADJUST_AMORT_TYPE_TYPE" already exists Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE ORA-31684: Object type SEQUENCE:"ATOMIC"."FSI_GEN_ACCOUNT_SKEY" already exists ORA-31684: Object type SEQUENCE:"ATOMIC"."FSI_OBJECT_DEN_SEQ_NUM" already exists ORA-31684: Object type SEQUENCE:"ATOMIC"."FSI_IDENTITY_SEQ" already exists ORA-31684: Object type SEQUENCE:"ATOMIC"."PROCESS_NODE_MAP_ID_SEQ" already exists Processing object type SCHEMA_EXPORT/TABLE/TABLE Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA . . imported "ATOMIC"."FSI_D_CASA" 838.6 MB 2087267 rows . . imported "ATOMIC"."FSI_D_TERM_DEPOSITS" 448.7 MB 1197937 rows . . imported "ATOMIC"."FSI_D_LOAN_CONTRACTS" 32.07 MB 73974 rows . . imported "ATOMIC"."SYS_EXPORT_SCHEMA_01" 27.68 MB 6882 rows . . imported "ATOMIC"."SYS_EXPORT_SCHEMA_02" 27.71 MB 6520 rows . . imported "ATOMIC"."STG_PAYMENT_SCHEDULE" 14.24 MB 378694 rows . . imported "ATOMIC"."FSI_IRC_RATE_HIST" 10.99 MB 296220 rows . . imported "ATOMIC"."REV_TAB_COLUMNS_MLS" 2.316 MB 15650 rows . . imported "ATOMIC"."FSI_D_LEDGER_STAT_INSTRUMENT" 1.488 MB 4733 rows . . imported "ATOMIC"."REV_TAB_COLUMNS" 822.8 KB 15650 rows . . imported "ATOMIC"."FSI_RESULT_QUEUE" 641.2 KB 12332 rows . . imported "ATOMIC"."FSI_D_INVESTMENTS" 591.7 KB 1296 rows . . imported "ATOMIC"."DIM_COUNTRY_B" 11.18 KB 71 rows . . imported "ATOMIC"."DIM_COUNTRY_TL" 11.45 KB 71 rows ..... Job "ATOMIC"."SYS_IMPORT_SCHEMA_01" completed with 127 error(s) at Fri Mar 22 09:27:12 2019 elapsed 0 00:03:55

oracle触发器调试时提示触发器/函数不能读它,请问怎么解决?

![图片说明](https://img-ask.csdn.net/upload/201901/08/1546923483_230557.jpg)![图片说明](https://img-ask.csdn.net/upload/201901/08/1546923492_792153.png) create or replace trigger mon_plan after update on p_form0000000088_m for each row declare htbh p_form0000000088_m.ht%type; jezh NUMBER(18,6); begin select code into htbh from cnt_m where bill_no=:new.ht; select je into jezh from p_form0000000088_m where ischeck=1 and ht=:new.ht; update zj_planapp_d set year_bal_amt=jezh where cnt_code=htbh; end;

函数返回值的全局变量变化

<div class="post-text" itemprop="text"> <p>On my website i have a PHP file which generates it's menus from an external PHP file (to make updating easier)</p> <p>heres part of the PHP which outlines the problem:</p> <pre><code>$products = array("Kinetic","Key","Twister","Ellipse","Focus","Trix","Classic","Pod","Halo","Alu","Rotator","Canvas","Image","Flip","Executive","Torpedo","Nature","Wafer Card","Alloy Card","Bottle Opener","Ink Pen","Clip","Light","Tie Clip","Event Lanyard","Lizzard Wristband","Slap Wristband"); $others = array("Other 1","Other 2","Other 3","Other 4","Other 5"); function genMenu($product) { global $products; global $others; $menu="&lt;div class='titlebar'&gt;&lt;div class='title'&gt;USBs&lt;/div&gt;&lt;/div&gt;&lt;div class='buttons'&gt;"; for ($x=0;$x&lt;count($products); $x++) { $p=$products[$x]; $link=strtolower(str_replace(' ', '', $p)).".php"; if($product==$p) {$menu=$menu."&lt;span class='activebutton'&gt;&lt;span class='textspace'&gt;&amp;raquo; ".$p."&lt;/span&gt;&lt;/span&gt;";} else {$menu=$menu."&lt;a href='".$link."'&gt;&lt;span class='button'&gt;&lt;span class='textspace'&gt;&amp;raquo; ".$p."&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;";} if(count($products)&gt;$x+1) { $menu=$menu."&lt;img src='layout/seperator.jpg' class='seperator' alt='' width='184' height='2' /&gt;"; } } $menu=$menu."&lt;/div&gt;&lt;div class='titlebar'&gt;&lt;div class='title'&gt;Other Products&lt;/div&gt;&lt;/div&gt;&lt;div class='buttons'&gt;"; for ($y=0;$y&lt;count($others); $y++) { $o=$others[$y]; $link=strtolower(str_replace(' ', '', $o)).".php"; if($product==$o) {$menu=$menu."&lt;span class='activebutton'&gt;&lt;span class='textspace'&gt;&amp;raquo; ".$o."&lt;/span&gt;&lt;/span&gt;";} else {$menu=$menu."&lt;a href='".$link."'&gt;&lt;span class='button'&gt;&lt;span class='textspace'&gt;&amp;raquo; ".$o."&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;";} if(count($others)&gt;$y+1) { $menu=$menu."&lt;img src='layout/seperator.jpg' class='seperator' alt='' width='184' height='2' /&gt;"; } } $menu=$menu."&lt;/div&gt;"; return (string)$menu; } function genDrop($product) { global $products; global $others; $drop=$products[12]; return $drop; } </code></pre> <p>So, the menu generates using an array of products i have outside the function, enabling their use by making them global... The problem im having is that when the function returns <code>$menu</code>, it also changes <code>$products</code> value to the same. (but not <code>$others</code>)</p> <p>therefore the second function (<code>genDrop</code>) returns 't' from <code>$menu="&lt;div class='t</code></p> <p>is this meant to happen? how do i stop it?</p> <p>PHP in the HTML that calls the functions:</p> <pre><code>&lt;?php include("menufoot.php"); $product="Twister"; $products = genMenu($product); $dropmenu = genDrop($product); print $dropmenu; $footer = genFoot($product); $mobilefooter = genMobFoot($product); ?&gt; </code></pre> </div>

PHP在字符串中搜索/替换Word,并仅更改替换字的字体颜色

<div class="post-text" itemprop="text"> <p>I have a text box, a search field, and a replace field. I want to perform a search and replace for the text in my text box and change the color of the font for any of the replaced words. I would like any words that are not replaced to remain the font color they were before the search/replace was performed.</p> <p>Scratching my head on this one though. Here's the code I've got so far:</p> <p></p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code"> <pre class="snippet-code-html lang-html prettyprint-override"><code>&lt;body&gt; &lt;form id="form1" name="form1" method="post" action=""&gt; &lt;p&gt;&lt;br/&gt; &lt;textarea name="textarea" id="textarea" cols="70" rows="10"&gt; &lt;?php if(isset($_POST["submit"])) { $search = $_POST["search"]; $replace = $_POST["replace"]; $textarea = $_POST["textarea"]; $newtext = str_replace($search,$replace,$textarea); echo $newtext; } ?&gt; &lt;/textarea&gt; &lt;/p&gt; &lt;p&gt; &lt;label for="search"&gt;Search :&lt;/label&gt; &lt;input type="text" name="search" id="search" /&gt; &lt;/p&gt; &lt;p&gt; &lt;label for="replace"&gt;Replace&lt;/label&gt; &lt;input type="text" name="replace" id="replace" /&gt; &lt;/p&gt; &lt;p&gt;&lt;br/&gt; &lt;input type="submit" name="submit" id="submit" value="Submit" /&gt; &lt;label for="textarea"&gt;&lt;/label&gt; &lt;/p&gt; &lt;/form&gt; &lt;/body&gt;</code></pre> </div> </div> </div>

字符ASCII右移几位后,怎么没有变化

/****题目说明: 函数Rdata()实现从文件in.dat中读取一篇英文文章,存入到字符串数组 string中,请编写函数CharRight(),其函数的功能是:以行为单位把字 符串中的最后一个字符的ASCII值右移4位后加倒数第二个字符的ASCII值, 得到最后一个新的字符,倒数第二个字符的ASCII值右移4位后加倒数第 三个字符的ASCII值,得到倒数第二个新的字符,依次类推,一直处理到 第二个字符,第一个字符的ASCII值加原最后一个字符的ASCII值,得到 第一个新的字符,得到的新字符分别存放在原字符串对应得位置上。最后 已处理的字符串仍按行重新存入字符串数组string中,最后调用函数Wdata(), 把结果string输出到文件out1.dat中。 原始数据文件存放的格式是:每行的宽度均小于80个字符(含标点符号和 空格)。 我的部分代码(java)如下:怎么处理以后的结果与原来一样啊???? public static void change(String str[]){ // str1=new String[100]; int length=0; char ch;//保存每行的最后一个字符 for(int i=0;i<str.length-1;i++){ length=str[i].length(); ch=(Character)(Object)str[i].charAt(str[i].length()-1); for(int j=length-1;j>0;j--){ try{ str[i].replace(str[i].charAt(j), (char)((str[i].charAt(j)>>4)+str[i].charAt(j-1))); str[i].replace(str[i].charAt(0), ch); }catch(StringIndexOutOfBoundsException e){ e.printStackTrace(); } } } }

c++指针做参数,如何修改参数指向的内容

我是想把字符串内容修改为‘xx’,但是在只能修改形参的内容无法修改实参的内容,请问replaceSpace这个函数该如何修改才能在main函数调用后把它的字符串修改为‘xx’,谢谢。 ``` class Solution { public: void replaceSpace(char *str,int length) { char s[2] = {0}; s[0] = 'x'; s[1] = 'x'; s[2] = '\0'; str = s; std::cout << str << std::endl; } }; int main() { Solution sol; char *s = "ss"; sol.replaceSpace(s, 2); std::cout << s << std::endl; return 0; } ```

执行更新时提示错误:Oracle表xxx发生变化,数据库不能读它

触发器代码 create or replace trigger departmentUpdate after update on departments for each row begin IF updating then UPDATE employees set departmentid = :new.departmentid where departmentid = :old.departmentid; end if; end; 更新代码: update departments set departmentid = 7 where departmentid = 1;

Oracle触发器不能读取表的问题

12、假设有这样一张用户表表结构如下:UserInfo(id ,username,userPass),希望向表中增加数据时,表中id列的数字自动生成。(选做) 1)第一步创建序列,要求开始的数字为1,每次递增1,按顺序产生序列值; 2)第二步创建一个触发器,向用户表中插入数据的时候触发触发器,在触发器内部调用序列并生成一个序列值赋值给表的id列。 触发器: ``` create or replace trigger pro_id after insert on userinfo for each row begin update userinfo set id=seq_id.nextval where username=:new.username; end; ``` 执行该语句时出错: ``` insert into userinfo(username, userpass) values('李四',123456); ``` 在行 1 上开始执行命令时出错: insert into userinfo(username, userpass) values('李四',123456) 错误报告: SQL 错误: ORA-04091: 表 SCOTT.USERINFO 发生了变化, 触发器/函数不能读它 ORA-06512: 在 "SCOTT.PRO_ID", line 2 ORA-04088: 触发器 'SCOTT.PRO_ID' 执行过程中出错 04091. 00000 - "table %s.%s is mutating, trigger/function may not see it" *Cause: A trigger (or a user defined plsql function that is referenced in this statement) attempted to look at (or modify) a table that was in the middle of being modified by the statement which fired it. *Action: Rewrite the trigger (or function) so it does not read that table. 请问哪里出错了?

python在拼接字符串时,通过参数连接时就执行报错,写死执行的文件就不报错,为什么会这样?

for item in testfiles: #subprocess.call("python ..\\TestCases\\" + str(item).replace("\\n", ""), shell=True) print "修改前:" + os.getcwd() os.chdir('/Users/yirong/PycharmProjects/CloudResWebTest/TestCases') print "修改后:" + os.getcwd() #这样子报错,我将command打印出来也是python TC_Search_Python.py command="python "+str(item) #这样子执行正常 #command="python TC_Search_Python.py" print command subprocess.call(command,shell=True)

mysql查询语句,上一条时间赋值当前时间。

![图片说明](https://img-ask.csdn.net/upload/201812/06/1544098284_800423.jpg) 大神们 这什么情况啊???最后那个时间需要赋值的是上条记录的时间。

oracle循环表字段报错的问题

需求:我想下个触发器,在插入和更新时调用这个触发器,用一个循环去循环这个表的所有字段,判断这个字段有没发生变化,如果发生变化,将这个字段名,原来的值,新的值插入到另一张表 目前实现: ``` CREATE OR REPLACE TRIGGER TR_MEM_MEMBER_LOG AFTER UPDATE ON PRD_EXT_ZH FOR EACH ROW DECLARE CURSOR CUR_MEM_MEMBER_LOG_DATA IS SELECT COLUMN_NAME FROM USER_TAB_COLS WHERE TABLE_NAME = 'PRD_EXT_ZH'; V_COLUMN_NAME USER_TAB_COLS.COLUMN_NAME%TYPE; V_N_COLUMN_NAME_VALUE VARCHAR2(200); V_O_COLUMN_NAME_VALUE VARCHAR2(200); BEGIN OPEN CUR_MEM_MEMBER_LOG_DATA; LOOP EXECUTE IMMEDIATE 'SELECT :NEW.'|| V_COLUMN_NAME||',:OLD.'||V_COLUMN_NAME||' FROM DUAL' INTO V_N_COLUMN_NAME_VALUE,V_O_COLUMN_NAME_VALUE; IF V_N_COLUMN_NAME_VALUE <> V_O_COLUMN_NAME_VALUE THEN insert into change_pims(UP_PER_ID,TABLE_NAME,OLD_FIELD,NEW_FIELD,PRD_ID,FIELD_NAME) VALUES (:new.UP_PER_ID, 'prd_ext_zh', ':OLD.' || V_COLUMN_NAME, ':NEW.' || V_COLUMN_NAME, :new.prd_id, V_COLUMN_NAME); END IF; END LOOP; CLOSE CUR_MEM_MEMBER_LOG_DATA; END TR_MEM_MEMBER_LOG; ``` 报错: Caused by: ErrCode: 14101017 Message: SQL语法错误(Could not execute JDBC batch update) at com.primeton.das.entity.impl.exception.DASExceptionHelper.convert(DASExceptionHelper.java:150) at com.primeton.das.entity.impl.DASSessionImpl.updateEntity(DASSessionImpl.java:214) at com.eos.foundation.database.DatabaseUtil.updateEntity(DatabaseUtil.java:282) ... 60 more Caused by: com.primeton.das.entity.impl.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update at com.primeton.das.entity.impl.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67) at com.primeton.das.entity.impl.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) at com.primeton.das.entity.impl.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:264) at com.primeton.das.entity.impl.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235) at com.primeton.das.entity.impl.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140) at com.primeton.das.entity.impl.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298) at com.primeton.das.entity.impl.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27) at com.primeton.das.entity.impl.hibernate.impl.SessionImpl.flush(SessionImpl.java:1021) at com.primeton.das.entity.impl.DASSessionImpl.updateEntity(DASSessionImpl.java:211) ... 61 more Caused by: java.sql.BatchUpdateException: ORA-00919: 无效函数 ORA-06512: 在 "PIM.TR_MEM_MEMBER_LOG", line 13 ORA-04088: 触发器 'PIM.TR_MEM_MEMBER_LOG' 执行过程中出错

如何提取RNN网络的网络参数?

```Python新手,最近在学习DQN算法与RNN网络结合的DRQN。 python中如何将评估网络中的RNN网络参数传递到目标网络RNN中去? 附上莫凡的全联通网络的参数传递代码: # 替换 target net 的参数 t_params = tf.get_collection('target_net_params') # 提取 target_net 的参数 e_params = tf.get_collection('eval_net_params') # 提取 eval_net 的参数 self.replace_target_op = [tf.assign(t, e) for t, e in zip(t_params, e_params)] # 更新 target_net 参数 self.sess = tf.Session() self.sess.run(tf.global_variables_initializer()) self.cost_his = [] # 记录所有 cost 变化, 用于最后 plot 出来观看 def _build_net(self): # -------------- 创建 eval 神经网络, 及时提升参数 -------------- self.s = tf.placeholder(tf.float32, [None, self.n_features], name='s') # 态势s占位符,6维 self.q_target = tf.placeholder(tf.float32, [None, self.n_actions], name='Q_target') # q_target占位符,9维值函数 with tf.variable_scope('eval_net'): # c_names(collections_names) 是在更新 target_net 参数时会用到 c_names, n_l1, w_initializer, b_initializer = \ ['eval_net_params', tf.GraphKeys.GLOBAL_VARIABLES], 10, \ tf.random_normal_initializer(0., 0.3), tf.constant_initializer(0.1) # 10个神经元,[6,10] # eval_net 的第一层. collections 是在更新 target_net 参数时会用到 with tf.variable_scope('l1'): w1 = tf.get_variable('w1', [self.n_features, n_l1], initializer=w_initializer, collections=c_names)#[6,10] b1 = tf.get_variable('b1', [1, n_l1], initializer=b_initializer, collections=c_names) l1 = tf.nn.relu(tf.matmul(self.s, w1) + b1) # eval_net 的输出层. collections 是在更新 target_net 参数时会用到 with tf.variable_scope('l2'): w2 = tf.get_variable('w2', [n_l1, self.n_actions], initializer=w_initializer, collections=c_names)#[10,9] b2 = tf.get_variable('b2', [1, self.n_actions], initializer=b_initializer, collections=c_names) self.q_eval = tf.matmul(l1, w2) + b2 with tf.variable_scope('loss'): # 求误差 self.loss = tf.reduce_mean(tf.squared_difference(self.q_target, self.q_eval)) with tf.variable_scope('train'): # 梯度下降 self._train_op = tf.train.RMSPropOptimizer(self.lr).minimize(self.loss) #self._train_op =tf.train.GradientDescentOptimizer(self.lr).minimize(self.loss) #self._train_op =tf.train.AdamOptimizer(self.lr).minimize(self.loss) # ---------------- 创建 target 神经网络, 提供 target Q --------------------- self.s_ = tf.placeholder(tf.float32, [None, self.n_features], name='s_') # 接收下个 observation (下一个输入) with tf.variable_scope('target_net'): # c_names(collections_names) 是在更新 target_net 参数时会用到 c_names = ['target_net_params', tf.GraphKeys.GLOBAL_VARIABLES] # target_net 的第一层. collections 是在更新 target_net 参数时会用到 with tf.variable_scope('l1'): w1 = tf.get_variable('w1', [self.n_features, n_l1], initializer=w_initializer, collections=c_names) b1 = tf.get_variable('b1', [1, n_l1], initializer=b_initializer, collections=c_names) l1 = tf.nn.relu(tf.matmul(self.s_, w1) + b1) # target_net 的第二层. collections 是在更新 target_net 参数时会用到 with tf.variable_scope('l2'): w2 = tf.get_variable('w2', [n_l1, self.n_actions], initializer=w_initializer, collections=c_names) b2 = tf.get_variable('b2', [1, self.n_actions], initializer=b_initializer, collections=c_names) self.q_next = tf.matmul(l1, w2) + b2 请大佬讲解RNN参数传递时也尽可能有代码演示谢谢!!!

这是我在 C++ Builder编程实例精解(赵现明)书上照着打学生成绩管理,出了一些问题。

附上代码如下: ```//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //----文件(信息)读取----------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { int File; struct student*Tmp=First; struct student*Tmp2; //-----设置全局变量的中间变量---- //-----尝试从文件读取记录信息---- First=NULL; if(!FileExists("StuScore.rcd")) //不存在这个文件 { Application->MessageBoxA("没有找到成绩记录文件!","失败!",0); return; } else { File=FileOpen("StuScore.rcd",fmOpenRead); if(File==-1) { Application->MessageBoxA("打开文件记录失败!","失败!",0); return; } while(true) { int hehe; Tmp2=(struct student*)malloc(sizeof(struct student)); hehe=FileRead(File,Tmp2,sizeof(struct student)); if(hehe<sizeof(struct student)) { free(Tmp2); break; //文件读完了 } if(!First) //First==NULL { First=Tmp2; First->Next=First; First->Pre=First; Tmp=First; } else //First!=NULL { Tmp->Next=Tmp2; Tmp->Next->Pre=Tmp; Tmp=Tmp->Next; Tmp->Next=First; First->Pre=Tmp; } } FileClose(File); } } //---添加或修改------------------------------------------------------------------------ bool _fastcall TForm1::Add(bool RePlace) { //姓名和学号必须填好,成绩可以不填, //并赋成绩为-1以标记没有登录成绩 if(EditNum->Text=="") { Application->MessageBoxA("请填写学生的学号!","错误输入!",0); return false; } else if(EditName->Text=="") { Application->MessageBoxA("请填写学生的姓名!","错误输入!",0); return false; } else if(!RBtnMale->Checked&&!RBtnFemale->Checked) { Application->MessageBoxA("请选择学生的性别!","错误输入!",0); return false; } else { struct student*temp=(struct student*)malloc(sizeof(struct student)); //寻找对应id的姓名,如果链表中存在id; //则不添加用户 struct student*temp2=First; if(First&&!RePlace)//连表不为空,并且是新增信息,不是修改 { do { if(EditNum->Text.ToInt()==temp2->ID) //ToInt()把里面的字符串转换成整数 { //存在此ID Application->MessageBoxA("此学号已存在,请更改!", "错误输入!",0); return false; } else { temp2=temp2->Next; } } while(temp2!=First); //遍历循环链表 } //现在可以添加信息了 temp->ID=EditNum->Text.ToInt(); StrPCopy(temp->Name,EditName->Text); //纪录性别 if(RBtnMale->Checked) temp->Sex=0; //男 else temp->Sex=1; //女 //记录成绩 if(EditMath->Text=="") temp->Math=-1; //不登记成绩 else temp->Math=EditMath->Text.ToDouble(); if(EditChinese->Text=="") temp->Chinese=-1; else temp->Chinese=EditChinese->Text.ToDouble(); if(EditEnglish->Text=="") temp->English=-1; else temp->English=EditEnglish->Text.ToDouble(); //把temp加入链表中 if(!First) //没有记录 { First=temp; First->Next=First; First->Pre=First; } else { temp->Pre=First->Pre; temp->Next=First; temp->Pre->Next=temp; temp->Next->Pre=temp; } } return true; } //---删除------------------------------------------------------------------------- void _fastcall TForm1::Del(struct student* DelStu) { if(DelStu&&First) //链表中存在学生信息,而且要删除的信息不为空 { if(First==DelStu) //删除第一条信息 { if(First->Next==First)//只有一条信息 First=NULL; else First=First->Next; } DelStu->Pre->Next=DelStu->Next; DelStu->Next->Pre=DelStu->Pre; free(DelStu); } } //-----信息的查找(onchange事件的响应)--------------------------------------------------------------- void __fastcall TForm1::EditNumChange(TObject *Sender) { //寻找对应id的姓名,如果在链表中存在id, //如果处在编辑状态,即新添信息,或者修改信息,那么不处理此事件 if(EditName->Enabled) return; //TmpStu是全部变量,它要对应当前在窗口中显示的信息 //所以,每次的EditNum改变,都要先清空它 TmpStu=NULL; EditName->Text=""; RBtnMale->Checked=false; RBtnFemale->Checked=false; EditMath->Text=""; EditChinese->Text=""; EditEnglish->Text=""; if(!First) return; //还没有任何的学生信息,则直接返回 //在查找,更改(查找要更改的信息),删除(查找要删除的信息) //都要根据学号的变化适时显示信息,这个功能由这段代码实现 struct student*NowTmp=First; //查找对应学号的信息,并用全局变量TmpStu来指向它 if(EditNum->Text.Length()) //学号输入框不为空 { do { if(EditNum->Text.ToInt()==NowTmp->ID) { //找到信息,显示在窗体中 TmpStu=NowTmp; EditName->Text=TmpStu->Name; if(TmpStu->Sex) RBtnFemale->Checked=true; else RBtnMale->Checked=true; if(TmpStu->Math==-1) EditMath->Text=""; //未登记成绩 else EditMath->Text=TmpStu->Math; if(TmpStu->Chinese==-1) EditChinese->Text=""; else EditChinese->Text=TmpStu->Chinese; if(TmpStu->English==-1) EditEnglish->Text=""; else EditEnglish->Text=TmpStu->English; //如果是在查找和删除模式下, 则把OK/Cancel按钮置为可用 if(TabSet1->TabIndex==2||TabSet1->TabIndex==3) { BitBtn1->Enabled=true; BitBtn2->Enabled=true; } break; //找到信息后跳出while循环 } else { NowTmp=NowTmp->Next; //下一个信息 } } while(NowTmp!=First); // 遍历环形链表 } } //--------------------------------------------------------------------------- //---信息的保存------------------------------------------------------------------------ void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose) { Save(false); //自动保存 } void _fastcall TForm1::Save(bool Auto) { int File; struct student*Tmp=First; if(!First) //没有用户信息 { if(!Auto) Application->MessageBoxA("没有学生信息!","保存失败",0); return ; } if(FileExists("StuScore.rcd")) //存在记录文件 { if(!DeleteFile("StuScore.rcd")) //删除失败 { Application->MessageBoxA("删除旧记录失败!","不能保存",0); } } File=FileCreate("StuScore.rcd"); if(File==-1) //创建失败 { Application->MessageBoxA("创建文件 StuScore.rcd 失败,不能保存","失败",0); } //写文件 do { if(FileWrite(File,Tmp,sizeof(struct student))==-1); Application->MessageBoxA("一个错误!","提示",0); Tmp=Tmp->Next; } while(Tmp!=First); FileClose(File); } //----TabSet的响应----------------------------------------------------------------------- void __fastcall TForm1::TabSet1Change(TObject *Sender, int NewTab, bool &AllowChange) { switch(TabSet1->TabIndex) { case 0: //添加新学生 { //设置组建可用 EditName->Enabled=true; GroupBoxSex->Enabled=true; GroupBoxScore->Enabled=true; BitBtn1->Enabled=true; BitBtn2->Enabled=true; LabelHint->Caption="提示:输入学生学号,其它信息随学号动态显示"; } break; case 2://修改 { EditName->Enabled=false; GroupBoxSex->Enabled=false; GroupBoxScore->Enabled=false; //在输入学号被查找到的时候,置按钮可用 BitBtn1->Enabled=false; BitBtn2->Enabled=false; LabelHint->Caption="提示:输入学号,点击OK,修改后按OK保存修改"; } break; case 3://删除 { EditName->Enabled=false; GroupBoxSex->Enabled=false; GroupBoxScore->Enabled=false; //在输入学号被查找到的时候,置按钮为可用 BitBtn1->Enabled=false; BitBtn2->Enabled=false; LabelHint->Caption="提示:输入学号,点击OK完成删除"; } break; case 4: { Close(); } break; default: break; } //每次更改状态,都要清空各个组件的内容 EditNum->Text=""; EditName->Text=""; RBtnFemale->Checked=false; RBtnMale->Checked=false; EditMath->Text=""; EditChinese->Text=""; EditEnglish->Text=""; } //----------------------------------------------------------------------- //----Cancel----------------------------------------------------------------------- void __fastcall TForm1::BitBtn2Click(TObject *Sender) { TabSet1->OnClick(this); } //-----"OK"---------------------------------------------------------------------- void __fastcall TForm1::BitBtn1Click(TObject *Sender) { switch(TabSet1->TabIndex) { case 0: //添加新生 { if(Add(false)) //添加成功 { TabSet1->TabIndex=0; TabSet1->OnClick(this); } else //添加失败 {}; } break; case 1: break; //查找不会有这种情况 case 2: //更改 { if(!EditName->Enabled) //还没找到要修改的信息 { //设当前的学生信息为要修改的学生信息 //各个组件设为可用,以供修改信息 EditName->Enabled=true; GroupBoxSex->Enabled=true; GroupBoxScore->Enabled=true; } else //已经修改,现在确认修改 { //修改完毕,将各个组件中的信息写入全局中间变量TmStu中 if(Add(true))//加入信息成功 { Del(TmpStu); //删除TmStu指向的需要修改的信息 TmpStu=NULL; TabSet1->TabIndex=2; TabSet1->OnClick(this); } else //输入的新信息不合法 { //不作处理,等待更改后再接按OK } } } break; case 3: //删除 { Del(TmpStu); //删除当前的学生信息 TmpStu=NULL; TabSet1->TabIndex=3; TabSet1->OnClick(this); } break; case 4: break; //不会有这种情况 default: break; } } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { } //--------------------------------------------------------------------------- ```问题如下 1: 在运行的时候,TabSet1Change函数已经设置了相应的组件可用,TabIndex为添加的时候,为什么要点击好几次才能输入名字Edit等,而且奇怪的是数学成绩Edit一直不能输入,而语文和英语可以输入。 输入完成的时候,问题又来了,显示如下图 ![图片说明](https://img-ask.csdn.net/upload/201709/18/1505703842_790924.png) 问题很多,希望高手们提出来,本人刚接触Builder,我会及时采纳,或者有学生成绩管理的c++ builder可以参考的,也可以发出来,谢谢。 ``` ``` ``` ``` ``` ```

求JQ或JS仿京东淘宝属性规格SKU样式

把这个修改成属性值可以在input-text区自定义,删除自定义的值后自动恢复初始属性值。如图所示功能:![图片说明](https://img-ask.csdn.net/upload/201608/13/1471094693_376707.png) ``` <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>生成表格</title> <link rel="stylesheet" type="text/css" href="css/table.css"> <style type="text/css"> .hide {display: none;} .mt10 {margin-top: 10px;} .control-group {overflow: hidden;} .control-group a {color: #666;text-decoration: none;} .control-group a:hover {text-decoration: underline;} .control-label {float: left;width: 100px;line-height: 24px;} .controls {overflow: hidden;} .controls input[type="text"] {border: 1px solid #ddd;height: 20px;width: 120px;} .controls input[type="button"] {margin-top: 10px;height: 32px;cursor: pointer;} .config_item {margin-top: 10px;border: 1px dashed #ddd;padding: 10px;} .config_item section {margin-top: 10px;} .config_item section span {margin-right: 16px;} .config_item input[type="text"] {width: 80px;text-align: center;} .choose_config .Father_Title {margin: 0;margin-bottom: 10px;padding: 0;font-size: 16px;font-weight: normal;display: inline-block;vertical-align: middle;} .choose_config .Father_Item {padding: 0;margin: 0;margin-bottom: 10px;list-style: none;display: inline-block;vertical-align: middle;} .choose_config .Father_Item li {display: inline-block;margin-right: 10px;} .columnList {border-collapse: collapse;} .columnList th {background-color: #eee;} .columnList th,.columnList td {padding: 5px 10px;border: 1px solid #ddd;line-height: 24px;text-align: center;} </style> </head> <body> <!-- 选择信息 --> <div class="control-group choose_config"> <div class="control-label">选择信息:</div> <div class="controls"> <h3 class="Father_Title">颜色:</h3> <ul class="Father_Item Father_Item0"> <li><label><input id="Checkbox0" type="checkbox" class="checkbox check_all" value="全选">全选</label></li> <li><label><input id="Checkbox0" type="checkbox" class="checkbox check_item" value="红色">红色</label></li> <li><label><input id="Checkbox0" type="checkbox" class="checkbox check_item" value="白色">白色</label></li> <li><label><input id="Checkbox0" type="checkbox" class="checkbox check_item" value="土豪金">土豪金</label></li> </ul><br> <h3 class="Father_Title">内存:</h3> <ul class="Father_Item Father_Item1"> <li><label><input id="Checkbox0" type="checkbox" class="checkbox check_all" value="全选">全选</label></li> <li><label><input id="Checkbox1" type="checkbox" class="checkbox check_item" value="32G">32G</label></li> <li><label><input id="Checkbox1" type="checkbox" class="checkbox check_item" value="16G">16G</label></li> </ul><br> <h3 class="Father_Title">尺寸:</h3> <ul class="Father_Item Father_Item2"> <li><label><input id="Checkbox0" type="checkbox" class="checkbox check_all" value="全选">全选</label></li> <li><label><input id="Checkbox2" type="checkbox" class="checkbox check_item" value="5.5">5.5</label></li> <li><label><input id="Checkbox2" type="checkbox" class="checkbox check_item" value="4.5">4.5</label></li> <li><label><input id="Checkbox2" type="checkbox" class="checkbox check_item" value="3.5">3.5</label></li> </ul><br> </div> </div> <!-- 生成表格 --> <div class="control-group mt10"> <div class="control-label">生成表格:</div> <div class="controls" id="createTable"> </div> </div> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> <script type="text/javascript"> /** * Created by Administrator on 14-12-01. * 模拟淘宝SKU添加组合 * 页面注意事项: * 1、 .Father_Title 这个类作用是取到所有标题的值,赋给表格,如有改变JS也应相应改动 * 2、 .Father_Item 这个类作用是取类型组数,有多少类型就添加相应的类名:如: Father_Item1、Father_Item2、Father_Item3 ... */ $(function() { $(document).on('change', '.choose_config label', function() { var parent=$(this).parents('.Father_Item'); var _this=$('.checkbox',this); // 是否全选 $('.checkbox',parent).each(function() { var bCheck2=true; if (_this.hasClass('check_all')) { if (_this.get(0).checked) { bCheck2=true; $('.check_item',parent).prop('checked', bCheck2); }else{ bCheck2=false; $('.check_item',parent).prop('checked', bCheck2); } return false; } else { if ((!this.checked)&&(!$(this).hasClass('check_all'))) { bCheck2 = false; $('.check_all',parent).prop('checked', bCheck2); return false; } } $('.check_all',parent).prop('checked', bCheck2); }); step.Creat_Table(); }); var step = { // 信息组合 Creat_Table: function() { step.hebingFunction(); var SKUObj = $('.Father_Title'); var arrayTile = new Array(); // 表格标题数组 var arrayInfor = new Array(); // 盛放每组选中的CheckBox值的对象 var arrayColumn = new Array(); // 指定列,用来合并哪些列 var bCheck = true; // 是否全选,只有全选,表格才会生成 var columnIndex = 0; $.each(SKUObj, function(i, item) { arrayColumn.push(columnIndex++); arrayTile.push(SKUObj.eq(i).text().replace(':', '')); var itemName = '.Father_Item' + i; var bCheck2 = true; // 是否全选 // 获取选中的checkbox的值 var order = new Array(); $(itemName + ' .check_item:checked').each(function() { order.push($(this).val()); }); arrayInfor.push(order); if (order.join() == '') { bCheck = false; } }) // 开始生成表格 if (bCheck) { $('#createTable').html(''); var table = $('<table id="process" class="columnList"></table>'); table.appendTo($('#createTable')); var thead = $('<thead></thead>'); thead.appendTo(table); var trHead = $('<tr></tr>'); trHead.appendTo(thead); // 创建表头 var str = ''; $.each(arrayTile, function(index, item) { str += '<th width="100">' + item + '</th>'; }) str += '<th width="200">价格</th><th width="100">操作</th>'; trHead.append(str); var tbody = $('<tbody></tbody>'); tbody.appendTo(table); var zuheDate = step.doExchange(arrayInfor); if (zuheDate.length > 0) { //创建行 $.each(zuheDate, function(index, item) { var td_array = item.split(','); var tr = $('<tr></tr>'); tr.appendTo(tbody); var str = ''; $.each(td_array, function(i, values) { str += '<td>' + values + '</td>'; }); str += '<td ><input name="Txt_PriceSon" class="inpbox inpbox-mini" type="text"></td>'; str += '<td ><a href="#">删除</a></td>'; tr.append(str); }); } //结束创建Table表 arrayColumn.pop(); //删除数组中最后一项 //合并单元格 $(table).mergeCell({ // 目前只有cols这么一个配置项, 用数组表示列的索引,从0开始 cols: arrayColumn }); } else { //未全选中,清除表格 document.getElementById('createTable').innerHTML = ""; } }, hebingFunction: function() { $.fn.mergeCell = function(options) { return this.each(function() { var cols = options.cols; for (var i = cols.length - 1; cols[i] != undefined; i--) { mergeCell($(this), cols[i]); } dispose($(this)); }) }; function mergeCell($table, colIndex) { $table.data('col-content', ''); // 存放单元格内容 $table.data('col-rowspan', 1); // 存放计算的rowspan值 默认为1 $table.data('col-td', $()); // 存放发现的第一个与前一行比较结果不同td(jQuery封装过的), 默认一个"空"的jquery对象 $table.data('trNum', $('tbody tr', $table).length); // 要处理表格的总行数, 用于最后一行做特殊处理时进行判断之用 // 进行"扫面"处理 关键是定位col-td, 和其对应的rowspan $('tbody tr', $table).each(function(index) { // td:eq中的colIndex即列索引 var $td = $('td:eq(' + colIndex + ')', this); // 获取单元格的当前内容 var currentContent = $td.html(); // 第一次时走次分支 if ($table.data('col-content') == '') { $table.data('col-content', currentContent); $table.data('col-td', $td); } else { // 上一行与当前行内容相同 if ($table.data('col-content') == currentContent) { // 上一行与当前行内容相同则col-rowspan累加, 保存新值 var rowspan = $table.data('col-rowspan') + 1; $table.data('col-rowspan', rowspan); // 值得注意的是 如果用了$td.remove()就会对其他列的处理造成影响 $td.hide(); // 最后一行的情况比较特殊一点 // 比如最后2行 td中的内容是一样的, 那么到最后一行就应该把此时的col-td里保存的td设置rowspan // 最后一行不会向下判断是否有不同的内容 if (++index == $table.data('trNum')) $table.data('col-td').attr('rowspan', $table.data('col-rowspan')); } // 上一行与当前行内容不同 else { // col-rowspan默认为1, 如果统计出的col-rowspan没有变化, 不处理 if ($table.data('col-rowspan') != 1) { $table.data('col-td').attr('rowspan', $table.data('col-rowspan')); } // 保存第一次出现不同内容的td, 和其内容, 重置col-rowspan $table.data('col-td', $td); $table.data('col-content', $td.html()); $table.data('col-rowspan', 1); } } }) } // 同样是个private函数 清理内存之用 function dispose($table) { $table.removeData(); } }, doExchange: function(doubleArrays) { // 二维数组,最先两个数组组合成一个数组,与后边的数组组成新的数组,依次类推,知道二维数组变成以为数组,所有数据两两组合 var len = doubleArrays.length; if (len >= 2) { var arr1 = doubleArrays[0]; var arr2 = doubleArrays[1]; var len1 = arr1.length; var len2 = arr2.length; var newLen = len1 * len2; var temp = new Array(newLen); var index = 0; for (var i = 0; i < len1; i++) { for (var j = 0; j < len2; j++) { temp[index++] = arr1[i] + ',' + arr2[j]; } } var newArray = new Array(len - 1); newArray[0] = temp; if (len > 2) { var _count = 1; for (var i = 2; i < len; i++) { newArray[_count++] = doubleArrays[i]; } } return step.doExchange(newArray); } else { return doubleArrays[0]; } } } }) </script> </body> </html> ``` ``` ```

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

搜狗输入法也在挑战国人的智商!

故事总是一个接着一个到来...上周写完《鲁大师已经彻底沦为一款垃圾流氓软件!》这篇文章之后,鲁大师的市场工作人员就找到了我,希望把这篇文章删除掉。经过一番沟通我先把这篇文章从公号中删除了...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《Oracle Java SE编程自学与面试指南》最佳学习路线图2020年最新版(进大厂必备)

正确选择比瞎努力更重要!

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

都前后端分离了,咱就别做页面跳转了!统统 JSON 交互

文章目录1. 无状态登录1.1 什么是有状态1.2 什么是无状态1.3 如何实现无状态1.4 各自优缺点2. 登录交互2.1 前后端分离的数据交互2.2 登录成功2.3 登录失败3. 未认证处理方案4. 注销登录 这是本系列的第四篇,有小伙伴找不到之前文章,松哥给大家列一个索引出来: 挖一个大坑,Spring Security 开搞! 松哥手把手带你入门 Spring Security,别再问密...

字节跳动面试官竟然问了我JDBC?

轻松等回家通知

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

阿里面试官让我用Zk(Zookeeper)实现分布式锁

他可能没想到,我当场手写出来了

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

代码注释如此沙雕,会玩还是你们程序员!

某站后端代码被“开源”,同时刷遍全网的,还有代码里的那些神注释。 我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路… 首先,产品经理,是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨。 然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip,果然,穷逼在哪里都是...

2020春招面试了10多家大厂,我把问烂了的数据库事务知识点总结了一下

2020年截止目前,我面试了阿里巴巴、腾讯、美团、拼多多、京东、快手等互联网大厂。我发现数据库事务在面试中出现的次数非常多。

爬虫(101)爬点重口味的

小弟最近在学校无聊的很哪,浏览网页突然看到一张图片,都快流鼻血。。。然后小弟冥思苦想,得干一点有趣的事情python 爬虫库安装https://s.taobao.com/api?_ks...

在拼多多上班,是一种什么样的体验?我心态崩了呀!

之前有很多读者咨询我:武哥,在拼多多上班是一种什么样的体验?由于一直很忙,没抽出时间来和大家分享。上周末特地花点时间来写了一篇文章,跟大家分享一下拼多多的日常。 1. 倒时差的作息 可能很多小伙伴都听说了,拼多多加班很严重。这怎么说呢?作息上确实和其他公司有点区别,大家知道 996,那么自然也就能理解拼多多的“11 11 6”了。 所以当很多小伙伴早上出门时,他们是这样的: 我们是这样的: 当...

应聘3万的职位,有必要这么刁难我么。。。沙雕。。。

又一次被面试官带到坑里面了。面试官:springmvc用过么?我:用过啊,经常用呢面试官:springmvc中为什么需要用父子容器?我:嗯。。。没听明白你说的什么。面试官:就是contr...

太狠了,疫情期间面试,一个问题砍了我5000!

疫情期间找工作确实有点难度,想拿到满意的薪资,确实要点实力啊!面试官:Spring中的@Value用过么,介绍一下我:@Value可以标注在字段上面,可以将外部配置文件中的数据,比如可以...

立即提问
相关内容推荐